refactor with goto
This commit is contained in:
parent
49abba0937
commit
a402b462e9
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user