diff --git a/src/object/certificate.c b/src/object/certificate.c index 876eb835..b3028987 100644 --- a/src/object/certificate.c +++ b/src/object/certificate.c @@ -467,6 +467,7 @@ static int validate_public_key(X509 *cert, enum cert_type type) { X509_PUBKEY *pubkey; + EVP_PKEY *evppkey; X509_ALGOR *pa; int ok; int error; @@ -507,6 +508,10 @@ validate_public_key(X509 *cert, enum cert_type type) error = validate_spki(pubkey); if (error) return error; + if ((evppkey = X509_get0_pubkey(cert)) == NULL) + return val_crypto_err("X509_get0_pubkey() returned NULL"); + if (X509_verify(cert, evppkey) != 1) + return -EINVAL; } return 0;