| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent a78c638 commit 69bcca1
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -5710,21 +5710,20 @@ void ECDH::SetPrivateKey(const FunctionCallbackInfo<Value>& args) { | |||
| 5710 | 5710 | return env->ThrowError("Private key is not valid for specified curve."); | |
| 5711 | 5711 | } | |
| 5712 | 5712 | ||
| 5713 | - int result = EC_KEY_set_private_key(ecdh->key_.get(), priv.get()); | ||
| 5713 | + ECKeyPointer new_key(EC_KEY_dup(ecdh->key_.get())); | ||
| 5714 | + CHECK(new_key); | ||
| 5715 | + | ||
| 5716 | + int result = EC_KEY_set_private_key(new_key.get(), priv.get()); | ||
| 5714 | 5717 | priv.reset(); | |
| 5715 | 5718 | ||
| 5716 | 5719 | if (!result) { | |
| 5717 | 5720 | return env->ThrowError("Failed to convert BN to a private key"); | |
| 5718 | 5721 | } | |
| 5719 | 5722 | ||
| 5720 | - // To avoid inconsistency, clear the current public key in-case computing | ||
| 5721 | - // the new one fails for some reason. | ||
| 5722 | - EC_KEY_set_public_key(ecdh->key_.get(), nullptr); | ||
| 5723 | - | ||
| 5724 | 5723 | MarkPopErrorOnReturn mark_pop_error_on_return; | |
| 5725 | 5724 | USE(&mark_pop_error_on_return); | |
| 5726 | 5725 | ||
| 5727 | - const BIGNUM* priv_key = EC_KEY_get0_private_key(ecdh->key_.get()); | ||
| 5726 | + const BIGNUM* priv_key = EC_KEY_get0_private_key(new_key.get()); | ||
| 5728 | 5727 | CHECK_NOT_NULL(priv_key); | |
| 5729 | 5728 | ||
| 5730 | 5729 | ECPointPointer pub(EC_POINT_new(ecdh->group_)); | |
@@ -5735,8 +5734,11 @@ void ECDH::SetPrivateKey(const FunctionCallbackInfo<Value>& args) { | |||
| 5735 | 5734 | return env->ThrowError("Failed to generate ECDH public key"); | |
| 5736 | 5735 | } | |
| 5737 | 5736 | ||
| 5738 | - if (!EC_KEY_set_public_key(ecdh->key_.get(), pub.get())) | ||
| 5737 | + if (!EC_KEY_set_public_key(new_key.get(), pub.get())) | ||
| 5739 | 5738 | return env->ThrowError("Failed to set generated public key"); | |
| 5739 | + | ||
| 5740 | + EC_KEY_copy(ecdh->key_.get(), new_key.get()); | ||
| 5741 | + ecdh->group_ = EC_KEY_get0_group(ecdh->key_.get()); | ||
| 5740 | 5742 | } | |
| 5741 | 5743 | ||
| 5742 | 5744 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments