simplify mod functions
This commit is contained in:
parent
cc77fadb85
commit
61ebe7c047
16
mp_addmod.c
16
mp_addmod.c
@ -6,20 +6,10 @@
|
|||||||
/* d = a + b (mod c) */
|
/* d = a + b (mod c) */
|
||||||
mp_err mp_addmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
|
mp_err mp_addmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
|
||||||
{
|
{
|
||||||
mp_err err;
|
mp_err err;
|
||||||
mp_int t;
|
if ((err = mp_add(a, b, d)) != MP_OKAY) {
|
||||||
|
|
||||||
if ((err = mp_init(&t)) != MP_OKAY) {
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
return mp_mod(d, c, d);
|
||||||
if ((err = mp_add(a, b, &t)) != MP_OKAY) {
|
|
||||||
goto LBL_ERR;
|
|
||||||
}
|
|
||||||
err = mp_mod(&t, c, d);
|
|
||||||
|
|
||||||
LBL_ERR:
|
|
||||||
mp_clear(&t);
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
22
mp_mod.c
22
mp_mod.c
@ -6,26 +6,10 @@
|
|||||||
/* c = a mod b, 0 <= c < b if b > 0, b < c <= 0 if b < 0 */
|
/* c = a mod b, 0 <= c < b if b > 0, b < c <= 0 if b < 0 */
|
||||||
mp_err mp_mod(const mp_int *a, const mp_int *b, mp_int *c)
|
mp_err mp_mod(const mp_int *a, const mp_int *b, mp_int *c)
|
||||||
{
|
{
|
||||||
mp_int t;
|
mp_err err;
|
||||||
mp_err err;
|
if ((err = mp_div(a, b, NULL, c)) != MP_OKAY) {
|
||||||
|
|
||||||
if ((err = mp_init_size(&t, b->used)) != MP_OKAY) {
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
return mp_iszero(c) || (c->sign == b->sign) ? MP_OKAY : mp_add(b, c, c);
|
||||||
if ((err = mp_div(a, b, NULL, &t)) != MP_OKAY) {
|
|
||||||
goto LBL_ERR;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mp_iszero(&t) || (t.sign == b->sign)) {
|
|
||||||
err = MP_OKAY;
|
|
||||||
mp_exch(&t, c);
|
|
||||||
} else {
|
|
||||||
err = mp_add(b, &t, c);
|
|
||||||
}
|
|
||||||
|
|
||||||
LBL_ERR:
|
|
||||||
mp_clear(&t);
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
14
mp_mulmod.c
14
mp_mulmod.c
@ -7,19 +7,9 @@
|
|||||||
mp_err mp_mulmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
|
mp_err mp_mulmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
|
||||||
{
|
{
|
||||||
mp_err err;
|
mp_err err;
|
||||||
mp_int t;
|
if ((err = mp_mul(a, b, d)) != MP_OKAY) {
|
||||||
|
|
||||||
if ((err = mp_init_size(&t, c->used)) != MP_OKAY) {
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
return mp_mod(d, c, d);
|
||||||
if ((err = mp_mul(a, b, &t)) != MP_OKAY) {
|
|
||||||
goto LBL_ERR;
|
|
||||||
}
|
|
||||||
err = mp_mod(&t, c, d);
|
|
||||||
|
|
||||||
LBL_ERR:
|
|
||||||
mp_clear(&t);
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
16
mp_sqrmod.c
16
mp_sqrmod.c
@ -6,20 +6,10 @@
|
|||||||
/* c = a * a (mod b) */
|
/* c = a * a (mod b) */
|
||||||
mp_err mp_sqrmod(const mp_int *a, const mp_int *b, mp_int *c)
|
mp_err mp_sqrmod(const mp_int *a, const mp_int *b, mp_int *c)
|
||||||
{
|
{
|
||||||
mp_err err;
|
mp_err err;
|
||||||
mp_int t;
|
if ((err = mp_sqr(a, c)) != MP_OKAY) {
|
||||||
|
|
||||||
if ((err = mp_init(&t)) != MP_OKAY) {
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
return mp_mod(c, b, c);
|
||||||
if ((err = mp_sqr(a, &t)) != MP_OKAY) {
|
|
||||||
goto LBL_ERR;
|
|
||||||
}
|
|
||||||
err = mp_mod(&t, b, c);
|
|
||||||
|
|
||||||
LBL_ERR:
|
|
||||||
mp_clear(&t);
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
14
mp_submod.c
14
mp_submod.c
@ -7,19 +7,9 @@
|
|||||||
mp_err mp_submod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
|
mp_err mp_submod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
|
||||||
{
|
{
|
||||||
mp_err err;
|
mp_err err;
|
||||||
mp_int t;
|
if ((err = mp_sub(a, b, d)) != MP_OKAY) {
|
||||||
|
|
||||||
if ((err = mp_init(&t)) != MP_OKAY) {
|
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
return mp_mod(d, c, d);
|
||||||
if ((err = mp_sub(a, b, &t)) != MP_OKAY) {
|
|
||||||
goto LBL_ERR;
|
|
||||||
}
|
|
||||||
err = mp_mod(&t, c, d);
|
|
||||||
|
|
||||||
LBL_ERR:
|
|
||||||
mp_clear(&t);
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -196,8 +196,6 @@
|
|||||||
|
|
||||||
#if defined(MP_ADDMOD_C)
|
#if defined(MP_ADDMOD_C)
|
||||||
# define MP_ADD_C
|
# define MP_ADD_C
|
||||||
# define MP_CLEAR_C
|
|
||||||
# define MP_INIT_C
|
|
||||||
# define MP_MOD_C
|
# define MP_MOD_C
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -519,10 +517,7 @@
|
|||||||
|
|
||||||
#if defined(MP_MOD_C)
|
#if defined(MP_MOD_C)
|
||||||
# define MP_ADD_C
|
# define MP_ADD_C
|
||||||
# define MP_CLEAR_C
|
|
||||||
# define MP_DIV_C
|
# define MP_DIV_C
|
||||||
# define MP_EXCH_C
|
|
||||||
# define MP_INIT_SIZE_C
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MP_MOD_2D_C)
|
#if defined(MP_MOD_2D_C)
|
||||||
@ -580,8 +575,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MP_MULMOD_C)
|
#if defined(MP_MULMOD_C)
|
||||||
# define MP_CLEAR_C
|
|
||||||
# define MP_INIT_SIZE_C
|
|
||||||
# define MP_MOD_C
|
# define MP_MOD_C
|
||||||
# define MP_MUL_C
|
# define MP_MUL_C
|
||||||
#endif
|
#endif
|
||||||
@ -888,8 +881,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MP_SQRMOD_C)
|
#if defined(MP_SQRMOD_C)
|
||||||
# define MP_CLEAR_C
|
|
||||||
# define MP_INIT_C
|
|
||||||
# define MP_MOD_C
|
# define MP_MOD_C
|
||||||
# define MP_SQR_C
|
# define MP_SQR_C
|
||||||
#endif
|
#endif
|
||||||
@ -938,8 +929,6 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MP_SUBMOD_C)
|
#if defined(MP_SUBMOD_C)
|
||||||
# define MP_CLEAR_C
|
|
||||||
# define MP_INIT_C
|
|
||||||
# define MP_MOD_C
|
# define MP_MOD_C
|
||||||
# define MP_SUB_C
|
# define MP_SUB_C
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user