From: Richard Levitte Date: Mon, 26 Oct 2020 12:58:30 +0000 (+0100) Subject: Adapt libcrypto functionality to specify the desired input structure X-Git-Tag: openssl-3.0.0-alpha9~139 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4f2abe4378ce561c60674f3ac0642d3fb22da550;p=thirdparty%2Fopenssl.git Adapt libcrypto functionality to specify the desired input structure Reviewed-by: Shane Lontis (Merged from https://github.com/openssl/openssl/pull/13248) --- diff --git a/crypto/cms/cms_ec.c b/crypto/cms/cms_ec.c index 9a602bb81d2..5dac7f06834 100644 --- a/crypto/cms/cms_ec.c +++ b/crypto/cms/cms_ec.c @@ -24,23 +24,16 @@ static EVP_PKEY *pkey_type2param(int ptype, const void *pval, if (ptype == V_ASN1_SEQUENCE) { const ASN1_STRING *pstr = pval; const unsigned char *pm = pstr->data; - int pmlen = pstr->length; + size_t pmlen = (size_t)pstr->length; OSSL_DECODER_CTX *ctx = NULL; - BIO *membio = NULL; + int selection = OSSL_KEYMGMT_SELECT_ALL_PARAMETERS; - /* TODO(3.0): Need to be able to specify here that only params will do */ - ctx = OSSL_DECODER_CTX_new_by_EVP_PKEY(&pkey, "DER", "EC", libctx, - propq); + ctx = OSSL_DECODER_CTX_new_by_EVP_PKEY(&pkey, "DER", NULL, "EC", + selection, libctx, propq); if (ctx == NULL) goto err; - membio = BIO_new_mem_buf(pm, pmlen); - if (membio == NULL) { - OSSL_DECODER_CTX_free(ctx); - goto err; - } - OSSL_DECODER_from_bio(ctx, membio); - BIO_free(membio); + OSSL_DECODER_from_data(ctx, &pm, &pmlen); OSSL_DECODER_CTX_free(ctx); } else if (ptype == V_ASN1_OBJECT) { const ASN1_OBJECT *poid = pval; diff --git a/crypto/store/store_result.c b/crypto/store/store_result.c index 5848761a5e3..96df9d8e141 100644 --- a/crypto/store/store_result.c +++ b/crypto/store/store_result.c @@ -255,7 +255,8 @@ static EVP_PKEY *try_key_value(struct extracted_param_data_st *data, size_t pdatalen = data->octet_data_size; decoderctx = - OSSL_DECODER_CTX_new_by_EVP_PKEY(&pk, "DER", NULL, libctx, propq); + OSSL_DECODER_CTX_new_by_EVP_PKEY(&pk, NULL, NULL, NULL, 0, + libctx, propq); (void)OSSL_DECODER_CTX_set_passphrase_cb(decoderctx, cb, cbarg); /* No error if this couldn't be decoded */