Port cipher_test to file_test.
Derived from upstream's new evp_test. The tests were taken from upstream but tweaked so the diff from the old cipher_test.txt is more obvious. Change-Id: Ic82593a8bb6aaee9b69fdc42a8b75516b03c1c5a Reviewed-on: https://boringssl-review.googlesource.com/4707 Reviewed-by: Adam Langley <agl@google.com>
This commit is contained in:
committed by
Adam Langley
parent
771a138f26
commit
4690bb5fc3
@@ -24,7 +24,8 @@ add_library(
|
||||
add_executable(
|
||||
cipher_test
|
||||
|
||||
cipher_test.c
|
||||
cipher_test.cc
|
||||
$<TARGET_OBJECTS:test_support>
|
||||
)
|
||||
|
||||
add_executable(
|
||||
|
||||
@@ -1,423 +0,0 @@
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
* This package is an SSL implementation written
|
||||
* by Eric Young (eay@cryptsoft.com).
|
||||
* The implementation was written so as to conform with Netscapes SSL.
|
||||
*
|
||||
* This library is free for commercial and non-commercial use as long as
|
||||
* the following conditions are aheared to. The following conditions
|
||||
* apply to all code found in this distribution, be it the RC4, RSA,
|
||||
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
||||
* included with this distribution is covered by the same copyright terms
|
||||
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
||||
*
|
||||
* Copyright remains Eric Young's, and as such any Copyright notices in
|
||||
* the code are not to be removed.
|
||||
* If this package is used in a product, Eric Young should be given attribution
|
||||
* as the author of the parts of the library used.
|
||||
* This can be in the form of a textual message at program startup or
|
||||
* in documentation (online or textual) provided with the package.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* "This product includes cryptographic software written by
|
||||
* Eric Young (eay@cryptsoft.com)"
|
||||
* The word 'cryptographic' can be left out if the rouines from the library
|
||||
* being used are not cryptographic related :-).
|
||||
* 4. If you include any Windows specific code (or a derivative thereof) from
|
||||
* the apps directory (application code) you must include an acknowledgement:
|
||||
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* The licence and distribution terms for any publically available version or
|
||||
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
||||
* copied and put under another distribution licence
|
||||
* [including the GNU Public Licence.] */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <openssl/cipher.h>
|
||||
#include <openssl/crypto.h>
|
||||
#include <openssl/err.h>
|
||||
|
||||
|
||||
static void hexdump(FILE *f, const char *title, const uint8_t *s, int l) {
|
||||
int n = 0;
|
||||
|
||||
fprintf(f, "%s", title);
|
||||
for (; n < l; ++n) {
|
||||
if ((n % 16) == 0) {
|
||||
fprintf(f, "\n%04x", n);
|
||||
}
|
||||
fprintf(f, " %02x", s[n]);
|
||||
}
|
||||
fprintf(f, "\n");
|
||||
}
|
||||
|
||||
static int convert(uint8_t *s) {
|
||||
uint8_t *d;
|
||||
|
||||
for (d = s; *s; s += 2, ++d) {
|
||||
unsigned int n;
|
||||
|
||||
if (!s[1]) {
|
||||
fprintf(stderr, "Odd number of hex digits!");
|
||||
exit(4);
|
||||
}
|
||||
sscanf((char *)s, "%2x", &n);
|
||||
*d = (uint8_t)n;
|
||||
}
|
||||
return s - d;
|
||||
}
|
||||
|
||||
static char *sstrsep(char **string, const char *delim) {
|
||||
char isdelim[256];
|
||||
char *token = *string;
|
||||
|
||||
if (**string == 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memset(isdelim, 0, 256);
|
||||
isdelim[0] = 1;
|
||||
|
||||
while (*delim) {
|
||||
isdelim[(uint8_t)(*delim)] = 1;
|
||||
delim++;
|
||||
}
|
||||
|
||||
while (!isdelim[(uint8_t)(**string)]) {
|
||||
(*string)++;
|
||||
}
|
||||
|
||||
if (**string) {
|
||||
**string = 0;
|
||||
(*string)++;
|
||||
}
|
||||
|
||||
return token;
|
||||
}
|
||||
|
||||
static uint8_t *ustrsep(char **p, const char *sep) {
|
||||
return (uint8_t *)sstrsep(p, sep);
|
||||
}
|
||||
|
||||
static void test1(const char* cipher_name, const EVP_CIPHER *c,
|
||||
const uint8_t *key, int kn, const uint8_t *iv, int in,
|
||||
const uint8_t *plaintext, int pn, const uint8_t *ciphertext,
|
||||
int cn, const uint8_t *aad, int an, const uint8_t *tag,
|
||||
int tn, int encdec) {
|
||||
EVP_CIPHER_CTX ctx;
|
||||
uint8_t out[4096];
|
||||
int outl, outl2, mode;
|
||||
|
||||
printf("Testing cipher %s%s\n", cipher_name,
|
||||
(encdec == 1 ? "(encrypt)"
|
||||
: (encdec == 0 ? "(decrypt)" : "(encrypt/decrypt)")));
|
||||
hexdump(stdout, "Key", key, kn);
|
||||
if (in) {
|
||||
hexdump(stdout, "IV", iv, in);
|
||||
}
|
||||
hexdump(stdout, "Plaintext", plaintext, pn);
|
||||
hexdump(stdout, "Ciphertext", ciphertext, cn);
|
||||
if (an) {
|
||||
hexdump(stdout, "AAD", aad, an);
|
||||
}
|
||||
if (tn) {
|
||||
hexdump(stdout, "Tag", tag, tn);
|
||||
}
|
||||
mode = EVP_CIPHER_mode(c);
|
||||
if (kn != EVP_CIPHER_key_length(c)) {
|
||||
fprintf(stderr, "Key length doesn't match, got %d expected %lu\n", kn,
|
||||
(unsigned long)EVP_CIPHER_key_length(c));
|
||||
exit(5);
|
||||
}
|
||||
EVP_CIPHER_CTX_init(&ctx);
|
||||
if (encdec != 0) {
|
||||
if (mode == EVP_CIPH_GCM_MODE) {
|
||||
if (!EVP_EncryptInit_ex(&ctx, c, NULL, NULL, NULL)) {
|
||||
fprintf(stderr, "EncryptInit failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(10);
|
||||
}
|
||||
if (!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_SET_IVLEN, in, NULL)) {
|
||||
fprintf(stderr, "IV length set failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(11);
|
||||
}
|
||||
if (!EVP_EncryptInit_ex(&ctx, NULL, NULL, key, iv)) {
|
||||
fprintf(stderr, "Key/IV set failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(12);
|
||||
}
|
||||
if (an && !EVP_EncryptUpdate(&ctx, NULL, &outl, aad, an)) {
|
||||
fprintf(stderr, "AAD set failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(13);
|
||||
}
|
||||
} else if (!EVP_EncryptInit_ex(&ctx, c, NULL, key, iv)) {
|
||||
fprintf(stderr, "EncryptInit failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(10);
|
||||
}
|
||||
EVP_CIPHER_CTX_set_padding(&ctx, 0);
|
||||
|
||||
if (!EVP_EncryptUpdate(&ctx, out, &outl, plaintext, pn)) {
|
||||
fprintf(stderr, "Encrypt failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(6);
|
||||
}
|
||||
if (!EVP_EncryptFinal_ex(&ctx, out + outl, &outl2)) {
|
||||
fprintf(stderr, "EncryptFinal failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(7);
|
||||
}
|
||||
|
||||
if (outl + outl2 != cn) {
|
||||
fprintf(stderr, "Ciphertext length mismatch got %d expected %d\n",
|
||||
outl + outl2, cn);
|
||||
exit(8);
|
||||
}
|
||||
|
||||
if (memcmp(out, ciphertext, cn)) {
|
||||
fprintf(stderr, "Ciphertext mismatch\n");
|
||||
hexdump(stderr, "Got", out, cn);
|
||||
hexdump(stderr, "Expected", ciphertext, cn);
|
||||
exit(9);
|
||||
}
|
||||
if (mode == EVP_CIPH_GCM_MODE) {
|
||||
uint8_t rtag[16];
|
||||
/* Note: EVP_CTRL_CCM_GET_TAG has same value as
|
||||
* EVP_CTRL_GCM_GET_TAG
|
||||
*/
|
||||
if (!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_GET_TAG, tn, rtag)) {
|
||||
fprintf(stderr, "Get tag failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(14);
|
||||
}
|
||||
if (memcmp(rtag, tag, tn)) {
|
||||
fprintf(stderr, "Tag mismatch\n");
|
||||
hexdump(stderr, "Got", rtag, tn);
|
||||
hexdump(stderr, "Expected", tag, tn);
|
||||
exit(9);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (encdec <= 0) {
|
||||
if (mode == EVP_CIPH_GCM_MODE) {
|
||||
if (!EVP_DecryptInit_ex(&ctx, c, NULL, NULL, NULL)) {
|
||||
fprintf(stderr, "EncryptInit failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(10);
|
||||
}
|
||||
if (!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_SET_IVLEN, in, NULL)) {
|
||||
fprintf(stderr, "IV length set failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(11);
|
||||
}
|
||||
if (!EVP_DecryptInit_ex(&ctx, NULL, NULL, key, iv)) {
|
||||
fprintf(stderr, "Key/IV set failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(12);
|
||||
}
|
||||
if (!EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_SET_TAG, tn, (void *)tag)) {
|
||||
fprintf(stderr, "Set tag failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(14);
|
||||
}
|
||||
if (an && !EVP_DecryptUpdate(&ctx, NULL, &outl, aad, an)) {
|
||||
fprintf(stderr, "AAD set failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(13);
|
||||
}
|
||||
} else if (!EVP_DecryptInit_ex(&ctx, c, NULL, key, iv)) {
|
||||
fprintf(stderr, "DecryptInit failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(11);
|
||||
}
|
||||
EVP_CIPHER_CTX_set_padding(&ctx, 0);
|
||||
|
||||
if (!EVP_DecryptUpdate(&ctx, out, &outl, ciphertext, cn)) {
|
||||
fprintf(stderr, "Decrypt failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(6);
|
||||
}
|
||||
outl2 = 0;
|
||||
if (!EVP_DecryptFinal_ex(&ctx, out + outl, &outl2)) {
|
||||
fprintf(stderr, "DecryptFinal failed\n");
|
||||
ERR_print_errors_fp(stderr);
|
||||
exit(7);
|
||||
}
|
||||
|
||||
if (outl + outl2 != pn) {
|
||||
fprintf(stderr, "Plaintext length mismatch got %d expected %d\n",
|
||||
outl + outl2, pn);
|
||||
exit(8);
|
||||
}
|
||||
|
||||
if (memcmp(out, plaintext, pn)) {
|
||||
fprintf(stderr, "Plaintext mismatch\n");
|
||||
hexdump(stderr, "Got", out, pn);
|
||||
hexdump(stderr, "Expected", plaintext, pn);
|
||||
exit(9);
|
||||
}
|
||||
}
|
||||
|
||||
EVP_CIPHER_CTX_cleanup(&ctx);
|
||||
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
static int test_cipher(const char *cipher, const uint8_t *key, int kn,
|
||||
const uint8_t *iv, int in, const uint8_t *plaintext,
|
||||
int pn, const uint8_t *ciphertext, int cn,
|
||||
const uint8_t *aad, int an, const uint8_t *tag, int tn,
|
||||
int encdec) {
|
||||
const EVP_CIPHER *c;
|
||||
|
||||
if (strcmp(cipher, "DES-CBC") == 0) {
|
||||
c = EVP_des_cbc();
|
||||
} else if (strcmp(cipher, "DES-EDE3-CBC") == 0) {
|
||||
c = EVP_des_ede3_cbc();
|
||||
} else if (strcmp(cipher, "RC4") == 0) {
|
||||
c = EVP_rc4();
|
||||
} else if (strcmp(cipher, "AES-128-ECB") == 0) {
|
||||
c = EVP_aes_128_ecb();
|
||||
} else if (strcmp(cipher, "AES-256-ECB") == 0) {
|
||||
c = EVP_aes_256_ecb();
|
||||
} else if (strcmp(cipher, "AES-128-CBC") == 0) {
|
||||
c = EVP_aes_128_cbc();
|
||||
} else if (strcmp(cipher, "AES-128-GCM") == 0) {
|
||||
c = EVP_aes_128_gcm();
|
||||
} else if (strcmp(cipher, "AES-128-OFB") == 0) {
|
||||
c = EVP_aes_128_ofb();
|
||||
} else if (strcmp(cipher, "AES-192-CBC") == 0) {
|
||||
c = EVP_aes_192_cbc();
|
||||
} else if (strcmp(cipher, "AES-192-ECB") == 0) {
|
||||
c = EVP_aes_192_ecb();
|
||||
} else if (strcmp(cipher, "AES-256-CBC") == 0) {
|
||||
c = EVP_aes_256_cbc();
|
||||
} else if (strcmp(cipher, "AES-128-CTR") == 0) {
|
||||
c = EVP_aes_128_ctr();
|
||||
} else if (strcmp(cipher, "AES-256-CTR") == 0) {
|
||||
c = EVP_aes_256_ctr();
|
||||
} else if (strcmp(cipher, "AES-256-GCM") == 0) {
|
||||
c = EVP_aes_256_gcm();
|
||||
} else if (strcmp(cipher, "AES-256-OFB") == 0) {
|
||||
c = EVP_aes_256_ofb();
|
||||
} else {
|
||||
fprintf(stderr, "Unknown cipher type %s\n", cipher);
|
||||
return 0;
|
||||
}
|
||||
|
||||
test1(cipher, c, key, kn, iv, in, plaintext, pn, ciphertext, cn, aad, an,
|
||||
tag, tn, encdec);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
const char *input_file;
|
||||
FILE *f;
|
||||
|
||||
CRYPTO_library_init();
|
||||
|
||||
if (argc != 2) {
|
||||
fprintf(stderr, "%s <test file>\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
input_file = argv[1];
|
||||
|
||||
f = fopen(input_file, "r");
|
||||
if (!f) {
|
||||
perror(input_file);
|
||||
return 2;
|
||||
}
|
||||
|
||||
ERR_load_crypto_strings();
|
||||
|
||||
for (;;) {
|
||||
char line[4096];
|
||||
char *p;
|
||||
char *cipher;
|
||||
uint8_t *iv, *key, *plaintext, *ciphertext, *aad, *tag;
|
||||
int encdec;
|
||||
int kn, in, pn, cn;
|
||||
int an = 0;
|
||||
int tn = 0;
|
||||
|
||||
if (!fgets((char *)line, sizeof line, f)) {
|
||||
break;
|
||||
}
|
||||
if (line[0] == '#' || line[0] == '\n') {
|
||||
continue;
|
||||
}
|
||||
p = line;
|
||||
cipher = sstrsep(&p, ":");
|
||||
key = ustrsep(&p, ":");
|
||||
iv = ustrsep(&p, ":");
|
||||
plaintext = ustrsep(&p, ":");
|
||||
ciphertext = ustrsep(&p, ":");
|
||||
if (p[-1] == '\n') {
|
||||
encdec = -1;
|
||||
p[-1] = '\0';
|
||||
tag = aad = NULL;
|
||||
an = tn = 0;
|
||||
} else {
|
||||
aad = ustrsep(&p, ":");
|
||||
tag = ustrsep(&p, ":");
|
||||
if (tag == NULL) {
|
||||
p = (char *)aad;
|
||||
tag = aad = NULL;
|
||||
an = tn = 0;
|
||||
}
|
||||
if (p[-1] == '\n') {
|
||||
encdec = -1;
|
||||
p[-1] = '\0';
|
||||
} else {
|
||||
encdec = atoi(sstrsep(&p, "\n"));
|
||||
}
|
||||
}
|
||||
|
||||
kn = convert(key);
|
||||
in = convert(iv);
|
||||
pn = convert(plaintext);
|
||||
cn = convert(ciphertext);
|
||||
if (aad) {
|
||||
an = convert(aad);
|
||||
tn = convert(tag);
|
||||
}
|
||||
|
||||
if (!test_cipher(cipher, key, kn, iv, in, plaintext, pn, ciphertext, cn,
|
||||
aad, an, tag, tn, encdec)) {
|
||||
return 3;
|
||||
}
|
||||
}
|
||||
fclose(f);
|
||||
|
||||
printf("PASS\n");
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,262 @@
|
||||
/*
|
||||
* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
|
||||
* project.
|
||||
*/
|
||||
/* ====================================================================
|
||||
* Copyright (c) 2015 The OpenSSL Project. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
*
|
||||
* 3. All advertising materials mentioning features or use of this
|
||||
* software must display the following acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit. (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
||||
* endorse or promote products derived from this software without
|
||||
* prior written permission. For written permission, please contact
|
||||
* licensing@OpenSSL.org.
|
||||
*
|
||||
* 5. Products derived from this software may not be called "OpenSSL"
|
||||
* nor may "OpenSSL" appear in their names without prior written
|
||||
* permission of the OpenSSL Project.
|
||||
*
|
||||
* 6. Redistributions of any form whatsoever must retain the following
|
||||
* acknowledgment:
|
||||
* "This product includes software developed by the OpenSSL Project
|
||||
* for use in the OpenSSL Toolkit (http://www.OpenSSL.org/)"
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
||||
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
||||
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
* ====================================================================
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <openssl/cipher.h>
|
||||
#include <openssl/crypto.h>
|
||||
#include <openssl/err.h>
|
||||
|
||||
#include "../test/file_test.h"
|
||||
#include "../test/scoped_types.h"
|
||||
#include "../test/stl_compat.h"
|
||||
|
||||
|
||||
static const EVP_CIPHER *GetCipher(const std::string &name) {
|
||||
if (name == "DES-CBC") {
|
||||
return EVP_des_cbc();
|
||||
} else if (name == "DES-EDE3-CBC") {
|
||||
return EVP_des_ede3_cbc();
|
||||
} else if (name == "RC4") {
|
||||
return EVP_rc4();
|
||||
} else if (name == "AES-128-ECB") {
|
||||
return EVP_aes_128_ecb();
|
||||
} else if (name == "AES-256-ECB") {
|
||||
return EVP_aes_256_ecb();
|
||||
} else if (name == "AES-128-CBC") {
|
||||
return EVP_aes_128_cbc();
|
||||
} else if (name == "AES-128-GCM") {
|
||||
return EVP_aes_128_gcm();
|
||||
} else if (name == "AES-128-OFB") {
|
||||
return EVP_aes_128_ofb();
|
||||
} else if (name == "AES-192-CBC") {
|
||||
return EVP_aes_192_cbc();
|
||||
} else if (name == "AES-192-ECB") {
|
||||
return EVP_aes_192_ecb();
|
||||
} else if (name == "AES-256-CBC") {
|
||||
return EVP_aes_256_cbc();
|
||||
} else if (name == "AES-128-CTR") {
|
||||
return EVP_aes_128_ctr();
|
||||
} else if (name == "AES-256-CTR") {
|
||||
return EVP_aes_256_ctr();
|
||||
} else if (name == "AES-256-GCM") {
|
||||
return EVP_aes_256_gcm();
|
||||
} else if (name == "AES-256-OFB") {
|
||||
return EVP_aes_256_ofb();
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static bool TestOperation(FileTest *t,
|
||||
const EVP_CIPHER *cipher,
|
||||
bool encrypt,
|
||||
const std::vector<uint8_t> &key,
|
||||
const std::vector<uint8_t> &iv,
|
||||
const std::vector<uint8_t> &plaintext,
|
||||
const std::vector<uint8_t> &ciphertext,
|
||||
const std::vector<uint8_t> &aad,
|
||||
const std::vector<uint8_t> &tag) {
|
||||
const std::vector<uint8_t> *in, *out;
|
||||
if (encrypt) {
|
||||
in = &plaintext;
|
||||
out = &ciphertext;
|
||||
} else {
|
||||
in = &ciphertext;
|
||||
out = &plaintext;
|
||||
}
|
||||
|
||||
bool is_aead = EVP_CIPHER_mode(cipher) == EVP_CIPH_GCM_MODE;
|
||||
|
||||
ScopedEVP_CIPHER_CTX ctx;
|
||||
if (!EVP_CipherInit_ex(ctx.get(), cipher, nullptr, nullptr, nullptr,
|
||||
encrypt ? 1 : 0)) {
|
||||
return false;
|
||||
}
|
||||
if (t->HasAttribute("IV")) {
|
||||
if (is_aead) {
|
||||
if (!EVP_CIPHER_CTX_ctrl(ctx.get(), EVP_CTRL_GCM_SET_IVLEN,
|
||||
iv.size(), 0)) {
|
||||
return false;
|
||||
}
|
||||
} else if (iv.size() != (size_t)EVP_CIPHER_CTX_iv_length(ctx.get())) {
|
||||
t->PrintLine("Bad IV length.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (is_aead && !encrypt &&
|
||||
!EVP_CIPHER_CTX_ctrl(ctx.get(), EVP_CTRL_GCM_SET_TAG, tag.size(),
|
||||
const_cast<uint8_t*>(bssl::vector_data(&tag)))) {
|
||||
return false;
|
||||
}
|
||||
// The ciphers are run with no padding. For each of the ciphers we test, the
|
||||
// output size matches the input size.
|
||||
std::vector<uint8_t> result(in->size());
|
||||
if (in->size() != out->size()) {
|
||||
t->PrintLine("Input/output size mismatch (%u vs %u).", (unsigned)in->size(),
|
||||
(unsigned)out->size());
|
||||
return false;
|
||||
}
|
||||
// Note: the deprecated |EVP_CIPHER|-based AES-GCM API is sensitive to whether
|
||||
// parameters are NULL, so it is important to skip the |in| and |aad|
|
||||
// |EVP_CipherUpdate| calls when empty.
|
||||
int unused, result_len1 = 0, result_len2;
|
||||
if (!EVP_CIPHER_CTX_set_key_length(ctx.get(), key.size()) ||
|
||||
!EVP_CipherInit_ex(ctx.get(), nullptr, nullptr, bssl::vector_data(&key),
|
||||
bssl::vector_data(&iv), -1) ||
|
||||
(!aad.empty() &&
|
||||
!EVP_CipherUpdate(ctx.get(), nullptr, &unused, bssl::vector_data(&aad),
|
||||
aad.size())) ||
|
||||
!EVP_CIPHER_CTX_set_padding(ctx.get(), 0) ||
|
||||
(!in->empty() &&
|
||||
!EVP_CipherUpdate(ctx.get(), bssl::vector_data(&result), &result_len1,
|
||||
bssl::vector_data(in), in->size())) ||
|
||||
!EVP_CipherFinal_ex(ctx.get(), bssl::vector_data(&result) + result_len1,
|
||||
&result_len2)) {
|
||||
t->PrintLine("Operation failed.");
|
||||
return false;
|
||||
}
|
||||
result.resize(result_len1 + result_len2);
|
||||
if (!t->ExpectBytesEqual(bssl::vector_data(out), out->size(),
|
||||
bssl::vector_data(&result), result.size())) {
|
||||
return false;
|
||||
}
|
||||
if (encrypt && is_aead) {
|
||||
uint8_t rtag[16];
|
||||
if (tag.size() > sizeof(rtag)) {
|
||||
t->PrintLine("Bad tag length.");
|
||||
return false;
|
||||
}
|
||||
if (!EVP_CIPHER_CTX_ctrl(ctx.get(), EVP_CTRL_GCM_GET_TAG, tag.size(),
|
||||
rtag) ||
|
||||
!t->ExpectBytesEqual(bssl::vector_data(&tag), tag.size(), rtag,
|
||||
tag.size())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool TestCipher(FileTest *t, void *arg) {
|
||||
std::string cipher_str;
|
||||
if (!t->GetAttribute(&cipher_str, "Cipher")) {
|
||||
return false;
|
||||
}
|
||||
const EVP_CIPHER *cipher = GetCipher(cipher_str);
|
||||
if (cipher == nullptr) {
|
||||
t->PrintLine("Unknown cipher: '%s'.", cipher_str.c_str());
|
||||
return false;
|
||||
}
|
||||
|
||||
std::vector<uint8_t> key, iv, plaintext, ciphertext, aad, tag;
|
||||
if (!t->GetBytes(&key, "Key") ||
|
||||
!t->GetBytes(&plaintext, "Plaintext") ||
|
||||
!t->GetBytes(&ciphertext, "Ciphertext")) {
|
||||
return false;
|
||||
}
|
||||
if (EVP_CIPHER_iv_length(cipher) > 0 &&
|
||||
!t->GetBytes(&iv, "IV")) {
|
||||
return false;
|
||||
}
|
||||
if (EVP_CIPHER_mode(cipher) == EVP_CIPH_GCM_MODE) {
|
||||
if (!t->GetBytes(&aad, "AAD") ||
|
||||
!t->GetBytes(&tag, "Tag")) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
enum {
|
||||
kEncrypt,
|
||||
kDecrypt,
|
||||
kBoth,
|
||||
} operation = kBoth;
|
||||
if (t->HasAttribute("Operation")) {
|
||||
const std::string &str = t->GetAttributeOrDie("Operation");
|
||||
if (str == "ENCRYPT") {
|
||||
operation = kEncrypt;
|
||||
} else if (str == "DECRYPT") {
|
||||
operation = kDecrypt;
|
||||
} else {
|
||||
t->PrintLine("Unknown operation: '%s'.", str.c_str());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// By default, both directions are run, unless overridden by the operation.
|
||||
if (operation != kDecrypt &&
|
||||
!TestOperation(t, cipher, true /* encrypt */, key, iv, plaintext,
|
||||
ciphertext, aad, tag)) {
|
||||
return false;
|
||||
}
|
||||
if (operation != kEncrypt &&
|
||||
!TestOperation(t, cipher, false /* decrypt */, key, iv, plaintext,
|
||||
ciphertext, aad, tag)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
CRYPTO_library_init();
|
||||
|
||||
if (argc != 2) {
|
||||
fprintf(stderr, "%s <test file>\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return FileTestMain(TestCipher, nullptr, argv[1]);
|
||||
}
|
||||
@@ -1,118 +1,537 @@
|
||||
# RC4 tests (from rc4test)
|
||||
RC4:0123456789abcdef0123456789abcdef::0123456789abcdef:75b7878099e0c596
|
||||
RC4:0123456789abcdef0123456789abcdef::0000000000000000:7494c2e7104b0879
|
||||
RC4:00000000000000000000000000000000::0000000000000000:de188941a3375d3a
|
||||
RC4:ef012345ef012345ef012345ef012345::0000000000000000000000000000000000000000:d6a141a7ec3c38dfbd615a1162e1c7ba36b67858
|
||||
RC4:0123456789abcdef0123456789abcdef::123456789ABCDEF0123456789ABCDEF0123456789ABCDEF012345678:66a0949f8af7d6891f7f832ba833c00c892ebe30143ce28740011ecf
|
||||
RC4:ef012345ef012345ef012345ef012345::00000000000000000000:d6a141a7ec3c38dfbd61
|
||||
Cipher = RC4
|
||||
Key = 0123456789abcdef0123456789abcdef
|
||||
Plaintext = 0123456789abcdef
|
||||
Ciphertext = 75b7878099e0c596
|
||||
|
||||
Cipher = RC4
|
||||
Key = 0123456789abcdef0123456789abcdef
|
||||
Plaintext = 0000000000000000
|
||||
Ciphertext = 7494c2e7104b0879
|
||||
|
||||
Cipher = RC4
|
||||
Key = 00000000000000000000000000000000
|
||||
Plaintext = 0000000000000000
|
||||
Ciphertext = de188941a3375d3a
|
||||
|
||||
Cipher = RC4
|
||||
Key = ef012345ef012345ef012345ef012345
|
||||
Plaintext = 0000000000000000000000000000000000000000
|
||||
Ciphertext = d6a141a7ec3c38dfbd615a1162e1c7ba36b67858
|
||||
|
||||
Cipher = RC4
|
||||
Key = 0123456789abcdef0123456789abcdef
|
||||
Plaintext = 123456789ABCDEF0123456789ABCDEF0123456789ABCDEF012345678
|
||||
Ciphertext = 66a0949f8af7d6891f7f832ba833c00c892ebe30143ce28740011ecf
|
||||
|
||||
Cipher = RC4
|
||||
Key = ef012345ef012345ef012345ef012345
|
||||
Plaintext = 00000000000000000000
|
||||
Ciphertext = d6a141a7ec3c38dfbd61
|
||||
|
||||
|
||||
# DES EDE3 CBC tests (from destest)
|
||||
DES-EDE3-CBC:0123456789abcdeff1e0d3c2b5a49786fedcba9876543210:fedcba9876543210:37363534333231204E6F77206973207468652074696D6520666F722000000000:3FE301C962AC01D02213763C1CBD4CDC799657C064ECF5D41C673812CFDE9675
|
||||
Cipher = DES-EDE3-CBC
|
||||
Key = 0123456789abcdeff1e0d3c2b5a49786fedcba9876543210
|
||||
IV = fedcba9876543210
|
||||
Plaintext = 37363534333231204E6F77206973207468652074696D6520666F722000000000
|
||||
Ciphertext = 3FE301C962AC01D02213763C1CBD4CDC799657C064ECF5D41C673812CFDE9675
|
||||
|
||||
|
||||
# AES 128 ECB tests (from FIPS-197 test vectors, encrypt)
|
||||
AES-128-ECB:000102030405060708090A0B0C0D0E0F::00112233445566778899AABBCCDDEEFF:69C4E0D86A7B0430D8CDB78070B4C55A:1
|
||||
Cipher = AES-128-ECB
|
||||
Key = 000102030405060708090A0B0C0D0E0F
|
||||
Operation = ENCRYPT
|
||||
Plaintext = 00112233445566778899AABBCCDDEEFF
|
||||
Ciphertext = 69C4E0D86A7B0430D8CDB78070B4C55A
|
||||
|
||||
|
||||
# AES 256 ECB tests (from FIPS-197 test vectors, encrypt)
|
||||
AES-256-ECB:000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F::00112233445566778899AABBCCDDEEFF:8EA2B7CA516745BFEAFC49904B496089:1
|
||||
Cipher = AES-256-ECB
|
||||
Key = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
|
||||
Operation = ENCRYPT
|
||||
Plaintext = 00112233445566778899AABBCCDDEEFF
|
||||
Ciphertext = 8EA2B7CA516745BFEAFC49904B496089
|
||||
|
||||
# AES 128 CBC tests (from NIST test vectors, decrypt)
|
||||
|
||||
# AES tests from NIST document SP800-38A
|
||||
# For all ECB encrypts and decrypts, the transformed sequence is
|
||||
# AES-bits-ECB:key::plaintext:ciphertext:encdec
|
||||
# ECB-AES128.Encrypt and ECB-AES128.Decrypt
|
||||
AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::6BC1BEE22E409F96E93D7E117393172A:3AD77BB40D7A3660A89ECAF32466EF97
|
||||
AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::AE2D8A571E03AC9C9EB76FAC45AF8E51:F5D3D58503B9699DE785895A96FDBAAF
|
||||
AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::30C81C46A35CE411E5FBC1191A0A52EF:43B1CD7F598ECE23881B00E3ED030688
|
||||
AES-128-ECB:2B7E151628AED2A6ABF7158809CF4F3C::F69F2445DF4F9B17AD2B417BE66C3710:7B0C785E27E8AD3F8223207104725DD4
|
||||
Cipher = AES-128-ECB
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
Plaintext = 6BC1BEE22E409F96E93D7E117393172A
|
||||
Ciphertext = 3AD77BB40D7A3660A89ECAF32466EF97
|
||||
|
||||
Cipher = AES-128-ECB
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
Plaintext = AE2D8A571E03AC9C9EB76FAC45AF8E51
|
||||
Ciphertext = F5D3D58503B9699DE785895A96FDBAAF
|
||||
|
||||
Cipher = AES-128-ECB
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
Plaintext = 30C81C46A35CE411E5FBC1191A0A52EF
|
||||
Ciphertext = 43B1CD7F598ECE23881B00E3ED030688
|
||||
|
||||
Cipher = AES-128-ECB
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
Plaintext = F69F2445DF4F9B17AD2B417BE66C3710
|
||||
Ciphertext = 7B0C785E27E8AD3F8223207104725DD4
|
||||
|
||||
|
||||
# ECB-AES256.Encrypt and ECB-AES256.Decrypt
|
||||
AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::6BC1BEE22E409F96E93D7E117393172A:F3EED1BDB5D2A03C064B5A7E3DB181F8
|
||||
AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::AE2D8A571E03AC9C9EB76FAC45AF8E51:591CCB10D410ED26DC5BA74A31362870
|
||||
AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::30C81C46A35CE411E5FBC1191A0A52EF:B6ED21B99CA6F4F9F153E7B1BEAFED1D
|
||||
AES-256-ECB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4::F69F2445DF4F9B17AD2B417BE66C3710:23304B7A39F9F3FF067D8D8F9E24ECC7
|
||||
Cipher = AES-256-ECB
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
Plaintext = 6BC1BEE22E409F96E93D7E117393172A
|
||||
Ciphertext = F3EED1BDB5D2A03C064B5A7E3DB181F8
|
||||
|
||||
Cipher = AES-256-ECB
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
Plaintext = AE2D8A571E03AC9C9EB76FAC45AF8E51
|
||||
Ciphertext = 591CCB10D410ED26DC5BA74A31362870
|
||||
|
||||
Cipher = AES-256-ECB
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
Plaintext = 30C81C46A35CE411E5FBC1191A0A52EF
|
||||
Ciphertext = B6ED21B99CA6F4F9F153E7B1BEAFED1D
|
||||
|
||||
Cipher = AES-256-ECB
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
Plaintext = F69F2445DF4F9B17AD2B417BE66C3710
|
||||
Ciphertext = 23304B7A39F9F3FF067D8D8F9E24ECC7
|
||||
|
||||
|
||||
# For all CBC encrypts and decrypts, the transformed sequence is
|
||||
# AES-bits-CBC:key:IV/ciphertext':plaintext:ciphertext:encdec
|
||||
# CBC-AES128.Encrypt and CBC-AES128.Decrypt
|
||||
AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:7649ABAC8119B246CEE98E9B12E9197D
|
||||
AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:7649ABAC8119B246CEE98E9B12E9197D:AE2D8A571E03AC9C9EB76FAC45AF8E51:5086CB9B507219EE95DB113A917678B2
|
||||
AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:5086CB9B507219EE95DB113A917678B2:30C81C46A35CE411E5FBC1191A0A52EF:73BED6B8E3C1743B7116E69E22229516
|
||||
AES-128-CBC:2B7E151628AED2A6ABF7158809CF4F3C:73BED6B8E3C1743B7116E69E22229516:F69F2445DF4F9B17AD2B417BE66C3710:3FF1CAA1681FAC09120ECA307586E1A7
|
||||
Cipher = AES-128-CBC
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
IV = 000102030405060708090A0B0C0D0E0F
|
||||
Plaintext = 6BC1BEE22E409F96E93D7E117393172A
|
||||
Ciphertext = 7649ABAC8119B246CEE98E9B12E9197D
|
||||
|
||||
Cipher = AES-128-CBC
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
IV = 7649ABAC8119B246CEE98E9B12E9197D
|
||||
Plaintext = AE2D8A571E03AC9C9EB76FAC45AF8E51
|
||||
Ciphertext = 5086CB9B507219EE95DB113A917678B2
|
||||
|
||||
Cipher = AES-128-CBC
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
IV = 5086CB9B507219EE95DB113A917678B2
|
||||
Plaintext = 30C81C46A35CE411E5FBC1191A0A52EF
|
||||
Ciphertext = 73BED6B8E3C1743B7116E69E22229516
|
||||
|
||||
Cipher = AES-128-CBC
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
IV = 73BED6B8E3C1743B7116E69E22229516
|
||||
Plaintext = F69F2445DF4F9B17AD2B417BE66C3710
|
||||
Ciphertext = 3FF1CAA1681FAC09120ECA307586E1A7
|
||||
|
||||
|
||||
# CBC-AES256.Encrypt and CBC-AES256.Decrypt
|
||||
AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:F58C4C04D6E5F1BA779EABFB5F7BFBD6
|
||||
AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:F58C4C04D6E5F1BA779EABFB5F7BFBD6:AE2D8A571E03AC9C9EB76FAC45AF8E51:9CFC4E967EDB808D679F777BC6702C7D
|
||||
AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:9CFC4E967EDB808D679F777BC6702C7D:30C81C46A35CE411E5FBC1191A0A52EF:39F23369A9D9BACFA530E26304231461
|
||||
AES-256-CBC:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:39F23369A9D9BACFA530E26304231461:F69F2445DF4F9B17AD2B417BE66C3710:B2EB05E2C39BE9FCDA6C19078C6A9D1B
|
||||
Cipher = AES-256-CBC
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
IV = 000102030405060708090A0B0C0D0E0F
|
||||
Plaintext = 6BC1BEE22E409F96E93D7E117393172A
|
||||
Ciphertext = F58C4C04D6E5F1BA779EABFB5F7BFBD6
|
||||
|
||||
Cipher = AES-256-CBC
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
IV = F58C4C04D6E5F1BA779EABFB5F7BFBD6
|
||||
Plaintext = AE2D8A571E03AC9C9EB76FAC45AF8E51
|
||||
Ciphertext = 9CFC4E967EDB808D679F777BC6702C7D
|
||||
|
||||
Cipher = AES-256-CBC
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
IV = 9CFC4E967EDB808D679F777BC6702C7D
|
||||
Plaintext = 30C81C46A35CE411E5FBC1191A0A52EF
|
||||
Ciphertext = 39F23369A9D9BACFA530E26304231461
|
||||
|
||||
Cipher = AES-256-CBC
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
IV = 39F23369A9D9BACFA530E26304231461
|
||||
Plaintext = F69F2445DF4F9B17AD2B417BE66C3710
|
||||
Ciphertext = B2EB05E2C39BE9FCDA6C19078C6A9D1B
|
||||
|
||||
|
||||
# AES Counter test vectors from RFC3686
|
||||
AES-128-CTR:AE6852F8121067CC4BF7A5765577F39E:00000030000000000000000000000001:53696E676C6520626C6F636B206D7367:E4095D4FB7A7B3792D6175A3261311B8:1
|
||||
AES-128-CTR:7E24067817FAE0D743D6CE1F32539163:006CB6DBC0543B59DA48D90B00000001:000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F:5104A106168A72D9790D41EE8EDAD388EB2E1EFC46DA57C8FCE630DF9141BE28:1
|
||||
AES-128-CTR:7691BE035E5020A8AC6E618529F9A0DC:00E0017B27777F3F4A1786F000000001:000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223:C1CF48A89F2FFDD9CF4652E9EFDB72D74540A42BDE6D7836D59A5CEAAEF3105325B2072F:1
|
||||
Cipher = AES-128-CTR
|
||||
Key = AE6852F8121067CC4BF7A5765577F39E
|
||||
IV = 00000030000000000000000000000001
|
||||
Operation = ENCRYPT
|
||||
Plaintext = 53696E676C6520626C6F636B206D7367
|
||||
Ciphertext = E4095D4FB7A7B3792D6175A3261311B8
|
||||
|
||||
Cipher = AES-128-CTR
|
||||
Key = 7E24067817FAE0D743D6CE1F32539163
|
||||
IV = 006CB6DBC0543B59DA48D90B00000001
|
||||
Operation = ENCRYPT
|
||||
Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
|
||||
Ciphertext = 5104A106168A72D9790D41EE8EDAD388EB2E1EFC46DA57C8FCE630DF9141BE28
|
||||
|
||||
Cipher = AES-128-CTR
|
||||
Key = 7691BE035E5020A8AC6E618529F9A0DC
|
||||
IV = 00E0017B27777F3F4A1786F000000001
|
||||
Operation = ENCRYPT
|
||||
Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223
|
||||
Ciphertext = C1CF48A89F2FFDD9CF4652E9EFDB72D74540A42BDE6D7836D59A5CEAAEF3105325B2072F
|
||||
|
||||
Cipher = AES-256-CTR
|
||||
Key = 776BEFF2851DB06F4C8A0542C8696F6C6A81AF1EEC96B4D37FC1D689E6C1C104
|
||||
IV = 00000060DB5672C97AA8F0B200000001
|
||||
Operation = ENCRYPT
|
||||
Plaintext = 53696E676C6520626C6F636B206D7367
|
||||
Ciphertext = 145AD01DBF824EC7560863DC71E3E0C0
|
||||
|
||||
Cipher = AES-256-CTR
|
||||
Key = F6D66D6BD52D59BB0796365879EFF886C66DD51A5B6A99744B50590C87A23884
|
||||
IV = 00FAAC24C1585EF15A43D87500000001
|
||||
Operation = ENCRYPT
|
||||
Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F
|
||||
Ciphertext = F05E231B3894612C49EE000B804EB2A9B8306B508F839D6A5530831D9344AF1C
|
||||
|
||||
Cipher = AES-256-CTR
|
||||
Key = FF7A617CE69148E4F1726E2F43581DE2AA62D9F805532EDFF1EED687FB54153D
|
||||
IV = 001CC5B751A51D70A1C1114800000001
|
||||
Operation = ENCRYPT
|
||||
Plaintext = 000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223
|
||||
Ciphertext = EB6C52821D0BBBF7CE7594462ACA4FAAB407DF866569FD07F48CC0B583D6071F1EC0E6B8
|
||||
|
||||
AES-256-CTR:776BEFF2851DB06F4C8A0542C8696F6C6A81AF1EEC96B4D37FC1D689E6C1C104:00000060DB5672C97AA8F0B200000001:53696E676C6520626C6F636B206D7367:145AD01DBF824EC7560863DC71E3E0C0:1
|
||||
AES-256-CTR:F6D66D6BD52D59BB0796365879EFF886C66DD51A5B6A99744B50590C87A23884:00FAAC24C1585EF15A43D87500000001:000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F:F05E231B3894612C49EE000B804EB2A9B8306B508F839D6A5530831D9344AF1C:1
|
||||
AES-256-CTR:FF7A617CE69148E4F1726E2F43581DE2AA62D9F805532EDFF1EED687FB54153D:001CC5B751A51D70A1C1114800000001:000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F20212223:EB6C52821D0BBBF7CE7594462ACA4FAAB407DF866569FD07F48CC0B583D6071F1EC0E6B8:1
|
||||
|
||||
# AES GCM test vectors from http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/gcm/gcm-spec.pdf
|
||||
AES-128-GCM:00000000000000000000000000000000:000000000000000000000000::::58e2fccefa7e3061367f1d57a4e7455a
|
||||
AES-128-GCM:00000000000000000000000000000000:000000000000000000000000:00000000000000000000000000000000:0388dace60b6a392f328c2b971b2fe78::ab6e47d42cec13bdf53a67b21257bddf
|
||||
AES-128-GCM:feffe9928665731c6d6a8f9467308308:cafebabefacedbaddecaf888:d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255:42831ec2217774244b7221b784d0d49ce3aa212f2c02a4e035c17e2329aca12e21d514b25466931c7d8f6a5aac84aa051ba30b396a0aac973d58e091473f5985::4d5c2af327cd64a62cf35abd2ba6fab4
|
||||
AES-128-GCM:feffe9928665731c6d6a8f9467308308:cafebabefacedbaddecaf888:d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39:42831ec2217774244b7221b784d0d49ce3aa212f2c02a4e035c17e2329aca12e21d514b25466931c7d8f6a5aac84aa051ba30b396a0aac973d58e091:feedfacedeadbeeffeedfacedeadbeefabaddad2:5bc94fbc3221a5db94fae95ae7121a47
|
||||
AES-128-GCM:feffe9928665731c6d6a8f9467308308:cafebabefacedbad:d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39:61353b4c2806934a777ff51fa22a4755699b2a714fcdc6f83766e5f97b6c742373806900e49f24b22b097544d4896b424989b5e1ebac0f07c23f4598:feedfacedeadbeeffeedfacedeadbeefabaddad2:3612d2e79e3b0785561be14aaca2fccb
|
||||
AES-128-GCM:feffe9928665731c6d6a8f9467308308:9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b:d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39:8ce24998625615b603a033aca13fb894be9112a5c3a211a8ba262a3cca7e2ca701e4a9a4fba43c90ccdcb281d48c7c6fd62875d2aca417034c34aee5:feedfacedeadbeeffeedfacedeadbeefabaddad2:619cc5aefffe0bfa462af43c1699d050
|
||||
AES-256-GCM:0000000000000000000000000000000000000000000000000000000000000000:000000000000000000000000::::530f8afbc74536b9a963b4f1c4cb738b
|
||||
AES-256-GCM:0000000000000000000000000000000000000000000000000000000000000000:000000000000000000000000:00000000000000000000000000000000:cea7403d4d606b6e074ec5d3baf39d18::d0d1c8a799996bf0265b98b5d48ab919
|
||||
AES-256-GCM:feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308:cafebabefacedbaddecaf888:d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255:522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662898015ad::b094dac5d93471bdec1a502270e3cc6c
|
||||
AES-256-GCM:feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308:cafebabefacedbaddecaf888:d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39:522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662:feedfacedeadbeeffeedfacedeadbeefabaddad2:76fc6ece0f4e1768cddf8853bb2d551b
|
||||
AES-256-GCM:feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308:cafebabefacedbad:d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39:c3762df1ca787d32ae47c13bf19844cbaf1ae14d0b976afac52ff7d79bba9de0feb582d33934a4f0954cc2363bc73f7862ac430e64abe499f47c9b1f:feedfacedeadbeeffeedfacedeadbeefabaddad2:3a337dbf46a792c45e454913fe2ea8f2
|
||||
AES-256-GCM:feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308:9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b:d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39:5a8def2f0c9e53f1f75d7853659e2a20eeb2b22aafde6419a058ab4f6f746bf40fc0c3b780f244452da3ebf1c5d82cdea2418997200ef82e44ae7e3f:feedfacedeadbeeffeedfacedeadbeefabaddad2:a44a8266ee1c8eb0c8b5d4cf5ae9f19a
|
||||
Cipher = AES-128-GCM
|
||||
Key = 00000000000000000000000000000000
|
||||
IV = 000000000000000000000000
|
||||
Plaintext =
|
||||
Ciphertext =
|
||||
AAD =
|
||||
Tag = 58e2fccefa7e3061367f1d57a4e7455a
|
||||
|
||||
Cipher = AES-128-GCM
|
||||
Key = 00000000000000000000000000000000
|
||||
IV = 000000000000000000000000
|
||||
Plaintext = 00000000000000000000000000000000
|
||||
Ciphertext = 0388dace60b6a392f328c2b971b2fe78
|
||||
AAD =
|
||||
Tag = ab6e47d42cec13bdf53a67b21257bddf
|
||||
|
||||
Cipher = AES-128-GCM
|
||||
Key = feffe9928665731c6d6a8f9467308308
|
||||
IV = cafebabefacedbaddecaf888
|
||||
Plaintext = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255
|
||||
Ciphertext = 42831ec2217774244b7221b784d0d49ce3aa212f2c02a4e035c17e2329aca12e21d514b25466931c7d8f6a5aac84aa051ba30b396a0aac973d58e091473f5985
|
||||
AAD =
|
||||
Tag = 4d5c2af327cd64a62cf35abd2ba6fab4
|
||||
|
||||
Cipher = AES-128-GCM
|
||||
Key = feffe9928665731c6d6a8f9467308308
|
||||
IV = cafebabefacedbaddecaf888
|
||||
Plaintext = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39
|
||||
Ciphertext = 42831ec2217774244b7221b784d0d49ce3aa212f2c02a4e035c17e2329aca12e21d514b25466931c7d8f6a5aac84aa051ba30b396a0aac973d58e091
|
||||
AAD = feedfacedeadbeeffeedfacedeadbeefabaddad2
|
||||
Tag = 5bc94fbc3221a5db94fae95ae7121a47
|
||||
|
||||
Cipher = AES-128-GCM
|
||||
Key = feffe9928665731c6d6a8f9467308308
|
||||
IV = cafebabefacedbad
|
||||
Plaintext = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39
|
||||
Ciphertext = 61353b4c2806934a777ff51fa22a4755699b2a714fcdc6f83766e5f97b6c742373806900e49f24b22b097544d4896b424989b5e1ebac0f07c23f4598
|
||||
AAD = feedfacedeadbeeffeedfacedeadbeefabaddad2
|
||||
Tag = 3612d2e79e3b0785561be14aaca2fccb
|
||||
|
||||
Cipher = AES-128-GCM
|
||||
Key = feffe9928665731c6d6a8f9467308308
|
||||
IV = 9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b
|
||||
Plaintext = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39
|
||||
Ciphertext = 8ce24998625615b603a033aca13fb894be9112a5c3a211a8ba262a3cca7e2ca701e4a9a4fba43c90ccdcb281d48c7c6fd62875d2aca417034c34aee5
|
||||
AAD = feedfacedeadbeeffeedfacedeadbeefabaddad2
|
||||
Tag = 619cc5aefffe0bfa462af43c1699d050
|
||||
|
||||
Cipher = AES-256-GCM
|
||||
Key = 0000000000000000000000000000000000000000000000000000000000000000
|
||||
IV = 000000000000000000000000
|
||||
Plaintext =
|
||||
Ciphertext =
|
||||
AAD =
|
||||
Tag = 530f8afbc74536b9a963b4f1c4cb738b
|
||||
|
||||
Cipher = AES-256-GCM
|
||||
Key = 0000000000000000000000000000000000000000000000000000000000000000
|
||||
IV = 000000000000000000000000
|
||||
Plaintext = 00000000000000000000000000000000
|
||||
Ciphertext = cea7403d4d606b6e074ec5d3baf39d18
|
||||
AAD =
|
||||
Tag = d0d1c8a799996bf0265b98b5d48ab919
|
||||
|
||||
Cipher = AES-256-GCM
|
||||
Key = feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308
|
||||
IV = cafebabefacedbaddecaf888
|
||||
Plaintext = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255
|
||||
Ciphertext = 522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662898015ad
|
||||
AAD =
|
||||
Tag = b094dac5d93471bdec1a502270e3cc6c
|
||||
|
||||
Cipher = AES-256-GCM
|
||||
Key = feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308
|
||||
IV = cafebabefacedbaddecaf888
|
||||
Plaintext = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39
|
||||
Ciphertext = 522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662
|
||||
AAD = feedfacedeadbeeffeedfacedeadbeefabaddad2
|
||||
Tag = 76fc6ece0f4e1768cddf8853bb2d551b
|
||||
|
||||
Cipher = AES-256-GCM
|
||||
Key = feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308
|
||||
IV = cafebabefacedbad
|
||||
Plaintext = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39
|
||||
Ciphertext = c3762df1ca787d32ae47c13bf19844cbaf1ae14d0b976afac52ff7d79bba9de0feb582d33934a4f0954cc2363bc73f7862ac430e64abe499f47c9b1f
|
||||
AAD = feedfacedeadbeeffeedfacedeadbeefabaddad2
|
||||
Tag = 3a337dbf46a792c45e454913fe2ea8f2
|
||||
|
||||
Cipher = AES-256-GCM
|
||||
Key = feffe9928665731c6d6a8f9467308308feffe9928665731c6d6a8f9467308308
|
||||
IV = 9313225df88406e555909c5aff5269aa6a7a9538534f7da1e4c303d2a318a728c3c0c95156809539fcf0e2429a6b525416aedbf5a0de6a57a637b39b
|
||||
Plaintext = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b39
|
||||
Ciphertext = 5a8def2f0c9e53f1f75d7853659e2a20eeb2b22aafde6419a058ab4f6f746bf40fc0c3b780f244452da3ebf1c5d82cdea2418997200ef82e44ae7e3f
|
||||
AAD = feedfacedeadbeeffeedfacedeadbeefabaddad2
|
||||
Tag = a44a8266ee1c8eb0c8b5d4cf5ae9f19a
|
||||
|
||||
# local add-ons, primarily streaming ghash tests
|
||||
# 128 bytes aad
|
||||
AES-128-GCM:00000000000000000000000000000000:000000000000000000000000:::d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662898015ad:5fea793a2d6f974d37e68e0cb8ff9492
|
||||
Cipher = AES-128-GCM
|
||||
Key = 00000000000000000000000000000000
|
||||
IV = 000000000000000000000000
|
||||
Plaintext =
|
||||
Ciphertext =
|
||||
AAD = d9313225f88406e5a55909c5aff5269a86a7a9531534f7da2e4c303d8a318a721c3c0c95956809532fcf0e2449a6b525b16aedf5aa0de657ba637b391aafd255522dc1f099567d07f47f37a32a84427d643a8cdcbfe5c0c97598a2bd2555d1aa8cb08e48590dbb3da7b08b1056828838c5f61e6393ba7a0abcc9f662898015ad
|
||||
Tag = 5fea793a2d6f974d37e68e0cb8ff9492
|
||||
|
||||
# 48 bytes plaintext
|
||||
AES-128-GCM:00000000000000000000000000000000:000000000000000000000000:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:0388dace60b6a392f328c2b971b2fe78f795aaab494b5923f7fd89ff948bc1e0200211214e7394da2089b6acd093abe0::9dd0a376b08e40eb00c35f29f9ea61a4
|
||||
Cipher = AES-128-GCM
|
||||
Key = 00000000000000000000000000000000
|
||||
IV = 000000000000000000000000
|
||||
Plaintext = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Ciphertext = 0388dace60b6a392f328c2b971b2fe78f795aaab494b5923f7fd89ff948bc1e0200211214e7394da2089b6acd093abe0
|
||||
AAD =
|
||||
Tag = 9dd0a376b08e40eb00c35f29f9ea61a4
|
||||
|
||||
# 80 bytes plaintext
|
||||
AES-128-GCM:00000000000000000000000000000000:000000000000000000000000:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:0388dace60b6a392f328c2b971b2fe78f795aaab494b5923f7fd89ff948bc1e0200211214e7394da2089b6acd093abe0c94da219118e297d7b7ebcbcc9c388f28ade7d85a8ee35616f7124a9d5270291::98885a3a22bd4742fe7b72172193b163
|
||||
Cipher = AES-128-GCM
|
||||
Key = 00000000000000000000000000000000
|
||||
IV = 000000000000000000000000
|
||||
Plaintext = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Ciphertext = 0388dace60b6a392f328c2b971b2fe78f795aaab494b5923f7fd89ff948bc1e0200211214e7394da2089b6acd093abe0c94da219118e297d7b7ebcbcc9c388f28ade7d85a8ee35616f7124a9d5270291
|
||||
AAD =
|
||||
Tag = 98885a3a22bd4742fe7b72172193b163
|
||||
|
||||
# 128 bytes plaintext
|
||||
AES-128-GCM:00000000000000000000000000000000:000000000000000000000000:0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:0388dace60b6a392f328c2b971b2fe78f795aaab494b5923f7fd89ff948bc1e0200211214e7394da2089b6acd093abe0c94da219118e297d7b7ebcbcc9c388f28ade7d85a8ee35616f7124a9d527029195b84d1b96c690ff2f2de30bf2ec89e00253786e126504f0dab90c48a30321de3345e6b0461e7c9e6c6b7afedde83f40::cac45f60e31efd3b5a43b98a22ce1aa1
|
||||
Cipher = AES-128-GCM
|
||||
Key = 00000000000000000000000000000000
|
||||
IV = 000000000000000000000000
|
||||
Plaintext = 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Ciphertext = 0388dace60b6a392f328c2b971b2fe78f795aaab494b5923f7fd89ff948bc1e0200211214e7394da2089b6acd093abe0c94da219118e297d7b7ebcbcc9c388f28ade7d85a8ee35616f7124a9d527029195b84d1b96c690ff2f2de30bf2ec89e00253786e126504f0dab90c48a30321de3345e6b0461e7c9e6c6b7afedde83f40
|
||||
AAD =
|
||||
Tag = cac45f60e31efd3b5a43b98a22ce1aa1
|
||||
|
||||
# 192 bytes plaintext, iv is chosen so that initial counter LSB is 0xFF
|
||||
AES-128-GCM:00000000000000000000000000000000:ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:56b3373ca9ef6e4a2b64fe1e9a17b61425f10d47a75a5fce13efc6bc784af24f4141bdd48cf7c770887afd573cca5418a9aeffcd7c5ceddfc6a78397b9a85b499da558257267caab2ad0b23ca476a53cb17fb41c4b8b475cb4f3f7165094c229c9e8c4dc0a2a5ff1903e501511221376a1cdb8364c5061a20cae74bc4acd76ceb0abc9fd3217ef9f8c90be402ddf6d8697f4f880dff15bfb7a6b28241ec8fe183c2d59e3f9dfff653c7126f0acb9e64211f42bae12af462b1070bef1ab5e3606::566f8ef683078bfdeeffa869d751a017
|
||||
Cipher = AES-128-GCM
|
||||
Key = 00000000000000000000000000000000
|
||||
IV = ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Plaintext = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Ciphertext = 56b3373ca9ef6e4a2b64fe1e9a17b61425f10d47a75a5fce13efc6bc784af24f4141bdd48cf7c770887afd573cca5418a9aeffcd7c5ceddfc6a78397b9a85b499da558257267caab2ad0b23ca476a53cb17fb41c4b8b475cb4f3f7165094c229c9e8c4dc0a2a5ff1903e501511221376a1cdb8364c5061a20cae74bc4acd76ceb0abc9fd3217ef9f8c90be402ddf6d8697f4f880dff15bfb7a6b28241ec8fe183c2d59e3f9dfff653c7126f0acb9e64211f42bae12af462b1070bef1ab5e3606
|
||||
AAD =
|
||||
Tag = 566f8ef683078bfdeeffa869d751a017
|
||||
|
||||
# 288 bytes plaintext, iv is chosen so that initial counter LSB is 0xFF
|
||||
AES-128-GCM:00000000000000000000000000000000:ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000:56b3373ca9ef6e4a2b64fe1e9a17b61425f10d47a75a5fce13efc6bc784af24f4141bdd48cf7c770887afd573cca5418a9aeffcd7c5ceddfc6a78397b9a85b499da558257267caab2ad0b23ca476a53cb17fb41c4b8b475cb4f3f7165094c229c9e8c4dc0a2a5ff1903e501511221376a1cdb8364c5061a20cae74bc4acd76ceb0abc9fd3217ef9f8c90be402ddf6d8697f4f880dff15bfb7a6b28241ec8fe183c2d59e3f9dfff653c7126f0acb9e64211f42bae12af462b1070bef1ab5e3606872ca10dee15b3249b1a1b958f23134c4bccb7d03200bce420a2f8eb66dcf3644d1423c1b5699003c13ecef4bf38a3b60eedc34033bac1902783dc6d89e2e774188a439c7ebcc0672dbda4ddcfb2794613b0be41315ef778708a70ee7d75165c::8b307f6b33286d0ab026a9ed3fe1e85f
|
||||
Cipher = AES-128-GCM
|
||||
Key = 00000000000000000000000000000000
|
||||
IV = ffffffff000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Plaintext = 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
Ciphertext = 56b3373ca9ef6e4a2b64fe1e9a17b61425f10d47a75a5fce13efc6bc784af24f4141bdd48cf7c770887afd573cca5418a9aeffcd7c5ceddfc6a78397b9a85b499da558257267caab2ad0b23ca476a53cb17fb41c4b8b475cb4f3f7165094c229c9e8c4dc0a2a5ff1903e501511221376a1cdb8364c5061a20cae74bc4acd76ceb0abc9fd3217ef9f8c90be402ddf6d8697f4f880dff15bfb7a6b28241ec8fe183c2d59e3f9dfff653c7126f0acb9e64211f42bae12af462b1070bef1ab5e3606872ca10dee15b3249b1a1b958f23134c4bccb7d03200bce420a2f8eb66dcf3644d1423c1b5699003c13ecef4bf38a3b60eedc34033bac1902783dc6d89e2e774188a439c7ebcc0672dbda4ddcfb2794613b0be41315ef778708a70ee7d75165c
|
||||
AAD =
|
||||
Tag = 8b307f6b33286d0ab026a9ed3fe1e85f
|
||||
|
||||
# 80 bytes plaintext, submitted by Intel
|
||||
AES-128-GCM:843ffcf5d2b72694d19ed01d01249412:dbcca32ebf9b804617c3aa9e:000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f:6268c6fa2a80b2d137467f092f657ac04d89be2beaa623d61b5a868c8f03ff95d3dcee23ad2f1ab3a6c80eaf4b140eb05de3457f0fbc111a6b43d0763aa422a3013cf1dc37fe417d1fbfc449b75d4cc5:00000000000000000000000000000000101112131415161718191a1b1c1d1e1f:3b629ccfbc1119b7319e1dce2cd6fd6d
|
||||
Cipher = AES-128-GCM
|
||||
Key = 843ffcf5d2b72694d19ed01d01249412
|
||||
IV = dbcca32ebf9b804617c3aa9e
|
||||
Plaintext = 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f
|
||||
Ciphertext = 6268c6fa2a80b2d137467f092f657ac04d89be2beaa623d61b5a868c8f03ff95d3dcee23ad2f1ab3a6c80eaf4b140eb05de3457f0fbc111a6b43d0763aa422a3013cf1dc37fe417d1fbfc449b75d4cc5
|
||||
AAD = 00000000000000000000000000000000101112131415161718191a1b1c1d1e1f
|
||||
Tag = 3b629ccfbc1119b7319e1dce2cd6fd6d
|
||||
|
||||
|
||||
# OFB tests from OpenSSL upstream.
|
||||
AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:3B3FD92EB72DAD20333449F8E83CFB4A:1
|
||||
AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:50FE67CC996D32B6DA0937E99BAFEC60:AE2D8A571E03AC9C9EB76FAC45AF8E51:7789508D16918F03F53C52DAC54ED825:1
|
||||
AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:D9A4DADA0892239F6B8B3D7680E15674:30C81C46A35CE411E5FBC1191A0A52EF:9740051E9C5FECF64344F7A82260EDCC:1
|
||||
AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:A78819583F0308E7A6BF36B1386ABF23:F69F2445DF4F9B17AD2B417BE66C3710:304C6528F659C77866A510D9C1D6AE5E:1
|
||||
|
||||
# OFB-AES128.Encrypt
|
||||
Cipher = AES-128-OFB
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
IV = 000102030405060708090A0B0C0D0E0F
|
||||
Operation = ENCRYPT
|
||||
Plaintext = 6BC1BEE22E409F96E93D7E117393172A
|
||||
Ciphertext = 3B3FD92EB72DAD20333449F8E83CFB4A
|
||||
|
||||
Cipher = AES-128-OFB
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
IV = 50FE67CC996D32B6DA0937E99BAFEC60
|
||||
Operation = ENCRYPT
|
||||
Plaintext = AE2D8A571E03AC9C9EB76FAC45AF8E51
|
||||
Ciphertext = 7789508D16918F03F53C52DAC54ED825
|
||||
|
||||
Cipher = AES-128-OFB
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
IV = D9A4DADA0892239F6B8B3D7680E15674
|
||||
Operation = ENCRYPT
|
||||
Plaintext = 30C81C46A35CE411E5FBC1191A0A52EF
|
||||
Ciphertext = 9740051E9C5FECF64344F7A82260EDCC
|
||||
|
||||
Cipher = AES-128-OFB
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
IV = A78819583F0308E7A6BF36B1386ABF23
|
||||
Operation = ENCRYPT
|
||||
Plaintext = F69F2445DF4F9B17AD2B417BE66C3710
|
||||
Ciphertext = 304C6528F659C77866A510D9C1D6AE5E
|
||||
|
||||
# OFB-AES128.Decrypt
|
||||
AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:3B3FD92EB72DAD20333449F8E83CFB4A:0
|
||||
AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:50FE67CC996D32B6DA0937E99BAFEC60:AE2D8A571E03AC9C9EB76FAC45AF8E51:7789508D16918F03F53C52DAC54ED825:0
|
||||
AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:D9A4DADA0892239F6B8B3D7680E15674:30C81C46A35CE411E5FBC1191A0A52EF:9740051E9C5FECF64344F7A82260EDCC:0
|
||||
AES-128-OFB:2B7E151628AED2A6ABF7158809CF4F3C:A78819583F0308E7A6BF36B1386ABF23:F69F2445DF4F9B17AD2B417BE66C3710:304C6528F659C77866A510D9C1D6AE5E:0
|
||||
Cipher = AES-128-OFB
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
IV = 000102030405060708090A0B0C0D0E0F
|
||||
Operation = DECRYPT
|
||||
Plaintext = 6BC1BEE22E409F96E93D7E117393172A
|
||||
Ciphertext = 3B3FD92EB72DAD20333449F8E83CFB4A
|
||||
|
||||
Cipher = AES-128-OFB
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
IV = 50FE67CC996D32B6DA0937E99BAFEC60
|
||||
Operation = DECRYPT
|
||||
Plaintext = AE2D8A571E03AC9C9EB76FAC45AF8E51
|
||||
Ciphertext = 7789508D16918F03F53C52DAC54ED825
|
||||
|
||||
Cipher = AES-128-OFB
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
IV = D9A4DADA0892239F6B8B3D7680E15674
|
||||
Operation = DECRYPT
|
||||
Plaintext = 30C81C46A35CE411E5FBC1191A0A52EF
|
||||
Ciphertext = 9740051E9C5FECF64344F7A82260EDCC
|
||||
|
||||
Cipher = AES-128-OFB
|
||||
Key = 2B7E151628AED2A6ABF7158809CF4F3C
|
||||
IV = A78819583F0308E7A6BF36B1386ABF23
|
||||
Operation = DECRYPT
|
||||
Plaintext = F69F2445DF4F9B17AD2B417BE66C3710
|
||||
Ciphertext = 304C6528F659C77866A510D9C1D6AE5E
|
||||
|
||||
# OFB-AES256.Encrypt
|
||||
AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:DC7E84BFDA79164B7ECD8486985D3860:1
|
||||
AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:B7BF3A5DF43989DD97F0FA97EBCE2F4A:AE2D8A571E03AC9C9EB76FAC45AF8E51:4FEBDC6740D20B3AC88F6AD82A4FB08D:1
|
||||
AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:E1C656305ED1A7A6563805746FE03EDC:30C81C46A35CE411E5FBC1191A0A52EF:71AB47A086E86EEDF39D1C5BBA97C408:1
|
||||
AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:41635BE625B48AFC1666DD42A09D96E7:F69F2445DF4F9B17AD2B417BE66C3710:0126141D67F37BE8538F5A8BE740E484:1
|
||||
Cipher = AES-256-OFB
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
IV = 000102030405060708090A0B0C0D0E0F
|
||||
Operation = ENCRYPT
|
||||
Plaintext = 6BC1BEE22E409F96E93D7E117393172A
|
||||
Ciphertext = DC7E84BFDA79164B7ECD8486985D3860
|
||||
|
||||
Cipher = AES-256-OFB
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
IV = B7BF3A5DF43989DD97F0FA97EBCE2F4A
|
||||
Operation = ENCRYPT
|
||||
Plaintext = AE2D8A571E03AC9C9EB76FAC45AF8E51
|
||||
Ciphertext = 4FEBDC6740D20B3AC88F6AD82A4FB08D
|
||||
|
||||
Cipher = AES-256-OFB
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
IV = E1C656305ED1A7A6563805746FE03EDC
|
||||
Operation = ENCRYPT
|
||||
Plaintext = 30C81C46A35CE411E5FBC1191A0A52EF
|
||||
Ciphertext = 71AB47A086E86EEDF39D1C5BBA97C408
|
||||
|
||||
Cipher = AES-256-OFB
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
IV = 41635BE625B48AFC1666DD42A09D96E7
|
||||
Operation = ENCRYPT
|
||||
Plaintext = F69F2445DF4F9B17AD2B417BE66C3710
|
||||
Ciphertext = 0126141D67F37BE8538F5A8BE740E484
|
||||
|
||||
|
||||
# OFB-AES256.Decrypt
|
||||
AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:DC7E84BFDA79164B7ECD8486985D3860:0
|
||||
AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:B7BF3A5DF43989DD97F0FA97EBCE2F4A:AE2D8A571E03AC9C9EB76FAC45AF8E51:4FEBDC6740D20B3AC88F6AD82A4FB08D:0
|
||||
AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:E1C656305ED1A7A6563805746FE03EDC:30C81C46A35CE411E5FBC1191A0A52EF:71AB47A086E86EEDF39D1C5BBA97C408:0
|
||||
AES-256-OFB:603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4:41635BE625B48AFC1666DD42A09D96E7:F69F2445DF4F9B17AD2B417BE66C3710:0126141D67F37BE8538F5A8BE740E484:0
|
||||
Cipher = AES-256-OFB
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
IV = 000102030405060708090A0B0C0D0E0F
|
||||
Operation = DECRYPT
|
||||
Plaintext = 6BC1BEE22E409F96E93D7E117393172A
|
||||
Ciphertext = DC7E84BFDA79164B7ECD8486985D3860
|
||||
|
||||
Cipher = AES-256-OFB
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
IV = B7BF3A5DF43989DD97F0FA97EBCE2F4A
|
||||
Operation = DECRYPT
|
||||
Plaintext = AE2D8A571E03AC9C9EB76FAC45AF8E51
|
||||
Ciphertext = 4FEBDC6740D20B3AC88F6AD82A4FB08D
|
||||
|
||||
Cipher = AES-256-OFB
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
IV = E1C656305ED1A7A6563805746FE03EDC
|
||||
Operation = DECRYPT
|
||||
Plaintext = 30C81C46A35CE411E5FBC1191A0A52EF
|
||||
Ciphertext = 71AB47A086E86EEDF39D1C5BBA97C408
|
||||
|
||||
Cipher = AES-256-OFB
|
||||
Key = 603DEB1015CA71BE2B73AEF0857D77811F352C073B6108D72D9810A30914DFF4
|
||||
IV = 41635BE625B48AFC1666DD42A09D96E7
|
||||
Operation = DECRYPT
|
||||
Plaintext = F69F2445DF4F9B17AD2B417BE66C3710
|
||||
Ciphertext = 0126141D67F37BE8538F5A8BE740E484
|
||||
|
||||
|
||||
# AES-192 CBC-mode test from upstream OpenSSL.
|
||||
AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:000102030405060708090A0B0C0D0E0F:6BC1BEE22E409F96E93D7E117393172A:4F021DB243BC633D7178183A9FA071E8
|
||||
AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:4F021DB243BC633D7178183A9FA071E8:AE2D8A571E03AC9C9EB76FAC45AF8E51:B4D9ADA9AD7DEDF4E5E738763F69145A
|
||||
AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:B4D9ADA9AD7DEDF4E5E738763F69145A:30C81C46A35CE411E5FBC1191A0A52EF:571B242012FB7AE07FA9BAAC3DF102E0
|
||||
AES-192-CBC:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B:571B242012FB7AE07FA9BAAC3DF102E0:F69F2445DF4F9B17AD2B417BE66C3710:08B0E27988598881D920A9E64F5615CD
|
||||
Cipher = AES-192-CBC
|
||||
Key = 8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B
|
||||
IV = 000102030405060708090A0B0C0D0E0F
|
||||
Plaintext = 6BC1BEE22E409F96E93D7E117393172A
|
||||
Ciphertext = 4F021DB243BC633D7178183A9FA071E8
|
||||
|
||||
Cipher = AES-192-CBC
|
||||
Key = 8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B
|
||||
IV = 4F021DB243BC633D7178183A9FA071E8
|
||||
Plaintext = AE2D8A571E03AC9C9EB76FAC45AF8E51
|
||||
Ciphertext = B4D9ADA9AD7DEDF4E5E738763F69145A
|
||||
|
||||
Cipher = AES-192-CBC
|
||||
Key = 8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B
|
||||
IV = B4D9ADA9AD7DEDF4E5E738763F69145A
|
||||
Plaintext = 30C81C46A35CE411E5FBC1191A0A52EF
|
||||
Ciphertext = 571B242012FB7AE07FA9BAAC3DF102E0
|
||||
|
||||
Cipher = AES-192-CBC
|
||||
Key = 8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B
|
||||
IV = 571B242012FB7AE07FA9BAAC3DF102E0
|
||||
Plaintext = F69F2445DF4F9B17AD2B417BE66C3710
|
||||
Ciphertext = 08B0E27988598881D920A9E64F5615CD
|
||||
|
||||
|
||||
# AES-192-ECB tests from FIPS-197
|
||||
AES-192-ECB:000102030405060708090A0B0C0D0E0F1011121314151617::00112233445566778899AABBCCDDEEFF:DDA97CA4864CDFE06EAF70A0EC0D7191:1
|
||||
Cipher = AES-192-ECB
|
||||
Key = 000102030405060708090A0B0C0D0E0F1011121314151617
|
||||
Operation = ENCRYPT
|
||||
Plaintext = 00112233445566778899AABBCCDDEEFF
|
||||
Ciphertext = DDA97CA4864CDFE06EAF70A0EC0D7191
|
||||
|
||||
|
||||
# AES-192-ECB tests from NIST document SP800-38A
|
||||
AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::6BC1BEE22E409F96E93D7E117393172A:BD334F1D6E45F25FF712A214571FA5CC:1
|
||||
AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::AE2D8A571E03AC9C9EB76FAC45AF8E51:974104846D0AD3AD7734ECB3ECEE4EEF:1
|
||||
AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::30C81C46A35CE411E5FBC1191A0A52EF:EF7AFD2270E2E60ADCE0BA2FACE6444E:1
|
||||
AES-192-ECB:8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B::F69F2445DF4F9B17AD2B417BE66C3710:9A4B41BA738D6C72FB16691603C18E0E:1
|
||||
Cipher = AES-192-ECB
|
||||
Key = 8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B
|
||||
Plaintext = 6BC1BEE22E409F96E93D7E117393172A
|
||||
Ciphertext = BD334F1D6E45F25FF712A214571FA5CC
|
||||
|
||||
Cipher = AES-192-ECB
|
||||
Key = 8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B
|
||||
Plaintext = AE2D8A571E03AC9C9EB76FAC45AF8E51
|
||||
Ciphertext = 974104846D0AD3AD7734ECB3ECEE4EEF
|
||||
|
||||
Cipher = AES-192-ECB
|
||||
Key = 8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B
|
||||
Plaintext = 30C81C46A35CE411E5FBC1191A0A52EF
|
||||
Ciphertext = EF7AFD2270E2E60ADCE0BA2FACE6444E
|
||||
|
||||
Cipher = AES-192-ECB
|
||||
Key = 8E73B0F7DA0E6452C810F32B809079E562F8EAD2522C6B7B
|
||||
Plaintext = F69F2445DF4F9B17AD2B417BE66C3710
|
||||
Ciphertext = 9A4B41BA738D6C72FB16691603C18E0E
|
||||
|
||||
@@ -108,6 +108,9 @@ using ScopedX509_ALGOR = ScopedOpenSSLType<X509_ALGOR, X509_ALGOR_free>;
|
||||
|
||||
using ScopedX509Stack = ScopedOpenSSLStack<STACK_OF(X509), X509, X509_free>;
|
||||
|
||||
using ScopedEVP_CIPHER_CTX = ScopedOpenSSLContext<EVP_CIPHER_CTX, int,
|
||||
EVP_CIPHER_CTX_init,
|
||||
EVP_CIPHER_CTX_cleanup>;
|
||||
using ScopedEVP_MD_CTX = ScopedOpenSSLContext<EVP_MD_CTX, int, EVP_MD_CTX_init,
|
||||
EVP_MD_CTX_cleanup>;
|
||||
using ScopedHMAC_CTX = ScopedOpenSSLContext<HMAC_CTX, void, HMAC_CTX_init,
|
||||
|
||||
Reference in New Issue
Block a user