355 | 355 |
return ret;
|
356 | 356 |
}
|
357 | 357 |
|
|
358 |
static int test_EVP_Enveloped(void)
|
|
359 |
{
|
|
360 |
int ret = 0;
|
|
361 |
EVP_CIPHER_CTX *ctx = NULL;
|
|
362 |
EVP_PKEY *keypair = NULL;
|
|
363 |
unsigned char *kek = NULL;
|
|
364 |
unsigned char iv[EVP_MAX_IV_LENGTH];
|
|
365 |
static const unsigned char msg[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
|
|
366 |
int len, kek_len, ciphertext_len, plaintext_len;
|
|
367 |
unsigned char ciphertext[32], plaintext[16];
|
|
368 |
const EVP_CIPHER *type = EVP_aes_256_cbc();
|
|
369 |
|
|
370 |
if (!TEST_ptr(keypair = load_example_rsa_key())
|
|
371 |
|| !TEST_ptr(kek = OPENSSL_zalloc(EVP_PKEY_size(keypair)))
|
|
372 |
|| !TEST_ptr(ctx = EVP_CIPHER_CTX_new())
|
|
373 |
|| !TEST_true(EVP_SealInit(ctx, type, &kek, &kek_len, iv,
|
|
374 |
&keypair, 1))
|
|
375 |
|| !TEST_true(EVP_SealUpdate(ctx, ciphertext, &ciphertext_len,
|
|
376 |
msg, sizeof(msg)))
|
|
377 |
|| !TEST_true(EVP_SealFinal(ctx, ciphertext + ciphertext_len,
|
|
378 |
&len)))
|
|
379 |
goto err;
|
|
380 |
|
|
381 |
ciphertext_len += len;
|
|
382 |
|
|
383 |
if (!TEST_true(EVP_OpenInit(ctx, type, kek, kek_len, iv, keypair))
|
|
384 |
|| !TEST_true(EVP_OpenUpdate(ctx, plaintext, &plaintext_len,
|
|
385 |
ciphertext, ciphertext_len))
|
|
386 |
|| !TEST_true(EVP_OpenFinal(ctx, plaintext + plaintext_len, &len)))
|
|
387 |
goto err;
|
|
388 |
|
|
389 |
plaintext_len += len;
|
|
390 |
if (!TEST_mem_eq(msg, sizeof(msg), plaintext, plaintext_len))
|
|
391 |
goto err;
|
|
392 |
|
|
393 |
ret = 1;
|
|
394 |
err:
|
|
395 |
OPENSSL_free(kek);
|
|
396 |
EVP_PKEY_free(keypair);
|
|
397 |
EVP_CIPHER_CTX_free(ctx);
|
|
398 |
return ret;
|
|
399 |
}
|
|
400 |
|
|
401 |
|
358 | 402 |
static int test_EVP_DigestSignInit(void)
|
359 | 403 |
{
|
360 | 404 |
int ret = 0;
|
|
780 | 824 |
{
|
781 | 825 |
ADD_TEST(test_EVP_DigestSignInit);
|
782 | 826 |
ADD_TEST(test_EVP_DigestVerifyInit);
|
|
827 |
ADD_TEST(test_EVP_Enveloped);
|
783 | 828 |
ADD_ALL_TESTS(test_d2i_AutoPrivateKey, OSSL_NELEM(keydata));
|
784 | 829 |
#ifndef OPENSSL_NO_EC
|
785 | 830 |
ADD_TEST(test_EVP_PKCS82PKEY);
|