summaryrefslogtreecommitdiff
path: root/crypto/evp/keymgmt_lib.c
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2020-09-11 08:35:26 +0200
committerRichard Levitte <levitte@openssl.org>2020-09-12 20:24:52 +0200
commit655f73cecf411737cef9debdfa4c0b8b041656df (patch)
treee9a5a437df885cf57f97be8c70f8e5bac3c1c8a3 /crypto/evp/keymgmt_lib.c
parent96bb4ff9b8473d01d9ac9301ec0f796898c8f459 (diff)
downloadopenssl-new-655f73cecf411737cef9debdfa4c0b8b041656df.tar.gz
EVP: Add the internal convenience function evp_keymgmt_util_export()
This is purely to allow exporting without having to repeatedly specify the keymgmt and keydata from the EVP_PKEY. Reviewed-by: Nicola Tuveri <nic.tuv@gmail.com> Reviewed-by: Shane Lontis <shane.lontis@oracle.com> (Merged from https://github.com/openssl/openssl/pull/12853)
Diffstat (limited to 'crypto/evp/keymgmt_lib.c')
-rw-r--r--crypto/evp/keymgmt_lib.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/crypto/evp/keymgmt_lib.c b/crypto/evp/keymgmt_lib.c
index 5ef4115f47..763982e58f 100644
--- a/crypto/evp/keymgmt_lib.c
+++ b/crypto/evp/keymgmt_lib.c
@@ -77,6 +77,13 @@ EVP_PKEY *evp_keymgmt_util_make_pkey(EVP_KEYMGMT *keymgmt, void *keydata)
return pkey;
}
+int evp_keymgmt_util_export(const EVP_PKEY *pk, int selection,
+ OSSL_CALLBACK *export_cb, void *export_cbarg)
+{
+ return evp_keymgmt_export(pk->keymgmt, pk->keydata, selection,
+ export_cb, export_cbarg);
+}
+
void *evp_keymgmt_util_export_to_provider(EVP_PKEY *pk, EVP_KEYMGMT *keymgmt)
{
struct evp_keymgmt_util_try_import_data_st import_data;
@@ -139,8 +146,8 @@ void *evp_keymgmt_util_export_to_provider(EVP_PKEY *pk, EVP_KEYMGMT *keymgmt)
* The export function calls the callback (evp_keymgmt_util_try_import),
* which does the import for us. If successful, we're done.
*/
- if (!evp_keymgmt_export(pk->keymgmt, pk->keydata, OSSL_KEYMGMT_SELECT_ALL,
- &evp_keymgmt_util_try_import, &import_data)) {
+ if (!evp_keymgmt_util_export(pk, OSSL_KEYMGMT_SELECT_ALL,
+ &evp_keymgmt_util_try_import, &import_data)) {
/* If there was an error, bail out */
evp_keymgmt_freedata(keymgmt, import_data.keydata);
return NULL;
@@ -392,8 +399,9 @@ int evp_keymgmt_util_copy(EVP_PKEY *to, EVP_PKEY *from, int selection)
import_data.keydata = to_keydata;
import_data.selection = selection;
- if (!evp_keymgmt_export(from->keymgmt, from->keydata, selection,
- &evp_keymgmt_util_try_import, &import_data)) {
+ if (!evp_keymgmt_util_export(from, selection,
+ &evp_keymgmt_util_try_import,
+ &import_data)) {
evp_keymgmt_freedata(to_keymgmt, alloc_keydata);
return 0;
}