aboutsummaryrefslogtreecommitdiff
path: root/crypto/encode_decode/encoder_pkey.c
diff options
context:
space:
mode:
authorEnji Cooper <ngie@FreeBSD.org>2025-03-06 17:49:50 +0000
committerEnji Cooper <ngie@FreeBSD.org>2025-03-06 17:49:50 +0000
commit1c34280346af8284acdc0eae39496811d37df25d (patch)
treedbe4218057c550b3be955f331fc1198c6cab5f3f /crypto/encode_decode/encoder_pkey.c
parent108164cf95d9594884c2dcccba2691335e6f221b (diff)
Diffstat (limited to 'crypto/encode_decode/encoder_pkey.c')
-rw-r--r--crypto/encode_decode/encoder_pkey.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/crypto/encode_decode/encoder_pkey.c b/crypto/encode_decode/encoder_pkey.c
index 3a24317cf4d6..39266a95309d 100644
--- a/crypto/encode_decode/encoder_pkey.c
+++ b/crypto/encode_decode/encoder_pkey.c
@@ -186,9 +186,13 @@ encoder_construct_pkey(OSSL_ENCODER_INSTANCE *encoder_inst, void *arg)
const OSSL_PROVIDER *e_prov = OSSL_ENCODER_get0_provider(encoder);
if (k_prov != e_prov) {
+ int selection = data->selection;
+
+ if ((selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0)
+ selection |= OSSL_KEYMGMT_SELECT_PUBLIC_KEY;
data->encoder_inst = encoder_inst;
- if (!evp_keymgmt_export(pk->keymgmt, pk->keydata, data->selection,
+ if (!evp_keymgmt_export(pk->keymgmt, pk->keydata, selection,
&encoder_import_cb, data))
return NULL;
data->obj = data->constructed_obj;