x509: publish X509_PUBKEY_dup
authorDr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
Fri, 12 Jul 2019 10:42:39 +0000 (12:42 +0200)
committerDr. Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
Mon, 22 Jul 2019 05:34:30 +0000 (07:34 +0200)
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/9353)

crypto/crmf/crmf_lib.c
crypto/x509/x_pubkey.c
doc/man3/X509_PUBKEY_new.pod
include/openssl/x509.h
util/libcrypto.num

index e777a34e673742d6fb3c6891891d02c85c1ab50e..e519c50677b91e4e9b0bbfd2e4f131f64241172d 100644 (file)
@@ -200,10 +200,7 @@ OSSL_CRMF_CERTID *OSSL_CRMF_CERTID_gen(const X509_NAME *issuer,
  /*
   * id-regCtrl-protocolEncrKey Control (section 6.6)
   *
-  * For some reason X509_PUBKEY_dup() is not implemented in OpenSSL X509
-  * TODO: check whether that should go elsewhere
   */
-static IMPLEMENT_ASN1_DUP_FUNCTION(X509_PUBKEY)
 IMPLEMENT_CRMF_CTRL_FUNC(protocolEncrKey, X509_PUBKEY, regCtrl)
 
 /*-
index eb5ea27b2eecbffe6add5c808f0966336a4a10a0..d81f53844f375dfd8da78e5165a9817307180da2 100644 (file)
@@ -56,6 +56,7 @@ ASN1_SEQUENCE_cb(X509_PUBKEY, pubkey_cb) = {
 } ASN1_SEQUENCE_END_cb(X509_PUBKEY, X509_PUBKEY)
 
 IMPLEMENT_ASN1_FUNCTIONS(X509_PUBKEY)
+IMPLEMENT_ASN1_DUP_FUNCTION(X509_PUBKEY)
 
 /* TODO should better be called X509_PUBKEY_set1 */
 int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey)
index 2d65be6bc4b4df2b9223188cf4d1fc1a624156d0..551031b82b3b1b12029273dab3200de77d17ed1d 100644 (file)
@@ -2,8 +2,9 @@
 
 =head1 NAME
 
-X509_PUBKEY_new, X509_PUBKEY_free, X509_PUBKEY_set, X509_PUBKEY_get0,
-X509_PUBKEY_get, d2i_PUBKEY, i2d_PUBKEY, d2i_PUBKEY_bio, d2i_PUBKEY_fp,
+X509_PUBKEY_new, X509_PUBKEY_free, X509_PUBKEY_dup,
+X509_PUBKEY_set, X509_PUBKEY_get0, X509_PUBKEY_get,
+d2i_PUBKEY, i2d_PUBKEY, d2i_PUBKEY_bio, d2i_PUBKEY_fp,
 i2d_PUBKEY_fp, i2d_PUBKEY_bio, X509_PUBKEY_set0_param,
 X509_PUBKEY_get0_param - SubjectPublicKeyInfo public key functions
 
@@ -13,6 +14,7 @@ X509_PUBKEY_get0_param - SubjectPublicKeyInfo public key functions
 
  X509_PUBKEY *X509_PUBKEY_new(void);
  void X509_PUBKEY_free(X509_PUBKEY *a);
+ X509_PUBKEY *X509_PUBKEY_dup(const X509_PUBKEY *a);
 
  int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey);
  EVP_PKEY *X509_PUBKEY_get0(X509_PUBKEY *key);
index 66b44f4e06cab29873b1c7d4077d54479cd6d300..d2466f29726db39bdfe3dd861f60b1deb408e1e6 100644 (file)
@@ -470,6 +470,7 @@ DECLARE_ASN1_DUP_FUNCTION(X509_ALGOR)
 DECLARE_ASN1_DUP_FUNCTION(X509_ATTRIBUTE)
 DECLARE_ASN1_DUP_FUNCTION(X509_CRL)
 DECLARE_ASN1_DUP_FUNCTION(X509_EXTENSION)
+DECLARE_ASN1_DUP_FUNCTION(X509_PUBKEY)
 DECLARE_ASN1_DUP_FUNCTION(X509_REQ)
 DECLARE_ASN1_DUP_FUNCTION(X509_REVOKED)
 int X509_ALGOR_set0(X509_ALGOR *alg, ASN1_OBJECT *aobj, int ptype,
index 1992504c918f4b4a91e54271194e8b89ea27698f..c062a99f4f2db5aad24801cf45754391c28ec92d 100644 (file)
@@ -4689,3 +4689,4 @@ EVP_KEYMGMT_fetch                       4794      3_0_0   EXIST::FUNCTION:
 EVP_KEYMGMT_up_ref                      4795   3_0_0   EXIST::FUNCTION:
 EVP_KEYMGMT_free                        4796   3_0_0   EXIST::FUNCTION:
 EVP_KEYMGMT_provider                    4797   3_0_0   EXIST::FUNCTION:
+X509_PUBKEY_dup                         4798   3_0_0   EXIST::FUNCTION: