mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-31 14:35:26 +00: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:
@@ -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);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user