simplifications: invmod
This commit is contained in:
parent
56144eed1e
commit
b1f9bff192
@ -42,7 +42,7 @@ mp_err s_mp_invmod_fast(const mp_int *a, const mp_int *b, mp_int *c)
|
|||||||
if ((err = mp_copy(&y, &v)) != MP_OKAY) goto LBL_ERR;
|
if ((err = mp_copy(&y, &v)) != MP_OKAY) goto LBL_ERR;
|
||||||
mp_set(&D, 1uL);
|
mp_set(&D, 1uL);
|
||||||
|
|
||||||
top:
|
do {
|
||||||
/* 4. while u is even do */
|
/* 4. while u is even do */
|
||||||
while (mp_iseven(&u)) {
|
while (mp_iseven(&u)) {
|
||||||
/* 4.1 u = u/2 */
|
/* 4.1 u = u/2 */
|
||||||
@ -84,9 +84,7 @@ top:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* if not zero goto step 4 */
|
/* if not zero goto step 4 */
|
||||||
if (!mp_iszero(&u)) {
|
} while (!mp_iszero(&u));
|
||||||
goto top;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* now a = C, b = D, gcd == g*v */
|
/* now a = C, b = D, gcd == g*v */
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ mp_err s_mp_invmod_slow(const mp_int *a, const mp_int *b, mp_int *c)
|
|||||||
mp_set(&A, 1uL);
|
mp_set(&A, 1uL);
|
||||||
mp_set(&D, 1uL);
|
mp_set(&D, 1uL);
|
||||||
|
|
||||||
top:
|
do {
|
||||||
/* 4. while u is even do */
|
/* 4. while u is even do */
|
||||||
while (mp_iseven(&u)) {
|
while (mp_iseven(&u)) {
|
||||||
/* 4.1 u = u/2 */
|
/* 4.1 u = u/2 */
|
||||||
@ -87,9 +87,7 @@ top:
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* if not zero goto step 4 */
|
/* if not zero goto step 4 */
|
||||||
if (!mp_iszero(&u)) {
|
} while (!mp_iszero(&u));
|
||||||
goto top;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* now a = C, b = D, gcd == g*v */
|
/* now a = C, b = D, gcd == g*v */
|
||||||
|
|
||||||
@ -111,7 +109,7 @@ top:
|
|||||||
|
|
||||||
/* C is now the inverse */
|
/* C is now the inverse */
|
||||||
mp_exch(&C, c);
|
mp_exch(&C, c);
|
||||||
err = MP_OKAY;
|
|
||||||
LBL_ERR:
|
LBL_ERR:
|
||||||
mp_clear_multi(&x, &y, &u, &v, &A, &B, &C, &D, NULL);
|
mp_clear_multi(&x, &y, &u, &v, &A, &B, &C, &D, NULL);
|
||||||
return err;
|
return err;
|
||||||
|
Loading…
Reference in New Issue
Block a user