|
47 | 47 | * define WOLFSSL_HAVE_ECC_KEY_GET_PRIV, so the block above was skipped. */ |
48 | 48 | #define ecc_get_k_raw(key) (key)->k |
49 | 49 | #endif |
| 50 | +#if defined(HAVE_FIPS) || defined(HAVE_SELFTEST) |
| 51 | + /* FIPS and self-test copies of ecc.h predate ecc_put_k(). */ |
| 52 | + #define pk_ec_put_k(key) WC_DO_NOTHING |
| 53 | +#else |
| 54 | + /* Wipe the unblinded copy wc_ecc_key_get_priv() made. */ |
| 55 | + #define pk_ec_put_k(key) ecc_put_k(key) |
| 56 | +#endif |
50 | 57 |
|
51 | 58 | #if !defined(WOLFSSL_PK_EC_INCLUDED) |
52 | 59 | #ifndef WOLFSSL_IGNORE_FILE_WARN |
@@ -4539,11 +4546,13 @@ int SetECKeyExternal(WOLFSSL_EC_KEY* eckey) |
4539 | 4546 |
|
4540 | 4547 | /* set the external privkey */ |
4541 | 4548 | if ((ret == 1) && ((key->type == ECC_PRIVATEKEY) || |
4542 | | - (key->type == ECC_PRIVATEKEY_ONLY)) && |
4543 | | - (wolfssl_bn_set_value(&eckey->priv_key, |
4544 | | - wc_ecc_key_get_priv(key)) != 1)) { |
4545 | | - WOLFSSL_MSG("ec priv key error"); |
4546 | | - ret = WOLFSSL_FATAL_ERROR; |
| 4549 | + (key->type == ECC_PRIVATEKEY_ONLY))) { |
| 4550 | + if (wolfssl_bn_set_value(&eckey->priv_key, |
| 4551 | + wc_ecc_key_get_priv(key)) != 1) { |
| 4552 | + WOLFSSL_MSG("ec priv key error"); |
| 4553 | + ret = WOLFSSL_FATAL_ERROR; |
| 4554 | + } |
| 4555 | + pk_ec_put_k(key); |
4547 | 4556 | } |
4548 | 4557 |
|
4549 | 4558 | /* External values set when operations succeeded. */ |
@@ -4628,11 +4637,14 @@ int SetECKeyInternal(WOLFSSL_EC_KEY* eckey) |
4628 | 4637 | ret = WOLFSSL_FATAL_ERROR; |
4629 | 4638 | } |
4630 | 4639 | /* private key */ |
4631 | | - if ((ret == 1) && (!mp_iszero(wc_ecc_key_get_priv(key)))) { |
4632 | | - if (pubSet) { |
| 4640 | + if (ret == 1) { |
| 4641 | + int privSet = !mp_iszero(wc_ecc_key_get_priv(key)); |
| 4642 | + |
| 4643 | + pk_ec_put_k(key); |
| 4644 | + if (privSet && pubSet) { |
4633 | 4645 | key->type = ECC_PRIVATEKEY; |
4634 | 4646 | } |
4635 | | - else { |
| 4647 | + else if (privSet) { |
4636 | 4648 | key->type = ECC_PRIVATEKEY_ONLY; |
4637 | 4649 | } |
4638 | 4650 | } |
|
0 commit comments