mirror of
https://github.com/QuasarApp/openssl.git
synced 2025-05-12 17:39:41 +00:00
params: add OSSL_PARAM helpers for time_t.
POSIX mandates that time_t is a signed integer but it doesn't specify the lenght. Having wrappers lets uses ignore this. Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com> (Merged from https://github.com/openssl/openssl/pull/11682)
This commit is contained in:
parent
f3a2570794
commit
5fdaa38feb
@ -190,6 +190,13 @@ int OSSL_PARAM_BLD_push_size_t(OSSL_PARAM_BLD *bld, const char *key,
|
|||||||
OSSL_PARAM_UNSIGNED_INTEGER);
|
OSSL_PARAM_UNSIGNED_INTEGER);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int OSSL_PARAM_BLD_push_time_t(OSSL_PARAM_BLD *bld, const char *key,
|
||||||
|
time_t num)
|
||||||
|
{
|
||||||
|
return param_push_num(bld, key, &num, sizeof(num),
|
||||||
|
OSSL_PARAM_INTEGER);
|
||||||
|
}
|
||||||
|
|
||||||
int OSSL_PARAM_BLD_push_double(OSSL_PARAM_BLD *bld, const char *key,
|
int OSSL_PARAM_BLD_push_double(OSSL_PARAM_BLD *bld, const char *key,
|
||||||
double num)
|
double num)
|
||||||
{
|
{
|
||||||
|
@ -617,6 +617,33 @@ OSSL_PARAM OSSL_PARAM_construct_size_t(const char *key, size_t *buf)
|
|||||||
sizeof(size_t));
|
sizeof(size_t));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int OSSL_PARAM_get_time_t(const OSSL_PARAM *p, time_t *val)
|
||||||
|
{
|
||||||
|
switch (sizeof(time_t)) {
|
||||||
|
case sizeof(int32_t):
|
||||||
|
return OSSL_PARAM_get_int32(p, (int32_t *)val);
|
||||||
|
case sizeof(int64_t):
|
||||||
|
return OSSL_PARAM_get_int64(p, (int64_t *)val);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int OSSL_PARAM_set_time_t(OSSL_PARAM *p, time_t val)
|
||||||
|
{
|
||||||
|
switch (sizeof(time_t)) {
|
||||||
|
case sizeof(int32_t):
|
||||||
|
return OSSL_PARAM_set_int32(p, (int32_t)val);
|
||||||
|
case sizeof(int64_t):
|
||||||
|
return OSSL_PARAM_set_int64(p, (int64_t)val);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
OSSL_PARAM OSSL_PARAM_construct_time_t(const char *key, time_t *buf)
|
||||||
|
{
|
||||||
|
return ossl_param_construct(key, OSSL_PARAM_INTEGER, buf, sizeof(time_t));
|
||||||
|
}
|
||||||
|
|
||||||
int OSSL_PARAM_get_BN(const OSSL_PARAM *p, BIGNUM **val)
|
int OSSL_PARAM_get_BN(const OSSL_PARAM *p, BIGNUM **val)
|
||||||
{
|
{
|
||||||
BIGNUM *b;
|
BIGNUM *b;
|
||||||
|
@ -3,13 +3,13 @@
|
|||||||
=head1 NAME
|
=head1 NAME
|
||||||
|
|
||||||
OSSL_PARAM_double, OSSL_PARAM_int, OSSL_PARAM_int32, OSSL_PARAM_int64,
|
OSSL_PARAM_double, OSSL_PARAM_int, OSSL_PARAM_int32, OSSL_PARAM_int64,
|
||||||
OSSL_PARAM_long, OSSL_PARAM_size_t, OSSL_PARAM_uint, OSSL_PARAM_uint32,
|
OSSL_PARAM_long, OSSL_PARAM_size_t, OSSL_PARAM_time_t, OSSL_PARAM_uint, OSSL_PARAM_uint32,
|
||||||
OSSL_PARAM_uint64, OSSL_PARAM_ulong, OSSL_PARAM_BN, OSSL_PARAM_utf8_string,
|
OSSL_PARAM_uint64, OSSL_PARAM_ulong, OSSL_PARAM_BN, OSSL_PARAM_utf8_string,
|
||||||
OSSL_PARAM_octet_string, OSSL_PARAM_utf8_ptr, OSSL_PARAM_octet_ptr,
|
OSSL_PARAM_octet_string, OSSL_PARAM_utf8_ptr, OSSL_PARAM_octet_ptr,
|
||||||
OSSL_PARAM_END,
|
OSSL_PARAM_END,
|
||||||
OSSL_PARAM_construct_double, OSSL_PARAM_construct_int,
|
OSSL_PARAM_construct_double, OSSL_PARAM_construct_int,
|
||||||
OSSL_PARAM_construct_int32, OSSL_PARAM_construct_int64,
|
OSSL_PARAM_construct_int32, OSSL_PARAM_construct_int64,
|
||||||
OSSL_PARAM_construct_long, OSSL_PARAM_construct_size_t,
|
OSSL_PARAM_construct_long, OSSL_PARAM_construct_size_t, OSSL_PARAM_construct_time_t,
|
||||||
OSSL_PARAM_construct_uint, OSSL_PARAM_construct_uint32,
|
OSSL_PARAM_construct_uint, OSSL_PARAM_construct_uint32,
|
||||||
OSSL_PARAM_construct_uint64, OSSL_PARAM_construct_ulong,
|
OSSL_PARAM_construct_uint64, OSSL_PARAM_construct_ulong,
|
||||||
OSSL_PARAM_construct_BN, OSSL_PARAM_construct_utf8_string,
|
OSSL_PARAM_construct_BN, OSSL_PARAM_construct_utf8_string,
|
||||||
@ -17,13 +17,13 @@ OSSL_PARAM_construct_utf8_ptr, OSSL_PARAM_construct_octet_string,
|
|||||||
OSSL_PARAM_construct_octet_ptr, OSSL_PARAM_construct_end,
|
OSSL_PARAM_construct_octet_ptr, OSSL_PARAM_construct_end,
|
||||||
OSSL_PARAM_locate, OSSL_PARAM_locate_const,
|
OSSL_PARAM_locate, OSSL_PARAM_locate_const,
|
||||||
OSSL_PARAM_get_double, OSSL_PARAM_get_int, OSSL_PARAM_get_int32,
|
OSSL_PARAM_get_double, OSSL_PARAM_get_int, OSSL_PARAM_get_int32,
|
||||||
OSSL_PARAM_get_int64, OSSL_PARAM_get_long, OSSL_PARAM_get_size_t,
|
OSSL_PARAM_get_int64, OSSL_PARAM_get_long, OSSL_PARAM_get_size_t, OSSL_PARAM_get_time_t,
|
||||||
OSSL_PARAM_get_uint, OSSL_PARAM_get_uint32, OSSL_PARAM_get_uint64,
|
OSSL_PARAM_get_uint, OSSL_PARAM_get_uint32, OSSL_PARAM_get_uint64,
|
||||||
OSSL_PARAM_get_ulong, OSSL_PARAM_get_BN, OSSL_PARAM_get_utf8_string,
|
OSSL_PARAM_get_ulong, OSSL_PARAM_get_BN, OSSL_PARAM_get_utf8_string,
|
||||||
OSSL_PARAM_get_octet_string, OSSL_PARAM_get_utf8_ptr,
|
OSSL_PARAM_get_octet_string, OSSL_PARAM_get_utf8_ptr,
|
||||||
OSSL_PARAM_get_octet_ptr,
|
OSSL_PARAM_get_octet_ptr,
|
||||||
OSSL_PARAM_set_double, OSSL_PARAM_set_int, OSSL_PARAM_set_int32,
|
OSSL_PARAM_set_double, OSSL_PARAM_set_int, OSSL_PARAM_set_int32,
|
||||||
OSSL_PARAM_set_int64, OSSL_PARAM_set_long, OSSL_PARAM_set_size_t,
|
OSSL_PARAM_set_int64, OSSL_PARAM_set_long, OSSL_PARAM_set_size_t, OSSL_PARAM_set_time_t,
|
||||||
OSSL_PARAM_set_uint, OSSL_PARAM_set_uint32, OSSL_PARAM_set_uint64,
|
OSSL_PARAM_set_uint, OSSL_PARAM_set_uint32, OSSL_PARAM_set_uint64,
|
||||||
OSSL_PARAM_set_ulong, OSSL_PARAM_set_BN, OSSL_PARAM_set_utf8_string,
|
OSSL_PARAM_set_ulong, OSSL_PARAM_set_BN, OSSL_PARAM_set_utf8_string,
|
||||||
OSSL_PARAM_set_octet_string, OSSL_PARAM_set_utf8_ptr,
|
OSSL_PARAM_set_octet_string, OSSL_PARAM_set_utf8_ptr,
|
||||||
@ -39,9 +39,9 @@ OSSL_PARAM_UNMODIFIED, OSSL_PARAM_modified, OSSL_PARAM_set_all_unmodified
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* TYPE in function names is one of:
|
* TYPE in function names is one of:
|
||||||
* double, int, int32, int64, long, size_t, uint, uint32, uint64, ulong
|
* double, int, int32, int64, long, size_t, time_t, uint, uint32, uint64, ulong
|
||||||
* Corresponding TYPE in function arguments is one of:
|
* Corresponding TYPE in function arguments is one of:
|
||||||
* double, int, int32_t, int64_t, long, size_t, unsigned int, uint32_t,
|
* double, int, int32_t, int64_t, long, size_t, time_t, unsigned int, uint32_t,
|
||||||
* uint64_t, unsigned long
|
* uint64_t, unsigned long
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -126,6 +126,10 @@ long int (long)
|
|||||||
|
|
||||||
=item *
|
=item *
|
||||||
|
|
||||||
|
time_t
|
||||||
|
|
||||||
|
=item *
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
|
|
||||||
=item *
|
=item *
|
||||||
|
@ -33,6 +33,8 @@ int OSSL_PARAM_BLD_push_uint64(OSSL_PARAM_BLD *bld, const char *key,
|
|||||||
uint64_t val);
|
uint64_t val);
|
||||||
int OSSL_PARAM_BLD_push_size_t(OSSL_PARAM_BLD *bld, const char *key,
|
int OSSL_PARAM_BLD_push_size_t(OSSL_PARAM_BLD *bld, const char *key,
|
||||||
size_t val);
|
size_t val);
|
||||||
|
int OSSL_PARAM_BLD_push_time_t(OSSL_PARAM_BLD *bld, const char *key,
|
||||||
|
time_t val);
|
||||||
int OSSL_PARAM_BLD_push_double(OSSL_PARAM_BLD *bld, const char *key,
|
int OSSL_PARAM_BLD_push_double(OSSL_PARAM_BLD *bld, const char *key,
|
||||||
double val);
|
double val);
|
||||||
int OSSL_PARAM_BLD_push_BN(OSSL_PARAM_BLD *bld, const char *key,
|
int OSSL_PARAM_BLD_push_BN(OSSL_PARAM_BLD *bld, const char *key,
|
||||||
|
@ -49,6 +49,8 @@ extern "C" {
|
|||||||
sizeof(uint64_t))
|
sizeof(uint64_t))
|
||||||
# define OSSL_PARAM_size_t(key, addr) \
|
# define OSSL_PARAM_size_t(key, addr) \
|
||||||
OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), sizeof(size_t))
|
OSSL_PARAM_DEFN((key), OSSL_PARAM_UNSIGNED_INTEGER, (addr), sizeof(size_t))
|
||||||
|
# define OSSL_PARAM_time_t(key, addr) \
|
||||||
|
OSSL_PARAM_DEFN((key), OSSL_PARAM_INTEGER, (addr), sizeof(time_t))
|
||||||
# define OSSL_PARAM_double(key, addr) \
|
# define OSSL_PARAM_double(key, addr) \
|
||||||
OSSL_PARAM_DEFN((key), OSSL_PARAM_REAL, (addr), sizeof(double))
|
OSSL_PARAM_DEFN((key), OSSL_PARAM_REAL, (addr), sizeof(double))
|
||||||
|
|
||||||
@ -78,6 +80,7 @@ OSSL_PARAM OSSL_PARAM_construct_uint32(const char *key, uint32_t *buf);
|
|||||||
OSSL_PARAM OSSL_PARAM_construct_int64(const char *key, int64_t *buf);
|
OSSL_PARAM OSSL_PARAM_construct_int64(const char *key, int64_t *buf);
|
||||||
OSSL_PARAM OSSL_PARAM_construct_uint64(const char *key, uint64_t *buf);
|
OSSL_PARAM OSSL_PARAM_construct_uint64(const char *key, uint64_t *buf);
|
||||||
OSSL_PARAM OSSL_PARAM_construct_size_t(const char *key, size_t *buf);
|
OSSL_PARAM OSSL_PARAM_construct_size_t(const char *key, size_t *buf);
|
||||||
|
OSSL_PARAM OSSL_PARAM_construct_time_t(const char *key, time_t *buf);
|
||||||
OSSL_PARAM OSSL_PARAM_construct_BN(const char *key, unsigned char *buf,
|
OSSL_PARAM OSSL_PARAM_construct_BN(const char *key, unsigned char *buf,
|
||||||
size_t bsize);
|
size_t bsize);
|
||||||
OSSL_PARAM OSSL_PARAM_construct_double(const char *key, double *buf);
|
OSSL_PARAM OSSL_PARAM_construct_double(const char *key, double *buf);
|
||||||
@ -105,6 +108,7 @@ int OSSL_PARAM_get_uint32(const OSSL_PARAM *p, uint32_t *val);
|
|||||||
int OSSL_PARAM_get_int64(const OSSL_PARAM *p, int64_t *val);
|
int OSSL_PARAM_get_int64(const OSSL_PARAM *p, int64_t *val);
|
||||||
int OSSL_PARAM_get_uint64(const OSSL_PARAM *p, uint64_t *val);
|
int OSSL_PARAM_get_uint64(const OSSL_PARAM *p, uint64_t *val);
|
||||||
int OSSL_PARAM_get_size_t(const OSSL_PARAM *p, size_t *val);
|
int OSSL_PARAM_get_size_t(const OSSL_PARAM *p, size_t *val);
|
||||||
|
int OSSL_PARAM_get_time_t(const OSSL_PARAM *p, time_t *val);
|
||||||
|
|
||||||
int OSSL_PARAM_set_int(OSSL_PARAM *p, int val);
|
int OSSL_PARAM_set_int(OSSL_PARAM *p, int val);
|
||||||
int OSSL_PARAM_set_uint(OSSL_PARAM *p, unsigned int val);
|
int OSSL_PARAM_set_uint(OSSL_PARAM *p, unsigned int val);
|
||||||
@ -115,6 +119,7 @@ int OSSL_PARAM_set_uint32(OSSL_PARAM *p, uint32_t val);
|
|||||||
int OSSL_PARAM_set_int64(OSSL_PARAM *p, int64_t val);
|
int OSSL_PARAM_set_int64(OSSL_PARAM *p, int64_t val);
|
||||||
int OSSL_PARAM_set_uint64(OSSL_PARAM *p, uint64_t val);
|
int OSSL_PARAM_set_uint64(OSSL_PARAM *p, uint64_t val);
|
||||||
int OSSL_PARAM_set_size_t(OSSL_PARAM *p, size_t val);
|
int OSSL_PARAM_set_size_t(OSSL_PARAM *p, size_t val);
|
||||||
|
int OSSL_PARAM_set_time_t(OSSL_PARAM *p, time_t val);
|
||||||
|
|
||||||
int OSSL_PARAM_get_double(const OSSL_PARAM *p, double *val);
|
int OSSL_PARAM_get_double(const OSSL_PARAM *p, double *val);
|
||||||
int OSSL_PARAM_set_double(OSSL_PARAM *p, double val);
|
int OSSL_PARAM_set_double(OSSL_PARAM *p, double val);
|
||||||
|
@ -24,6 +24,7 @@ static int template_public_test(void)
|
|||||||
int32_t i32;
|
int32_t i32;
|
||||||
int64_t i64;
|
int64_t i64;
|
||||||
double d;
|
double d;
|
||||||
|
time_t t;
|
||||||
char *utf = NULL;
|
char *utf = NULL;
|
||||||
const char *cutf;
|
const char *cutf;
|
||||||
int res = 0;
|
int res = 0;
|
||||||
@ -33,6 +34,7 @@ static int template_public_test(void)
|
|||||||
|| !TEST_true(OSSL_PARAM_BLD_push_long(bld, "l", 42))
|
|| !TEST_true(OSSL_PARAM_BLD_push_long(bld, "l", 42))
|
||||||
|| !TEST_true(OSSL_PARAM_BLD_push_int32(bld, "i32", 1532))
|
|| !TEST_true(OSSL_PARAM_BLD_push_int32(bld, "i32", 1532))
|
||||||
|| !TEST_true(OSSL_PARAM_BLD_push_int64(bld, "i64", -9999999))
|
|| !TEST_true(OSSL_PARAM_BLD_push_int64(bld, "i64", -9999999))
|
||||||
|
|| !TEST_true(OSSL_PARAM_BLD_push_time_t(bld, "t", 11224))
|
||||||
|| !TEST_true(OSSL_PARAM_BLD_push_double(bld, "d", 1.61803398875))
|
|| !TEST_true(OSSL_PARAM_BLD_push_double(bld, "d", 1.61803398875))
|
||||||
|| !TEST_ptr(bn = BN_new())
|
|| !TEST_ptr(bn = BN_new())
|
||||||
|| !TEST_true(BN_set_word(bn, 1729))
|
|| !TEST_true(BN_set_word(bn, 1729))
|
||||||
@ -70,6 +72,13 @@ static int template_public_test(void)
|
|||||||
|| !TEST_size_t_eq(p->data_size, sizeof(long int))
|
|| !TEST_size_t_eq(p->data_size, sizeof(long int))
|
||||||
|| !TEST_true(OSSL_PARAM_get_long(p, &l))
|
|| !TEST_true(OSSL_PARAM_get_long(p, &l))
|
||||||
|| !TEST_long_eq(l, 42)
|
|| !TEST_long_eq(l, 42)
|
||||||
|
/* Check time_t */
|
||||||
|
|| !TEST_ptr(p = OSSL_PARAM_locate(params, "t"))
|
||||||
|
|| !TEST_str_eq(p->key, "t")
|
||||||
|
|| !TEST_uint_eq(p->data_type, OSSL_PARAM_INTEGER)
|
||||||
|
|| !TEST_size_t_eq(p->data_size, sizeof(time_t))
|
||||||
|
|| !TEST_true(OSSL_PARAM_get_time_t(p, &t))
|
||||||
|
|| !TEST_time_t_eq(t, 11224)
|
||||||
/* Check double */
|
/* Check double */
|
||||||
|| !TEST_ptr(p = OSSL_PARAM_locate(params, "d"))
|
|| !TEST_ptr(p = OSSL_PARAM_locate(params, "d"))
|
||||||
|| !TEST_true(OSSL_PARAM_get_double(p, &d))
|
|| !TEST_true(OSSL_PARAM_get_double(p, &d))
|
||||||
|
@ -379,6 +379,33 @@ static int test_param_size_t(int n)
|
|||||||
return test_param_type_extra(¶m, raw_values[n].value, sizeof(size_t));
|
return test_param_type_extra(¶m, raw_values[n].value, sizeof(size_t));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int test_param_time_t(int n)
|
||||||
|
{
|
||||||
|
time_t in, out;
|
||||||
|
unsigned char buf[MAX_LEN], cmp[sizeof(size_t)];
|
||||||
|
const size_t len = raw_values[n].len >= sizeof(size_t)
|
||||||
|
? sizeof(time_t) : raw_values[n].len;
|
||||||
|
OSSL_PARAM param = OSSL_PARAM_time_t("a", NULL);
|
||||||
|
|
||||||
|
memset(buf, 0, sizeof(buf));
|
||||||
|
le_copy(buf, raw_values[n].value, sizeof(in));
|
||||||
|
memcpy(&in, buf, sizeof(in));
|
||||||
|
param.data = &out;
|
||||||
|
if (!TEST_true(OSSL_PARAM_set_time_t(¶m, in)))
|
||||||
|
return 0;
|
||||||
|
le_copy(cmp, &out, sizeof(out));
|
||||||
|
if (!TEST_mem_eq(cmp, len, raw_values[n].value, len))
|
||||||
|
return 0;
|
||||||
|
in = 0;
|
||||||
|
if (!TEST_true(OSSL_PARAM_get_time_t(¶m, &in)))
|
||||||
|
return 0;
|
||||||
|
le_copy(cmp, &in, sizeof(in));
|
||||||
|
if (!TEST_mem_eq(cmp, sizeof(in), raw_values[n].value, sizeof(in)))
|
||||||
|
return 0;
|
||||||
|
param.data = &out;
|
||||||
|
return test_param_type_extra(¶m, raw_values[n].value, sizeof(size_t));
|
||||||
|
}
|
||||||
|
|
||||||
static int test_param_bignum(int n)
|
static int test_param_bignum(int n)
|
||||||
{
|
{
|
||||||
unsigned char buf[MAX_LEN], bnbuf[MAX_LEN];
|
unsigned char buf[MAX_LEN], bnbuf[MAX_LEN];
|
||||||
@ -608,6 +635,7 @@ int setup_tests(void)
|
|||||||
ADD_ALL_TESTS(test_param_int32, OSSL_NELEM(raw_values));
|
ADD_ALL_TESTS(test_param_int32, OSSL_NELEM(raw_values));
|
||||||
ADD_ALL_TESTS(test_param_uint32, OSSL_NELEM(raw_values));
|
ADD_ALL_TESTS(test_param_uint32, OSSL_NELEM(raw_values));
|
||||||
ADD_ALL_TESTS(test_param_size_t, OSSL_NELEM(raw_values));
|
ADD_ALL_TESTS(test_param_size_t, OSSL_NELEM(raw_values));
|
||||||
|
ADD_ALL_TESTS(test_param_time_t, OSSL_NELEM(raw_values));
|
||||||
ADD_ALL_TESTS(test_param_int64, OSSL_NELEM(raw_values));
|
ADD_ALL_TESTS(test_param_int64, OSSL_NELEM(raw_values));
|
||||||
ADD_ALL_TESTS(test_param_uint64, OSSL_NELEM(raw_values));
|
ADD_ALL_TESTS(test_param_uint64, OSSL_NELEM(raw_values));
|
||||||
ADD_ALL_TESTS(test_param_bignum, OSSL_NELEM(raw_values));
|
ADD_ALL_TESTS(test_param_bignum, OSSL_NELEM(raw_values));
|
||||||
|
@ -5114,6 +5114,10 @@ EVP_default_properties_is_fips_enabled ? 3_0_0 EXIST::FUNCTION:
|
|||||||
EVP_default_properties_enable_fips ? 3_0_0 EXIST::FUNCTION:
|
EVP_default_properties_enable_fips ? 3_0_0 EXIST::FUNCTION:
|
||||||
EVP_PKEY_new_raw_private_key_with_libctx ? 3_0_0 EXIST::FUNCTION:
|
EVP_PKEY_new_raw_private_key_with_libctx ? 3_0_0 EXIST::FUNCTION:
|
||||||
EVP_PKEY_new_raw_public_key_with_libctx ? 3_0_0 EXIST::FUNCTION:
|
EVP_PKEY_new_raw_public_key_with_libctx ? 3_0_0 EXIST::FUNCTION:
|
||||||
|
OSSL_PARAM_BLD_push_time_t ? 3_0_0 EXIST::FUNCTION:
|
||||||
|
OSSL_PARAM_construct_time_t ? 3_0_0 EXIST::FUNCTION:
|
||||||
|
OSSL_PARAM_get_time_t ? 3_0_0 EXIST::FUNCTION:
|
||||||
|
OSSL_PARAM_set_time_t ? 3_0_0 EXIST::FUNCTION:
|
||||||
OSSL_STORE_attach ? 3_0_0 EXIST::FUNCTION:
|
OSSL_STORE_attach ? 3_0_0 EXIST::FUNCTION:
|
||||||
OSSL_STORE_LOADER_set_attach ? 3_0_0 EXIST::FUNCTION:
|
OSSL_STORE_LOADER_set_attach ? 3_0_0 EXIST::FUNCTION:
|
||||||
EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen ? 3_0_0 EXIST::FUNCTION:RSA
|
EVP_PKEY_CTX_set_rsa_pss_keygen_saltlen ? 3_0_0 EXIST::FUNCTION:RSA
|
||||||
|
Loading…
x
Reference in New Issue
Block a user