mirror of
https://github.com/openssl/openssl.git
synced 2025-01-18 13:44:20 +08:00
x509: improve error reporting
Distinguish between not being able to extract a public key versus not knowing the key's type. Alternative to #15921 Reviewed-by: Matt Caswell <matt@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/15944)
This commit is contained in:
parent
a73a5d0a14
commit
10af976962
@ -391,15 +391,12 @@ int X509_check_private_key(const X509 *x, const EVP_PKEY *k)
|
||||
int ret;
|
||||
|
||||
xk = X509_get0_pubkey(x);
|
||||
if (xk == NULL) {
|
||||
ERR_raise(ERR_LIB_X509, X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (xk)
|
||||
ret = EVP_PKEY_eq(xk, k);
|
||||
else
|
||||
ret = -2;
|
||||
|
||||
switch (ret) {
|
||||
case 1:
|
||||
break;
|
||||
switch (ret = EVP_PKEY_eq(xk, k)) {
|
||||
case 0:
|
||||
ERR_raise(ERR_LIB_X509, X509_R_KEY_VALUES_MISMATCH);
|
||||
break;
|
||||
@ -408,10 +405,10 @@ int X509_check_private_key(const X509 *x, const EVP_PKEY *k)
|
||||
break;
|
||||
case -2:
|
||||
ERR_raise(ERR_LIB_X509, X509_R_UNKNOWN_KEY_TYPE);
|
||||
break;
|
||||
}
|
||||
if (ret > 0)
|
||||
return 1;
|
||||
return 0;
|
||||
|
||||
return ret > 0;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user