Latest update.
This commit is contained in:
@@ -281,7 +281,7 @@ or for shared builds
|
||||
|
||||
```
|
||||
$ CTLOG_FILE=test/ct/log_list.conf TEST_CERTS_DIR=test/certs \
|
||||
util/shlib_wrap.sh test/ssl_test test/ssl-tests/01-simple.conf
|
||||
util/wrap.pl test/ssl_test test/ssl-tests/01-simple.conf
|
||||
```
|
||||
|
||||
Note that the test expectations sometimes depend on the Configure settings. For
|
||||
|
||||
+13
-14
@@ -34,8 +34,7 @@ IF[{- !$disabled{tests} -}]
|
||||
sanitytest rsa_complex exdatatest bntest \
|
||||
ectest ecstresstest gmdifftest pbelutest \
|
||||
destest mdc2test \
|
||||
dhtest enginetest \
|
||||
ssltest_old exptest rsa_test \
|
||||
enginetest exptest \
|
||||
evp_pkey_provided_test evp_test evp_extra_test evp_fetch_prov_test \
|
||||
v3nametest v3ext \
|
||||
crltest danetest bad_dtls_test lhash_test sparse_array_test \
|
||||
@@ -109,18 +108,10 @@ IF[{- !$disabled{tests} -}]
|
||||
INCLUDE[mdc2test]=../include ../apps/include
|
||||
DEPEND[mdc2test]=../libcrypto libtestutil.a
|
||||
|
||||
SOURCE[dhtest]=dhtest.c
|
||||
INCLUDE[dhtest]=../include ../apps/include
|
||||
DEPEND[dhtest]=../libcrypto libtestutil.a
|
||||
|
||||
SOURCE[enginetest]=enginetest.c
|
||||
INCLUDE[enginetest]=../include ../apps/include
|
||||
DEPEND[enginetest]=../libcrypto libtestutil.a
|
||||
|
||||
SOURCE[ssltest_old]=ssltest_old.c
|
||||
INCLUDE[ssltest_old]=.. ../include ../apps/include
|
||||
DEPEND[ssltest_old]=../libcrypto ../libssl
|
||||
|
||||
SOURCE[exptest]=exptest.c
|
||||
INCLUDE[exptest]=../include ../apps/include
|
||||
DEPEND[exptest]=../libcrypto libtestutil.a
|
||||
@@ -495,11 +486,11 @@ IF[{- !$disabled{tests} -}]
|
||||
IF[1]
|
||||
PROGRAMS{noinst}=asn1_internal_test modes_internal_test x509_internal_test \
|
||||
tls13encryptiontest wpackettest ctype_internal_test \
|
||||
rdrand_sanitytest property_test ideatest \
|
||||
rsa_sp800_56b_test bn_internal_test ecdsatest \
|
||||
rdrand_sanitytest property_test ideatest rsa_mp_test \
|
||||
rsa_sp800_56b_test bn_internal_test ecdsatest rsa_test \
|
||||
rc2test rc4test rc5test hmactest ffc_internal_test \
|
||||
asn1_dsa_internal_test dsatest dsa_no_digest_size_test
|
||||
|
||||
asn1_dsa_internal_test dsatest dsa_no_digest_size_test \
|
||||
dhtest ssltest_old
|
||||
|
||||
IF[{- !$disabled{poly1305} -}]
|
||||
PROGRAMS{noinst}=poly1305_internal_test
|
||||
@@ -577,6 +568,10 @@ IF[{- !$disabled{tests} -}]
|
||||
INCLUDE[sparse_array_test]=../crypto/include ../include ../apps/include
|
||||
DEPEND[sparse_array_test]=../libcrypto.a libtestutil.a
|
||||
|
||||
SOURCE[dhtest]=dhtest.c
|
||||
INCLUDE[dhtest]=../include ../apps/include
|
||||
DEPEND[dhtest]=../libcrypto.a libtestutil.a
|
||||
|
||||
SOURCE[hmactest]=hmactest.c
|
||||
INCLUDE[hmactest]=../include ../apps/include
|
||||
DEPEND[hmactest]=../libcrypto.a libtestutil.a
|
||||
@@ -652,6 +647,10 @@ IF[{- !$disabled{tests} -}]
|
||||
SOURCE[mdc2_internal_test]=mdc2_internal_test.c
|
||||
INCLUDE[mdc2_internal_test]=.. ../include ../apps/include
|
||||
DEPEND[mdc2_internal_test]=../libcrypto.a libtestutil.a
|
||||
|
||||
SOURCE[ssltest_old]=ssltest_old.c
|
||||
INCLUDE[ssltest_old]=.. ../include ../apps/include
|
||||
DEPEND[ssltest_old]=../libcrypto.a ../libssl.a
|
||||
ENDIF
|
||||
|
||||
PROGRAMS{noinst}=asn1_time_test
|
||||
|
||||
@@ -7,6 +7,12 @@
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/*
|
||||
* DH low level APIs are deprecated for public use, but still ok for
|
||||
* internal use.
|
||||
*/
|
||||
#include "internal/deprecated.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
+89
-41
@@ -21,6 +21,7 @@
|
||||
#include <openssl/kdf.h>
|
||||
#include <openssl/provider.h>
|
||||
#include <openssl/core_names.h>
|
||||
#include <openssl/params.h>
|
||||
#include <openssl/dsa.h>
|
||||
#include <openssl/dh.h>
|
||||
#include "testutil.h"
|
||||
@@ -1232,53 +1233,18 @@ done:
|
||||
}
|
||||
#endif /* OPENSSL_NO_EC */
|
||||
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
/* Test getting and setting parameters on an EVP_PKEY_CTX */
|
||||
static int test_EVP_PKEY_CTX_get_set_params(void)
|
||||
static int test_EVP_PKEY_CTX_get_set_params(EVP_PKEY *pkey)
|
||||
{
|
||||
EVP_MD_CTX *mdctx = NULL;
|
||||
EVP_PKEY_CTX *ctx = NULL;
|
||||
EVP_SIGNATURE *dsaimpl = NULL;
|
||||
const OSSL_PARAM *params;
|
||||
OSSL_PARAM ourparams[2], *param = ourparams, *param_md;
|
||||
DSA *dsa = NULL;
|
||||
BIGNUM *p = NULL, *q = NULL, *g = NULL, *pub = NULL, *priv = NULL;
|
||||
EVP_PKEY *pkey = NULL;
|
||||
int ret = 0;
|
||||
const EVP_MD *md;
|
||||
char mdname[OSSL_MAX_NAME_SIZE];
|
||||
char ssl3ms[48];
|
||||
|
||||
/*
|
||||
* Setup the parameters for our DSA object. For our purposes they don't
|
||||
* have to actually be *valid* parameters. We just need to set something.
|
||||
*/
|
||||
dsa = DSA_new();
|
||||
p = BN_new();
|
||||
q = BN_new();
|
||||
g = BN_new();
|
||||
pub = BN_new();
|
||||
priv = BN_new();
|
||||
if (!TEST_ptr(dsa)
|
||||
|| !TEST_ptr(p)
|
||||
|| !TEST_ptr(q)
|
||||
|| !TEST_ptr(g)
|
||||
|| !DSA_set0_pqg(dsa, p, q, g))
|
||||
goto err;
|
||||
p = q = g = NULL;
|
||||
if (!TEST_ptr(pub)
|
||||
|| !TEST_ptr(priv)
|
||||
|| !DSA_set0_key(dsa, pub, priv))
|
||||
goto err;
|
||||
pub = priv = NULL;
|
||||
|
||||
pkey = EVP_PKEY_new();
|
||||
if (!TEST_ptr(pkey)
|
||||
|| !TEST_true(EVP_PKEY_assign_DSA(pkey, dsa)))
|
||||
goto err;
|
||||
|
||||
dsa = NULL;
|
||||
|
||||
/* Initialise a sign operation */
|
||||
ctx = EVP_PKEY_CTX_new(pkey, NULL);
|
||||
if (!TEST_ptr(ctx)
|
||||
@@ -1286,9 +1252,7 @@ static int test_EVP_PKEY_CTX_get_set_params(void)
|
||||
goto err;
|
||||
|
||||
/*
|
||||
* We should be able to query the parameters now. The default DSA
|
||||
* implementation supports exactly one parameter - so we expect to see that
|
||||
* returned and no more.
|
||||
* We should be able to query the parameters now.
|
||||
*/
|
||||
params = EVP_PKEY_CTX_settable_params(ctx);
|
||||
if (!TEST_ptr(params)
|
||||
@@ -1366,7 +1330,48 @@ static int test_EVP_PKEY_CTX_get_set_params(void)
|
||||
err:
|
||||
EVP_MD_CTX_free(mdctx);
|
||||
EVP_PKEY_CTX_free(ctx);
|
||||
EVP_SIGNATURE_free(dsaimpl);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
static int test_DSA_get_set_params(void)
|
||||
{
|
||||
DSA *dsa = NULL;
|
||||
BIGNUM *p = NULL, *q = NULL, *g = NULL, *pub = NULL, *priv = NULL;
|
||||
EVP_PKEY *pkey = NULL;
|
||||
int ret = 0;
|
||||
|
||||
/*
|
||||
* Setup the parameters for our DSA object. For our purposes they don't
|
||||
* have to actually be *valid* parameters. We just need to set something.
|
||||
*/
|
||||
dsa = DSA_new();
|
||||
p = BN_new();
|
||||
q = BN_new();
|
||||
g = BN_new();
|
||||
pub = BN_new();
|
||||
priv = BN_new();
|
||||
if (!TEST_ptr(dsa)
|
||||
|| !TEST_ptr(p)
|
||||
|| !TEST_ptr(q)
|
||||
|| !TEST_ptr(g)
|
||||
|| !TEST_ptr(pub)
|
||||
|| !DSA_set0_pqg(dsa, p, q, g)
|
||||
|| !DSA_set0_key(dsa, pub, priv))
|
||||
goto err;
|
||||
p = q = g = pub = priv = NULL;
|
||||
|
||||
pkey = EVP_PKEY_new();
|
||||
if (!TEST_ptr(pkey)
|
||||
|| !TEST_true(EVP_PKEY_assign_DSA(pkey, dsa)))
|
||||
goto err;
|
||||
|
||||
dsa = NULL;
|
||||
|
||||
ret = test_EVP_PKEY_CTX_get_set_params(pkey);
|
||||
|
||||
err:
|
||||
EVP_PKEY_free(pkey);
|
||||
DSA_free(dsa);
|
||||
BN_free(p);
|
||||
@@ -1379,6 +1384,48 @@ static int test_EVP_PKEY_CTX_get_set_params(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
static int test_RSA_get_set_params(void)
|
||||
{
|
||||
RSA *rsa = NULL;
|
||||
BIGNUM *n = NULL, *e = NULL, *d = NULL;
|
||||
EVP_PKEY *pkey = NULL;
|
||||
int ret = 0;
|
||||
|
||||
/*
|
||||
* Setup the parameters for our RSA object. For our purposes they don't
|
||||
* have to actually be *valid* parameters. We just need to set something.
|
||||
*/
|
||||
rsa = RSA_new();
|
||||
n = BN_new();
|
||||
e = BN_new();
|
||||
d = BN_new();
|
||||
if (!TEST_ptr(rsa)
|
||||
|| !TEST_ptr(n)
|
||||
|| !TEST_ptr(e)
|
||||
|| !TEST_ptr(d)
|
||||
|| !RSA_set0_key(rsa, n, e, d))
|
||||
goto err;
|
||||
n = e = d = NULL;
|
||||
|
||||
pkey = EVP_PKEY_new();
|
||||
if (!TEST_ptr(pkey)
|
||||
|| !TEST_true(EVP_PKEY_assign_RSA(pkey, rsa)))
|
||||
goto err;
|
||||
|
||||
rsa = NULL;
|
||||
|
||||
ret = test_EVP_PKEY_CTX_get_set_params(pkey);
|
||||
|
||||
err:
|
||||
EVP_PKEY_free(pkey);
|
||||
RSA_free(rsa);
|
||||
BN_free(n);
|
||||
BN_free(e);
|
||||
BN_free(d);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305)
|
||||
static int test_decrypt_null_chunks(void)
|
||||
{
|
||||
@@ -1522,8 +1569,9 @@ int setup_tests(void)
|
||||
OSSL_NELEM(ec_der_pub_keys));
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_DSA
|
||||
ADD_TEST(test_EVP_PKEY_CTX_get_set_params);
|
||||
ADD_TEST(test_DSA_get_set_params);
|
||||
#endif
|
||||
ADD_TEST(test_RSA_get_set_params);
|
||||
#if !defined(OPENSSL_NO_CHACHA) && !defined(OPENSSL_NO_POLY1305)
|
||||
ADD_TEST(test_decrypt_null_chunks);
|
||||
#endif
|
||||
|
||||
@@ -40,7 +40,7 @@ const OPTIONS *test_get_options(void)
|
||||
static const OPTIONS test_options[] = {
|
||||
OPT_TEST_OPTIONS_WITH_EXTRA_USAGE("[provname...]\n"),
|
||||
{ "type", OPT_ALG_FETCH_TYPE, 's', "The fetch type to test" },
|
||||
{ "property", OPT_FETCH_PROPERTY, 's', "The fetch property e.g. fips=yes" },
|
||||
{ "property", OPT_FETCH_PROPERTY, 's', "The fetch property e.g. provider=fips" },
|
||||
{ "fetchfail", OPT_FETCH_FAILURE, '-', "fetch is expected to fail" },
|
||||
{ "defaultctx", OPT_USE_DEFAULTCTX, '-',
|
||||
"Use the default context if this is set" },
|
||||
|
||||
+327
-34
@@ -13,72 +13,242 @@
|
||||
#include <openssl/provider.h>
|
||||
#include <openssl/params.h>
|
||||
#include <openssl/core_names.h>
|
||||
#include "crypto/ecx.h"
|
||||
#include "internal/nelem.h"
|
||||
#include "crypto/evp.h" /* For the internal API */
|
||||
#include "testutil.h"
|
||||
|
||||
static int test_print_key_using_pem(const EVP_PKEY *pk)
|
||||
static char *datadir = NULL;
|
||||
|
||||
#define PRIV_TEXT 0
|
||||
#define PRIV_PEM 1
|
||||
#define PRIV_DER 2
|
||||
#define PUB_TEXT 3
|
||||
#define PUB_PEM 4
|
||||
#define PUB_DER 5
|
||||
|
||||
static void stripcr(char *buf, size_t *len)
|
||||
{
|
||||
if (!TEST_true(EVP_PKEY_print_private(bio_out, pk, 0, NULL))
|
||||
size_t i;
|
||||
char *curr, *writ;
|
||||
|
||||
for (i = *len, curr = buf, writ = buf; i > 0; i--, curr++) {
|
||||
if (*curr == '\r') {
|
||||
(*len)--;
|
||||
continue;
|
||||
}
|
||||
if (curr != writ)
|
||||
*writ = *curr;
|
||||
writ++;
|
||||
}
|
||||
}
|
||||
|
||||
static int compare_with_file(const char *alg, int type, BIO *membio)
|
||||
{
|
||||
char filename[80];
|
||||
BIO *file = NULL;
|
||||
char buf[1024];
|
||||
char *memdata, *fullfile = NULL;
|
||||
const char *suffix;
|
||||
size_t readbytes;
|
||||
int ret = 0;
|
||||
int len;
|
||||
size_t slen;
|
||||
|
||||
switch (type) {
|
||||
case PRIV_TEXT:
|
||||
suffix = "priv.txt";
|
||||
break;
|
||||
|
||||
case PRIV_PEM:
|
||||
suffix = "priv.pem";
|
||||
break;
|
||||
|
||||
case PRIV_DER:
|
||||
suffix = "priv.der";
|
||||
break;
|
||||
|
||||
case PUB_TEXT:
|
||||
suffix = "pub.txt";
|
||||
break;
|
||||
|
||||
case PUB_PEM:
|
||||
suffix = "pub.pem";
|
||||
break;
|
||||
|
||||
case PUB_DER:
|
||||
suffix = "pub.der";
|
||||
break;
|
||||
|
||||
default:
|
||||
TEST_error("Invalid file type");
|
||||
goto err;
|
||||
}
|
||||
|
||||
BIO_snprintf(filename, sizeof(filename), "%s.%s", alg, suffix);
|
||||
fullfile = test_mk_file_path(datadir, filename);
|
||||
if (!TEST_ptr(fullfile))
|
||||
goto err;
|
||||
|
||||
file = BIO_new_file(fullfile, "rb");
|
||||
if (!TEST_ptr(file))
|
||||
goto err;
|
||||
|
||||
if (!TEST_true(BIO_read_ex(file, buf, sizeof(buf), &readbytes))
|
||||
|| !TEST_true(BIO_eof(file))
|
||||
|| !TEST_size_t_lt(readbytes, sizeof(buf)))
|
||||
goto err;
|
||||
|
||||
len = BIO_get_mem_data(membio, &memdata);
|
||||
if (!TEST_int_gt(len, 0))
|
||||
goto err;
|
||||
|
||||
slen = len;
|
||||
if (type != PRIV_DER && type != PUB_DER) {
|
||||
stripcr(memdata, &slen);
|
||||
stripcr(buf, &readbytes);
|
||||
}
|
||||
|
||||
if (!TEST_mem_eq(memdata, slen, buf, readbytes))
|
||||
goto err;
|
||||
|
||||
ret = 1;
|
||||
err:
|
||||
OPENSSL_free(fullfile);
|
||||
(void)BIO_reset(membio);
|
||||
BIO_free(file);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int test_print_key_using_pem(const char *alg, const EVP_PKEY *pk)
|
||||
{
|
||||
BIO *membio = BIO_new(BIO_s_mem());
|
||||
int ret = 0;
|
||||
|
||||
if (!TEST_ptr(membio))
|
||||
goto err;
|
||||
|
||||
if (!TEST_true(EVP_PKEY_print_private(membio, pk, 0, NULL))
|
||||
|| !TEST_true(compare_with_file(alg, PRIV_TEXT, membio))
|
||||
/* Public key in PEM form */
|
||||
|| !TEST_true(PEM_write_bio_PUBKEY(bio_out, pk))
|
||||
|| !TEST_true(PEM_write_bio_PUBKEY(membio, pk))
|
||||
|| !TEST_true(compare_with_file(alg, PUB_PEM, membio))
|
||||
/* Unencrypted private key in PEM form */
|
||||
|| !TEST_true(PEM_write_bio_PrivateKey(bio_out, pk,
|
||||
|| !TEST_true(PEM_write_bio_PrivateKey(membio, pk,
|
||||
NULL, NULL, 0, NULL, NULL))
|
||||
|| !TEST_true(compare_with_file(alg, PRIV_PEM, membio))
|
||||
/* Encrypted private key in PEM form */
|
||||
|| !TEST_true(PEM_write_bio_PrivateKey(bio_out, pk, EVP_aes_256_cbc(),
|
||||
(unsigned char *)"pass", 4,
|
||||
NULL, NULL)))
|
||||
return 0;
|
||||
goto err;
|
||||
|
||||
return 1;
|
||||
ret = 1;
|
||||
err:
|
||||
BIO_free(membio);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int test_print_key_using_serializer(const EVP_PKEY *pk)
|
||||
static int test_print_key_type_using_serializer(const char *alg, int type,
|
||||
const EVP_PKEY *pk)
|
||||
{
|
||||
const char *pq = OSSL_SERIALIZER_PrivateKey_TO_PEM_PQ;
|
||||
const char *pq;
|
||||
OSSL_SERIALIZER_CTX *ctx = NULL;
|
||||
BIO *membio = BIO_new(BIO_s_mem());
|
||||
int ret = 1;
|
||||
|
||||
switch (type) {
|
||||
case PRIV_TEXT:
|
||||
pq = OSSL_SERIALIZER_PrivateKey_TO_TEXT_PQ;
|
||||
break;
|
||||
|
||||
case PRIV_PEM:
|
||||
pq = OSSL_SERIALIZER_PrivateKey_TO_PEM_PQ;
|
||||
break;
|
||||
|
||||
case PRIV_DER:
|
||||
pq = OSSL_SERIALIZER_PrivateKey_TO_DER_PQ;
|
||||
break;
|
||||
|
||||
case PUB_TEXT:
|
||||
pq = OSSL_SERIALIZER_PUBKEY_TO_TEXT_PQ;
|
||||
break;
|
||||
|
||||
case PUB_PEM:
|
||||
pq = OSSL_SERIALIZER_PUBKEY_TO_PEM_PQ;
|
||||
break;
|
||||
|
||||
case PUB_DER:
|
||||
pq = OSSL_SERIALIZER_PUBKEY_TO_DER_PQ;
|
||||
break;
|
||||
|
||||
default:
|
||||
TEST_error("Invalid serialization type");
|
||||
goto err;
|
||||
}
|
||||
|
||||
if (!TEST_ptr(membio)) {
|
||||
ret = 0;
|
||||
goto err;
|
||||
}
|
||||
|
||||
/* Make a context, it's valid for several prints */
|
||||
TEST_note("Setting up a OSSL_SERIALIZER context with passphrase");
|
||||
if (!TEST_ptr(ctx = OSSL_SERIALIZER_CTX_new_by_EVP_PKEY(pk, pq))
|
||||
/* Check that this operation is supported */
|
||||
|| !TEST_ptr(OSSL_SERIALIZER_CTX_get_serializer(ctx))
|
||||
/* Set a passphrase to be used later */
|
||||
|| !TEST_true(OSSL_SERIALIZER_CTX_set_passphrase(ctx,
|
||||
(unsigned char *)"pass",
|
||||
4)))
|
||||
|| !TEST_ptr(OSSL_SERIALIZER_CTX_get_serializer(ctx)))
|
||||
goto err;
|
||||
|
||||
/* Use no cipher. This should give us an unencrypted PEM */
|
||||
TEST_note("Displaying PEM with no encryption");
|
||||
if (!TEST_true(OSSL_SERIALIZER_to_bio(ctx, bio_out)))
|
||||
TEST_note("Testing with no encryption");
|
||||
if (!TEST_true(OSSL_SERIALIZER_to_bio(ctx, membio))
|
||||
|| !TEST_true(compare_with_file(alg, type, membio)))
|
||||
ret = 0;
|
||||
|
||||
/* Use a valid cipher name */
|
||||
TEST_note("Displaying PEM encrypted with AES-256-CBC");
|
||||
if (!TEST_true(OSSL_SERIALIZER_CTX_set_cipher(ctx, "AES-256-CBC", NULL))
|
||||
|| !TEST_true(OSSL_SERIALIZER_to_bio(ctx, bio_out)))
|
||||
ret = 0;
|
||||
if (type == PRIV_PEM) {
|
||||
/* Set a passphrase to be used later */
|
||||
if (!TEST_true(OSSL_SERIALIZER_CTX_set_passphrase(ctx,
|
||||
(unsigned char *)"pass",
|
||||
4)))
|
||||
goto err;
|
||||
|
||||
/* Use an invalid cipher name, which should generate no output */
|
||||
TEST_note("NOT Displaying PEM encrypted with (invalid) FOO");
|
||||
if (!TEST_false(OSSL_SERIALIZER_CTX_set_cipher(ctx, "FOO", NULL))
|
||||
|| !TEST_false(OSSL_SERIALIZER_to_bio(ctx, bio_out)))
|
||||
ret = 0;
|
||||
/* Use a valid cipher name */
|
||||
TEST_note("Displaying PEM encrypted with AES-256-CBC");
|
||||
if (!TEST_true(OSSL_SERIALIZER_CTX_set_cipher(ctx, "AES-256-CBC", NULL))
|
||||
|| !TEST_true(OSSL_SERIALIZER_to_bio(ctx, bio_out)))
|
||||
ret = 0;
|
||||
|
||||
/* Clear the cipher. This should give us an unencrypted PEM again */
|
||||
TEST_note("Displaying PEM with encryption cleared (no encryption)");
|
||||
if (!TEST_true(OSSL_SERIALIZER_CTX_set_cipher(ctx, NULL, NULL))
|
||||
|| !TEST_true(OSSL_SERIALIZER_to_bio(ctx, bio_out)))
|
||||
ret = 0;
|
||||
/* Use an invalid cipher name, which should generate no output */
|
||||
TEST_note("NOT Displaying PEM encrypted with (invalid) FOO");
|
||||
if (!TEST_false(OSSL_SERIALIZER_CTX_set_cipher(ctx, "FOO", NULL))
|
||||
|| !TEST_false(OSSL_SERIALIZER_to_bio(ctx, bio_out)))
|
||||
ret = 0;
|
||||
|
||||
/* Clear the cipher. This should give us an unencrypted PEM again */
|
||||
TEST_note("Testing with encryption cleared (no encryption)");
|
||||
if (!TEST_true(OSSL_SERIALIZER_CTX_set_cipher(ctx, NULL, NULL))
|
||||
|| !TEST_true(OSSL_SERIALIZER_to_bio(ctx, membio))
|
||||
|| !TEST_true(compare_with_file(alg, type, membio)))
|
||||
ret = 0;
|
||||
}
|
||||
|
||||
err:
|
||||
BIO_free(membio);
|
||||
OSSL_SERIALIZER_CTX_free(ctx);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int test_print_key_using_serializer(const char *alg, const EVP_PKEY *pk)
|
||||
{
|
||||
int i;
|
||||
int ret = 1;
|
||||
|
||||
for (i = 0; i < 6; i++)
|
||||
ret = ret && test_print_key_type_using_serializer(alg, i, pk);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Array indexes used in test_fromdata_rsa */
|
||||
#define N 0
|
||||
#define E 1
|
||||
@@ -141,8 +311,8 @@ static int test_fromdata_rsa(void)
|
||||
|| !TEST_true(EVP_PKEY_pairwise_check(key_ctx)))
|
||||
goto err;
|
||||
|
||||
ret = test_print_key_using_pem(pk)
|
||||
| test_print_key_using_serializer(pk);
|
||||
ret = test_print_key_using_pem("RSA", pk)
|
||||
&& test_print_key_using_serializer("RSA", pk);
|
||||
|
||||
err:
|
||||
EVP_PKEY_free(pk);
|
||||
@@ -195,8 +365,8 @@ static int test_fromdata_dh(void)
|
||||
|| !TEST_int_eq(EVP_PKEY_size(pk), 4))
|
||||
goto err;
|
||||
|
||||
ret = test_print_key_using_pem(pk)
|
||||
| test_print_key_using_serializer(pk);
|
||||
ret = test_print_key_using_pem("DH", pk)
|
||||
&& test_print_key_using_serializer("DH", pk);
|
||||
|
||||
err:
|
||||
EVP_PKEY_free(pk);
|
||||
@@ -206,11 +376,134 @@ static int test_fromdata_dh(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef OPENSSL_NO_EC
|
||||
/* Array indexes used in test_fromdata_ecx */
|
||||
# define PRIV_KEY 0
|
||||
# define PUB_KEY 1
|
||||
|
||||
# define X25519_IDX 0
|
||||
# define X448_IDX 1
|
||||
|
||||
static int test_fromdata_ecx(int tst)
|
||||
{
|
||||
int ret = 0;
|
||||
EVP_PKEY_CTX *ctx = NULL;
|
||||
EVP_PKEY *pk = NULL;
|
||||
const char *alg = (tst == X25519_IDX) ? "X25519" : "X448";
|
||||
|
||||
/* X448_KEYLEN > X25519_KEYLEN */
|
||||
static unsigned char key_numbers[2][2][X448_KEYLEN] = {
|
||||
/* X25519: Keys from RFC 7748 6.1 */
|
||||
{
|
||||
/* Private Key */
|
||||
{
|
||||
0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16,
|
||||
0xc1, 0x72, 0x51, 0xb2, 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87,
|
||||
0xeb, 0xc0, 0x99, 0x2a, 0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9,
|
||||
0x2c, 0x2a
|
||||
},
|
||||
/* Public Key */
|
||||
{
|
||||
0x85, 0x20, 0xf0, 0x09, 0x89, 0x30, 0xa7, 0x54, 0x74, 0x8b,
|
||||
0x7d, 0xdc, 0xb4, 0x3e, 0xf7, 0x5a, 0x0d, 0xbf, 0x3a, 0x0d,
|
||||
0x26, 0x38, 0x1a, 0xf4, 0xeb, 0xa4, 0xa9, 0x8e, 0xaa, 0x9b,
|
||||
0x4e, 0x6a
|
||||
}
|
||||
},
|
||||
/* X448: Keys from RFC 7748 6.2 */
|
||||
{
|
||||
/* Private Key */
|
||||
{
|
||||
0x9a, 0x8f, 0x49, 0x25, 0xd1, 0x51, 0x9f, 0x57, 0x75, 0xcf,
|
||||
0x46, 0xb0, 0x4b, 0x58, 0x00, 0xd4, 0xee, 0x9e, 0xe8, 0xba,
|
||||
0xe8, 0xbc, 0x55, 0x65, 0xd4, 0x98, 0xc2, 0x8d, 0xd9, 0xc9,
|
||||
0xba, 0xf5, 0x74, 0xa9, 0x41, 0x97, 0x44, 0x89, 0x73, 0x91,
|
||||
0x00, 0x63, 0x82, 0xa6, 0xf1, 0x27, 0xab, 0x1d, 0x9a, 0xc2,
|
||||
0xd8, 0xc0, 0xa5, 0x98, 0x72, 0x6b
|
||||
},
|
||||
/* Public Key */
|
||||
{
|
||||
0x9b, 0x08, 0xf7, 0xcc, 0x31, 0xb7, 0xe3, 0xe6, 0x7d, 0x22,
|
||||
0xd5, 0xae, 0xa1, 0x21, 0x07, 0x4a, 0x27, 0x3b, 0xd2, 0xb8,
|
||||
0x3d, 0xe0, 0x9c, 0x63, 0xfa, 0xa7, 0x3d, 0x2c, 0x22, 0xc5,
|
||||
0xd9, 0xbb, 0xc8, 0x36, 0x64, 0x72, 0x41, 0xd9, 0x53, 0xd4,
|
||||
0x0c, 0x5b, 0x12, 0xda, 0x88, 0x12, 0x0d, 0x53, 0x17, 0x7f,
|
||||
0x80, 0xe5, 0x32, 0xc4, 0x1f, 0xa0
|
||||
}
|
||||
}
|
||||
};
|
||||
OSSL_PARAM x25519_fromdata_params[] = {
|
||||
OSSL_PARAM_octet_string(OSSL_PKEY_PARAM_PRIV_KEY,
|
||||
key_numbers[X25519_IDX][PRIV_KEY],
|
||||
X25519_KEYLEN),
|
||||
OSSL_PARAM_octet_string(OSSL_PKEY_PARAM_PUB_KEY,
|
||||
key_numbers[X25519_IDX][PUB_KEY],
|
||||
X25519_KEYLEN),
|
||||
OSSL_PARAM_END
|
||||
};
|
||||
OSSL_PARAM x448_fromdata_params[] = {
|
||||
OSSL_PARAM_octet_string(OSSL_PKEY_PARAM_PRIV_KEY,
|
||||
key_numbers[X448_IDX][PRIV_KEY],
|
||||
X448_KEYLEN),
|
||||
OSSL_PARAM_octet_string(OSSL_PKEY_PARAM_PUB_KEY,
|
||||
key_numbers[X448_IDX][PUB_KEY],
|
||||
X448_KEYLEN),
|
||||
OSSL_PARAM_END
|
||||
};
|
||||
OSSL_PARAM *fromdata_params;
|
||||
int bits, security_bits, size;
|
||||
|
||||
if (tst == X25519_IDX) {
|
||||
fromdata_params = x25519_fromdata_params;
|
||||
bits = X25519_BITS;
|
||||
security_bits = X25519_SECURITY_BITS;
|
||||
size = X25519_KEYLEN;
|
||||
} else {
|
||||
fromdata_params = x448_fromdata_params;
|
||||
bits = X448_BITS;
|
||||
security_bits = X448_SECURITY_BITS;
|
||||
size = X448_KEYLEN;
|
||||
}
|
||||
|
||||
ctx = EVP_PKEY_CTX_new_from_name(NULL, alg, NULL);
|
||||
if (!TEST_ptr(ctx))
|
||||
goto err;
|
||||
|
||||
if (!TEST_true(EVP_PKEY_key_fromdata_init(ctx))
|
||||
|| !TEST_true(EVP_PKEY_fromdata(ctx, &pk, fromdata_params))
|
||||
|| !TEST_int_eq(EVP_PKEY_bits(pk), bits)
|
||||
|| !TEST_int_eq(EVP_PKEY_security_bits(pk), security_bits)
|
||||
|| !TEST_int_eq(EVP_PKEY_size(pk), size))
|
||||
goto err;
|
||||
|
||||
ret = test_print_key_using_pem(alg, pk)
|
||||
&& test_print_key_using_serializer(alg, pk);
|
||||
|
||||
err:
|
||||
EVP_PKEY_free(pk);
|
||||
EVP_PKEY_CTX_free(ctx);
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
int setup_tests(void)
|
||||
{
|
||||
if (!test_skip_common_options()) {
|
||||
TEST_error("Error parsing test options\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!TEST_ptr(datadir = test_get_argument(0)))
|
||||
return 0;
|
||||
|
||||
ADD_TEST(test_fromdata_rsa);
|
||||
#ifndef OPENSSL_NO_DH
|
||||
ADD_TEST(test_fromdata_dh);
|
||||
#endif
|
||||
#ifndef OPENSSL_NO_EC
|
||||
ADD_ALL_TESTS(test_fromdata_ecx, 2);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
+2
-2
@@ -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";
|
||||
|
||||
@@ -19,7 +19,7 @@ use OpenSSL::Test::Utils;
|
||||
|
||||
# This block needs to run before 'use lib srctop_dir' directives.
|
||||
BEGIN {
|
||||
OpenSSL::Test::setup("no_test_here");
|
||||
OpenSSL::Test::setup("no_test_here", quiet => 1);
|
||||
}
|
||||
|
||||
use FindBin;
|
||||
|
||||
@@ -207,7 +207,8 @@ static int test_pass_rsa(FIXTURE *fixture)
|
||||
|| !TEST_ptr_ne(km1, km2))
|
||||
goto err;
|
||||
|
||||
if (!TEST_ptr(evp_keymgmt_util_export_to_provider(pk, km1))
|
||||
if (!TEST_ptr(evp_pkey_export_to_provider(pk, NULL, &km1, NULL))
|
||||
|| !TEST_ptr(evp_pkey_upgrade_to_provider(pk, NULL, &km1, NULL))
|
||||
|| !TEST_ptr(provkey = evp_keymgmt_util_export_to_provider(pk, km2)))
|
||||
goto err;
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ use platform;
|
||||
|
||||
plan skip_all => "Test only supported in a fips build" if disabled("fips");
|
||||
|
||||
plan tests => 9;
|
||||
plan tests => 10;
|
||||
|
||||
my $infile = bldtop_file('providers', platform->dso('fips'));
|
||||
$ENV{OPENSSL_MODULES} = bldtop_dir("providers");
|
||||
@@ -92,3 +92,10 @@ ok(!run(app(['openssl', 'fipsinstall', '-out', 'fips.conf', '-module', $infile,
|
||||
'-macopt', 'digest:SHA256', '-macopt', 'hexkey:00',
|
||||
'-section_name', 'fips_install', '-corrupt_desc', 'SHA3'])),
|
||||
"fipsinstall fails when the digest result is corrupted");
|
||||
|
||||
# corrupt DRBG
|
||||
ok(!run(app(['openssl', 'fipsinstall', '-out', 'fips.conf', '-module', $infile,
|
||||
'-provider_name', 'fips', '-mac_name', 'HMAC',
|
||||
'-macopt', 'digest:SHA256', '-macopt', 'hexkey:00',
|
||||
'-section_name', 'fips_install', '-corrupt_desc', 'CTR'])),
|
||||
"fipsinstall fails when the DRBG CTR result is corrupted");
|
||||
@@ -16,15 +16,18 @@ use OpenSSL::Test::Utils;
|
||||
|
||||
setup("test_ec");
|
||||
|
||||
plan tests => 11;
|
||||
plan tests => 14;
|
||||
|
||||
require_ok(srctop_file('test','recipes','tconversion.pl'));
|
||||
|
||||
ok(run(test(["ectest"])), "running ectest");
|
||||
|
||||
# TODO: remove these when the 'ec' app is removed.
|
||||
# Also consider moving this to the 20-25 test section because it is testing
|
||||
# the command line tool in addition to the algorithm.
|
||||
SKIP: {
|
||||
skip "Skipping EC conversion test", 3
|
||||
if disabled("ec");
|
||||
if disabled("ec") || disabled('deprecated-3.0');
|
||||
|
||||
subtest 'EC conversions -- private key' => sub {
|
||||
tconversion("ec", srctop_file("test","testec-p256.pem"));
|
||||
@@ -38,29 +41,45 @@ SKIP: {
|
||||
};
|
||||
}
|
||||
|
||||
SKIP: {
|
||||
skip "Skipping PKEY conversion test", 3
|
||||
if disabled("ec");
|
||||
|
||||
subtest 'PKEY conversions -- private key' => sub {
|
||||
tconversion("pkey", srctop_file("test","testec-p256.pem"));
|
||||
};
|
||||
subtest 'PKEY conversions -- private key PKCS#8' => sub {
|
||||
tconversion("pkey", srctop_file("test","testec-p256.pem"), "pkey");
|
||||
};
|
||||
subtest 'PKEY conversions -- public key' => sub {
|
||||
tconversion("pkey", srctop_file("test","testecpub-p256.pem"),
|
||||
"pkey", "-pubin", "-pubout");
|
||||
};
|
||||
}
|
||||
|
||||
SKIP: {
|
||||
skip "Skipping EdDSA conversion test", 6
|
||||
if disabled("ec");
|
||||
|
||||
subtest 'Ed25519 conversions -- private key' => sub {
|
||||
tconversion("pkey", srctop_file("test","tested25519.pem"));
|
||||
tconversion("pkey", srctop_file("test", "tested25519.pem"));
|
||||
};
|
||||
subtest 'Ed25519 conversions -- private key PKCS#8' => sub {
|
||||
tconversion("pkey", srctop_file("test","tested25519.pem"), "pkey");
|
||||
tconversion("pkey", srctop_file("test", "tested25519.pem"), "pkey");
|
||||
};
|
||||
subtest 'Ed25519 conversions -- public key' => sub {
|
||||
tconversion("pkey", srctop_file("test","tested25519pub.pem"),
|
||||
tconversion("pkey", srctop_file("test", "tested25519pub.pem"),
|
||||
"pkey", "-pubin", "-pubout");
|
||||
};
|
||||
|
||||
subtest 'Ed448 conversions -- private key' => sub {
|
||||
tconversion("pkey", srctop_file("test","tested448.pem"));
|
||||
tconversion("pkey", srctop_file("test", "tested448.pem"));
|
||||
};
|
||||
subtest 'Ed448 conversions -- private key PKCS#8' => sub {
|
||||
tconversion("pkey", srctop_file("test","tested448.pem"), "pkey");
|
||||
tconversion("pkey", srctop_file("test", "tested448.pem"), "pkey");
|
||||
};
|
||||
subtest 'Ed448 conversions -- public key' => sub {
|
||||
tconversion("pkey", srctop_file("test","tested448pub.pem"),
|
||||
tconversion("pkey", srctop_file("test", "tested448pub.pem"),
|
||||
"pkey", "-pubin", "-pubout");
|
||||
};
|
||||
}
|
||||
@@ -23,20 +23,34 @@ plan skip_all => "EC isn't supported in this build"
|
||||
my @valid = glob(data_file("valid", "*.pem"));
|
||||
my @invalid = glob(data_file("invalid", "*.pem"));
|
||||
|
||||
plan tests => scalar @valid + scalar @invalid + scalar @valid + scalar @invalid;
|
||||
my $num_tests = scalar @valid + scalar @invalid;
|
||||
plan tests => 3 * $num_tests;
|
||||
|
||||
foreach (@valid) {
|
||||
ok(run(app([qw{openssl ecparam -noout -check -in}, $_])));
|
||||
SKIP: {
|
||||
skip "Skipping EC tests", 2 * $num_tests
|
||||
if disabled('deprecated-3.0');
|
||||
|
||||
foreach (@valid) {
|
||||
ok(run(app([qw{openssl ecparam -noout -check -in}, $_])));
|
||||
}
|
||||
|
||||
foreach (@valid) {
|
||||
ok(run(app([qw{openssl ecparam -noout -check_named -in}, $_])));
|
||||
}
|
||||
|
||||
foreach (@invalid) {
|
||||
ok(!run(app([qw{openssl ecparam -noout -check -in}, $_])));
|
||||
}
|
||||
|
||||
foreach (@invalid) {
|
||||
ok(!run(app([qw{openssl ecparam -noout -check_named -in}, $_])));
|
||||
}
|
||||
}
|
||||
|
||||
foreach (@valid) {
|
||||
ok(run(app([qw{openssl ecparam -noout -check_named -in}, $_])));
|
||||
ok(run(app([qw{openssl pkeyparam -noout -check -in}, $_])));
|
||||
}
|
||||
|
||||
foreach (@invalid) {
|
||||
ok(!run(app([qw{openssl ecparam -noout -check -in}, $_])));
|
||||
}
|
||||
|
||||
foreach (@invalid) {
|
||||
ok(!run(app([qw{openssl ecparam -noout -check_named -in}, $_])));
|
||||
ok(!run(app([qw{openssl pkeyparam -noout -check -in}, $_])));
|
||||
}
|
||||
@@ -55,42 +55,47 @@ sub run_mp_tests {
|
||||
my $name = ($evp ? "evp" : "") . "${bits}p${primes}";
|
||||
|
||||
if ($evp) {
|
||||
ok(run(app([ 'openssl', 'genpkey', '-out', 'rsamptest.pem',
|
||||
'-algorithm', 'RSA', '-pkeyopt', "rsa_keygen_primes:$primes",
|
||||
'-pkeyopt', "rsa_keygen_bits:$bits"])), "genrsa $name");
|
||||
ok(run(app([ 'openssl', 'genpkey', '-out', "rsamptest-$name.pem",
|
||||
'-algorithm', 'RSA',
|
||||
'-pkeyopt', "rsa_keygen_primes:$primes",
|
||||
'-pkeyopt', "rsa_keygen_bits:$bits"])),
|
||||
"genrsa $name");
|
||||
} else {
|
||||
ok(run(app([ 'openssl', 'genrsa', '-out', 'rsamptest.pem',
|
||||
'-primes', $primes, $bits])), "genrsa $name");
|
||||
ok(run(app([ 'openssl', 'genrsa', '-out', "rsamptest-$name.pem",
|
||||
'-primes', $primes, $bits])),
|
||||
"genrsa $name");
|
||||
}
|
||||
|
||||
ok(run(app([ 'openssl', 'rsa', '-check', '-in', 'rsamptest.pem',
|
||||
'-noout'])), "rsa -check $name");
|
||||
ok(run(app([ 'openssl', 'rsa', '-check', '-in', "rsamptest-$name.pem",
|
||||
'-noout'])),
|
||||
"rsa -check $name");
|
||||
|
||||
if ($evp) {
|
||||
ok(run(app([ 'openssl', 'pkeyutl', '-inkey', 'rsamptest.pem',
|
||||
ok(run(app([ 'openssl', 'pkeyutl', '-inkey', "rsamptest-$name.pem",
|
||||
'-encrypt', '-in', $cleartext,
|
||||
'-out', 'rsamptest.enc' ])), "rsa $name encrypt");
|
||||
ok(run(app([ 'openssl', 'pkeyutl', '-inkey', 'rsamptest.pem',
|
||||
'-decrypt', '-in', 'rsamptest.enc',
|
||||
'-out', 'rsamptest.dec' ])), "rsa $name decrypt");
|
||||
'-out', "rsamptest-$name.enc" ])),
|
||||
"rsa $name encrypt");
|
||||
ok(run(app([ 'openssl', 'pkeyutl', '-inkey', "rsamptest-$name.pem",
|
||||
'-decrypt', '-in', "rsamptest-$name.enc",
|
||||
'-out', "rsamptest-$name.dec" ])),
|
||||
"rsa $name decrypt");
|
||||
} else {
|
||||
ok(run(app([ 'openssl', 'rsautl', '-inkey', 'rsamptest.pem',
|
||||
ok(run(app([ 'openssl', 'rsautl', '-inkey', "rsamptest-$name.pem",
|
||||
'-encrypt', '-in', $cleartext,
|
||||
'-out', 'rsamptest.enc' ])), "rsa $name encrypt");
|
||||
ok(run(app([ 'openssl', 'rsautl', '-inkey', 'rsamptest.pem',
|
||||
'-decrypt', '-in', 'rsamptest.enc',
|
||||
'-out', 'rsamptest.dec' ])), "rsa $name decrypt");
|
||||
'-out', "rsamptest-$name.enc" ])),
|
||||
"rsa $name encrypt");
|
||||
ok(run(app([ 'openssl', 'rsautl', '-inkey', "rsamptest-$name.pem",
|
||||
'-decrypt', '-in', "rsamptest-$name.enc",
|
||||
'-out', "rsamptest-$name.dec" ])),
|
||||
"rsa $name decrypt");
|
||||
}
|
||||
|
||||
ok(check_msg(), "rsa $name check result");
|
||||
|
||||
# clean up temp files
|
||||
unlink 'rsamptest.pem';
|
||||
unlink 'rsamptest.enc';
|
||||
unlink 'rsamptest.dec';
|
||||
ok(check_msg("rsamptest-$name.dec"), "rsa $name check result");
|
||||
}
|
||||
}
|
||||
|
||||
sub check_msg {
|
||||
my $decrypted = shift;
|
||||
my $msg;
|
||||
my $dec;
|
||||
|
||||
@@ -98,7 +103,7 @@ sub check_msg {
|
||||
binmode $fh;
|
||||
read($fh, $msg, 10240);
|
||||
close $fh;
|
||||
open($fh, "<", "rsamptest.dec") or return 0;
|
||||
open($fh, "<", $decrypted ) or return 0;
|
||||
binmode $fh;
|
||||
read($fh, $dec, 10240);
|
||||
close $fh;
|
||||
|
||||
@@ -46,4 +46,3 @@ ok(run(app(['openssl', 'dgst', '-prverify', srctop_file('test', 'testrsa.pem'),
|
||||
'-sigopt', 'rsa_mgf1_md:sha512', '-signature', 'testrsapss.sig',
|
||||
srctop_file('test', 'testrsa.pem')])),
|
||||
"openssl dgst -prverify");
|
||||
unlink 'testrsapss.sig';
|
||||
@@ -11,6 +11,7 @@ use strict;
|
||||
use warnings;
|
||||
|
||||
use File::Spec;
|
||||
use File::Basename;
|
||||
use OpenSSL::Test qw/:DEFAULT with srctop_file/;
|
||||
use OpenSSL::Test::Utils;
|
||||
|
||||
@@ -26,29 +27,28 @@ sub tsignverify {
|
||||
my $data_to_sign = srctop_file('test', 'README');
|
||||
my $other_data = srctop_file('test', 'README.external');
|
||||
|
||||
my $sigfile = basename($privkey, '.pem') . '.sig';
|
||||
plan tests => 4;
|
||||
|
||||
ok(run(app(['openssl', 'dgst', '-sign', $privkey,
|
||||
'-out', 'testdgst.sig',
|
||||
'-out', $sigfile,
|
||||
$data_to_sign])),
|
||||
$testtext.": Generating signature");
|
||||
|
||||
ok(run(app(['openssl', 'dgst', '-prverify', $privkey,
|
||||
'-signature', 'testdgst.sig',
|
||||
'-signature', $sigfile,
|
||||
$data_to_sign])),
|
||||
$testtext.": Verify signature with private key");
|
||||
|
||||
ok(run(app(['openssl', 'dgst', '-verify', $pubkey,
|
||||
'-signature', 'testdgst.sig',
|
||||
'-signature', $sigfile,
|
||||
$data_to_sign])),
|
||||
$testtext.": Verify signature with public key");
|
||||
|
||||
ok(!run(app(['openssl', 'dgst', '-verify', $pubkey,
|
||||
'-signature', 'testdgst.sig',
|
||||
'-signature', $sigfile,
|
||||
$other_data])),
|
||||
$testtext.": Expect failure verifying mismatching data");
|
||||
|
||||
unlink 'testdgst.sig';
|
||||
}
|
||||
|
||||
SKIP: {
|
||||
|
||||
@@ -62,9 +62,6 @@ plan tests => 2 + (scalar @ciphers)*2;
|
||||
ok(run(app([$cmd, @e, "-in", $test, "-out", $cipherfile]))
|
||||
&& run(app([$cmd, @d, "-in", $cipherfile, "-out", $clearfile]))
|
||||
&& compare_text($test,$clearfile) == 0, $t);
|
||||
unlink $cipherfile, $clearfile;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unlink $test;
|
||||
@@ -54,8 +54,5 @@ SKIP: {
|
||||
&& run(app([@common, "-d", "-in", $cipherfile, "-out", $clearfile]))
|
||||
&& compare_text($plaintext, $clearfile) == 0
|
||||
, $ciphername);
|
||||
unlink $cipherfile, $clearfile;
|
||||
}
|
||||
}
|
||||
|
||||
unlink $plaintext;
|
||||
@@ -10,6 +10,7 @@ use strict;
|
||||
use warnings;
|
||||
|
||||
use File::Spec;
|
||||
use File::Basename;
|
||||
use OpenSSL::Test qw/:DEFAULT srctop_file ok_nofips/;
|
||||
use OpenSSL::Test::Utils;
|
||||
|
||||
@@ -27,13 +28,13 @@ SKIP: {
|
||||
ok_nofips(run(app(([ 'openssl', 'pkeyutl', '-sign',
|
||||
'-in', srctop_file('test', 'certs', 'sm2.pem'),
|
||||
'-inkey', srctop_file('test', 'certs', 'sm2.key'),
|
||||
'-out', 'signature.dat', '-rawin',
|
||||
'-out', 'sm2.sig', '-rawin',
|
||||
'-digest', 'sm3', '-pkeyopt', 'sm2_id:someid']))),
|
||||
"Sign a piece of data using SM2");
|
||||
ok_nofips(run(app(([ 'openssl', 'pkeyutl', '-verify', '-certin',
|
||||
'-in', srctop_file('test', 'certs', 'sm2.pem'),
|
||||
'-inkey', srctop_file('test', 'certs', 'sm2.pem'),
|
||||
'-sigfile', 'signature.dat', '-rawin',
|
||||
'-sigfile', 'sm2.sig', '-rawin',
|
||||
'-digest', 'sm3', '-pkeyopt', 'sm2_id:someid']))),
|
||||
"Verify an SM2 signature against a piece of data");
|
||||
}
|
||||
@@ -46,29 +47,27 @@ SKIP: {
|
||||
ok(run(app(([ 'openssl', 'pkeyutl', '-sign', '-in',
|
||||
srctop_file('test', 'certs', 'server-ed25519-cert.pem'),
|
||||
'-inkey', srctop_file('test', 'certs', 'server-ed25519-key.pem'),
|
||||
'-out', 'signature.dat', '-rawin']))),
|
||||
'-out', 'Ed25519.sig', '-rawin']))),
|
||||
"Sign a piece of data using Ed25519");
|
||||
ok(run(app(([ 'openssl', 'pkeyutl', '-verify', '-certin', '-in',
|
||||
srctop_file('test', 'certs', 'server-ed25519-cert.pem'),
|
||||
'-inkey', srctop_file('test', 'certs', 'server-ed25519-cert.pem'),
|
||||
'-sigfile', 'signature.dat', '-rawin']))),
|
||||
'-sigfile', 'Ed25519.sig', '-rawin']))),
|
||||
"Verify an Ed25519 signature against a piece of data");
|
||||
|
||||
# Ed448
|
||||
ok(run(app(([ 'openssl', 'pkeyutl', '-sign', '-in',
|
||||
srctop_file('test', 'certs', 'server-ed448-cert.pem'),
|
||||
'-inkey', srctop_file('test', 'certs', 'server-ed448-key.pem'),
|
||||
'-out', 'signature.dat', '-rawin']))),
|
||||
'-out', 'Ed448.sig', '-rawin']))),
|
||||
"Sign a piece of data using Ed448");
|
||||
ok(run(app(([ 'openssl', 'pkeyutl', '-verify', '-certin', '-in',
|
||||
srctop_file('test', 'certs', 'server-ed448-cert.pem'),
|
||||
'-inkey', srctop_file('test', 'certs', 'server-ed448-cert.pem'),
|
||||
'-sigfile', 'signature.dat', '-rawin']))),
|
||||
'-sigfile', 'Ed448.sig', '-rawin']))),
|
||||
"Verify an Ed448 signature against a piece of data");
|
||||
}
|
||||
|
||||
unlink 'signature.dat';
|
||||
|
||||
sub tsignverify {
|
||||
my $testtext = shift;
|
||||
my $privkey = shift;
|
||||
@@ -77,7 +76,7 @@ sub tsignverify {
|
||||
|
||||
my $data_to_sign = srctop_file('test', 'README');
|
||||
my $other_data = srctop_file('test', 'README.external');
|
||||
my $sigfile = 'testpkeyutl.sig';
|
||||
my $sigfile = basename($privkey, '.pem') . '.sig';
|
||||
|
||||
my @args = ();
|
||||
plan tests => 4;
|
||||
@@ -113,8 +112,6 @@ sub tsignverify {
|
||||
push(@args, @extraopts);
|
||||
ok(!run(app([@args])),
|
||||
$testtext.": Expect failure verifying mismatching data");
|
||||
|
||||
unlink $sigfile;
|
||||
}
|
||||
|
||||
SKIP: {
|
||||
|
||||
@@ -40,7 +40,6 @@ ok(run(app(["openssl", "crl", "-text", "-in", $pem, "-out", $out,
|
||||
"-nameopt", "utf8"])));
|
||||
is(cmp_text($out, srctop_file("test/certs", "cyrillic_crl.utf8")),
|
||||
0, 'Comparing utf8 output');
|
||||
unlink $out;
|
||||
|
||||
sub compare1stline {
|
||||
my ($cmdarray, $str) = @_;
|
||||
|
||||
+14
-16
@@ -51,13 +51,13 @@ subtest "generating certificate requests with RSA" => sub {
|
||||
|
||||
ok(run(app(["openssl", "req",
|
||||
"-config", srctop_file("test", "test.cnf"),
|
||||
"-new", "-out", "testreq.pem", "-utf8",
|
||||
"-new", "-out", "testreq-rsa.pem", "-utf8",
|
||||
"-key", srctop_file("test", "testrsa.pem")])),
|
||||
"Generating request");
|
||||
|
||||
ok(run(app(["openssl", "req",
|
||||
"-config", srctop_file("test", "test.cnf"),
|
||||
"-verify", "-in", "testreq.pem", "-noout"])),
|
||||
"-verify", "-in", "testreq-rsa.pem", "-noout"])),
|
||||
"Verifying signature on request");
|
||||
}
|
||||
};
|
||||
@@ -71,13 +71,13 @@ subtest "generating certificate requests with DSA" => sub {
|
||||
|
||||
ok(run(app(["openssl", "req",
|
||||
"-config", srctop_file("test", "test.cnf"),
|
||||
"-new", "-out", "testreq.pem", "-utf8",
|
||||
"-new", "-out", "testreq-dsa.pem", "-utf8",
|
||||
"-key", srctop_file("test", "testdsa.pem")])),
|
||||
"Generating request");
|
||||
|
||||
ok(run(app(["openssl", "req",
|
||||
"-config", srctop_file("test", "test.cnf"),
|
||||
"-verify", "-in", "testreq.pem", "-noout"])),
|
||||
"-verify", "-in", "testreq-dsa.pem", "-noout"])),
|
||||
"Verifying signature on request");
|
||||
}
|
||||
};
|
||||
@@ -91,13 +91,13 @@ subtest "generating certificate requests with ECDSA" => sub {
|
||||
|
||||
ok(run(app(["openssl", "req",
|
||||
"-config", srctop_file("test", "test.cnf"),
|
||||
"-new", "-out", "testreq.pem", "-utf8",
|
||||
"-new", "-out", "testreq-ec.pem", "-utf8",
|
||||
"-key", srctop_file("test", "testec-p256.pem")])),
|
||||
"Generating request");
|
||||
|
||||
ok(run(app(["openssl", "req",
|
||||
"-config", srctop_file("test", "test.cnf"),
|
||||
"-verify", "-in", "testreq.pem", "-noout"])),
|
||||
"-verify", "-in", "testreq-ec.pem", "-noout"])),
|
||||
"Verifying signature on request");
|
||||
}
|
||||
};
|
||||
@@ -111,13 +111,13 @@ subtest "generating certificate requests with Ed25519" => sub {
|
||||
|
||||
ok(run(app(["openssl", "req",
|
||||
"-config", srctop_file("test", "test.cnf"),
|
||||
"-new", "-out", "testreq.pem", "-utf8",
|
||||
"-new", "-out", "testreq-ed25519.pem", "-utf8",
|
||||
"-key", srctop_file("test", "tested25519.pem")])),
|
||||
"Generating request");
|
||||
|
||||
ok(run(app(["openssl", "req",
|
||||
"-config", srctop_file("test", "test.cnf"),
|
||||
"-verify", "-in", "testreq.pem", "-noout"])),
|
||||
"-verify", "-in", "testreq-ed25519.pem", "-noout"])),
|
||||
"Verifying signature on request");
|
||||
}
|
||||
};
|
||||
@@ -131,13 +131,13 @@ subtest "generating certificate requests with Ed448" => sub {
|
||||
|
||||
ok(run(app(["openssl", "req",
|
||||
"-config", srctop_file("test", "test.cnf"),
|
||||
"-new", "-out", "testreq.pem", "-utf8",
|
||||
"-new", "-out", "testreq-ed448.pem", "-utf8",
|
||||
"-key", srctop_file("test", "tested448.pem")])),
|
||||
"Generating request");
|
||||
|
||||
ok(run(app(["openssl", "req",
|
||||
"-config", srctop_file("test", "test.cnf"),
|
||||
"-verify", "-in", "testreq.pem", "-noout"])),
|
||||
"-verify", "-in", "testreq-ed448.pem", "-noout"])),
|
||||
"Verifying signature on request");
|
||||
}
|
||||
};
|
||||
@@ -164,12 +164,12 @@ subtest "generating SM2 certificate requests" => sub {
|
||||
"-config", srctop_file("test", "test.cnf"),
|
||||
"-new", "-key", srctop_file("test", "certs", "sm2.key"),
|
||||
"-sigopt", "sm2_id:1234567812345678",
|
||||
"-out", "testreq.pem", "-sm3"])),
|
||||
"-out", "testreq-sm2.pem", "-sm3"])),
|
||||
"Generating SM2 certificate request");
|
||||
|
||||
ok(run(app(["openssl", "req",
|
||||
"-config", srctop_file("test", "test.cnf"),
|
||||
"-verify", "-in", "testreq.pem", "-noout",
|
||||
"-verify", "-in", "testreq-sm2.pem", "-noout",
|
||||
"-sm2-id", "1234567812345678", "-sm3"])),
|
||||
"Verifying signature on SM2 certificate request");
|
||||
|
||||
@@ -177,12 +177,12 @@ subtest "generating SM2 certificate requests" => sub {
|
||||
"-config", srctop_file("test", "test.cnf"),
|
||||
"-new", "-key", srctop_file("test", "certs", "sm2.key"),
|
||||
"-sigopt", "sm2_hex_id:DEADBEEF",
|
||||
"-out", "testreq.pem", "-sm3"])),
|
||||
"-out", "testreq-sm2.pem", "-sm3"])),
|
||||
"Generating SM2 certificate request with hex id");
|
||||
|
||||
ok(run(app(["openssl", "req",
|
||||
"-config", srctop_file("test", "test.cnf"),
|
||||
"-verify", "-in", "testreq.pem", "-noout",
|
||||
"-verify", "-in", "testreq-sm2.pem", "-noout",
|
||||
"-sm2-hex-id", "DEADBEEF", "-sm3"])),
|
||||
"Verifying signature on SM2 certificate request");
|
||||
}
|
||||
@@ -195,8 +195,6 @@ run_conversion('req conversions',
|
||||
run_conversion('req conversions -- testreq2',
|
||||
srctop_file("test", "testreq2.pem"));
|
||||
|
||||
unlink "testkey.pem", "testreq.pem";
|
||||
|
||||
sub run_conversion {
|
||||
my $title = shift;
|
||||
my $reqfile = shift;
|
||||
|
||||
@@ -21,19 +21,19 @@ plan tests => 10;
|
||||
require_ok(srctop_file('test','recipes','tconversion.pl'));
|
||||
|
||||
my $pem = srctop_file("test/certs", "cyrillic.pem");
|
||||
my $out = "cyrillic.out";
|
||||
my $out_msb = "out-cyrillic.msb";
|
||||
my $out_utf8 = "out-cyrillic.utf8";
|
||||
my $msb = srctop_file("test/certs", "cyrillic.msb");
|
||||
my $utf = srctop_file("test/certs", "cyrillic.utf8");
|
||||
|
||||
ok(run(app(["openssl", "x509", "-text", "-in", $pem, "-out", $out,
|
||||
ok(run(app(["openssl", "x509", "-text", "-in", $pem, "-out", $out_msb,
|
||||
"-nameopt", "esc_msb"])));
|
||||
is(cmp_text($out, srctop_file("test/certs", "cyrillic.msb")),
|
||||
is(cmp_text($out_msb, srctop_file("test/certs", "cyrillic.msb")),
|
||||
0, 'Comparing esc_msb output');
|
||||
ok(run(app(["openssl", "x509", "-text", "-in", $pem, "-out", $out,
|
||||
ok(run(app(["openssl", "x509", "-text", "-in", $pem, "-out", $out_utf8,
|
||||
"-nameopt", "utf8"])));
|
||||
is(cmp_text($out, srctop_file("test/certs", "cyrillic.utf8")),
|
||||
is(cmp_text($out_utf8, srctop_file("test/certs", "cyrillic.utf8")),
|
||||
0, 'Comparing utf8 output');
|
||||
unlink $out;
|
||||
|
||||
SKIP: {
|
||||
skip "EC disabled", 1 if disabled("ec");
|
||||
@@ -54,8 +54,6 @@ SKIP: {
|
||||
&&
|
||||
run(app(["openssl", "verify", "-no_check_time",
|
||||
"-trusted", $selfout, $testcert])));
|
||||
unlink $pubkey;
|
||||
unlink $selfout;
|
||||
}
|
||||
|
||||
subtest 'x509 -- x.509 v1 certificate' => sub {
|
||||
|
||||
@@ -414,7 +414,7 @@ Reason = operation not supported for this keytype
|
||||
Sign = RSA-2048
|
||||
Availablein = default
|
||||
Ctrl = rsa_mgf1_md:sha1
|
||||
Result = PKEY_CTRL_INVALID
|
||||
Result = PKEY_CTRL_ERROR
|
||||
Reason = invalid mgf1 md
|
||||
|
||||
# RSA PSS key tests
|
||||
|
||||
@@ -33,16 +33,16 @@ my @testdata = (
|
||||
providers => [ 'default' ],
|
||||
tests => [ { providers => [] },
|
||||
{ },
|
||||
{ args => [ '-property', 'default=yes' ],
|
||||
message => 'using property "default=yes"' },
|
||||
{ args => [ '-property', 'fips=no' ],
|
||||
message => 'using property "fips=no"' },
|
||||
{ args => [ '-property', 'default=no', '-fetchfail' ],
|
||||
{ args => [ '-property', 'provider=default' ],
|
||||
message => 'using property "provider=default"' },
|
||||
{ args => [ '-property', 'provider!=fips' ],
|
||||
message => 'using property "provider!=fips"' },
|
||||
{ args => [ '-property', 'provider!=default', '-fetchfail' ],
|
||||
message =>
|
||||
'using property "default=no" is expected to fail' },
|
||||
{ args => [ '-property', 'fips=yes', '-fetchfail' ],
|
||||
'using property "provider!=default" is expected to fail' },
|
||||
{ args => [ '-property', 'provider=fips', '-fetchfail' ],
|
||||
message =>
|
||||
'using property "fips=yes" is expected to fail' } ] }
|
||||
'using property "provider=fips" is expected to fail' } ] }
|
||||
);
|
||||
|
||||
unless ($no_fips) {
|
||||
@@ -60,28 +60,48 @@ unless ($no_fips) {
|
||||
providers => [ 'fips' ],
|
||||
tests => [
|
||||
{ args => [ '-property', '' ] },
|
||||
{ args => [ '-property', 'provider=fips' ],
|
||||
message => 'using property "provider=fips"' },
|
||||
{ args => [ '-property', 'provider!=default' ],
|
||||
message => 'using property "provider!=default"' },
|
||||
{ args => [ '-property', 'provider=default', '-fetchfail' ],
|
||||
message =>
|
||||
'using property "provider=default" is expected to fail' },
|
||||
{ args => [ '-property', 'provider!=fips', '-fetchfail' ],
|
||||
message =>
|
||||
'using property "provider!=fips" is expected to fail' },
|
||||
{ args => [ '-property', 'fips=yes' ],
|
||||
message => 'using property "fips=yes"' },
|
||||
{ args => [ '-property', 'default=no' ],
|
||||
message => 'using property "default = no"' },
|
||||
{ args => [ '-property', 'default=yes', '-fetchfail' ],
|
||||
message =>
|
||||
'using property "default=yes" is expected to fail' },
|
||||
{ args => [ '-property', 'fips=no', '-fetchfail' ],
|
||||
message =>
|
||||
'using property "fips=no" is expected to fail' } ] },
|
||||
{ args => [ '-property', 'fips!=no' ],
|
||||
message => 'using property "fips!=no"' },
|
||||
{ args => [ '-property', '-fips' ],
|
||||
message => 'using property "-fips"' },
|
||||
{ args => [ '-property', 'fips=no', '-fetchfail' ],
|
||||
message => 'using property "fips=no is expected to fail"' },
|
||||
{ args => [ '-property', 'fips!=yes', '-fetchfail' ],
|
||||
message => 'using property "fips!=yes is expected to fail"' } ] },
|
||||
{ config => srctop_file("test", "default-and-fips.cnf"),
|
||||
providers => [ 'default', 'fips' ],
|
||||
tests => [
|
||||
{ args => [ '-property', '' ] },
|
||||
{ args => [ '-property', 'default=no' ],
|
||||
message => 'using property "default=no"' },
|
||||
{ args => [ '-property', 'default=yes' ],
|
||||
message => 'using property "default=yes"' },
|
||||
{ args => [ '-property', 'fips=no' ],
|
||||
message => 'using property "fips=no"' },
|
||||
{ args => [ '-property', 'fips=yes' ],
|
||||
message => 'using property "fips=yes"' } ] }
|
||||
{ args => [ '-property', 'provider!=default' ],
|
||||
message => 'using property "provider!=default"' },
|
||||
{ args => [ '-property', 'provider=default' ],
|
||||
message => 'using property "provider=default"' },
|
||||
{ args => [ '-property', 'provider!=fips' ],
|
||||
message => 'using property "provider!=fips"' },
|
||||
{ args => [ '-property', 'provider=fips' ],
|
||||
message => 'using property "provider=fips"' },
|
||||
{ args => [ '-property', 'fips=yes' ],
|
||||
message => 'using property "fips=yes"' },
|
||||
{ args => [ '-property', 'fips!=no' ],
|
||||
message => 'using property "fips!=no"' },
|
||||
{ args => [ '-property', '-fips' ],
|
||||
message => 'using property "-fips"' },
|
||||
{ args => [ '-property', 'fips=no' ],
|
||||
message => 'using property "fips=no"' },
|
||||
{ args => [ '-property', 'fips!=yes' ],
|
||||
message => 'using property "fips!=yes"' } ] },
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -9,5 +9,12 @@
|
||||
|
||||
|
||||
use OpenSSL::Test::Simple;
|
||||
use OpenSSL::Test qw/:DEFAULT srctop_dir/;
|
||||
|
||||
simple_test("test_evp_pkey_provided", "evp_pkey_provided_test");
|
||||
setup("test_evp_pkey_provided");
|
||||
|
||||
plan tests => 1;
|
||||
|
||||
ok(run(test(["evp_pkey_provided_test",
|
||||
srctop_dir("test", "recipes", "30-test_evp_pkey_provided")])),
|
||||
"running evp_pkey_provided_test");
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MCQCAQAwFwYJKoZIhvcNAQMBMAoCBQCLtF9TAgECBAYCBGZsKwY=
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,5 @@
|
||||
DH Private-Key: (32 bit)
|
||||
private-key: 1718364934 (0x666c2b06)
|
||||
public-key: 1873206864 (0x6fa6de50)
|
||||
prime: 2343853907 (0x8bb45f53)
|
||||
generator: 2 (0x2)
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MCIwFwYJKoZIhvcNAQMBMAoCBQCLtF9TAgECAwcAAgRvpt5Q
|
||||
-----END PUBLIC KEY-----
|
||||
@@ -0,0 +1,4 @@
|
||||
DH Public-Key: (32 bit)
|
||||
public-key: 1873206864 (0x6fa6de50)
|
||||
prime: 2343853907 (0x8bb45f53)
|
||||
generator: 2 (0x2)
|
||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MEQCAQAwDQYJKoZIhvcNAQEBBQAEMDAuAgEAAgUAvHR/xQIDAQABAgR7EzOZAgMA
|
||||
6WMCAwDOtwIDAIWZAgMAvYcCAwDMOw==
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,9 @@
|
||||
Private-Key: (32 bit, 2 primes)
|
||||
modulus: 3161751493 (0xbc747fc5)
|
||||
publicExponent: 65537 (0x10001)
|
||||
privateExponent: 2064855961 (0x7b133399)
|
||||
prime1: 59747 (0xe963)
|
||||
prime2: 52919 (0xceb7)
|
||||
exponent1: 34201 (0x8599)
|
||||
exponent2: 48519 (0xbd87)
|
||||
coefficient: 52283 (0xcc3b)
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MCAwDQYJKoZIhvcNAQEBBQADDwAwDAIFALx0f8UCAwEAAQ==
|
||||
-----END PUBLIC KEY-----
|
||||
@@ -0,0 +1,3 @@
|
||||
Public-Key: (32 bit)
|
||||
Modulus: 3161751493 (0xbc747fc5)
|
||||
Exponent: 65537 (0x10001)
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MC4CAQAwBQYDK2VuBCIEIHcHbQpzGKV9PBbBclGyZkXfTC+H68CZKrF3+6UduSwq
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,9 @@
|
||||
X25519 Private-Key:
|
||||
priv:
|
||||
77:07:6d:0a:73:18:a5:7d:3c:16:c1:72:51:b2:66:
|
||||
45:df:4c:2f:87:eb:c0:99:2a:b1:77:fb:a5:1d:b9:
|
||||
2c:2a
|
||||
pub:
|
||||
85:20:f0:09:89:30:a7:54:74:8b:7d:dc:b4:3e:f7:
|
||||
5a:0d:bf:3a:0d:26:38:1a:f4:eb:a4:a9:8e:aa:9b:
|
||||
4e:6a
|
||||
Binary file not shown.
@@ -0,0 +1,3 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MCowBQYDK2VuAyEAhSDwCYkwp1R0i33ctD73Wg2/Og0mOBr066SpjqqbTmo=
|
||||
-----END PUBLIC KEY-----
|
||||
@@ -0,0 +1,5 @@
|
||||
X25519 Public-Key:
|
||||
pub:
|
||||
85:20:f0:09:89:30:a7:54:74:8b:7d:dc:b4:3e:f7:
|
||||
5a:0d:bf:3a:0d:26:38:1a:f4:eb:a4:a9:8e:aa:9b:
|
||||
4e:6a
|
||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MEYCAQAwBQYDK2VvBDoEOJqPSSXRUZ9Xdc9GsEtYANTunui66LxVZdSYwo3Zybr1
|
||||
dKlBl0SJc5EAY4Km8SerHZrC2MClmHJr
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,11 @@
|
||||
X448 Private-Key:
|
||||
priv:
|
||||
9a:8f:49:25:d1:51:9f:57:75:cf:46:b0:4b:58:00:
|
||||
d4:ee:9e:e8:ba:e8:bc:55:65:d4:98:c2:8d:d9:c9:
|
||||
ba:f5:74:a9:41:97:44:89:73:91:00:63:82:a6:f1:
|
||||
27:ab:1d:9a:c2:d8:c0:a5:98:72:6b
|
||||
pub:
|
||||
9b:08:f7:cc:31:b7:e3:e6:7d:22:d5:ae:a1:21:07:
|
||||
4a:27:3b:d2:b8:3d:e0:9c:63:fa:a7:3d:2c:22:c5:
|
||||
d9:bb:c8:36:64:72:41:d9:53:d4:0c:5b:12:da:88:
|
||||
12:0d:53:17:7f:80:e5:32:c4:1f:a0
|
||||
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MEIwBQYDK2VvAzkAmwj3zDG34+Z9ItWuoSEHSic70rg94Jxj+qc9LCLF2bvINmRy
|
||||
QdlT1AxbEtqIEg1TF3+A5TLEH6A=
|
||||
-----END PUBLIC KEY-----
|
||||
@@ -0,0 +1,6 @@
|
||||
X448 Public-Key:
|
||||
pub:
|
||||
9b:08:f7:cc:31:b7:e3:e6:7d:22:d5:ae:a1:21:07:
|
||||
4a:27:3b:d2:b8:3d:e0:9c:63:fa:a7:3d:2c:22:c5:
|
||||
d9:bb:c8:36:64:72:41:d9:53:d4:0c:5b:12:da:88:
|
||||
12:0d:53:17:7f:80:e5:32:c4:1f:a0
|
||||
@@ -68,10 +68,6 @@ SKIP: {
|
||||
"Signing SM2 certificate request");
|
||||
}
|
||||
|
||||
rmtree("demoCA", { safe => 0 });
|
||||
unlink "newcert.pem", "newreq.pem", "newkey.pem", "sm2-test.crt";
|
||||
|
||||
|
||||
sub yes {
|
||||
my $cntr = 10;
|
||||
open(PIPE, "|-", join(" ",@_));
|
||||
|
||||
+408
-339
@@ -27,155 +27,175 @@ my $smcont = srctop_file("test", "smcont.txt");
|
||||
my ($no_des, $no_dh, $no_dsa, $no_ec, $no_ec2m, $no_rc2, $no_zlib)
|
||||
= disabled qw/des dh dsa ec ec2m rc2 zlib/;
|
||||
|
||||
plan tests => 6;
|
||||
plan tests => 7;
|
||||
|
||||
my @smime_pkcs7_tests = (
|
||||
|
||||
[ "signed content DER format, RSA key",
|
||||
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
|
||||
"-certfile", catfile($smdir, "smroot.pem"),
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
|
||||
"-certfile", catfile($smdir, "smroot.pem"),
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed detached content DER format, RSA key",
|
||||
[ "-sign", "-in", $smcont, "-outform", "DER",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt",
|
||||
"-content", $smcont ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt",
|
||||
"-content", $smcont ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed content test streaming BER format, RSA",
|
||||
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
|
||||
"-stream",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
|
||||
"-stream",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed content DER format, DSA key",
|
||||
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
|
||||
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
|
||||
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed detached content DER format, DSA key",
|
||||
[ "-sign", "-in", $smcont, "-outform", "DER",
|
||||
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt",
|
||||
"-content", $smcont ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
|
||||
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt",
|
||||
"-content", $smcont ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed detached content DER format, add RSA signer (with DSA existing)",
|
||||
[ "-resign", "-inform", "DER", "-in", "test.cms", "-outform", "DER",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test2.cms" ],
|
||||
[ "-verify", "-in", "test2.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt",
|
||||
"-content", $smcont ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
|
||||
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
|
||||
[ "{cmd1}", "-resign", "-in", "{output}.cms", "-inform", "DER", "-outform", "DER",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}2.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}2.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt",
|
||||
"-content", $smcont ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed content test streaming BER format, DSA key",
|
||||
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
|
||||
"-stream",
|
||||
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
|
||||
"-nodetach", "-stream",
|
||||
"-signer", catfile($smdir, "smdsa1.pem"), "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed content test streaming BER format, 2 DSA and 2 RSA keys",
|
||||
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-signer", catfile($smdir, "smrsa2.pem"),
|
||||
"-signer", catfile($smdir, "smdsa1.pem"),
|
||||
"-signer", catfile($smdir, "smdsa2.pem"),
|
||||
"-stream", "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
|
||||
"-nodetach", "-stream",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-signer", catfile($smdir, "smrsa2.pem"),
|
||||
"-signer", catfile($smdir, "smdsa1.pem"),
|
||||
"-signer", catfile($smdir, "smdsa2.pem"),
|
||||
"-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed content test streaming BER format, 2 DSA and 2 RSA keys, no attributes",
|
||||
[ "-sign", "-in", $smcont, "-outform", "DER", "-noattr", "-nodetach",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-signer", catfile($smdir, "smrsa2.pem"),
|
||||
"-signer", catfile($smdir, "smdsa1.pem"),
|
||||
"-signer", catfile($smdir, "smdsa2.pem"),
|
||||
"-stream", "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
|
||||
"-noattr", "-nodetach", "-stream",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-signer", catfile($smdir, "smrsa2.pem"),
|
||||
"-signer", catfile($smdir, "smdsa1.pem"),
|
||||
"-signer", catfile($smdir, "smdsa2.pem"),
|
||||
"-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed content S/MIME format, RSA key SHA1",
|
||||
[ "-sign", "-in", $smcont, "-md", "sha1",
|
||||
"-certfile", catfile($smdir, "smroot.pem"),
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-md", "sha1",
|
||||
"-certfile", catfile($smdir, "smroot.pem"),
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed content test streaming S/MIME format, 2 DSA and 2 RSA keys",
|
||||
[ "-sign", "-in", $smcont, "-nodetach",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-signer", catfile($smdir, "smrsa2.pem"),
|
||||
"-signer", catfile($smdir, "smdsa1.pem"),
|
||||
"-signer", catfile($smdir, "smdsa2.pem"),
|
||||
"-stream", "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-nodetach",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-signer", catfile($smdir, "smrsa2.pem"),
|
||||
"-signer", catfile($smdir, "smdsa1.pem"),
|
||||
"-signer", catfile($smdir, "smdsa2.pem"),
|
||||
"-stream", "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed content test streaming multipart S/MIME format, 2 DSA and 2 RSA keys",
|
||||
[ "-sign", "-in", $smcont,
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-signer", catfile($smdir, "smrsa2.pem"),
|
||||
"-signer", catfile($smdir, "smdsa1.pem"),
|
||||
"-signer", catfile($smdir, "smdsa2.pem"),
|
||||
"-stream", "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont,
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-signer", catfile($smdir, "smrsa2.pem"),
|
||||
"-signer", catfile($smdir, "smdsa1.pem"),
|
||||
"-signer", catfile($smdir, "smdsa2.pem"),
|
||||
"-stream", "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming S/MIME format, DES, 3 recipients",
|
||||
[ "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "test.cms",
|
||||
catfile($smdir, "smrsa1.pem"),
|
||||
catfile($smdir, "smrsa2.pem"),
|
||||
catfile($smdir, "smrsa3.pem") ],
|
||||
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
|
||||
"-in", "test.cms", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "{output}.cms",
|
||||
catfile($smdir, "smrsa1.pem"),
|
||||
catfile($smdir, "smrsa2.pem"),
|
||||
catfile($smdir, "smrsa3.pem") ],
|
||||
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
|
||||
"-in", "{output}.cms", "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming S/MIME format, DES, 3 recipients, 3rd used",
|
||||
[ "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "test.cms",
|
||||
catfile($smdir, "smrsa1.pem"),
|
||||
catfile($smdir, "smrsa2.pem"),
|
||||
catfile($smdir, "smrsa3.pem") ],
|
||||
[ "-decrypt", "-recip", catfile($smdir, "smrsa3.pem"),
|
||||
"-in", "test.cms", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "{output}.cms",
|
||||
catfile($smdir, "smrsa1.pem"),
|
||||
catfile($smdir, "smrsa2.pem"),
|
||||
catfile($smdir, "smrsa3.pem") ],
|
||||
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa3.pem"),
|
||||
"-in", "{output}.cms", "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming S/MIME format, DES, 3 recipients, key only used",
|
||||
[ "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "test.cms",
|
||||
catfile($smdir, "smrsa1.pem"),
|
||||
catfile($smdir, "smrsa2.pem"),
|
||||
catfile($smdir, "smrsa3.pem") ],
|
||||
[ "-decrypt", "-inkey", catfile($smdir, "smrsa3.pem"),
|
||||
"-in", "test.cms", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "{output}.cms",
|
||||
catfile($smdir, "smrsa1.pem"),
|
||||
catfile($smdir, "smrsa2.pem"),
|
||||
catfile($smdir, "smrsa3.pem") ],
|
||||
[ "{cmd2}", "-decrypt", "-inkey", catfile($smdir, "smrsa3.pem"),
|
||||
"-in", "{output}.cms", "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming S/MIME format, AES-256 cipher, 3 recipients",
|
||||
[ "-encrypt", "-in", $smcont,
|
||||
"-aes256", "-stream", "-out", "test.cms",
|
||||
catfile($smdir, "smrsa1.pem"),
|
||||
catfile($smdir, "smrsa2.pem"),
|
||||
catfile($smdir, "smrsa3.pem") ],
|
||||
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
|
||||
"-in", "test.cms", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-encrypt", "-in", $smcont,
|
||||
"-aes256", "-stream", "-out", "{output}.cms",
|
||||
catfile($smdir, "smrsa1.pem"),
|
||||
catfile($smdir, "smrsa2.pem"),
|
||||
catfile($smdir, "smrsa3.pem") ],
|
||||
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
|
||||
"-in", "{output}.cms", "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
);
|
||||
@@ -183,125 +203,154 @@ my @smime_pkcs7_tests = (
|
||||
my @smime_cms_tests = (
|
||||
|
||||
[ "signed content test streaming BER format, 2 DSA and 2 RSA keys, keyid",
|
||||
[ "-sign", "-in", $smcont, "-outform", "DER", "-nodetach", "-keyid",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-signer", catfile($smdir, "smrsa2.pem"),
|
||||
"-signer", catfile($smdir, "smdsa1.pem"),
|
||||
"-signer", catfile($smdir, "smdsa2.pem"),
|
||||
"-stream", "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "DER",
|
||||
"-nodetach", "-keyid",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-signer", catfile($smdir, "smrsa2.pem"),
|
||||
"-signer", catfile($smdir, "smdsa1.pem"),
|
||||
"-signer", catfile($smdir, "smdsa2.pem"),
|
||||
"-stream", "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed content test streaming PEM format, 2 DSA and 2 RSA keys",
|
||||
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-signer", catfile($smdir, "smrsa2.pem"),
|
||||
"-signer", catfile($smdir, "smdsa1.pem"),
|
||||
"-signer", catfile($smdir, "smdsa2.pem"),
|
||||
"-stream", "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "PEM",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-signer", catfile($smdir, "smrsa2.pem"),
|
||||
"-signer", catfile($smdir, "smdsa1.pem"),
|
||||
"-signer", catfile($smdir, "smdsa2.pem"),
|
||||
"-stream", "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed content MIME format, RSA key, signed receipt request",
|
||||
[ "-sign", "-in", $smcont, "-signer", catfile($smdir, "smrsa1.pem"), "-nodetach",
|
||||
"-receipt_request_to", "test\@openssl.org", "-receipt_request_all",
|
||||
"-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-nodetach",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-receipt_request_to", "test\@openssl.org", "-receipt_request_all",
|
||||
"-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed receipt MIME format, RSA key",
|
||||
[ "-sign_receipt", "-in", "test.cms",
|
||||
"-signer", catfile($smdir, "smrsa2.pem"),
|
||||
"-out", "test2.cms" ],
|
||||
[ "-verify_receipt", "test2.cms", "-in", "test.cms",
|
||||
"-CAfile", catfile($smdir, "smroot.pem") ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-nodetach",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-receipt_request_to", "test\@openssl.org", "-receipt_request_all",
|
||||
"-out", "{output}.cms" ],
|
||||
[ "{cmd1}", "-sign_receipt", "-in", "{output}.cms",
|
||||
"-signer", catfile($smdir, "smrsa2.pem"), "-out", "{output}2.cms" ],
|
||||
[ "{cmd2}", "-verify_receipt", "{output}2.cms", "-in", "{output}.cms",
|
||||
"-CAfile", catfile($smdir, "smroot.pem") ]
|
||||
],
|
||||
|
||||
[ "signed content DER format, RSA key, CAdES-BES compatible",
|
||||
[ "-sign", "-cades", "-in", $smcont, "-outform", "DER", "-nodetach",
|
||||
[ "{cmd1}", "-sign", "-cades", "-in", $smcont, "-outform", "DER",
|
||||
"-nodetach",
|
||||
"-certfile", catfile($smdir, "smroot.pem"),
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed content DER format, RSA key, SHA256 md, CAdES-BES compatible",
|
||||
[ "-sign", "-cades", "-md", "sha256", "-in", $smcont, "-outform",
|
||||
"DER", "-nodetach", "-certfile", catfile($smdir, "smroot.pem"),
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-cades", "-md", "sha256", "-in", $smcont,
|
||||
"-outform", "DER", "-nodetach",
|
||||
"-certfile", catfile($smdir, "smroot.pem"),
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming S/MIME format, DES, 3 recipients, keyid",
|
||||
[ "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "test.cms", "-keyid",
|
||||
catfile($smdir, "smrsa1.pem"),
|
||||
catfile($smdir, "smrsa2.pem"),
|
||||
catfile($smdir, "smrsa3.pem") ],
|
||||
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
|
||||
"-in", "test.cms", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "{output}.cms", "-keyid",
|
||||
catfile($smdir, "smrsa1.pem"),
|
||||
catfile($smdir, "smrsa2.pem"),
|
||||
catfile($smdir, "smrsa3.pem") ],
|
||||
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
|
||||
"-in", "{output}.cms", "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming PEM format, KEK",
|
||||
[ "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
|
||||
"-stream", "-out", "test.cms",
|
||||
"-secretkey", "000102030405060708090A0B0C0D0E0F",
|
||||
"-secretkeyid", "C0FEE0" ],
|
||||
[ "-decrypt", "-in", "test.cms", "-out", "smtst.txt", "-inform", "PEM",
|
||||
"-secretkey", "000102030405060708090A0B0C0D0E0F",
|
||||
"-secretkeyid", "C0FEE0" ]
|
||||
[ "{cmd1}", "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
|
||||
"-stream", "-out", "{output}.cms",
|
||||
"-secretkey", "000102030405060708090A0B0C0D0E0F",
|
||||
"-secretkeyid", "C0FEE0" ],
|
||||
[ "{cmd2}", "-decrypt", "-in", "{output}.cms", "-out", "{output}.txt",
|
||||
"-inform", "PEM",
|
||||
"-secretkey", "000102030405060708090A0B0C0D0E0F",
|
||||
"-secretkeyid", "C0FEE0" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming PEM format, KEK, key only",
|
||||
[ "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
|
||||
"-stream", "-out", "test.cms",
|
||||
"-secretkey", "000102030405060708090A0B0C0D0E0F",
|
||||
"-secretkeyid", "C0FEE0" ],
|
||||
[ "-decrypt", "-in", "test.cms", "-out", "smtst.txt", "-inform", "PEM",
|
||||
"-secretkey", "000102030405060708090A0B0C0D0E0F" ]
|
||||
[ "{cmd1}", "-encrypt", "-in", $smcont, "-outform", "PEM", "-aes128",
|
||||
"-stream", "-out", "{output}.cms",
|
||||
"-secretkey", "000102030405060708090A0B0C0D0E0F",
|
||||
"-secretkeyid", "C0FEE0" ],
|
||||
[ "{cmd2}", "-decrypt", "-in", "{output}.cms", "-out", "{output}.txt",
|
||||
"-inform", "PEM",
|
||||
"-secretkey", "000102030405060708090A0B0C0D0E0F" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "data content test streaming PEM format",
|
||||
[ "-data_create", "-in", $smcont, "-outform", "PEM", "-nodetach",
|
||||
"-stream", "-out", "test.cms" ],
|
||||
[ "-data_out", "-in", "test.cms", "-inform", "PEM", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-data_create", "-in", $smcont, "-outform", "PEM",
|
||||
"-nodetach", "-stream", "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-data_out", "-in", "{output}.cms", "-inform", "PEM",
|
||||
"-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "encrypted content test streaming PEM format, 128 bit RC2 key",
|
||||
[ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
|
||||
"-rc2", "-secretkey", "000102030405060708090A0B0C0D0E0F",
|
||||
"-stream", "-out", "test.cms" ],
|
||||
[ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
|
||||
"-secretkey", "000102030405060708090A0B0C0D0E0F", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
|
||||
"-rc2", "-secretkey", "000102030405060708090A0B0C0D0E0F",
|
||||
"-stream", "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
|
||||
"-inform", "PEM",
|
||||
"-secretkey", "000102030405060708090A0B0C0D0E0F",
|
||||
"-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "encrypted content test streaming PEM format, 40 bit RC2 key",
|
||||
[ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
|
||||
"-rc2", "-secretkey", "0001020304",
|
||||
"-stream", "-out", "test.cms" ],
|
||||
[ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
|
||||
"-secretkey", "0001020304", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
|
||||
"-rc2", "-secretkey", "0001020304",
|
||||
"-stream", "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
|
||||
"-inform", "PEM",
|
||||
"-secretkey", "0001020304", "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "encrypted content test streaming PEM format, triple DES key",
|
||||
[ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
|
||||
"-des3", "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
|
||||
"-stream", "-out", "test.cms" ],
|
||||
[ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
|
||||
"-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
|
||||
"-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
|
||||
"-des3", "-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
|
||||
"-stream", "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
|
||||
"-inform", "PEM",
|
||||
"-secretkey", "000102030405060708090A0B0C0D0E0F1011121314151617",
|
||||
"-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "encrypted content test streaming PEM format, 128 bit AES key",
|
||||
[ "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
|
||||
"-aes128", "-secretkey", "000102030405060708090A0B0C0D0E0F",
|
||||
"-stream", "-out", "test.cms" ],
|
||||
[ "-EncryptedData_decrypt", "-in", "test.cms", "-inform", "PEM",
|
||||
"-secretkey", "000102030405060708090A0B0C0D0E0F", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-EncryptedData_encrypt", "-in", $smcont, "-outform", "PEM",
|
||||
"-aes128", "-secretkey", "000102030405060708090A0B0C0D0E0F",
|
||||
"-stream", "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-EncryptedData_decrypt", "-in", "{output}.cms",
|
||||
"-inform", "PEM",
|
||||
"-secretkey", "000102030405060708090A0B0C0D0E0F",
|
||||
"-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
);
|
||||
@@ -309,124 +358,149 @@ my @smime_cms_tests = (
|
||||
my @smime_cms_comp_tests = (
|
||||
|
||||
[ "compressed content test streaming PEM format",
|
||||
[ "-compress", "-in", $smcont, "-outform", "PEM", "-nodetach",
|
||||
"-stream", "-out", "test.cms" ],
|
||||
[ "-uncompress", "-in", "test.cms", "-inform", "PEM", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-compress", "-in", $smcont, "-outform", "PEM", "-nodetach",
|
||||
"-stream", "-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-uncompress", "-in", "{output}.cms", "-inform", "PEM",
|
||||
"-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
]
|
||||
|
||||
);
|
||||
|
||||
my @smime_cms_param_tests = (
|
||||
[ "signed content test streaming PEM format, RSA keys, PSS signature",
|
||||
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
|
||||
"-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "PEM",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-keyopt", "rsa_padding_mode:pss",
|
||||
"-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed content test streaming PEM format, RSA keys, PSS signature, saltlen=max",
|
||||
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
|
||||
"-keyopt", "rsa_pss_saltlen:max", "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "PEM",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-keyopt", "rsa_padding_mode:pss", "-keyopt", "rsa_pss_saltlen:max",
|
||||
"-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed content test streaming PEM format, RSA keys, PSS signature, no attributes",
|
||||
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach", "-noattr",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
|
||||
"-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "PEM",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
|
||||
"-noattr",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-keyopt", "rsa_padding_mode:pss",
|
||||
"-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "signed content test streaming PEM format, RSA keys, PSS signature, SHA384 MGF1",
|
||||
[ "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:pss",
|
||||
"-keyopt", "rsa_mgf1_md:sha384", "-out", "test.cms" ],
|
||||
[ "-verify", "-in", "test.cms", "-inform", "PEM",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-sign", "-in", $smcont, "-outform", "PEM", "-nodetach",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"),
|
||||
"-keyopt", "rsa_padding_mode:pss", "-keyopt", "rsa_mgf1_md:sha384",
|
||||
"-out", "{output}.cms" ],
|
||||
[ "{cmd2}", "-verify", "-in", "{output}.cms", "-inform", "PEM",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming S/MIME format, DES, OAEP default parameters",
|
||||
[ "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "test.cms",
|
||||
"-recip", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:oaep" ],
|
||||
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
|
||||
"-in", "test.cms", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "{output}.cms",
|
||||
"-recip", catfile($smdir, "smrsa1.pem"),
|
||||
"-keyopt", "rsa_padding_mode:oaep" ],
|
||||
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
|
||||
"-in", "{output}.cms", "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming S/MIME format, DES, OAEP SHA256",
|
||||
[ "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "test.cms",
|
||||
"-recip", catfile($smdir, "smrsa1.pem"), "-keyopt", "rsa_padding_mode:oaep",
|
||||
"-keyopt", "rsa_oaep_md:sha256" ],
|
||||
[ "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
|
||||
"-in", "test.cms", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "{output}.cms",
|
||||
"-recip", catfile($smdir, "smrsa1.pem"),
|
||||
"-keyopt", "rsa_padding_mode:oaep",
|
||||
"-keyopt", "rsa_oaep_md:sha256" ],
|
||||
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smrsa1.pem"),
|
||||
"-in", "{output}.cms", "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming S/MIME format, DES, ECDH",
|
||||
[ "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "test.cms",
|
||||
"-recip", catfile($smdir, "smec1.pem") ],
|
||||
[ "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
|
||||
"-in", "test.cms", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "{output}.cms",
|
||||
"-recip", catfile($smdir, "smec1.pem") ],
|
||||
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
|
||||
"-in", "{output}.cms", "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming S/MIME format, DES, ECDH, 2 recipients, key only used",
|
||||
[ "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "test.cms",
|
||||
catfile($smdir, "smec1.pem"),
|
||||
catfile($smdir, "smec3.pem") ],
|
||||
[ "-decrypt", "-inkey", catfile($smdir, "smec3.pem"),
|
||||
"-in", "test.cms", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "{output}.cms",
|
||||
catfile($smdir, "smec1.pem"),
|
||||
catfile($smdir, "smec3.pem") ],
|
||||
[ "{cmd2}", "-decrypt", "-inkey", catfile($smdir, "smec3.pem"),
|
||||
"-in", "{output}.cms", "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming S/MIME format, ECDH, DES, key identifier",
|
||||
[ "-encrypt", "-keyid", "-in", $smcont,
|
||||
"-stream", "-out", "test.cms",
|
||||
"-recip", catfile($smdir, "smec1.pem") ],
|
||||
[ "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
|
||||
"-in", "test.cms", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-encrypt", "-keyid", "-in", $smcont,
|
||||
"-stream", "-out", "{output}.cms",
|
||||
"-recip", catfile($smdir, "smec1.pem") ],
|
||||
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
|
||||
"-in", "{output}.cms", "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming S/MIME format, ECDH, AES128, SHA256 KDF",
|
||||
[ "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "test.cms",
|
||||
"-recip", catfile($smdir, "smec1.pem"), "-aes128", "-keyopt", "ecdh_kdf_md:sha256" ],
|
||||
[ "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
|
||||
"-in", "test.cms", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "{output}.cms",
|
||||
"-recip", catfile($smdir, "smec1.pem"), "-aes128",
|
||||
"-keyopt", "ecdh_kdf_md:sha256" ],
|
||||
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec1.pem"),
|
||||
"-in", "{output}.cms", "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming S/MIME format, ECDH, K-283, cofactor DH",
|
||||
[ "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "test.cms",
|
||||
"-recip", catfile($smdir, "smec2.pem"), "-aes128",
|
||||
"-keyopt", "ecdh_kdf_md:sha256", "-keyopt", "ecdh_cofactor_mode:1" ],
|
||||
[ "-decrypt", "-recip", catfile($smdir, "smec2.pem"),
|
||||
"-in", "test.cms", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "{output}.cms",
|
||||
"-recip", catfile($smdir, "smec2.pem"), "-aes128",
|
||||
"-keyopt", "ecdh_kdf_md:sha256", "-keyopt", "ecdh_cofactor_mode:1" ],
|
||||
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smec2.pem"),
|
||||
"-in", "{output}.cms", "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
],
|
||||
|
||||
[ "enveloped content test streaming S/MIME format, X9.42 DH",
|
||||
[ "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "test.cms",
|
||||
"-recip", catfile($smdir, "smdh.pem"), "-aes128" ],
|
||||
[ "-decrypt", "-recip", catfile($smdir, "smdh.pem"),
|
||||
"-in", "test.cms", "-out", "smtst.txt" ]
|
||||
[ "{cmd1}", "-encrypt", "-in", $smcont,
|
||||
"-stream", "-out", "{output}.cms",
|
||||
"-recip", catfile($smdir, "smdh.pem"), "-aes128" ],
|
||||
[ "{cmd2}", "-decrypt", "-recip", catfile($smdir, "smdh.pem"),
|
||||
"-in", "{output}.cms", "-out", "{output}.txt" ],
|
||||
\&final_compare
|
||||
]
|
||||
);
|
||||
|
||||
my @contenttype_cms_test = (
|
||||
[ "signed content test - check that content type is added to additional signerinfo, RSA keys",
|
||||
[ "-sign", "-binary", "-nodetach", "-stream", "-in", $smcont, "-outform", "DER",
|
||||
[ "{cmd1}", "-sign", "-binary", "-nodetach", "-stream", "-in", $smcont,
|
||||
"-outform", "DER",
|
||||
"-signer", catfile($smdir, "smrsa1.pem"), "-md", "SHA256",
|
||||
"-out", "test.cms" ],
|
||||
[ "-resign", "-binary", "-nodetach", "-in", "test.cms", "-inform", "DER", "-outform", "DER",
|
||||
"-out", "{output}.cms" ],
|
||||
[ "{cmd1}", "-resign", "-binary", "-nodetach", "-in", "{output}.cms",
|
||||
"-inform", "DER", "-outform", "DER",
|
||||
"-signer", catfile($smdir, "smrsa2.pem"), "-md", "SHA256",
|
||||
"-out", "test2.cms" ],
|
||||
[ "-verify", "-in", "test2.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ]
|
||||
"-out", "{output}2.cms" ],
|
||||
sub { my %opts = @_; contentType_matches("$opts{output}2.cms") == 2; },
|
||||
[ "{cmd2}", "-verify", "-in", "{output}2.cms", "-inform", "DER",
|
||||
"-CAfile", catfile($smdir, "smroot.pem"), "-out", "{output}.txt" ]
|
||||
],
|
||||
);
|
||||
|
||||
@@ -437,96 +511,85 @@ my @incorrect_attribute_cms_test = (
|
||||
"ct_multiple_attr.cms"
|
||||
);
|
||||
|
||||
# Runs a standard loop on the input array
|
||||
sub runner_loop {
|
||||
my %opts = ( @_ );
|
||||
my $cnt1 = 0;
|
||||
|
||||
foreach (@{$opts{tests}}) {
|
||||
$cnt1++;
|
||||
$opts{output} = "$opts{prefix}-$cnt1";
|
||||
SKIP: {
|
||||
my $skip_reason = check_availability($$_[0]);
|
||||
skip $skip_reason, 1 if $skip_reason;
|
||||
my $ok = 1;
|
||||
1 while unlink "$opts{output}.txt";
|
||||
|
||||
foreach (@$_[1..$#$_]) {
|
||||
if (ref $_ eq 'CODE') {
|
||||
$ok &&= $_->(%opts);
|
||||
} else {
|
||||
my @cmd = map {
|
||||
my $x = $_;
|
||||
while ($x =~ /\{([^\}]+)\}/) {
|
||||
$x = $`.$opts{$1}.$' if exists $opts{$1};
|
||||
}
|
||||
$x;
|
||||
} @$_;
|
||||
|
||||
diag "CMD: openssl", join(" ", @cmd);
|
||||
$ok &&= run(app(["openssl", @cmd]));
|
||||
$opts{input} = $opts{output};
|
||||
}
|
||||
}
|
||||
|
||||
ok($ok, $$_[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub final_compare {
|
||||
my %opts = @_;
|
||||
|
||||
diag "Comparing $smcont with $opts{output}.txt";
|
||||
return compare_text($smcont, "$opts{output}.txt") == 0;
|
||||
}
|
||||
|
||||
subtest "CMS => PKCS#7 compatibility tests\n" => sub {
|
||||
plan tests => scalar @smime_pkcs7_tests;
|
||||
|
||||
foreach (@smime_pkcs7_tests) {
|
||||
SKIP: {
|
||||
my $skip_reason = check_availability($$_[0]);
|
||||
skip $skip_reason, 1 if $skip_reason;
|
||||
|
||||
ok(run(app(["openssl", "cms", @{$$_[1]}]))
|
||||
&& run(app(["openssl", "smime", @{$$_[2]}]))
|
||||
&& compare_text($smcont, "smtst.txt") == 0,
|
||||
$$_[0]);
|
||||
}
|
||||
}
|
||||
runner_loop(prefix => 'cms2pkcs7', cmd1 => 'cms', cmd2 => 'smime',
|
||||
tests => [ @smime_pkcs7_tests ]);
|
||||
};
|
||||
subtest "CMS <= PKCS#7 compatibility tests\n" => sub {
|
||||
plan tests => scalar @smime_pkcs7_tests;
|
||||
|
||||
foreach (@smime_pkcs7_tests) {
|
||||
SKIP: {
|
||||
my $skip_reason = check_availability($$_[0]);
|
||||
skip $skip_reason, 1 if $skip_reason;
|
||||
|
||||
ok(run(app(["openssl", "smime", @{$$_[1]}]))
|
||||
&& run(app(["openssl", "cms", @{$$_[2]}]))
|
||||
&& compare_text($smcont, "smtst.txt") == 0,
|
||||
$$_[0]);
|
||||
}
|
||||
}
|
||||
runner_loop(prefix => 'pkcs72cms', cmd1 => 'smime', cmd2 => 'cms',
|
||||
tests => [ @smime_pkcs7_tests ]);
|
||||
};
|
||||
|
||||
subtest "CMS <=> CMS consistency tests\n" => sub {
|
||||
plan tests => (scalar @smime_pkcs7_tests) + (scalar @smime_cms_tests);
|
||||
|
||||
foreach (@smime_pkcs7_tests) {
|
||||
SKIP: {
|
||||
my $skip_reason = check_availability($$_[0]);
|
||||
skip $skip_reason, 1 if $skip_reason;
|
||||
|
||||
ok(run(app(["openssl", "cms", @{$$_[1]}]))
|
||||
&& run(app(["openssl", "cms", @{$$_[2]}]))
|
||||
&& compare_text($smcont, "smtst.txt") == 0,
|
||||
$$_[0]);
|
||||
}
|
||||
}
|
||||
foreach (@smime_cms_tests) {
|
||||
SKIP: {
|
||||
my $skip_reason = check_availability($$_[0]);
|
||||
skip $skip_reason, 1 if $skip_reason;
|
||||
|
||||
ok(run(app(["openssl", "cms", @{$$_[1]}]))
|
||||
&& run(app(["openssl", "cms", @{$$_[2]}]))
|
||||
&& compare_text($smcont, "smtst.txt") == 0,
|
||||
$$_[0]);
|
||||
}
|
||||
}
|
||||
runner_loop(prefix => 'cms2cms-1', cmd1 => 'cms', cmd2 => 'cms',
|
||||
tests => [ @smime_pkcs7_tests ]);
|
||||
runner_loop(prefix => 'cms2cms-2', cmd1 => 'cms', cmd2 => 'cms',
|
||||
tests => [ @smime_cms_tests ]);
|
||||
};
|
||||
|
||||
subtest "CMS <=> CMS consistency tests, modified key parameters\n" => sub {
|
||||
plan tests =>
|
||||
(scalar @smime_cms_param_tests) + (scalar @smime_cms_comp_tests);
|
||||
|
||||
foreach (@smime_cms_param_tests) {
|
||||
SKIP: {
|
||||
my $skip_reason = check_availability($$_[0]);
|
||||
skip $skip_reason, 1 if $skip_reason;
|
||||
|
||||
ok(run(app(["openssl", "cms", @{$$_[1]}]))
|
||||
&& run(app(["openssl", "cms", @{$$_[2]}]))
|
||||
&& compare_text($smcont, "smtst.txt") == 0,
|
||||
$$_[0]);
|
||||
}
|
||||
}
|
||||
(scalar @smime_cms_param_tests) + (scalar @smime_cms_comp_tests);
|
||||
|
||||
runner_loop(prefix => 'cms2cms-mod', cmd1 => 'cms', cmd2 => 'cms',
|
||||
tests => [ @smime_cms_param_tests ]);
|
||||
SKIP: {
|
||||
skip("Zlib not supported: compression tests skipped",
|
||||
scalar @smime_cms_comp_tests)
|
||||
if $no_zlib;
|
||||
scalar @smime_cms_comp_tests)
|
||||
if $no_zlib;
|
||||
|
||||
foreach (@smime_cms_comp_tests) {
|
||||
SKIP: {
|
||||
my $skip_reason = check_availability($$_[0]);
|
||||
skip $skip_reason, 1 if $skip_reason;
|
||||
|
||||
ok(run(app(["openssl", "cms", @{$$_[1]}]))
|
||||
&& run(app(["openssl", "cms", @{$$_[2]}]))
|
||||
&& compare_text($smcont, "smtst.txt") == 0,
|
||||
$$_[0]);
|
||||
}
|
||||
}
|
||||
runner_loop(prefix => 'cms2cms-comp', cmd1 => 'cms', cmd2 => 'cms',
|
||||
tests => [ @smime_cms_comp_tests ]);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -547,38 +610,44 @@ sub contentType_matches {
|
||||
}
|
||||
|
||||
subtest "CMS Check the content type attribute is added for additional signers\n" => sub {
|
||||
plan tests =>
|
||||
(scalar @contenttype_cms_test);
|
||||
plan tests => (scalar @contenttype_cms_test);
|
||||
|
||||
foreach (@contenttype_cms_test) {
|
||||
SKIP: {
|
||||
my $skip_reason = check_availability($$_[0]);
|
||||
skip $skip_reason, 1 if $skip_reason;
|
||||
|
||||
ok(run(app(["openssl", "cms", @{$$_[1]}]))
|
||||
&& run(app(["openssl", "cms", @{$$_[2]}]))
|
||||
&& contentType_matches("test2.cms") == 2
|
||||
&& run(app(["openssl", "cms", @{$$_[3]}])),
|
||||
$$_[0]);
|
||||
}
|
||||
}
|
||||
runner_loop(prefix => 'cms2cms-added', cmd1 => 'cms', cmd2 => 'cms',
|
||||
tests => [ @contenttype_cms_test ]);
|
||||
};
|
||||
|
||||
subtest "CMS Check that bad attributes fail when verifying signers\n" => sub {
|
||||
plan tests =>
|
||||
(scalar @incorrect_attribute_cms_test);
|
||||
|
||||
my $cnt = 0;
|
||||
foreach my $name (@incorrect_attribute_cms_test) {
|
||||
my $out = "incorrect-$cnt.txt";
|
||||
|
||||
ok(!run(app(["openssl", "cms", "-verify", "-in",
|
||||
catfile($datadir, $name), "-inform", "DER", "-CAfile",
|
||||
catfile($smdir, "smroot.pem"), "-out", "smtst.txt" ])),
|
||||
catfile($smdir, "smroot.pem"), "-out", $out ])),
|
||||
$name);
|
||||
}
|
||||
};
|
||||
|
||||
unlink "test.cms";
|
||||
unlink "test2.cms";
|
||||
unlink "smtst.txt";
|
||||
subtest "CMS Decrypt message encrypted with OpenSSL 1.1.1\n" => sub {
|
||||
plan tests => 1;
|
||||
|
||||
SKIP: {
|
||||
skip "EC isn't supported in this build", 1
|
||||
if disabled("ec");
|
||||
|
||||
my $out = "smtst.txt";
|
||||
|
||||
ok(run(app(["openssl", "cms", "-decrypt",
|
||||
"-inkey", catfile($smdir, "smec3.pem"),
|
||||
"-in", catfile($datadir, "ciphertext_from_1_1_1.cms"),
|
||||
"-out", $out ]))
|
||||
&& compare_text($smcont, $out) == 0,
|
||||
"Decrypt message from OpenSSL 1.1.1");
|
||||
}
|
||||
};
|
||||
|
||||
sub check_availability {
|
||||
my $tnam = shift;
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
MIME-Version: 1.0
|
||||
Content-Disposition: attachment; filename="smime.p7m"
|
||||
Content-Type: application/pkcs7-mime; smime-type=enveloped-data; name="smime.p7m"
|
||||
Content-Transfer-Encoding: base64
|
||||
|
||||
MIAGCSqGSIb3DQEHA6CAMIACAQIxggHwoYH1AgEDoFGhTzAJBgcqhkjOPQIBA0IA
|
||||
BAePxHUnwKL0d8UFDKE1Ey90FGDkwsy1iTttSmKeUB2ZJoM1TwbPUI9YVsSttJNV
|
||||
x+25aQ1Qnw3FnY03rcUcy94wHAYJK4EFEIZIPwACMA8GCyqGSIb3DQEJEAMGBQAw
|
||||
fzB9MFEwRDELMAkGA1UEBhMCVUsxFjAUBgNVBAoMDU9wZW5TU0wgR3JvdXAxHTAb
|
||||
BgNVBAMMFFRlc3QgUy9NSU1FIFJTQSBSb290AgkA9oQ6WVaz+mMEKFSg1EdBE4qA
|
||||
rh2DJVuTJfopaDXM4ih25kIGcxz+zRTo0+8Z7XgjE1KhgfUCAQOgUaFPMAkGByqG
|
||||
SM49AgEDQgAErpcZ+4D3r+tERXL9c8pvtyRmNlYeMa7iCaVJ+YdLFtohdfrQ017/
|
||||
8CR+Q/q5ibL+eqDeg6KOxytDs2GpD+WoUTAcBgkrgQUQhkg/AAIwDwYLKoZIhvcN
|
||||
AQkQAwYFADB/MH0wUTBEMQswCQYDVQQGEwJVSzEWMBQGA1UECgwNT3BlblNTTCBH
|
||||
cm91cDEdMBsGA1UEAwwUVGVzdCBTL01JTUUgUlNBIFJvb3QCCQDZOZbupksgRgQo
|
||||
6OoZPATNvHJTypifw4rBfVlmDvUYcE6S7VmeEFDW9ALPw1XDa58lnTCABgkqhkiG
|
||||
9w0BBwEwFAYIKoZIhvcNAwcECKGDGhF9W/7SoIAEUJW5dEUWWwA6vIO1Db9aLJry
|
||||
Wx1zNmkFzJnkCUdsgrZxEIdT4kG5E+gLtGmA0+OO8RcoULhAWLf+s2yNN3vLTshN
|
||||
YJpevytIYpXQQgzJ8x+5BAjSDDgrrWnBugAAAAAAAAAAAAA=
|
||||
|
||||
@@ -12,6 +12,7 @@ use warnings;
|
||||
|
||||
use POSIX;
|
||||
use File::Spec::Functions qw/devnull catfile/;
|
||||
use File::Basename;
|
||||
use File::Copy;
|
||||
use OpenSSL::Test qw/:DEFAULT with pipe srctop_dir data_file/;
|
||||
use OpenSSL::Test::Utils;
|
||||
@@ -34,18 +35,18 @@ sub test_ocsp {
|
||||
$untrusted = $CAfile;
|
||||
}
|
||||
my $expected_exit = shift;
|
||||
my $outputfile = basename($inputfile, '.ors') . '.dat';
|
||||
|
||||
run(app(["openssl", "base64", "-d",
|
||||
"-in", catfile($ocspdir,$inputfile),
|
||||
"-out", "ocsp-resp-fff.dat"]));
|
||||
"-out", $outputfile]));
|
||||
with({ exit_checker => sub { return shift == $expected_exit; } },
|
||||
sub { ok(run(app(["openssl", "ocsp", "-respin", "ocsp-resp-fff.dat",
|
||||
sub { ok(run(app(["openssl", "ocsp", "-respin", $outputfile,
|
||||
"-partial_chain", @check_time,
|
||||
"-CAfile", catfile($ocspdir, $CAfile),
|
||||
"-verify_other", catfile($ocspdir, $untrusted),
|
||||
"-no-CApath"])),
|
||||
$title); });
|
||||
unlink "ocsp-resp-fff.dat";
|
||||
}
|
||||
|
||||
plan tests => 11;
|
||||
|
||||
@@ -120,17 +120,16 @@ sub test_conf {
|
||||
my ($conf, $check_source, $skip) = @_;
|
||||
|
||||
my $conf_file = srctop_file("test", "ssl-tests", $conf);
|
||||
my $tmp_file = "${conf}.$$.tmp";
|
||||
my $input_file = $conf_file . ".in";
|
||||
my $output_file = $conf;
|
||||
my $run_test = 1;
|
||||
|
||||
SKIP: {
|
||||
# "Test" 1. Generate the source.
|
||||
my $input_file = $conf_file . ".in";
|
||||
|
||||
skip 'failure', 2 unless
|
||||
ok(run(perltest(["generate_ssl_tests.pl", $input_file],
|
||||
interpreter_args => [ "-I", srctop_dir("util", "perl")],
|
||||
stdout => $tmp_file)),
|
||||
stdout => $output_file)),
|
||||
"Getting output from generate_ssl_tests.pl.");
|
||||
|
||||
SKIP: {
|
||||
@@ -138,7 +137,7 @@ sub test_conf {
|
||||
skip "Skipping generated source test for $conf", 1
|
||||
if !$check_source;
|
||||
|
||||
$run_test = is(cmp_text($tmp_file, $conf_file), 0,
|
||||
$run_test = is(cmp_text($output_file, $conf_file), 0,
|
||||
"Comparing generated sources.");
|
||||
}
|
||||
|
||||
@@ -146,10 +145,8 @@ sub test_conf {
|
||||
skip "No tests available; skipping tests", 1 if $skip;
|
||||
skip "Stale sources; skipping tests", 1 if !$run_test;
|
||||
|
||||
ok(run(test(["ssl_test", $tmp_file])), "running ssl_test $conf");
|
||||
ok(run(test(["ssl_test", $output_file])), "running ssl_test $conf");
|
||||
}
|
||||
|
||||
unlink glob $tmp_file;
|
||||
}
|
||||
|
||||
sub cmp_text {
|
||||
|
||||
@@ -221,7 +221,10 @@ sub testss {
|
||||
SKIP: {
|
||||
$ENV{CN2} = "ECDSA Certificate";
|
||||
skip 'failure', 4 unless
|
||||
ok(run(app(["openssl", "ecparam", "-name", "P-256",
|
||||
ok(run(app(["openssl", "genpkey", "-genparam",
|
||||
"-algorithm", "EC",
|
||||
"-pkeyopt", "ec_paramgen_curve:P-256",
|
||||
"-pkeyopt", "ec_param_enc:named_curve",
|
||||
"-out", "ecp.ss"])),
|
||||
"make EC parameters");
|
||||
skip 'failure', 3 unless
|
||||
@@ -546,41 +549,3 @@ sub testssl {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
unlink $CAkey;
|
||||
unlink $CAcert;
|
||||
unlink $CAserial;
|
||||
unlink $CAreq;
|
||||
unlink $CAreq2;
|
||||
|
||||
unlink $Ukey;
|
||||
unlink $Ureq;
|
||||
unlink $Ucert;
|
||||
unlink basename($Ucert, '.ss').'.srl';
|
||||
|
||||
unlink $Dkey;
|
||||
unlink $Dreq;
|
||||
unlink $Dcert;
|
||||
|
||||
unlink $Ekey;
|
||||
unlink $Ereq;
|
||||
unlink $Ecert;
|
||||
|
||||
unlink $P1key;
|
||||
unlink $P1req;
|
||||
unlink $P1cert;
|
||||
unlink basename($P1cert, '.ss').'.srl';
|
||||
unlink $P1intermediate;
|
||||
unlink "intP1.ss";
|
||||
|
||||
unlink $P2key;
|
||||
unlink $P2req;
|
||||
unlink $P2cert;
|
||||
unlink $P2intermediate;
|
||||
unlink "intP2.ss";
|
||||
|
||||
unlink "ecp.ss";
|
||||
unlink "err.ss";
|
||||
|
||||
unlink $server_sess;
|
||||
unlink $client_sess;
|
||||
@@ -89,9 +89,6 @@ sub tconversion {
|
||||
}
|
||||
}
|
||||
}
|
||||
unlink glob "$testtype-f.*";
|
||||
unlink glob "$testtype-ff.*";
|
||||
unlink glob "$testtype-fff.*";
|
||||
}
|
||||
|
||||
sub cmp_text {
|
||||
|
||||
@@ -9,6 +9,12 @@
|
||||
* https://www.openssl.org/source/license.html
|
||||
*/
|
||||
|
||||
/*
|
||||
* DH low level APIs are deprecated for public use, but still ok for
|
||||
* internal use.
|
||||
*/
|
||||
#include "internal/deprecated.h"
|
||||
|
||||
#include "e_os.h"
|
||||
|
||||
/* Or gethostname won't be declared properly on Linux and GNU platforms. */
|
||||
|
||||
+8
-40
@@ -10,53 +10,21 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "internal/nelem.h"
|
||||
#include "internal/cryptlib.h" /* for ossl_sleep() */
|
||||
#include "ssltestlib.h"
|
||||
#include "testutil.h"
|
||||
#include "e_os.h"
|
||||
|
||||
#ifdef OPENSSL_SYS_UNIX
|
||||
# include <unistd.h>
|
||||
#ifndef OPENSSL_NO_KTLS
|
||||
# include <netinet/in.h>
|
||||
# include <netinet/in.h>
|
||||
# include <arpa/inet.h>
|
||||
# include <sys/socket.h>
|
||||
# include <unistd.h>
|
||||
# include <fcntl.h>
|
||||
#endif
|
||||
|
||||
static ossl_inline void ossl_sleep(unsigned int millis)
|
||||
{
|
||||
# ifdef OPENSSL_SYS_VXWORKS
|
||||
struct timespec ts;
|
||||
ts.tv_sec = (long int) (millis / 1000);
|
||||
ts.tv_nsec = (long int) (millis % 1000) * 1000000ul;
|
||||
nanosleep(&ts, NULL);
|
||||
# else
|
||||
usleep(millis * 1000);
|
||||
# ifndef OPENSSL_NO_KTLS
|
||||
# include <netinet/in.h>
|
||||
# include <netinet/in.h>
|
||||
# include <arpa/inet.h>
|
||||
# include <sys/socket.h>
|
||||
# include <unistd.h>
|
||||
# include <fcntl.h>
|
||||
# endif
|
||||
}
|
||||
#elif defined(_WIN32)
|
||||
# include <windows.h>
|
||||
|
||||
static ossl_inline void ossl_sleep(unsigned int millis)
|
||||
{
|
||||
Sleep(millis);
|
||||
}
|
||||
#else
|
||||
/* Fallback to a busy wait */
|
||||
static ossl_inline void ossl_sleep(unsigned int millis)
|
||||
{
|
||||
struct timeval start, now;
|
||||
unsigned int elapsedms;
|
||||
|
||||
gettimeofday(&start, NULL);
|
||||
do {
|
||||
gettimeofday(&now, NULL);
|
||||
elapsedms = (((now.tv_sec - start.tv_sec) * 1000000)
|
||||
+ now.tv_usec - start.tv_usec) / 1000;
|
||||
} while (elapsedms < millis);
|
||||
}
|
||||
#endif
|
||||
|
||||
static int tls_dump_new(BIO *bi);
|
||||
|
||||
Reference in New Issue
Block a user