simplifications: invmod

This commit is contained in:
Daniel Mendler 2019-10-29 20:21:22 +01:00
parent 56144eed1e
commit b1f9bff192
No known key found for this signature in database
GPG Key ID: D88ADB2A2693CA43
2 changed files with 76 additions and 80 deletions

View File

@ -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;
mp_set(&D, 1uL);
top:
do {
/* 4. while u is even do */
while (mp_iseven(&u)) {
/* 4.1 u = u/2 */
@ -84,9 +84,7 @@ top:
}
/* if not zero goto step 4 */
if (!mp_iszero(&u)) {
goto top;
}
} while (!mp_iszero(&u));
/* now a = C, b = D, gcd == g*v */

View File

@ -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(&D, 1uL);
top:
do {
/* 4. while u is even do */
while (mp_iseven(&u)) {
/* 4.1 u = u/2 */
@ -87,9 +87,7 @@ top:
}
/* if not zero goto step 4 */
if (!mp_iszero(&u)) {
goto top;
}
} while (!mp_iszero(&u));
/* now a = C, b = D, gcd == g*v */
@ -111,7 +109,7 @@ top:
/* C is now the inverse */
mp_exch(&C, c);
err = MP_OKAY;
LBL_ERR:
mp_clear_multi(&x, &y, &u, &v, &A, &B, &C, &D, NULL);
return err;