Improve the error handling for non ECC_SECP256R1 curve in wc_ecc_make_key_ex.

This commit is contained in:
David Garske
2019-01-22 14:04:18 -08:00
parent c48786c649
commit 7c4fa33937

View File

@@ -3897,6 +3897,7 @@ static int wc_ecc_make_pub_ex(ecc_key* key, ecc_curve_spec* curveIn,
#else #else
(void)curveIn; (void)curveIn;
err = NOT_COMPILED_IN;
#endif /* WOLFSSL_ATECC508A */ #endif /* WOLFSSL_ATECC508A */
/* change key state if public part is cached */ /* change key state if public part is cached */
@@ -3974,6 +3975,7 @@ int wc_ecc_make_key_ex(WC_RNG* rng, int keysize, ecc_key* key, int curve_id)
#endif /* WOLFSSL_ASYNC_CRYPT && WC_ASYNC_ENABLE_ECC */ #endif /* WOLFSSL_ASYNC_CRYPT && WC_ASYNC_ENABLE_ECC */
#ifdef WOLFSSL_ATECC508A #ifdef WOLFSSL_ATECC508A
if (curve_id == ECC_SECP256R1) {
key->type = ECC_PRIVATEKEY; key->type = ECC_PRIVATEKEY;
key->slot = atmel_ecc_alloc(ATMEL_SLOT_ECDHE); key->slot = atmel_ecc_alloc(ATMEL_SLOT_ECDHE);
err = atmel_ecc_create_key(key->slot, key->pubkey_raw); err = atmel_ecc_create_key(key->slot, key->pubkey_raw);
@@ -3988,6 +3990,10 @@ int wc_ecc_make_key_ex(WC_RNG* rng, int keysize, ecc_key* key, int curve_id)
key->pubkey_raw + ECC_MAX_CRYPTO_HW_SIZE, key->pubkey_raw + ECC_MAX_CRYPTO_HW_SIZE,
ECC_MAX_CRYPTO_HW_SIZE); ECC_MAX_CRYPTO_HW_SIZE);
} }
}
else {
err = NOT_COMPILED_IN;
}
#else #else
#ifdef WOLFSSL_HAVE_SP_ECC #ifdef WOLFSSL_HAVE_SP_ECC