diff --git a/ssl/ssl_cert.c b/ssl/ssl_cert.c index 397fbf0e..325da2fb 100644 --- a/ssl/ssl_cert.c +++ b/ssl/ssl_cert.c @@ -652,14 +652,13 @@ static int ssl_cert_skip_to_spki(const CBS *in, CBS *out_tbs_cert) { } EVP_PKEY *ssl_cert_parse_pubkey(const CBS *in) { - CBS buf = *in, tbs_cert, spki; - if (!ssl_cert_skip_to_spki(&buf, &tbs_cert) || - !CBS_get_asn1_element(&tbs_cert, &spki, CBS_ASN1_SEQUENCE)) { + CBS buf = *in, tbs_cert; + if (!ssl_cert_skip_to_spki(&buf, &tbs_cert)) { OPENSSL_PUT_ERROR(SSL, SSL_R_CANNOT_PARSE_LEAF_CERT); return NULL; } - return EVP_parse_public_key(&spki); + return EVP_parse_public_key(&tbs_cert); } int ssl_cert_check_digital_signature_key_usage(const CBS *in) {