summaryrefslogtreecommitdiff
path: root/test/evp_pkey_provided_test.c
diff options
context:
space:
mode:
authorRichard Levitte <levitte@openssl.org>2021-08-17 14:32:35 +0200
committerRichard Levitte <levitte@openssl.org>2021-08-18 17:05:57 +0200
commitd68820d95634322108316f3051a1746ead88adaf (patch)
tree6b8786f8091ef75c60f3826c53d9de3e402e7b5d /test/evp_pkey_provided_test.c
parent4e92d5c79d501d09a978fd896c715da07902d8b7 (diff)
downloadopenssl-new-d68820d95634322108316f3051a1746ead88adaf.tar.gz
Add tests for EVP_PKEY_get_utf8_string_param(), both positive and negative
Reviewed-by: Viktor Dukhovni <viktor@openssl.org> (Merged from https://github.com/openssl/openssl/pull/16334)
Diffstat (limited to 'test/evp_pkey_provided_test.c')
-rw-r--r--test/evp_pkey_provided_test.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/evp_pkey_provided_test.c b/test/evp_pkey_provided_test.c
index f075f40b0c..593f7090eb 100644
--- a/test/evp_pkey_provided_test.c
+++ b/test/evp_pkey_provided_test.c
@@ -526,6 +526,37 @@ static int test_fromdata_dh_named_group(void)
fromdata_params)))
goto err;
+ /*
+ * A few extra checks of EVP_PKEY_get_utf8_string_param() to see that
+ * it behaves as expected with regards to string length and terminating
+ * NUL byte.
+ */
+ if (!TEST_true(EVP_PKEY_get_utf8_string_param(pk,
+ OSSL_PKEY_PARAM_GROUP_NAME,
+ NULL, sizeof(name_out),
+ &len))
+ || !TEST_size_t_eq(len, sizeof(group_name) - 1)
+ /* Just enough space to hold the group name and a terminating NUL */
+ || !TEST_true(EVP_PKEY_get_utf8_string_param(pk,
+ OSSL_PKEY_PARAM_GROUP_NAME,
+ name_out,
+ sizeof(group_name),
+ &len))
+ || !TEST_size_t_eq(len, sizeof(group_name) - 1)
+ /* Too small buffer to hold the terminating NUL byte */
+ || !TEST_false(EVP_PKEY_get_utf8_string_param(pk,
+ OSSL_PKEY_PARAM_GROUP_NAME,
+ name_out,
+ sizeof(group_name) - 1,
+ &len))
+ /* Too small buffer to hold the whole group name, even! */
+ || !TEST_false(EVP_PKEY_get_utf8_string_param(pk,
+ OSSL_PKEY_PARAM_GROUP_NAME,
+ name_out,
+ sizeof(group_name) - 2,
+ &len)))
+ goto err;
+
while (dup_pk == NULL) {
ret = 0;
if (!TEST_int_eq(EVP_PKEY_get_bits(pk), 2048)