From: Shane Lontis Date: Fri, 21 Aug 2020 01:13:09 +0000 (+1000) Subject: Fix DH serializer import calls to use correct selection flags. X-Git-Tag: openssl-3.0.0-alpha7~439 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3fab56631f597b969bb5849bd890e354d4062178;p=thirdparty%2Fopenssl.git Fix DH serializer import calls to use correct selection flags. Reviewed-by: Richard Levitte (Merged from https://github.com/openssl/openssl/pull/12698) --- diff --git a/providers/implementations/encode_decode/encoder_dh_param.c b/providers/implementations/encode_decode/encoder_dh_param.c index 23cda024c48..32c8769b5e7 100644 --- a/providers/implementations/encode_decode/encoder_dh_param.c +++ b/providers/implementations/encode_decode/encoder_dh_param.c @@ -63,7 +63,7 @@ static int dh_param_der_data(void *ctx, const OSSL_PARAM params[], /* ctx == provctx */ if ((dh = dh_new(ctx)) != NULL - && dh_import(dh, OSSL_KEYMGMT_SELECT_ALL_PARAMETERS, params) + && dh_import(dh, OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS, params) && dh_param_der(ctx, dh, out, cb, cbarg)) ok = 1; dh_free(dh); @@ -100,7 +100,7 @@ static int dh_param_pem_data(void *ctx, const OSSL_PARAM params[], /* ctx == provctx */ if ((dh = dh_new(ctx)) != NULL - && dh_import(dh, OSSL_KEYMGMT_SELECT_ALL_PARAMETERS, params) + && dh_import(dh, OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS, params) && dh_param_pem(ctx, dh, out, cb, cbarg)) ok = 1; dh_free(dh); @@ -137,7 +137,7 @@ static int dh_param_print_data(void *ctx, const OSSL_PARAM params[], /* ctx == provctx */ if ((dh = dh_new(ctx)) != NULL - && dh_import(dh, OSSL_KEYMGMT_SELECT_ALL_PARAMETERS, params) + && dh_import(dh, OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS, params) && dh_param_print(ctx, dh, out, cb, cbarg)) ok = 1; dh_free(dh); diff --git a/providers/implementations/encode_decode/encoder_dh_priv.c b/providers/implementations/encode_decode/encoder_dh_priv.c index a9373df96ae..dd942230846 100644 --- a/providers/implementations/encode_decode/encoder_dh_priv.c +++ b/providers/implementations/encode_decode/encoder_dh_priv.c @@ -25,6 +25,9 @@ #include "prov/provider_ctx.h" #include "encoder_local.h" +#define DH_SELECT_PRIVATE_IMPORTABLE \ + (OSSL_KEYMGMT_SELECT_KEYPAIR | OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS) + static OSSL_FUNC_encoder_newctx_fn dh_priv_newctx; static OSSL_FUNC_encoder_freectx_fn dh_priv_freectx; static OSSL_FUNC_encoder_set_ctx_params_fn dh_priv_set_ctx_params; @@ -132,7 +135,7 @@ static int dh_priv_der_data(void *vctx, const OSSL_PARAM params[], DH *dh; if ((dh = dh_new(ctx->provctx)) != NULL - && dh_import(dh, OSSL_KEYMGMT_SELECT_KEYPAIR, params) + && dh_import(dh, DH_SELECT_PRIVATE_IMPORTABLE, params) && dh_priv_der(ctx, dh, out, cb, cbarg)) ok = 1; dh_free(dh); @@ -178,7 +181,7 @@ static int dh_pem_priv_data(void *vctx, const OSSL_PARAM params[], DH *dh; if ((dh = dh_new(ctx->provctx)) != NULL - && dh_import(dh, OSSL_KEYMGMT_SELECT_KEYPAIR, params) + && dh_import(dh, DH_SELECT_PRIVATE_IMPORTABLE, params) && dh_pem_priv(ctx->provctx, dh, out, cb, cbarg)) ok = 1; dh_free(dh); @@ -235,7 +238,7 @@ static int dh_priv_print_data(void *vctx, const OSSL_PARAM params[], DH *dh; if ((dh = dh_new(ctx->provctx)) != NULL - && dh_import(dh, OSSL_KEYMGMT_SELECT_KEYPAIR, params) + && dh_import(dh, DH_SELECT_PRIVATE_IMPORTABLE, params) && dh_priv_print(ctx, dh, out, cb, cbarg)) ok = 1; dh_free(dh); diff --git a/providers/implementations/encode_decode/encoder_dh_pub.c b/providers/implementations/encode_decode/encoder_dh_pub.c index 99f9532c343..583dcd9c5a5 100644 --- a/providers/implementations/encode_decode/encoder_dh_pub.c +++ b/providers/implementations/encode_decode/encoder_dh_pub.c @@ -34,6 +34,9 @@ static OSSL_FUNC_encoder_encode_object_fn dh_pub_pem; static OSSL_FUNC_encoder_encode_data_fn dh_pub_print_data; static OSSL_FUNC_encoder_encode_object_fn dh_pub_print; +#define DH_SELECT_PUBLIC_IMPORTABLE \ + (OSSL_KEYMGMT_SELECT_PUBLIC_KEY | OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS) + /* Public key : context */ /* @@ -63,7 +66,7 @@ static int dh_pub_der_data(void *ctx, const OSSL_PARAM params[], /* ctx == provctx */ if ((dh = dh_new(ctx)) != NULL - && dh_import(dh, OSSL_KEYMGMT_SELECT_KEYPAIR, params) + && dh_import(dh, DH_SELECT_PUBLIC_IMPORTABLE, params) && dh_pub_der(ctx, dh, out, cb, cbarg)) ok = 1; dh_free(dh); @@ -104,7 +107,7 @@ static int dh_pub_pem_data(void *ctx, const OSSL_PARAM params[], /* ctx == provctx */ if ((dh = dh_new(ctx)) != NULL - && dh_import(dh, OSSL_KEYMGMT_SELECT_KEYPAIR, params) + && dh_import(dh, DH_SELECT_PUBLIC_IMPORTABLE, params) && dh_pub_pem(ctx, dh, out, cb, cbarg)) ok = 1; dh_free(dh); @@ -144,7 +147,7 @@ static int dh_pub_print_data(void *ctx, const OSSL_PARAM params[], /* ctx == provctx */ if ((dh = dh_new(ctx)) != NULL - && dh_import(dh, OSSL_KEYMGMT_SELECT_KEYPAIR, params) + && dh_import(dh, DH_SELECT_PUBLIC_IMPORTABLE, params) && dh_pub_print(ctx, dh, out, cb, cbarg)) ok = 1; dh_free(dh);