0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f
};
- pkey = EVP_PKEY_new_raw_private_key(EVP_PKEY_HMAC, NULL, key, sizeof(key));
+ pkey = EVP_PKEY_new_raw_private_key_ex(testctx, "HMAC",
+ NULL, key, sizeof(key));
if (!TEST_ptr(pkey))
return NULL;
if (!test_fromdata(keytype, params))
goto err;
OSSL_PARAM_free(params);
+ params = NULL;
OSSL_PARAM_BLD_free(bld);
/* Test priv and !pub */
if (!test_fromdata(keytype, params))
goto err;
OSSL_PARAM_free(params);
+ params = NULL;
OSSL_PARAM_BLD_free(bld);
/* Test !priv and pub */
if (!test_fromdata(keytype, params))
goto err;
OSSL_PARAM_free(params);
+ params = NULL;
OSSL_PARAM_BLD_free(bld);
/* Test priv and pub */
if (!test_fromdata("EC", params))
goto err;
OSSL_PARAM_free(params);
+ params = NULL;
OSSL_PARAM_BLD_free(bld);
/* Test priv and !pub */
if (!test_fromdata("EC", params))
goto err;
OSSL_PARAM_free(params);
+ params = NULL;
OSSL_PARAM_BLD_free(bld);
/* Test !priv and pub */
if (!test_fromdata("EC", params))
goto err;
OSSL_PARAM_free(params);
+ params = NULL;
OSSL_PARAM_BLD_free(bld);
/* Test priv and pub */
return ret;
}
+
#endif
+static int test_EVP_PKCS82PKEY_wrong_tag(void)
+{
+ EVP_PKEY *pkey = NULL;
+ EVP_PKEY *pkey2 = NULL;
+ BIO *membio = NULL;
+ char *membuf = NULL;
+ PKCS8_PRIV_KEY_INFO *p8inf = NULL;
+ int ok = 0;
+
+ if (testctx != NULL)
+ /* test not supported with non-default context */
+ return 1;
+
+ if (!TEST_ptr(membio = BIO_new(BIO_s_mem()))
+ || !TEST_ptr(pkey = load_example_rsa_key())
+ || !TEST_int_gt(i2d_PKCS8PrivateKey_bio(membio, pkey, NULL,
+ NULL, 0, NULL, NULL),
+ 0)
+ || !TEST_int_gt(BIO_get_mem_data(membio, &membuf), 0)
+ || !TEST_ptr(p8inf = d2i_PKCS8_PRIV_KEY_INFO_bio(membio, NULL))
+ || !TEST_ptr(pkey2 = EVP_PKCS82PKEY(p8inf))
+ || !TEST_int_eq(ERR_get_error(), 0)) {
+ goto done;
+ }
+
+ ok = 1;
+ done:
+ EVP_PKEY_free(pkey);
+ EVP_PKEY_free(pkey2);
+ PKCS8_PRIV_KEY_INFO_free(p8inf);
+ BIO_free_all(membio);
+ return ok;
+}
/* This uses kExampleRSAKeyDER and kExampleRSAKeyPKCS8 to verify encoding */
static int test_privatekey_to_pkcs8(void)
} keys[] = {
{
EVP_PKEY_HMAC, "0123456789", NULL
+#ifndef OPENSSL_NO_POLY1305
}, {
EVP_PKEY_POLY1305, "01234567890123456789012345678901", NULL
+#endif
+#ifndef OPENSSL_NO_SIPHASH
}, {
EVP_PKEY_SIPHASH, "0123456789012345", NULL
+#endif
},
#ifndef OPENSSL_NO_EC
{
size_t inlen, len = 0;
EVP_PKEY *pkey;
- if (nullprov != NULL)
- return TEST_skip("Test does not support a non-default library context");
-
/* Check if this algorithm supports public keys */
- if (keys[tst].pub == NULL)
+ if (pub && keys[tst].pub == NULL)
return 1;
memset(buf, 0, sizeof(buf));
if (pub) {
+#ifndef OPENSSL_NO_EC
inlen = strlen(keys[tst].pub);
in = (unsigned char *)keys[tst].pub;
if (uselibctx) {
in,
inlen);
}
+#else
+ return 1;
+#endif
} else {
inlen = strlen(keys[tst].priv);
in = (unsigned char *)keys[tst].priv;
}
if (!TEST_ptr(pkey)
+ || !TEST_int_eq(EVP_PKEY_eq(pkey, pkey), 1)
|| (!pub && !TEST_true(EVP_PKEY_get_raw_private_key(pkey, NULL, &len)))
|| (pub && !TEST_true(EVP_PKEY_get_raw_public_key(pkey, NULL, &len)))
|| !TEST_true(len == inlen)
static int test_set_get_raw_keys(int tst)
{
- return test_set_get_raw_keys_int(tst, 0, 0)
+ return (nullprov != NULL || 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)
+ && (nullprov != NULL || test_set_get_raw_keys_int(tst, 1, 0))
&& test_set_get_raw_keys_int(tst, 1, 1);
}
#endif
#ifndef OPENSSL_NO_EC
-static int ecpub_nids[] = { NID_brainpoolP256r1, NID_X9_62_prime256v1,
- NID_secp384r1, NID_secp521r1, NID_sect233k1, NID_sect233r1, NID_sect283r1,
+static int ecpub_nids[] = {
+ NID_brainpoolP256r1, NID_X9_62_prime256v1,
+ NID_secp384r1, NID_secp521r1,
+# ifndef OPENSSL_NO_EC2M
+ NID_sect233k1, NID_sect233r1, NID_sect283r1,
NID_sect409k1, NID_sect409r1, NID_sect571k1, NID_sect571r1,
- NID_brainpoolP384r1, NID_brainpoolP512r1};
+# endif
+ NID_brainpoolP384r1, NID_brainpoolP512r1
+};
static int test_ecpub(int idx)
{
if (!TEST_ptr(d2i_PublicKey(EVP_PKEY_EC, &pkey2, &q, savelen)))
goto done;
/* The keys should match. */
- if (!TEST_int_eq(EVP_PKEY_cmp(pkey, pkey2), 1))
+ if (!TEST_int_eq(EVP_PKEY_eq(pkey, pkey2), 1))
goto done;
# endif
ADD_TEST(test_EVP_Enveloped);
ADD_ALL_TESTS(test_d2i_AutoPrivateKey, OSSL_NELEM(keydata));
ADD_TEST(test_privatekey_to_pkcs8);
+ ADD_TEST(test_EVP_PKCS82PKEY_wrong_tag);
#ifndef OPENSSL_NO_EC
ADD_TEST(test_EVP_PKCS82PKEY);
#endif