mirror of
https://github.com/QuasarApp/openssl.git
synced 2025-05-07 06:59:41 +00:00
Params: add argument to the _from_text calls to indicate if the param exists.
The extra argument is a integer pointer and is optional. Reviewed-by: Tomas Mraz <tmraz@fedoraproject.org> (Merged from https://github.com/openssl/openssl/pull/11049)
This commit is contained in:
parent
7b5108dff4
commit
2ee0dfa684
apps/lib
crypto
doc/man3
include/openssl
providers/fips
test
@ -2708,7 +2708,7 @@ OSSL_PARAM *app_params_new_from_opts(STACK_OF(OPENSSL_STRING) *opts,
|
||||
/* Skip over the separator so that vmtp points to the value */
|
||||
vtmp++;
|
||||
if (!OSSL_PARAM_allocate_from_text(¶ms[params_n], paramdefs,
|
||||
stmp, vtmp, strlen(vtmp)))
|
||||
stmp, vtmp, strlen(vtmp), NULL))
|
||||
goto err;
|
||||
OPENSSL_free(stmp);
|
||||
}
|
||||
|
@ -224,7 +224,7 @@ static int pkey_kdf_ctrl_str(EVP_PKEY_CTX *ctx, const char *type,
|
||||
type = OSSL_KDF_PARAM_SCRYPT_N;
|
||||
|
||||
if (!OSSL_PARAM_allocate_from_text(¶ms[0], defs, type,
|
||||
value, strlen(value)))
|
||||
value, strlen(value), NULL))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
|
@ -453,7 +453,7 @@ static int pkey_mac_ctrl_str(EVP_PKEY_CTX *ctx,
|
||||
|
||||
if (!OSSL_PARAM_allocate_from_text(¶ms[0],
|
||||
EVP_MAC_settable_ctx_params(mac),
|
||||
type, value, strlen(value) + 1))
|
||||
type, value, strlen(value) + 1, NULL))
|
||||
return 0;
|
||||
params[1] = OSSL_PARAM_construct_end();
|
||||
ok = EVP_MAC_CTX_set_params(hctx->ctx, params);
|
||||
|
@ -940,7 +940,7 @@ static int legacy_ctrl_str_to_param(EVP_PKEY_CTX *ctx, const char *name,
|
||||
int rv = 0;
|
||||
|
||||
if (!OSSL_PARAM_allocate_from_text(¶ms[0], settable, name, value,
|
||||
strlen(value)))
|
||||
strlen(value), NULL))
|
||||
return 0;
|
||||
if (EVP_PKEY_CTX_set_params(ctx, params))
|
||||
rv = 1;
|
||||
|
@ -24,7 +24,7 @@ static int prepare_from_text(const OSSL_PARAM *paramdefs, const char *key,
|
||||
const char *value, size_t value_n,
|
||||
/* Output parameters */
|
||||
const OSSL_PARAM **paramdef, int *ishex,
|
||||
size_t *buf_n, BIGNUM **tmpbn)
|
||||
size_t *buf_n, BIGNUM **tmpbn, int *found)
|
||||
{
|
||||
const OSSL_PARAM *p;
|
||||
|
||||
@ -38,6 +38,8 @@ static int prepare_from_text(const OSSL_PARAM *paramdefs, const char *key,
|
||||
key += 3;
|
||||
|
||||
p = *paramdef = OSSL_PARAM_locate_const(paramdefs, key);
|
||||
if (found != NULL)
|
||||
*found = p != NULL;
|
||||
if (p == NULL)
|
||||
return 0;
|
||||
|
||||
@ -163,7 +165,7 @@ static int construct_from_text(OSSL_PARAM *to, const OSSL_PARAM *paramdef,
|
||||
int OSSL_PARAM_allocate_from_text(OSSL_PARAM *to,
|
||||
const OSSL_PARAM *paramdefs,
|
||||
const char *key, const char *value,
|
||||
size_t value_n)
|
||||
size_t value_n, int *found)
|
||||
{
|
||||
const OSSL_PARAM *paramdef = NULL;
|
||||
int ishex = 0;
|
||||
@ -176,7 +178,7 @@ int OSSL_PARAM_allocate_from_text(OSSL_PARAM *to,
|
||||
return 0;
|
||||
|
||||
if (!prepare_from_text(paramdefs, key, value, value_n,
|
||||
¶mdef, &ishex, &buf_n, &tmpbn))
|
||||
¶mdef, &ishex, &buf_n, &tmpbn, found))
|
||||
return 0;
|
||||
|
||||
if ((buf = OPENSSL_zalloc(buf_n > 0 ? buf_n : 1)) == NULL) {
|
||||
|
@ -12,7 +12,8 @@ OSSL_PARAM_allocate_from_text
|
||||
int OSSL_PARAM_allocate_from_text(OSSL_PARAM *to,
|
||||
const OSSL_PARAM *paramdefs,
|
||||
const char *key, const char *value,
|
||||
size_t value_n);
|
||||
size_t value_n,
|
||||
int *found);
|
||||
|
||||
=head1 DESCRIPTION
|
||||
|
||||
@ -37,6 +38,9 @@ left untouched, allowing a caller to find out how large the buffer
|
||||
should be.
|
||||
I<buf> needs to be correctly aligned for the type of the B<OSSL_PARAM>
|
||||
I<key>.
|
||||
If <found> is not NULL, it is set to 1 if the parameter can be located and
|
||||
to 0 otherwise.
|
||||
|
||||
The caller must remember to free the data of I<to> when it's not
|
||||
useful any more.
|
||||
|
||||
@ -127,7 +131,7 @@ Can be written like this instead:
|
||||
*vtmp++ = '\0';
|
||||
if (!OSSL_PARAM_allocate_from_text(¶ms[params_n],
|
||||
paramdefs, stmp,
|
||||
vtmp, strlen(vtmp)))
|
||||
vtmp, strlen(vtmp), NULL))
|
||||
goto err;
|
||||
}
|
||||
params[params_n] = OSSL_PARAM_construct_end();
|
||||
|
@ -92,7 +92,7 @@ OSSL_PARAM OSSL_PARAM_construct_end(void);
|
||||
int OSSL_PARAM_allocate_from_text(OSSL_PARAM *to,
|
||||
const OSSL_PARAM *paramdefs,
|
||||
const char *key, const char *value,
|
||||
size_t value_n);
|
||||
size_t value_n, int *found);
|
||||
|
||||
int OSSL_PARAM_get_int(const OSSL_PARAM *p, int *val);
|
||||
int OSSL_PARAM_get_uint(const OSSL_PARAM *p, unsigned int *val);
|
||||
|
@ -167,7 +167,7 @@ static int self_test_kdf(const ST_KAT_KDF *t, OSSL_ST_EVENT *event,
|
||||
if (!OSSL_PARAM_allocate_from_text(¶ms[i], settables,
|
||||
t->ctrls[i].name,
|
||||
t->ctrls[i].value,
|
||||
strlen(t->ctrls[i].value)))
|
||||
strlen(t->ctrls[i].value), NULL))
|
||||
goto end;
|
||||
}
|
||||
if (!EVP_KDF_CTX_set_params(ctx, params))
|
||||
|
@ -1310,7 +1310,7 @@ static int mac_test_run_mac(EVP_TEST *t)
|
||||
|| !OSSL_PARAM_allocate_from_text(¶ms[params_n],
|
||||
defined_params,
|
||||
tmpkey, tmpval,
|
||||
strlen(tmpval))) {
|
||||
strlen(tmpval), NULL)) {
|
||||
OPENSSL_free(tmpkey);
|
||||
t->err = "MAC_PARAM_ERROR";
|
||||
goto err;
|
||||
@ -2129,7 +2129,7 @@ static int kdf_test_ctrl(EVP_TEST *t, EVP_KDF_CTX *kctx,
|
||||
*p++ = '\0';
|
||||
|
||||
rv = OSSL_PARAM_allocate_from_text(kdata->p, defs, name, p,
|
||||
p != NULL ? strlen(p) : 0);
|
||||
p != NULL ? strlen(p) : 0, NULL);
|
||||
*++kdata->p = OSSL_PARAM_construct_end();
|
||||
if (!rv) {
|
||||
t->err = "KDF_PARAM_ERROR";
|
||||
|
Loading…
x
Reference in New Issue
Block a user