/*
* Algorithm testing framework and tests.
*
* Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
* Copyright (c) 2002 Jean-Francois Dive <jef@linuxbe.org>
* Copyright (c) 2007 Nokia Siemens Networks
* Copyright (c) 2008 Herbert Xu <herbert@gondor.apana.org.au>
*
* Updated RFC4106 AES-GCM testing. Some test vectors were taken from
* http://csrc.nist.gov/groups/ST/toolkit/BCM/documents/proposedmodes/
* gcm/gcm-test-vectors.tar.gz
* Authors: Aidan O'Mahony (aidan.o.mahony@intel.com)
* Adrian Hoban <adrian.hoban@intel.com>
* Gabriele Paoloni <gabriele.paoloni@intel.com>
* Tadeusz Struk (tadeusz.struk@intel.com)
* Copyright (c) 2010, Intel Corporation.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
*/
#ifndef _CRYPTO_TESTMGR_H
#define _CRYPTO_TESTMGR_H
#include <linux/netlink.h>
#include <linux/zlib.h>
#include <crypto/compress.h>
#define MAX_DIGEST_SIZE 64
#define MAX_TAP 8
#define MAX_KEYLEN 56
#define MAX_IVLEN 32
struct hash_testvec {
/* only used with keyed hash algorithms */
char *key;
char *plaintext;
char *digest;
unsigned char tap[MAX_TAP];
unsigned char psize;
unsigned char np;
unsigned char ksize;
};
struct cipher_testvec {
char *key;
char *iv;
char *input;
char *result;
unsigned short tap[MAX_TAP];
int np;
unsigned char also_non_np;
unsigned char fail;
unsigned char wk; /* weak key flag */
unsigned char klen;
unsigned short ilen;
unsigned short rlen;
};
struct aead_testvec {
char *key;
char *iv;
char *input;
char *assoc;
char *result;
unsigned char tap[MAX_TAP];
unsigned char atap[MAX_TAP];
int np;
int anp;
unsigned char fail;
unsigned char novrfy; /* ccm dec verification failure expected */
unsigned char wk; /* weak key flag */
unsigned char klen;
unsigned short ilen;
unsigned short alen;
unsigned short rlen;
};
struct cprng_testvec {
char *key;
char *dt;
char *v;
char *result;
unsigned char klen;
unsigned short dtlen;
unsigned short vlen;
unsigned short rlen;
unsigned short loops;
};
static char zeroed_string[48];
/*
* MD4 test vectors from RFC1320
*/
#define MD4_TEST_VECTORS 7
static struct hash_testvec md4_tv_template [] = {
{
.plaintext = "",
.digest = "\x31\xd6\xcf\xe0\xd1\x6a\xe9\x31"
"\xb7\x3c\x59\xd7\xe0\xc0\x89\xc0",
}, {
.plaintext = "a",
.psize = 1,
.digest = "\xbd\xe5\x2c\xb3\x1d\xe3\x3e\x46"
"\x24\x5e\x05\xfb\xdb\xd6\xfb\x24",
}, {
.plaintext = "abc",
.psize = 3,
.digest = "\xa4\x48\x01\x7a\xaf\x21\xd8\x52"
"\x5f\xc1\x0a\xe8\x7a\xa6\x72\x9d",
}, {
.plaintext = "message digest",
.psize = 14,
.digest = "\xd9\x13\x0a\x81\x64\x54\x9f\xe8"
"\x18\x87\x48\x06\xe1\xc7\x01\x4b",
}, {
.plaintext = "abcdefghijklmnopqrstuvwxyz",
.psize = 26,
.digest = "\xd7\x9e\x1c\x30\x8a\xa5\xbb\xcd"
"\xee\xa8\xed\x63\xdf\x41\x2d\xa9",
.np = 2,
.tap = { 13, 13 },
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
.psize = 62,
.digest = "\x04\x3f\x85\x82\xf2\x41\xdb\x35"
"\x1c\xe6\x27\xe1\x53\xe7\xf0\xe4",
}, {
.plaintext = "123456789012345678901234567890123456789012345678901234567890123"
"45678901234567890",
.psize = 80,
.digest = "\xe3\x3b\x4d\xdc\x9c\x38\xf2\x19"
"\x9c\x3e\x7b\x16\x4f\xcc\x05\x36",
},
};
/*
* MD5 test vectors from RFC1321
*/
#define MD5_TEST_VECTORS 7
static struct hash_testvec md5_tv_template[] = {
{
.digest = "\xd4\x1d\x8c\xd9\x8f\x00\xb2\x04"
"\xe9\x80\x09\x98\xec\xf8\x42\x7e",
}, {
.plaintext = "a",
.psize = 1,
.digest = "\x0c\xc1\x75\xb9\xc0\xf1\xb6\xa8"
"\x31\xc3\x99\xe2\x69\x77\x26\x61",
}, {
.plaintext = "abc",
.psize = 3,
.digest = "\x90\x01\x50\x98\x3c\xd2\x4f\xb0"
"\xd6\x96\x3f\x7d\x28\xe1\x7f\x72",
}, {
.plaintext = "message digest",
.psize = 14,
.digest = "\xf9\x6b\x69\x7d\x7c\xb7\x93\x8d"
"\x52\x5a\x2f\x31\xaa\xf1\x61\xd0",
}, {
.plaintext = "abcdefghijklmnopqrstuvwxyz",
.psize = 26,
.digest = "\xc3\xfc\xd3\xd7\x61\x92\xe4\x00"
"\x7d\xfb\x49\x6c\xca\x67\xe1\x3b",
.np = 2,
.tap = {13, 13}
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
.psize = 62,
.digest = "\xd1\x74\xab\x98\xd2\x77\xd9\xf5"
"\xa5\x61\x1c\x2c\x9f\x41\x9d\x9f",
}, {
.plaintext = "12345678901234567890123456789012345678901234567890123456789012"
"345678901234567890",
.psize = 80,
.digest = "\x57\xed\xf4\xa2\x2b\xe3\xc9\x55"
"\xac\x49\xda\x2e\x21\x07\xb6\x7a",
}
};
/*
* RIPEMD-128 test vectors from ISO/IEC 10118-3:2004(E)
*/
#define RMD128_TEST_VECTORS 10
static struct hash_testvec rmd128_tv_template[] = {
{
.digest = "\xcd\xf2\x62\x13\xa1\x50\xdc\x3e"
"\xcb\x61\x0f\x18\xf6\xb3\x8b\x46",
}, {
.plaintext = "a",
.psize = 1,
.digest = "\x86\xbe\x7a\xfa\x33\x9d\x0f\xc7"
"\xcf\xc7\x85\xe7\x2f\x57\x8d\x33",
}, {
.plaintext = "abc",
.psize = 3,
.digest = "\xc1\x4a\x12\x19\x9c\x66\xe4\xba"
"\x84\x63\x6b\x0f\x69\x14\x4c\x77",
}, {
.plaintext = "message digest",
.psize = 14,
.digest = "\x9e\x32\x7b\x3d\x6e\x52\x30\x62"
"\xaf\xc1\x13\x2d\x7d\xf9\xd1\xb8",
}, {
.plaintext = "abcdefghijklmnopqrstuvwxyz",
.psize = 26,
.digest = "\xfd\x2a\xa6\x07\xf7\x1d\xc8\xf5"
"\x10\x71\x49\x22\xb3\x71\x83\x4e",
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
"fghijklmnopqrstuvwxyz0123456789",
.psize = 62,
.digest = "\xd1\xe9\x59\xeb\x17\x9c\x91\x1f"
"\xae\xa4\x62\x4c\x60\xc5\xc7\x02",
}, {
.plaintext = "1234567890123456789012345678901234567890"
"1234567890123456789012345678901234567890",
.psize = 80,
.digest = "\x3f\x45\xef\x19\x47\x32\xc2\xdb"
"\xb2\xc4\xa2\xc7\x69\x79\x5f\xa3",
}, {
.plaintext = "abcdbcdecdefdefgefghfghighij"
"hijkijkljklmklmnlmnomnopnopq",
.psize = 56,
.digest = "\xa1\xaa\x06\x89\xd0\xfa\xfa\x2d"
"\xdc\x22\xe8\x8b\x49\x13\x3a\x06",
.np = 2,
.tap = { 28, 28 },
}, {
.plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghi"
"jklmghijklmnhijklmnoijklmnopjklmnopqklmnopqr"
"lmnopqrsmnopqrstnopqrstu",
.psize = 112,
.digest = "\xd4\xec\xc9\x13\xe1\xdf\x77\x6b"
"\xf4\x8d\xe9\xd5\x5b\x1f\x25\x46",
}, {
.plaintext = "abcdbcdecdefdefgefghfghighijhijk",
.psize = 32,
.digest = "\x13\xfc\x13\xe8\xef\xff\x34\x7d"
"\xe1\x93\xff\x46\xdb\xac\xcf\xd4",
}
};
/*
* RIPEMD-160 test vectors from ISO/IEC 10118-3:2004(E)
*/
#define RMD160_TEST_VECTORS 10
static struct hash_testvec rmd160_tv_template[] = {
{
.digest = "\x9c\x11\x85\xa5\xc5\xe9\xfc\x54\x61\x28"
"\x08\x97\x7e\xe8\xf5\x48\xb2\x25\x8d\x31",
}, {
.plaintext = "a",
.psize = 1,
.digest = "\x0b\xdc\x9d\x2d\x25\x6b\x3e\xe9\xda\xae"
"\x34\x7b\xe6\xf4\xdc\x83\x5a\x46\x7f\xfe",
}, {
.plaintext = "abc",
.psize = 3,
.digest = "\x8e\xb2\x08\xf7\xe0\x5d\x98\x7a\x9b\x04"
"\x4a\x8e\x98\xc6\xb0\x87\xf1\x5a\x0b\xfc",
}, {
.plaintext = "message digest",
.psize = 14,
.digest = "\x5d\x06\x89\xef\x49\xd2\xfa\xe5\x72\xb8"
"\x81\xb1\x23\xa8\x5f\xfa\x21\x59\x5f\x36",
}, {
.plaintext = "abcdefghijklmnopqrstuvwxyz",
.psize = 26,
.digest = "\xf7\x1c\x27\x10\x9c\x69\x2c\x1b\x56\xbb"
"\xdc\xeb\x5b\x9d\x28\x65\xb3\x70\x8d\xbc",
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
"fghijklmnopqrstuvwxyz0123456789",
.psize = 62,
.digest = "\xb0\xe2\x0b\x6e\x31\x16\x64\x02\x86\xed"
"\x3a\x87\xa5\x71\x30\x79\xb2\x1f\x51\x89",
}, {
.plaintext = "1234567890123456789012345678901234567890"
"1234567890123456789012345678901234567890",
.psize = 80,
.digest = "\x9b\x75\x2e\x45\x57\x3d\x4b\x39\xf4\xdb"
"\xd3\x32\x3c\xab\x82\xbf\x63\x32\x6b\xfb",
}, {
.plaintext = "abcdbcdecdefdefgefghfghighij"
"hijkijkljklmklmnlmnomnopnopq",
.psize = 56,
.digest = "\x12\xa0\x53\x38\x4a\x9c\x0c\x88\xe4\x05"
"\xa0\x6c\x27\xdc\xf4\x9a\xda\x62\xeb\x2b",
.np = 2,
.tap = { 28, 28 },
}, {
.plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghi"
"jklmghijklmnhijklmnoijklmnopjklmnopqklmnopqr"
"lmnopqrsmnopqrstnopqrstu",
.psize = 112,
.digest = "\x6f\x3f\xa3\x9b\x6b\x50\x3c\x38\x4f\x91"
"\x9a\x49\xa7\xaa\x5c\x2c\x08\xbd\xfb\x45",
}, {
.plaintext = "abcdbcdecdefdefgefghfghighijhijk",
.psize = 32,
.digest = "\x94\xc2\x64\x11\x54\x04\xe6\x33\x79\x0d"
"\xfc\xc8\x7b\x58\x7d\x36\x77\x06\x7d\x9f",
}
};
/*
* RIPEMD-256 test vectors
*/
#define RMD256_TEST_VECTORS 8
static struct hash_testvec rmd256_tv_template[] = {
{
.digest = "\x02\xba\x4c\x4e\x5f\x8e\xcd\x18"
"\x77\xfc\x52\xd6\x4d\x30\xe3\x7a"
"\x2d\x97\x74\xfb\x1e\x5d\x02\x63"
"\x80\xae\x01\x68\xe3\xc5\x52\x2d",
}, {
.plaintext = "a",
.psize = 1,
.digest = "\xf9\x33\x3e\x45\xd8\x57\xf5\xd9"
"\x0a\x91\xba\xb7\x0a\x1e\xba\x0c"
"\xfb\x1b\xe4\xb0\x78\x3c\x9a\xcf"
"\xcd\x88\x3a\x91\x34\x69\x29\x25",
}, {
.plaintext = "abc",
.psize = 3,
.digest = "\xaf\xbd\x6e\x22\x8b\x9d\x8c\xbb"
"\xce\xf5\xca\x2d\x03\xe6\xdb\xa1"
"\x0a\xc0\xbc\x7d\xcb\xe4\x68\x0e"
"\x1e\x42\xd2\xe9\x75\x45\x9b\x65",
}, {
.plaintext = "message digest",
.psize = 14,
.digest = "\x87\xe9\x71\x75\x9a\x1c\xe4\x7a"
"\x51\x4d\x5c\x91\x4c\x39\x2c\x90"
"\x18\xc7\xc4\x6b\xc1\x44\x65\x55"
"\x4a\xfc\xdf\x54\xa5\x07\x0c\x0e",
}, {
.plaintext = "abcdefghijklmnopqrstuvwxyz",
.psize = 26,
.digest = "\x64\x9d\x30\x34\x75\x1e\xa2\x16"
"\x77\x6b\xf9\xa1\x8a\xcc\x81\xbc"
"\x78\x96\x11\x8a\x51\x97\x96\x87"
"\x82\xdd\x1f\xd9\x7d\x8d\x51\x33",
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
"fghijklmnopqrstuvwxyz0123456789",
.psize = 62,
.digest = "\x57\x40\xa4\x08\xac\x16\xb7\x20"
"\xb8\x44\x24\xae\x93\x1c\xbb\x1f"
"\xe3\x63\xd1\xd0\xbf\x40\x17\xf1"
"\xa8\x9f\x7e\xa6\xde\x77\xa0\xb8",
}, {
.plaintext = "1234567890123456789012345678901234567890"
"1234567890123456789012345678901234567890",
.psize = 80,
.digest = "\x06\xfd\xcc\x7a\x40\x95\x48\xaa"
"\xf9\x13\x68\xc0\x6a\x62\x75\xb5"
"\x53\xe3\xf0\x99\xbf\x0e\xa4\xed"
"\xfd\x67\x78\xdf\x89\xa8\x90\xdd",
}, {
.plaintext = "abcdbcdecdefdefgefghfghighij"
"hijkijkljklmklmnlmnomnopnopq",
.psize = 56,
.digest = "\x38\x43\x04\x55\x83\xaa\xc6\xc8"
"\xc8\xd9\x12\x85\x73\xe7\xa9\x80"
"\x9a\xfb\x2a\x0f\x34\xcc\xc3\x6e"
"\xa9\xe7\x2f\x16\xf6\x36\x8e\x3f",
.np = 2,
.tap = { 28, 28 },
}
};
/*
* RIPEMD-320 test vectors
*/
#define RMD320_TEST_VECTORS 8
static struct hash_testvec rmd320_tv_template[] = {
{
.digest = "\x22\xd6\x5d\x56\x61\x53\x6c\xdc\x75\xc1"
"\xfd\xf5\xc6\xde\x7b\x41\xb9\xf2\x73\x25"
"\xeb\xc6\x1e\x85\x57\x17\x7d\x70\x5a\x0e"
"\xc8\x80\x15\x1c\x3a\x32\xa0\x08\x99\xb8",
}, {
.plaintext = "a",
.psize = 1,
.digest = "\xce\x78\x85\x06\x38\xf9\x26\x58\xa5\xa5"
"\x85\x09\x75\x79\x92\x6d\xda\x66\x7a\x57"
"\x16\x56\x2c\xfc\xf6\xfb\xe7\x7f\x63\x54"
"\x2f\x99\xb0\x47\x05\xd6\x97\x0d\xff\x5d",
}, {
.plaintext = "abc",
.psize = 3,
.digest = "\xde\x4c\x01\xb3\x05\x4f\x89\x30\xa7\x9d"
"\x09\xae\x73\x8e\x92\x30\x1e\x5a\x17\x08"
"\x5b\xef\xfd\xc1\xb8\xd1\x16\x71\x3e\x74"
"\xf8\x2f\xa9\x42\xd6\x4c\xdb\xc4\x68\x2d",
}, {
.plaintext = "message digest",
.psize = 14,
.digest = "\x3a\x8e\x28\x50\x2e\xd4\x5d\x42\x2f\x68"
"\x84\x4f\x9d\xd3\x16\xe7\xb9\x85\x33\xfa"
"\x3f\x2a\x91\xd2\x9f\x84\xd4\x25\xc8\x8d"
"\x6b\x4e\xff\x72\x7d\xf6\x6a\x7c\x01\x97",
}, {
.plaintext = "abcdefghijklmnopqrstuvwxyz",
.psize = 26,
.digest = "\xca\xbd\xb1\x81\x0b\x92\x47\x0a\x20\x93"
"\xaa\x6b\xce\x05\x95\x2c\x28\x34\x8c\xf4"
"\x3f\xf6\x08\x41\x97\x51\x66\xbb\x40\xed"
"\x23\x40\x04\xb8\x82\x44\x63\xe6\xb0\x09",
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
"fghijklmnopqrstuvwxyz0123456789",
.psize = 62,
.digest = "\xed\x54\x49\x40\xc8\x6d\x67\xf2\x50\xd2"
"\x32\xc3\x0b\x7b\x3e\x57\x70\xe0\xc6\x0c"
"\x8c\xb9\xa4\xca\xfe\x3b\x11\x38\x8a\xf9"
"\x92\x0e\x1b\x99\x23\x0b\x84\x3c\x86\xa4",
}, {
.plaintext = "1234567890123456789012345678901234567890"
"1234567890123456789012345678901234567890",
.psize = 80,
.digest = "\x55\x78\x88\xaf\x5f\x6d\x8e\xd6\x2a\xb6"
"\x69\x45\xc6\xd2\xa0\xa4\x7e\xcd\x53\x41"
"\xe9\x15\xeb\x8f\xea\x1d\x05\x24\x95\x5f"
"\x82\x5d\xc7\x17\xe4\xa0\x08\xab\x2d\x42",
}, {
.plaintext = "abcdbcdecdefdefgefghfghighij"
"hijkijkljklmklmnlmnomnopnopq",
.psize = 56,
.digest = "\xd0\x34\xa7\x95\x0c\xf7\x22\x02\x1b\xa4"
"\xb8\x4d\xf7\x69\xa5\xde\x20\x60\xe2\x59"
"\xdf\x4c\x9b\xb4\xa4\x26\x8c\x0e\x93\x5b"
"\xbc\x74\x70\xa9\x69\xc9\xd0\x72\xa1\xac",
.np = 2,
.tap = { 28, 28 },
}
};
/*
* SHA1 test vectors from from FIPS PUB 180-1
* Long vector from CAVS 5.0
*/
#define SHA1_TEST_VECTORS 3
static struct hash_testvec sha1_tv_template[] = {
{
.plaintext = "abc",
.psize = 3,
.digest = "\xa9\x99\x3e\x36\x47\x06\x81\x6a\xba\x3e"
"\x25\x71\x78\x50\xc2\x6c\x9c\xd0\xd8\x9d",
}, {
.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
.psize = 56,
.digest = "\x84\x98\x3e\x44\x1c\x3b\xd2\x6e\xba\xae"
"\x4a\xa1\xf9\x51\x29\xe5\xe5\x46\x70\xf1",
.np = 2,
.tap = { 28, 28 }
}, {
.plaintext = "\xec\x29\x56\x12\x44\xed\xe7\x06"
"\xb6\xeb\x30\xa1\xc3\x71\xd7\x44"
"\x50\xa1\x05\xc3\xf9\x73\x5f\x7f"
"\xa9\xfe\x38\xcf\x67\xf3\x04\xa5"
"\x73\x6a\x10\x6e\x92\xe1\x71\x39"
"\xa6\x81\x3b\x1c\x81\xa4\xf3\xd3"
"\xfb\x95\x46\xab\x42\x96\xfa\x9f"
"\x72\x28\x26\xc0\x66\x86\x9e\xda"
"\xcd\x73\xb2\x54\x80\x35\x18\x58"
"\x13\xe2\x26\x34\xa9\xda\x44\x00"
"\x0d\x95\xa2\x81\xff\x9f\x26\x4e"
"\xcc\xe0\xa9\x31\x22\x21\x62\xd0"
"\x21\xcc\xa2\x8d\xb5\xf3\xc2\xaa"
"\x24\x94\x5a\xb1\xe3\x1c\xb4\x13"
"\xae\x29\x81\x0f\xd7\x94\xca\xd5"
"\xdf\xaf\x29\xec\x43\xcb\x38\xd1"
"\x98\xfe\x4a\xe1\xda\x23\x59\x78"
"\x02\x21\x40\x5b\xd6\x71\x2a\x53"
"\x05\xda\x4b\x1b\x73\x7f\xce\x7c"
"\xd2\x1c\x0e\xb7\x72\x8d\x08\x23"
"\x5a\x90\x11",
.psize = 163,
.digest = "\x97\x01\x11\xc4\xe7\x7b\xcc\x88\xcc\x20"
"\x45\x9c\x02\xb6\x9b\x4a\xa8\xf5\x82\x17",
.np = 4,
.tap = { 63, 64, 31, 5 }
}
};
/*
* SHA224 test vectors from from FIPS PUB 180-2
*/
#define SHA224_TEST_VECTORS 2
static struct hash_testvec sha224_tv_template[] = {
{
.plaintext = "abc",
.psize = 3,
.digest = "\x23\x09\x7D\x22\x34\x05\xD8\x22"
"\x86\x42\xA4\x77\xBD\xA2\x55\xB3"
"\x2A\xAD\xBC\xE4\xBD\xA0\xB3\xF7"
"\xE3\x6C\x9D\xA7",
}, {
.plaintext =
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
.psize = 56,
.digest = "\x75\x38\x8B\x16\x51\x27\x76\xCC"
"\x5D\xBA\x5D\xA1\xFD\x89\x01\x50"
"\xB0\xC6\x45\x5C\xB4\xF5\x8B\x19"
"\x52\x52\x25\x25",
.np = 2,
.tap = { 28, 28 }
}
};
/*
* SHA256 test vectors from from NIST
*/
#define SHA256_TEST_VECTORS 2
static struct hash_testvec sha256_tv_template[] = {
{
.plaintext = "abc",
.psize = 3,
.digest = "\xba\x78\x16\xbf\x8f\x01\xcf\xea"
"\x41\x41\x40\xde\x5d\xae\x22\x23"
"\xb0\x03\x61\xa3\x96\x17\x7a\x9c"
"\xb4\x10\xff\x61\xf2\x00\x15\xad",
}, {
.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
.psize = 56,
.digest = "\x24\x8d\x6a\x61\xd2\x06\x38\xb8"
"\xe5\xc0\x26\x93\x0c\x3e\x60\x39"
"\xa3\x3c\xe4\x59\x64\xff\x21\x67"
"\xf6\xec\xed\xd4\x19\xdb\x06\xc1",
.np = 2,
.tap = { 28, 28 }
},
};
/*
* SHA384 test vectors from from NIST and kerneli
*/
#define SHA384_TEST_VECTORS 4
static struct hash_testvec sha384_tv_template[] = {
{
.plaintext= "abc",
.psize = 3,
.digest = "\xcb\x00\x75\x3f\x45\xa3\x5e\x8b"
"\xb5\xa0\x3d\x69\x9a\xc6\x50\x07"
"\x27\x2c\x32\xab\x0e\xde\xd1\x63"
"\x1a\x8b\x60\x5a\x43\xff\x5b\xed"
"\x80\x86\x07\x2b\xa1\xe7\xcc\x23"
"\x58\xba\xec\xa1\x34\xc8\x25\xa7",
}, {
.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
.psize = 56,
.digest = "\x33\x91\xfd\xdd\xfc\x8d\xc7\x39"
"\x37\x07\xa6\x5b\x1b\x47\x09\x39"
"\x7c\xf8\xb1\xd1\x62\xaf\x05\xab"
"\xfe\x8f\x45\x0d\xe5\xf3\x6b\xc6"
"\xb0\x45\x5a\x85\x20\xbc\x4e\x6f"
"\x5f\xe9\x5b\x1f\xe3\xc8\x45\x2b",
}, {
.plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
"hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
.psize = 112,
.digest = "\x09\x33\x0c\x33\xf7\x11\x47\xe8"
"\x3d\x19\x2f\xc7\x82\xcd\x1b\x47"
"\x53\x11\x1b\x17\x3b\x3b\x05\xd2"
"\x2f\xa0\x80\x86\xe3\xb0\xf7\x12"
"\xfc\xc7\xc7\x1a\x55\x7e\x2d\xb9"
"\x66\xc3\xe9\xfa\x91\x74\x60\x39",
}, {
.plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
"efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
.psize = 104,
.digest = "\x3d\x20\x89\x73\xab\x35\x08\xdb"
"\xbd\x7e\x2c\x28\x62\xba\x29\x0a"
"\xd3\x01\x0e\x49\x78\xc1\x98\xdc"
"\x4d\x8f\xd0\x14\xe5\x82\x82\x3a"
"\x89\xe1\x6f\x9b\x2a\x7b\xbc\x1a"
"\xc9\x38\xe2\xd1\x99\xe8\xbe\xa4",
.np = 4,
.tap = { 26, 26, 26, 26 }
},
};
/*
* SHA512 test vectors from from NIST and kerneli
*/
#define SHA512_TEST_VECTORS 4
static struct hash_testvec sha512_tv_template[] = {
{
.plaintext = "abc",
.psize = 3,
.digest = "\xdd\xaf\x35\xa1\x93\x61\x7a\xba"
"\xcc\x41\x73\x49\xae\x20\x41\x31"
"\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2"
"\x0a\x9e\xee\xe6\x4b\x55\xd3\x9a"
"\x21\x92\x99\x2a\x27\x4f\xc1\xa8"
"\x36\xba\x3c\x23\xa3\xfe\xeb\xbd"
"\x45\x4d\x44\x23\x64\x3c\xe8\x0e"
"\x2a\x9a\xc9\x4f\xa5\x4c\xa4\x9f",
}, {
.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
.psize = 56,
.digest = "\x20\x4a\x8f\xc6\xdd\xa8\x2f\x0a"
"\x0c\xed\x7b\xeb\x8e\x08\xa4\x16"
"\x57\xc1\x6e\xf4\x68\xb2\x28\xa8"
"\x27\x9b\xe3\x31\xa7\x03\xc3\x35"
"\x96\xfd\x15\xc1\x3b\x1b\x07\xf9"
"\xaa\x1d\x3b\xea\x57\x78\x9c\xa0"
"\x31\xad\x85\xc7\xa7\x1d\xd7\x03"
"\x54\xec\x63\x12\x38\xca\x34\x45",
}, {
.plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
"hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
.psize = 112,
.digest = "\x8e\x95\x9b\x75\xda\xe3\x13\xda"
"\x8c\xf4\xf7\x28\x14\xfc\x14\x3f"
"\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1"
"\x72\x99\xae\xad\xb6\x88\x90\x18"
"\x50\x1d\x28\x9e\x49\x00\xf7\xe4"
"\x33\x1b\x99\xde\xc4\xb5\x43\x3a"
"\xc7\xd3\x29\xee\xb6\xdd\x26\x54"
"\x5e\x96\xe5\x5b\x87\x4b\xe9\x09",
}, {
.plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
"efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
.psize = 104,
.digest = "\x93\x0d\x0c\xef\xcb\x30\xff\x11"
"\x33\xb6\x89\x81\x21\xf1\xcf\x3d"
"\x27\x57\x8a\xfc\xaf\xe8\x67\x7c"
"\x52\x57\xcf\x06\x99\x11\xf7\x5d"
"\x8f\x58\x31\xb5\x6e\xbf\xda\x67"
"\xb2\x78\xe6\x6d\xff\x8b\x84\xfe"
"\x2b\x28\x70\xf7\x42\xa5\x80\xd8"
"\xed\xb4\x19\x87\x23\x28\x50\xc9",
.np = 4,
.tap = { 26, 26, 26, 26 }
},
};
/*
* WHIRLPOOL test vectors from Whirlpool package
* by Vincent Rijmen and Paulo S. L. M. Barreto as part of the NESSIE
* submission
*/
#define WP512_TEST_VECTORS 8
static struct hash_testvec wp512_tv_template[] = {
{
.plaintext = "",
.psize = 0,
.digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
"\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
"\xC5\x30\x23\x21\x30\xD4\x07\xF8"
"\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
"\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
"\xCF\x88\xE3\xE0\x3C\x4F\x07\x57"
"\xEA\x89\x64\xE5\x9B\x63\xD9\x37"
"\x08\xB1\x38\xCC\x42\xA6\x6E\xB3",
}, {
.plaintext = "a",
.psize = 1,
.digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
"\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
"\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
"\x73\xC4\x50\x01\xD0\x08\x7B\x42"
"\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
"\x3A\x42\x39\x1A\x39\x14\x5A\x59"
"\x1A\x92\x20\x0D\x56\x01\x95\xE5"
"\x3B\x47\x85\x84\xFD\xAE\x23\x1A",
}, {
.plaintext = "abc",
.psize = 3,
.digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
"\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
"\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
"\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
"\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
"\x7D\x0E\x34\x95\x71\x14\xCB\xD6"
"\xC7\x97\xFC\x9D\x95\xD8\xB5\x82"
"\xD2\x25\x29\x20\x76\xD4\xEE\xF5",
}, {
.plaintext = "message digest",
.psize = 14,
.digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
"\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
"\x83\x8D\x00\x03\x22\x30\xF5\x3C"
"\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
"\x84\x21\x55\x76\x59\xEF\x55\xC1"
"\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6"
"\x92\xED\x92\x00\x52\x83\x8F\x33"
"\x62\xE8\x6D\xBD\x37\xA8\x90\x3E",
}, {
.plaintext = "abcdefghijklmnopqrstuvwxyz",
.psize = 26,
.digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
"\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
"\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
"\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
"\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
"\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6"
"\xF6\x8F\x67\x3E\x72\x07\x86\x5D"
"\x5D\x98\x19\xA3\xDB\xA4\xEB\x3B",
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz0123456789",
.psize = 62,
.digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
"\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
"\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
"\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
"\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
"\xB7\xCB\x57\x21\x1B\x92\x81\xA6"
"\x55\x17\xCC\x87\x9D\x7B\x96\x21"
"\x42\xC6\x5F\x5A\x7A\xF0\x14\x67",
}, {
.plaintext = "1234567890123456789012345678901234567890"
"1234567890123456789012345678901234567890",
.psize = 80,
.digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
"\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
"\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
"\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
"\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
"\x38\xCD\x04\x7B\x26\x81\xA5\x1A"
"\x2C\x60\x48\x1E\x88\xC5\xA2\x0B"
"\x2C\x2A\x80\xCF\x3A\x9A\x08\x3B",
}, {
.plaintext = "abcdbcdecdefdefgefghfghighijhijk",
.psize = 32,
.digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
"\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
"\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
"\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
"\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
"\x7B\x94\x76\x39\xFE\x05\x0B\x56"
"\x93\x9B\xAA\xA0\xAD\xFF\x9A\xE6"
"\x74\x5B\x7B\x18\x1C\x3B\xE3\xFD",
},
};
#define WP384_TEST_VECTORS 8
static struct hash_testvec wp384_tv_template[] = {
{
.plaintext = "",
.psize = 0,
.digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
"\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
"\xC5\x30\x23\x21\x30\xD4\x07\xF8"
"\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
"\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
"\xCF\x88\xE3\xE0\x3C\x4F\x07\x57",
}, {
.plaintext = "a",
.psize = 1,
.digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
"\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
"\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
"\x73\xC4\x50\x01\xD0\x08\x7B\x42"
"\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
"\x3A\x42\x39\x1A\x39\x14\x5A\x59",
}, {
.plaintext = "abc",
.psize = 3,
.digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
"\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
"\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
"\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
"\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
"\x7D\x0E\x34\x95\x71\x14\xCB\xD6",
}, {
.plaintext = "message digest",
.psize = 14,
.digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
"\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
"\x83\x8D\x00\x03\x22\x30\xF5\x3C"
"\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
"\x84\x21\x55\x76\x59\xEF\x55\xC1"
"\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6",
}, {
.plaintext = "abcdefghijklmnopqrstuvwxyz",
.psize = 26,
.digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
"\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
"\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
"\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
"\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
"\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6",
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz0123456789",
.psize = 62,
.digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
"\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
"\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
"\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
"\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
"\xB7\xCB\x57\x21\x1B\x92\x81\xA6",
}, {
.plaintext = "1234567890123456789012345678901234567890"
"1234567890123456789012345678901234567890",
.psize = 80,
.digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
"\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
"\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
"\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
"\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
"\x38\xCD\x04\x7B\x26\x81\xA5\x1A",
}, {
.plaintext = "abcdbcdecdefdefgefghfghighijhijk",
.psize = 32,
.digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
"\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
"\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
"\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
"\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
"\x7B\x94\x76\x39\xFE\x05\x0B\x56",
},
};
#define WP256_TEST_VECTORS 8
static struct hash_testvec wp256_tv_template[] = {
{
.plaintext = "",
.psize = 0,
.digest = "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
"\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
"\xC5\x30\x23\x21\x30\xD4\x07\xF8"
"\x9A\xFE\xE0\x96\x49\x97\xF7\xA7",
}, {
.plaintext = "a",
.psize = 1,
.digest = "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
"\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
"\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
"\x73\xC4\x50\x01\xD0\x08\x7B\x42",
}, {
.plaintext = "abc",
.psize = 3,
.digest = "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
"\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
"\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
"\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C",
}, {
.plaintext = "message digest",
.psize = 14,
.digest = "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
"\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
"\x83\x8D\x00\x03\x22\x30\xF5\x3C"
"\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B",
}, {
.plaintext = "abcdefghijklmnopqrstuvwxyz",
.psize = 26,
.digest = "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
"\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
"\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
"\x44\x2E\xE1\x3B\x80\x54\xE4\x1B",
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz0123456789",
.psize = 62,
.digest = "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
"\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
"\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
"\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E",
}, {
.plaintext = "1234567890123456789012345678901234567890"
"1234567890123456789012345678901234567890",
.psize = 80,
.digest = "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
"\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
"\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
"\x54\x9C\x4A\xFA\xDB\x60\x14\x29",
}, {
.plaintext = "abcdbcdecdefdefgefghfghighijhijk",
.psize = 32,
.digest = "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
"\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
"\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
"\x07\xC5\x62\xF9\x88\xE9\x5C\x69",
},
};
/*
* TIGER test vectors from Tiger website
*/
#define TGR192_TEST_VECTORS 6
static struct hash_testvec tgr192_tv_template[] = {
{
.plaintext = "",
.psize = 0,
.digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
"\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
"\xf3\x73\xde\x2d\x49\x58\x4e\x7a",
}, {
.plaintext = "abc",
.psize = 3,
.digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
"\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
"\x93\x5f\x7b\x95\x1c\x13\x29\x51",
}, {
.plaintext = "Tiger",
.psize = 5,
.digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
"\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
"\x37\x79\x0c\x11\x6f\x9d\x2b\xdf",
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
.psize = 64,
.digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
"\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
"\xb5\x86\x44\x50\x34\xa5\xa3\x86",
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
.psize = 64,
.digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
"\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
"\x57\x89\x65\x65\x97\x5f\x91\x97",
}, {
.plaintext = "Tiger - A Fast New Hash Function, "
"by Ross Anderson and Eli Biham, "
"proceedings of Fast Software Encryption 3, "
"Cambridge, 1996.",
.psize = 125,
.digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
"\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
"\xdd\x68\x15\x1d\x50\x39\x74\xfc",
},
};
#define TGR160_TEST_VECTORS 6
static struct hash_testvec tgr160_tv_template[] = {
{
.plaintext = "",
.psize = 0,
.digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
"\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
"\xf3\x73\xde\x2d",
}, {
.plaintext = "abc",
.psize = 3,
.digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
"\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
"\x93\x5f\x7b\x95",
}, {
.plaintext = "Tiger",
.psize = 5,
.digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
"\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
"\x37\x79\x0c\x11",
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
.psize = 64,
.digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
"\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
"\xb5\x86\x44\x50",
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
.psize = 64,
.digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
"\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
"\x57\x89\x65\x65",
}, {
.plaintext = "Tiger - A Fast New Hash Function, "
"by Ross Anderson and Eli Biham, "
"proceedings of Fast Software Encryption 3, "
"Cambridge, 1996.",
.psize = 125,
.digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
"\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
"\xdd\x68\x15\x1d",
},
};
#define TGR128_TEST_VECTORS 6
static struct hash_testvec tgr128_tv_template[] = {
{
.plaintext = "",
.psize = 0,
.digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
"\x16\x16\x6e\x76\xb1\xbb\x92\x5f",
}, {
.plaintext = "abc",
.psize = 3,
.digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
"\x52\x7a\xb5\x41\xff\xc5\xb8\xbf",
}, {
.plaintext = "Tiger",
.psize = 5,
.digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
"\x27\x6a\xbb\x38\xc8\xeb\x6d\xec",
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
.psize = 64,
.digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
"\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e",
}, {
.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
.psize = 64,
.digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
"\x8d\xf1\xcd\x12\x61\x65\x5d\xe9",
}, {
.plaintext = "Tiger - A Fast New Hash Function, "
"by Ross Anderson and Eli Biham, "
"proceedings of Fast Software Encryption 3, "
"Cambridge, 1996.",
.psize = 125,
.digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
"\x57\xb2\x77\x4d\xfd\x6d\x5b\x24",
},
};
#define GHASH_TEST_VECTORS 1
static struct hash_testvec ghash_tv_template[] =
{
{
.key = "\xdf\xa6\xbf\x4d\xed\x81\xdb\x03\xff\xca\xff\x95\xf8\x30\xf0\x61",
.ksize = 16,
.plaintext = "\x95\x2b\x2a\x56\xa5\x60\x04a\xc0\xb3\x2b\x66\x56\xa0\x5b\x40\xb6",
.psize = 16,
.digest = "\xda\x53\xeb\x0a\xd2\xc5\x5b\xb6"
"\x4f\xc4\x80\x2c\xc3\xfe\xda\x60",
},
};
/*
* HMAC-MD5 test vectors from RFC2202
* (These need to be fixed to not use strlen).
*/
#define HMAC_MD5_TEST_VECTORS 7
static struct hash_testvec hmac_md5_tv_template[] =
{
{
.key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
.ksize = 16,
.plaintext = "Hi There",
.psize = 8,
.digest = "\x92\x94\x72\x7a\x36\x38\xbb\x1c"
"\x13\xf4\x8e\xf8\x15\x8b\xfc\x9d",
}, {
.key = "Jefe",
.ksize = 4,
.plaintext = "what do ya want for nothing?",
.psize = 28,
.digest = "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03"
"\xea\xa8\x6e\x31\x0a\x5d\xb7\x38",
.np = 2,
.tap = {14, 14}
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
.ksize = 16,
.plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
.psize = 50,
.digest = "\x56\xbe\x34\x52\x1d\x14\x4c\x88"
"\xdb\xb8\xc7\x33\xf0\xe8\xb3\xf6",
}, {
.key = "\x01\x02\x03\x04\x05\x06\x07\x08"
"\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
"\x11\x12\x13\x14\x15\x16\x17\x18\x19",
.ksize = 25,
.plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
.psize = 50,
.digest = "\x69\x7e\xaf\x0a\xca\x3a\x3a\xea"
"\x3a\x75\x16\x47\x46\xff\xaa\x79",
}, {
.key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
.ksize = 16,
.plaintext = "Test With Truncation",
.psize = 20,
.digest = "\x56\x46\x1e\xf2\x34\x2e\xdc\x00"
"\xf9\xba\xb9\x95\x69\x0e\xfd\x4c",
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa",
.ksize = 80,
.plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
.psize = 54,
.digest = "\x6b\x1a\xb7\xfe\x4b\xd7\xbf\x8f"
"\x0b\x62\xe6\xce\x61\xb9\xd0\xcd",
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa",
.ksize = 80,
.plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
"Block-Size Data",
.psize = 73,
.digest = "\x6f\x63\x0f\xad\x67\xcd\xa0\xee"
"\x1f\xb1\xf5\x62\xdb\x3a\xa5\x3e",
},
};
/*
* HMAC-RIPEMD128 test vectors from RFC2286
*/
#define HMAC_RMD128_TEST_VECTORS 7
static struct hash_testvec hmac_rmd128_tv_template[] = {
{
.key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
.ksize = 16,
.plaintext = "Hi There",
.psize = 8,
.digest = "\xfb\xf6\x1f\x94\x92\xaa\x4b\xbf"
"\x81\xc1\x72\xe8\x4e\x07\x34\xdb",
}, {
.key = "Jefe",
.ksize = 4,
.plaintext = "what do ya want for nothing?",
.psize = 28,
.digest = "\x87\x5f\x82\x88\x62\xb6\xb3\x34"
"\xb4\x27\xc5\x5f\x9f\x7f\xf0\x9b",
.np = 2,
.tap = { 14, 14 },
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
.ksize = 16,
.plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
.psize = 50,
.digest = "\x09\xf0\xb2\x84\x6d\x2f\x54\x3d"
"\xa3\x63\xcb\xec\x8d\x62\xa3\x8d",
}, {
.key = "\x01\x02\x03\x04\x05\x06\x07\x08"
"\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
"\x11\x12\x13\x14\x15\x16\x17\x18\x19",
.ksize = 25,
.plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
.psize = 50,
.digest = "\xbd\xbb\xd7\xcf\x03\xe4\x4b\x5a"
"\xa6\x0a\xf8\x15\xbe\x4d\x22\x94",
}, {
.key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
.ksize = 16,
.plaintext = "Test With Truncation",
.psize = 20,
.digest = "\xe7\x98\x08\xf2\x4b\x25\xfd\x03"
"\x1c\x15\x5f\x0d\x55\x1d\x9a\x3a",
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa",
.ksize = 80,
.plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
.psize = 54,
.digest = "\xdc\x73\x29\x28\xde\x98\x10\x4a"
"\x1f\x59\xd3\x73\xc1\x50\xac\xbb",
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa",
.ksize = 80,
.plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
"Block-Size Data",
.psize = 73,
.digest = "\x5c\x6b\xec\x96\x79\x3e\x16\xd4"
"\x06\x90\xc2\x37\x63\x5f\x30\xc5",
},
};
/*
* HMAC-RIPEMD160 test vectors from RFC2286
*/
#define HMAC_RMD160_TEST_VECTORS 7
static struct hash_testvec hmac_rmd160_tv_template[] = {
{
.key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
.ksize = 20,
.plaintext = "Hi There",
.psize = 8,
.digest = "\x24\xcb\x4b\xd6\x7d\x20\xfc\x1a\x5d\x2e"
"\xd7\x73\x2d\xcc\x39\x37\x7f\x0a\x56\x68",
}, {
.key = "Jefe",
.ksize = 4,
.plaintext = "what do ya want for nothing?",
.psize = 28,
.digest = "\xdd\xa6\xc0\x21\x3a\x48\x5a\x9e\x24\xf4"
"\x74\x20\x64\xa7\xf0\x33\xb4\x3c\x40\x69",
.np = 2,
.tap = { 14, 14 },
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
.ksize = 20,
.plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
.psize = 50,
.digest = "\xb0\xb1\x05\x36\x0d\xe7\x59\x96\x0a\xb4"
"\xf3\x52\x98\xe1\x16\xe2\x95\xd8\xe7\xc1",
}, {
.key = "\x01\x02\x03\x04\x05\x06\x07\x08"
"\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
"\x11\x12\x13\x14\x15\x16\x17\x18\x19",
.ksize = 25,
.plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
.psize = 50,
.digest = "\xd5\xca\x86\x2f\x4d\x21\xd5\xe6\x10\xe1"
"\x8b\x4c\xf1\xbe\xb9\x7a\x43\x65\xec\xf4",
}, {
.key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
.ksize = 20,
.plaintext = "Test With Truncation",
.psize = 20,
.digest = "\x76\x19\x69\x39\x78\xf9\x1d\x90\x53\x9a"
"\xe7\x86\x50\x0f\xf3\xd8\xe0\x51\x8e\x39",
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa",
.ksize = 80,
.plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
.psize = 54,
.digest = "\x64\x66\xca\x07\xac\x5e\xac\x29\xe1\xbd"
"\x52\x3e\x5a\xda\x76\x05\xb7\x91\xfd\x8b",
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa",
.ksize = 80,
.plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
"Block-Size Data",
.psize = 73,
.digest = "\x69\xea\x60\x79\x8d\x71\x61\x6c\xce\x5f"
"\xd0\x87\x1e\x23\x75\x4c\xd7\x5d\x5a\x0a",
},
};
/*
* HMAC-SHA1 test vectors from RFC2202
*/
#define HMAC_SHA1_TEST_VECTORS 7
static struct hash_testvec hmac_sha1_tv_template[] = {
{
.key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
.ksize = 20,
.plaintext = "Hi There",
.psize = 8,
.digest = "\xb6\x17\x31\x86\x55\x05\x72\x64"
"\xe2\x8b\xc0\xb6\xfb\x37\x8c\x8e\xf1"
"\x46\xbe",
}, {
.key = "Jefe",
.ksize = 4,
.plaintext = "what do ya want for nothing?",
.psize = 28,
.digest = "\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74"
"\x16\xd5\xf1\x84\xdf\x9c\x25\x9a\x7c\x79",
.np = 2,
.tap = { 14, 14 }
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
.ksize = 20,
.plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
.psize = 50,
.digest = "\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3"
"\x9a\xf4\x8a\xa1\x7b\x4f\x63\xf1\x75\xd3",
}, {
.key = "\x01\x02\x03\x04\x05\x06\x07\x08"
"\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
"\x11\x12\x13\x14\x15\x16\x17\x18\x19",
.ksize = 25,
.plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
.psize = 50,
.digest = "\x4c\x90\x07\xf4\x02\x62\x50\xc6\xbc\x84"
"\x14\xf9\xbf\x50\xc8\x6c\x2d\x72\x35\xda",
}, {
.key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
.ksize = 20,
.plaintext = "Test With Truncation",
.psize = 20,
.digest = "\x4c\x1a\x03\x42\x4b\x55\xe0\x7f\xe7\xf2"
"\x7b\xe1\xd5\x8b\xb9\x32\x4a\x9a\x5a\x04",
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa",
.ksize = 80,
.plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
.psize = 54,
.digest = "\xaa\x4a\xe5\xe1\x52\x72\xd0\x0e\x95\x70"
"\x56\x37\xce\x8a\x3b\x55\xed\x40\x21\x12",
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa",
.ksize = 80,
.plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
"Block-Size Data",
.psize = 73,
.digest = "\xe8\xe9\x9d\x0f\x45\x23\x7d\x78\x6d\x6b"
"\xba\xa7\x96\x5c\x78\x08\xbb\xff\x1a\x91",
},
};
/*
* SHA224 HMAC test vectors from RFC4231
*/
#define HMAC_SHA224_TEST_VECTORS 4
static struct hash_testvec hmac_sha224_tv_template[] = {
{
.key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
"\x0b\x0b\x0b\x0b",
.ksize = 20,
/* ("Hi There") */
.plaintext = "\x48\x69\x20\x54\x68\x65\x72\x65",
.psize = 8,
.digest = "\x89\x6f\xb1\x12\x8a\xbb\xdf\x19"
"\x68\x32\x10\x7c\xd4\x9d\xf3\x3f"
"\x47\xb4\xb1\x16\x99\x12\xba\x4f"
"\x53\x68\x4b\x22",
}, {
.key = "Jefe",
.ksize = 4,
/* ("what do ya want for nothing?") */
.plaintext = "\x77\x68\x61\x74\x20\x64\x6f\x20"
"\x79\x61\x20\x77\x61\x6e\x74\x20"
"\x66\x6f\x72\x20\x6e\x6f\x74\x68"
"\x69\x6e\x67\x3f",
.psize = 28,
.digest = "\xa3\x0e\x01\x09\x8b\xc6\xdb\xbf"
"\x45\x69\x0f\x3a\x7e\x9e\x6d\x0f"
"\x8b\xbe\xa2\xa3\x9e\x61\x48\x00"
"\x8f\xd0\x5e\x44",
.np = 4,
.tap = { 7, 7, 7, 7 }
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa",
.ksize = 131,
/* ("Test Using Larger Than Block-Size Key - Hash Key First") */
.plaintext = "\x54\x65\x73\x74\x20\x55\x73\x69"
"\x6e\x67\x20\x4c\x61\x72\x67\x65"
"\x72\x20\x54\x68\x61\x6e\x20\x42"
"\x6c\x6f\x63\x6b\x2d\x53\x69\x7a"
"\x65\x20\x4b\x65\x79\x20\x2d\x20"
"\x48\x61\x73\x68\x20\x4b\x65\x79"
"\x20\x46\x69\x72\x73\x74",
.psize = 54,
.digest = "\x95\xe9\xa0\xdb\x96\x20\x95\xad"
"\xae\xbe\x9b\x2d\x6f\x0d\xbc\xe2"
"\xd4\x99\xf1\x12\xf2\xd2\xb7\x27"
"\x3f\xa6\x87\x0e",
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa",
.ksize = 131,
/* ("This is a test using a larger than block-size key and a")
(" larger than block-size data. The key needs to be")
(" hashed before being used by the HMAC algorithm.") */
.plaintext = "\x54\x68\x69\x73\x20\x69\x73\x20"
"\x61\x20\x74\x65\x73\x74\x20\x75"
"\x73\x69\x6e\x67\x20\x61\x20\x6c"
"\x61\x72\x67\x65\x72\x20\x74\x68"
"\x61\x6e\x20\x62\x6c\x6f\x63\x6b"
"\x2d\x73\x69\x7a\x65\x20\x6b\x65"
"\x79\x20\x61\x6e\x64\x20\x61\x20"
"\x6c\x61\x72\x67\x65\x72\x20\x74"
"\x68\x61\x6e\x20\x62\x6c\x6f\x63"
"\x6b\x2d\x73\x69\x7a\x65\x20\x64"
"\x61\x74\x61\x2e\x20\x54\x68\x65"
"\x20\x6b\x65\x79\x20\x6e\x65\x65"
"\x64\x73\x20\x74\x6f\x20\x62\x65"
"\x20\x68\x61\x73\x68\x65\x64\x20"
"\x62\x65\x66\x6f\x72\x65\x20\x62"
"\x65\x69\x6e\x67\x20\x75\x73\x65"
"\x64\x20\x62\x79\x20\x74\x68\x65"
"\x20\x48\x4d\x41\x43\x20\x61\x6c"
"\x67\x6f\x72\x69\x74\x68\x6d\x2e",
.psize = 152,
.digest = "\x3a\x85\x41\x66\xac\x5d\x9f\x02"
"\x3f\x54\xd5\x17\xd0\xb3\x9d\xbd"
"\x94\x67\x70\xdb\x9c\x2b\x95\xc9"
"\xf6\xf5\x65\xd1",
},
};
/*
* HMAC-SHA256 test vectors from
* draft-ietf-ipsec-ciph-sha-256-01.txt
*/
#define HMAC_SHA256_TEST_VECTORS 10
static struct hash_testvec hmac_sha256_tv_template[] = {
{
.key = "\x01\x02\x03\x04\x05\x06\x07\x08"
"\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
"\x11\x12\x13\x14\x15\x16\x17\x18"
"\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
.ksize = 32,
.plaintext = "abc",
.psize = 3,
.digest = "\xa2\x1b\x1f\x5d\x4c\xf4\xf7\x3a"
"\x4d\xd9\x39\x75\x0f\x7a\x06\x6a"
"\x7f\x98\xcc\x13\x1c\xb1\x6a\x66"
"\x92\x75\x90\x21\xcf\xab\x81\x81",
}, {
.key = "\x01\x02\x03\x04\x05\x06\x07\x08"
"\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
"\x11\x12\x13\x14\x15\x16\x17\x18"
"\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
.ksize = 32,
.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
.psize = 56,
.digest = "\x10\x4f\xdc\x12\x57\x32\x8f\x08"
"\x18\x4b\xa7\x31\x31\xc5\x3c\xae"
"\xe6\x98\xe3\x61\x19\x42\x11\x49"
"\xea\x8c\x71\x24\x56\x69\x7d\x30",
}, {
.key = "\x01\x02\x03\x04\x05\x06\x07\x08"
"\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
"\x11\x12\x13\x14\x15\x16\x17\x18"
"\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
.ksize = 32,
.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
.psize = 112,
.digest = "\x47\x03\x05\xfc\x7e\x40\xfe\x34"
"\xd3\xee\xb3\xe7\x73\xd9\x5a\xab"
"\x73\xac\xf0\xfd\x06\x04\x47\xa5"
"\xeb\x45\x95\xbf\x33\xa9\xd1\xa3",
}, {
.key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
"\x0b\x0b\x0b\x0b\x0b\x0b",
.ksize = 32,
.plaintext = "Hi There",
.psize = 8,
.digest = "\x19\x8a\x60\x7e\xb4\x4b\xfb\xc6"
"\x99\x03\xa0\xf1\xcf\x2b\xbd\xc5"
"\xba\x0a\xa3\xf3\xd9\xae\x3c\x1c"
"\x7a\x3b\x16\x96\xa0\xb6\x8c\xf7",
}, {
.key = "Jefe",
.ksize = 4,
.plaintext = "what do ya want for nothing?",
.psize = 28,
.digest = "\x5b\xdc\xc1\x46\xbf\x60\x75\x4e"
"\x6a\x04\x24\x26\x08\x95\x75\xc7"
"\x5a\x00\x3f\x08\x9d\x27\x39\x83"
"\x9d\xec\x58\xb9\x64\xec\x38\x43",
.np = 2,
.tap = { 14, 14 }
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
.ksize = 32,
.plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
.psize = 50,
.digest = "\xcd\xcb\x12\x20\xd1\xec\xcc\xea"
"\x91\xe5\x3a\xba\x30\x92\xf9\x62"
"\xe5\x49\xfe\x6c\xe9\xed\x7f\xdc"
"\x43\x19\x1f\xbd\xe4\x5c\x30\xb0",
}, {
.key = "\x01\x02\x03\x04\x05\x06\x07\x08"
"\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
"\x11\x12\x13\x14\x15\x16\x17\x18"
"\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
"\x21\x22\x23\x24\x25",
.ksize = 37,
.plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
.psize = 50,
.digest = "\xd4\x63\x3c\x17\xf6\xfb\x8d\x74"
"\x4c\x66\xde\xe0\xf8\xf0\x74\x55"
"\x6e\xc4\xaf\x55\xef\x07\x99\x85"
"\x41\x46\x8e\xb4\x9b\xd2\xe9\x17",
}, {
.key = "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
"\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
"\x0c\x0c\x0c\x0c\x0c\x0c",
.ksize = 32,
.plaintext = "Test With Truncation",
.psize = 20,
.digest = "\x75\x46\xaf\x01\x84\x1f\xc0\x9b"
"\x1a\xb9\xc3\x74\x9a\x5f\x1c\x17"
"\xd4\xf5\x89\x66\x8a\x58\x7b\x27"
"\x00\xa9\xc9\x7c\x11\x93\xcf\x42",
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa",
.ksize = 80,
.plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
.psize = 54,
.digest = "\x69\x53\x02\x5e\xd9\x6f\x0c\x09"
"\xf8\x0a\x96\xf7\x8e\x65\x38\xdb"
"\xe2\xe7\xb8\x20\xe3\xdd\x97\x0e"
"\x7d\xdd\x39\x09\x1b\x32\x35\x2f",
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa",
.ksize = 80,
.plaintext = "Test Using Larger Than Block-Size Key and Larger Than "
"One Block-Size Data",
.psize = 73,
.digest = "\x63\x55\xac\x22\xe8\x90\xd0\xa3"
"\xc8\x48\x1a\x5c\xa4\x82\x5b\xc8"
"\x84\xd3\xe7\xa1\xff\x98\xa2\xfc"
"\x2a\xc7\xd8\xe0\x64\xc3\xb2\xe6",
},
};
#define XCBC_AES_TEST_VECTORS 6
static struct hash_testvec aes_xcbc128_tv_template[] = {
{
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.plaintext = zeroed_string,
.digest = "\x75\xf0\x25\x1d\x52\x8a\xc0\x1c"
"\x45\x73\xdf\xd5\x84\xd7\x9f\x29",
.psize = 0,
.ksize = 16,
}, {
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.plaintext = "\x00\x01\x02",
.digest = "\x5b\x37\x65\x80\xae\x2f\x19\xaf"
"\xe7\x21\x9c\xee\xf1\x72\x75\x6f",
.psize = 3,
.ksize = 16,
} , {
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.digest = "\xd2\xa2\x46\xfa\x34\x9b\x68\xa7"
"\x99\x98\xa4\x39\x4f\xf7\xa2\x63",
.psize = 16,
.ksize = 16,
}, {
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
"\x10\x11\x12\x13",
.digest = "\x47\xf5\x1b\x45\x64\x96\x62\x15"
"\xb8\x98\x5c\x63\x05\x5e\xd3\x08",
.tap = { 10, 10 },
.psize = 20,
.np = 2,
.ksize = 16,
}, {
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
"\x10\x11\x12\x13\x14\x15\x16\x17"
"\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f",
.digest = "\xf5\x4f\x0e\xc8\xd2\xb9\xf3\xd3"
"\x68\x07\x73\x4b\xd5\x28\x3f\xd4",
.psize = 32,
.ksize = 16,
}, {
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.plaintext = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
"\x10\x11\x12\x13\x14\x15\x16\x17"
"\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
"\x20\x21",
.digest = "\xbe\xcb\xb3\xbc\xcd\xb5\x18\xa3"
"\x06\x77\xd5\x48\x1f\xb6\xb4\xd8",
.tap = { 17, 17 },
.psize = 34,
.np = 2,
.ksize = 16,
}
};
#define VMAC_AES_TEST_VECTORS 11
static char vmac_string1[128] = {'\x01', '\x01', '\x01', '\x01',
'\x02', '\x03', '\x02', '\x02',
'\x02', '\x04', '\x01', '\x07',
'\x04', '\x01', '\x04', '\x03',};
static char vmac_string2[128] = {'a', 'b', 'c',};
static char vmac_string3[128] = {'a', 'b', 'c', 'a', 'b', 'c',
'a', 'b', 'c', 'a', 'b', 'c',
'a', 'b', 'c', 'a', 'b', 'c',
'a', 'b', 'c', 'a', 'b', 'c',
'a', 'b', 'c', 'a', 'b', 'c',
'a', 'b', 'c', 'a', 'b', 'c',
'a', 'b', 'c', 'a', 'b', 'c',
'a', 'b', 'c', 'a', 'b', 'c',
};
static char vmac_string4[17] = {'b', 'c', 'e', 'f',
'i', 'j', 'l', 'm',
'o', 'p', 'r', 's',
't', 'u', 'w', 'x', 'z'};
static char vmac_string5[127] = {'r', 'm', 'b', 't', 'c',
'o', 'l', 'k', ']', '%',
'9', '2', '7', '!', 'A'};
static char vmac_string6[129] = {'p', 't', '*', '7', 'l',
'i', '!', '#', 'w', '0',
'z', '/', '4', 'A', 'n'};
static struct hash_testvec aes_vmac128_tv_template[] = {
{
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.plaintext = NULL,
.digest = "\x07\x58\x80\x35\x77\xa4\x7b\x54",
.psize = 0,
.ksize = 16,
}, {
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.plaintext = vmac_string1,
.digest = "\xce\xf5\x3c\xd3\xae\x68\x8c\xa1",
.psize = 128,
.ksize = 16,
}, {
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.plaintext = vmac_string2,
.digest = "\xc9\x27\xb0\x73\x81\xbd\x14\x2d",
.psize = 128,
.ksize = 16,
}, {
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.plaintext = vmac_string3,
.digest = "\x8d\x1a\x95\x8c\x98\x47\x0b\x19",
.psize = 128,
.ksize = 16,
}, {
.key = "abcdefghijklmnop",
.plaintext = NULL,
.digest = "\x3b\x89\xa1\x26\x9e\x55\x8f\x84",
.psize = 0,
.ksize = 16,
}, {
.key = "abcdefghijklmnop",
.plaintext = vmac_string1,
.digest = "\xab\x5e\xab\xb0\xf6\x8d\x74\xc2",
.psize = 128,
.ksize = 16,
}, {
.key = "abcdefghijklmnop",
.plaintext = vmac_string2,
.digest = "\x11\x15\x68\x42\x3d\x7b\x09\xdf",
.psize = 128,
.ksize = 16,
}, {
.key = "abcdefghijklmnop",
.plaintext = vmac_string3,
.digest = "\x8b\x32\x8f\xe1\xed\x8f\xfa\xd4",
.psize = 128,
.ksize = 16,
}, {
.key = "a09b5cd!f#07K\x00\x00\x00",
.plaintext = vmac_string4,
.digest = "\xab\xa5\x0f\xea\x42\x4e\xa1\x5f",
.psize = sizeof(vmac_string4),
.ksize = 16,
}, {
.key = "a09b5cd!f#07K\x00\x00\x00",
.plaintext = vmac_string5,
.digest = "\x25\x31\x98\xbc\x1d\xe8\x67\x60",
.psize = sizeof(vmac_string5),
.ksize = 16,
}, {
.key = "a09b5cd!f#07K\x00\x00\x00",
.plaintext = vmac_string6,
.digest = "\xc4\xae\x9b\x47\x95\x65\xeb\x41",
.psize = sizeof(vmac_string6),
.ksize = 16,
},
};
/*
* SHA384 HMAC test vectors from RFC4231
*/
#define HMAC_SHA384_TEST_VECTORS 4
static struct hash_testvec hmac_sha384_tv_template[] = {
{
.key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
"\x0b\x0b\x0b\x0b",
.ksize = 20,
.plaintext = "Hi There",
.psize = 8,
.digest = "\xaf\xd0\x39\x44\xd8\x48\x95\x62"
"\x6b\x08\x25\xf4\xab\x46\x90\x7f"
"\x15\xf9\xda\xdb\xe4\x10\x1e\xc6"
"\x82\xaa\x03\x4c\x7c\xeb\xc5\x9c"
"\xfa\xea\x9e\xa9\x07\x6e\xde\x7f"
"\x4a\xf1\x52\xe8\xb2\xfa\x9c\xb6",
}, {
.key = "Jefe",
.ksize = 4,
.plaintext = "what do ya want for nothing?",
.psize = 28,
.digest = "\xaf\x45\xd2\xe3\x76\x48\x40\x31"
"\x61\x7f\x78\xd2\xb5\x8a\x6b\x1b"
"\x9c\x7e\xf4\x64\xf5\xa0\x1b\x47"
"\xe4\x2e\xc3\x73\x63\x22\x44\x5e"
"\x8e\x22\x40\xca\x5e\x69\xe2\xc7"
"\x8b\x32\x39\xec\xfa\xb2\x16\x49",
.np = 4,
.tap = { 7, 7, 7, 7 }
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa",
.ksize = 131,
.plaintext = "Test Using Larger Than Block-Siz"
"e Key - Hash Key First",
.psize = 54,
.digest = "\x4e\xce\x08\x44\x85\x81\x3e\x90"
"\x88\xd2\xc6\x3a\x04\x1b\xc5\xb4"
"\x4f\x9e\xf1\x01\x2a\x2b\x58\x8f"
"\x3c\xd1\x1f\x05\x03\x3a\xc4\xc6"
"\x0c\x2e\xf6\xab\x40\x30\xfe\x82"
"\x96\x24\x8d\xf1\x63\xf4\x49\x52",
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa",
.ksize = 131,
.plaintext = "This is a test u"
"sing a larger th"
"an block-size ke"
"y and a larger t"
"han block-size d"
"ata. The key nee"
"ds to be hashed "
"before being use"
"d by the HMAC al"
"gorithm.",
.psize = 152,
.digest = "\x66\x17\x17\x8e\x94\x1f\x02\x0d"
"\x35\x1e\x2f\x25\x4e\x8f\xd3\x2c"
"\x60\x24\x20\xfe\xb0\xb8\xfb\x9a"
"\xdc\xce\xbb\x82\x46\x1e\x99\xc5"
"\xa6\x78\xcc\x31\xe7\x99\x17\x6d"
"\x38\x60\xe6\x11\x0c\x46\x52\x3e",
},
};
/*
* SHA512 HMAC test vectors from RFC4231
*/
#define HMAC_SHA512_TEST_VECTORS 4
static struct hash_testvec hmac_sha512_tv_template[] = {
{
.key = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
"\x0b\x0b\x0b\x0b",
.ksize = 20,
.plaintext = "Hi There",
.psize = 8,
.digest = "\x87\xaa\x7c\xde\xa5\xef\x61\x9d"
"\x4f\xf0\xb4\x24\x1a\x1d\x6c\xb0"
"\x23\x79\xf4\xe2\xce\x4e\xc2\x78"
"\x7a\xd0\xb3\x05\x45\xe1\x7c\xde"
"\xda\xa8\x33\xb7\xd6\xb8\xa7\x02"
"\x03\x8b\x27\x4e\xae\xa3\xf4\xe4"
"\xbe\x9d\x91\x4e\xeb\x61\xf1\x70"
"\x2e\x69\x6c\x20\x3a\x12\x68\x54",
}, {
.key = "Jefe",
.ksize = 4,
.plaintext = "what do ya want for nothing?",
.psize = 28,
.digest = "\x16\x4b\x7a\x7b\xfc\xf8\x19\xe2"
"\xe3\x95\xfb\xe7\x3b\x56\xe0\xa3"
"\x87\xbd\x64\x22\x2e\x83\x1f\xd6"
"\x10\x27\x0c\xd7\xea\x25\x05\x54"
"\x97\x58\xbf\x75\xc0\x5a\x99\x4a"
"\x6d\x03\x4f\x65\xf8\xf0\xe6\xfd"
"\xca\xea\xb1\xa3\x4d\x4a\x6b\x4b"
"\x63\x6e\x07\x0a\x38\xbc\xe7\x37",
.np = 4,
.tap = { 7, 7, 7, 7 }
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa",
.ksize = 131,
.plaintext = "Test Using Large"
"r Than Block-Siz"
"e Key - Hash Key"
" First",
.psize = 54,
.digest = "\x80\xb2\x42\x63\xc7\xc1\xa3\xeb"
"\xb7\x14\x93\xc1\xdd\x7b\xe8\xb4"
"\x9b\x46\xd1\xf4\x1b\x4a\xee\xc1"
"\x12\x1b\x01\x37\x83\xf8\xf3\x52"
"\x6b\x56\xd0\x37\xe0\x5f\x25\x98"
"\xbd\x0f\xd2\x21\x5d\x6a\x1e\x52"
"\x95\xe6\x4f\x73\xf6\x3f\x0a\xec"
"\x8b\x91\x5a\x98\x5d\x78\x65\x98",
}, {
.key = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
"\xaa\xaa\xaa",
.ksize = 131,
.plaintext =
"This is a test u"
"sing a larger th"
"an block-size ke"
"y and a larger t"
"han block-size d"
"ata. The key nee"
"ds to be hashed "
"before being use"
"d by the HMAC al"
"gorithm.",
.psize = 152,
.digest = "\xe3\x7b\x6a\x77\x5d\xc8\x7d\xba"
"\xa4\xdf\xa9\xf9\x6e\x5e\x3f\xfd"
"\xde\xbd\x71\xf8\x86\x72\x89\x86"
"\x5d\xf5\xa3\x2d\x20\xcd\xc9\x44"
"\xb6\x02\x2c\xac\x3c\x49\x82\xb1"
"\x0d\x5e\xeb\x55\xc3\xe4\xde\x15"
"\x13\x46\x76\xfb\x6d\xe0\x44\x60"
"\x65\xc9\x74\x40\xfa\x8c\x6a\x58",
},
};
/*
* DES test vectors.
*/
#define DES_ENC_TEST_VECTORS 10
#define DES_DEC_TEST_VECTORS 4
#define DES_CBC_ENC_TEST_VECTORS 5
#define DES_CBC_DEC_TEST_VECTORS 4
#define DES3_EDE_ENC_TEST_VECTORS 3
#define DES3_EDE_DEC_TEST_VECTORS 3
#define DES3_EDE_CBC_ENC_TEST_VECTORS 1
#define DES3_EDE_CBC_DEC_TEST_VECTORS 1
static struct cipher_testvec des_enc_tv_template[] = {
{ /* From Applied Cryptography */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
.ilen = 8,
.result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
.rlen = 8,
}, { /* Same key, different plaintext block */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.input = "\x22\x33\x44\x55\x66\x77\x88\x99",
.ilen = 8,
.result = "\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
.rlen = 8,
}, { /* Sbox test from NBS */
.key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
.klen = 8,
.input = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
.ilen = 8,
.result = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
.rlen = 8,
}, { /* Three blocks */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
"\x22\x33\x44\x55\x66\x77\x88\x99"
"\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
.ilen = 24,
.result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
"\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
"\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
.rlen = 24,
}, { /* Weak key */
.fail = 1,
.wk = 1,
.key = "\x01\x01\x01\x01\x01\x01\x01\x01",
.klen = 8,
.input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
.ilen = 8,
.result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
.rlen = 8,
}, { /* Two blocks -- for testing encryption across pages */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
"\x22\x33\x44\x55\x66\x77\x88\x99",
.ilen = 16,
.result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
"\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
.rlen = 16,
.np = 2,
.tap = { 8, 8 }
}, { /* Four blocks -- for testing encryption with chunking */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
"\x22\x33\x44\x55\x66\x77\x88\x99"
"\xca\xfe\xba\xbe\xfe\xed\xbe\xef"
"\x22\x33\x44\x55\x66\x77\x88\x99",
.ilen = 32,
.result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
"\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
"\xb4\x99\x26\xf7\x1f\xe1\xd4\x90"
"\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
.rlen = 32,
.np = 3,
.tap = { 14, 10, 8 }
}, {
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
"\x22\x33\x44\x55\x66\x77\x88\x99"
"\xca\xfe\xba\xbe\xfe\xed\xbe\xef",
.ilen = 24,
.result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
"\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b"
"\xb4\x99\x26\xf7\x1f\xe1\xd4\x90",
.rlen = 24,
.np = 4,
.tap = { 2, 1, 3, 18 }
}, {
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.input = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
"\x22\x33\x44\x55\x66\x77\x88\x99",
.ilen = 16,
.result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
"\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
.rlen = 16,
.np = 5,
.tap = { 2, 2, 2, 2, 8 }
}, {
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.input = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
.ilen = 8,
.result = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
.rlen = 8,
.np = 8,
.tap = { 1, 1, 1, 1, 1, 1, 1, 1 }
},
};
static struct cipher_testvec des_dec_tv_template[] = {
{ /* From Applied Cryptography */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d",
.ilen = 8,
.result = "\x01\x23\x45\x67\x89\xab\xcd\xe7",
.rlen = 8,
}, { /* Sbox test from NBS */
.key = "\x7c\xa1\x10\x45\x4a\x1a\x6e\x57",
.klen = 8,
.input = "\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
.ilen = 8,
.result = "\x01\xa1\xd6\xd0\x39\x77\x67\x42",
.rlen = 8,
}, { /* Two blocks, for chunking test */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
"\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
.ilen = 16,
.result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
"\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
.rlen = 16,
.np = 2,
.tap = { 8, 8 }
}, {
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.input = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
"\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
.ilen = 16,
.result = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
"\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
.rlen = 16,
.np = 3,
.tap = { 3, 12, 1 }
},
};
static struct cipher_testvec des_cbc_enc_tv_template[] = {
{ /* From OpenSSL */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
.input = "\x37\x36\x35\x34\x33\x32\x31\x20"
"\x4e\x6f\x77\x20\x69\x73\x20\x74"
"\x68\x65\x20\x74\x69\x6d\x65\x20",
.ilen = 24,
.result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
"\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
"\x46\x8e\x91\x15\x78\x88\xba\x68",
.rlen = 24,
}, { /* FIPS Pub 81 */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
.input = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
.ilen = 8,
.result = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
.rlen = 8,
}, {
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
.input = "\x68\x65\x20\x74\x69\x6d\x65\x20",
.ilen = 8,
.result = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
.rlen = 8,
}, {
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
.input = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
.ilen = 8,
.result = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
.rlen = 8,
}, { /* Copy of openssl vector for chunk testing */
/* From OpenSSL */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
.input = "\x37\x36\x35\x34\x33\x32\x31\x20"
"\x4e\x6f\x77\x20\x69\x73\x20\x74"
"\x68\x65\x20\x74\x69\x6d\x65\x20",
.ilen = 24,
.result = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
"\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb"
"\x46\x8e\x91\x15\x78\x88\xba\x68",
.rlen = 24,
.np = 2,
.tap = { 13, 11 }
},
};
static struct cipher_testvec des_cbc_dec_tv_template[] = {
{ /* FIPS Pub 81 */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
.input = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
.ilen = 8,
.result = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
.rlen = 8,
}, {
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.iv = "\xe5\xc7\xcd\xde\x87\x2b\xf2\x7c",
.input = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
.ilen = 8,
.result = "\x68\x65\x20\x74\x69\x6d\x65\x20",
.rlen = 8,
}, {
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
.input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
.ilen = 8,
.result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
.rlen = 8,
}, { /* Copy of above, for chunk testing */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.iv = "\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
.input = "\x68\x37\x88\x49\x9a\x7c\x05\xf6",
.ilen = 8,
.result = "\x66\x6f\x72\x20\x61\x6c\x6c\x20",
.rlen = 8,
.np = 2,
.tap = { 4, 4 }
},
};
static struct cipher_testvec des3_ede_enc_tv_template[] = {
{ /* These are from openssl */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
"\x55\x55\x55\x55\x55\x55\x55\x55"
"\xfe\xdc\xba\x98\x76\x54\x32\x10",
.klen = 24,
.input = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
.ilen = 8,
.result = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
.rlen = 8,
}, {
.key = "\x03\x52\x02\x07\x67\x20\x82\x17"
"\x86\x02\x87\x66\x59\x08\x21\x98"
"\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
.klen = 24,
.input = "\x73\x71\x75\x69\x67\x67\x6c\x65",
.ilen = 8,
.result = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
.rlen = 8,
}, {
.key = "\x10\x46\x10\x34\x89\x98\x80\x20"
"\x91\x07\xd0\x15\x89\x19\x01\x01"
"\x19\x07\x92\x10\x98\x1a\x01\x01",
.klen = 24,
.input = "\x00\x00\x00\x00\x00\x00\x00\x00",
.ilen = 8,
.result = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
.rlen = 8,
},
};
static struct cipher_testvec des3_ede_dec_tv_template[] = {
{ /* These are from openssl */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
"\x55\x55\x55\x55\x55\x55\x55\x55"
"\xfe\xdc\xba\x98\x76\x54\x32\x10",
.klen = 24,
.input = "\x18\xd7\x48\xe5\x63\x62\x05\x72",
.ilen = 8,
.result = "\x73\x6f\x6d\x65\x64\x61\x74\x61",
.rlen = 8,
}, {
.key = "\x03\x52\x02\x07\x67\x20\x82\x17"
"\x86\x02\x87\x66\x59\x08\x21\x98"
"\x64\x05\x6a\xbd\xfe\xa9\x34\x57",
.klen = 24,
.input = "\xc0\x7d\x2a\x0f\xa5\x66\xfa\x30",
.ilen = 8,
.result = "\x73\x71\x75\x69\x67\x67\x6c\x65",
.rlen = 8,
}, {
.key = "\x10\x46\x10\x34\x89\x98\x80\x20"
"\x91\x07\xd0\x15\x89\x19\x01\x01"
"\x19\x07\x92\x10\x98\x1a\x01\x01",
.klen = 24,
.input = "\xe1\xef\x62\xc3\x32\xfe\x82\x5b",
.ilen = 8,
.result = "\x00\x00\x00\x00\x00\x00\x00\x00",
.rlen = 8,
},
};
static struct cipher_testvec des3_ede_cbc_enc_tv_template[] = {
{ /* Generated from openssl */
.key = "\xE9\xC0\xFF\x2E\x76\x0B\x64\x24"
"\x44\x4D\x99\x5A\x12\xD6\x40\xC0"
"\xEA\xC2\x84\xE8\x14\x95\xDB\xE8",
.klen = 24,
.iv = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
.input = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
"\x53\x20\x63\x65\x65\x72\x73\x74"
"\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
"\x20\x79\x65\x53\x72\x63\x74\x65"
"\x20\x73\x6f\x54\x20\x6f\x61\x4d"
"\x79\x6e\x53\x20\x63\x65\x65\x72"
"\x73\x74\x54\x20\x6f\x6f\x4d\x20"
"\x6e\x61\x20\x79\x65\x53\x72\x63"
"\x74\x65\x20\x73\x6f\x54\x20\x6f"
"\x61\x4d\x79\x6e\x53\x20\x63\x65"
"\x65\x72\x73\x74\x54\x20\x6f\x6f"
"\x4d\x20\x6e\x61\x20\x79\x65\x53"
"\x72\x63\x74\x65\x20\x73\x6f\x54"
"\x20\x6f\x61\x4d\x79\x6e\x53\x20"
"\x63\x65\x65\x72\x73\x74\x54\x20"
"\x6f\x6f\x4d\x20\x6e\x61\x0a\x79",
.ilen = 128,
.result = "\x0e\x2d\xb6\x97\x3c\x56\x33\xf4"
"\x67\x17\x21\xc7\x6e\x8a\xd5\x49"
"\x74\xb3\x49\x05\xc5\x1c\xd0\xed"
"\x12\x56\x5c\x53\x96\xb6\x00\x7d"
"\x90\x48\xfc\xf5\x8d\x29\x39\xcc"
"\x8a\xd5\x35\x18\x36\x23\x4e\xd7"
"\x76\xd1\xda\x0c\x94\x67\xbb\x04"
"\x8b\xf2\x03\x6c\xa8\xcf\xb6\xea"
"\x22\x64\x47\xaa\x8f\x75\x13\xbf"
"\x9f\xc2\xc3\xf0\xc9\x56\xc5\x7a"
"\x71\x63\x2e\x89\x7b\x1e\x12\xca"
"\xe2\x5f\xaf\xd8\xa4\xf8\xc9\x7a"
"\xd6\xf9\x21\x31\x62\x44\x45\xa6"
"\xd6\xbc\x5a\xd3\x2d\x54\x43\xcc"
"\x9d\xde\xa5\x70\xe9\x42\x45\x8a"
"\x6b\xfa\xb1\x91\x13\xb0\xd9\x19",
.rlen = 128,
},
};
static struct cipher_testvec des3_ede_cbc_dec_tv_template[] = {
{ /* Generated from openssl */
.key = "\xE9\xC0\xFF\x2E\x76\x0B\x64\x24"
"\x44\x4D\x99\x5A\x12\xD6\x40\xC0"
"\xEA\xC2\x84\xE8\x14\x95\xDB\xE8",
.klen = 24,
.iv = "\x7D\x33\x88\x93\x0F\x93\xB2\x42",
.input = "\x0e\x2d\xb6\x97\x3c\x56\x33\xf4"
"\x67\x17\x21\xc7\x6e\x8a\xd5\x49"
"\x74\xb3\x49\x05\xc5\x1c\xd0\xed"
"\x12\x56\x5c\x53\x96\xb6\x00\x7d"
"\x90\x48\xfc\xf5\x8d\x29\x39\xcc"
"\x8a\xd5\x35\x18\x36\x23\x4e\xd7"
"\x76\xd1\xda\x0c\x94\x67\xbb\x04"
"\x8b\xf2\x03\x6c\xa8\xcf\xb6\xea"
"\x22\x64\x47\xaa\x8f\x75\x13\xbf"
"\x9f\xc2\xc3\xf0\xc9\x56\xc5\x7a"
"\x71\x63\x2e\x89\x7b\x1e\x12\xca"
"\xe2\x5f\xaf\xd8\xa4\xf8\xc9\x7a"
"\xd6\xf9\x21\x31\x62\x44\x45\xa6"
"\xd6\xbc\x5a\xd3\x2d\x54\x43\xcc"
"\x9d\xde\xa5\x70\xe9\x42\x45\x8a"
"\x6b\xfa\xb1\x91\x13\xb0\xd9\x19",
.ilen = 128,
.result = "\x6f\x54\x20\x6f\x61\x4d\x79\x6e"
"\x53\x20\x63\x65\x65\x72\x73\x74"
"\x54\x20\x6f\x6f\x4d\x20\x6e\x61"
"\x20\x79\x65\x53\x72\x63\x74\x65"
"\x20\x73\x6f\x54\x20\x6f\x61\x4d"
"\x79\x6e\x53\x20\x63\x65\x65\x72"
"\x73\x74\x54\x20\x6f\x6f\x4d\x20"
"\x6e\x61\x20\x79\x65\x53\x72\x63"
"\x74\x65\x20\x73\x6f\x54\x20\x6f"
"\x61\x4d\x79\x6e\x53\x20\x63\x65"
"\x65\x72\x73\x74\x54\x20\x6f\x6f"
"\x4d\x20\x6e\x61\x20\x79\x65\x53"
"\x72\x63\x74\x65\x20\x73\x6f\x54"
"\x20\x6f\x61\x4d\x79\x6e\x53\x20"
"\x63\x65\x65\x72\x73\x74\x54\x20"
"\x6f\x6f\x4d\x20\x6e\x61\x0a\x79",
.rlen = 128,
},
};
/*
* Blowfish test vectors.
*/
#define BF_ENC_TEST_VECTORS 7
#define BF_DEC_TEST_VECTORS 7
#define BF_CBC_ENC_TEST_VECTORS 2
#define BF_CBC_DEC_TEST_VECTORS 2
#define BF_CTR_ENC_TEST_VECTORS 2
#define BF_CTR_DEC_TEST_VECTORS 2
static struct cipher_testvec bf_enc_tv_template[] = {
{ /* DES test vectors from OpenSSL */
.key = "\x00\x00\x00\x00\x00\x00\x00\x00",
.klen = 8,
.input = "\x00\x00\x00\x00\x00\x00\x00\x00",
.ilen = 8,
.result = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
.rlen = 8,
}, {
.key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
.klen = 8,
.input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.ilen = 8,
.result = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
.rlen = 8,
}, {
.key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
.klen = 8,
.input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
.ilen = 8,
.result = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
.rlen = 8,
}, { /* Vary the keylength... */
.key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
"\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
.klen = 16,
.input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
.ilen = 8,
.result = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
.rlen = 8,
}, {
.key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
"\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
"\x00\x11\x22\x33\x44",
.klen = 21,
.input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
.ilen = 8,
.result = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
.rlen = 8,
}, { /* Generated with bf488 */
.key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
"\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
"\x00\x11\x22\x33\x44\x55\x66\x77"
"\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
"\x58\x40\x23\x64\x1a\xba\x61\x76"
"\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
"\xff\xff\xff\xff\xff\xff\xff\xff",
.klen = 56,
.input = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
.ilen = 8,
.result = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
.rlen = 8,
}, { /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.input = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
"\x2B\xC2\x59\xF0\x64\xFB\x92\x06",
.ilen = 504,
.result = "\x96\x87\x3D\x0C\x7B\xFB\xBD\x1F"
"\xE3\xC1\x99\x6D\x39\xD4\xC2\x7D"
"\xD7\x87\xA1\xF2\xDF\x51\x71\x26"
"\xC2\xF4\x6D\xFF\xF6\xCD\x6B\x40"
"\xE1\xB3\xBF\xD4\x38\x2B\xC8\x3B"
"\xD3\xB2\xD4\x61\xC7\x9F\x06\xE9"
"\xCD\xF3\x88\x39\x39\x7A\xDF\x19"
"\xE8\x03\x2A\x0B\x9E\xA0\x2B\x86"
"\x31\xF8\x9D\xB1\xEE\x78\x9D\xB5"
"\xCD\x8B\x7C\x2E\xF5\xA2\x2D\x5D"
"\x6E\x66\xAF\x38\x6C\xD3\x13\xED"
"\x14\xEA\x5D\xD0\x17\x77\x0F\x4A"
"\x50\xF2\xD0\x0F\xC8\xF7\x1E\x7B"
"\x9D\x5B\x54\x65\x4F\x16\x8A\x97"
"\xF3\xF6\xD4\xAA\x87\x36\x77\x72"
"\x99\x4A\xB5\x5E\x88\xC3\xCD\x7D"
"\x1D\x97\xF9\x11\xBD\xE0\x1F\x1F"
"\x96\x3E\x4B\x22\xF4\xC0\xE6\xB8"
"\x47\x82\x98\x23\x33\x36\xBC\x1B"
"\x36\xE7\xF6\xCF\x97\x37\x16\xC0"
"\x87\x31\x8B\xB0\xDB\x19\x42\xA5"
"\x1F\x90\x7E\x66\x34\xDD\x5E\xE9"
"\x4F\xB2\x2B\x9A\xDE\xB3\x5D\x71"
"\x4D\x68\xF0\xDC\xA6\xEA\xE3\x9B"
"\x60\x00\x55\x57\x06\x8B\xD5\xB3"
"\x86\x30\x78\xDA\x33\x9A\x9D\xCC"
"\xBA\x0B\x81\x06\x77\x43\xC7\xC9"
"\xDB\x37\x60\x11\x45\x59\x6D\x2D"
"\x90\x3D\x65\x3E\xD0\x13\xC6\x3C"
"\x0E\x78\x7D\x9A\x00\xD6\x2F\x0B"
"\x3B\x53\x19\x1E\xA8\x9B\x11\xD9"
"\x98\xE4\x7F\xC3\x6E\x51\x24\x70"
"\x9F\x04\x9C\xC2\x9E\x44\x84\xE3"
"\xE0\x8A\x44\xA2\x5C\x94\x74\x34"
"\x37\x52\x7C\x03\xE8\x8E\x97\xE1"
"\x5B\x5C\x0E\xB0\x70\xFE\x54\x3F"
"\xD8\x65\xA9\xC5\xCD\xEC\xF4\x45"
"\x55\xC5\xA7\xA3\x19\x80\x28\x51"
"\xBE\x64\x4A\xC1\xD4\xE1\xBE\xEB"
"\x73\x4C\xB6\xF9\x5F\x6D\x82\xBC"
"\x3E\x42\x14\x49\x88\x51\xBF\x68"
"\x45\x75\x27\x1B\x0A\x72\xED\xAF"
"\xDA\xC4\x4D\x67\x0D\xEE\x75\xE3"
"\x34\xDD\x91\x19\x42\x3A\xCB\xDA"
"\x38\xFA\x3C\x93\x62\xF2\xE3\x81"
"\xB3\xE4\xBB\xF6\x0D\x0B\x1D\x09"
"\x9C\x52\x0D\x50\x63\xA4\xB2\xD2"
"\x82\xA0\x23\x3F\x1F\xB6\xED\x6E"
"\xC2\x9C\x1C\xD0\x9A\x40\xB6\xFC"
"\x36\x56\x6E\x85\x73\xD7\x52\xBA"
"\x35\x5E\x32\x89\x5D\x42\xF5\x36"
"\x52\x8D\x46\x7D\xC8\x71\xAD\x33"
"\xE1\xAF\x6A\xA8\xEC\xBA\x1C\xDC"
"\xFE\x88\xE6\x16\xE4\xC8\x13\x00"
"\x3C\xDA\x59\x32\x38\x19\xD5\xEB"
"\xB6\x7F\x78\x45\x1B\x8E\x07\x8C"
"\x66\x52\x75\xFF\xAF\xCE\x2D\x2B"
"\x22\x29\xCA\xB3\x5F\x7F\xE3\x29"
"\xB2\xB8\x9D\xEB\x16\xC8\xC5\x1D"
"\xC9\x0D\x59\x82\x27\x57\x9D\x42"
"\x54\x59\x09\xA5\x3D\xC5\x84\x68"
"\x56\xEB\x36\x77\x3D\xAA\xB8\xF5"
"\xC9\x1A\xFB\x5D\xDE\xBB\x43\xF4",
.rlen = 504,
.also_non_np = 1,
.np = 2,
.tap = { 504 - 8, 8 },
},
};
static struct cipher_testvec bf_dec_tv_template[] = {
{ /* DES test vectors from OpenSSL */
.key = "\x00\x00\x00\x00\x00\x00\x00\x00",
.klen = 8,
.input = "\x4e\xf9\x97\x45\x61\x98\xdd\x78",
.ilen = 8,
.result = "\x00\x00\x00\x00\x00\x00\x00\x00",
.rlen = 8,
}, {
.key = "\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e",
.klen = 8,
.input = "\xa7\x90\x79\x51\x08\xea\x3c\xae",
.ilen = 8,
.result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.rlen = 8,
}, {
.key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
.klen = 8,
.input = "\xe8\x7a\x24\x4e\x2c\xc8\x5e\x82",
.ilen = 8,
.result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
.rlen = 8,
}, { /* Vary the keylength... */
.key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
"\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f",
.klen = 16,
.input = "\x93\x14\x28\x87\xee\x3b\xe1\x5c",
.ilen = 8,
.result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
.rlen = 8,
}, {
.key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
"\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
"\x00\x11\x22\x33\x44",
.klen = 21,
.input = "\xe6\xf5\x1e\xd7\x9b\x9d\xb2\x1f",
.ilen = 8,
.result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
.rlen = 8,
}, { /* Generated with bf488, using OpenSSL, Libgcrypt and Nettle */
.key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87"
"\x78\x69\x5a\x4b\x3c\x2d\x1e\x0f"
"\x00\x11\x22\x33\x44\x55\x66\x77"
"\x04\x68\x91\x04\xc2\xfd\x3b\x2f"
"\x58\x40\x23\x64\x1a\xba\x61\x76"
"\x1f\x1f\x1f\x1f\x0e\x0e\x0e\x0e"
"\xff\xff\xff\xff\xff\xff\xff\xff",
.klen = 56,
.input = "\xc0\x45\x04\x01\x2e\x4e\x1f\x53",
.ilen = 8,
.result = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
.rlen = 8,
}, { /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.input = "\x96\x87\x3D\x0C\x7B\xFB\xBD\x1F"
"\xE3\xC1\x99\x6D\x39\xD4\xC2\x7D"
"\xD7\x87\xA1\xF2\xDF\x51\x71\x26"
"\xC2\xF4\x6D\xFF\xF6\xCD\x6B\x40"
"\xE1\xB3\xBF\xD4\x38\x2B\xC8\x3B"
"\xD3\xB2\xD4\x61\xC7\x9F\x06\xE9"
"\xCD\xF3\x88\x39\x39\x7A\xDF\x19"
"\xE8\x03\x2A\x0B\x9E\xA0\x2B\x86"
"\x31\xF8\x9D\xB1\xEE\x78\x9D\xB5"
"\xCD\x8B\x7C\x2E\xF5\xA2\x2D\x5D"
"\x6E\x66\xAF\x38\x6C\xD3\x13\xED"
"\x14\xEA\x5D\xD0\x17\x77\x0F\x4A"
"\x50\xF2\xD0\x0F\xC8\xF7\x1E\x7B"
"\x9D\x5B\x54\x65\x4F\x16\x8A\x97"
"\xF3\xF6\xD4\xAA\x87\x36\x77\x72"
"\x99\x4A\xB5\x5E\x88\xC3\xCD\x7D"
"\x1D\x97\xF9\x11\xBD\xE0\x1F\x1F"
"\x96\x3E\x4B\x22\xF4\xC0\xE6\xB8"
"\x47\x82\x98\x23\x33\x36\xBC\x1B"
"\x36\xE7\xF6\xCF\x97\x37\x16\xC0"
"\x87\x31\x8B\xB0\xDB\x19\x42\xA5"
"\x1F\x90\x7E\x66\x34\xDD\x5E\xE9"
"\x4F\xB2\x2B\x9A\xDE\xB3\x5D\x71"
"\x4D\x68\xF0\xDC\xA6\xEA\xE3\x9B"
"\x60\x00\x55\x57\x06\x8B\xD5\xB3"
"\x86\x30\x78\xDA\x33\x9A\x9D\xCC"
"\xBA\x0B\x81\x06\x77\x43\xC7\xC9"
"\xDB\x37\x60\x11\x45\x59\x6D\x2D"
"\x90\x3D\x65\x3E\xD0\x13\xC6\x3C"
"\x0E\x78\x7D\x9A\x00\xD6\x2F\x0B"
"\x3B\x53\x19\x1E\xA8\x9B\x11\xD9"
"\x98\xE4\x7F\xC3\x6E\x51\x24\x70"
"\x9F\x04\x9C\xC2\x9E\x44\x84\xE3"
"\xE0\x8A\x44\xA2\x5C\x94\x74\x34"
"\x37\x52\x7C\x03\xE8\x8E\x97\xE1"
"\x5B\x5C\x0E\xB0\x70\xFE\x54\x3F"
"\xD8\x65\xA9\xC5\xCD\xEC\xF4\x45"
"\x55\xC5\xA7\xA3\x19\x80\x28\x51"
"\xBE\x64\x4A\xC1\xD4\xE1\xBE\xEB"
"\x73\x4C\xB6\xF9\x5F\x6D\x82\xBC"
"\x3E\x42\x14\x49\x88\x51\xBF\x68"
"\x45\x75\x27\x1B\x0A\x72\xED\xAF"
"\xDA\xC4\x4D\x67\x0D\xEE\x75\xE3"
"\x34\xDD\x91\x19\x42\x3A\xCB\xDA"
"\x38\xFA\x3C\x93\x62\xF2\xE3\x81"
"\xB3\xE4\xBB\xF6\x0D\x0B\x1D\x09"
"\x9C\x52\x0D\x50\x63\xA4\xB2\xD2"
"\x82\xA0\x23\x3F\x1F\xB6\xED\x6E"
"\xC2\x9C\x1C\xD0\x9A\x40\xB6\xFC"
"\x36\x56\x6E\x85\x73\xD7\x52\xBA"
"\x35\x5E\x32\x89\x5D\x42\xF5\x36"
"\x52\x8D\x46\x7D\xC8\x71\xAD\x33"
"\xE1\xAF\x6A\xA8\xEC\xBA\x1C\xDC"
"\xFE\x88\xE6\x16\xE4\xC8\x13\x00"
"\x3C\xDA\x59\x32\x38\x19\xD5\xEB"
"\xB6\x7F\x78\x45\x1B\x8E\x07\x8C"
"\x66\x52\x75\xFF\xAF\xCE\x2D\x2B"
"\x22\x29\xCA\xB3\x5F\x7F\xE3\x29"
"\xB2\xB8\x9D\xEB\x16\xC8\xC5\x1D"
"\xC9\x0D\x59\x82\x27\x57\x9D\x42"
"\x54\x59\x09\xA5\x3D\xC5\x84\x68"
"\x56\xEB\x36\x77\x3D\xAA\xB8\xF5"
"\xC9\x1A\xFB\x5D\xDE\xBB\x43\xF4",
.ilen = 504,
.result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
"\x2B\xC2\x59\xF0\x64\xFB\x92\x06",
.rlen = 504,
.also_non_np = 1,
.np = 2,
.tap = { 504 - 8, 8 },
},
};
static struct cipher_testvec bf_cbc_enc_tv_template[] = {
{ /* From OpenSSL */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
"\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
.klen = 16,
.iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
.input = "\x37\x36\x35\x34\x33\x32\x31\x20"
"\x4e\x6f\x77\x20\x69\x73\x20\x74"
"\x68\x65\x20\x74\x69\x6d\x65\x20"
"\x66\x6f\x72\x20\x00\x00\x00\x00",
.ilen = 32,
.result = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
"\x05\xb1\x56\xe2\x74\x03\x97\x93"
"\x58\xde\xb9\xe7\x15\x46\x16\xd9"
"\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
.rlen = 32,
}, { /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F",
.input = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
"\x2B\xC2\x59\xF0\x64\xFB\x92\x06",
.ilen = 504,
.result = "\xB4\xFE\xA5\xBB\x3D\x2C\x27\x06"
"\x06\x2B\x3A\x92\xB2\xF5\x5E\x62"
"\x84\xCD\xF7\x66\x7E\x41\x6C\x8E"
"\x1B\xD9\x02\xB6\x48\xB0\x87\x25"
"\x01\x9C\x93\x63\x51\x60\x82\xD2"
"\x4D\xE5\xC2\xB7\xAE\x60\xD8\xAD"
"\x9F\xAB\x6C\xFA\x20\x05\xDA\x6F"
"\x1F\xD1\xD8\x36\x0F\xB5\x16\x69"
"\x3C\xAF\xB3\x30\x18\x33\xE6\xB5"
"\x43\x29\x9D\x94\xF4\x2F\x0A\x65"
"\x40\xB2\xB2\xB2\x42\x89\xEE\x8A"
"\x60\xD3\x52\xA8\xED\x91\xDF\xE1"
"\x91\x73\x7C\x28\xA1\x14\xC3\x4C"
"\x82\x72\x4B\x7D\x7D\x32\xD5\x19"
"\xE8\xB8\x6B\x30\x21\x09\x0E\x27"
"\x10\x9D\x2D\x3A\x6A\x4B\x7B\xE6"
"\x8D\x4E\x02\x32\xFF\x7F\x8E\x13"
"\xB0\x96\xF4\xC2\xA1\x60\x8A\x69"
"\xEF\x0F\x86\xD0\x25\x13\x1A\x7C"
"\x6E\xF0\x41\xA3\xFB\xB3\xAB\x40"
"\x7D\x19\xA0\x11\x4F\x3E\x1D\x43"
"\x65\xFE\x15\x40\xD0\x62\x41\x02"
"\xEA\x0C\x7A\xC3\x84\xEE\xB0\xBE"
"\xBE\xC8\x57\x51\xCD\x4F\xAD\x5C"
"\xCC\x79\xBA\x0D\x85\x3A\xED\x6B"
"\xAC\x6B\xA3\x4D\xBC\xE8\x02\x6A"
"\xC2\x6D\xBD\x5E\x89\x95\x86\x43"
"\x2C\x17\x4B\xC6\x40\xA2\xBD\x24"
"\x04\xF0\x86\x08\x78\x18\x42\xE0"
"\x39\x1B\x22\x9E\x89\x4C\x04\x6B"
"\x65\xC5\xB6\x0E\xF6\x63\xFC\xD7"
"\xAE\x9E\x87\x13\xCC\xD3\x1A\xEC"
"\xF0\x51\xCC\x93\x68\xFC\xE9\x19"
"\x7C\x4E\x9B\xCC\x17\xAD\xD2\xFC"
"\x97\x18\x92\xFF\x15\x11\xCE\xED"
"\x04\x41\x05\xA3\x92\xFF\x3B\xE6"
"\xB6\x8C\x90\xC6\xCD\x15\xA0\x04"
"\x25\x8B\x5D\x5B\x5F\xDB\xAE\x68"
"\xEF\xB3\x61\x18\xDB\x83\x9B\x39"
"\xCA\x82\xD1\x88\xF0\xA2\x5C\x02"
"\x87\xBD\x8D\x8F\xBB\x62\xF0\x35"
"\x75\x6F\x06\x81\x0A\x97\x4D\xF0"
"\x43\x12\x73\x77\xDB\x91\x83\x5B"
"\xE7\x3A\xA6\x07\x7B\xBF\x2C\x50"
"\x94\xDE\x7B\x65\xDA\x1C\xF1\x9F"
"\x7E\x12\x40\xB2\x3E\x19\x23\xF1"
"\x7C\x1B\x5F\xA8\xF3\xAC\x63\x87"
"\xEB\x3E\x0C\xBE\xA3\x63\x97\x88"
"\x8D\x27\xC6\x2A\xF8\xF2\x67\x9A"
"\x0D\x14\x16\x2B\x6F\xCB\xD4\x76"
"\x14\x48\x2E\xDE\x2A\x44\x5E\x45"
"\xF1\x97\x82\xEF\xB7\xAE\xED\x3A"
"\xED\x73\xD3\x79\xF7\x38\x1D\xD0"
"\xC5\xF8\x69\x83\x28\x84\x87\x56"
"\x3F\xAE\x81\x04\x79\x1F\xD1\x09"
"\xC5\xE5\x05\x0D\x64\x16\xCE\x42"
"\xC5\xF8\xDB\x57\x89\x33\x22\xFC"
"\xB4\xD7\x94\xB9\xF3\xCC\x02\x90"
"\x02\xBA\x55\x1E\x24\x3E\x02\x1D"
"\xC6\xCD\x8F\xD9\xBD\xED\xB0\x51"
"\xCD\xE9\xD5\x0C\xFE\x12\x39\xA9"
"\x93\x9B\xEE\xB5\x97\x41\xD2\xA0"
"\xB4\x98\xD8\x6B\x74\xE7\x65\xF4",
.rlen = 504,
.also_non_np = 1,
.np = 2,
.tap = { 504 - 8, 8 },
},
};
static struct cipher_testvec bf_cbc_dec_tv_template[] = {
{ /* From OpenSSL */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
"\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
.klen = 16,
.iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
.input = "\x6b\x77\xb4\xd6\x30\x06\xde\xe6"
"\x05\xb1\x56\xe2\x74\x03\x97\x93"
"\x58\xde\xb9\xe7\x15\x46\x16\xd9"
"\x59\xf1\x65\x2b\xd5\xff\x92\xcc",
.ilen = 32,
.result = "\x37\x36\x35\x34\x33\x32\x31\x20"
"\x4e\x6f\x77\x20\x69\x73\x20\x74"
"\x68\x65\x20\x74\x69\x6d\x65\x20"
"\x66\x6f\x72\x20\x00\x00\x00\x00",
.rlen = 32,
}, { /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F",
.input = "\xB4\xFE\xA5\xBB\x3D\x2C\x27\x06"
"\x06\x2B\x3A\x92\xB2\xF5\x5E\x62"
"\x84\xCD\xF7\x66\x7E\x41\x6C\x8E"
"\x1B\xD9\x02\xB6\x48\xB0\x87\x25"
"\x01\x9C\x93\x63\x51\x60\x82\xD2"
"\x4D\xE5\xC2\xB7\xAE\x60\xD8\xAD"
"\x9F\xAB\x6C\xFA\x20\x05\xDA\x6F"
"\x1F\xD1\xD8\x36\x0F\xB5\x16\x69"
"\x3C\xAF\xB3\x30\x18\x33\xE6\xB5"
"\x43\x29\x9D\x94\xF4\x2F\x0A\x65"
"\x40\xB2\xB2\xB2\x42\x89\xEE\x8A"
"\x60\xD3\x52\xA8\xED\x91\xDF\xE1"
"\x91\x73\x7C\x28\xA1\x14\xC3\x4C"
"\x82\x72\x4B\x7D\x7D\x32\xD5\x19"
"\xE8\xB8\x6B\x30\x21\x09\x0E\x27"
"\x10\x9D\x2D\x3A\x6A\x4B\x7B\xE6"
"\x8D\x4E\x02\x32\xFF\x7F\x8E\x13"
"\xB0\x96\xF4\xC2\xA1\x60\x8A\x69"
"\xEF\x0F\x86\xD0\x25\x13\x1A\x7C"
"\x6E\xF0\x41\xA3\xFB\xB3\xAB\x40"
"\x7D\x19\xA0\x11\x4F\x3E\x1D\x43"
"\x65\xFE\x15\x40\xD0\x62\x41\x02"
"\xEA\x0C\x7A\xC3\x84\xEE\xB0\xBE"
"\xBE\xC8\x57\x51\xCD\x4F\xAD\x5C"
"\xCC\x79\xBA\x0D\x85\x3A\xED\x6B"
"\xAC\x6B\xA3\x4D\xBC\xE8\x02\x6A"
"\xC2\x6D\xBD\x5E\x89\x95\x86\x43"
"\x2C\x17\x4B\xC6\x40\xA2\xBD\x24"
"\x04\xF0\x86\x08\x78\x18\x42\xE0"
"\x39\x1B\x22\x9E\x89\x4C\x04\x6B"
"\x65\xC5\xB6\x0E\xF6\x63\xFC\xD7"
"\xAE\x9E\x87\x13\xCC\xD3\x1A\xEC"
"\xF0\x51\xCC\x93\x68\xFC\xE9\x19"
"\x7C\x4E\x9B\xCC\x17\xAD\xD2\xFC"
"\x97\x18\x92\xFF\x15\x11\xCE\xED"
"\x04\x41\x05\xA3\x92\xFF\x3B\xE6"
"\xB6\x8C\x90\xC6\xCD\x15\xA0\x04"
"\x25\x8B\x5D\x5B\x5F\xDB\xAE\x68"
"\xEF\xB3\x61\x18\xDB\x83\x9B\x39"
"\xCA\x82\xD1\x88\xF0\xA2\x5C\x02"
"\x87\xBD\x8D\x8F\xBB\x62\xF0\x35"
"\x75\x6F\x06\x81\x0A\x97\x4D\xF0"
"\x43\x12\x73\x77\xDB\x91\x83\x5B"
"\xE7\x3A\xA6\x07\x7B\xBF\x2C\x50"
"\x94\xDE\x7B\x65\xDA\x1C\xF1\x9F"
"\x7E\x12\x40\xB2\x3E\x19\x23\xF1"
"\x7C\x1B\x5F\xA8\xF3\xAC\x63\x87"
"\xEB\x3E\x0C\xBE\xA3\x63\x97\x88"
"\x8D\x27\xC6\x2A\xF8\xF2\x67\x9A"
"\x0D\x14\x16\x2B\x6F\xCB\xD4\x76"
"\x14\x48\x2E\xDE\x2A\x44\x5E\x45"
"\xF1\x97\x82\xEF\xB7\xAE\xED\x3A"
"\xED\x73\xD3\x79\xF7\x38\x1D\xD0"
"\xC5\xF8\x69\x83\x28\x84\x87\x56"
"\x3F\xAE\x81\x04\x79\x1F\xD1\x09"
"\xC5\xE5\x05\x0D\x64\x16\xCE\x42"
"\xC5\xF8\xDB\x57\x89\x33\x22\xFC"
"\xB4\xD7\x94\xB9\xF3\xCC\x02\x90"
"\x02\xBA\x55\x1E\x24\x3E\x02\x1D"
"\xC6\xCD\x8F\xD9\xBD\xED\xB0\x51"
"\xCD\xE9\xD5\x0C\xFE\x12\x39\xA9"
"\x93\x9B\xEE\xB5\x97\x41\xD2\xA0"
"\xB4\x98\xD8\x6B\x74\xE7\x65\xF4",
.ilen = 504,
.result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
"\x2B\xC2\x59\xF0\x64\xFB\x92\x06",
.rlen = 504,
.also_non_np = 1,
.np = 2,
.tap = { 504 - 8, 8 },
},
};
static struct cipher_testvec bf_ctr_enc_tv_template[] = {
{ /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F",
.input = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
"\x2B\xC2\x59\xF0\x64\xFB\x92\x06",
.ilen = 504,
.result = "\xC7\xA3\xDF\xB9\x05\xF4\x9E\x8D"
"\x9E\xDF\x38\x18\x83\x07\xEF\xC1"
"\x93\x3C\xAA\xAA\xFE\x06\x42\xCC"
"\x0D\x70\x86\x5A\x44\xAD\x85\x17"
"\xE4\x1F\x5E\xA5\x89\xAC\x32\xBC"
"\x3D\xA7\xE9\x0A\x5C\x70\x4D\xDE"
"\x99\x38\x07\xCA\x1D\x21\xC1\x11"
"\x97\xEB\x98\x75\xC4\x73\x45\x83"
"\x46\x1C\x9C\x91\x87\xC1\xA0\x56"
"\x98\xA1\x8B\xDB\x22\x76\xBD\x62"
"\xA4\xBC\xE8\x86\xDA\xD2\x51\x13"
"\x13\xD2\x96\x68\x69\x10\x67\x0C"
"\xD0\x17\x25\x7C\xB2\xAE\x4F\x93"
"\xA6\x82\x20\xCF\x0F\xA6\x47\x79"
"\x88\x09\x40\x59\xBD\x12\x64\xB5"
"\x19\x38\x0D\xFF\x86\xD9\x42\x20"
"\x81\x0D\x96\x99\xAF\x22\x1F\x94"
"\x5C\x6E\xEC\xEA\xA3\x39\xCB\x09"
"\x43\x19\x7F\xD0\xBB\x10\xC2\x49"
"\xF7\xE9\xF2\xEE\xBF\xF7\xF8\xB3"
"\x0E\x1A\xF1\x8D\x70\x82\x0C\x04"
"\xFD\x29\x1A\xAC\xC0\x92\x48\x34"
"\x6A\xE3\x1D\x4F\xFC\x1C\x72\x6A"
"\x57\xCB\xAD\xD0\x98\xAB\xB1\x01"
"\x03\x6A\x45\xDD\x07\x71\x5F\x5B"
"\xB5\x4A\xE4\xE5\xB9\xB9\xBC\xAC"
"\x44\xF7\x41\xA4\x5F\x2E\xE9\x28"
"\xE3\x05\xD2\x94\x78\x4C\x33\x1B"
"\xBD\xC1\x6E\x51\xD9\xAD\xD9\x86"
"\x15\x4A\x78\xAE\x7B\xAD\x3B\xBC"
"\x2F\xE0\x0E\xC5\x7B\x54\x97\x5F"
"\x60\x51\x14\x65\xF9\x91\xE9\xDA"
"\x9A\xBC\xFC\x19\x29\x67\xAA\x63"
"\x5E\xF2\x48\x88\xEB\x79\xE1\xE4"
"\xF7\xF6\x4C\xA9\xE2\x8C\x3B\xE0"
"\xED\x52\xAE\x90\x8F\x5B\x98\x34"
"\x29\x94\x34\x7F\xF9\x6C\x1E\xB6"
"\xA4\xE7\x2D\x06\x54\x9D\xC3\x02"
"\xC1\x90\xA4\x72\x31\x6B\x24\x51"
"\x0B\xB3\x7C\x63\x15\xBA\xAF\x5D"
"\x41\xE0\x37\x6D\xBE\x41\x58\xDE"
"\xF2\x07\x62\x99\xBE\xC1\x8C\x0F"
"\x0F\x28\xFB\x8F\x0E\x1D\x91\xE2"
"\xDA\x99\x5C\x49\xBA\x9C\xA8\x86"
"\x82\x63\x11\xB3\x54\x49\x00\x08"
"\x07\xF2\xE8\x1F\x34\x49\x61\xF4"
"\x81\xE9\xF6\xA9\x5A\x28\x60\x1F"
"\x66\x99\x08\x06\xF2\xE8\x2D\xD1"
"\xD0\x67\xBA\x32\x1F\x02\x86\x7B"
"\xFB\x79\x3D\xC5\xB1\x7F\x15\xAF"
"\xD7\xBF\x31\x46\x22\x7F\xAE\x5B"
"\x8B\x95\x47\xC2\xB1\x62\xA1\xCE"
"\x52\xAC\x9C\x8B\xC2\x49\x7F\xBC"
"\x9C\x89\xB8\xB6\xCA\xE3\x8F\xEA"
"\xAC\xB4\x5D\xE4\x50\xDC\x3A\xB5"
"\x91\x04\x94\x99\x03\x3B\x42\x6D"
"\x9C\x4A\x02\xF5\xB5\x38\x98\xA8"
"\x5C\x97\x2E\x4D\x79\x67\x71\xAF"
"\xF0\x70\x77\xFF\x2D\xDA\xA0\x9E"
"\x23\x8D\xD6\xA6\x68\x10\x78\x9A"
"\x64\xBB\x15\xB8\x56\xCF\xEE\xE5"
"\x32\x44\x96\x1C\xD8\xEB\x95\xD2"
"\xF3\x71\xEF\xEB\x4E\xBB\x4D\x29",
.rlen = 504,
}, { /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F",
.input = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
"\x2B\xC2\x59\xF0\x64\xFB\x92",
.ilen = 503,
.result = "\xC7\xA3\xDF\xB9\x05\xF4\x9E\x8D"
"\x9E\xDF\x38\x18\x83\x07\xEF\xC1"
"\x93\x3C\xAA\xAA\xFE\x06\x42\xCC"
"\x0D\x70\x86\x5A\x44\xAD\x85\x17"
"\xE4\x1F\x5E\xA5\x89\xAC\x32\xBC"
"\x3D\xA7\xE9\x0A\x5C\x70\x4D\xDE"
"\x99\x38\x07\xCA\x1D\x21\xC1\x11"
"\x97\xEB\x98\x75\xC4\x73\x45\x83"
"\x46\x1C\x9C\x91\x87\xC1\xA0\x56"
"\x98\xA1\x8B\xDB\x22\x76\xBD\x62"
"\xA4\xBC\xE8\x86\xDA\xD2\x51\x13"
"\x13\xD2\x96\x68\x69\x10\x67\x0C"
"\xD0\x17\x25\x7C\xB2\xAE\x4F\x93"
"\xA6\x82\x20\xCF\x0F\xA6\x47\x79"
"\x88\x09\x40\x59\xBD\x12\x64\xB5"
"\x19\x38\x0D\xFF\x86\xD9\x42\x20"
"\x81\x0D\x96\x99\xAF\x22\x1F\x94"
"\x5C\x6E\xEC\xEA\xA3\x39\xCB\x09"
"\x43\x19\x7F\xD0\xBB\x10\xC2\x49"
"\xF7\xE9\xF2\xEE\xBF\xF7\xF8\xB3"
"\x0E\x1A\xF1\x8D\x70\x82\x0C\x04"
"\xFD\x29\x1A\xAC\xC0\x92\x48\x34"
"\x6A\xE3\x1D\x4F\xFC\x1C\x72\x6A"
"\x57\xCB\xAD\xD0\x98\xAB\xB1\x01"
"\x03\x6A\x45\xDD\x07\x71\x5F\x5B"
"\xB5\x4A\xE4\xE5\xB9\xB9\xBC\xAC"
"\x44\xF7\x41\xA4\x5F\x2E\xE9\x28"
"\xE3\x05\xD2\x94\x78\x4C\x33\x1B"
"\xBD\xC1\x6E\x51\xD9\xAD\xD9\x86"
"\x15\x4A\x78\xAE\x7B\xAD\x3B\xBC"
"\x2F\xE0\x0E\xC5\x7B\x54\x97\x5F"
"\x60\x51\x14\x65\xF9\x91\xE9\xDA"
"\x9A\xBC\xFC\x19\x29\x67\xAA\x63"
"\x5E\xF2\x48\x88\xEB\x79\xE1\xE4"
"\xF7\xF6\x4C\xA9\xE2\x8C\x3B\xE0"
"\xED\x52\xAE\x90\x8F\x5B\x98\x34"
"\x29\x94\x34\x7F\xF9\x6C\x1E\xB6"
"\xA4\xE7\x2D\x06\x54\x9D\xC3\x02"
"\xC1\x90\xA4\x72\x31\x6B\x24\x51"
"\x0B\xB3\x7C\x63\x15\xBA\xAF\x5D"
"\x41\xE0\x37\x6D\xBE\x41\x58\xDE"
"\xF2\x07\x62\x99\xBE\xC1\x8C\x0F"
"\x0F\x28\xFB\x8F\x0E\x1D\x91\xE2"
"\xDA\x99\x5C\x49\xBA\x9C\xA8\x86"
"\x82\x63\x11\xB3\x54\x49\x00\x08"
"\x07\xF2\xE8\x1F\x34\x49\x61\xF4"
"\x81\xE9\xF6\xA9\x5A\x28\x60\x1F"
"\x66\x99\x08\x06\xF2\xE8\x2D\xD1"
"\xD0\x67\xBA\x32\x1F\x02\x86\x7B"
"\xFB\x79\x3D\xC5\xB1\x7F\x15\xAF"
"\xD7\xBF\x31\x46\x22\x7F\xAE\x5B"
"\x8B\x95\x47\xC2\xB1\x62\xA1\xCE"
"\x52\xAC\x9C\x8B\xC2\x49\x7F\xBC"
"\x9C\x89\xB8\xB6\xCA\xE3\x8F\xEA"
"\xAC\xB4\x5D\xE4\x50\xDC\x3A\xB5"
"\x91\x04\x94\x99\x03\x3B\x42\x6D"
"\x9C\x4A\x02\xF5\xB5\x38\x98\xA8"
"\x5C\x97\x2E\x4D\x79\x67\x71\xAF"
"\xF0\x70\x77\xFF\x2D\xDA\xA0\x9E"
"\x23\x8D\xD6\xA6\x68\x10\x78\x9A"
"\x64\xBB\x15\xB8\x56\xCF\xEE\xE5"
"\x32\x44\x96\x1C\xD8\xEB\x95\xD2"
"\xF3\x71\xEF\xEB\x4E\xBB\x4D",
.rlen = 503,
.also_non_np = 1,
.np = 2,
.tap = { 503 - 8, 8 },
}, { /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD",
.input = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
"\x2B\xC2\x59\xF0\x64\xFB\x92\x06",
.ilen = 504,
.result = "\x5F\x58\x6E\x60\x51\x6E\xDC\x3D"
"\xD1\xBB\xF7\xB7\xFD\x04\x44\x82"
"\xDC\x9F\x4B\x02\xF1\xD2\x5A\x6F"
"\x25\xF9\x27\x21\xF2\xD2\x9A\x01"
"\xBD\xAD\x3D\x93\x87\xCA\x0D\xFE"
"\xB7\x2C\x17\x1F\x42\x8C\x13\xB2"
"\x62\x44\x72\xB9\x5D\xC0\xF8\x37"
"\xDF\xEA\x78\x81\x8F\xA6\x34\xB2"
"\x07\x09\x7C\xB9\x3A\xA0\x2B\x18"
"\x34\x6A\x9D\x3D\xA5\xEB\xF4\x60"
"\xF8\x98\xA2\x39\x81\x23\x6C\xA9"
"\x70\xCA\xCC\x45\xD8\x1F\xDF\x44"
"\x2A\x67\x7A\x88\x28\xDC\x36\x83"
"\x18\xD7\x48\x43\x17\x2B\x1B\xE6"
"\x0B\x82\x59\x14\x26\x67\x08\x09"
"\x5B\x5D\x38\xD0\x81\xCE\x54\x2A"
"\xCD\x22\x94\x42\xF5\xBA\x74\x7E"
"\xD9\x00\x40\xA9\x0D\x0B\xBD\x8E"
"\xC4\x8E\x5E\x17\x8F\x48\xE2\xB8"
"\xF4\xCC\x19\x76\xAB\x48\x29\xAA"
"\x81\xD5\xCE\xD5\x8A\x3B\xC9\x21"
"\xEF\x50\x4F\x04\x02\xBF\xE1\x1F"
"\x59\x28\x1A\xE4\x18\x16\xA0\x29"
"\xBF\x34\xA9\x2D\x28\x83\xC0\x5E"
"\xEA\x44\xC4\x6E\xAB\x24\x79\x9D"
"\x2D\xA1\xE8\x55\xCA\x74\xFC\xBD"
"\xFE\xDD\xDA\xA5\xFB\x34\x90\x31"
"\x0E\x62\x28\x9B\xDC\xD7\xA1\xBB"
"\xF0\x1A\xB3\xE2\xD0\xFA\xBD\xE8"
"\x5C\x5A\x10\x67\xF6\x6A\x17\x3F"
"\xC5\xE9\x09\x08\xDD\x22\x77\x42"
"\x26\x6A\x6A\x7A\x3F\x87\x80\x0C"
"\xF0\xFF\x15\x8E\x84\x86\xC0\x10"
"\x0F\x8D\x33\x06\xB8\x72\xA4\x47"
"\x6B\xED\x2E\x05\x94\x6C\x5C\x5B"
"\x13\xF6\x77\xEE\x3B\x16\xDF\xC2"
"\x63\x66\x07\x6D\x3F\x6C\x51\x7C"
"\x1C\xAC\x80\xB6\x58\x48\xB7\x9D"
"\xB4\x19\xD8\x19\x45\x66\x27\x02"
"\xA1\xA9\x99\xF3\x1F\xE5\xA7\x1D"
"\x31\xE7\x1B\x0D\xFF\xBB\xB5\xA1"
"\xF5\x9C\x45\x1E\x18\x19\xA1\xE7"
"\xC2\xF1\xBF\x68\xC3\xEC\xCF\x53"
"\x67\xA6\x2B\x7D\x3C\x6D\x24\xC3"
"\xE8\xE6\x07\x5A\x09\xE0\x32\xA8"
"\x52\xF6\xE9\xED\x0E\xC6\x0A\x6A"
"\xFC\x60\x2A\xE0\x93\xCE\xB8\x2E"
"\xA2\xA8\x0E\x79\x9E\x34\x5D\x37"
"\x6F\x12\xFE\x48\x7B\xE7\xB9\x22"
"\x29\xE8\xD7\xBE\x5D\xD1\x8B\xD9"
"\x91\x51\x4E\x71\xF2\x98\x85\x16"
"\x25\x7A\x76\x8A\x51\x0E\x65\x14"
"\x81\xB5\x3A\x37\xFD\xEC\xB5\x8A"
"\xE1\xCF\x41\x72\x14\x29\x4C\xF0"
"\x20\xD9\x9A\xC5\x66\xA4\x03\x76"
"\x5B\xA4\x15\x4F\x0E\x64\x39\x40"
"\x25\xF9\x20\x22\xF5\x88\xF5\xBA"
"\xE4\xDF\x45\x61\xBF\x8D\x7A\x24"
"\x4B\x92\x71\xD9\x2F\x77\xA7\x95"
"\xA8\x7F\x61\xD5\xA4\x57\xB0\xFB"
"\xB5\x77\xBA\x1C\xEE\x71\xFA\xB0"
"\x16\x4C\x18\x6B\xF2\x69\xA0\x07"
"\xEF\xBE\xEC\x69\xAC\xA8\x63\x9E",
.rlen = 504,
},
};
static struct cipher_testvec bf_ctr_dec_tv_template[] = {
{ /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F",
.input = "\xC7\xA3\xDF\xB9\x05\xF4\x9E\x8D"
"\x9E\xDF\x38\x18\x83\x07\xEF\xC1"
"\x93\x3C\xAA\xAA\xFE\x06\x42\xCC"
"\x0D\x70\x86\x5A\x44\xAD\x85\x17"
"\xE4\x1F\x5E\xA5\x89\xAC\x32\xBC"
"\x3D\xA7\xE9\x0A\x5C\x70\x4D\xDE"
"\x99\x38\x07\xCA\x1D\x21\xC1\x11"
"\x97\xEB\x98\x75\xC4\x73\x45\x83"
"\x46\x1C\x9C\x91\x87\xC1\xA0\x56"
"\x98\xA1\x8B\xDB\x22\x76\xBD\x62"
"\xA4\xBC\xE8\x86\xDA\xD2\x51\x13"
"\x13\xD2\x96\x68\x69\x10\x67\x0C"
"\xD0\x17\x25\x7C\xB2\xAE\x4F\x93"
"\xA6\x82\x20\xCF\x0F\xA6\x47\x79"
"\x88\x09\x40\x59\xBD\x12\x64\xB5"
"\x19\x38\x0D\xFF\x86\xD9\x42\x20"
"\x81\x0D\x96\x99\xAF\x22\x1F\x94"
"\x5C\x6E\xEC\xEA\xA3\x39\xCB\x09"
"\x43\x19\x7F\xD0\xBB\x10\xC2\x49"
"\xF7\xE9\xF2\xEE\xBF\xF7\xF8\xB3"
"\x0E\x1A\xF1\x8D\x70\x82\x0C\x04"
"\xFD\x29\x1A\xAC\xC0\x92\x48\x34"
"\x6A\xE3\x1D\x4F\xFC\x1C\x72\x6A"
"\x57\xCB\xAD\xD0\x98\xAB\xB1\x01"
"\x03\x6A\x45\xDD\x07\x71\x5F\x5B"
"\xB5\x4A\xE4\xE5\xB9\xB9\xBC\xAC"
"\x44\xF7\x41\xA4\x5F\x2E\xE9\x28"
"\xE3\x05\xD2\x94\x78\x4C\x33\x1B"
"\xBD\xC1\x6E\x51\xD9\xAD\xD9\x86"
"\x15\x4A\x78\xAE\x7B\xAD\x3B\xBC"
"\x2F\xE0\x0E\xC5\x7B\x54\x97\x5F"
"\x60\x51\x14\x65\xF9\x91\xE9\xDA"
"\x9A\xBC\xFC\x19\x29\x67\xAA\x63"
"\x5E\xF2\x48\x88\xEB\x79\xE1\xE4"
"\xF7\xF6\x4C\xA9\xE2\x8C\x3B\xE0"
"\xED\x52\xAE\x90\x8F\x5B\x98\x34"
"\x29\x94\x34\x7F\xF9\x6C\x1E\xB6"
"\xA4\xE7\x2D\x06\x54\x9D\xC3\x02"
"\xC1\x90\xA4\x72\x31\x6B\x24\x51"
"\x0B\xB3\x7C\x63\x15\xBA\xAF\x5D"
"\x41\xE0\x37\x6D\xBE\x41\x58\xDE"
"\xF2\x07\x62\x99\xBE\xC1\x8C\x0F"
"\x0F\x28\xFB\x8F\x0E\x1D\x91\xE2"
"\xDA\x99\x5C\x49\xBA\x9C\xA8\x86"
"\x82\x63\x11\xB3\x54\x49\x00\x08"
"\x07\xF2\xE8\x1F\x34\x49\x61\xF4"
"\x81\xE9\xF6\xA9\x5A\x28\x60\x1F"
"\x66\x99\x08\x06\xF2\xE8\x2D\xD1"
"\xD0\x67\xBA\x32\x1F\x02\x86\x7B"
"\xFB\x79\x3D\xC5\xB1\x7F\x15\xAF"
"\xD7\xBF\x31\x46\x22\x7F\xAE\x5B"
"\x8B\x95\x47\xC2\xB1\x62\xA1\xCE"
"\x52\xAC\x9C\x8B\xC2\x49\x7F\xBC"
"\x9C\x89\xB8\xB6\xCA\xE3\x8F\xEA"
"\xAC\xB4\x5D\xE4\x50\xDC\x3A\xB5"
"\x91\x04\x94\x99\x03\x3B\x42\x6D"
"\x9C\x4A\x02\xF5\xB5\x38\x98\xA8"
"\x5C\x97\x2E\x4D\x79\x67\x71\xAF"
"\xF0\x70\x77\xFF\x2D\xDA\xA0\x9E"
"\x23\x8D\xD6\xA6\x68\x10\x78\x9A"
"\x64\xBB\x15\xB8\x56\xCF\xEE\xE5"
"\x32\x44\x96\x1C\xD8\xEB\x95\xD2"
"\xF3\x71\xEF\xEB\x4E\xBB\x4D\x29",
.ilen = 504,
.result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
"\x2B\xC2\x59\xF0\x64\xFB\x92\x06",
.rlen = 504,
}, { /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F",
.input = "\xC7\xA3\xDF\xB9\x05\xF4\x9E\x8D"
"\x9E\xDF\x38\x18\x83\x07\xEF\xC1"
"\x93\x3C\xAA\xAA\xFE\x06\x42\xCC"
"\x0D\x70\x86\x5A\x44\xAD\x85\x17"
"\xE4\x1F\x5E\xA5\x89\xAC\x32\xBC"
"\x3D\xA7\xE9\x0A\x5C\x70\x4D\xDE"
"\x99\x38\x07\xCA\x1D\x21\xC1\x11"
"\x97\xEB\x98\x75\xC4\x73\x45\x83"
"\x46\x1C\x9C\x91\x87\xC1\xA0\x56"
"\x98\xA1\x8B\xDB\x22\x76\xBD\x62"
"\xA4\xBC\xE8\x86\xDA\xD2\x51\x13"
"\x13\xD2\x96\x68\x69\x10\x67\x0C"
"\xD0\x17\x25\x7C\xB2\xAE\x4F\x93"
"\xA6\x82\x20\xCF\x0F\xA6\x47\x79"
"\x88\x09\x40\x59\xBD\x12\x64\xB5"
"\x19\x38\x0D\xFF\x86\xD9\x42\x20"
"\x81\x0D\x96\x99\xAF\x22\x1F\x94"
"\x5C\x6E\xEC\xEA\xA3\x39\xCB\x09"
"\x43\x19\x7F\xD0\xBB\x10\xC2\x49"
"\xF7\xE9\xF2\xEE\xBF\xF7\xF8\xB3"
"\x0E\x1A\xF1\x8D\x70\x82\x0C\x04"
"\xFD\x29\x1A\xAC\xC0\x92\x48\x34"
"\x6A\xE3\x1D\x4F\xFC\x1C\x72\x6A"
"\x57\xCB\xAD\xD0\x98\xAB\xB1\x01"
"\x03\x6A\x45\xDD\x07\x71\x5F\x5B"
"\xB5\x4A\xE4\xE5\xB9\xB9\xBC\xAC"
"\x44\xF7\x41\xA4\x5F\x2E\xE9\x28"
"\xE3\x05\xD2\x94\x78\x4C\x33\x1B"
"\xBD\xC1\x6E\x51\xD9\xAD\xD9\x86"
"\x15\x4A\x78\xAE\x7B\xAD\x3B\xBC"
"\x2F\xE0\x0E\xC5\x7B\x54\x97\x5F"
"\x60\x51\x14\x65\xF9\x91\xE9\xDA"
"\x9A\xBC\xFC\x19\x29\x67\xAA\x63"
"\x5E\xF2\x48\x88\xEB\x79\xE1\xE4"
"\xF7\xF6\x4C\xA9\xE2\x8C\x3B\xE0"
"\xED\x52\xAE\x90\x8F\x5B\x98\x34"
"\x29\x94\x34\x7F\xF9\x6C\x1E\xB6"
"\xA4\xE7\x2D\x06\x54\x9D\xC3\x02"
"\xC1\x90\xA4\x72\x31\x6B\x24\x51"
"\x0B\xB3\x7C\x63\x15\xBA\xAF\x5D"
"\x41\xE0\x37\x6D\xBE\x41\x58\xDE"
"\xF2\x07\x62\x99\xBE\xC1\x8C\x0F"
"\x0F\x28\xFB\x8F\x0E\x1D\x91\xE2"
"\xDA\x99\x5C\x49\xBA\x9C\xA8\x86"
"\x82\x63\x11\xB3\x54\x49\x00\x08"
"\x07\xF2\xE8\x1F\x34\x49\x61\xF4"
"\x81\xE9\xF6\xA9\x5A\x28\x60\x1F"
"\x66\x99\x08\x06\xF2\xE8\x2D\xD1"
"\xD0\x67\xBA\x32\x1F\x02\x86\x7B"
"\xFB\x79\x3D\xC5\xB1\x7F\x15\xAF"
"\xD7\xBF\x31\x46\x22\x7F\xAE\x5B"
"\x8B\x95\x47\xC2\xB1\x62\xA1\xCE"
"\x52\xAC\x9C\x8B\xC2\x49\x7F\xBC"
"\x9C\x89\xB8\xB6\xCA\xE3\x8F\xEA"
"\xAC\xB4\x5D\xE4\x50\xDC\x3A\xB5"
"\x91\x04\x94\x99\x03\x3B\x42\x6D"
"\x9C\x4A\x02\xF5\xB5\x38\x98\xA8"
"\x5C\x97\x2E\x4D\x79\x67\x71\xAF"
"\xF0\x70\x77\xFF\x2D\xDA\xA0\x9E"
"\x23\x8D\xD6\xA6\x68\x10\x78\x9A"
"\x64\xBB\x15\xB8\x56\xCF\xEE\xE5"
"\x32\x44\x96\x1C\xD8\xEB\x95\xD2"
"\xF3\x71\xEF\xEB\x4E\xBB\x4D",
.ilen = 503,
.result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
"\x2B\xC2\x59\xF0\x64\xFB\x92",
.rlen = 503,
.also_non_np = 1,
.np = 2,
.tap = { 503 - 8, 8 },
}, { /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD",
.input = "\x5F\x58\x6E\x60\x51\x6E\xDC\x3D"
"\xD1\xBB\xF7\xB7\xFD\x04\x44\x82"
"\xDC\x9F\x4B\x02\xF1\xD2\x5A\x6F"
"\x25\xF9\x27\x21\xF2\xD2\x9A\x01"
"\xBD\xAD\x3D\x93\x87\xCA\x0D\xFE"
"\xB7\x2C\x17\x1F\x42\x8C\x13\xB2"
"\x62\x44\x72\xB9\x5D\xC0\xF8\x37"
"\xDF\xEA\x78\x81\x8F\xA6\x34\xB2"
"\x07\x09\x7C\xB9\x3A\xA0\x2B\x18"
"\x34\x6A\x9D\x3D\xA5\xEB\xF4\x60"
"\xF8\x98\xA2\x39\x81\x23\x6C\xA9"
"\x70\xCA\xCC\x45\xD8\x1F\xDF\x44"
"\x2A\x67\x7A\x88\x28\xDC\x36\x83"
"\x18\xD7\x48\x43\x17\x2B\x1B\xE6"
"\x0B\x82\x59\x14\x26\x67\x08\x09"
"\x5B\x5D\x38\xD0\x81\xCE\x54\x2A"
"\xCD\x22\x94\x42\xF5\xBA\x74\x7E"
"\xD9\x00\x40\xA9\x0D\x0B\xBD\x8E"
"\xC4\x8E\x5E\x17\x8F\x48\xE2\xB8"
"\xF4\xCC\x19\x76\xAB\x48\x29\xAA"
"\x81\xD5\xCE\xD5\x8A\x3B\xC9\x21"
"\xEF\x50\x4F\x04\x02\xBF\xE1\x1F"
"\x59\x28\x1A\xE4\x18\x16\xA0\x29"
"\xBF\x34\xA9\x2D\x28\x83\xC0\x5E"
"\xEA\x44\xC4\x6E\xAB\x24\x79\x9D"
"\x2D\xA1\xE8\x55\xCA\x74\xFC\xBD"
"\xFE\xDD\xDA\xA5\xFB\x34\x90\x31"
"\x0E\x62\x28\x9B\xDC\xD7\xA1\xBB"
"\xF0\x1A\xB3\xE2\xD0\xFA\xBD\xE8"
"\x5C\x5A\x10\x67\xF6\x6A\x17\x3F"
"\xC5\xE9\x09\x08\xDD\x22\x77\x42"
"\x26\x6A\x6A\x7A\x3F\x87\x80\x0C"
"\xF0\xFF\x15\x8E\x84\x86\xC0\x10"
"\x0F\x8D\x33\x06\xB8\x72\xA4\x47"
"\x6B\xED\x2E\x05\x94\x6C\x5C\x5B"
"\x13\xF6\x77\xEE\x3B\x16\xDF\xC2"
"\x63\x66\x07\x6D\x3F\x6C\x51\x7C"
"\x1C\xAC\x80\xB6\x58\x48\xB7\x9D"
"\xB4\x19\xD8\x19\x45\x66\x27\x02"
"\xA1\xA9\x99\xF3\x1F\xE5\xA7\x1D"
"\x31\xE7\x1B\x0D\xFF\xBB\xB5\xA1"
"\xF5\x9C\x45\x1E\x18\x19\xA1\xE7"
"\xC2\xF1\xBF\x68\xC3\xEC\xCF\x53"
"\x67\xA6\x2B\x7D\x3C\x6D\x24\xC3"
"\xE8\xE6\x07\x5A\x09\xE0\x32\xA8"
"\x52\xF6\xE9\xED\x0E\xC6\x0A\x6A"
"\xFC\x60\x2A\xE0\x93\xCE\xB8\x2E"
"\xA2\xA8\x0E\x79\x9E\x34\x5D\x37"
"\x6F\x12\xFE\x48\x7B\xE7\xB9\x22"
"\x29\xE8\xD7\xBE\x5D\xD1\x8B\xD9"
"\x91\x51\x4E\x71\xF2\x98\x85\x16"
"\x25\x7A\x76\x8A\x51\x0E\x65\x14"
"\x81\xB5\x3A\x37\xFD\xEC\xB5\x8A"
"\xE1\xCF\x41\x72\x14\x29\x4C\xF0"
"\x20\xD9\x9A\xC5\x66\xA4\x03\x76"
"\x5B\xA4\x15\x4F\x0E\x64\x39\x40"
"\x25\xF9\x20\x22\xF5\x88\xF5\xBA"
"\xE4\xDF\x45\x61\xBF\x8D\x7A\x24"
"\x4B\x92\x71\xD9\x2F\x77\xA7\x95"
"\xA8\x7F\x61\xD5\xA4\x57\xB0\xFB"
"\xB5\x77\xBA\x1C\xEE\x71\xFA\xB0"
"\x16\x4C\x18\x6B\xF2\x69\xA0\x07"
"\xEF\xBE\xEC\x69\xAC\xA8\x63\x9E",
.ilen = 504,
.result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
"\x2B\xC2\x59\xF0\x64\xFB\x92\x06",
.rlen = 504,
},
};
/*
* Twofish test vectors.
*/
#define TF_ENC_TEST_VECTORS 4
#define TF_DEC_TEST_VECTORS 4
#define TF_CBC_ENC_TEST_VECTORS 5
#define TF_CBC_DEC_TEST_VECTORS 5
#define TF_CTR_ENC_TEST_VECTORS 2
#define TF_CTR_DEC_TEST_VECTORS 2
#define TF_LRW_ENC_TEST_VECTORS 8
#define TF_LRW_DEC_TEST_VECTORS 8
#define TF_XTS_ENC_TEST_VECTORS 5
#define TF_XTS_DEC_TEST_VECTORS 5
static struct cipher_testvec tf_enc_tv_template[] = {
{
.key = zeroed_string,
.klen = 16,
.input = zeroed_string,
.ilen = 16,
.result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
"\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
.rlen = 16,
}, {
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
"\xfe\xdc\xba\x98\x76\x54\x32\x10"
"\x00\x11\x22\x33\x44\x55\x66\x77",
.klen = 24,
.input = zeroed_string,
.ilen = 16,
.result = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
"\x50\x1f\x13\xb8\x92\xbd\x22\x48",
.rlen = 16,
}, {
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
"\xfe\xdc\xba\x98\x76\x54\x32\x10"
"\x00\x11\x22\x33\x44\x55\x66\x77"
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
.klen = 32,
.input = zeroed_string,
.ilen = 16,
.result = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
"\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
.rlen = 16,
}, { /* Generated with Crypto++ */
.key = "\x3F\x85\x62\x3F\x1C\xF9\xD6\x1C"
"\xF9\xD6\xB3\x90\x6D\x4A\x90\x6D"
"\x4A\x27\x04\xE1\x27\x04\xE1\xBE"
"\x9B\x78\xBE\x9B\x78\x55\x32\x0F",
.klen = 32,
.input = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
.ilen = 496,
.result = "\x88\xCB\x1E\xC2\xAF\x8A\x97\xFF"
"\xF6\x90\x46\x9C\x4A\x0F\x08\xDC"
"\xDE\xAB\xAD\xFA\xFC\xA8\xC2\x3D"
"\xE0\xE4\x8B\x3F\xD5\xA3\xF7\x14"
"\x34\x9E\xB6\x08\xB2\xDD\xA8\xF5"
"\xDF\xFA\xC7\xE8\x09\x50\x76\x08"
"\xA2\xB6\x6A\x59\xC0\x2B\x6D\x05"
"\x89\xF6\x82\xF0\xD3\xDB\x06\x02"
"\xB5\x11\x5C\x5E\x79\x1A\xAC\x43"
"\x5C\xC0\x30\x4B\x6B\x16\xA1\x40"
"\x80\x27\x88\xBA\x2C\x74\x42\xE0"
"\x1B\xA5\x85\x08\xB9\xE6\x22\x7A"
"\x36\x3B\x0D\x9F\xA0\x22\x6C\x2A"
"\x91\x75\x47\xBC\x67\x21\x4E\xF9"
"\xEA\xFF\xD9\xD5\xC0\xFC\x9E\x2C"
"\x3E\xAD\xC6\x61\x0E\x93\x7A\x22"
"\x09\xC8\x8D\xC1\x8E\xB4\x8B\x5C"
"\xC6\x24\x42\xB8\x23\x66\x80\xA9"
"\x32\x0B\x7A\x29\xBF\xB3\x0B\x63"
"\x43\x27\x13\xA9\xBE\xEB\xBD\xF3"
"\x33\x62\x70\xE2\x1B\x86\x7A\xA1"
"\x51\x4A\x16\xFE\x29\x63\x7E\xD0"
"\x7A\xA4\x6E\x2C\xF8\xC1\xDB\xE8"
"\xCB\x4D\xD2\x8C\x04\x14\xB4\x66"
"\x41\xB7\x3A\x96\x16\x7C\x1D\x5B"
"\xB6\x41\x42\x64\x43\xEE\x6E\x7C"
"\x8B\xAF\x01\x9C\xA4\x6E\x75\x8F"
"\xDE\x10\x9F\xA6\xE7\xD6\x44\x97"
"\x66\xA3\x96\x0F\x1C\x25\x60\xF5"
"\x3C\x2E\x32\x69\x0E\x82\xFF\x27"
"\x0F\xB5\x06\xDA\xD8\x31\x15\x6C"
"\xDF\x18\x6C\x87\xF5\x3B\x11\x9A"
"\x1B\x42\x1F\x5B\x29\x19\x96\x13"
"\x68\x2E\x5E\x08\x1C\x8F\x32\x4B"
"\x81\x77\x6D\xF4\xA0\x01\x42\xEC"
"\xDD\x5B\xFD\x3A\x8E\x6A\x14\xFB"
"\x83\x54\xDF\x0F\x86\xB7\xEA\x40"
"\x46\x39\xF7\x2A\x89\x8D\x4E\x96"
"\x5F\x5F\x6D\x76\xC6\x13\x9D\x3D"
"\x1D\x5F\x0C\x7D\xE2\xBC\xC2\x16"
"\x16\xBE\x89\x3E\xB0\x61\xA2\x5D"
"\xAF\xD1\x40\x5F\x1A\xB8\x26\x41"
"\xC6\xBD\x36\xEF\xED\x29\x50\x6D"
"\x10\xEF\x26\xE8\xA8\x93\x11\x3F"
"\x2D\x1F\x88\x20\x77\x45\xF5\x66"
"\x08\xB9\xF1\xEF\xB1\x93\xA8\x81"
"\x65\xC5\xCD\x3E\x8C\x06\x60\x2C"
"\xB2\x10\x7A\xCA\x05\x25\x59\xDB"
"\xC7\x28\xF5\x20\x35\x52\x9E\x62"
"\xF8\x88\x24\x1C\x4D\x84\x12\x39"
"\x39\xE4\x2E\xF4\xD4\x9D\x2B\xBC"
"\x87\x66\xE6\xC0\x6B\x31\x9A\x66"
"\x03\xDC\x95\xD8\x6B\xD0\x30\x8F"
"\xDF\x8F\x8D\xFA\xEC\x1F\x08\xBD"
"\xA3\x63\xE2\x71\x4F\x03\x94\x87"
"\x50\xDF\x15\x1F\xED\x3A\xA3\x7F"
"\x1F\x2A\xB5\xA1\x69\xAC\x4B\x0D"
"\x84\x9B\x2A\xE9\x55\xDD\x46\x91"
"\x15\x33\xF3\x2B\x9B\x46\x97\x00"
"\xF0\x29\xD8\x59\x5D\x33\x37\xF9"
"\x58\x33\x9B\x78\xC7\x58\x48\x6B"
"\x2C\x75\x64\xC4\xCA\xC1\x7E\xD5",
.rlen = 496,
.also_non_np = 1,
.np = 2,
.tap = { 496 - 16, 16 },
},
};
static struct cipher_testvec tf_dec_tv_template[] = {
{
.key = zeroed_string,
.klen = 16,
.input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
"\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
.ilen = 16,
.result = zeroed_string,
.rlen = 16,
}, {
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
"\xfe\xdc\xba\x98\x76\x54\x32\x10"
"\x00\x11\x22\x33\x44\x55\x66\x77",
.klen = 24,
.input = "\xcf\xd1\xd2\xe5\xa9\xbe\x9c\xdf"
"\x50\x1f\x13\xb8\x92\xbd\x22\x48",
.ilen = 16,
.result = zeroed_string,
.rlen = 16,
}, {
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
"\xfe\xdc\xba\x98\x76\x54\x32\x10"
"\x00\x11\x22\x33\x44\x55\x66\x77"
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
.klen = 32,
.input = "\x37\x52\x7b\xe0\x05\x23\x34\xb8"
"\x9f\x0c\xfc\xca\xe8\x7c\xfa\x20",
.ilen = 16,
.result = zeroed_string,
.rlen = 16,
}, { /* Generated with Crypto++ */
.key = "\x3F\x85\x62\x3F\x1C\xF9\xD6\x1C"
"\xF9\xD6\xB3\x90\x6D\x4A\x90\x6D"
"\x4A\x27\x04\xE1\x27\x04\xE1\xBE"
"\x9B\x78\xBE\x9B\x78\x55\x32\x0F",
.klen = 32,
.input = "\x88\xCB\x1E\xC2\xAF\x8A\x97\xFF"
"\xF6\x90\x46\x9C\x4A\x0F\x08\xDC"
"\xDE\xAB\xAD\xFA\xFC\xA8\xC2\x3D"
"\xE0\xE4\x8B\x3F\xD5\xA3\xF7\x14"
"\x34\x9E\xB6\x08\xB2\xDD\xA8\xF5"
"\xDF\xFA\xC7\xE8\x09\x50\x76\x08"
"\xA2\xB6\x6A\x59\xC0\x2B\x6D\x05"
"\x89\xF6\x82\xF0\xD3\xDB\x06\x02"
"\xB5\x11\x5C\x5E\x79\x1A\xAC\x43"
"\x5C\xC0\x30\x4B\x6B\x16\xA1\x40"
"\x80\x27\x88\xBA\x2C\x74\x42\xE0"
"\x1B\xA5\x85\x08\xB9\xE6\x22\x7A"
"\x36\x3B\x0D\x9F\xA0\x22\x6C\x2A"
"\x91\x75\x47\xBC\x67\x21\x4E\xF9"
"\xEA\xFF\xD9\xD5\xC0\xFC\x9E\x2C"
"\x3E\xAD\xC6\x61\x0E\x93\x7A\x22"
"\x09\xC8\x8D\xC1\x8E\xB4\x8B\x5C"
"\xC6\x24\x42\xB8\x23\x66\x80\xA9"
"\x32\x0B\x7A\x29\xBF\xB3\x0B\x63"
"\x43\x27\x13\xA9\xBE\xEB\xBD\xF3"
"\x33\x62\x70\xE2\x1B\x86\x7A\xA1"
"\x51\x4A\x16\xFE\x29\x63\x7E\xD0"
"\x7A\xA4\x6E\x2C\xF8\xC1\xDB\xE8"
"\xCB\x4D\xD2\x8C\x04\x14\xB4\x66"
"\x41\xB7\x3A\x96\x16\x7C\x1D\x5B"
"\xB6\x41\x42\x64\x43\xEE\x6E\x7C"
"\x8B\xAF\x01\x9C\xA4\x6E\x75\x8F"
"\xDE\x10\x9F\xA6\xE7\xD6\x44\x97"
"\x66\xA3\x96\x0F\x1C\x25\x60\xF5"
"\x3C\x2E\x32\x69\x0E\x82\xFF\x27"
"\x0F\xB5\x06\xDA\xD8\x31\x15\x6C"
"\xDF\x18\x6C\x87\xF5\x3B\x11\x9A"
"\x1B\x42\x1F\x5B\x29\x19\x96\x13"
"\x68\x2E\x5E\x08\x1C\x8F\x32\x4B"
"\x81\x77\x6D\xF4\xA0\x01\x42\xEC"
"\xDD\x5B\xFD\x3A\x8E\x6A\x14\xFB"
"\x83\x54\xDF\x0F\x86\xB7\xEA\x40"
"\x46\x39\xF7\x2A\x89\x8D\x4E\x96"
"\x5F\x5F\x6D\x76\xC6\x13\x9D\x3D"
"\x1D\x5F\x0C\x7D\xE2\xBC\xC2\x16"
"\x16\xBE\x89\x3E\xB0\x61\xA2\x5D"
"\xAF\xD1\x40\x5F\x1A\xB8\x26\x41"
"\xC6\xBD\x36\xEF\xED\x29\x50\x6D"
"\x10\xEF\x26\xE8\xA8\x93\x11\x3F"
"\x2D\x1F\x88\x20\x77\x45\xF5\x66"
"\x08\xB9\xF1\xEF\xB1\x93\xA8\x81"
"\x65\xC5\xCD\x3E\x8C\x06\x60\x2C"
"\xB2\x10\x7A\xCA\x05\x25\x59\xDB"
"\xC7\x28\xF5\x20\x35\x52\x9E\x62"
"\xF8\x88\x24\x1C\x4D\x84\x12\x39"
"\x39\xE4\x2E\xF4\xD4\x9D\x2B\xBC"
"\x87\x66\xE6\xC0\x6B\x31\x9A\x66"
"\x03\xDC\x95\xD8\x6B\xD0\x30\x8F"
"\xDF\x8F\x8D\xFA\xEC\x1F\x08\xBD"
"\xA3\x63\xE2\x71\x4F\x03\x94\x87"
"\x50\xDF\x15\x1F\xED\x3A\xA3\x7F"
"\x1F\x2A\xB5\xA1\x69\xAC\x4B\x0D"
"\x84\x9B\x2A\xE9\x55\xDD\x46\x91"
"\x15\x33\xF3\x2B\x9B\x46\x97\x00"
"\xF0\x29\xD8\x59\x5D\x33\x37\xF9"
"\x58\x33\x9B\x78\xC7\x58\x48\x6B"
"\x2C\x75\x64\xC4\xCA\xC1\x7E\xD5",
.ilen = 496,
.result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
.rlen = 496,
.also_non_np = 1,
.np = 2,
.tap = { 496 - 16, 16 },
},
};
static struct cipher_testvec tf_cbc_enc_tv_template[] = {
{ /* Generated with Nettle */
.key = zeroed_string,
.klen = 16,
.iv = zeroed_string,
.input = zeroed_string,
.ilen = 16,
.result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
"\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
.rlen = 16,
}, {
.key = zeroed_string,
.klen = 16,
.iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
"\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
.input = zeroed_string,
.ilen = 16,
.result = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
"\x86\xcb\x08\x6b\x78\x9f\x54\x19",
.rlen = 16,
}, {
.key = zeroed_string,
.klen = 16,
.iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
"\x86\xcb\x08\x6b\x78\x9f\x54\x19",
.input = zeroed_string,
.ilen = 16,
.result = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
"\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
.rlen = 16,
}, {
.key = zeroed_string,
.klen = 16,
.iv = zeroed_string,
.input = zeroed_string,
.ilen = 48,
.result = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
"\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
"\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
"\x86\xcb\x08\x6b\x78\x9f\x54\x19"
"\x05\xef\x8c\x61\xa8\x11\x58\x26"
"\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
.rlen = 48,
}, { /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
"\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
.input = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
.ilen = 496,
.result = "\xC8\xFF\xF2\x53\xA6\x27\x09\xD1"
"\x33\x38\xC2\xC0\x0C\x14\x7E\xB5"
"\x26\x1B\x05\x0C\x05\x12\x3F\xC0"
"\xF9\x1C\x02\x28\x40\x96\x6F\xD0"
"\x3D\x32\xDF\xDA\x56\x00\x6E\xEE"
"\x5B\x2A\x72\x9D\xC2\x4D\x19\xBC"
"\x8C\x53\xFA\x87\x6F\xDD\x81\xA3"
"\xB1\xD3\x44\x65\xDF\xE7\x63\x38"
"\x4A\xFC\xDC\xEC\x3F\x26\x8E\xB8"
"\x43\xFC\xFE\x18\xB5\x11\x6D\x31"
"\x81\x8B\x0D\x75\xF6\x80\xEC\x84"
"\x04\xB9\xE6\x09\x63\xED\x39\xDB"
"\xC3\xF6\x14\xD6\x6E\x5E\x8B\xBD"
"\x3E\xFA\xD7\x98\x50\x6F\xD9\x63"
"\x02\xCD\x0D\x39\x4B\x0D\xEC\x80"
"\xE3\x6A\x17\xF4\xCC\xAD\xFF\x68"
"\x45\xDD\xC8\x83\x1D\x41\x96\x0D"
"\x91\x2E\x05\xD3\x59\x82\xE0\x43"
"\x90\x4F\xB9\xF7\xAD\x6B\x2E\xAF"
"\xA7\x84\x00\x53\xCD\x6F\xD1\x0C"
"\x4E\xF9\x5A\x23\xFB\xCA\xC7\xD3"
"\xA9\xAA\x9D\xB2\x3F\x66\xF1\xAC"
"\x25\x21\x8F\xF7\xEF\xF2\x6A\xDF"
"\xE8\xDA\x75\x1A\x8A\xF1\xDD\x38"
"\x1F\xF9\x3D\x68\x4A\xBB\x9E\x34"
"\x1F\x66\x1F\x9C\x2B\x54\xFF\x60"
"\x7F\x29\x4B\x55\x80\x8F\x4E\xA7"
"\xA6\x9A\x0A\xD9\x0D\x19\x00\xF8"
"\x1F\xBC\x0C\x40\x6B\xEC\x99\x25"
"\x94\x70\x74\x0E\x1D\xC5\xBC\x12"
"\xF3\x42\xBE\x95\xBF\xFB\x4E\x55"
"\x9A\xB9\xCE\x14\x16\x5B\xDC\xD3"
"\x75\x42\x62\x04\x31\x1F\x95\x7C"
"\x66\x1A\x97\xDC\x2F\x40\x5C\x39"
"\x78\xE6\x02\xDB\x49\xE1\xC6\x47"
"\xC2\x78\x9A\xBB\xF3\xBE\xCB\x93"
"\xD8\xB8\xE8\xBB\x8C\xB3\x9B\xA7"
"\xC2\x89\xF3\x91\x88\x83\x3D\xF0"
"\x29\xA2\xCD\xB5\x79\x16\xC2\x40"
"\x11\x03\x8E\x9C\xFD\xC9\x43\xC4"
"\xC2\x19\xF0\x4A\x32\xEF\x0C\x2B"
"\xD3\x2B\xE9\xD4\x4C\xDE\x95\xCF"
"\x04\x03\xD3\x2C\x7F\x82\xC8\xFA"
"\x0F\xD8\x7A\x39\x7B\x01\x41\x9C"
"\x78\xB6\xC9\xBF\xF9\x78\x57\x88"
"\xB1\xA5\xE1\xE0\xD9\x16\xD4\xC8"
"\xEE\xC4\xBE\x7B\x55\x59\x00\x48"
"\x1B\xBC\x14\xFA\x2A\x9D\xC9\x1C"
"\xFB\x28\x3F\x95\xDD\xB7\xD6\xCE"
"\x3A\x7F\x09\x0C\x0E\x69\x30\x7D"
"\xBC\x68\x9C\x91\x2A\x59\x57\x04"
"\xED\x1A\x1E\x00\xB1\x85\x92\x04"
"\x28\x8C\x0C\x3C\xC1\xD5\x12\xF7"
"\x4C\x3E\xB0\xE7\x86\x62\x68\x91"
"\xFC\xC4\xE2\xCE\xA6\xDC\x5E\x93"
"\x5D\x8D\x8C\x68\xB3\xB2\xB9\x64"
"\x16\xB8\xC8\x6F\xD8\xEE\x21\xBD"
"\xAC\x18\x0C\x7D\x0D\x05\xAB\xF1"
"\xFA\xDD\xE2\x48\xDF\x4C\x02\x39"
"\x69\xA1\x62\xBD\x49\x3A\x9D\x91"
"\x30\x70\x56\xA4\x37\xDD\x7C\xC0"
"\x0A\xA3\x30\x10\x26\x25\x41\x2C",
.rlen = 496,
.also_non_np = 1,
.np = 2,
.tap = { 496 - 16, 16 },
},
};
static struct cipher_testvec tf_cbc_dec_tv_template[] = {
{ /* Reverse of the first four above */
.key = zeroed_string,
.klen = 16,
.iv = zeroed_string,
.input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
"\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
.ilen = 16,
.result = zeroed_string,
.rlen = 16,
}, {
.key = zeroed_string,
.klen = 16,
.iv = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
"\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a",
.input = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
"\x86\xcb\x08\x6b\x78\x9f\x54\x19",
.ilen = 16,
.result = zeroed_string,
.rlen = 16,
}, {
.key = zeroed_string,
.klen = 16,
.iv = "\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
"\x86\xcb\x08\x6b\x78\x9f\x54\x19",
.input = "\x05\xef\x8c\x61\xa8\x11\x58\x26"
"\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
.ilen = 16,
.result = zeroed_string,
.rlen = 16,
}, {
.key = zeroed_string,
.klen = 16,
.iv = zeroed_string,
.input = "\x9f\x58\x9f\x5c\xf6\x12\x2c\x32"
"\xb6\xbf\xec\x2f\x2a\xe8\xc3\x5a"
"\xd4\x91\xdb\x16\xe7\xb1\xc3\x9e"
"\x86\xcb\x08\x6b\x78\x9f\x54\x19"
"\x05\xef\x8c\x61\xa8\x11\x58\x26"
"\x34\xba\x5c\xb7\x10\x6a\xa6\x41",
.ilen = 48,
.result = zeroed_string,
.rlen = 48,
}, { /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
"\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
.input = "\xC8\xFF\xF2\x53\xA6\x27\x09\xD1"
"\x33\x38\xC2\xC0\x0C\x14\x7E\xB5"
"\x26\x1B\x05\x0C\x05\x12\x3F\xC0"
"\xF9\x1C\x02\x28\x40\x96\x6F\xD0"
"\x3D\x32\xDF\xDA\x56\x00\x6E\xEE"
"\x5B\x2A\x72\x9D\xC2\x4D\x19\xBC"
"\x8C\x53\xFA\x87\x6F\xDD\x81\xA3"
"\xB1\xD3\x44\x65\xDF\xE7\x63\x38"
"\x4A\xFC\xDC\xEC\x3F\x26\x8E\xB8"
"\x43\xFC\xFE\x18\xB5\x11\x6D\x31"
"\x81\x8B\x0D\x75\xF6\x80\xEC\x84"
"\x04\xB9\xE6\x09\x63\xED\x39\xDB"
"\xC3\xF6\x14\xD6\x6E\x5E\x8B\xBD"
"\x3E\xFA\xD7\x98\x50\x6F\xD9\x63"
"\x02\xCD\x0D\x39\x4B\x0D\xEC\x80"
"\xE3\x6A\x17\xF4\xCC\xAD\xFF\x68"
"\x45\xDD\xC8\x83\x1D\x41\x96\x0D"
"\x91\x2E\x05\xD3\x59\x82\xE0\x43"
"\x90\x4F\xB9\xF7\xAD\x6B\x2E\xAF"
"\xA7\x84\x00\x53\xCD\x6F\xD1\x0C"
"\x4E\xF9\x5A\x23\xFB\xCA\xC7\xD3"
"\xA9\xAA\x9D\xB2\x3F\x66\xF1\xAC"
"\x25\x21\x8F\xF7\xEF\xF2\x6A\xDF"
"\xE8\xDA\x75\x1A\x8A\xF1\xDD\x38"
"\x1F\xF9\x3D\x68\x4A\xBB\x9E\x34"
"\x1F\x66\x1F\x9C\x2B\x54\xFF\x60"
"\x7F\x29\x4B\x55\x80\x8F\x4E\xA7"
"\xA6\x9A\x0A\xD9\x0D\x19\x00\xF8"
"\x1F\xBC\x0C\x40\x6B\xEC\x99\x25"
"\x94\x70\x74\x0E\x1D\xC5\xBC\x12"
"\xF3\x42\xBE\x95\xBF\xFB\x4E\x55"
"\x9A\xB9\xCE\x14\x16\x5B\xDC\xD3"
"\x75\x42\x62\x04\x31\x1F\x95\x7C"
"\x66\x1A\x97\xDC\x2F\x40\x5C\x39"
"\x78\xE6\x02\xDB\x49\xE1\xC6\x47"
"\xC2\x78\x9A\xBB\xF3\xBE\xCB\x93"
"\xD8\xB8\xE8\xBB\x8C\xB3\x9B\xA7"
"\xC2\x89\xF3\x91\x88\x83\x3D\xF0"
"\x29\xA2\xCD\xB5\x79\x16\xC2\x40"
"\x11\x03\x8E\x9C\xFD\xC9\x43\xC4"
"\xC2\x19\xF0\x4A\x32\xEF\x0C\x2B"
"\xD3\x2B\xE9\xD4\x4C\xDE\x95\xCF"
"\x04\x03\xD3\x2C\x7F\x82\xC8\xFA"
"\x0F\xD8\x7A\x39\x7B\x01\x41\x9C"
"\x78\xB6\xC9\xBF\xF9\x78\x57\x88"
"\xB1\xA5\xE1\xE0\xD9\x16\xD4\xC8"
"\xEE\xC4\xBE\x7B\x55\x59\x00\x48"
"\x1B\xBC\x14\xFA\x2A\x9D\xC9\x1C"
"\xFB\x28\x3F\x95\xDD\xB7\xD6\xCE"
"\x3A\x7F\x09\x0C\x0E\x69\x30\x7D"
"\xBC\x68\x9C\x91\x2A\x59\x57\x04"
"\xED\x1A\x1E\x00\xB1\x85\x92\x04"
"\x28\x8C\x0C\x3C\xC1\xD5\x12\xF7"
"\x4C\x3E\xB0\xE7\x86\x62\x68\x91"
"\xFC\xC4\xE2\xCE\xA6\xDC\x5E\x93"
"\x5D\x8D\x8C\x68\xB3\xB2\xB9\x64"
"\x16\xB8\xC8\x6F\xD8\xEE\x21\xBD"
"\xAC\x18\x0C\x7D\x0D\x05\xAB\xF1"
"\xFA\xDD\xE2\x48\xDF\x4C\x02\x39"
"\x69\xA1\x62\xBD\x49\x3A\x9D\x91"
"\x30\x70\x56\xA4\x37\xDD\x7C\xC0"
"\x0A\xA3\x30\x10\x26\x25\x41\x2C",
.ilen = 496,
.result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
.rlen = 496,
.also_non_np = 1,
.np = 2,
.tap = { 496 - 16, 16 },
},
};
static struct cipher_testvec tf_ctr_enc_tv_template[] = {
{ /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
"\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
.input = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
.ilen = 496,
.result = "\xDF\xDD\x69\xFA\xB0\x2E\xFD\xFE"
"\x70\x9E\xC5\x4B\xC9\xD4\xA1\x30"
"\x26\x9B\x89\xA1\xEE\x43\xE0\x52"
"\x55\x17\x4E\xC7\x0E\x33\x1F\xF1"
"\x9F\x8D\x40\x9F\x24\xFD\x92\xA0"
"\xBC\x8F\x35\xDD\x67\x38\xD8\xAA"
"\xCF\xF8\x48\xCA\xFB\xE4\x5C\x60"
"\x01\x41\x21\x12\x38\xAB\x52\x4F"
"\xA8\x57\x20\xE0\x21\x6A\x17\x0D"
"\x0E\xF9\x8E\x49\x42\x00\x3C\x94"
"\x14\xC0\xD0\x8D\x8A\x98\xEB\x29"
"\xEC\xAE\x96\x44\xC0\x3C\x48\xDC"
"\x29\x35\x25\x2F\xE7\x11\x6C\x68"
"\xC8\x67\x0A\x2F\xF4\x07\xBE\xF9"
"\x2C\x31\x87\x40\xAB\xB2\xB6\xFA"
"\xD2\xC9\x6D\x5C\x50\xE9\xE6\x7E"
"\xE3\x0A\xD2\xD5\x6D\x8D\x64\x9E"
"\x70\xCE\x03\x76\xDD\xE0\xF0\x8C"
"\x84\x86\x8B\x6A\xFE\xC7\xF9\x69"
"\x2E\xFE\xFC\xC2\xC4\x1A\x55\x58"
"\xB3\xBE\xE2\x7E\xED\x39\x42\x6C"
"\xB4\x42\x97\x9A\xEC\xE1\x0A\x06"
"\x02\xC5\x03\x9D\xC4\x48\x15\x66"
"\x35\x6A\xC2\xC9\xA2\x26\x30\xBB"
"\xDB\x2D\xC8\x08\x2B\xA0\x29\x1A"
"\x23\x61\x48\xEA\x80\x04\x27\xAA"
"\x69\x49\xE8\xE8\x4A\x83\x6B\x5A"
"\xCA\x7C\xD3\xB1\xB5\x0B\xCC\x23"
"\x74\x1F\xA9\x87\xCD\xED\xC0\x2D"
"\xBF\xEB\xCF\x16\x2D\x2A\x2E\x1D"
"\x96\xBA\x36\x11\x45\x41\xDA\xCE"
"\xA4\x48\x80\x8B\x06\xF4\x98\x89"
"\x8B\x23\x08\x53\xF4\xD4\x5A\x24"
"\x8B\xF8\x43\x73\xD1\xEE\xC4\xB0"
"\xF8\xFE\x09\x0C\x75\x05\x38\x0B"
"\x7C\x81\xDE\x9D\xE4\x61\x37\x63"
"\x63\xAD\x12\xD2\x04\xB9\xCE\x45"
"\x5A\x1A\x6E\xB3\x78\x2A\xA4\x74"
"\x86\xD0\xE3\xFF\xDA\x38\x9C\xB5"
"\xB8\xB1\xDB\x38\x2F\xC5\x6A\xB4"
"\xEB\x6E\x96\xE8\x43\x80\xB5\x51"
"\x61\x2D\x48\xAA\x07\x65\x11\x8C"
"\x48\xE3\x90\x7E\x78\x3A\xEC\x97"
"\x05\x3D\x84\xE7\x90\x2B\xAA\xBD"
"\x83\x29\x0E\x1A\x81\x73\x7B\xE0"
"\x7A\x01\x4A\x37\x3B\x77\x7F\x8D"
"\x49\xA4\x2F\x6E\xBE\x68\x99\x08"
"\x99\xAA\x4C\x12\x04\xAE\x1F\x77"
"\x35\x88\xF1\x65\x06\x0A\x0B\x4D"
"\x47\xF9\x50\x38\x5D\x71\xF9\x6E"
"\xDE\xEC\x61\x35\x2C\x4C\x96\x50"
"\xE8\x28\x93\x9C\x7E\x01\xC6\x04"
"\xB2\xD6\xBC\x6C\x17\xEB\xC1\x7D"
"\x11\xE9\x43\x83\x76\xAA\x53\x37"
"\x0C\x1D\x39\x89\x53\x72\x09\x7E"
"\xD9\x85\x16\x04\xA5\x2C\x05\x6F"
"\x17\x0C\x6E\x66\xAA\x84\xA7\xD9"
"\xE2\xD9\xC4\xEB\x43\x3E\xB1\x8D"
"\x7C\x36\xC7\x71\x70\x9C\x10\xD8"
"\xE8\x47\x2A\x4D\xFD\xA1\xBC\xE3"
"\xB9\x32\xE2\xC1\x82\xAC\xFE\xCC"
"\xC5\xC9\x7F\x9E\xCF\x33\x7A\xDF",
.rlen = 496,
}, { /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD",
.input = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
.ilen = 496,
.result = "\xEB\x44\xAF\x49\x27\xB8\xFB\x44"
"\x4C\xA6\xC3\x0C\x8B\xD0\x01\x0C"
"\x53\xC8\x16\x38\xDE\x40\x4F\x91"
"\x25\x6D\x4C\xA0\x9A\x87\x1E\xDA"
"\x88\x7E\x89\xE9\x67\x2B\x83\xA2"
"\x5F\x2E\x23\x3E\x45\xB9\x77\x7B"
"\xA6\x7E\x47\x36\x81\x9F\x9B\xF3"
"\xE0\xF0\xD7\x47\xA9\xC8\xEF\x33"
"\x0C\x43\xFE\x67\x50\x0A\x2C\x3E"
"\xA0\xE1\x25\x8E\x80\x07\x4A\xC0"
"\x64\x89\x9F\x6A\x27\x96\x07\xA6"
"\x9B\xC8\x1B\x21\x60\xAE\x5D\x01"
"\xE2\xCD\xC8\xAA\x6C\x9D\x1C\x34"
"\x39\x18\x09\xA4\x82\x59\x78\xE7"
"\xFC\x59\x65\xF2\x94\xFF\xFB\xE2"
"\x3C\xDA\xB1\x90\x95\xBF\x91\xE3"
"\xE6\x87\x31\x9E\x16\x85\xAD\xB1"
"\x4C\xAE\x43\x4D\x19\x58\xB5\x5E"
"\x2E\xF5\x09\xAA\x39\xF4\xC0\xB3"
"\xD4\x4D\xDB\x73\x7A\xD4\xF1\xBF"
"\x89\x16\x4D\x2D\xA2\x26\x33\x72"
"\x18\x33\x7E\xD6\xD2\x16\xA4\x54"
"\xF4\x8C\xB3\x52\xDF\x21\x9C\xEB"
"\xBF\x49\xD3\xF9\x05\x06\xCB\xD2"
"\xA9\xD2\x3B\x6E\x19\x8C\xBC\x19"
"\xAB\x89\xD6\xD8\xCD\x56\x89\x5E"
"\xAC\x00\xE3\x50\x63\x4A\x80\x9A"
"\x05\xBC\x50\x39\xD3\x32\xD9\x0D"
"\xE3\x20\x0D\x75\x54\xEC\xE6\x31"
"\x14\xB9\x3A\x59\x00\x43\x37\x8E"
"\x8C\x5A\x79\x62\x14\x76\x8A\xAE"
"\x8F\xCC\xA1\x6C\x38\x78\xDD\x2D"
"\x8B\x6D\xEA\xBD\x7B\x25\xFF\x60"
"\xC9\x87\xB1\x79\x1E\xA5\x86\x68"
"\x81\xB4\xE2\xC1\x05\x7D\x3A\x73"
"\xD0\xDA\x75\x77\x9E\x05\x27\xF1"
"\x08\xA9\x66\x64\x6C\xBC\x82\x17"
"\x2C\x23\x5F\x62\x4D\x02\x1A\x58"
"\xE7\xB7\x23\x6D\xE2\x20\xDA\xEF"
"\xB4\xB3\x3F\xB2\x2B\x69\x98\x83"
"\x95\x87\x13\x57\x60\xD7\xB5\xB1"
"\xEE\x0A\x2F\x95\x36\x4C\x76\x5D"
"\x5F\xD9\x19\xED\xB9\xA5\x48\xBF"
"\xC8\xAB\x0F\x71\xCC\x61\x8E\x0A"
"\xD0\x29\x44\xA8\xB9\xC1\xE8\xC8"
"\xC9\xA8\x28\x81\xFB\x50\xF2\xF0"
"\x26\xAE\x39\xB8\x91\xCD\xA8\xAC"
"\xDE\x55\x1B\x50\x14\x53\x44\x17"
"\x54\x46\xFC\xB1\xE4\x07\x6B\x9A"
"\x01\x14\xF0\x2E\x2E\xDB\x46\x1B"
"\x1A\x09\x97\xA9\xB6\x97\x79\x06"
"\xFB\xCB\x85\xCF\xDD\xA1\x41\xB1"
"\x00\xAA\xF7\xE0\x89\x73\xFB\xE5"
"\xBF\x84\xDB\xC9\xCD\xC4\xA2\x0D"
"\x3B\xAC\xF9\xDF\x96\xBF\x88\x23"
"\x41\x67\xA1\x24\x99\x7E\xCC\x9B"
"\x02\x8F\x6A\x49\xF6\x25\xBA\x7A"
"\xF4\x78\xFD\x79\x62\x63\x4F\x14"
"\xD6\x11\x11\x04\x05\x5F\x7E\xEA"
"\x4C\xB6\xF8\xF4\x5F\x48\x52\x54"
"\x94\x63\xA8\x4E\xCF\xD2\x1B\x1B"
"\x22\x18\x6A\xAF\x6E\x3E\xE1\x0D",
.rlen = 496,
}, { /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
"\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
.input = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
"\x2B\xC2\x59",
.ilen = 499,
.result = "\xDF\xDD\x69\xFA\xB0\x2E\xFD\xFE"
"\x70\x9E\xC5\x4B\xC9\xD4\xA1\x30"
"\x26\x9B\x89\xA1\xEE\x43\xE0\x52"
"\x55\x17\x4E\xC7\x0E\x33\x1F\xF1"
"\x9F\x8D\x40\x9F\x24\xFD\x92\xA0"
"\xBC\x8F\x35\xDD\x67\x38\xD8\xAA"
"\xCF\xF8\x48\xCA\xFB\xE4\x5C\x60"
"\x01\x41\x21\x12\x38\xAB\x52\x4F"
"\xA8\x57\x20\xE0\x21\x6A\x17\x0D"
"\x0E\xF9\x8E\x49\x42\x00\x3C\x94"
"\x14\xC0\xD0\x8D\x8A\x98\xEB\x29"
"\xEC\xAE\x96\x44\xC0\x3C\x48\xDC"
"\x29\x35\x25\x2F\xE7\x11\x6C\x68"
"\xC8\x67\x0A\x2F\xF4\x07\xBE\xF9"
"\x2C\x31\x87\x40\xAB\xB2\xB6\xFA"
"\xD2\xC9\x6D\x5C\x50\xE9\xE6\x7E"
"\xE3\x0A\xD2\xD5\x6D\x8D\x64\x9E"
"\x70\xCE\x03\x76\xDD\xE0\xF0\x8C"
"\x84\x86\x8B\x6A\xFE\xC7\xF9\x69"
"\x2E\xFE\xFC\xC2\xC4\x1A\x55\x58"
"\xB3\xBE\xE2\x7E\xED\x39\x42\x6C"
"\xB4\x42\x97\x9A\xEC\xE1\x0A\x06"
"\x02\xC5\x03\x9D\xC4\x48\x15\x66"
"\x35\x6A\xC2\xC9\xA2\x26\x30\xBB"
"\xDB\x2D\xC8\x08\x2B\xA0\x29\x1A"
"\x23\x61\x48\xEA\x80\x04\x27\xAA"
"\x69\x49\xE8\xE8\x4A\x83\x6B\x5A"
"\xCA\x7C\xD3\xB1\xB5\x0B\xCC\x23"
"\x74\x1F\xA9\x87\xCD\xED\xC0\x2D"
"\xBF\xEB\xCF\x16\x2D\x2A\x2E\x1D"
"\x96\xBA\x36\x11\x45\x41\xDA\xCE"
"\xA4\x48\x80\x8B\x06\xF4\x98\x89"
"\x8B\x23\x08\x53\xF4\xD4\x5A\x24"
"\x8B\xF8\x43\x73\xD1\xEE\xC4\xB0"
"\xF8\xFE\x09\x0C\x75\x05\x38\x0B"
"\x7C\x81\xDE\x9D\xE4\x61\x37\x63"
"\x63\xAD\x12\xD2\x04\xB9\xCE\x45"
"\x5A\x1A\x6E\xB3\x78\x2A\xA4\x74"
"\x86\xD0\xE3\xFF\xDA\x38\x9C\xB5"
"\xB8\xB1\xDB\x38\x2F\xC5\x6A\xB4"
"\xEB\x6E\x96\xE8\x43\x80\xB5\x51"
"\x61\x2D\x48\xAA\x07\x65\x11\x8C"
"\x48\xE3\x90\x7E\x78\x3A\xEC\x97"
"\x05\x3D\x84\xE7\x90\x2B\xAA\xBD"
"\x83\x29\x0E\x1A\x81\x73\x7B\xE0"
"\x7A\x01\x4A\x37\x3B\x77\x7F\x8D"
"\x49\xA4\x2F\x6E\xBE\x68\x99\x08"
"\x99\xAA\x4C\x12\x04\xAE\x1F\x77"
"\x35\x88\xF1\x65\x06\x0A\x0B\x4D"
"\x47\xF9\x50\x38\x5D\x71\xF9\x6E"
"\xDE\xEC\x61\x35\x2C\x4C\x96\x50"
"\xE8\x28\x93\x9C\x7E\x01\xC6\x04"
"\xB2\xD6\xBC\x6C\x17\xEB\xC1\x7D"
"\x11\xE9\x43\x83\x76\xAA\x53\x37"
"\x0C\x1D\x39\x89\x53\x72\x09\x7E"
"\xD9\x85\x16\x04\xA5\x2C\x05\x6F"
"\x17\x0C\x6E\x66\xAA\x84\xA7\xD9"
"\xE2\xD9\xC4\xEB\x43\x3E\xB1\x8D"
"\x7C\x36\xC7\x71\x70\x9C\x10\xD8"
"\xE8\x47\x2A\x4D\xFD\xA1\xBC\xE3"
"\xB9\x32\xE2\xC1\x82\xAC\xFE\xCC"
"\xC5\xC9\x7F\x9E\xCF\x33\x7A\xDF"
"\x6C\x82\x9D",
.rlen = 499,
.also_non_np = 1,
.np = 2,
.tap = { 499 - 16, 16 },
},
};
static struct cipher_testvec tf_ctr_dec_tv_template[] = {
{ /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
"\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
.input = "\xDF\xDD\x69\xFA\xB0\x2E\xFD\xFE"
"\x70\x9E\xC5\x4B\xC9\xD4\xA1\x30"
"\x26\x9B\x89\xA1\xEE\x43\xE0\x52"
"\x55\x17\x4E\xC7\x0E\x33\x1F\xF1"
"\x9F\x8D\x40\x9F\x24\xFD\x92\xA0"
"\xBC\x8F\x35\xDD\x67\x38\xD8\xAA"
"\xCF\xF8\x48\xCA\xFB\xE4\x5C\x60"
"\x01\x41\x21\x12\x38\xAB\x52\x4F"
"\xA8\x57\x20\xE0\x21\x6A\x17\x0D"
"\x0E\xF9\x8E\x49\x42\x00\x3C\x94"
"\x14\xC0\xD0\x8D\x8A\x98\xEB\x29"
"\xEC\xAE\x96\x44\xC0\x3C\x48\xDC"
"\x29\x35\x25\x2F\xE7\x11\x6C\x68"
"\xC8\x67\x0A\x2F\xF4\x07\xBE\xF9"
"\x2C\x31\x87\x40\xAB\xB2\xB6\xFA"
"\xD2\xC9\x6D\x5C\x50\xE9\xE6\x7E"
"\xE3\x0A\xD2\xD5\x6D\x8D\x64\x9E"
"\x70\xCE\x03\x76\xDD\xE0\xF0\x8C"
"\x84\x86\x8B\x6A\xFE\xC7\xF9\x69"
"\x2E\xFE\xFC\xC2\xC4\x1A\x55\x58"
"\xB3\xBE\xE2\x7E\xED\x39\x42\x6C"
"\xB4\x42\x97\x9A\xEC\xE1\x0A\x06"
"\x02\xC5\x03\x9D\xC4\x48\x15\x66"
"\x35\x6A\xC2\xC9\xA2\x26\x30\xBB"
"\xDB\x2D\xC8\x08\x2B\xA0\x29\x1A"
"\x23\x61\x48\xEA\x80\x04\x27\xAA"
"\x69\x49\xE8\xE8\x4A\x83\x6B\x5A"
"\xCA\x7C\xD3\xB1\xB5\x0B\xCC\x23"
"\x74\x1F\xA9\x87\xCD\xED\xC0\x2D"
"\xBF\xEB\xCF\x16\x2D\x2A\x2E\x1D"
"\x96\xBA\x36\x11\x45\x41\xDA\xCE"
"\xA4\x48\x80\x8B\x06\xF4\x98\x89"
"\x8B\x23\x08\x53\xF4\xD4\x5A\x24"
"\x8B\xF8\x43\x73\xD1\xEE\xC4\xB0"
"\xF8\xFE\x09\x0C\x75\x05\x38\x0B"
"\x7C\x81\xDE\x9D\xE4\x61\x37\x63"
"\x63\xAD\x12\xD2\x04\xB9\xCE\x45"
"\x5A\x1A\x6E\xB3\x78\x2A\xA4\x74"
"\x86\xD0\xE3\xFF\xDA\x38\x9C\xB5"
"\xB8\xB1\xDB\x38\x2F\xC5\x6A\xB4"
"\xEB\x6E\x96\xE8\x43\x80\xB5\x51"
"\x61\x2D\x48\xAA\x07\x65\x11\x8C"
"\x48\xE3\x90\x7E\x78\x3A\xEC\x97"
"\x05\x3D\x84\xE7\x90\x2B\xAA\xBD"
"\x83\x29\x0E\x1A\x81\x73\x7B\xE0"
"\x7A\x01\x4A\x37\x3B\x77\x7F\x8D"
"\x49\xA4\x2F\x6E\xBE\x68\x99\x08"
"\x99\xAA\x4C\x12\x04\xAE\x1F\x77"
"\x35\x88\xF1\x65\x06\x0A\x0B\x4D"
"\x47\xF9\x50\x38\x5D\x71\xF9\x6E"
"\xDE\xEC\x61\x35\x2C\x4C\x96\x50"
"\xE8\x28\x93\x9C\x7E\x01\xC6\x04"
"\xB2\xD6\xBC\x6C\x17\xEB\xC1\x7D"
"\x11\xE9\x43\x83\x76\xAA\x53\x37"
"\x0C\x1D\x39\x89\x53\x72\x09\x7E"
"\xD9\x85\x16\x04\xA5\x2C\x05\x6F"
"\x17\x0C\x6E\x66\xAA\x84\xA7\xD9"
"\xE2\xD9\xC4\xEB\x43\x3E\xB1\x8D"
"\x7C\x36\xC7\x71\x70\x9C\x10\xD8"
"\xE8\x47\x2A\x4D\xFD\xA1\xBC\xE3"
"\xB9\x32\xE2\xC1\x82\xAC\xFE\xCC"
"\xC5\xC9\x7F\x9E\xCF\x33\x7A\xDF",
.ilen = 496,
.result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
.rlen = 496,
}, { /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD",
.input = "\xEB\x44\xAF\x49\x27\xB8\xFB\x44"
"\x4C\xA6\xC3\x0C\x8B\xD0\x01\x0C"
"\x53\xC8\x16\x38\xDE\x40\x4F\x91"
"\x25\x6D\x4C\xA0\x9A\x87\x1E\xDA"
"\x88\x7E\x89\xE9\x67\x2B\x83\xA2"
"\x5F\x2E\x23\x3E\x45\xB9\x77\x7B"
"\xA6\x7E\x47\x36\x81\x9F\x9B\xF3"
"\xE0\xF0\xD7\x47\xA9\xC8\xEF\x33"
"\x0C\x43\xFE\x67\x50\x0A\x2C\x3E"
"\xA0\xE1\x25\x8E\x80\x07\x4A\xC0"
"\x64\x89\x9F\x6A\x27\x96\x07\xA6"
"\x9B\xC8\x1B\x21\x60\xAE\x5D\x01"
"\xE2\xCD\xC8\xAA\x6C\x9D\x1C\x34"
"\x39\x18\x09\xA4\x82\x59\x78\xE7"
"\xFC\x59\x65\xF2\x94\xFF\xFB\xE2"
"\x3C\xDA\xB1\x90\x95\xBF\x91\xE3"
"\xE6\x87\x31\x9E\x16\x85\xAD\xB1"
"\x4C\xAE\x43\x4D\x19\x58\xB5\x5E"
"\x2E\xF5\x09\xAA\x39\xF4\xC0\xB3"
"\xD4\x4D\xDB\x73\x7A\xD4\xF1\xBF"
"\x89\x16\x4D\x2D\xA2\x26\x33\x72"
"\x18\x33\x7E\xD6\xD2\x16\xA4\x54"
"\xF4\x8C\xB3\x52\xDF\x21\x9C\xEB"
"\xBF\x49\xD3\xF9\x05\x06\xCB\xD2"
"\xA9\xD2\x3B\x6E\x19\x8C\xBC\x19"
"\xAB\x89\xD6\xD8\xCD\x56\x89\x5E"
"\xAC\x00\xE3\x50\x63\x4A\x80\x9A"
"\x05\xBC\x50\x39\xD3\x32\xD9\x0D"
"\xE3\x20\x0D\x75\x54\xEC\xE6\x31"
"\x14\xB9\x3A\x59\x00\x43\x37\x8E"
"\x8C\x5A\x79\x62\x14\x76\x8A\xAE"
"\x8F\xCC\xA1\x6C\x38\x78\xDD\x2D"
"\x8B\x6D\xEA\xBD\x7B\x25\xFF\x60"
"\xC9\x87\xB1\x79\x1E\xA5\x86\x68"
"\x81\xB4\xE2\xC1\x05\x7D\x3A\x73"
"\xD0\xDA\x75\x77\x9E\x05\x27\xF1"
"\x08\xA9\x66\x64\x6C\xBC\x82\x17"
"\x2C\x23\x5F\x62\x4D\x02\x1A\x58"
"\xE7\xB7\x23\x6D\xE2\x20\xDA\xEF"
"\xB4\xB3\x3F\xB2\x2B\x69\x98\x83"
"\x95\x87\x13\x57\x60\xD7\xB5\xB1"
"\xEE\x0A\x2F\x95\x36\x4C\x76\x5D"
"\x5F\xD9\x19\xED\xB9\xA5\x48\xBF"
"\xC8\xAB\x0F\x71\xCC\x61\x8E\x0A"
"\xD0\x29\x44\xA8\xB9\xC1\xE8\xC8"
"\xC9\xA8\x28\x81\xFB\x50\xF2\xF0"
"\x26\xAE\x39\xB8\x91\xCD\xA8\xAC"
"\xDE\x55\x1B\x50\x14\x53\x44\x17"
"\x54\x46\xFC\xB1\xE4\x07\x6B\x9A"
"\x01\x14\xF0\x2E\x2E\xDB\x46\x1B"
"\x1A\x09\x97\xA9\xB6\x97\x79\x06"
"\xFB\xCB\x85\xCF\xDD\xA1\x41\xB1"
"\x00\xAA\xF7\xE0\x89\x73\xFB\xE5"
"\xBF\x84\xDB\xC9\xCD\xC4\xA2\x0D"
"\x3B\xAC\xF9\xDF\x96\xBF\x88\x23"
"\x41\x67\xA1\x24\x99\x7E\xCC\x9B"
"\x02\x8F\x6A\x49\xF6\x25\xBA\x7A"
"\xF4\x78\xFD\x79\x62\x63\x4F\x14"
"\xD6\x11\x11\x04\x05\x5F\x7E\xEA"
"\x4C\xB6\xF8\xF4\x5F\x48\x52\x54"
"\x94\x63\xA8\x4E\xCF\xD2\x1B\x1B"
"\x22\x18\x6A\xAF\x6E\x3E\xE1\x0D",
.ilen = 496,
.result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7",
.rlen = 496,
}, { /* Generated with Crypto++ */
.key = "\x85\x62\x3F\x1C\xF9\xD6\x1C\xF9"
"\xD6\xB3\x90\x6D\x4A\x90\x6D\x4A"
"\x27\x04\xE1\x27\x04\xE1\xBE\x9B"
"\x78\xBE\x9B\x78\x55\x32\x0F\x55",
.klen = 32,
.iv = "\xE2\x24\x89\xEE\x53\xB8\x1D\x5F"
"\xC4\x29\x8E\xF3\x35\x9A\xFF\x64",
.input = "\xDF\xDD\x69\xFA\xB0\x2E\xFD\xFE"
"\x70\x9E\xC5\x4B\xC9\xD4\xA1\x30"
"\x26\x9B\x89\xA1\xEE\x43\xE0\x52"
"\x55\x17\x4E\xC7\x0E\x33\x1F\xF1"
"\x9F\x8D\x40\x9F\x24\xFD\x92\xA0"
"\xBC\x8F\x35\xDD\x67\x38\xD8\xAA"
"\xCF\xF8\x48\xCA\xFB\xE4\x5C\x60"
"\x01\x41\x21\x12\x38\xAB\x52\x4F"
"\xA8\x57\x20\xE0\x21\x6A\x17\x0D"
"\x0E\xF9\x8E\x49\x42\x00\x3C\x94"
"\x14\xC0\xD0\x8D\x8A\x98\xEB\x29"
"\xEC\xAE\x96\x44\xC0\x3C\x48\xDC"
"\x29\x35\x25\x2F\xE7\x11\x6C\x68"
"\xC8\x67\x0A\x2F\xF4\x07\xBE\xF9"
"\x2C\x31\x87\x40\xAB\xB2\xB6\xFA"
"\xD2\xC9\x6D\x5C\x50\xE9\xE6\x7E"
"\xE3\x0A\xD2\xD5\x6D\x8D\x64\x9E"
"\x70\xCE\x03\x76\xDD\xE0\xF0\x8C"
"\x84\x86\x8B\x6A\xFE\xC7\xF9\x69"
"\x2E\xFE\xFC\xC2\xC4\x1A\x55\x58"
"\xB3\xBE\xE2\x7E\xED\x39\x42\x6C"
"\xB4\x42\x97\x9A\xEC\xE1\x0A\x06"
"\x02\xC5\x03\x9D\xC4\x48\x15\x66"
"\x35\x6A\xC2\xC9\xA2\x26\x30\xBB"
"\xDB\x2D\xC8\x08\x2B\xA0\x29\x1A"
"\x23\x61\x48\xEA\x80\x04\x27\xAA"
"\x69\x49\xE8\xE8\x4A\x83\x6B\x5A"
"\xCA\x7C\xD3\xB1\xB5\x0B\xCC\x23"
"\x74\x1F\xA9\x87\xCD\xED\xC0\x2D"
"\xBF\xEB\xCF\x16\x2D\x2A\x2E\x1D"
"\x96\xBA\x36\x11\x45\x41\xDA\xCE"
"\xA4\x48\x80\x8B\x06\xF4\x98\x89"
"\x8B\x23\x08\x53\xF4\xD4\x5A\x24"
"\x8B\xF8\x43\x73\xD1\xEE\xC4\xB0"
"\xF8\xFE\x09\x0C\x75\x05\x38\x0B"
"\x7C\x81\xDE\x9D\xE4\x61\x37\x63"
"\x63\xAD\x12\xD2\x04\xB9\xCE\x45"
"\x5A\x1A\x6E\xB3\x78\x2A\xA4\x74"
"\x86\xD0\xE3\xFF\xDA\x38\x9C\xB5"
"\xB8\xB1\xDB\x38\x2F\xC5\x6A\xB4"
"\xEB\x6E\x96\xE8\x43\x80\xB5\x51"
"\x61\x2D\x48\xAA\x07\x65\x11\x8C"
"\x48\xE3\x90\x7E\x78\x3A\xEC\x97"
"\x05\x3D\x84\xE7\x90\x2B\xAA\xBD"
"\x83\x29\x0E\x1A\x81\x73\x7B\xE0"
"\x7A\x01\x4A\x37\x3B\x77\x7F\x8D"
"\x49\xA4\x2F\x6E\xBE\x68\x99\x08"
"\x99\xAA\x4C\x12\x04\xAE\x1F\x77"
"\x35\x88\xF1\x65\x06\x0A\x0B\x4D"
"\x47\xF9\x50\x38\x5D\x71\xF9\x6E"
"\xDE\xEC\x61\x35\x2C\x4C\x96\x50"
"\xE8\x28\x93\x9C\x7E\x01\xC6\x04"
"\xB2\xD6\xBC\x6C\x17\xEB\xC1\x7D"
"\x11\xE9\x43\x83\x76\xAA\x53\x37"
"\x0C\x1D\x39\x89\x53\x72\x09\x7E"
"\xD9\x85\x16\x04\xA5\x2C\x05\x6F"
"\x17\x0C\x6E\x66\xAA\x84\xA7\xD9"
"\xE2\xD9\xC4\xEB\x43\x3E\xB1\x8D"
"\x7C\x36\xC7\x71\x70\x9C\x10\xD8"
"\xE8\x47\x2A\x4D\xFD\xA1\xBC\xE3"
"\xB9\x32\xE2\xC1\x82\xAC\xFE\xCC"
"\xC5\xC9\x7F\x9E\xCF\x33\x7A\xDF"
"\x6C\x82\x9D",
.ilen = 499,
.result = "\x56\xED\x84\x1B\x8F\x26\xBD\x31"
"\xC8\x5F\xF6\x6A\x01\x98\x0C\xA3"
"\x3A\xD1\x45\xDC\x73\x0A\x7E\x15"
"\xAC\x20\xB7\x4E\xE5\x59\xF0\x87"
"\x1E\x92\x29\xC0\x34\xCB\x62\xF9"
"\x6D\x04\x9B\x0F\xA6\x3D\xD4\x48"
"\xDF\x76\x0D\x81\x18\xAF\x23\xBA"
"\x51\xE8\x5C\xF3\x8A\x21\x95\x2C"
"\xC3\x37\xCE\x65\xFC\x70\x07\x9E"
"\x12\xA9\x40\xD7\x4B\xE2\x79\x10"
"\x84\x1B\xB2\x26\xBD\x54\xEB\x5F"
"\xF6\x8D\x01\x98\x2F\xC6\x3A\xD1"
"\x68\xFF\x73\x0A\xA1\x15\xAC\x43"
"\xDA\x4E\xE5\x7C\x13\x87\x1E\xB5"
"\x29\xC0\x57\xEE\x62\xF9\x90\x04"
"\x9B\x32\xC9\x3D\xD4\x6B\x02\x76"
"\x0D\xA4\x18\xAF\x46\xDD\x51\xE8"
"\x7F\x16\x8A\x21\xB8\x2C\xC3\x5A"
"\xF1\x65\xFC\x93\x07\x9E\x35\xCC"
"\x40\xD7\x6E\x05\x79\x10\xA7\x1B"
"\xB2\x49\xE0\x54\xEB\x82\x19\x8D"
"\x24\xBB\x2F\xC6\x5D\xF4\x68\xFF"
"\x96\x0A\xA1\x38\xCF\x43\xDA\x71"
"\x08\x7C\x13\xAA\x1E\xB5\x4C\xE3"
"\x57\xEE\x85\x1C\x90\x27\xBE\x32"
"\xC9\x60\xF7\x6B\x02\x99\x0D\xA4"
"\x3B\xD2\x46\xDD\x74\x0B\x7F\x16"
"\xAD\x21\xB8\x4F\xE6\x5A\xF1\x88"
"\x1F\x93\x2A\xC1\x35\xCC\x63\xFA"
"\x6E\x05\x9C\x10\xA7\x3E\xD5\x49"
"\xE0\x77\x0E\x82\x19\xB0\x24\xBB"
"\x52\xE9\x5D\xF4\x8B\x22\x96\x2D"
"\xC4\x38\xCF\x66\xFD\x71\x08\x9F"
"\x13\xAA\x41\xD8\x4C\xE3\x7A\x11"
"\x85\x1C\xB3\x27\xBE\x55\xEC\x60"
"\xF7\x8E\x02\x99\x30\xC7\x3B\xD2"
"\x69\x00\x74\x0B\xA2\x16\xAD\x44"
"\xDB\x4F\xE6\x7D\x14\x88\x1F\xB6"
"\x2A\xC1\x58\xEF\x63\xFA\x91\x05"
"\x9C\x33\xCA\x3E\xD5\x6C\x03\x77"
"\x0E\xA5\x19\xB0\x47\xDE\x52\xE9"
"\x80\x17\x8B\x22\xB9\x2D\xC4\x5B"
"\xF2\x66\xFD\x94\x08\x9F\x36\xCD"
"\x41\xD8\x6F\x06\x7A\x11\xA8\x1C"
"\xB3\x4A\xE1\x55\xEC\x83\x1A\x8E"
"\x25\xBC\x30\xC7\x5E\xF5\x69\x00"
"\x97\x0B\xA2\x39\xD0\x44\xDB\x72"
"\x09\x7D\x14\xAB\x1F\xB6\x4D\xE4"
"\x58\xEF\x86\x1D\x91\x28\xBF\x33"
"\xCA\x61\xF8\x6C\x03\x9A\x0E\xA5"
"\x3C\xD3\x47\xDE\x75\x0C\x80\x17"
"\xAE\x22\xB9\x50\xE7\x5B\xF2\x89"
"\x20\x94\x2B\xC2\x36\xCD\x64\xFB"
"\x6F\x06\x9D\x11\xA8\x3F\xD6\x4A"
"\xE1\x78\x0F\x83\x1A\xB1\x25\xBC"
"\x53\xEA\x5E\xF5\x8C\x00\x97\x2E"
"\xC5\x39\xD0\x67\xFE\x72\x09\xA0"
"\x14\xAB\x42\xD9\x4D\xE4\x7B\x12"
"\x86\x1D\xB4\x28\xBF\x56\xED\x61"
"\xF8\x8F\x03\x9A\x31\xC8\x3C\xD3"
"\x6A\x01\x75\x0C\xA3\x17\xAE\x45"
"\xDC\x50\xE7\x7E\x15\x89\x20\xB7"
"\x2B\xC2\x59",
.rlen = 499,
.also_non_np = 1,
.np = 2,
.tap = { 499 - 16, 16 },
},
};
static struct cipher_testvec tf_lrw_enc_tv_template[] = {
/* Generated from AES-LRW test vectors */
{
.key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
"\x4c\x26\x84\x14\xb5\x68\x01\x85"
"\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
"\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
.klen = 32,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x01",
.input = "\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x41\x42\x43\x44\x45\x46",
.ilen = 16,
.result = "\xa1\x6c\x50\x69\x26\xa4\xef\x7b"
"\x7c\xc6\x91\xeb\x72\xdd\x9b\xee",
.rlen = 16,
}, {
.key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
"\xd7\x79\xe8\x0f\x54\x88\x79\x44"
"\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
"\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
.klen = 32,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x02",
.input = "\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x41\x42\x43\x44\x45\x46",
.ilen = 16,
.result = "\xab\x72\x0a\xad\x3b\x0c\xf0\xc9"
"\x42\x2f\xf1\xae\xf1\x3c\xb1\xbd",
.rlen = 16,
}, {
.key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
"\x30\xfe\x69\xe2\x37\x7f\x98\x47"
"\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
"\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
.klen = 32,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x02\x00\x00\x00\x00",
.input = "\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x41\x42\x43\x44\x45\x46",
.ilen = 16,
.result = "\x85\xa7\x56\x67\x08\xfa\x42\xe1"
"\x22\xe6\x82\xfc\xd9\xb4\xd7\xd4",
.rlen = 16,
}, {
.key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
"\x25\x83\xf7\x3c\x1f\x01\x28\x74"
"\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
"\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
"\xad\xe4\x94\xc5\x4a\x29\xae\x70",
.klen = 40,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x01",
.input = "\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x41\x42\x43\x44\x45\x46",
.ilen = 16,
.result = "\xd2\xaf\x69\x35\x24\x1d\x0e\x1c"
"\x84\x8b\x05\xe4\xa2\x2f\x16\xf5",
.rlen = 16,
}, {
.key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
"\xf8\x86\xce\xac\x93\xc5\xad\xc6"
"\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
"\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
"\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
.klen = 40,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x02\x00\x00\x00\x00",
.input = "\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x41\x42\x43\x44\x45\x46",
.ilen = 16,
.result = "\x4a\x23\x56\xd7\xff\x90\xd0\x9a"
"\x0d\x7c\x26\xfc\xf0\xf0\xf6\xe4",
.rlen = 16,
}, {
.key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
"\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
"\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
"\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
"\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
"\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
.klen = 48,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x01",
.input = "\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x41\x42\x43\x44\x45\x46",
.ilen = 16,
.result = "\x30\xaf\x26\x05\x9d\x5d\x0a\x58"
"\xe2\xe7\xce\x8a\xb2\x56\x6d\x76",
.rlen = 16,
}, {
.key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
"\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
"\xb2\xfb\x64\xce\x60\x97\x87\x8d"
"\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
"\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
"\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
.klen = 48,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x02\x00\x00\x00\x00",
.input = "\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x41\x42\x43\x44\x45\x46",
.ilen = 16,
.result = "\xdf\xcf\xdc\xd2\xe1\xcf\x86\x75"
"\x17\x66\x5e\x0c\x14\xa1\x3d\x40",
.rlen = 16,
}, {
.key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
"\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
"\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
"\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
"\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
"\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
.klen = 48,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x01",
.input = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
"\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
"\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
"\x50\x38\x1f\x71\x49\xb6\x57\xd6"
"\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
"\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
"\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
"\xda\x10\x8e\xed\xa2\xa4\x87\xab"
"\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
"\xc9\xac\x42\x31\x95\x7c\xc9\x04"
"\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
"\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
"\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
"\x4c\x96\x12\xed\x7c\x92\x03\x01"
"\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
"\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
"\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
"\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
"\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
"\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
"\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
"\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
"\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
"\x76\x12\x73\x44\x1a\x56\xd7\x72"
"\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
"\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
"\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
"\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
"\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
"\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
"\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
"\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
"\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
"\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
"\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
"\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
"\x8d\x23\x31\x74\x84\xeb\x88\x6e"
"\xcc\xb9\xbc\x22\x83\x19\x07\x22"
"\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
"\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
"\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
"\x3c\xce\x8f\x42\x60\x71\xa7\x75"
"\x08\x40\x65\x8a\x82\xbf\xf5\x43"
"\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
"\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
"\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
"\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
"\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
"\x62\x73\x65\xfd\x46\x63\x25\x3d"
"\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
"\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
"\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
"\xc5\x68\x77\x84\x32\x2b\xcc\x85"
"\x74\x96\xf0\x12\x77\x61\xb9\xeb"
"\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
"\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
"\xda\x39\x87\x45\xc0\x2b\xbb\x01"
"\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
"\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
"\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
"\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
"\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
"\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
"\x21\xc4\xc2\x75\x67\x89\x37\x0a",
.ilen = 512,
.result = "\x30\x38\xeb\xaf\x12\x43\x1a\x89"
"\x62\xa2\x36\xe5\xcf\x77\x1e\xd9"
"\x08\xc3\x0d\xdd\x95\xab\x19\x96"
"\x27\x52\x41\xc3\xca\xfb\xf6\xee"
"\x40\x2d\xdf\xdd\x00\x0c\xb9\x0a"
"\x3a\xf0\xc0\xd1\xda\x63\x9e\x45"
"\x42\xe9\x29\xc0\xb4\x07\xb4\x31"
"\x66\x77\x72\xb5\xb6\xb3\x57\x46"
"\x34\x9a\xfe\x03\xaf\x6b\x36\x07"
"\x63\x8e\xc2\x5d\xa6\x0f\xb6\x7d"
"\xfb\x6d\x82\x51\xb6\x98\xd0\x71"
"\xe7\x10\x7a\xdf\xb2\xbd\xf1\x1d"
"\x72\x2b\x54\x13\xe3\x6d\x79\x37"
"\xa9\x39\x2c\xdf\x21\xab\x87\xd5"
"\xee\xef\x9a\x12\x50\x39\x2e\x1b"
"\x7d\xe6\x6a\x27\x48\xb9\xe7\xac"
"\xaa\xcd\x79\x5f\xf2\xf3\xa0\x08"
"\x6f\x2c\xf4\x0e\xd1\xb8\x89\x25"
"\x31\x9d\xef\xb1\x1d\x27\x55\x04"
"\xc9\x8c\xb7\x68\xdc\xb6\x67\x8a"
"\xdb\xcf\x22\xf2\x3b\x6f\xce\xbb"
"\x26\xbe\x4f\x27\x04\x42\xd1\x44"
"\x4c\x08\xa3\x95\x4c\x7f\x1a\xaf"
"\x1d\x28\x14\xfd\xb1\x1a\x34\x18"
"\xf5\x1e\x28\x69\x95\x6a\x5a\xba"
"\x8e\xb2\x58\x1d\x28\x17\x13\x3d"
"\x38\x7d\x14\x8d\xab\x5d\xf9\xe8"
"\x3c\x0f\x2b\x0d\x2b\x08\xb4\x4b"
"\x6b\x0d\xc8\xa7\x84\xc2\x3a\x1a"
"\xb7\xbd\xda\x92\x29\xb8\x5b\x5a"
"\x63\xa5\x99\x82\x09\x72\x8f\xc6"
"\xa4\x62\x24\x69\x8c\x2d\x26\x00"
"\x99\x83\x91\xd6\xc6\xcf\x57\x67"
"\x38\xea\xf2\xfc\x29\xe0\x73\x39"
"\xf9\x13\x94\x6d\xe2\x58\x28\x75"
"\x3e\xae\x71\x90\x07\x70\x1c\x38"
"\x5b\x4c\x1e\xb5\xa5\x3b\x20\xef"
"\xb1\x4c\x3e\x1a\x72\x62\xbb\x22"
"\x82\x09\xe3\x18\x3f\x4f\x48\xfc"
"\xdd\xac\xfc\xb6\x09\xdb\xd2\x7b"
"\xd6\xb7\x7e\x41\x2f\x14\xf5\x0e"
"\xc3\xac\x4a\xed\xe7\x82\xef\x31"
"\x1f\x1a\x51\x1e\x29\x60\xc8\x98"
"\x93\x51\x1d\x3d\x62\x59\x83\x82"
"\x0c\xf1\xd7\x8d\xac\x33\x44\x81"
"\x3c\x59\xb7\xd4\x5b\x65\x82\xc4"
"\xec\xdc\x24\xfd\x0e\x1a\x79\x94"
"\x34\xb0\x62\xfa\x98\x49\x26\x1f"
"\xf4\x9e\x40\x44\x5b\x1f\xf8\xbe"
"\x36\xff\xc6\xc6\x9d\xf2\xd6\xcc"
"\x63\x93\x29\xb9\x0b\x6d\xd7\x6c"
"\xdb\xf6\x21\x80\xf7\x5a\x37\x15"
"\x0c\xe3\x36\xc8\x74\x75\x20\x91"
"\xdf\x52\x2d\x0c\xe7\x45\xff\x46"
"\xb3\xf4\xec\xc2\xbd\xd3\x37\xb6"
"\x26\xa2\x5d\x7d\x61\xbf\x10\x46"
"\x57\x8d\x05\x96\x70\x0b\xd6\x41"
"\x5c\xe9\xd3\x54\x81\x39\x3a\xdd"
"\x5f\x92\x81\x6e\x35\x03\xd4\x72"
"\x3d\x5a\xe7\xb9\x3b\x0c\x84\x23"
"\x45\x5d\xec\x72\xc1\x52\xef\x2e"
"\x81\x00\xd3\xfe\x4c\x3c\x05\x61"
"\x80\x18\xc4\x6c\x03\xd3\xb7\xba"
"\x11\xd7\xb8\x6e\xea\xe1\x80\x30",
.rlen = 512,
.also_non_np = 1,
.np = 2,
.tap = { 512 - 16, 16 },
},
};
static struct cipher_testvec tf_lrw_dec_tv_template[] = {
/* Generated from AES-LRW test vectors */
/* same as enc vectors with input and result reversed */
{
.key = "\x45\x62\xac\x25\xf8\x28\x17\x6d"
"\x4c\x26\x84\x14\xb5\x68\x01\x85"
"\x25\x8e\x2a\x05\xe7\x3e\x9d\x03"
"\xee\x5a\x83\x0c\xcc\x09\x4c\x87",
.klen = 32,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x01",
.input = "\xa1\x6c\x50\x69\x26\xa4\xef\x7b"
"\x7c\xc6\x91\xeb\x72\xdd\x9b\xee",
.ilen = 16,
.result = "\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x41\x42\x43\x44\x45\x46",
.rlen = 16,
}, {
.key = "\x59\x70\x47\x14\xf5\x57\x47\x8c"
"\xd7\x79\xe8\x0f\x54\x88\x79\x44"
"\x0d\x48\xf0\xb7\xb1\x5a\x53\xea"
"\x1c\xaa\x6b\x29\xc2\xca\xfb\xaf",
.klen = 32,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x02",
.input = "\xab\x72\x0a\xad\x3b\x0c\xf0\xc9"
"\x42\x2f\xf1\xae\xf1\x3c\xb1\xbd",
.ilen = 16,
.result = "\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x41\x42\x43\x44\x45\x46",
.rlen = 16,
}, {
.key = "\xd8\x2a\x91\x34\xb2\x6a\x56\x50"
"\x30\xfe\x69\xe2\x37\x7f\x98\x47"
"\xcd\xf9\x0b\x16\x0c\x64\x8f\xb6"
"\xb0\x0d\x0d\x1b\xae\x85\x87\x1f",
.klen = 32,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x02\x00\x00\x00\x00",
.input = "\x85\xa7\x56\x67\x08\xfa\x42\xe1"
"\x22\xe6\x82\xfc\xd9\xb4\xd7\xd4",
.ilen = 16,
.result = "\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x41\x42\x43\x44\x45\x46",
.rlen = 16,
}, {
.key = "\x0f\x6a\xef\xf8\xd3\xd2\xbb\x15"
"\x25\x83\xf7\x3c\x1f\x01\x28\x74"
"\xca\xc6\xbc\x35\x4d\x4a\x65\x54"
"\x90\xae\x61\xcf\x7b\xae\xbd\xcc"
"\xad\xe4\x94\xc5\x4a\x29\xae\x70",
.klen = 40,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x01",
.input = "\xd2\xaf\x69\x35\x24\x1d\x0e\x1c"
"\x84\x8b\x05\xe4\xa2\x2f\x16\xf5",
.ilen = 16,
.result = "\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x41\x42\x43\x44\x45\x46",
.rlen = 16,
}, {
.key = "\x8a\xd4\xee\x10\x2f\xbd\x81\xff"
"\xf8\x86\xce\xac\x93\xc5\xad\xc6"
"\xa0\x19\x07\xc0\x9d\xf7\xbb\xdd"
"\x52\x13\xb2\xb7\xf0\xff\x11\xd8"
"\xd6\x08\xd0\xcd\x2e\xb1\x17\x6f",
.klen = 40,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x02\x00\x00\x00\x00",
.input = "\x4a\x23\x56\xd7\xff\x90\xd0\x9a"
"\x0d\x7c\x26\xfc\xf0\xf0\xf6\xe4",
.ilen = 16,
.result = "\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x41\x42\x43\x44\x45\x46",
.rlen = 16,
}, {
.key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
"\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
"\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
"\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
"\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
"\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
.klen = 48,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x01",
.input = "\x30\xaf\x26\x05\x9d\x5d\x0a\x58"
"\xe2\xe7\xce\x8a\xb2\x56\x6d\x76",
.ilen = 16,
.result = "\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x41\x42\x43\x44\x45\x46",
.rlen = 16,
}, {
.key = "\xfb\x76\x15\xb2\x3d\x80\x89\x1d"
"\xd4\x70\x98\x0b\xc7\x95\x84\xc8"
"\xb2\xfb\x64\xce\x60\x97\x87\x8d"
"\x17\xfc\xe4\x5a\x49\xe8\x30\xb7"
"\x6e\x78\x17\xe7\x2d\x5e\x12\xd4"
"\x60\x64\x04\x7a\xf1\x2f\x9e\x0c",
.klen = 48,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x02\x00\x00\x00\x00",
.input = "\xdf\xcf\xdc\xd2\xe1\xcf\x86\x75"
"\x17\x66\x5e\x0c\x14\xa1\x3d\x40",
.ilen = 16,
.result = "\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x41\x42\x43\x44\x45\x46",
.rlen = 16,
}, {
.key = "\xf8\xd4\x76\xff\xd6\x46\xee\x6c"
"\x23\x84\xcb\x1c\x77\xd6\x19\x5d"
"\xfe\xf1\xa9\xf3\x7b\xbc\x8d\x21"
"\xa7\x9c\x21\xf8\xcb\x90\x02\x89"
"\xa8\x45\x34\x8e\xc8\xc5\xb5\xf1"
"\x26\xf5\x0e\x76\xfe\xfd\x1b\x1e",
.klen = 48,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x01",
.input = "\x30\x38\xeb\xaf\x12\x43\x1a\x89"
"\x62\xa2\x36\xe5\xcf\x77\x1e\xd9"
"\x08\xc3\x0d\xdd\x95\xab\x19\x96"
"\x27\x52\x41\xc3\xca\xfb\xf6\xee"
"\x40\x2d\xdf\xdd\x00\x0c\xb9\x0a"
"\x3a\xf0\xc0\xd1\xda\x63\x9e\x45"
"\x42\xe9\x29\xc0\xb4\x07\xb4\x31"
"\x66\x77\x72\xb5\xb6\xb3\x57\x46"
"\x34\x9a\xfe\x03\xaf\x6b\x36\x07"
"\x63\x8e\xc2\x5d\xa6\x0f\xb6\x7d"
"\xfb\x6d\x82\x51\xb6\x98\xd0\x71"
"\xe7\x10\x7a\xdf\xb2\xbd\xf1\x1d"
"\x72\x2b\x54\x13\xe3\x6d\x79\x37"
"\xa9\x39\x2c\xdf\x21\xab\x87\xd5"
"\xee\xef\x9a\x12\x50\x39\x2e\x1b"
"\x7d\xe6\x6a\x27\x48\xb9\xe7\xac"
"\xaa\xcd\x79\x5f\xf2\xf3\xa0\x08"
"\x6f\x2c\xf4\x0e\xd1\xb8\x89\x25"
"\x31\x9d\xef\xb1\x1d\x27\x55\x04"
"\xc9\x8c\xb7\x68\xdc\xb6\x67\x8a"
"\xdb\xcf\x22\xf2\x3b\x6f\xce\xbb"
"\x26\xbe\x4f\x27\x04\x42\xd1\x44"
"\x4c\x08\xa3\x95\x4c\x7f\x1a\xaf"
"\x1d\x28\x14\xfd\xb1\x1a\x34\x18"
"\xf5\x1e\x28\x69\x95\x6a\x5a\xba"
"\x8e\xb2\x58\x1d\x28\x17\x13\x3d"
"\x38\x7d\x14\x8d\xab\x5d\xf9\xe8"
"\x3c\x0f\x2b\x0d\x2b\x08\xb4\x4b"
"\x6b\x0d\xc8\xa7\x84\xc2\x3a\x1a"
"\xb7\xbd\xda\x92\x29\xb8\x5b\x5a"
"\x63\xa5\x99\x82\x09\x72\x8f\xc6"
"\xa4\x62\x24\x69\x8c\x2d\x26\x00"
"\x99\x83\x91\xd6\xc6\xcf\x57\x67"
"\x38\xea\xf2\xfc\x29\xe0\x73\x39"
"\xf9\x13\x94\x6d\xe2\x58\x28\x75"
"\x3e\xae\x71\x90\x07\x70\x1c\x38"
"\x5b\x4c\x1e\xb5\xa5\x3b\x20\xef"
"\xb1\x4c\x3e\x1a\x72\x62\xbb\x22"
"\x82\x09\xe3\x18\x3f\x4f\x48\xfc"
"\xdd\xac\xfc\xb6\x09\xdb\xd2\x7b"
"\xd6\xb7\x7e\x41\x2f\x14\xf5\x0e"
"\xc3\xac\x4a\xed\xe7\x82\xef\x31"
"\x1f\x1a\x51\x1e\x29\x60\xc8\x98"
"\x93\x51\x1d\x3d\x62\x59\x83\x82"
"\x0c\xf1\xd7\x8d\xac\x33\x44\x81"
"\x3c\x59\xb7\xd4\x5b\x65\x82\xc4"
"\xec\xdc\x24\xfd\x0e\x1a\x79\x94"
"\x34\xb0\x62\xfa\x98\x49\x26\x1f"
"\xf4\x9e\x40\x44\x5b\x1f\xf8\xbe"
"\x36\xff\xc6\xc6\x9d\xf2\xd6\xcc"
"\x63\x93\x29\xb9\x0b\x6d\xd7\x6c"
"\xdb\xf6\x21\x80\xf7\x5a\x37\x15"
"\x0c\xe3\x36\xc8\x74\x75\x20\x91"
"\xdf\x52\x2d\x0c\xe7\x45\xff\x46"
"\xb3\xf4\xec\xc2\xbd\xd3\x37\xb6"
"\x26\xa2\x5d\x7d\x61\xbf\x10\x46"
"\x57\x8d\x05\x96\x70\x0b\xd6\x41"
"\x5c\xe9\xd3\x54\x81\x39\x3a\xdd"
"\x5f\x92\x81\x6e\x35\x03\xd4\x72"
"\x3d\x5a\xe7\xb9\x3b\x0c\x84\x23"
"\x45\x5d\xec\x72\xc1\x52\xef\x2e"
"\x81\x00\xd3\xfe\x4c\x3c\x05\x61"
"\x80\x18\xc4\x6c\x03\xd3\xb7\xba"
"\x11\xd7\xb8\x6e\xea\xe1\x80\x30",
.ilen = 512,
.result = "\x05\x11\xb7\x18\xab\xc6\x2d\xac"
"\x70\x5d\xf6\x22\x94\xcd\xe5\x6c"
"\x17\x6b\xf6\x1c\xf0\xf3\x6e\xf8"
"\x50\x38\x1f\x71\x49\xb6\x57\xd6"
"\x8f\xcb\x8d\x6b\xe3\xa6\x29\x90"
"\xfe\x2a\x62\x82\xae\x6d\x8b\xf6"
"\xad\x1e\x9e\x20\x5f\x38\xbe\x04"
"\xda\x10\x8e\xed\xa2\xa4\x87\xab"
"\xda\x6b\xb4\x0c\x75\xba\xd3\x7c"
"\xc9\xac\x42\x31\x95\x7c\xc9\x04"
"\xeb\xd5\x6e\x32\x69\x8a\xdb\xa6"
"\x15\xd7\x3f\x4f\x2f\x66\x69\x03"
"\x9c\x1f\x54\x0f\xde\x1f\xf3\x65"
"\x4c\x96\x12\xed\x7c\x92\x03\x01"
"\x6f\xbc\x35\x93\xac\xf1\x27\xf1"
"\xb4\x96\x82\x5a\x5f\xb0\xa0\x50"
"\x89\xa4\x8e\x66\x44\x85\xcc\xfd"
"\x33\x14\x70\xe3\x96\xb2\xc3\xd3"
"\xbb\x54\x5a\x1a\xf9\x74\xa2\xc5"
"\x2d\x64\x75\xdd\xb4\x54\xe6\x74"
"\x8c\xd3\x9d\x9e\x86\xab\x51\x53"
"\xb7\x93\x3e\x6f\xd0\x4e\x2c\x40"
"\xf6\xa8\x2e\x3e\x9d\xf4\x66\xa5"
"\x76\x12\x73\x44\x1a\x56\xd7\x72"
"\x88\xcd\x21\x8c\x4c\x0f\xfe\xda"
"\x95\xe0\x3a\xa6\xa5\x84\x46\xcd"
"\xd5\x3e\x9d\x3a\xe2\x67\xe6\x60"
"\x1a\xe2\x70\x85\x58\xc2\x1b\x09"
"\xe1\xd7\x2c\xca\xad\xa8\x8f\xf9"
"\xac\xb3\x0e\xdb\xca\x2e\xe2\xb8"
"\x51\x71\xd9\x3c\x6c\xf1\x56\xf8"
"\xea\x9c\xf1\xfb\x0c\xe6\xb7\x10"
"\x1c\xf8\xa9\x7c\xe8\x53\x35\xc1"
"\x90\x3e\x76\x4a\x74\xa4\x21\x2c"
"\xf6\x2c\x4e\x0f\x94\x3a\x88\x2e"
"\x41\x09\x6a\x33\x7d\xf6\xdd\x3f"
"\x8d\x23\x31\x74\x84\xeb\x88\x6e"
"\xcc\xb9\xbc\x22\x83\x19\x07\x22"
"\xa5\x2d\xdf\xa5\xf3\x80\x85\x78"
"\x84\x39\x6a\x6d\x6a\x99\x4f\xa5"
"\x15\xfe\x46\xb0\xe4\x6c\xa5\x41"
"\x3c\xce\x8f\x42\x60\x71\xa7\x75"
"\x08\x40\x65\x8a\x82\xbf\xf5\x43"
"\x71\x96\xa9\x4d\x44\x8a\x20\xbe"
"\xfa\x4d\xbb\xc0\x7d\x31\x96\x65"
"\xe7\x75\xe5\x3e\xfd\x92\x3b\xc9"
"\x55\xbb\x16\x7e\xf7\xc2\x8c\xa4"
"\x40\x1d\xe5\xef\x0e\xdf\xe4\x9a"
"\x62\x73\x65\xfd\x46\x63\x25\x3d"
"\x2b\xaf\xe5\x64\xfe\xa5\x5c\xcf"
"\x24\xf3\xb4\xac\x64\xba\xdf\x4b"
"\xc6\x96\x7d\x81\x2d\x8d\x97\xf7"
"\xc5\x68\x77\x84\x32\x2b\xcc\x85"
"\x74\x96\xf0\x12\x77\x61\xb9\xeb"
"\x71\xaa\x82\xcb\x1c\xdb\x89\xc8"
"\xc6\xb5\xe3\x5c\x7d\x39\x07\x24"
"\xda\x39\x87\x45\xc0\x2b\xbb\x01"
"\xac\xbc\x2a\x5c\x7f\xfc\xe8\xce"
"\x6d\x9c\x6f\xed\xd3\xc1\xa1\xd6"
"\xc5\x55\xa9\x66\x2f\xe1\xc8\x32"
"\xa6\x5d\xa4\x3a\x98\x73\xe8\x45"
"\xa4\xc7\xa8\xb4\xf6\x13\x03\xf6"
"\xe9\x2e\xc4\x29\x0f\x84\xdb\xc4"
"\x21\xc4\xc2\x75\x67\x89\x37\x0a",
.rlen = 512,
.also_non_np = 1,
.np = 2,
.tap = { 512 - 16, 16 },
},
};
static struct cipher_testvec tf_xts_enc_tv_template[] = {
/* Generated from AES-XTS test vectors */
{
.key = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00",
.klen = 32,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00",
.input = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00",
.ilen = 32,
.result = "\x4b\xc9\x44\x4a\x11\xa3\xef\xac"
"\x30\x74\xe4\x44\x52\x77\x97\x43"
"\xa7\x60\xb2\x45\x2e\xf9\x00\x90"
"\x9f\xaa\xfd\x89\x6e\x9d\x4a\xe0",
.rlen = 32,
}, {
.key = "\x11\x11\x11\x11\x11\x11\x11\x11"
"\x11\x11\x11\x11\x11\x11\x11\x11"
"\x22\x22\x22\x22\x22\x22\x22\x22"
"\x22\x22\x22\x22\x22\x22\x22\x22",
.klen = 32,
.iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00",
.input = "\x44\x44\x44\x44\x44\x44\x44\x44"
"\x44\x44\x44\x44\x44\x44\x44\x44"
"\x44\x44\x44\x44\x44\x44\x44\x44"
"\x44\x44\x44\x44\x44\x44\x44\x44",
.ilen = 32,
.result = "\x57\x0e\x8f\xe5\x2a\x35\x61\x4f"
"\x32\xd3\xbd\x36\x05\x15\x44\x2c"
"\x58\x06\xf7\xf8\x00\xa8\xb6\xd5"
"\xc6\x28\x92\xdb\xd8\x34\xa2\xe9",
.rlen = 32,
}, {
.key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
"\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
"\x22\x22\x22\x22\x22\x22\x22\x22"
"\x22\x22\x22\x22\x22\x22\x22\x22",
.klen = 32,
.iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00",
.input = "\x44\x44\x44\x44\x44\x44\x44\x44"
"\x44\x44\x44\x44\x44\x44\x44\x44"
"\x44\x44\x44\x44\x44\x44\x44\x44"
"\x44\x44\x44\x44\x44\x44\x44\x44",
.ilen = 32,
.result = "\x96\x45\x8f\x8d\x7a\x75\xb1\xde"
"\x40\x0c\x89\x56\xf6\x4d\xa7\x07"
"\x38\xbb\x5b\xe9\xcd\x84\xae\xb2"
"\x7b\x6a\x62\xf4\x8c\xb5\x37\xea",
.rlen = 32,
}, {
.key = "\x27\x18\x28\x18\x28\x45\x90\x45"
"\x23\x53\x60\x28\x74\x71\x35\x26"
"\x31\x41\x59\x26\x53\x58\x97\x93"
"\x23\x84\x62\x64\x33\x83\x27\x95",
.klen = 32,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00",
.input = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
"\x10\x11\x12\x13\x14\x15\x16\x17"
"\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
"\x20\x21\x22\x23\x24\x25\x26\x27"
"\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
"\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
"\x40\x41\x42\x43\x44\x45\x46\x47"
"\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
"\x50\x51\x52\x53\x54\x55\x56\x57"
"\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
"\x60\x61\x62\x63\x64\x65\x66\x67"
"\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
"\x70\x71\x72\x73\x74\x75\x76\x77"
"\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
"\x80\x81\x82\x83\x84\x85\x86\x87"
"\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
"\x90\x91\x92\x93\x94\x95\x96\x97"
"\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
"\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
"\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
"\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
"\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
"\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
"\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
"\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
"\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
"\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
"\xe8\xe9\xea\xeb\xec\xed\xee\xef"
"\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
"\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
"\x10\x11\x12\x13\x14\x15\x16\x17"
"\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
"\x20\x21\x22\x23\x24\x25\x26\x27"
"\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
"\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
"\x40\x41\x42\x43\x44\x45\x46\x47"
"\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
"\x50\x51\x52\x53\x54\x55\x56\x57"
"\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
"\x60\x61\x62\x63\x64\x65\x66\x67"
"\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
"\x70\x71\x72\x73\x74\x75\x76\x77"
"\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
"\x80\x81\x82\x83\x84\x85\x86\x87"
"\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
"\x90\x91\x92\x93\x94\x95\x96\x97"
"\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
"\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
"\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
"\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
"\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
"\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
"\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
"\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
"\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
"\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
"\xe8\xe9\xea\xeb\xec\xed\xee\xef"
"\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
.ilen = 512,
.result = "\xa9\x78\xae\x1e\xea\xa2\x44\x4c"
"\xa2\x7a\x64\x1f\xaf\x46\xc1\xe0"
"\x6c\xb2\xf3\x92\x9a\xd6\x7d\x58"
"\xb8\x2d\xb9\x5d\x58\x07\x66\x50"
"\xea\x35\x35\x8c\xb2\x46\x61\x06"
"\x5d\x65\xfc\x57\x8f\x69\x74\xab"
"\x8a\x06\x69\xb5\x6c\xda\x66\xc7"
"\x52\x90\xbb\x8e\x6d\x8b\xb5\xa2"
"\x78\x1d\xc2\xa9\xc2\x73\x00\xc3"
"\x32\x36\x7c\x97\x6b\x4e\x8a\x50"
"\xe4\x91\x83\x96\x8f\xf4\x94\x1a"
"\xa6\x27\xe1\x33\xcb\x91\xc6\x5f"
"\x94\x75\xbc\xd7\x3e\x3e\x6f\x9e"
"\xa9\x31\x80\x5e\xe5\xdb\xc8\x53"
"\x01\x73\x68\x32\x25\x19\xfa\xfb"
"\xe4\xcf\xb9\x3e\xa2\xa0\x8f\x31"
"\xbf\x54\x06\x93\xa8\xb1\x0f\xb6"
"\x7c\x3c\xde\x6f\x0f\xfb\x0c\x11"
"\x39\x80\x39\x09\x97\x65\xf2\x83"
"\xae\xe6\xa1\x6f\x47\xb8\x49\xde"
"\x99\x36\x20\x7d\x97\x3b\xec\xfa"
"\xb4\x33\x6e\x7a\xc7\x46\x84\x49"
"\x91\xcd\xe1\x57\x0d\xed\x40\x08"
"\x13\xf1\x4e\x3e\xa4\xa4\x5c\xe6"
"\xd2\x0c\x20\x8f\x3e\xdf\x3f\x47"
"\x9a\x2f\xde\x6d\x66\xc9\x99\x4a"
"\x2d\x9e\x9d\x4b\x1a\x27\xa2\x12"
"\x99\xf0\xf8\xb1\xb6\xf6\x57\xc3"
"\xca\x1c\xa3\x8e\xed\x39\x28\xb5"
"\x10\x1b\x4b\x08\x42\x00\x4a\xd3"
"\xad\x5a\xc6\x8e\xc8\xbb\x95\xc4"
"\x4b\xaa\xfe\xd5\x42\xa8\xa3\x6d"
"\x3c\xf3\x34\x91\x2d\xb4\xdd\x20"
"\x0c\x90\x6d\xa3\x9b\x66\x9d\x24"
"\x02\xa6\xa9\x3f\x3f\x58\x5d\x47"
"\x24\x65\x63\x7e\xbd\x8c\xe6\x52"
"\x7d\xef\x33\x53\x63\xec\xaa\x0b"
"\x64\x15\xa9\xa6\x1f\x10\x00\x38"
"\x35\xa8\xe7\xbe\x23\x70\x22\xe0"
"\xd3\xb9\xe6\xfd\xe6\xaa\x03\x50"
"\xf3\x3c\x27\x36\x8b\xcc\xfe\x9c"
"\x9c\xa3\xb3\xe7\x68\x9b\xa2\x71"
"\xe0\x07\xd9\x1f\x68\x1f\xac\x5e"
"\x7a\x74\x85\xa9\x6a\x90\xab\x2c"
"\x38\x51\xbc\x1f\x43\x4a\x56\x1c"
"\xf8\x47\x03\x4e\x67\xa8\x1f\x99"
"\x04\x39\x73\x32\xb2\x86\x79\xe7"
"\x14\x28\x70\xb8\xe2\x7d\x69\x85"
"\xb6\x0f\xc5\xd0\xd0\x01\x5c\xe6"
"\x09\x0f\x75\xf7\xb6\x81\xd2\x11"
"\x20\x9c\xa1\xee\x11\x44\x79\xd0"
"\xb2\x34\x77\xda\x10\x9a\x6f\x6f"
"\xef\x7c\xd9\xdc\x35\xb7\x61\xdd"
"\xf1\xa4\xc6\x1c\xbf\x05\x22\xac"
"\xfe\x2f\x85\x00\x44\xdf\x33\x16"
"\x35\xb6\xa3\xd3\x70\xdf\x69\x35"
"\x6a\xc7\xb4\x99\x45\x27\xc8\x8e"
"\x5a\x14\x30\xd0\x55\x3e\x4f\x64"
"\x0d\x38\xe3\xdf\x8b\xa8\x93\x26"
"\x75\xae\xf6\xb5\x23\x0b\x17\x31"
"\xbf\x27\xb8\xb5\x94\x31\xa7\x8f"
"\x43\xc4\x46\x24\x22\x4f\x8f\x7e"
"\xe5\xf4\x6d\x1e\x0e\x18\x7a\xbb"
"\xa6\x8f\xfb\x49\x49\xd8\x7e\x5a",
.rlen = 512,
}, {
.key = "\x27\x18\x28\x18\x28\x45\x90\x45"
"\x23\x53\x60\x28\x74\x71\x35\x26"
"\x62\x49\x77\x57\x24\x70\x93\x69"
"\x99\x59\x57\x49\x66\x96\x76\x27"
"\x31\x41\x59\x26\x53\x58\x97\x93"
"\x23\x84\x62\x64\x33\x83\x27\x95"
"\x02\x88\x41\x97\x16\x93\x99\x37"
"\x51\x05\x82\x09\x74\x94\x45\x92",
.klen = 64,
.iv = "\xff\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00",
.input = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
"\x10\x11\x12\x13\x14\x15\x16\x17"
"\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
"\x20\x21\x22\x23\x24\x25\x26\x27"
"\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
"\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
"\x40\x41\x42\x43\x44\x45\x46\x47"
"\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
"\x50\x51\x52\x53\x54\x55\x56\x57"
"\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
"\x60\x61\x62\x63\x64\x65\x66\x67"
"\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
"\x70\x71\x72\x73\x74\x75\x76\x77"
"\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
"\x80\x81\x82\x83\x84\x85\x86\x87"
"\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
"\x90\x91\x92\x93\x94\x95\x96\x97"
"\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
"\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
"\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
"\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
"\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
"\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
"\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
"\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
"\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
"\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
"\xe8\xe9\xea\xeb\xec\xed\xee\xef"
"\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
"\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
"\x10\x11\x12\x13\x14\x15\x16\x17"
"\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
"\x20\x21\x22\x23\x24\x25\x26\x27"
"\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
"\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
"\x40\x41\x42\x43\x44\x45\x46\x47"
"\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
"\x50\x51\x52\x53\x54\x55\x56\x57"
"\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
"\x60\x61\x62\x63\x64\x65\x66\x67"
"\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
"\x70\x71\x72\x73\x74\x75\x76\x77"
"\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
"\x80\x81\x82\x83\x84\x85\x86\x87"
"\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
"\x90\x91\x92\x93\x94\x95\x96\x97"
"\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
"\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
"\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
"\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
"\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
"\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
"\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
"\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
"\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
"\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
"\xe8\xe9\xea\xeb\xec\xed\xee\xef"
"\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
.ilen = 512,
.result = "\xd7\x4b\x93\x7d\x13\xa2\xa2\xe1"
"\x35\x39\x71\x88\x76\x1e\xc9\xea"
"\x86\xad\xf3\x14\x48\x3d\x5e\xe9"
"\xe9\x2d\xb2\x56\x59\x35\x9d\xec"
"\x84\xfa\x7e\x9d\x6d\x33\x36\x8f"
"\xce\xf4\xa9\x21\x0b\x5f\x96\xec"
"\xcb\xf9\x57\x68\x33\x88\x39\xbf"
"\x2f\xbb\x59\x03\xbd\x66\x8b\x11"
"\x11\x65\x51\x2e\xb8\x67\x05\xd1"
"\x27\x11\x5c\xd4\xcc\x97\xc2\xb3"
"\xa9\x55\xaf\x07\x56\xd1\xdc\xf5"
"\x85\xdc\x46\xe6\xf0\x24\xeb\x93"
"\x4d\xf0\x9b\xf5\x73\x1c\xda\x03"
"\x22\xc8\x3a\x4f\xb4\x19\x91\x09"
"\x54\x0b\xf6\xfe\x17\x3d\x1a\x53"
"\x72\x60\x79\xcb\x0e\x32\x8a\x77"
"\xd5\xed\xdb\x33\xd7\x62\x16\x69"
"\x63\xe0\xab\xb5\xf6\x9c\x5f\x3d"
"\x69\x35\x61\x86\xf8\x86\xb9\x89"
"\x6e\x59\x35\xac\xf6\x6b\x33\xa0"
"\xea\xef\x96\x62\xd8\xa9\xcf\x56"
"\xbf\xdb\x8a\xfd\xa1\x82\x77\x73"
"\x3d\x94\x4a\x49\x42\x6d\x08\x60"
"\xa1\xea\xab\xb6\x88\x13\x94\xb8"
"\x51\x98\xdb\x35\x85\xdf\xf6\xb9"
"\x8f\xcd\xdf\x80\xd3\x40\x2d\x72"
"\xb8\xb2\x6c\x02\x43\x35\x22\x2a"
"\x31\xed\xcd\x16\x19\xdf\x62\x0f"
"\x29\xcf\x87\x04\xec\x02\x4f\xe4"
"\xa2\xed\x73\xc6\x69\xd3\x7e\x89"
"\x0b\x76\x10\x7c\xd6\xf9\x6a\x25"
"\xed\xcc\x60\x5d\x61\x20\xc1\x97"
"\x56\x91\x57\x28\xbe\x71\x0d\xcd"
"\xde\xc4\x9e\x55\x91\xbe\xd1\x28"
"\x9b\x90\xeb\x73\xf3\x68\x51\xc6"
"\xdf\x82\xcc\xd8\x1f\xce\x5b\x27"
"\xc0\x60\x5e\x33\xd6\xa7\x20\xea"
"\xb2\x54\xc7\x5d\x6a\x3b\x67\x47"
"\xcf\xa0\xe3\xab\x86\xaf\xc1\x42"
"\xe6\xb0\x23\x4a\xaf\x53\xdf\xa0"
"\xad\x12\x32\x31\x03\xf7\x21\xbe"
"\x2d\xd5\x82\x42\xb6\x4a\x3d\xcd"
"\xd8\x81\x77\xa9\x49\x98\x6c\x09"
"\xc5\xa3\x61\x12\x62\x85\x6b\xcd"
"\xb3\xf4\x20\x0c\x41\xc4\x05\x37"
"\x46\x5f\xeb\x71\x8b\xf1\xaf\x6e"
"\xba\xf3\x50\x2e\xfe\xa8\x37\xeb"
"\xe8\x8c\x4f\xa4\x0c\xf1\x31\xc8"
"\x6e\x71\x4f\xa5\xd7\x97\x73\xe0"
"\x93\x4a\x2f\xda\x7b\xe0\x20\x54"
"\x1f\x8d\x85\x79\x0b\x7b\x5e\x75"
"\xb9\x07\x67\xcc\xc8\xe7\x21\x15"
"\xa7\xc8\x98\xff\x4b\x80\x1c\x12"
"\xa8\x54\xe1\x38\x52\xe6\x74\x81"
"\x97\x47\xa1\x41\x0e\xc0\x50\xe3"
"\x55\x0e\xc3\xa7\x70\x77\xce\x07"
"\xed\x8c\x88\xe6\xa1\x5b\x14\xec"
"\xe6\xde\x06\x6d\x74\xc5\xd9\xfa"
"\xe5\x2f\x5a\xff\xc8\x05\xee\x27"
"\x35\x61\xbf\x0b\x19\x78\x9b\xd2"
"\x04\xc7\x05\xb1\x79\xb4\xff\x5f"
"\xf3\xea\x67\x52\x78\xc2\xce\x70"
"\xa4\x05\x0b\xb2\xb3\xa8\x30\x97"
"\x37\x30\xe1\x91\x8d\xb3\x2a\xff",
.rlen = 512,
.also_non_np = 1,
.np = 2,
.tap = { 512 - 16, 16 },
},
};
static struct cipher_testvec tf_xts_dec_tv_template[] = {
/* Generated from AES-XTS test vectors */
/* same as enc vectors with input and result reversed */
{
.key = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00",
.klen = 32,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00",
.input = "\x4b\xc9\x44\x4a\x11\xa3\xef\xac"
"\x30\x74\xe4\x44\x52\x77\x97\x43"
"\xa7\x60\xb2\x45\x2e\xf9\x00\x90"
"\x9f\xaa\xfd\x89\x6e\x9d\x4a\xe0",
.ilen = 32,
.result = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00",
.rlen = 32,
}, {
.key = "\x11\x11\x11\x11\x11\x11\x11\x11"
"\x11\x11\x11\x11\x11\x11\x11\x11"
"\x22\x22\x22\x22\x22\x22\x22\x22"
"\x22\x22\x22\x22\x22\x22\x22\x22",
.klen = 32,
.iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00",
.input = "\x57\x0e\x8f\xe5\x2a\x35\x61\x4f"
"\x32\xd3\xbd\x36\x05\x15\x44\x2c"
"\x58\x06\xf7\xf8\x00\xa8\xb6\xd5"
"\xc6\x28\x92\xdb\xd8\x34\xa2\xe9",
.ilen = 32,
.result = "\x44\x44\x44\x44\x44\x44\x44\x44"
"\x44\x44\x44\x44\x44\x44\x44\x44"
"\x44\x44\x44\x44\x44\x44\x44\x44"
"\x44\x44\x44\x44\x44\x44\x44\x44",
.rlen = 32,
}, {
.key = "\xff\xfe\xfd\xfc\xfb\xfa\xf9\xf8"
"\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf0"
"\x22\x22\x22\x22\x22\x22\x22\x22"
"\x22\x22\x22\x22\x22\x22\x22\x22",
.klen = 32,
.iv = "\x33\x33\x33\x33\x33\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00",
.input = "\x96\x45\x8f\x8d\x7a\x75\xb1\xde"
"\x40\x0c\x89\x56\xf6\x4d\xa7\x07"
"\x38\xbb\x5b\xe9\xcd\x84\xae\xb2"
"\x7b\x6a\x62\xf4\x8c\xb5\x37\xea",
.ilen = 32,
.result = "\x44\x44\x44\x44\x44\x44\x44\x44"
"\x44\x44\x44\x44\x44\x44\x44\x44"
"\x44\x44\x44\x44\x44\x44\x44\x44"
"\x44\x44\x44\x44\x44\x44\x44\x44",
.rlen = 32,
}, {
.key = "\x27\x18\x28\x18\x28\x45\x90\x45"
"\x23\x53\x60\x28\x74\x71\x35\x26"
"\x31\x41\x59\x26\x53\x58\x97\x93"
"\x23\x84\x62\x64\x33\x83\x27\x95",
.klen = 32,
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00",
.input = "\xa9\x78\xae\x1e\xea\xa2\x44\x4c"
"\xa2\x7a\x64\x1f\xaf\x46\xc1\xe0"
"\x6c\xb2\xf3\x92\x9a\xd6\x7d\x58"
"\xb8\x2d\xb9\x5d\x58\x07\x66\x50"
"\xea\x35\x35\x8c\xb2\x46\x61\x06"
"\x5d\x65\xfc\x57\x8f\x69\x74\xab"
"\x8a\x06\x69\xb5\x6c\xda\x66\xc7"
"\x52\x90\xbb\x8e\x6d\x8b\xb5\xa2"
"\x78\x1d\xc2\xa9\xc2\x73\x00\xc3"
"\x32\x36\x7c\x97\x6b\x4e\x8a\x50"
"\xe4\x91\x83\x96\x8f\xf4\x94\x1a"
"\xa6\x27\xe1\x33\xcb\x91\xc6\x5f"
"\x94\x75\xbc\xd7\x3e\x3e\x6f\x9e"
"\xa9\x31\x80\x5e\xe5\xdb\xc8\x53"
"\x01\x73\x68\x32\x25\x19\xfa\xfb"
"\xe4\xcf\xb9\x3e\xa2\xa0\x8f\x31"
"\xbf\x54\x06\x93\xa8\xb1\x0f\xb6"
"\x7c\x3c\xde\x6f\x0f\xfb\x0c\x11"
"\x39\x80\x39\x09\x97\x65\xf2\x83"
"\xae\xe6\xa1\x6f\x47\xb8\x49\xde"
"\x99\x36\x20\x7d\x97\x3b\xec\xfa"
"\xb4\x33\x6e\x7a\xc7\x46\x84\x49"
"\x91\xcd\xe1\x57\x0d\xed\x40\x08"
"\x13\xf1\x4e\x3e\xa4\xa4\x5c\xe6"
"\xd2\x0c\x20\x8f\x3e\xdf\x3f\x47"
"\x9a\x2f\xde\x6d\x66\xc9\x99\x4a"
"\x2d\x9e\x9d\x4b\x1a\x27\xa2\x12"
"\x99\xf0\xf8\xb1\xb6\xf6\x57\xc3"
"\xca\x1c\xa3\x8e\xed\x39\x28\xb5"
"\x10\x1b\x4b\x08\x42\x00\x4a\xd3"
"\xad\x5a\xc6\x8e\xc8\xbb\x95\xc4"
"\x4b\xaa\xfe\xd5\x42\xa8\xa3\x6d"
"\x3c\xf3\x34\x91\x2d\xb4\xdd\x20"
"\x0c\x90\x6d\xa3\x9b\x66\x9d\x24"
"\x02\xa6\xa9\x3f\x3f\x58\x5d\x47"
"\x24\x65\x63\x7e\xbd\x8c\xe6\x52"
"\x7d\xef\x33\x53\x63\xec\xaa\x0b"
"\x64\x15\xa9\xa6\x1f\x10\x00\x38"
"\x35\xa8\xe7\xbe\x23\x70\x22\xe0"
"\xd3\xb9\xe6\xfd\xe6\xaa\x03\x50"
"\xf3\x3c\x27\x36\x8b\xcc\xfe\x9c"
"\x9c\xa3\xb3\xe7\x68\x9b\xa2\x71"
"\xe0\x07\xd9\x1f\x68\x1f\xac\x5e"
"\x7a\x74\x85\xa9\x6a\x90\xab\x2c"
"\x38\x51\xbc\x1f\x43\x4a\x56\x1c"
"\xf8\x47\x03\x4e\x67\xa8\x1f\x99"
"\x04\x39\x73\x32\xb2\x86\x79\xe7"
"\x14\x28\x70\xb8\xe2\x7d\x69\x85"
"\xb6\x0f\xc5\xd0\xd0\x01\x5c\xe6"
"\x09\x0f\x75\xf7\xb6\x81\xd2\x11"
"\x20\x9c\xa1\xee\x11\x44\x79\xd0"
"\xb2\x34\x77\xda\x10\x9a\x6f\x6f"
"\xef\x7c\xd9\xdc\x35\xb7\x61\xdd"
"\xf1\xa4\xc6\x1c\xbf\x05\x22\xac"
"\xfe\x2f\x85\x00\x44\xdf\x33\x16"
"\x35\xb6\xa3\xd3\x70\xdf\x69\x35"
"\x6a\xc7\xb4\x99\x45\x27\xc8\x8e"
"\x5a\x14\x30\xd0\x55\x3e\x4f\x64"
"\x0d\x38\xe3\xdf\x8b\xa8\x93\x26"
"\x75\xae\xf6\xb5\x23\x0b\x17\x31"
"\xbf\x27\xb8\xb5\x94\x31\xa7\x8f"
"\x43\xc4\x46\x24\x22\x4f\x8f\x7e"
"\xe5\xf4\x6d\x1e\x0e\x18\x7a\xbb"
"\xa6\x8f\xfb\x49\x49\xd8\x7e\x5a",
.ilen = 512,
.result = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
"\x10\x11\x12\x13\x14\x15\x16\x17"
"\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
"\x20\x21\x22\x23\x24\x25\x26\x27"
"\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
"\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
"\x40\x41\x42\x43\x44\x45\x46\x47"
"\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
"\x50\x51\x52\x53\x54\x55\x56\x57"
"\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
"\x60\x61\x62\x63\x64\x65\x66\x67"
"\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
"\x70\x71\x72\x73\x74\x75\x76\x77"
"\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
"\x80\x81\x82\x83\x84\x85\x86\x87"
"\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
"\x90\x91\x92\x93\x94\x95\x96\x97"
"\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
"\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
"\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
"\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
"\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
"\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
"\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
"\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
"\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
"\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
"\xe8\xe9\xea\xeb\xec\xed\xee\xef"
"\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
"\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
"\x10\x11\x12\x13\x14\x15\x16\x17"
"\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
"\x20\x21\x22\x23\x24\x25\x26\x27"
"\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
"\x30\x31\x32\x33\x34\x35\x36\x37"
"\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
"\x40\x41\x42\x43\x44\x45\x46\x47"
"\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
"\x50\x51\x52\x53\x54\x55\x56\x57"
"\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
"\x60\x61\x62\x63\x64\x65\x66\x67"
"\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
"\x70\x71\x72\x73\x74\x75\x76\x77"
"\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
"\x80\x81\x82\x83\x84\x85\x86\x87"
"\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
"\x90\x91\x92\x93\x94\x95\x96\x97"
"\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
"\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7"
"\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
"\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7"
"\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
"\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
"\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
"\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7"
"\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
"\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7"
"\xe8\xe9\xea\xeb\xec\xed\xee\xef"
"\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
.rlen = 512,
}, {
.key = "\x27\x18\x28\x18\x28\x45\x90\x45"
"\x23\x53\x60\x28\x74\x71\x35\x26"
"\x62\x49\x77\x57\x24\x70\x93\x69"
"\x99\x59\x57\x49\x66\x96\x76\x27"
"\x31\x41\x59\x26\x53\x58\x97\x93"
"\x23\x84\x62\x64\x33\x83\x27\x95"
"\x02\x88\x41\x97\x16\x93\x99\x37"
"\x51\x05\x82\x09\x74\x94\x45\x92",
.klen = 64,
.iv = "\xff\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00",
.input = "\xd7\x4b\x93\x7d\x13\xa2\xa2\xe1"
"\x35\x39\x71\x88\x76\x1e\xc9\xea"
"\x86\xad\xf3\x14\x48\x3d\x5e\xe9"
"\xe9\x2d\xb2\x56\x59\x35\x9d\xec"
"\x84\xfa\x7e\x9d\x6d\x33\x36\x8f"
"\xce\xf4\xa9\x21\x0b\x5f\x96\xec"
"\xcb\xf9\x57\x68\x33\x88\x39\xbf"
"\x2f\xbb\x59\x03\xbd\x66\x8b\x11"
"\x11\x65\x51\x2e\xb8\x67\x05\xd1"
"\x27\x11\x5c\xd4\xcc\x97\xc2\xb3"
"\xa9\x55\xaf\x07\x56\xd1\xdc\xf5"
"\x85\xdc\x46\xe6\xf0\x24\xeb\x93"
"\x4d\xf0\x9b\xf5\x73\x1c\xda\x03"
"\x22\xc8\x3a\x4f\xb4\x19\x91\x09"
"\x54\x0b\xf6\xfe\x17\x3d\x1a\x53"
"\x72\x60\x79\xcb\x0e\x32\x8a\x77"
"\xd5\xed\xdb\x33\xd7\x62\x16\x69"
"\x63\xe0\xab\xb5\xf6\x9c\x5f\x3d"
"\x69\x35\x61\x86\xf8\x86\xb9\x89"
"\x6e\x59\x35\xac\xf6\x6b\x33\xa0"
"\xea\xef\x96\x62\xd8\xa9\xcf\x56"
"\xbf\xdb\x8a\xfd\xa1\x82\x77\x73"
"\x3d\x94\x4a\x49\x42\x6d\x08\x60"