|
@@ -636,8 +636,8 @@ static int default_fixup_args(enum state state,
|
|
|
ctx->p2, ctx->sz);
|
|
|
case OSSL_PARAM_OCTET_STRING:
|
|
|
return OSSL_PARAM_get_octet_string(ctx->params,
|
|
|
- ctx->p2, ctx->sz,
|
|
|
- &ctx->sz);
|
|
|
+ &ctx->p2, ctx->sz,
|
|
|
+ (size_t *)&ctx->p1);
|
|
|
case OSSL_PARAM_OCTET_PTR:
|
|
|
return OSSL_PARAM_get_octet_ptr(ctx->params,
|
|
|
ctx->p2, &ctx->sz);
|
|
@@ -685,7 +685,7 @@ static int default_fixup_args(enum state state,
|
|
|
return OSSL_PARAM_set_octet_string(ctx->params, ctx->p2,
|
|
|
size);
|
|
|
case OSSL_PARAM_OCTET_PTR:
|
|
|
- return OSSL_PARAM_set_octet_ptr(ctx->params, ctx->p2,
|
|
|
+ return OSSL_PARAM_set_octet_ptr(ctx->params, *(void **)ctx->p2,
|
|
|
size);
|
|
|
default:
|
|
|
ERR_raise_data(ERR_LIB_EVP, ERR_R_UNSUPPORTED,
|
|
@@ -695,6 +695,9 @@ static int default_fixup_args(enum state state,
|
|
|
translation->param_data_type);
|
|
|
return 0;
|
|
|
}
|
|
|
+ } else if (state == PRE_PARAMS_TO_CTRL && ctx->action_type == GET) {
|
|
|
+ if (translation->param_data_type == OSSL_PARAM_OCTET_PTR)
|
|
|
+ ctx->p2 = &ctx->bufp;
|
|
|
}
|
|
|
}
|
|
|
/* Any other combination is simply pass-through */
|
|
@@ -2254,7 +2257,7 @@ static const struct translation_st evp_pkey_ctx_translations[] = {
|
|
|
OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL, OSSL_PARAM_OCTET_STRING, NULL },
|
|
|
{ GET, EVP_PKEY_RSA, 0, EVP_PKEY_OP_TYPE_CRYPT,
|
|
|
EVP_PKEY_CTRL_GET_RSA_OAEP_LABEL, NULL, NULL,
|
|
|
- OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL, OSSL_PARAM_OCTET_STRING, NULL },
|
|
|
+ OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL, OSSL_PARAM_OCTET_PTR, NULL },
|
|
|
|
|
|
{ SET, EVP_PKEY_RSA_PSS, 0, EVP_PKEY_OP_TYPE_GEN,
|
|
|
EVP_PKEY_CTRL_MD, "rsa_pss_keygen_md", NULL,
|