From: FdaSilvaYY Date: Sun, 3 Apr 2016 21:24:51 +0000 (+0200) Subject: Add X509_REQ_get0_pubkey method X-Git-Tag: OpenSSL_1_1_0-pre5~142 X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=commitdiff_plain;h=97458daade31c32ea8816b7e065e3bda3be588fa Add X509_REQ_get0_pubkey method Reviewed-by: Stephen Henson Reviewed-by: Rich Salz --- diff --git a/crypto/x509/x509_req.c b/crypto/x509/x509_req.c index c67f609f07..2b2cbcee17 100644 --- a/crypto/x509/x509_req.c +++ b/crypto/x509/x509_req.c @@ -115,6 +115,13 @@ EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req) return (X509_PUBKEY_get(req->req_info.pubkey)); } +EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req) +{ + if (req == NULL) + return NULL; + return (X509_PUBKEY_get0(req->req_info.pubkey)); +} + X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *req) { return req->req_info.pubkey; diff --git a/doc/crypto/X509_get_pubkey.pod b/doc/crypto/X509_get_pubkey.pod index 2740f98386..c2fb5c0836 100644 --- a/doc/crypto/X509_get_pubkey.pod +++ b/doc/crypto/X509_get_pubkey.pod @@ -3,8 +3,9 @@ =head1 NAME X509_get_pubkey, X509_get0_pubkey, X509_set_pubkey, X509_get_X509_PUBKEY, -X509_REQ_get_pubkey, X509_REQ_set_pubkey, X509_REQ_get_X509_PUBKEY - get or -set certificate or certificate request public key. +X509_REQ_get_pubkey, X509_REQ_get0_pubkey, X509_REQ_set_pubkey, +X509_REQ_get_X509_PUBKEY - get or set certificate or certificate request +public key. =head1 SYNOPSIS @@ -16,6 +17,7 @@ set certificate or certificate request public key. X509_PUBKEY *X509_get_X509_PUBKEY(X509 *x); EVP_PKEY *X509_REQ_get_pubkey(X509_REQ *req); + EVP_PKEY *X509_REQ_get0_pubkey(X509_REQ *req); int X509_REQ_set_pubkey(X509_REQ *x, EVP_PKEY *pkey); X509_PUBKEY *X509_REQ_get_X509_PUBKEY(X509_REQ *x); @@ -35,8 +37,8 @@ must not be freed up after use. X509_set_pubkey() attempts to set the public key for certificate B to B. The key B should be freed up after use. -X509_REQ_get_pubkey(), X509_REQ_set_pubkey() and X509_REQ_get_X509_PUBKEY() -are similar but operate on certificate request B. +X509_REQ_get_pubkey(), X509_REQ_get0_pubkey(), X509_REQ_set_pubkey() and +X509_REQ_get_X509_PUBKEY() are similar but operate on certificate request B. =head1 NOTES @@ -51,7 +53,7 @@ X509_get_pubkey(), X509_get0_pubkey(), X509_get_X509_PUBKEY(), X509_REQ_get_pubkey() and X509_REQ_get_X509_PUBKEY() return a public key or B if an error occurred. -X509_set_pubkey() and X509_REQ_set_pubkey() rerturn 1 for success and 0 +X509_set_pubkey() and X509_REQ_set_pubkey() return 1 for success and 0 for failure. =head1 SEE ALSO diff --git a/include/openssl/x509.h b/include/openssl/x509.h index 4f22dc3050..ae2fb1dabf 100644 --- a/include/openssl/x509.h +++ b/include/openssl/x509.h @@ -696,6 +696,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); +EVP_PKEY *X509_REQ_get0_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); diff --git a/util/libcrypto.num b/util/libcrypto.num index e1ca4efd9f..581a84b8fc 100644 --- a/util/libcrypto.num +++ b/util/libcrypto.num @@ -4124,3 +4124,4 @@ DSA_meth_get_sign_setup 3989 1_1_0 EXIST::FUNCTION:DSA DSA_get0_engine 3990 1_1_0 EXIST::FUNCTION:DSA X509_VERIFY_PARAM_set_auth_level 3991 1_1_0 EXIST::FUNCTION: X509_VERIFY_PARAM_get_auth_level 3992 1_1_0 EXIST::FUNCTION: +X509_REQ_get0_pubkey 3993 1_1_0 EXIST::FUNCTION: