int EVP_PKEY_set1_encoded_public_key(EVP_PKEY *pkey, const unsigned char *pub,
size_t publen)
{
- if (pkey->ameth == NULL) {
- OSSL_PARAM params[2] = { OSSL_PARAM_END, OSSL_PARAM_END };
-
- if (pkey->keymgmt == NULL || pkey->keydata == NULL)
- return 0;
-
- params[0] =
- OSSL_PARAM_construct_octet_string(OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY,
- (unsigned char *)pub, publen);
- return evp_keymgmt_set_params(pkey->keymgmt, pkey->keydata, params);
- }
+ if (pkey != NULL && evp_pkey_is_provided(pkey))
+ return
+ EVP_PKEY_set_octet_string_param(pkey,
+ OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY,
+ (unsigned char *)pub, publen);
if (publen > INT_MAX)
return 0;
{
int rv;
- if (pkey->ameth == NULL) {
- OSSL_PARAM params[2] = { OSSL_PARAM_END, OSSL_PARAM_END };
-
- if (pkey->keymgmt == NULL || pkey->keydata == NULL)
- return 0;
+ if (pkey != NULL && evp_pkey_is_provided(pkey)) {
+ size_t return_size = OSSL_PARAM_UNMODIFIED;
- params[0] =
- OSSL_PARAM_construct_octet_string(OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY,
- NULL, 0);
- if (!evp_keymgmt_get_params(pkey->keymgmt, pkey->keydata, params))
+ /*
+ * We know that this is going to fail, but it will give us a size
+ * to allocate.
+ */
+ EVP_PKEY_get_octet_string_param(pkey,
+ OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY,
+ NULL, 0, &return_size);
+ if (return_size == OSSL_PARAM_UNMODIFIED)
return 0;
- *ppub = OPENSSL_malloc(params[0].return_size);
+ *ppub = OPENSSL_malloc(return_size);
if (*ppub == NULL)
return 0;
- params[0] =
- OSSL_PARAM_construct_octet_string(OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY,
- *ppub, params[0].return_size);
- if (!evp_keymgmt_get_params(pkey->keymgmt, pkey->keydata, params))
+ if (!EVP_PKEY_get_octet_string_param(pkey,
+ OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY,
+ *ppub, return_size, NULL))
return 0;
-
- return params[0].return_size;
+ return return_size;
}
size_t *out_sz)
{
OSSL_PARAM params[2];
+ int ret1 = 0, ret2 = 0;
if (key_name == NULL
|| pkey == NULL
params[0] = OSSL_PARAM_construct_octet_string(key_name, buf, max_buf_sz);
params[1] = OSSL_PARAM_construct_end();
- if (!EVP_PKEY_get_params(pkey, params)
- || !OSSL_PARAM_modified(params))
- return 0;
- if (out_sz != NULL)
+ if ((ret1 = EVP_PKEY_get_params(pkey, params)))
+ ret2 = OSSL_PARAM_modified(params);
+ if (ret2 && out_sz != NULL)
*out_sz = params[0].return_size;
- return 1;
+ return ret1 && ret2;
}
int EVP_PKEY_get_utf8_string_param(const EVP_PKEY *pkey, const char *key_name,
size_t *out_sz)
{
OSSL_PARAM params[2];
+ int ret1 = 0, ret2 = 0;
if (key_name == NULL)
return 0;
params[0] = OSSL_PARAM_construct_utf8_string(key_name, str, max_buf_sz);
params[1] = OSSL_PARAM_construct_end();
- if (!EVP_PKEY_get_params(pkey, params)
- || !OSSL_PARAM_modified(params))
- return 0;
- if (out_sz != NULL)
+ if ((ret1 = EVP_PKEY_get_params(pkey, params)))
+ ret2 = OSSL_PARAM_modified(params);
+ if (ret2 && out_sz != NULL)
*out_sz = params[0].return_size;
- return 1;
+ return ret1 && ret2;
}
int EVP_PKEY_get_int_param(const EVP_PKEY *pkey, const char *key_name,