Providing missing accessor to EVP_PKEY.engine
authorDmitry Belyavskiy <beldmit@gmail.com>
Tue, 19 Mar 2019 11:07:37 +0000 (14:07 +0300)
committerMatt Caswell <matt@openssl.org>
Thu, 21 Mar 2019 09:06:12 +0000 (09:06 +0000)
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/8526)

crypto/evp/p_lib.c
doc/man3/EVP_PKEY_set1_RSA.pod
include/openssl/evp.h
util/libcrypto.num

index 148df90f84b1307220ac0dd9aecb385423aa8709..0fe71161bd6087fb35d2ec01414a396e849727af 100644 (file)
@@ -394,6 +394,11 @@ int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e)
     pkey->pmeth_engine = e;
     return 1;
 }
+
+ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey)
+{
+    return pkey->engine;
+}
 #endif
 int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key)
 {
index d10fc59d8bccac961947ffec1b9d9fffb3248970..352e068c236461f9d8cf9203e723fc69718b1db7 100644 (file)
@@ -9,7 +9,7 @@ EVP_PKEY_assign_RSA, EVP_PKEY_assign_DSA, EVP_PKEY_assign_DH,
 EVP_PKEY_assign_EC_KEY, EVP_PKEY_assign_POLY1305, EVP_PKEY_assign_SIPHASH,
 EVP_PKEY_get0_hmac, EVP_PKEY_get0_poly1305, EVP_PKEY_get0_siphash,
 EVP_PKEY_type, EVP_PKEY_id, EVP_PKEY_base_id, EVP_PKEY_set_alias_type,
-EVP_PKEY_set1_engine - EVP_PKEY assignment functions
+EVP_PKEY_set1_engine, EVP_PKEY_get0_engine - EVP_PKEY assignment functions
 
 =head1 SYNOPSIS
 
@@ -45,6 +45,7 @@ EVP_PKEY_set1_engine - EVP_PKEY assignment functions
  int EVP_PKEY_type(int type);
  int EVP_PKEY_set_alias_type(EVP_PKEY *pkey, int type);
 
+ ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey);
  int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *engine);
 
 =head1 DESCRIPTION
@@ -81,6 +82,8 @@ often seen in practice.
 EVP_PKEY_type() returns the underlying type of the NID B<type>. For example
 EVP_PKEY_type(EVP_PKEY_RSA2) will return B<EVP_PKEY_RSA>.
 
+EVP_PKEY_get0_engine() returns a reference to the ENGINE handling B<pkey>.
+
 EVP_PKEY_set1_engine() sets the ENGINE handling B<pkey> to B<engine>. It
 must be called after the key algorithm and components are set up.
 If B<engine> does not include an B<EVP_PKEY_METHOD> for B<pkey> an
index 9f05b5a3b7f5295f069b7c4f5fb5ed09d53628ec..dd1117d0fe2d90124ff893c3bf9bfab41dce914e 100644 (file)
@@ -995,6 +995,7 @@ int EVP_PKEY_set_type_str(EVP_PKEY *pkey, const char *str, int len);
 int EVP_PKEY_set_alias_type(EVP_PKEY *pkey, int type);
 # ifndef OPENSSL_NO_ENGINE
 int EVP_PKEY_set1_engine(EVP_PKEY *pkey, ENGINE *e);
+ENGINE *EVP_PKEY_get0_engine(const EVP_PKEY *pkey);
 # endif
 int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key);
 void *EVP_PKEY_get0(const EVP_PKEY *pkey);
index 32c64cb2c7933256d04e62616af5d5234f9dbd69..474f9f950d1f4d9cc9aedb63d48a244db9880902 100644 (file)
@@ -4579,3 +4579,4 @@ EVP_PKEY_meth_set_digest_custom         4532      1_1_1   EXIST::FUNCTION:
 EVP_PKEY_meth_get_digest_custom         4533   1_1_1   EXIST::FUNCTION:
 OPENSSL_INIT_set_config_filename        4534   1_1_1b  EXIST::FUNCTION:STDIO
 OPENSSL_INIT_set_config_file_flags      4535   1_1_1b  EXIST::FUNCTION:STDIO
+EVP_PKEY_get0_engine                    4536   1_1_1c  EXIST::FUNCTION:ENGINE