MC3302_SDK_V1.1.9_202507281.../bsp/test/crypto/tcrypt.h
2025-11-11 12:08:31 +08:00

1247 lines
46 KiB
C
Executable File

#ifndef _CRYPTO_TCRYPT_H
#define _CRYPTO_TCRYPT_H
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
struct cipher_testvec {
const char *key;
const char *iv;
const char *ptext;
const char *ctext;
unsigned int klen;
unsigned int len;
};
struct cipher_test_info {
enum cryptodev_crypto_op_t crypt;
const struct cipher_testvec *vecs;
unsigned int count;
};
static const struct cipher_testvec aes_cbc_tv_template[] = {
{ /* From RFC 3602 */
.key = "\x06\xa9\x21\x40\x36\xb8\xa1\x5b"
"\x51\x2e\x03\xd5\x34\x12\x00\x06",
.klen = 16,
.iv = "\x3d\xaf\xba\x42\x9d\x9e\xb4\x30"
"\xb4\x22\xda\x80\x2c\x9f\xac\x41",
.ptext = "Single block msg",
.ctext = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
"\x27\x08\x94\x2d\xbe\x77\x18\x1a",
.len = 16,
}, {
.key = "\xc2\x86\x69\x6d\x88\x7c\x9a\xa0"
"\x61\x1b\xbb\x3e\x20\x25\xa4\x5a",
.klen = 16,
.iv = "\x56\x2e\x17\x99\x6d\x09\x3d\x28"
"\xdd\xb3\xba\x69\x5a\x2e\x6f\x58",
.ptext = "\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",
.ctext = "\xd2\x96\xcd\x94\xc2\xcc\xcf\x8a"
"\x3a\x86\x30\x28\xb5\xe1\xdc\x0a"
"\x75\x86\x60\x2d\x25\x3c\xff\xf9"
"\x1b\x82\x66\xbe\xa6\xd6\x1a\xb1",
.len = 32,
}, { /* From NIST SP800-38A */
.key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
"\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
"\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
.klen = 24,
.iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.ptext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
.ctext = "\x4f\x02\x1d\xb2\x43\xbc\x63\x3d"
"\x71\x78\x18\x3a\x9f\xa0\x71\xe8"
"\xb4\xd9\xad\xa9\xad\x7d\xed\xf4"
"\xe5\xe7\x38\x76\x3f\x69\x14\x5a"
"\x57\x1b\x24\x20\x12\xfb\x7a\xe0"
"\x7f\xa9\xba\xac\x3d\xf1\x02\xe0"
"\x08\xb0\xe2\x79\x88\x59\x88\x81"
"\xd9\x20\xa9\xe6\x4f\x56\x15\xcd",
.len = 64,
}, {
.key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
"\x2b\x73\xae\xf0\x85\x7d\x77\x81"
"\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
"\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
.klen = 32,
.iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.ptext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
.ctext = "\xf5\x8c\x4c\x04\xd6\xe5\xf1\xba"
"\x77\x9e\xab\xfb\x5f\x7b\xfb\xd6"
"\x9c\xfc\x4e\x96\x7e\xdb\x80\x8d"
"\x67\x9f\x77\x7b\xc6\x70\x2c\x7d"
"\x39\xf2\x33\x69\xa9\xd9\xba\xcf"
"\xa5\x30\xe2\x63\x04\x23\x14\x61"
"\xb2\xeb\x05\xe2\xc3\x9b\xe9\xfc"
"\xda\x6c\x19\x07\x8c\x6a\x9d\x1b",
.len = 64,
}, { /* Generated with Crypto++ */
.key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55"
"\x0F\x32\x55\x78\x9B\xBE\x78\x9B"
"\xBE\xE1\x04\x27\xE1\x04\x27\x4A"
"\x6D\x90\x4A\x6D\x90\xB3\xD6\xF9",
.klen = 32,
.iv = "\xE7\x82\x1D\xB8\x53\x11\xAC\x47"
"\xE2\x7D\x18\xD6\x71\x0C\xA7\x42",
.ptext = "\x50\xB9\x22\xAE\x17\x80\x0C\x75"
"\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03"
"\x6C\xF8\x61\xCA\x33\xBF\x28\x91"
"\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F"
"\xAB\x14\x7D\x09\x72\xDB\x44\xD0"
"\x39\xA2\x0B\x97\x00\x69\xF5\x5E"
"\xC7\x30\xBC\x25\x8E\x1A\x83\xEC"
"\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A"
"\x06\x6F\xD8\x41\xCD\x36\x9F\x08"
"\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9"
"\x22\x8B\x17\x80\xE9\x52\xDE\x47"
"\xB0\x19\xA5\x0E\x77\x03\x6C\xD5"
"\x3E\xCA\x33\x9C\x05\x91\xFA\x63"
"\xEF\x58\xC1\x2A\xB6\x1F\x88\x14"
"\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2"
"\x0B\x74\x00\x69\xD2\x3B\xC7\x30"
"\x99\x02\x8E\xF7\x60\xEC\x55\xBE"
"\x27\xB3\x1C\x85\x11\x7A\xE3\x4C"
"\xD8\x41\xAA\x13\x9F\x08\x71\xFD"
"\x66\xCF\x38\xC4\x2D\x96\x22\x8B"
"\xF4\x5D\xE9\x52\xBB\x24\xB0\x19"
"\x82\x0E\x77\xE0\x49\xD5\x3E\xA7"
"\x10\x9C\x05\x6E\xFA\x63\xCC\x35"
"\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6"
"\x4F\xB8\x21\xAD\x16\x7F\x0B\x74"
"\xDD\x46\xD2\x3B\xA4\x0D\x99\x02"
"\x6B\xF7\x60\xC9\x32\xBE\x27\x90"
"\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E"
"\xAA\x13\x7C\x08\x71\xDA\x43\xCF"
"\x38\xA1\x0A\x96\xFF\x68\xF4\x5D"
"\xC6\x2F\xBB\x24\x8D\x19\x82\xEB"
"\x54\xE0\x49\xB2\x1B\xA7\x10\x79"
"\x05\x6E\xD7\x40\xCC\x35\x9E\x07"
"\x93\xFC\x65\xF1\x5A\xC3\x2C\xB8"
"\x21\x8A\x16\x7F\xE8\x51\xDD\x46"
"\xAF\x18\xA4\x0D\x76\x02\x6B\xD4"
"\x3D\xC9\x32\x9B\x04\x90\xF9\x62"
"\xEE\x57\xC0\x29\xB5\x1E\x87\x13"
"\x7C\xE5\x4E\xDA\x43\xAC\x15\xA1"
"\x0A\x73\xFF\x68\xD1\x3A\xC6\x2F"
"\x98\x01\x8D\xF6\x5F\xEB\x54\xBD"
"\x26\xB2\x1B\x84\x10\x79\xE2\x4B"
"\xD7\x40\xA9\x12\x9E\x07\x70\xFC"
"\x65\xCE\x37\xC3\x2C\x95\x21\x8A"
"\xF3\x5C\xE8\x51\xBA\x23\xAF\x18"
"\x81\x0D\x76\xDF\x48\xD4\x3D\xA6"
"\x0F\x9B\x04\x6D\xF9\x62\xCB\x34"
"\xC0\x29\x92\x1E\x87\xF0\x59\xE5"
"\x4E\xB7\x20\xAC\x15\x7E\x0A\x73"
"\xDC\x45\xD1\x3A\xA3\x0C\x98\x01"
"\x6A\xF6\x5F\xC8\x31\xBD\x26\x8F"
"\x1B\x84\xED\x56\xE2\x4B\xB4\x1D"
"\xA9\x12\x7B\x07\x70\xD9\x42\xCE"
"\x37\xA0\x09\x95\xFE\x67\xF3\x5C"
"\xC5\x2E\xBA\x23\x8C\x18\x81\xEA"
"\x53\xDF\x48\xB1\x1A\xA6\x0F\x78"
"\x04\x6D\xD6\x3F\xCB\x34\x9D\x06"
"\x92\xFB\x64\xF0\x59\xC2\x2B\xB7"
"\x20\x89\x15\x7E\xE7\x50\xDC\x45"
"\xAE\x17\xA3\x0C\x75\x01\x6A\xD3"
"\x3C\xC8\x31\x9A\x03\x8F\xF8\x61"
"\xED\x56\xBF\x28\xB4\x1D\x86\x12",
.ctext = "\xEA\x65\x8A\x19\xB0\x66\xC1\x3F"
"\xCE\xF1\x97\x75\xC1\xFD\xB5\xAF"
"\x52\x65\xF7\xFF\xBC\xD8\x2D\x9F"
"\x2F\xB9\x26\x9B\x6F\x10\xB7\xB8"
"\x26\xA1\x02\x46\xA2\xAD\xC6\xC0"
"\x11\x15\xFF\x6D\x1E\x82\x04\xA6"
"\xB1\x74\xD1\x08\x13\xFD\x90\x7C"
"\xF5\xED\xD3\xDB\x5A\x0A\x0C\x2F"
"\x0A\x70\xF1\x88\x07\xCF\x21\x26"
"\x40\x40\x8A\xF5\x53\xF7\x24\x4F"
"\x83\x38\x43\x5F\x08\x99\xEB\xE3"
"\xDC\x02\x64\x67\x50\x6E\x15\xC3"
"\x01\x1A\xA0\x81\x13\x65\xA6\x73"
"\x71\xA6\x3B\x91\x83\x77\xBE\xFA"
"\xDB\x71\x73\xA6\xC1\xAE\x43\xC3"
"\x36\xCE\xD6\xEB\xF9\x30\x1C\x4F"
"\x80\x38\x5E\x9C\x6E\xAB\x98\x2F"
"\x53\xAF\xCF\xC8\x9A\xB8\x86\x43"
"\x3E\x86\xE7\xA1\xF4\x2F\x30\x40"
"\x03\xA8\x6C\x50\x42\x9F\x77\x59"
"\x89\xA0\xC5\xEC\x9A\xB8\xDD\x99"
"\x16\x24\x02\x07\x48\xAE\xF2\x31"
"\x34\x0E\xC3\x85\xFE\x1C\x95\x99"
"\x87\x58\x98\x8B\xE7\xC6\xC5\x70"
"\x73\x81\x07\x7C\x56\x2F\xD8\x1B"
"\xB7\xB9\x2B\xAB\xE3\x01\x87\x0F"
"\xD8\xBB\xC0\x0D\xAC\x2C\x2F\x98"
"\x3C\x0B\xA2\x99\x4A\x8C\xF7\x04"
"\xE0\xE0\xCF\xD1\x81\x5B\xFE\xF5"
"\x24\x04\xFD\xB8\xDF\x13\xD8\xCD"
"\xF1\xE3\x3D\x98\x50\x02\x77\x9E"
"\xBC\x22\xAB\xFA\xC2\x43\x1F\x66"
"\x20\x02\x23\xDA\xDF\xA0\x89\xF6"
"\xD8\xF3\x45\x24\x53\x6F\x16\x77"
"\x02\x3E\x7B\x36\x5F\xA0\x3B\x78"
"\x63\xA2\xBD\xB5\xA4\xCA\x1E\xD3"
"\x57\xBC\x0B\x9F\x43\x51\x28\x4F"
"\x07\x50\x6C\x68\x12\x07\xCF\xFA"
"\x6B\x72\x0B\xEB\xF8\x88\x90\x2C"
"\x7E\xF5\x91\xD1\x03\xD8\xD5\xBD"
"\x22\x39\x7B\x16\x03\x01\x69\xAF"
"\x3D\x38\x66\x28\x0C\xBE\x5B\xC5"
"\x03\xB4\x2F\x51\x8A\x56\x17\x2B"
"\x88\x42\x6D\x40\x68\x8F\xD0\x11"
"\x19\xF9\x1F\x43\x79\x95\x31\xFA"
"\x28\x7A\x3D\xF7\x66\xEB\xEF\xAC"
"\x06\xB2\x01\xAD\xDB\x68\xDB\xEC"
"\x8D\x53\x6E\x72\x68\xA3\xC7\x63"
"\x43\x2B\x78\xE0\x04\x29\x8F\x72"
"\xB2\x2C\xE6\x84\x03\x30\x6D\xCD"
"\x26\x92\x37\xE1\x2F\xBB\x8B\x9D"
"\xE4\x4C\xF6\x93\xBC\xD9\xAD\x44"
"\x52\x65\xC7\xB0\x0E\x3F\x0E\x61"
"\x56\x5D\x1C\x6D\xA7\x05\x2E\xBC"
"\x58\x08\x15\xAB\x12\xAB\x17\x4A"
"\x5E\x1C\xF2\xCD\xB8\xA2\xAE\xFB"
"\x9B\x2E\x0E\x85\x34\x80\x0E\x3F"
"\x4C\xB8\xDB\xCE\x1C\x90\xA1\x61"
"\x6C\x69\x09\x35\x9E\xD4\xF4\xAD"
"\xBC\x06\x41\xE3\x01\xB4\x4E\x0A"
"\xE0\x1F\x91\xF8\x82\x96\x2D\x65"
"\xA3\xAA\x13\xCC\x50\xFF\x7B\x02",
.len = 496,
},
};
static const struct cipher_testvec des_cbc_tv_template[] = {
{ /* From OpenSSL */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
.ptext = "\x37\x36\x35\x34\x33\x32\x31\x20"
"\x4e\x6f\x77\x20\x69\x73\x20\x74",
.ctext = "\xcc\xd1\x73\xff\xab\x20\x39\xf4"
"\xac\xd8\xae\xfd\xdf\xd8\xa1\xeb",
.len = 16,
},
{ /* Generated with Crypto++ */
.key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55",
.klen = 8,
.iv = "\xE7\x82\x1D\xB8\x53\x11\xAC\x47",
.ptext = "\x50\xB9\x22\xAE\x17\x80\x0C\x75"
"\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03"
"\x6C\xF8\x61\xCA\x33\xBF\x28\x91"
"\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F"
"\xAB\x14\x7D\x09\x72\xDB\x44\xD0"
"\x39\xA2\x0B\x97\x00\x69\xF5\x5E"
"\xC7\x30\xBC\x25\x8E\x1A\x83\xEC"
"\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A"
"\x06\x6F\xD8\x41\xCD\x36\x9F\x08"
"\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9"
"\x22\x8B\x17\x80\xE9\x52\xDE\x47"
"\xB0\x19\xA5\x0E\x77\x03\x6C\xD5"
"\x3E\xCA\x33\x9C\x05\x91\xFA\x63"
"\xEF\x58\xC1\x2A\xB6\x1F\x88\x14"
"\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2"
"\x0B\x74\x00\x69\xD2\x3B\xC7\x30"
"\x99\x02\x8E\xF7\x60\xEC\x55\xBE"
"\x27\xB3\x1C\x85\x11\x7A\xE3\x4C"
"\xD8\x41\xAA\x13\x9F\x08\x71\xFD"
"\x66\xCF\x38\xC4\x2D\x96\x22\x8B"
"\xF4\x5D\xE9\x52\xBB\x24\xB0\x19"
"\x82\x0E\x77\xE0\x49\xD5\x3E\xA7"
"\x10\x9C\x05\x6E\xFA\x63\xCC\x35"
"\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6"
"\x4F\xB8\x21\xAD\x16\x7F\x0B\x74"
"\xDD\x46\xD2\x3B\xA4\x0D\x99\x02"
"\x6B\xF7\x60\xC9\x32\xBE\x27\x90"
"\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E"
"\xAA\x13\x7C\x08\x71\xDA\x43\xCF"
"\x38\xA1\x0A\x96\xFF\x68\xF4\x5D",
.ctext = "\x71\xCC\x56\x1C\x87\x2C\x43\x20"
"\x1C\x20\x13\x09\xF9\x2B\x40\x47"
"\x99\x10\xD1\x1B\x65\x33\x33\xBA"
"\x88\x0D\xA2\xD1\x86\xFF\x4D\xF4"
"\x5A\x0C\x12\x96\x32\x57\xAA\x26"
"\xA7\xF4\x32\x8D\xBC\x10\x31\x9E"
"\x81\x72\x74\xDE\x30\x19\x69\x49"
"\x54\x9C\xC3\xEB\x0B\x97\xDD\xD1"
"\xE8\x6D\x0D\x05\x83\xA5\x12\x08"
"\x47\xF8\x88\x03\x86\x51\x3C\xEF"
"\xE7\x11\x73\x4D\x44\x2B\xE2\x16"
"\xE8\xA5\x06\x50\x66\x70\x0E\x14"
"\xBA\x21\x3B\xD5\x23\x5B\xA7\x8F"
"\x56\xB6\xA7\x44\xDB\x86\xAB\x69"
"\x33\x3C\xBE\x64\xC4\x22\xD3\xFE"
"\x49\x90\x88\x6A\x09\x8F\x76\x59"
"\xCB\xB7\xA0\x2D\x79\x75\x92\x8A"
"\x82\x1D\xC2\xFE\x09\x1F\x78\x6B"
"\x2F\xD6\xA4\x87\x1E\xC4\x53\x63"
"\x80\x02\x61\x2F\xE3\x46\xB6\xB5"
"\xAA\x95\xF4\xEE\xA7\x64\x2B\x4F"
"\x20\xCF\xD2\x47\x4E\x39\x65\xB3"
"\x11\x87\xA2\x6C\x49\x7E\x36\xC7"
"\x62\x8B\x48\x0D\x6A\x64\x00\xBD"
"\x71\x91\x8C\xE9\x70\x19\x01\x4F"
"\x4E\x68\x23\xBA\xDA\x24\x2E\x45"
"\x02\x14\x33\x21\xAE\x58\x4B\xCF"
"\x3B\x4B\xE8\xF8\xF6\x4F\x34\x93"
"\xD7\x07\x8A\xD7\x18\x92\x36\x8C"
"\x82\xA9\xBD\x6A\x31\x91\x39\x11",
.len = 240,
},
};
static const struct cipher_testvec des3_ede_cbc_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",
.ptext = "\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",
.ctext = "\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",
.len = 128,
}, { /* Generated with Crypto++ */
.key = "\x9C\xD6\xF3\x9C\xB9\x5A\x67\x00"
"\x5A\x67\x00\x2D\xCE\xEB\x2D\xCE"
"\xEB\xB4\x51\x72\xB4\x51\x72\x1F",
.klen = 24,
.iv = "\xB2\xD7\x48\xED\x06\x44\xF9\x12"
"\xB7\x28\x4D\x83\x24\x59\xF2\x17",
.ptext = "\x05\xEC\x77\xFB\x42\xD5\x59\x20"
"\x8B\x12\x86\x69\xF0\x5B\xCF\x56"
"\x39\xAD\x34\x9F\x66\xEA\x7D\xC4"
"\x48\xD3\xBA\x0D\xB1\x18\xE3\x4A"
"\xFE\x41\x28\x5C\x27\x8E\x11\x85"
"\x6C\xF7\x5E\xC2\x55\x3C\xA0\x0B"
"\x92\x65\xE9\x70\xDB\x4F\xD6\xB9"
"\x00\xB4\x1F\xE6\x49\xFD\x44\x2F"
"\x53\x3A\x8D\x14\x98\x63\xCA\x5D"
"\xC1\xA8\x33\xA7\x0E\x91\x78\xEC"
"\x77\xDE\x42\xD5\xBC\x07\x8B\x12"
"\xE5\x4C\xF0\x5B\x22\x56\x39\x80"
"\x6B\x9F\x66\xC9\x50\xC4\xAF\x36"
"\xBA\x0D\x94\x7F\xE3\x4A\xDD\x41"
"\x28\xB3\x1A\x8E\x11\xF8\x43\xF7"
"\x5E\x21\x55\x3C\x87\x6E\x92\x65"
"\xCC\x57\xDB\xA2\x35\xB9\x00\xEB"
"\x72\xE6\x49\xD0\x44\x2F\xB6\x19"
"\x8D\x14\xFF\x46\xCA\x5D\x24\xA8"
"\x33\x9A\x6D\x91\x78\xC3\x77\xDE"
"\xA1\x08\xBC\x07\xEE\x71\xE5\x4C"
"\xD7\x5B\x22\xB5\x1C\x80\x6B\xF2"
"\x45\xC9\x50\x3B\xAF\x36\x99\x60"
"\x94\x7F\xC6\x4A\xDD\xA4\x0F\xB3"
"\x1A\xED\x74\xF8\x43\x2A\x5E\x21"
"\x88\x13\x87\x6E\xF1\x58\xCC\x57"
"\x3E\xA2\x35\x9C\x67\xEB\x72\xC5"
"\x49\xD0\xBB\x02\xB6\x19\xE0\x4B"
"\xFF\x46\x29\x5D\x24\x8F\x16\x9A"
"\x6D\xF4\x5F\xC3\xAA\x3D\xA1\x08"
"\x93\x7A\xEE\x71\xD8\x4C\xD7\xBE"
"\x01\xB5\x1C\xE7\x4E\xF2\x45\x2C"
"\x50\x3B\x82\x15\x99\x60\xCB\x52"
"\xC6\xA9\x30\xA4\x0F\x96\x79\xED"
"\x74\xDF\x43\x2A\xBD\x04\x88\x13"
"\xFA\x4D\xF1\x58\x23\x57\x3E\x81"
"\x68\x9C\x67\xCE\x51\xC5\xAC\x37"
"\xBB\x02\x95\x7C\xE0\x4B\xD2\x46"
"\x29\xB0\x1B\x8F\x16\xF9\x40\xF4"
"\x5F\x26\xAA\x3D\x84\x6F\x93\x7A"
"\xCD\x54\xD8\xA3\x0A\xBE\x01\xE8"
"\x73\xE7\x4E\xD1\x45\x2C\xB7\x1E"
"\x82\x15\xFC\x47\xCB\x52\x25\xA9"
"\x30\x9B\x62\x96\x79\xC0\x74\xDF"
"\xA6\x09\xBD\x04\xEF\x76\xFA\x4D"
"\xD4\x58\x23\x8A\x1D\x81\x68\xF3"
"\x5A\xCE\x51\x38\xAC\x37\x9E\x61"
"\x95\x7C\xC7\x4B\xD2\xA5\x0C\xB0"
"\x1B\xE2\x75\xF9\x40\x2B\x5F\x26"
"\x89\x10\x84\x6F\xF6\x59\xCD\x54"
"\x3F\xA3\x0A\x9D\x64\xE8\x73\xDA"
"\x4E\xD1\xB8\x03\xB7\x1E\xE1\x48"
"\xFC\x47\x2E\x52\x25\x8C\x17\x9B"
"\x62\xF5\x5C\xC0\xAB\x32\xA6\x09"
"\x90\x7B\xEF\x76\xD9\x4D\xD4\xBF"
"\x06\x8A\x1D\xE4\x4F\xF3\x5A\x2D"
"\x51\x38\x83\x6A\x9E\x61\xC8\x53"
"\xC7\xAE\x31\xA5\x0C\x97\x7E\xE2"
"\x75\xDC\x40\x2B\xB2\x05\x89\x10"
"\xFB\x42\xF6\x59\x20\x54\x3F\x86"
"\x69\x9D\x64\xCF\x56\xDA\xAD\x34"
"\xB8\x03\xEA\x7D\xE1\x48\xD3\x47",
.ctext = "\xF8\xF6\xB5\x60\x5C\x5A\x75\x84"
"\x87\x81\x53\xBA\xC9\x6F\xEC\xD5"
"\x1E\x68\x8E\x85\x12\x86\x1D\x38"
"\x1C\x91\x40\xCC\x69\x6A\xD5\x35"
"\x0D\x7C\xB5\x07\x7C\x7B\x2A\xAF"
"\x32\xBC\xA1\xB3\x84\x31\x1B\x3C"
"\x0A\x2B\xFA\xD3\x9F\xB0\x8C\x37"
"\x8F\x9D\xA7\x6D\x6C\xFA\xD7\x90"
"\xE3\x69\x54\xED\x3A\xC4\xF1\x6B"
"\xB1\xCC\xFB\x7D\xD8\x8E\x17\x0B"
"\x9C\xF6\x4C\xD6\xFF\x03\x4E\xD9"
"\xE6\xA5\xAD\x25\xE6\x17\x69\x63"
"\x11\x35\x61\x94\x88\x7B\x1C\x48"
"\xF1\x24\x20\x29\x6B\x93\x1A\x8E"
"\x43\x03\x89\xD8\xB1\xDA\x47\x7B"
"\x79\x3A\x83\x76\xDA\xAE\xC6\xBB"
"\x22\xF8\xE8\x3D\x9A\x65\x54\xD8"
"\x4C\xE9\xE7\xE4\x63\x2F\x5C\x73"
"\x5A\xC3\xAE\x46\xA8\xCD\x57\xE6"
"\x67\x88\xA5\x20\x6F\x5F\x97\xC7"
"\xCC\x15\xA2\x0A\x93\xEA\x33\xE7"
"\x03\x5F\xEC\x64\x30\x6F\xEE\xD7"
"\x7E\xDF\xD6\xE9\x6F\x3F\xD6\x1E"
"\xBE\x67\x6C\x5B\x97\xA0\x09\xE6"
"\xEE\xFE\x55\xA3\x29\x65\xE0\x12"
"\xA1\x6A\x8A\x6F\xF2\xE6\xF1\x96"
"\x87\xFB\x9C\x05\xDD\x80\xEC\xFF"
"\xC5\xED\x50\xFE\xFC\x91\xCD\xCE"
"\x25\x2C\x5F\xD9\xAD\x95\x7D\x99"
"\xF0\x05\xC4\x71\x46\x5F\xF9\x0D"
"\xD2\x63\xDF\x9B\x96\x2E\x2B\xA6"
"\x2B\x1C\xD5\xFB\x96\x24\x60\x60"
"\x54\x40\xB8\x62\xA4\xF8\x46\x95"
"\x73\x28\xA3\xA6\x16\x2B\x17\xE7"
"\x7A\xF8\x62\x54\x3B\x64\x69\xE1"
"\x71\x34\x29\x5B\x4E\x05\x9B\xFA"
"\x5E\xF1\x96\xB7\xCE\x16\x9B\x59"
"\xF1\x1A\x4C\x51\x26\xFD\x79\xE2"
"\x3B\x8E\x71\x69\x6A\x91\xB6\x65"
"\x32\x09\xB8\xE4\x09\x1F\xEA\x39"
"\xCE\x20\x65\x9F\xD6\xD1\xC7\xF0"
"\x73\x50\x08\x56\x20\x9B\x94\x23"
"\x14\x39\xB7\x2B\xB1\x2D\x6D\x6F"
"\x41\x5B\xCC\xE2\x18\xAE\x62\x89"
"\x78\x8E\x67\x23\xD0\xFB\x2B\xE5"
"\x25\xC9\x48\x97\xB5\xD3\x17\xD5"
"\x6A\x9F\xA7\x48\x0C\x2B\x73\x3B"
"\x57\x08\xAE\x91\xF2\xB7\x57\x89"
"\xF4\xD0\xB0\x07\xB0\x42\x6C\xAF"
"\x98\x1A\xE7\xD1\xAC\x1E\xB5\x02"
"\xD4\x56\x42\x79\x79\x7F\x2A\x77"
"\x25\xE9\x7D\xC1\x88\x19\x2B\x49"
"\x6F\x46\x59\xAB\x56\x1F\x61\xE0"
"\x0C\x24\x9C\xC9\x5B\x63\xA9\x12"
"\xCF\x88\x96\xB6\xA8\x24\xC6\xA8"
"\x21\x85\x1A\x62\x7E\x34\xBB\xEB"
"\xBD\x02\x2A\xC7\xD8\x89\x80\xC5"
"\xB1\xBB\x60\xA5\x22\xFC\x6F\x38"
"\x02\x80\xA3\x28\x22\x75\xE1\xE9"
"\x90\xE9\xFA\x4B\x00\x10\xAC\x58"
"\x83\x70\xFF\x86\xE6\xAA\x0F\x1F"
"\x95\x63\x73\xA2\x44\xAC\xF8\xA5",
.len = 496,
},
};
static const struct cipher_testvec aes_ctr_tv_template[] = {
{ /* From NIST Special Publication 800-38A, Appendix F.5 */
.key = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
"\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
.klen = 16,
.iv = "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
.ptext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
.ctext = "\x87\x4d\x61\x91\xb6\x20\xe3\x26"
"\x1b\xef\x68\x64\x99\x0d\xb6\xce"
"\x98\x06\xf6\x6b\x79\x70\xfd\xff"
"\x86\x17\x18\x7b\xb9\xff\xfd\xff"
"\x5a\xe4\xdf\x3e\xdb\xd5\xd3\x5e"
"\x5b\x4f\x09\x02\x0d\xb0\x3e\xab"
"\x1e\x03\x1d\xda\x2f\xbe\x03\xd1"
"\x79\x21\x70\xa0\xf3\x00\x9c\xee",
.len = 64,
}, {
.key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
"\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
"\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
.klen = 24,
.iv = "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
.ptext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
.ctext = "\x1a\xbc\x93\x24\x17\x52\x1c\xa2"
"\x4f\x2b\x04\x59\xfe\x7e\x6e\x0b"
"\x09\x03\x39\xec\x0a\xa6\xfa\xef"
"\xd5\xcc\xc2\xc6\xf4\xce\x8e\x94"
"\x1e\x36\xb2\x6b\xd1\xeb\xc6\x70"
"\xd1\xbd\x1d\x66\x56\x20\xab\xf7"
"\x4f\x78\xa7\xf6\xd2\x98\x09\x58"
"\x5a\x97\xda\xec\x58\xc6\xb0\x50",
.len = 64,
}, {
.key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
"\x2b\x73\xae\xf0\x85\x7d\x77\x81"
"\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
"\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
.klen = 32,
.iv = "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7"
"\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff",
.ptext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
.ctext = "\x60\x1e\xc3\x13\x77\x57\x89\xa5"
"\xb7\xa7\xf5\x04\xbb\xf3\xd2\x28"
"\xf4\x43\xe3\xca\x4d\x62\xb5\x9a"
"\xca\x84\xe9\x90\xca\xca\xf5\xc5"
"\x2b\x09\x30\xda\xa2\x3d\xe9\x4c"
"\xe8\x70\x17\xba\x2d\x84\x98\x8d"
"\xdf\xc9\xc5\x8d\xb6\x7a\xad\xa6"
"\x13\xc2\xdd\x08\x45\x79\x41\xa6",
.len = 64,
}, { /* Generated with Crypto++ */
.key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55"
"\x0F\x32\x55\x78\x9B\xBE\x78\x9B"
"\xBE\xE1\x04\x27\xE1\x04\x27\x4A"
"\x6D\x90\x4A\x6D\x90\xB3\xD6\xF9",
.klen = 32,
.iv = "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFD",
.ptext = "\x50\xB9\x22\xAE\x17\x80\x0C\x75"
"\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03"
"\x6C\xF8\x61\xCA\x33\xBF\x28\x91"
"\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F"
"\xAB\x14\x7D\x09\x72\xDB\x44\xD0"
"\x39\xA2\x0B\x97\x00\x69\xF5\x5E"
"\xC7\x30\xBC\x25\x8E\x1A\x83\xEC"
"\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A"
"\x06\x6F\xD8\x41\xCD\x36\x9F\x08"
"\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9"
"\x22\x8B\x17\x80\xE9\x52\xDE\x47"
"\xB0\x19\xA5\x0E\x77\x03\x6C\xD5"
"\x3E\xCA\x33\x9C\x05\x91\xFA\x63"
"\xEF\x58\xC1\x2A\xB6\x1F\x88\x14"
"\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2"
"\x0B\x74\x00\x69\xD2\x3B\xC7\x30"
"\x99\x02\x8E\xF7\x60\xEC\x55\xBE"
"\x27\xB3\x1C\x85\x11\x7A\xE3\x4C"
"\xD8\x41\xAA\x13\x9F\x08\x71\xFD"
"\x66\xCF\x38\xC4\x2D\x96\x22\x8B"
"\xF4\x5D\xE9\x52\xBB\x24\xB0\x19"
"\x82\x0E\x77\xE0\x49\xD5\x3E\xA7"
"\x10\x9C\x05\x6E\xFA\x63\xCC\x35"
"\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6"
"\x4F\xB8\x21\xAD\x16\x7F\x0B\x74"
"\xDD\x46\xD2\x3B\xA4\x0D\x99\x02"
"\x6B\xF7\x60\xC9\x32\xBE\x27\x90"
"\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E"
"\xAA\x13\x7C\x08\x71\xDA\x43\xCF"
"\x38\xA1\x0A\x96\xFF\x68\xF4\x5D"
"\xC6\x2F\xBB\x24\x8D\x19\x82\xEB"
"\x54\xE0\x49\xB2\x1B\xA7\x10\x79"
"\x05\x6E\xD7\x40\xCC\x35\x9E\x07"
"\x93\xFC\x65\xF1\x5A\xC3\x2C\xB8"
"\x21\x8A\x16\x7F\xE8\x51\xDD\x46"
"\xAF\x18\xA4\x0D\x76\x02\x6B\xD4"
"\x3D\xC9\x32\x9B\x04\x90\xF9\x62"
"\xEE\x57\xC0\x29\xB5\x1E\x87\x13"
"\x7C\xE5\x4E\xDA\x43\xAC\x15\xA1"
"\x0A\x73\xFF\x68\xD1\x3A\xC6\x2F"
"\x98\x01\x8D\xF6\x5F\xEB\x54\xBD"
"\x26\xB2\x1B\x84\x10\x79\xE2\x4B"
"\xD7\x40\xA9\x12\x9E\x07\x70\xFC"
"\x65\xCE\x37\xC3\x2C\x95\x21\x8A"
"\xF3\x5C\xE8\x51\xBA\x23\xAF\x18"
"\x81\x0D\x76\xDF\x48\xD4\x3D\xA6"
"\x0F\x9B\x04\x6D\xF9\x62\xCB\x34"
"\xC0\x29\x92\x1E\x87\xF0\x59\xE5"
"\x4E\xB7\x20\xAC\x15\x7E\x0A\x73"
"\xDC\x45\xD1\x3A\xA3\x0C\x98\x01"
"\x6A\xF6\x5F\xC8\x31\xBD\x26\x8F"
"\x1B\x84\xED\x56\xE2\x4B\xB4\x1D"
"\xA9\x12\x7B\x07\x70\xD9\x42\xCE"
"\x37\xA0\x09\x95\xFE\x67\xF3\x5C"
"\xC5\x2E\xBA\x23\x8C\x18\x81\xEA"
"\x53\xDF\x48\xB1\x1A\xA6\x0F\x78"
"\x04\x6D\xD6\x3F\xCB\x34\x9D\x06"
"\x92\xFB\x64\xF0\x59\xC2\x2B\xB7"
"\x20\x89\x15\x7E\xE7\x50\xDC\x45"
"\xAE\x17\xA3\x0C\x75\x01\x6A\xD3"
"\x3C\xC8\x31\x9A\x03\x8F\xF8\x61"
"\xED\x56\xBF\x28\xB4\x1D\x86\x12",
.ctext = "\x04\xF3\xD3\x88\x17\xEF\xDC\xEF"
"\x8B\x04\xF8\x3A\x66\x8D\x1A\x53"
"\x57\x1F\x4B\x23\xE4\xA0\xAF\xF9"
"\x69\x95\x35\x98\x8D\x4D\x8C\xC1"
"\xF0\xB2\x7F\x80\xBB\x54\x28\xA2"
"\x7A\x1B\x9F\x77\xEC\x0E\x6E\xDE"
"\xF0\xEC\xB8\xE4\x20\x62\xEE\xDB"
"\x5D\xF5\xDD\xE3\x54\xFC\xDD\xEB"
"\x6A\xEE\x65\xA1\x21\xD6\xD7\x81"
"\x47\x61\x12\x4D\xC2\x8C\xFA\x78"
"\x1F\x28\x02\x01\xC3\xFC\x1F\xEC"
"\x0F\x10\x4F\xB3\x12\x45\xC6\x3B"
"\x7E\x08\xF9\x5A\xD0\x5D\x73\x2D"
"\x58\xA4\xE5\xCB\x1C\xB4\xCE\x74"
"\x32\x41\x1F\x31\x9C\x08\xA2\x5D"
"\x67\xEB\x72\x1D\xF8\xE7\x70\x54"
"\x34\x4B\x31\x69\x84\x66\x96\x44"
"\x56\xCC\x1E\xD9\xE6\x13\x6A\xB9"
"\x2D\x0A\x05\x45\x2D\x90\xCC\xDF"
"\x16\x5C\x5F\x79\x34\x52\x54\xFE"
"\xFE\xCD\xAD\x04\x2E\xAD\x86\x06"
"\x1F\x37\xE8\x28\xBC\xD3\x8F\x5B"
"\x92\x66\x87\x3B\x8A\x0A\x1A\xCC"
"\x6E\xAB\x9F\x0B\xFA\x5C\xE6\xFD"
"\x3C\x98\x08\x12\xEC\xAA\x9E\x11"
"\xCA\xB2\x1F\xCE\x5E\x5B\xB2\x72"
"\x9C\xCC\x5D\xC5\xE0\x32\xC0\x56"
"\xD5\x45\x16\xD2\xAF\x13\x66\xF7"
"\x8C\x67\xAC\x79\xB2\xAF\x56\x27"
"\x3F\xCC\xFE\xCB\x1E\xC0\x75\xF1"
"\xA7\xC9\xC3\x1D\x8E\xDD\xF9\xD4"
"\x42\xC8\x21\x08\x16\xF7\x01\xD7"
"\xAC\x8E\x3F\x1D\x56\xC1\x06\xE4"
"\x9C\x62\xD6\xA5\x6A\x50\x44\xB3"
"\x35\x1C\x82\xB9\x10\xF9\x42\xA1"
"\xFC\x74\x9B\x44\x4F\x25\x02\xE3"
"\x08\xF5\xD4\x32\x39\x08\x11\xE8"
"\xD2\x6B\x50\x53\xD4\x08\xD1\x6B"
"\x3A\x4A\x68\x7B\x7C\xCD\x46\x5E"
"\x0D\x07\x19\xDB\x67\xD7\x98\x91"
"\xD7\x17\x10\x9B\x7B\x8A\x9B\x33"
"\xAE\xF3\x00\xA6\xD4\x15\xD9\xEA"
"\x85\x99\x22\xE8\x91\x38\x70\x83"
"\x93\x01\x24\x6C\xFA\x9A\xB9\x07"
"\xEA\x8D\x3B\xD9\x2A\x43\x59\x16"
"\x2F\x69\xEE\x84\x36\x44\x76\x98"
"\xF3\x04\x2A\x7C\x74\x3D\x29\x2B"
"\x0D\xAD\x8F\x44\x82\x9E\x57\x8D"
"\xAC\xED\x18\x1F\x50\xA4\xF5\x98"
"\x1F\xBD\x92\x91\x1B\x2D\xA6\xD6"
"\xD2\xE3\x02\xAA\x92\x3B\xC6\xB3"
"\x1B\x39\x72\xD5\x26\xCA\x04\xE0"
"\xFC\x58\x78\xBB\xB1\x3F\xA1\x9C"
"\x42\x24\x3E\x2E\x22\xBB\x4B\xBA"
"\xF4\x52\x0A\xE6\xAE\x47\xB4\x7D"
"\x1D\xA8\xBE\x81\x1A\x75\xDA\xAC"
"\xA6\x25\x1E\xEF\x3A\xC0\x6C\x63"
"\xEF\xDC\xC9\x79\x10\x26\xE8\x61"
"\x29\xFC\xA4\x05\xDF\x7D\x5C\x63"
"\x10\x09\x9B\x46\x9B\xF2\x2C\x2B"
"\xFA\x3A\x05\x4C\xFA\xD1\xFF\xFE"
"\xF1\x4C\xE5\xB2\x91\x64\x0C\x51",
.len = 496,
},
};
static const struct cipher_testvec aes_ecb_tv_template[] = {
{ /* From FIPS-197 */
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.klen = 16,
.ptext = "\x00\x11\x22\x33\x44\x55\x66\x77"
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
.ctext = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
"\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
.len = 16,
}, {
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
"\x10\x11\x12\x13\x14\x15\x16\x17",
.klen = 24,
.ptext = "\x00\x11\x22\x33\x44\x55\x66\x77"
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
.ctext = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
"\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
.len = 16,
}, {
.key = "\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",
.klen = 32,
.ptext = "\x00\x11\x22\x33\x44\x55\x66\x77"
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
.ctext = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
"\xea\xfc\x49\x90\x4b\x49\x60\x89",
.len = 16,
}, { /* Generated with Crypto++ */
.key = "\xA6\xC9\x83\xA6\xC9\xEC\x0F\x32"
"\x55\x0F\x32\x55\x78\x9B\xBE\x78"
"\x9B\xBE\xE1\x04\x27\xE1\x04\x27"
"\x4A\x6D\x90\x4A\x6D\x90\xB3\xD6",
.klen = 32,
.ptext = "\x50\xB9\x22\xAE\x17\x80\x0C\x75"
"\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03"
"\x6C\xF8\x61\xCA\x33\xBF\x28\x91"
"\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F"
"\xAB\x14\x7D\x09\x72\xDB\x44\xD0"
"\x39\xA2\x0B\x97\x00\x69\xF5\x5E"
"\xC7\x30\xBC\x25\x8E\x1A\x83\xEC"
"\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A"
"\x06\x6F\xD8\x41\xCD\x36\x9F\x08"
"\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9"
"\x22\x8B\x17\x80\xE9\x52\xDE\x47"
"\xB0\x19\xA5\x0E\x77\x03\x6C\xD5"
"\x3E\xCA\x33\x9C\x05\x91\xFA\x63"
"\xEF\x58\xC1\x2A\xB6\x1F\x88\x14"
"\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2"
"\x0B\x74\x00\x69\xD2\x3B\xC7\x30"
"\x99\x02\x8E\xF7\x60\xEC\x55\xBE"
"\x27\xB3\x1C\x85\x11\x7A\xE3\x4C"
"\xD8\x41\xAA\x13\x9F\x08\x71\xFD"
"\x66\xCF\x38\xC4\x2D\x96\x22\x8B"
"\xF4\x5D\xE9\x52\xBB\x24\xB0\x19"
"\x82\x0E\x77\xE0\x49\xD5\x3E\xA7"
"\x10\x9C\x05\x6E\xFA\x63\xCC\x35"
"\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6"
"\x4F\xB8\x21\xAD\x16\x7F\x0B\x74"
"\xDD\x46\xD2\x3B\xA4\x0D\x99\x02"
"\x6B\xF7\x60\xC9\x32\xBE\x27\x90"
"\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E"
"\xAA\x13\x7C\x08\x71\xDA\x43\xCF"
"\x38\xA1\x0A\x96\xFF\x68\xF4\x5D"
"\xC6\x2F\xBB\x24\x8D\x19\x82\xEB"
"\x54\xE0\x49\xB2\x1B\xA7\x10\x79"
"\x05\x6E\xD7\x40\xCC\x35\x9E\x07"
"\x93\xFC\x65\xF1\x5A\xC3\x2C\xB8"
"\x21\x8A\x16\x7F\xE8\x51\xDD\x46"
"\xAF\x18\xA4\x0D\x76\x02\x6B\xD4"
"\x3D\xC9\x32\x9B\x04\x90\xF9\x62"
"\xEE\x57\xC0\x29\xB5\x1E\x87\x13"
"\x7C\xE5\x4E\xDA\x43\xAC\x15\xA1"
"\x0A\x73\xFF\x68\xD1\x3A\xC6\x2F"
"\x98\x01\x8D\xF6\x5F\xEB\x54\xBD"
"\x26\xB2\x1B\x84\x10\x79\xE2\x4B"
"\xD7\x40\xA9\x12\x9E\x07\x70\xFC"
"\x65\xCE\x37\xC3\x2C\x95\x21\x8A"
"\xF3\x5C\xE8\x51\xBA\x23\xAF\x18"
"\x81\x0D\x76\xDF\x48\xD4\x3D\xA6"
"\x0F\x9B\x04\x6D\xF9\x62\xCB\x34"
"\xC0\x29\x92\x1E\x87\xF0\x59\xE5"
"\x4E\xB7\x20\xAC\x15\x7E\x0A\x73"
"\xDC\x45\xD1\x3A\xA3\x0C\x98\x01"
"\x6A\xF6\x5F\xC8\x31\xBD\x26\x8F"
"\x1B\x84\xED\x56\xE2\x4B\xB4\x1D"
"\xA9\x12\x7B\x07\x70\xD9\x42\xCE"
"\x37\xA0\x09\x95\xFE\x67\xF3\x5C"
"\xC5\x2E\xBA\x23\x8C\x18\x81\xEA"
"\x53\xDF\x48\xB1\x1A\xA6\x0F\x78"
"\x04\x6D\xD6\x3F\xCB\x34\x9D\x06"
"\x92\xFB\x64\xF0\x59\xC2\x2B\xB7"
"\x20\x89\x15\x7E\xE7\x50\xDC\x45"
"\xAE\x17\xA3\x0C\x75\x01\x6A\xD3"
"\x3C\xC8\x31\x9A\x03\x8F\xF8\x61"
"\xED\x56\xBF\x28\xB4\x1D\x86\x12",
.ctext = "\x71\x73\xF7\xDB\x24\x93\x21\x6D"
"\x61\x1E\xBB\x63\x42\x79\xDB\x64"
"\x6F\x82\xC0\xCA\xA3\x9B\xFA\x0B"
"\xD9\x08\xC7\x4A\x90\xAE\x8F\x5F"
"\x5E\x06\xF0\x5F\x31\x51\x18\x37"
"\x45\xD7\xCA\x3A\xFD\x6C\x3F\xE1"
"\xDD\x8D\x22\x65\x2B\x00\x50\xCE"
"\xBA\x28\x67\xD7\xCE\x0E\x0D\xEA"
"\x78\x69\x7F\xAE\x8F\x8B\x69\x37"
"\x75\xE0\xDC\x96\xE0\xB7\xF4\x09"
"\xCB\x6D\xA2\xFB\xDA\xAF\x09\xF8"
"\x81\x82\x27\xFA\x45\x9C\x29\xA4"
"\x22\x8B\x78\x69\x5B\x46\xF9\x39"
"\x1B\xCC\xF9\x1D\x09\xEB\xBC\x5C"
"\x41\x72\x51\x97\x1D\x07\x49\xA0"
"\x1B\x8E\x65\x4B\xB2\x6A\x12\x03"
"\x6A\x60\x95\xAC\xBD\xAC\x1A\x64"
"\xDE\x5A\xA5\xF0\x83\x2F\xCB\xCA"
"\x22\x74\xA6\x6C\x9B\x73\xCE\x3F"
"\xE1\x8B\x22\x17\x59\x0C\x47\x89"
"\x33\xA1\xD6\x47\x03\x19\x4F\xA8"
"\x67\x69\xF0\x5B\xF0\x20\xAD\x06"
"\x27\x81\x92\xD8\xC5\xBA\x98\x12"
"\xBE\x24\xB5\x2F\x75\x02\xC2\xAD"
"\x12\x2F\x07\x32\xEE\x39\xAF\x64"
"\x05\x8F\xB3\xD4\xEB\x1B\x46\x6E"
"\xD9\x21\xF9\xC4\xB7\xC9\x45\x68"
"\xB4\xA1\x74\x9F\x82\x47\xEB\xCC"
"\xBD\x0A\x14\x95\x0F\x8B\xA8\x2F"
"\x4B\x1B\xA7\xBF\x82\xA6\x43\x0C"
"\xB9\x39\x4A\xA8\x10\x6F\x50\x7B"
"\x25\xFB\x26\x81\xE0\x2F\xF0\x96"
"\x8D\x8B\xAC\x92\x0F\xF6\xED\x64"
"\x63\x29\x4C\x8E\x18\x13\xC5\xBF"
"\xFC\xA0\xD9\xBF\x7C\x3A\x0E\x29"
"\x6F\xD1\x6C\x6F\xA5\xDA\xBF\xB1"
"\x30\xEA\x44\x2D\xC3\x8F\x16\xE1"
"\x66\xFA\xA3\x21\x3E\xFC\x13\xCA"
"\xF0\xF6\xF0\x59\xBD\x8F\x38\x50"
"\x31\xCB\x69\x3F\x96\x15\xD6\xF5"
"\xAE\xFF\xF6\xAA\x41\x85\x4C\x10"
"\x58\xE3\xF9\x44\xE6\x28\xDA\x9A"
"\xDC\x6A\x80\x34\x73\x97\x1B\xC5"
"\xCA\x26\x16\x77\x0E\x60\xAB\x89"
"\x0F\x04\x27\xBD\xCE\x3E\x71\xB4"
"\xA0\xD7\x22\x7E\xDB\xEB\x24\x70"
"\x42\x71\x51\x78\x70\xB3\xE0\x3D"
"\x84\x8E\x8D\x7B\xD0\x6D\xEA\x92"
"\x11\x08\x42\x4F\xE5\xAD\x26\x92"
"\xD2\x00\xAE\xA8\xE3\x4B\x37\x47"
"\x22\xC1\x95\xC1\x63\x7F\xCB\x03"
"\xF3\xE3\xD7\x9D\x60\xC7\xBC\xEA"
"\x35\xA2\xFD\x45\x52\x39\x13\x6F"
"\xC1\x53\xF3\x53\xDF\x33\x84\xD7"
"\xD2\xC8\x37\xB0\x75\xE3\x41\x46"
"\xB3\xC7\x83\x2E\x8A\xBB\xA4\xE5"
"\x7F\x3C\xFD\x8B\xEB\xEA\x63\xBD"
"\xB7\x46\xE7\xBF\x09\x9C\x0D\x0F"
"\x40\x86\x7F\x51\xE1\x11\x9C\xCB"
"\x88\xE6\x68\x47\xE3\x2B\xC5\xFF"
"\x09\x79\xA0\x43\x5C\x0D\x08\x58"
"\x17\xBB\xC0\x6B\x62\x3F\x56\xE9",
.len = 496,
},
};
static const struct cipher_testvec des_ecb_tv_template[] = {
{
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
"\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
"\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
.len = 16,
}, {
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
"\xa3\x99\x7b\xca\xaf\x69\xa0\xf5",
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
"\x69\x0f\x5b\x0d\x9a\x26\x93\x9b",
.len = 16,
}, { /* Four blocks -- for testing encryption with chunking */
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.ptext = "\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",
.ctext = "\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",
.len = 32,
}, {
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.ptext = "\x01\x23\x45\x67\x89\xab\xcd\xe7"
"\x22\x33\x44\x55\x66\x77\x88\x99",
.ctext = "\xc9\x57\x44\x25\x6a\x5e\xd3\x1d"
"\xf7\x9c\x89\x2a\x33\x8f\x4a\x8b",
.len = 16,
}, { /* Generated with Crypto++ */
.key = "\xC9\x83\xA6\xC9\xEC\x0F\x32\x55",
.klen = 8,
.ptext = "\x50\xB9\x22\xAE\x17\x80\x0C\x75"
"\xDE\x47\xD3\x3C\xA5\x0E\x9A\x03"
"\x6C\xF8\x61\xCA\x33\xBF\x28\x91"
"\x1D\x86\xEF\x58\xE4\x4D\xB6\x1F"
"\xAB\x14\x7D\x09\x72\xDB\x44\xD0"
"\x39\xA2\x0B\x97\x00\x69\xF5\x5E"
"\xC7\x30\xBC\x25\x8E\x1A\x83\xEC"
"\x55\xE1\x4A\xB3\x1C\xA8\x11\x7A"
"\x06\x6F\xD8\x41\xCD\x36\x9F\x08"
"\x94\xFD\x66\xF2\x5B\xC4\x2D\xB9"
"\x22\x8B\x17\x80\xE9\x52\xDE\x47"
"\xB0\x19\xA5\x0E\x77\x03\x6C\xD5"
"\x3E\xCA\x33\x9C\x05\x91\xFA\x63"
"\xEF\x58\xC1\x2A\xB6\x1F\x88\x14"
"\x7D\xE6\x4F\xDB\x44\xAD\x16\xA2"
"\x0B\x74\x00\x69\xD2\x3B\xC7\x30"
"\x99\x02\x8E\xF7\x60\xEC\x55\xBE"
"\x27\xB3\x1C\x85\x11\x7A\xE3\x4C"
"\xD8\x41\xAA\x13\x9F\x08\x71\xFD"
"\x66\xCF\x38\xC4\x2D\x96\x22\x8B"
"\xF4\x5D\xE9\x52\xBB\x24\xB0\x19"
"\x82\x0E\x77\xE0\x49\xD5\x3E\xA7"
"\x10\x9C\x05\x6E\xFA\x63\xCC\x35"
"\xC1\x2A\x93\x1F\x88\xF1\x5A\xE6"
"\x4F\xB8\x21\xAD\x16\x7F\x0B\x74"
"\xDD\x46\xD2\x3B\xA4\x0D\x99\x02"
"\x6B\xF7\x60\xC9\x32\xBE\x27\x90"
"\x1C\x85\xEE\x57\xE3\x4C\xB5\x1E"
"\xAA\x13\x7C\x08\x71\xDA\x43\xCF"
"\x38\xA1\x0A\x96\xFF\x68\xF4\x5D",
.ctext = "\x88\xCB\x1F\xAB\x2F\x2A\x49\x57"
"\x92\xB9\x77\xFF\x2F\x47\x58\xDD"
"\xD7\x8A\x91\x95\x26\x33\x78\xB2"
"\x33\xBA\xB2\x3E\x02\xF5\x1F\xEF"
"\x98\xC5\xA6\xD2\x7D\x79\xEC\xB3"
"\x45\xF3\x4C\x61\xAC\x6C\xC2\x55"
"\xE5\xD3\x06\x58\x8A\x42\x3E\xDD"
"\x3D\x20\x45\xE9\x6F\x0D\x25\xA8"
"\xA5\xC7\x69\xCE\xD5\x3B\x7B\xC9"
"\x9E\x65\xE7\xA3\xF2\xE4\x18\x94"
"\xD2\x81\xE9\x33\x2B\x2D\x49\xC4"
"\xFE\xDA\x7F\xE2\xF2\x8C\x9C\xDC"
"\x73\x58\x11\x1F\x81\xD7\x21\x1A"
"\x80\xD0\x0D\xE8\x45\xD6\xD8\xD5"
"\x2E\x51\x16\xCA\x09\x89\x54\x62"
"\xF7\x04\x3D\x75\xB9\xA3\x84\xF4"
"\x62\xF0\x02\x58\x83\xAF\x30\x87"
"\x85\x3F\x01\xCD\x8E\x58\x42\xC4"
"\x41\x73\xE0\x15\x0A\xE6\x2E\x80"
"\x94\xF8\x5B\x3A\x4E\xDF\x51\xB2"
"\x9D\xE4\xC4\x9D\xF7\x3F\xF8\x8E"
"\x37\x22\x4D\x00\x2A\xEF\xC1\x0F"
"\x14\xA0\x66\xAB\x79\x39\xD0\x8E"
"\xE9\x95\x61\x74\x12\xED\x07\xD7"
"\xDD\x95\xDC\x7B\x57\x25\x27\x9C"
"\x51\x96\x16\xF7\x94\x61\xB8\x87"
"\xF0\x21\x1B\x32\xFB\x07\x0F\x29"
"\x56\xBD\x9D\x22\xA2\x9F\xA2\xB9"
"\x46\x31\x4C\x5E\x2E\x95\x61\xEF"
"\xE1\x58\x39\x09\xB4\x8B\x40\xAC",
.len = 240,
},
};
static const struct cipher_testvec des3_ecb_ede_tv_template[] = {
{ /* Generated with Crypto++ */
.key = "\xF3\x9C\xD6\xF3\x9C\xB9\x5A\x67"
"\x00\x5A\x67\x00\x2D\xCE\xEB\x2D"
"\xCE\xEB\xB4\x51\x72\xB4\x51\x72",
.klen = 24,
.ptext = "\x05\xEC\x77\xFB\x42\xD5\x59\x20"
"\x8B\x12\x86\x69\xF0\x5B\xCF\x56"
"\x39\xAD\x34\x9F\x66\xEA\x7D\xC4"
"\x48\xD3\xBA\x0D\xB1\x18\xE3\x4A"
"\xFE\x41\x28\x5C\x27\x8E\x11\x85"
"\x6C\xF7\x5E\xC2\x55\x3C\xA0\x0B"
"\x92\x65\xE9\x70\xDB\x4F\xD6\xB9"
"\x00\xB4\x1F\xE6\x49\xFD\x44\x2F"
"\x53\x3A\x8D\x14\x98\x63\xCA\x5D"
"\xC1\xA8\x33\xA7\x0E\x91\x78\xEC"
"\x77\xDE\x42\xD5\xBC\x07\x8B\x12"
"\xE5\x4C\xF0\x5B\x22\x56\x39\x80"
"\x6B\x9F\x66\xC9\x50\xC4\xAF\x36"
"\xBA\x0D\x94\x7F\xE3\x4A\xDD\x41"
"\x28\xB3\x1A\x8E\x11\xF8\x43\xF7"
"\x5E\x21\x55\x3C\x87\x6E\x92\x65"
"\xCC\x57\xDB\xA2\x35\xB9\x00\xEB"
"\x72\xE6\x49\xD0\x44\x2F\xB6\x19"
"\x8D\x14\xFF\x46\xCA\x5D\x24\xA8"
"\x33\x9A\x6D\x91\x78\xC3\x77\xDE"
"\xA1\x08\xBC\x07\xEE\x71\xE5\x4C"
"\xD7\x5B\x22\xB5\x1C\x80\x6B\xF2"
"\x45\xC9\x50\x3B\xAF\x36\x99\x60"
"\x94\x7F\xC6\x4A\xDD\xA4\x0F\xB3"
"\x1A\xED\x74\xF8\x43\x2A\x5E\x21"
"\x88\x13\x87\x6E\xF1\x58\xCC\x57"
"\x3E\xA2\x35\x9C\x67\xEB\x72\xC5"
"\x49\xD0\xBB\x02\xB6\x19\xE0\x4B"
"\xFF\x46\x29\x5D\x24\x8F\x16\x9A"
"\x6D\xF4\x5F\xC3\xAA\x3D\xA1\x08"
"\x93\x7A\xEE\x71\xD8\x4C\xD7\xBE"
"\x01\xB5\x1C\xE7\x4E\xF2\x45\x2C"
"\x50\x3B\x82\x15\x99\x60\xCB\x52"
"\xC6\xA9\x30\xA4\x0F\x96\x79\xED"
"\x74\xDF\x43\x2A\xBD\x04\x88\x13"
"\xFA\x4D\xF1\x58\x23\x57\x3E\x81"
"\x68\x9C\x67\xCE\x51\xC5\xAC\x37"
"\xBB\x02\x95\x7C\xE0\x4B\xD2\x46"
"\x29\xB0\x1B\x8F\x16\xF9\x40\xF4"
"\x5F\x26\xAA\x3D\x84\x6F\x93\x7A"
"\xCD\x54\xD8\xA3\x0A\xBE\x01\xE8"
"\x73\xE7\x4E\xD1\x45\x2C\xB7\x1E"
"\x82\x15\xFC\x47\xCB\x52\x25\xA9"
"\x30\x9B\x62\x96\x79\xC0\x74\xDF"
"\xA6\x09\xBD\x04\xEF\x76\xFA\x4D"
"\xD4\x58\x23\x8A\x1D\x81\x68\xF3"
"\x5A\xCE\x51\x38\xAC\x37\x9E\x61"
"\x95\x7C\xC7\x4B\xD2\xA5\x0C\xB0"
"\x1B\xE2\x75\xF9\x40\x2B\x5F\x26"
"\x89\x10\x84\x6F\xF6\x59\xCD\x54"
"\x3F\xA3\x0A\x9D\x64\xE8\x73\xDA"
"\x4E\xD1\xB8\x03\xB7\x1E\xE1\x48"
"\xFC\x47\x2E\x52\x25\x8C\x17\x9B"
"\x62\xF5\x5C\xC0\xAB\x32\xA6\x09"
"\x90\x7B\xEF\x76\xD9\x4D\xD4\xBF"
"\x06\x8A\x1D\xE4\x4F\xF3\x5A\x2D"
"\x51\x38\x83\x6A\x9E\x61\xC8\x53"
"\xC7\xAE\x31\xA5\x0C\x97\x7E\xE2"
"\x75\xDC\x40\x2B\xB2\x05\x89\x10"
"\xFB\x42\xF6\x59\x20\x54\x3F\x86"
"\x69\x9D\x64\xCF\x56\xDA\xAD\x34"
"\xB8\x03\xEA\x7D\xE1\x48\xD3\x47",
.ctext = "\x4E\x9A\x40\x3D\x61\x7D\x17\xFA"
"\x16\x86\x88\x0B\xD8\xAE\xF8\xE4"
"\x81\x01\x04\x00\x76\xFA\xED\xD3"
"\x44\x7E\x21\x9D\xF0\xFB\x2B\x64"
"\xCA\x4E\x90\xE0\xC0\x63\x28\x92"
"\xF3\x1F\xA4\x53\x2C\x77\xCC\x77"
"\x69\x56\xD0\x19\xAD\x00\x2D\x97"
"\xBC\xDE\x49\x6A\x82\xBC\x16\xE2"
"\x2F\x3E\x72\xEE\xD1\xCE\xFC\x1B"
"\xEA\x32\x56\xE4\x0B\xAF\x27\x36"
"\xAF\x08\xB9\x61\xB7\x48\x23\x27"
"\xEE\x4D\xC8\x79\x56\x06\xEB\xC7"
"\x5B\xCA\x0A\xC6\x5E\x5C\xCB\xB6"
"\x9D\xDA\x04\x59\xE2\x09\x48\x7E"
"\x6B\x37\xC6\xFE\x92\xA9\x1E\x6E"
"\x0D\x19\xFA\x33\x0F\xEE\x36\x68"
"\x11\xBB\xF9\x5A\x73\xAB\x3A\xEA"
"\xAC\x28\xD8\xD5\x27\xE8\x6B\x16"
"\x45\x86\x50\x01\x70\x35\x99\x92"
"\xDF\x0C\x07\x88\x8B\x7F\x9E\x4B"
"\xD2\x04\x84\x90\xC4\x27\xDF\x0A"
"\x49\xA8\xA7\x1A\x6D\x78\x16\xCA"
"\xB3\x18\x5C\xC3\x93\x63\x5A\x68"
"\x77\x02\xBA\xED\x62\x71\xB1\xD9"
"\x5E\xE5\x6F\x1A\xCC\x1D\xBE\x2E"
"\x11\xF3\xA6\x97\xCA\x8E\xBF\xB4"
"\x56\xA1\x36\x6B\xB1\x0A\x3E\x70"
"\xEA\xD7\xCD\x72\x7B\x79\xC8\xAD"
"\x6B\xFE\xFB\xBA\x64\xAE\x19\xC1"
"\x82\xCF\x8A\xA1\x50\x17\x7F\xB2"
"\x6F\x7B\x0F\x52\xC5\x3E\x4A\x52"
"\x3F\xD9\x3F\x01\xA6\x41\x1A\xB3"
"\xB3\x7A\x0E\x8E\x75\xB2\xB1\x5F"
"\xDB\xEA\x84\x13\x26\x6C\x85\x4E"
"\xAE\x6B\xDC\xE7\xE7\xAD\xB0\x06"
"\x5C\xBA\x92\xD0\x30\xBB\x8D\xD2"
"\xAE\x4C\x70\x85\xA0\x07\xE3\x2C"
"\xD1\x27\x9C\xCF\xDB\x13\xB7\xE5"
"\xF9\x6A\x02\xD0\x39\x9D\xB6\xE7"
"\xD1\x17\x25\x08\xF9\xA9\xA6\x67"
"\x38\x80\xD1\x22\xAB\x1A\xD7\x26"
"\xAD\xCA\x19\x1B\xFA\x18\xA7\x57"
"\x31\xEC\xC9\xED\xDB\x79\xC0\x48"
"\xAC\x31\x9F\x03\x8B\x62\x5B\x7E"
"\x0E\xA6\xD0\x64\xEE\xEA\x00\xFC"
"\x58\xC8\xDE\x51\x4E\x17\x15\x11"
"\x66\x58\xB6\x90\xDC\xDF\xA1\x49"
"\xCA\x79\xE9\x31\x31\x42\xDC\x56"
"\x0B\xCD\xB6\x0D\xC7\x64\xF7\x19"
"\xD9\x42\x05\x7F\xBC\x2F\xFC\x90"
"\xAE\x29\x86\xAA\x43\x7A\x4F\x6B"
"\xCE\xEA\xBC\x31\x8D\x65\x9D\x46"
"\xEA\x77\xB4\xF9\x58\xEA\x5D\x84"
"\xE4\xDC\x14\xBB\xBD\x15\x0E\xDA"
"\xD8\xE4\xA4\x5D\x61\xF9\x58\x0F"
"\xE4\x82\x77\xCE\x87\xC0\x09\xF0"
"\xD6\x10\x9E\x34\xE1\x0C\x67\x55"
"\x7B\x6D\xD5\x51\x4B\x00\xEE\xBA"
"\xF2\x7B\xBE\x75\x07\x42\x9D\x99"
"\x12\xE1\x71\x4A\xF9\x2A\xF5\xF6"
"\x93\x03\xD7\x51\x09\xFA\xBE\x68"
"\xD8\x45\xFF\x33\xBA\xBB\x2B\x63",
.len = 496,
},
};
static const struct cipher_testvec aes_ofb_tv_template[] = {
/* From NIST Special Publication 800-38A, Appendix F.5 */
{
.key = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
"\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
.klen = 16,
.iv = "\x00\x01\x02\x03\x04\x05\x06\x07\x08"
"\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.ptext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a"
"\xae\x2d\x8a\x57\x1e\x03\xac\x9c"
"\x9e\xb7\x6f\xac\x45\xaf\x8e\x51"
"\x30\xc8\x1c\x46\xa3\x5c\xe4\x11"
"\xe5\xfb\xc1\x19\x1a\x0a\x52\xef"
"\xf6\x9f\x24\x45\xdf\x4f\x9b\x17"
"\xad\x2b\x41\x7b\xe6\x6c\x37\x10",
.ctext = "\x3b\x3f\xd9\x2e\xb7\x2d\xad\x20"
"\x33\x34\x49\xf8\xe8\x3c\xfb\x4a"
"\x77\x89\x50\x8d\x16\x91\x8f\x03\xf5"
"\x3c\x52\xda\xc5\x4e\xd8\x25"
"\x97\x40\x05\x1e\x9c\x5f\xec\xf6\x43"
"\x44\xf7\xa8\x22\x60\xed\xcc"
"\x30\x4c\x65\x28\xf6\x59\xc7\x78"
"\x66\xa5\x10\xd9\xc1\xd6\xae\x5e",
.len = 64,
}
};
static const struct cipher_testvec aes_cfb8_tv_template[] = {
{
.key = "\x2b\x7e\x15\x16\x28\xae\xd2\xa6"
"\xab\xf7\x15\x88\x09\xcf\x4f\x3c",
.klen = 16,
.iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.ptext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a",
.ctext = "\x3b\x79\x42\x4c\x9c\x0d\xd4\x36"
"\xba\xce\x9e\x0e\xd4\x58\x6a\x4f",
.len = 16,
},
{
.key = "\x8e\x73\xb0\xf7\xda\x0e\x64\x52"
"\xc8\x10\xf3\x2b\x80\x90\x79\xe5"
"\x62\xf8\xea\xd2\x52\x2c\x6b\x7b",
.klen = 24,
.iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.ptext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a",
.ctext = "\xcd\xa2\x52\x1e\xf0\xa9\x05\xca"
"\x44\xcd\x05\x7c\xbf\x0d\x47\xa0",
.len = 16,
},
{
.key = "\x60\x3d\xeb\x10\x15\xca\x71\xbe"
"\x2b\x73\xae\xf0\x85\x7d\x77\x81"
"\x1f\x35\x2c\x07\x3b\x61\x08\xd7"
"\x2d\x98\x10\xa3\x09\x14\xdf\xf4",
.klen = 32,
.iv = "\x00\x01\x02\x03\x04\x05\x06\x07"
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
.ptext = "\x6b\xc1\xbe\xe2\x2e\x40\x9f\x96"
"\xe9\x3d\x7e\x11\x73\x93\x17\x2a",
.ctext = "\xdc\x1f\x1a\x85\x20\xa6\x4d\xb5"
"\x5f\xcc\x8a\xc5\x54\x84\x4e\x88",
.len = 16,
}
};
static const struct cipher_testvec des_ofb_tv_template[] = {
{
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
.ptext = "\x4e\x6f\x77\x20\x69\x73\x20\x74"
"\x68\x65\x20\x74\x69\x6d\x65\x20",
.ctext = "\xf3\x09\x62\x49\xc7\xf4\x6e\x51"
"\x35\xf2\x4a\x24\x2e\xeb\x3d\x3f",
.len = 16,
}
};
static const struct cipher_testvec des_cfb8_tv_template[] = {
{
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
.klen = 8,
.iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
.ptext = "\x4e\x6f\x77\x20\x69\x73\x20\x74",
.ctext = "\xf3\x1f\xda\x07\x01\x14\x62\xee",
.len = 8,
}
};
static const struct cipher_testvec des3_ede_ofb_tv_template[] = {
{
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
"\x23\x45\x67\x89\xab\xcd\xef\x01"
"\x45\x67\x89\xab\xcd\xef\x01\x23",
.klen = 24,
.iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
.ptext = "\x4e\x6f\x77\x20\x69\x73\x20\x74"
"\x43\xe9\x34\x00\x8c\x38\x9c\x0f",
.ctext = "\xee\x7e\xc7\x5c\x1a\x10\x13\x01"
"\xb1\x06\x75\x74\xe7\x33\x77\x28",
.len = 16,
}
};
static const struct cipher_testvec des3_ede_cfb8_tv_template[] = {
{
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
"\x23\x45\x67\x89\xab\xcd\xef\x01"
"\x45\x67\x89\xab\xcd\xef\x01\x23",
.klen = 24,
.iv = "\x12\x34\x56\x78\x90\xab\xcd\xef",
.ptext = "\x00\x00\x00\x7f\x00\x00\x00\x00",
.ctext = "\xa0\xd4\x63\xa4\xa0\x63\x3d\x1f",
.len = 8,
}
};
struct cipher_test_info cipher_test_list[] = {
{ CRYPTO_AES_CBC, aes_cbc_tv_template, ARRAY_SIZE(aes_cbc_tv_template) },
{ CRYPTO_AES_OFB, aes_ofb_tv_template, ARRAY_SIZE(aes_ofb_tv_template) },
{ CRYPTO_AES_CTR, aes_ctr_tv_template, ARRAY_SIZE(aes_ctr_tv_template) },
{ CRYPTO_AES_ECB, aes_ecb_tv_template, ARRAY_SIZE(aes_ecb_tv_template) },
{ CRYPTO_AES_CFB, aes_cfb8_tv_template, ARRAY_SIZE(aes_cfb8_tv_template)},
{ CRYPTO_DES_CBC, des_cbc_tv_template, ARRAY_SIZE(des_cbc_tv_template) },
{ CRYPTO_DES_ECB, des_ecb_tv_template, ARRAY_SIZE(des_ecb_tv_template) },
{ CRYPTO_DES_OFB, des_ofb_tv_template, ARRAY_SIZE(des_ofb_tv_template) },
//{ CRYPTO_DES_CFB, des_cfb8_tv_template, ARRAY_SIZE(des_cfb8_tv_template) },
{ CRYPTO_3DES_CBC, des3_ede_cbc_tv_template, ARRAY_SIZE(des3_ede_cbc_tv_template) },
{ CRYPTO_3DES_ECB, des3_ecb_ede_tv_template, ARRAY_SIZE(des3_ecb_ede_tv_template) },
{ CRYPTO_3DES_OFB, des3_ede_ofb_tv_template, ARRAY_SIZE(des3_ede_ofb_tv_template) },
//{ CRYPTO_3DES_CFB, des3_ede_cfb8_tv_template, ARRAY_SIZE(des3_ede_cfb8_tv_template) },
};
struct cipher_test_info cipher_efuse_key_test_list[] = {
{ CRYPTO_AES_CBC, aes_cbc_tv_template, ARRAY_SIZE(aes_cbc_tv_template) },
{ CRYPTO_AES_OFB, aes_ofb_tv_template, ARRAY_SIZE(aes_ofb_tv_template) },
{ CRYPTO_AES_ECB, aes_ecb_tv_template, ARRAY_SIZE(aes_ecb_tv_template) },
};
#endif