mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-28 04:34:54 -04:00
Don't set pubkey if eckey already has public key
The 'ecdsa_check()' function tries to correctly set the public key on the eckey, but this should be skipped if the public key is retrieved via the private key.
This commit is contained in:
parent
46afeca8bf
commit
06b9724152
1 changed files with 10 additions and 6 deletions
|
|
@ -561,17 +561,21 @@ static isc_result_t
|
|||
ecdsa_check(EC_KEY *eckey, EC_KEY *pubeckey) {
|
||||
const EC_POINT *pubkey;
|
||||
|
||||
pubkey = EC_KEY_get0_public_key(pubeckey);
|
||||
if (pubkey == NULL) {
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
if (EC_KEY_set_public_key(eckey, pubkey) != 1) {
|
||||
pubkey = EC_KEY_get0_public_key(eckey);
|
||||
if (pubkey != NULL) {
|
||||
return (ISC_R_SUCCESS);
|
||||
} else if (pubeckey != NULL) {
|
||||
pubkey = EC_KEY_get0_public_key(pubeckey);
|
||||
if (pubkey == NULL) {
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
if (EC_KEY_set_public_key(eckey, pubkey) != 1) {
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
}
|
||||
if (EC_KEY_check_key(eckey) == 1) {
|
||||
return (ISC_R_SUCCESS);
|
||||
}
|
||||
|
||||
return (ISC_R_FAILURE);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue