Skip to content

Commit 61ebe7c

Browse files
committed
simplify mod functions
1 parent cc77fad commit 61ebe7c

File tree

6 files changed

+13
-80
lines changed

6 files changed

+13
-80
lines changed

mp_addmod.c

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,10 @@
66
/* d = a + b (mod c) */
77
mp_err mp_addmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
88
{
9-
mp_err err;
10-
mp_int t;
11-
12-
if ((err = mp_init(&t)) != MP_OKAY) {
9+
mp_err err;
10+
if ((err = mp_add(a, b, d)) != MP_OKAY) {
1311
return err;
1412
}
15-
16-
if ((err = mp_add(a, b, &t)) != MP_OKAY) {
17-
goto LBL_ERR;
18-
}
19-
err = mp_mod(&t, c, d);
20-
21-
LBL_ERR:
22-
mp_clear(&t);
23-
return err;
13+
return mp_mod(d, c, d);
2414
}
2515
#endif

mp_mod.c

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,10 @@
66
/* c = a mod b, 0 <= c < b if b > 0, b < c <= 0 if b < 0 */
77
mp_err mp_mod(const mp_int *a, const mp_int *b, mp_int *c)
88
{
9-
mp_int t;
10-
mp_err err;
11-
12-
if ((err = mp_init_size(&t, b->used)) != MP_OKAY) {
9+
mp_err err;
10+
if ((err = mp_div(a, b, NULL, c)) != MP_OKAY) {
1311
return err;
1412
}
15-
16-
if ((err = mp_div(a, b, NULL, &t)) != MP_OKAY) {
17-
goto LBL_ERR;
18-
}
19-
20-
if (mp_iszero(&t) || (t.sign == b->sign)) {
21-
err = MP_OKAY;
22-
mp_exch(&t, c);
23-
} else {
24-
err = mp_add(b, &t, c);
25-
}
26-
27-
LBL_ERR:
28-
mp_clear(&t);
29-
return err;
13+
return mp_iszero(c) || (c->sign == b->sign) ? MP_OKAY : mp_add(b, c, c);
3014
}
3115
#endif

mp_mulmod.c

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,9 @@
77
mp_err mp_mulmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
88
{
99
mp_err err;
10-
mp_int t;
11-
12-
if ((err = mp_init_size(&t, c->used)) != MP_OKAY) {
10+
if ((err = mp_mul(a, b, d)) != MP_OKAY) {
1311
return err;
1412
}
15-
16-
if ((err = mp_mul(a, b, &t)) != MP_OKAY) {
17-
goto LBL_ERR;
18-
}
19-
err = mp_mod(&t, c, d);
20-
21-
LBL_ERR:
22-
mp_clear(&t);
23-
return err;
13+
return mp_mod(d, c, d);
2414
}
2515
#endif

mp_sqrmod.c

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,10 @@
66
/* c = a * a (mod b) */
77
mp_err mp_sqrmod(const mp_int *a, const mp_int *b, mp_int *c)
88
{
9-
mp_err err;
10-
mp_int t;
11-
12-
if ((err = mp_init(&t)) != MP_OKAY) {
9+
mp_err err;
10+
if ((err = mp_sqr(a, c)) != MP_OKAY) {
1311
return err;
1412
}
15-
16-
if ((err = mp_sqr(a, &t)) != MP_OKAY) {
17-
goto LBL_ERR;
18-
}
19-
err = mp_mod(&t, b, c);
20-
21-
LBL_ERR:
22-
mp_clear(&t);
23-
return err;
13+
return mp_mod(c, b, c);
2414
}
2515
#endif

mp_submod.c

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,9 @@
77
mp_err mp_submod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
88
{
99
mp_err err;
10-
mp_int t;
11-
12-
if ((err = mp_init(&t)) != MP_OKAY) {
10+
if ((err = mp_sub(a, b, d)) != MP_OKAY) {
1311
return err;
1412
}
15-
16-
if ((err = mp_sub(a, b, &t)) != MP_OKAY) {
17-
goto LBL_ERR;
18-
}
19-
err = mp_mod(&t, c, d);
20-
21-
LBL_ERR:
22-
mp_clear(&t);
23-
return err;
13+
return mp_mod(d, c, d);
2414
}
2515
#endif

tommath_class.h

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -196,8 +196,6 @@
196196

197197
#if defined(MP_ADDMOD_C)
198198
# define MP_ADD_C
199-
# define MP_CLEAR_C
200-
# define MP_INIT_C
201199
# define MP_MOD_C
202200
#endif
203201

@@ -519,10 +517,7 @@
519517

520518
#if defined(MP_MOD_C)
521519
# define MP_ADD_C
522-
# define MP_CLEAR_C
523520
# define MP_DIV_C
524-
# define MP_EXCH_C
525-
# define MP_INIT_SIZE_C
526521
#endif
527522

528523
#if defined(MP_MOD_2D_C)
@@ -580,8 +575,6 @@
580575
#endif
581576

582577
#if defined(MP_MULMOD_C)
583-
# define MP_CLEAR_C
584-
# define MP_INIT_SIZE_C
585578
# define MP_MOD_C
586579
# define MP_MUL_C
587580
#endif
@@ -888,8 +881,6 @@
888881
#endif
889882

890883
#if defined(MP_SQRMOD_C)
891-
# define MP_CLEAR_C
892-
# define MP_INIT_C
893884
# define MP_MOD_C
894885
# define MP_SQR_C
895886
#endif
@@ -938,8 +929,6 @@
938929
#endif
939930

940931
#if defined(MP_SUBMOD_C)
941-
# define MP_CLEAR_C
942-
# define MP_INIT_C
943932
# define MP_MOD_C
944933
# define MP_SUB_C
945934
#endif

0 commit comments

Comments
 (0)