summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2020-04-27 17:17:05 +0100
committerMatt Caswell <matt@openssl.org>2020-05-04 09:30:55 +0100
commit86dc26baf65dd2ba83beff80ce37d05a3f6c33b0 (patch)
tree3393145b83396a44f86cd25d089be67266e5552b
parent2b1bc78acc0d7ef3a10ca0cb3d2280375032d137 (diff)
Add some tests for the newly added raw private/public key functions
We already had soem tests for the older raw private/public key functions so we expand those to call the new versions as well and pass in a libctx. Reviewed-by: Shane Lontis <shane.lontis@oracle.com> (Merged from https://github.com/openssl/openssl/pull/11635)
-rw-r--r--test/evp_extra_test.c53
1 files changed, 42 insertions, 11 deletions
diff --git a/test/evp_extra_test.c b/test/evp_extra_test.c
index b7e23a162e..9deae29c47 100644
--- a/test/evp_extra_test.c
+++ b/test/evp_extra_test.c
@@ -29,6 +29,8 @@
#include "internal/sizes.h"
#include "crypto/evp.h"
+static OPENSSL_CTX *testctx = NULL;
+
/*
* kExampleRSAKeyDER is an RSA private key in ASN.1, DER format. Of course, you
* should never use this key anywhere but in an example.
@@ -1005,7 +1007,7 @@ static struct keys_st {
#endif
};
-static int test_set_get_raw_keys_int(int tst, int pub)
+static int test_set_get_raw_keys_int(int tst, int pub, int uselibctx)
{
int ret = 0;
unsigned char buf[80];
@@ -1022,17 +1024,34 @@ static int test_set_get_raw_keys_int(int tst, int pub)
if (pub) {
inlen = strlen(keys[tst].pub);
in = (unsigned char *)keys[tst].pub;
- pkey = EVP_PKEY_new_raw_public_key(keys[tst].type,
- NULL,
- in,
- inlen);
+ if (uselibctx) {
+ pkey = EVP_PKEY_new_raw_public_key_with_libctx(
+ testctx,
+ OBJ_nid2sn(keys[tst].type),
+ NULL,
+ in,
+ inlen);
+ } else {
+ pkey = EVP_PKEY_new_raw_public_key(keys[tst].type,
+ NULL,
+ in,
+ inlen);
+ }
} else {
inlen = strlen(keys[tst].priv);
in = (unsigned char *)keys[tst].priv;
- pkey = EVP_PKEY_new_raw_private_key(keys[tst].type,
- NULL,
- in,
- inlen);
+ if (uselibctx) {
+ pkey = EVP_PKEY_new_raw_private_key_with_libctx(
+ testctx, OBJ_nid2sn(keys[tst].type),
+ NULL,
+ in,
+ inlen);
+ } else {
+ pkey = EVP_PKEY_new_raw_private_key(keys[tst].type,
+ NULL,
+ in,
+ inlen);
+ }
}
if (!TEST_ptr(pkey)
@@ -1052,8 +1071,10 @@ static int test_set_get_raw_keys_int(int tst, int pub)
static int test_set_get_raw_keys(int tst)
{
- return test_set_get_raw_keys_int(tst, 0)
- && test_set_get_raw_keys_int(tst, 1);
+ return test_set_get_raw_keys_int(tst, 0, 0)
+ && test_set_get_raw_keys_int(tst, 0, 1)
+ && test_set_get_raw_keys_int(tst, 1, 0)
+ && test_set_get_raw_keys_int(tst, 1, 1);
}
static int pkey_custom_check(EVP_PKEY *pkey)
@@ -1583,6 +1604,11 @@ static int test_keygen_with_empty_template(int n)
int setup_tests(void)
{
+ testctx = OPENSSL_CTX_new();
+
+ if (!TEST_ptr(testctx))
+ return 0;
+
ADD_ALL_TESTS(test_EVP_DigestSignInit, 9);
ADD_TEST(test_EVP_DigestVerifyInit);
ADD_TEST(test_EVP_Enveloped);
@@ -1624,3 +1650,8 @@ int setup_tests(void)
return 1;
}
+
+void cleanup_tests(void)
+{
+ OPENSSL_CTX_free(testctx);
+}