mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-03 20:54:41 +02:00
fix ecc_make_key cleanup on rng failure
This commit is contained in:
@@ -1554,6 +1554,7 @@ int wc_ecc_make_key_ex(RNG* rng, ecc_key* key, const ecc_set_type* dp)
|
|||||||
byte buf[ECC_MAXSIZE];
|
byte buf[ECC_MAXSIZE];
|
||||||
#endif
|
#endif
|
||||||
int keysize;
|
int keysize;
|
||||||
|
int po_init = 0; /* prime order Init flag for clear */
|
||||||
|
|
||||||
if (key == NULL || rng == NULL || dp == NULL)
|
if (key == NULL || rng == NULL || dp == NULL)
|
||||||
return ECC_BAD_ARG_E;
|
return ECC_BAD_ARG_E;
|
||||||
@@ -1592,6 +1593,8 @@ int wc_ecc_make_key_ex(RNG* rng, ecc_key* key, const ecc_set_type* dp)
|
|||||||
#endif
|
#endif
|
||||||
if (err != MP_OKAY)
|
if (err != MP_OKAY)
|
||||||
err = MEMORY_E;
|
err = MEMORY_E;
|
||||||
|
else
|
||||||
|
po_init = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (err == MP_OKAY) {
|
if (err == MP_OKAY) {
|
||||||
@@ -1634,8 +1637,10 @@ int wc_ecc_make_key_ex(RNG* rng, ecc_key* key, const ecc_set_type* dp)
|
|||||||
mp_clear(&key->k);
|
mp_clear(&key->k);
|
||||||
}
|
}
|
||||||
ecc_del_point(base);
|
ecc_del_point(base);
|
||||||
mp_clear(&prime);
|
if (po_init) {
|
||||||
mp_clear(&order);
|
mp_clear(&prime);
|
||||||
|
mp_clear(&order);
|
||||||
|
}
|
||||||
|
|
||||||
ForceZero(buf, ECC_MAXSIZE);
|
ForceZero(buf, ECC_MAXSIZE);
|
||||||
#ifdef WOLFSSL_SMALL_STACK
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
|
Reference in New Issue
Block a user