From 1f143e08a5cde8e3fa6b5b80988bd6be7673428a Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Fri, 18 Sep 2015 03:06:55 +0100 Subject: [PATCH] New accessor X509_REQ_get_X509_PUBKEY() Reviewed-by: Rich Salz --- crypto/asn1/t_req.c | 6 +++++- crypto/x509/x509_req.c | 5 +++++ include/openssl/x509.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/crypto/asn1/t_req.c b/crypto/asn1/t_req.c index 8ea350d7a3..1ed404ce62 100644 --- a/crypto/asn1/t_req.c +++ b/crypto/asn1/t_req.c @@ -129,11 +129,15 @@ int X509_REQ_print_ex(BIO *bp, X509_REQ *x, unsigned long nmflags, goto err; } if (!(cflag & X509_FLAG_NO_PUBKEY)) { + X509_PUBKEY *xpkey; + ASN1_OBJECT *koid; if (BIO_write(bp, " Subject Public Key Info:\n", 33) <= 0) goto err; if (BIO_printf(bp, "%12sPublic Key Algorithm: ", "") <= 0) goto err; - if (i2a_ASN1_OBJECT(bp, ri->pubkey->algor->algorithm) <= 0) + xpkey = X509_REQ_get_X509_PUBKEY(x); + X509_PUBKEY_get0_param(&koid, NULL, NULL, NULL, xpkey); + if (i2a_ASN1_OBJECT(bp, koid) <= 0) goto err; if (BIO_puts(bp, "\n") <= 0) goto err; diff --git a/crypto/x509/x509_req.c b/crypto/x509/x509_req.c index a8b838cff9..8cc35b3365 100644 --- a/crypto/x509/x509_req.c +++ b/crypto/x509/x509_req.c @@ -117,6 +117,11 @@ EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req) return (X509_PUBKEY_get(req->req_info.pubkey)); } +X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req) +{ + return req->req_info.pubkey; +} + int X509_REQ_check_private_key(X509_REQ *x, EVP_PKEY *k) { EVP_PKEY *xk = NULL; diff --git a/include/openssl/x509.h b/include/openssl/x509.h index 9a58dfcba4..5d6c0839ef 100644 --- a/include/openssl/x509.h +++ b/include/openssl/x509.h @@ -759,6 +759,7 @@ int X509_REQ_get_signature_nid(const X509_REQ *req); int i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); +X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req); int X509_REQ_extension_nid(int nid); int *X509_REQ_get_extension_nids(void); void X509_REQ_set_extension_nids(int *nids); -- GitLab