summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFdaSilvaYY <fdasilvayy@gmail.com>2016-04-03 23:24:51 +0200
committerFdaSilvaYY <fdasilvayy@gmail.com>2016-04-04 20:38:11 +0200
commit97458daade31c32ea8816b7e065e3bda3be588fa (patch)
treea97c110247a4ab16d909a49e3fe8b00a0c95d84e
parent0517538d1a39bc5eb664928a6c40b4a0afad01da (diff)
Add X509_REQ_get0_pubkey method
Reviewed-by: Stephen Henson <steve@openssl.org> Reviewed-by: Rich Salz <rsalz@openssl.org>
-rw-r--r--crypto/x509/x509_req.c7
-rw-r--r--doc/crypto/X509_get_pubkey.pod12
-rw-r--r--include/openssl/x509.h1
-rw-r--r--util/libcrypto.num1
4 files changed, 16 insertions, 5 deletions
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<x> to
B<pkey>. The key B<pkey> 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<req>.
+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<req>.
=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<NULL> 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: