refactor with goto

This commit is contained in:
Francois Perrad 2019-05-29 12:23:08 +02:00
parent 49abba0937
commit a402b462e9
12 changed files with 49 additions and 38 deletions

View File

@ -14,10 +14,11 @@ mp_err mp_addmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
}
if ((err = mp_add(a, b, &t)) != MP_OKAY) {
mp_clear(&t);
return err;
goto LBL_ERR;
}
err = mp_mod(&t, c, d);
LBL_ERR:
mp_clear(&t);
return err;
}

View File

@ -53,19 +53,19 @@ mp_err mp_export(void *rop, size_t *countp, int order, size_t size,
*byte = (unsigned char)((j == ((size - nail_bytes) - 1u)) ? (t.dp[0] & odd_nail_mask) : (t.dp[0] & 0xFFuL));
if ((err = mp_div_2d(&t, (j == ((size - nail_bytes) - 1u)) ? (int)(8u - odd_nails) : 8, &t, NULL)) != MP_OKAY) {
mp_clear(&t);
return err;
goto LBL_ERR;
}
}
}
mp_clear(&t);
if (countp != NULL) {
*countp = count;
}
err = MP_OKAY;
return MP_OKAY;
LBL_ERR:
mp_clear(&t);
return err;
}
#endif

View File

@ -21,16 +21,14 @@ mp_err mp_expt_u32(const mp_int *a, uint32_t b, mp_int *c)
/* if the bit is set multiply */
if ((b & 1u) != 0u) {
if ((err = mp_mul(c, &g, c)) != MP_OKAY) {
mp_clear(&g);
return err;
goto LBL_ERR;
}
}
/* square */
if (b > 1u) {
if ((err = mp_sqr(&g, &g)) != MP_OKAY) {
mp_clear(&g);
return err;
goto LBL_ERR;
}
}
@ -38,8 +36,11 @@ mp_err mp_expt_u32(const mp_int *a, uint32_t b, mp_int *c)
b >>= 1;
}
err = MP_OKAY;
LBL_ERR:
mp_clear(&g);
return MP_OKAY;
return err;
}
#endif

View File

@ -32,18 +32,17 @@ mp_err mp_exptmod(const mp_int *G, const mp_int *X, const mp_int *P, mp_int *Y)
/* first compute 1/G mod P */
if ((err = mp_invmod(G, P, &tmpG)) != MP_OKAY) {
mp_clear_multi(&tmpG, &tmpX, NULL);
return err;
goto LBL_ERR;
}
/* now get |X| */
if ((err = mp_abs(X, &tmpX)) != MP_OKAY) {
mp_clear_multi(&tmpG, &tmpX, NULL);
return err;
goto LBL_ERR;
}
/* and now compute (1/G)**|X| instead of G**X [X < 0] */
err = mp_exptmod(&tmpG, &tmpX, P, Y);
LBL_ERR:
mp_clear_multi(&tmpG, &tmpX, NULL);
return err;
}

View File

@ -20,17 +20,18 @@ mp_err mp_fwrite(const mp_int *a, int radix, FILE *stream)
}
if ((err = mp_to_radix(a, buf, (size_t)len, radix)) != MP_OKAY) {
MP_FREE_BUFFER(buf, (size_t)len);
return err;
goto LBL_ERR;
}
if (fwrite(buf, (size_t)len, 1uL, stream) != 1uL) {
MP_FREE_BUFFER(buf, (size_t)len);
return MP_ERR;
err = MP_ERR;
goto LBL_ERR;
}
err = MP_OKAY;
LBL_ERR:
MP_FREE_BUFFER(buf, (size_t)len);
return MP_OKAY;
return err;
}
#endif

View File

@ -14,8 +14,7 @@ mp_err mp_mod(const mp_int *a, const mp_int *b, mp_int *c)
}
if ((err = mp_div(a, b, NULL, &t)) != MP_OKAY) {
mp_clear(&t);
return err;
goto LBL_ERR;
}
if (MP_IS_ZERO(&t) || (t.sign == b->sign)) {
@ -25,6 +24,7 @@ mp_err mp_mod(const mp_int *a, const mp_int *b, mp_int *c)
err = mp_add(b, &t, c);
}
LBL_ERR:
mp_clear(&t);
return err;
}

View File

@ -14,10 +14,11 @@ mp_err mp_mulmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
}
if ((err = mp_mul(a, b, &t)) != MP_OKAY) {
mp_clear(&t);
return err;
goto LBL_ERR;
}
err = mp_mod(&t, c, d);
LBL_ERR:
mp_clear(&t);
return err;
}

View File

@ -48,16 +48,18 @@ mp_err mp_radix_size(const mp_int *a, int radix, int *size)
/* fetch out all of the digits */
while (!MP_IS_ZERO(&t)) {
if ((err = mp_div_d(&t, (mp_digit)radix, &t, &d)) != MP_OKAY) {
mp_clear(&t);
return err;
goto LBL_ERR;
}
++digs;
}
mp_clear(&t);
/* return digs + 1, the 1 is for the NULL byte that would be required. */
*size = digs + 1;
return MP_OKAY;
err = MP_OKAY;
LBL_ERR:
mp_clear(&t);
return err;
}
#endif

View File

@ -14,10 +14,11 @@ mp_err mp_sqrmod(const mp_int *a, const mp_int *b, mp_int *c)
}
if ((err = mp_sqr(a, &t)) != MP_OKAY) {
mp_clear(&t);
return err;
goto LBL_ERR;
}
err = mp_mod(&t, b, c);
LBL_ERR:
mp_clear(&t);
return err;
}

View File

@ -14,10 +14,11 @@ mp_err mp_submod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d)
}
if ((err = mp_sub(a, b, &t)) != MP_OKAY) {
mp_clear(&t);
return err;
goto LBL_ERR;
}
err = mp_mod(&t, c, d);
LBL_ERR:
mp_clear(&t);
return err;
}

View File

@ -52,8 +52,7 @@ mp_err mp_to_radix(const mp_int *a, char *str, size_t maxlen, int radix)
break;
}
if ((err = mp_div_d(&t, (mp_digit)radix, &t, &d)) != MP_OKAY) {
mp_clear(&t);
return err;
goto LBL_ERR;
}
*str++ = mp_s_rmap[d];
++digs;
@ -67,6 +66,9 @@ mp_err mp_to_radix(const mp_int *a, char *str, size_t maxlen, int radix)
/* append a NULL so the string is properly terminated */
*str = '\0';
err = MP_OKAY;
LBL_ERR:
mp_clear(&t);
return err;
}

View File

@ -22,12 +22,14 @@ mp_err mp_to_unsigned_bin(const mp_int *a, unsigned char *b)
b[x++] = (unsigned char)(t.dp[0] | ((t.dp[1] & 1u) << 7));
#endif
if ((err = mp_div_2d(&t, 8, &t, NULL)) != MP_OKAY) {
mp_clear(&t);
return err;
goto LBL_ERR;
}
}
s_mp_reverse(b, x);
err = MP_OKAY;
LBL_ERR:
mp_clear(&t);
return MP_OKAY;
return err;
}
#endif