|
|
|
/*
|
|
|
|
* Quick & dirty crypto testing module.
|
|
|
|
*
|
|
|
|
* This will only exist until we have a better testing mechanism
|
|
|
|
* (e.g. a char device).
|
|
|
|
*
|
|
|
|
* Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
|
|
|
|
* Copyright (c) 2002 Jean-Francois Dive <jef@linuxbe.org>
|
|
|
|
* Copyright (c) 2007 Nokia Siemens Networks
|
|
|
|
*
|
|
|
|
* 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_TCRYPT_H
|
|
|
|
#define _CRYPTO_TCRYPT_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 char tap[MAX_TAP];
|
|
|
|
int 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 wk; /* weak key flag */
|
|
|
|
unsigned char klen;
|
|
|
|
unsigned short ilen;
|
|
|
|
unsigned short alen;
|
|
|
|
unsigned short rlen;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct hash_speed {
|
|
|
|
unsigned int blen; /* buffer length */
|
|
|
|
unsigned int plen; /* per-update length */
|
|
|
|
};
|
|
|
|
|
|
|
|
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
|
|
|
|
*/
|
|
|
|
#define SHA1_TEST_VECTORS 2
|
|
|
|
|
|
|
|
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 }
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* 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",
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* 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,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* 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 6
|
|
|
|
#define BF_DEC_TEST_VECTORS 6
|
|
|
|
#define BF_CBC_ENC_TEST_VECTORS 1
|
|
|
|
#define BF_CBC_DEC_TEST_VECTORS 1
|
|
|
|
|
|
|
|
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,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
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,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
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,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
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,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Twofish test vectors.
|
|
|
|
*/
|
|
|
|
#define TF_ENC_TEST_VECTORS 3
|
|
|
|
#define TF_DEC_TEST_VECTORS 3
|
|
|
|
#define TF_CBC_ENC_TEST_VECTORS 4
|
|
|
|
#define TF_CBC_DEC_TEST_VECTORS 4
|
|
|
|
|
|
|
|
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,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
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,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
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,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
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,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Serpent test vectors. These are backwards because Serpent writes
|
|
|
|
* octet sequences in right-to-left mode.
|
|
|
|
*/
|
|
|
|
#define SERPENT_ENC_TEST_VECTORS 4
|
|
|
|
#define SERPENT_DEC_TEST_VECTORS 4
|
|
|
|
|
|
|
|
#define TNEPRES_ENC_TEST_VECTORS 4
|
|
|
|
#define TNEPRES_DEC_TEST_VECTORS 4
|
|
|
|
|
|
|
|
static struct cipher_testvec serpent_enc_tv_template[] = {
|
|
|
|
{
|
|
|
|
.input = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
|
|
|
|
"\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
|
|
|
|
"\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
|
|
|
|
.rlen = 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,
|
|
|
|
.input = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
|
|
|
|
"\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
|
|
|
|
.klen = 16,
|
|
|
|
.input = zeroed_string,
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
|
|
|
|
"\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
|
|
|
|
.rlen = 16,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec tnepres_enc_tv_template[] = {
|
|
|
|
{ /* KeySize=128, PT=0, I=1 */
|
|
|
|
.input = "\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.key = "\x80\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.klen = 16,
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x49\xaf\xbf\xad\x9d\x5a\x34\x05"
|
|
|
|
"\x2c\xd8\xff\xa5\x98\x6b\xd2\xdd",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* KeySize=192, PT=0, I=1 */
|
|
|
|
.key = "\x80\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.klen = 24,
|
|
|
|
.input = "\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xe7\x8e\x54\x02\xc7\x19\x55\x68"
|
|
|
|
"\xac\x36\x78\xf7\xa3\xf6\x0c\x66",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* KeySize=256, PT=0, I=1 */
|
|
|
|
.key = "\x80\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,
|
|
|
|
.input = "\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xab\xed\x96\xe7\x66\xbf\x28\xcb"
|
|
|
|
"\xc0\xeb\xd2\x1a\x82\xef\x08\x19",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* KeySize=256, I=257 */
|
|
|
|
.key = "\x1f\x1e\x1d\x1c\x1b\x1a\x19\x18"
|
|
|
|
"\x17\x16\x15\x14\x13\x12\x11\x10"
|
|
|
|
"\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
|
|
|
|
"\x07\x06\x05\x04\x03\x02\x01\x00",
|
|
|
|
.klen = 32,
|
|
|
|
.input = "\x0f\x0e\x0d\x0c\x0b\x0a\x09\x08"
|
|
|
|
"\x07\x06\x05\x04\x03\x02\x01\x00",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x5c\xe7\x1c\x70\xd2\x88\x2e\x5b"
|
|
|
|
"\xb8\x32\xe4\x33\xf8\x9f\x26\xde",
|
|
|
|
.rlen = 16,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
static struct cipher_testvec serpent_dec_tv_template[] = {
|
|
|
|
{
|
|
|
|
.input = "\x12\x07\xfc\xce\x9b\xd0\xd6\x47"
|
|
|
|
"\x6a\xe9\x8f\xbe\xd1\x43\xa0\xe2",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x4c\x7d\x8a\x32\x80\x72\xa2\x2c"
|
|
|
|
"\x82\x3e\x4a\x1f\x3a\xcd\xa1\x6d",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.rlen = 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,
|
|
|
|
.input = "\xde\x26\x9f\xf8\x33\xe4\x32\xb8"
|
|
|
|
"\x5b\x2e\x88\xd2\x70\x1c\xe7\x5c",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xdd\xd2\x6b\x98\xa5\xff\xd8\x2c"
|
|
|
|
"\x05\x34\x5a\x9d\xad\xbf\xaf\x49",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = zeroed_string,
|
|
|
|
.rlen = 16,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec tnepres_dec_tv_template[] = {
|
|
|
|
{
|
|
|
|
.input = "\x41\xcc\x6b\x31\x59\x31\x45\x97"
|
|
|
|
"\x6d\x6f\xbb\x38\x4b\x37\x21\x28",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xea\xf4\xd7\xfc\xd8\x01\x34\x47"
|
|
|
|
"\x81\x45\x0b\xfa\x0c\xd6\xad\x6e",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.rlen = 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,
|
|
|
|
.input = "\x64\xa9\x1a\x37\xed\x9f\xe7\x49"
|
|
|
|
"\xa8\x4e\x76\xd6\xf5\x0d\x78\xee",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* KeySize=128, I=121 */
|
|
|
|
.key = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x3d\xda\xbf\xc0\x06\xda\xab\x06"
|
|
|
|
"\x46\x2a\xf4\xef\x81\x54\x4e\x26",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = zeroed_string,
|
|
|
|
.rlen = 16,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/* Cast6 test vectors from RFC 2612 */
|
|
|
|
#define CAST6_ENC_TEST_VECTORS 3
|
|
|
|
#define CAST6_DEC_TEST_VECTORS 3
|
|
|
|
|
|
|
|
static struct cipher_testvec cast6_enc_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
|
|
|
|
"\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
|
|
|
|
.klen = 16,
|
|
|
|
.input = zeroed_string,
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
|
|
|
|
"\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
|
|
|
|
"\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
|
|
|
|
"\xba\xc7\x7a\x77\x17\x94\x28\x63",
|
|
|
|
.klen = 24,
|
|
|
|
.input = zeroed_string,
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
|
|
|
|
"\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
|
|
|
|
"\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
|
|
|
|
"\x8d\x7c\x47\xce\x26\x49\x08\x46"
|
|
|
|
"\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
|
|
|
|
.klen = 32,
|
|
|
|
.input = zeroed_string,
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
|
|
|
|
"\xc9\x87\x01\x36\x55\x33\x17\xfa",
|
|
|
|
.rlen = 16,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec cast6_dec_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
|
|
|
|
"\x0a\xf7\x56\x47\xf2\x9f\x61\x5d",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xc8\x42\xa0\x89\x72\xb4\x3d\x20"
|
|
|
|
"\x83\x6c\x91\xd1\xb7\x53\x0f\x6b",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = zeroed_string,
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
|
|
|
|
"\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
|
|
|
|
"\xba\xc7\x7a\x77\x17\x94\x28\x63",
|
|
|
|
.klen = 24,
|
|
|
|
.input = "\x1b\x38\x6c\x02\x10\xdc\xad\xcb"
|
|
|
|
"\xdd\x0e\x41\xaa\x08\xa7\xa7\xe8",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = zeroed_string,
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x23\x42\xbb\x9e\xfa\x38\x54\x2c"
|
|
|
|
"\xbe\xd0\xac\x83\x94\x0a\xc2\x98"
|
|
|
|
"\x8d\x7c\x47\xce\x26\x49\x08\x46"
|
|
|
|
"\x1c\xc1\xb5\x13\x7a\xe6\xb6\x04",
|
|
|
|
.klen = 32,
|
|
|
|
.input = "\x4f\x6a\x20\x38\x28\x68\x97\xb9"
|
|
|
|
"\xc9\x87\x01\x36\x55\x33\x17\xfa",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = zeroed_string,
|
|
|
|
.rlen = 16,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
* AES test vectors.
|
|
|
|
*/
|
|
|
|
#define AES_ENC_TEST_VECTORS 3
|
|
|
|
#define AES_DEC_TEST_VECTORS 3
|
|
|
|
#define AES_CBC_ENC_TEST_VECTORS 4
|
|
|
|
#define AES_CBC_DEC_TEST_VECTORS 4
|
|
|
|
#define AES_LRW_ENC_TEST_VECTORS 8
|
|
|
|
#define AES_LRW_DEC_TEST_VECTORS 8
|
|
|
|
#define AES_XTS_ENC_TEST_VECTORS 4
|
|
|
|
#define AES_XTS_DEC_TEST_VECTORS 4
|
|
|
|
#define AES_CTR_ENC_TEST_VECTORS 7
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
#define AES_CTR_DEC_TEST_VECTORS 6
|
|
|
|
#define AES_GCM_ENC_TEST_VECTORS 9
|
|
|
|
#define AES_GCM_DEC_TEST_VECTORS 8
|
|
|
|
#define AES_CCM_ENC_TEST_VECTORS 7
|
|
|
|
#define AES_CCM_DEC_TEST_VECTORS 7
|
|
|
|
|
|
|
|
static struct cipher_testvec aes_enc_tv_template[] = {
|
|
|
|
{ /* From FIPS-197 */
|
|
|
|
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x00\x11\x22\x33\x44\x55\x66\x77"
|
|
|
|
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
|
|
|
|
"\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
|
|
|
|
.rlen = 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,
|
|
|
|
.input = "\x00\x11\x22\x33\x44\x55\x66\x77"
|
|
|
|
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
|
|
|
|
"\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
|
|
|
|
.rlen = 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,
|
|
|
|
.input = "\x00\x11\x22\x33\x44\x55\x66\x77"
|
|
|
|
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
|
|
|
|
"\xea\xfc\x49\x90\x4b\x49\x60\x89",
|
|
|
|
.rlen = 16,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec aes_dec_tv_template[] = {
|
|
|
|
{ /* From FIPS-197 */
|
|
|
|
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x69\xc4\xe0\xd8\x6a\x7b\x04\x30"
|
|
|
|
"\xd8\xcd\xb7\x80\x70\xb4\xc5\x5a",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x00\x11\x22\x33\x44\x55\x66\x77"
|
|
|
|
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
|
|
|
|
.rlen = 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,
|
|
|
|
.input = "\xdd\xa9\x7c\xa4\x86\x4c\xdf\xe0"
|
|
|
|
"\x6e\xaf\x70\xa0\xec\x0d\x71\x91",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x00\x11\x22\x33\x44\x55\x66\x77"
|
|
|
|
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
|
|
|
|
.rlen = 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,
|
|
|
|
.input = "\x8e\xa2\xb7\xca\x51\x67\x45\xbf"
|
|
|
|
"\xea\xfc\x49\x90\x4b\x49\x60\x89",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x00\x11\x22\x33\x44\x55\x66\x77"
|
|
|
|
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff",
|
|
|
|
.rlen = 16,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec aes_cbc_enc_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",
|
|
|
|
.input = "Single block msg",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
|
|
|
|
"\x27\x08\x94\x2d\xbe\x77\x18\x1a",
|
|
|
|
.rlen = 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",
|
|
|
|
.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",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = "\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",
|
|
|
|
.rlen = 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",
|
|
|
|
.input = "\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",
|
|
|
|
.ilen = 64,
|
|
|
|
.result = "\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",
|
|
|
|
.rlen = 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",
|
|
|
|
.input = "\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",
|
|
|
|
.ilen = 64,
|
|
|
|
.result = "\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",
|
|
|
|
.rlen = 64,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec aes_cbc_dec_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",
|
|
|
|
.input = "\xe3\x53\x77\x9c\x10\x79\xae\xb8"
|
|
|
|
"\x27\x08\x94\x2d\xbe\x77\x18\x1a",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "Single block msg",
|
|
|
|
.rlen = 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",
|
|
|
|
.input = "\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",
|
|
|
|
.ilen = 32,
|
|
|
|
.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",
|
|
|
|
.rlen = 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",
|
|
|
|
.input = "\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",
|
|
|
|
.ilen = 64,
|
|
|
|
.result = "\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",
|
|
|
|
.rlen = 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",
|
|
|
|
.input = "\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",
|
|
|
|
.ilen = 64,
|
|
|
|
.result = "\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",
|
|
|
|
.rlen = 64,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec aes_lrw_enc_tv_template[] = {
|
|
|
|
/* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
|
|
|
|
{ /* LRW-32-AES 1 */
|
|
|
|
.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 = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
|
|
|
|
"\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* LRW-32-AES 2 */
|
|
|
|
.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 = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
|
|
|
|
"\x27\x4f\x07\x69\xb2\x60\xe1\x36",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* LRW-32-AES 3 */
|
|
|
|
.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 = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
|
|
|
|
"\xf9\x59\x62\x03\x69\x0e\x5e\x01",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* LRW-32-AES 4 */
|
|
|
|
.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 = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
|
|
|
|
"\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* LRW-32-AES 5 */
|
|
|
|
.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 = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
|
|
|
|
"\xc8\x60\x48\x02\x87\xe3\x34\x06",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* LRW-32-AES 6 */
|
|
|
|
.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 = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
|
|
|
|
"\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* LRW-32-AES 7 */
|
|
|
|
.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 = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
|
|
|
|
"\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
|
|
|
|
.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 = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
|
|
|
|
"\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
|
|
|
|
"\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
|
|
|
|
"\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
|
|
|
|
"\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
|
|
|
|
"\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
|
|
|
|
"\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
|
|
|
|
"\xe8\x58\x46\x97\x39\x51\x07\xde"
|
|
|
|
"\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
|
|
|
|
"\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
|
|
|
|
"\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
|
|
|
|
"\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
|
|
|
|
"\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
|
|
|
|
"\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
|
|
|
|
"\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
|
|
|
|
"\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
|
|
|
|
"\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
|
|
|
|
"\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
|
|
|
|
"\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
|
|
|
|
"\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
|
|
|
|
"\x18\x55\xa1\x24\x0b\x24\x24\xaf"
|
|
|
|
"\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
|
|
|
|
"\xff\xed\x89\xce\xd5\x3d\x88\xf3"
|
|
|
|
"\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
|
|
|
|
"\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
|
|
|
|
"\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
|
|
|
|
"\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
|
|
|
|
"\x41\x30\x58\xc5\x62\x74\x52\x1d"
|
|
|
|
"\x45\x24\x6a\x42\x64\x4f\x97\x1c"
|
|
|
|
"\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
|
|
|
|
"\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
|
|
|
|
"\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
|
|
|
|
"\xe4\x81\x84\x95\x36\x59\x7a\x6b"
|
|
|
|
"\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
|
|
|
|
"\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
|
|
|
|
"\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
|
|
|
|
"\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
|
|
|
|
"\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
|
|
|
|
"\xb8\x79\x78\x97\x94\xff\x72\x13"
|
|
|
|
"\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
|
|
|
|
"\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
|
|
|
|
"\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
|
|
|
|
"\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
|
|
|
|
"\xcc\xce\x51\x0c\x19\x8a\x82\x30"
|
|
|
|
"\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
|
|
|
|
"\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
|
|
|
|
"\x1e\x86\x53\x11\x53\x94\x00\xee"
|
|
|
|
"\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
|
|
|
|
"\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
|
|
|
|
"\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
|
|
|
|
"\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
|
|
|
|
"\x9e\xfa\x31\x18\x45\x3c\x21\x33"
|
|
|
|
"\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
|
|
|
|
"\x03\xad\x1b\x48\xd4\x67\x27\xf0"
|
|
|
|
"\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
|
|
|
|
"\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
|
|
|
|
"\xf7\x11\x90\xec\xbd\x51\x5c\x32"
|
|
|
|
"\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
|
|
|
|
"\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
|
|
|
|
"\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
|
|
|
|
"\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
|
|
|
|
"\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
|
|
|
|
"\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
|
|
|
|
"\x74\x3f\x7d\x58\x88\x75\xde\x3e",
|
|
|
|
.rlen = 512,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec aes_lrw_dec_tv_template[] = {
|
|
|
|
/* from http://grouper.ieee.org/groups/1619/email/pdf00017.pdf */
|
|
|
|
/* same as enc vectors with input and result reversed */
|
|
|
|
{ /* LRW-32-AES 1 */
|
|
|
|
.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 = "\xf1\xb2\x73\xcd\x65\xa3\xdf\x5f"
|
|
|
|
"\xe9\x5d\x48\x92\x54\x63\x4e\xb8",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x30\x31\x32\x33\x34\x35\x36\x37"
|
|
|
|
"\x38\x39\x41\x42\x43\x44\x45\x46",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* LRW-32-AES 2 */
|
|
|
|
.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 = "\x00\xc8\x2b\xae\x95\xbb\xcd\xe5"
|
|
|
|
"\x27\x4f\x07\x69\xb2\x60\xe1\x36",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x30\x31\x32\x33\x34\x35\x36\x37"
|
|
|
|
"\x38\x39\x41\x42\x43\x44\x45\x46",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* LRW-32-AES 3 */
|
|
|
|
.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 = "\x76\x32\x21\x83\xed\x8f\xf1\x82"
|
|
|
|
"\xf9\x59\x62\x03\x69\x0e\x5e\x01",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x30\x31\x32\x33\x34\x35\x36\x37"
|
|
|
|
"\x38\x39\x41\x42\x43\x44\x45\x46",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* LRW-32-AES 4 */
|
|
|
|
.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 = "\x9c\x0f\x15\x2f\x55\xa2\xd8\xf0"
|
|
|
|
"\xd6\x7b\x8f\x9e\x28\x22\xbc\x41",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x30\x31\x32\x33\x34\x35\x36\x37"
|
|
|
|
"\x38\x39\x41\x42\x43\x44\x45\x46",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* LRW-32-AES 5 */
|
|
|
|
.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 = "\xd4\x27\x6a\x7f\x14\x91\x3d\x65"
|
|
|
|
"\xc8\x60\x48\x02\x87\xe3\x34\x06",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x30\x31\x32\x33\x34\x35\x36\x37"
|
|
|
|
"\x38\x39\x41\x42\x43\x44\x45\x46",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* LRW-32-AES 6 */
|
|
|
|
.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 = "\xbd\x06\xb8\xe1\xdb\x98\x89\x9e"
|
|
|
|
"\xc4\x98\xe4\x91\xcf\x1c\x70\x2b",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x30\x31\x32\x33\x34\x35\x36\x37"
|
|
|
|
"\x38\x39\x41\x42\x43\x44\x45\x46",
|
|
|
|
.rlen = 16,
|
|
|
|
}, { /* LRW-32-AES 7 */
|
|
|
|
.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 = "\x5b\x90\x8e\xc1\xab\xdd\x67\x5f"
|
|
|
|
"\x3d\x69\x8a\x95\x53\xc8\x9c\xe5",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x30\x31\x32\x33\x34\x35\x36\x37"
|
|
|
|
"\x38\x39\x41\x42\x43\x44\x45\x46",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
/* http://www.mail-archive.com/stds-p1619@listserv.ieee.org/msg00173.html */
|
|
|
|
.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 = "\x1a\x1d\xa9\x30\xad\xf9\x2f\x9b"
|
|
|
|
"\xb6\x1d\xae\xef\xf0\x2f\xf8\x5a"
|
|
|
|
"\x39\x3c\xbf\x2a\xb2\x45\xb2\x23"
|
|
|
|
"\x1b\x63\x3c\xcf\xaa\xbe\xcf\x4e"
|
|
|
|
"\xfa\xe8\x29\xc2\x20\x68\x2b\x3c"
|
|
|
|
"\x2e\x8b\xf7\x6e\x25\xbd\xe3\x3d"
|
|
|
|
"\x66\x27\xd6\xaf\xd6\x64\x3e\xe3"
|
|
|
|
"\xe8\x58\x46\x97\x39\x51\x07\xde"
|
|
|
|
"\xcb\x37\xbc\xa9\xc0\x5f\x75\xc3"
|
|
|
|
"\x0e\x84\x23\x1d\x16\xd4\x1c\x59"
|
|
|
|
"\x9c\x1a\x02\x55\xab\x3a\x97\x1d"
|
|
|
|
"\xdf\xdd\xc7\x06\x51\xd7\x70\xae"
|
|
|
|
"\x23\xc6\x8c\xf5\x1e\xa0\xe5\x82"
|
|
|
|
"\xb8\xb2\xbf\x04\xa0\x32\x8e\x68"
|
|
|
|
"\xeb\xaf\x6e\x2d\x94\x22\x2f\xce"
|
|
|
|
"\x4c\xb5\x59\xe2\xa2\x2f\xa0\x98"
|
|
|
|
"\x1a\x97\xc6\xd4\xb5\x00\x59\xf2"
|
|
|
|
"\x84\x14\x72\xb1\x9a\x6e\xa3\x7f"
|
|
|
|
"\xea\x20\xe7\xcb\x65\x77\x3a\xdf"
|
|
|
|
"\xc8\x97\x67\x15\xc2\x2a\x27\xcc"
|
|
|
|
"\x18\x55\xa1\x24\x0b\x24\x24\xaf"
|
|
|
|
"\x5b\xec\x68\xb8\xc8\xf5\xba\x63"
|
|
|
|
"\xff\xed\x89\xce\xd5\x3d\x88\xf3"
|
|
|
|
"\x25\xef\x05\x7c\x3a\xef\xeb\xd8"
|
|
|
|
"\x7a\x32\x0d\xd1\x1e\x58\x59\x99"
|
|
|
|
"\x90\x25\xb5\x26\xb0\xe3\x2b\x6c"
|
|
|
|
"\x4c\xa9\x8b\x84\x4f\x5e\x01\x50"
|
|
|
|
"\x41\x30\x58\xc5\x62\x74\x52\x1d"
|
|
|
|
"\x45\x24\x6a\x42\x64\x4f\x97\x1c"
|
|
|
|
"\xa8\x66\xb5\x6d\x79\xd4\x0d\x48"
|
|
|
|
"\xc5\x5f\xf3\x90\x32\xdd\xdd\xe1"
|
|
|
|
"\xe4\xa9\x9f\xfc\xc3\x52\x5a\x46"
|
|
|
|
"\xe4\x81\x84\x95\x36\x59\x7a\x6b"
|
|
|
|
"\xaa\xb3\x60\xad\xce\x9f\x9f\x28"
|
|
|
|
"\xe0\x01\x75\x22\xc4\x4e\xa9\x62"
|
|
|
|
"\x5c\x62\x0d\x00\xcb\x13\xe8\x43"
|
|
|
|
"\x72\xd4\x2d\x53\x46\xb5\xd1\x16"
|
|
|
|
"\x22\x18\xdf\x34\x33\xf5\xd6\x1c"
|
|
|
|
"\xb8\x79\x78\x97\x94\xff\x72\x13"
|
|
|
|
"\x4c\x27\xfc\xcb\xbf\x01\x53\xa6"
|
|
|
|
"\xb4\x50\x6e\xde\xdf\xb5\x43\xa4"
|
|
|
|
"\x59\xdf\x52\xf9\x7c\xe0\x11\x6f"
|
|
|
|
"\x2d\x14\x8e\x24\x61\x2c\xe1\x17"
|
|
|
|
"\xcc\xce\x51\x0c\x19\x8a\x82\x30"
|
|
|
|
"\x94\xd5\x3d\x6a\x53\x06\x5e\xbd"
|
|
|
|
"\xb7\xeb\xfa\xfd\x27\x51\xde\x85"
|
|
|
|
"\x1e\x86\x53\x11\x53\x94\x00\xee"
|
|
|
|
"\x2b\x8c\x08\x2a\xbf\xdd\xae\x11"
|
|
|
|
"\xcb\x1e\xa2\x07\x9a\x80\xcf\x62"
|
|
|
|
"\x9b\x09\xdc\x95\x3c\x96\x8e\xb1"
|
|
|
|
"\x09\xbd\xe4\xeb\xdb\xca\x70\x7a"
|
|
|
|
"\x9e\xfa\x31\x18\x45\x3c\x21\x33"
|
|
|
|
"\xb0\xb3\x2b\xea\xf3\x71\x2d\xe1"
|
|
|
|
"\x03\xad\x1b\x48\xd4\x67\x27\xf0"
|
|
|
|
"\x62\xe4\x3d\xfb\x9b\x08\x76\xe7"
|
|
|
|
"\xdd\x2b\x01\x39\x04\x5a\x58\x7a"
|
|
|
|
"\xf7\x11\x90\xec\xbd\x51\x5c\x32"
|
|
|
|
"\x6b\xd7\x35\x39\x02\x6b\xf2\xa6"
|
|
|
|
"\xd0\x0d\x07\xe1\x06\xc4\x5b\x7d"
|
|
|
|
"\xe4\x6a\xd7\xee\x15\x1f\x83\xb4"
|
|
|
|
"\xa3\xa7\x5e\xc3\x90\xb7\xef\xd3"
|
|
|
|
"\xb7\x4f\xf8\x92\x4c\xb7\x3c\x29"
|
|
|
|
"\xcd\x7e\x2b\x5d\x43\xea\x42\xe7"
|
|
|
|
"\x74\x3f\x7d\x58\x88\x75\xde\x3e",
|
|
|
|
.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,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec aes_xts_enc_tv_template[] = {
|
|
|
|
/* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
|
|
|
|
{ /* XTS-AES 1 */
|
|
|
|
.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 = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
|
|
|
|
"\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
|
|
|
|
"\xcd\x43\xd2\xf5\x95\x98\xed\x85"
|
|
|
|
"\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
|
|
|
|
.rlen = 32,
|
|
|
|
}, { /* XTS-AES 2 */
|
|
|
|
.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 = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
|
|
|
|
"\x39\x33\x40\x38\xac\xef\x83\x8b"
|
|
|
|
"\xfb\x18\x6f\xff\x74\x80\xad\xc4"
|
|
|
|
"\x28\x93\x82\xec\xd6\xd3\x94\xf0",
|
|
|
|
.rlen = 32,
|
|
|
|
}, { /* XTS-AES 3 */
|
|
|
|
.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 = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
|
|
|
|
"\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
|
|
|
|
"\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
|
|
|
|
"\x21\x86\xa5\x97\x1a\x22\x7a\x89",
|
|
|
|
.rlen = 32,
|
|
|
|
}, { /* XTS-AES 4 */
|
|
|
|
.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 = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
|
|
|
|
"\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
|
|
|
|
"\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
|
|
|
|
"\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
|
|
|
|
"\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
|
|
|
|
"\x83\x33\xd8\xfa\x7f\x56\x00\x00"
|
|
|
|
"\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
|
|
|
|
"\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
|
|
|
|
"\x32\x80\x63\xfd\x2a\xab\x53\xe5"
|
|
|
|
"\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
|
|
|
|
"\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
|
|
|
|
"\x51\x2c\x88\x66\xc7\xe8\x60\xce"
|
|
|
|
"\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
|
|
|
|
"\x22\x97\x61\x46\xae\x20\xce\x84"
|
|
|
|
"\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
|
|
|
|
"\xae\xf2\x0c\x0d\x61\xad\x02\x65"
|
|
|
|
"\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
|
|
|
|
"\x52\xc6\x51\xd3\x31\x74\xbe\x51"
|
|
|
|
"\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
|
|
|
|
"\x88\xed\xe8\x21\x03\xa2\x52\xd8"
|
|
|
|
"\xa7\x50\xe8\x76\x8d\xef\xff\xed"
|
|
|
|
"\x91\x22\x81\x0a\xae\xb9\x9f\x91"
|
|
|
|
"\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
|
|
|
|
"\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
|
|
|
|
"\x13\x32\xe4\xca\x60\x48\x2a\x4b"
|
|
|
|
"\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
|
|
|
|
"\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
|
|
|
|
"\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
|
|
|
|
"\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
|
|
|
|
"\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
|
|
|
|
"\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
|
|
|
|
"\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
|
|
|
|
"\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
|
|
|
|
"\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
|
|
|
|
"\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
|
|
|
|
"\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
|
|
|
|
"\x1e\x08\x29\x85\x16\xe2\xc9\xed"
|
|
|
|
"\x03\xff\x3c\x1b\x78\x60\xf6\xde"
|
|
|
|
"\x76\xd4\xce\xcd\x94\xc8\x11\x98"
|
|
|
|
"\x55\xef\x52\x97\xca\x67\xe9\xf3"
|
|
|
|
"\xe7\xff\x72\xb1\xe9\x97\x85\xca"
|
|
|
|
"\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
|
|
|
|
"\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
|
|
|
|
"\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
|
|
|
|
"\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
|
|
|
|
"\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
|
|
|
|
"\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
|
|
|
|
"\x99\x02\x7a\x78\x57\x2a\xee\xbd"
|
|
|
|
"\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
|
|
|
|
"\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
|
|
|
|
"\x18\x84\x69\x77\xae\x11\x9f\x7a"
|
|
|
|
"\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
|
|
|
|
"\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
|
|
|
|
"\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
|
|
|
|
"\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
|
|
|
|
"\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
|
|
|
|
"\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
|
|
|
|
"\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
|
|
|
|
"\x44\x92\x77\xdb\xd4\x77\xef\x2c"
|
|
|
|
"\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
|
|
|
|
"\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
|
|
|
|
"\xf2\x62\x73\x57\x79\xa4\x18\xf2"
|
|
|
|
"\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
|
|
|
|
"\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
|
|
|
|
.rlen = 512,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec aes_xts_dec_tv_template[] = {
|
|
|
|
/* http://grouper.ieee.org/groups/1619/email/pdf00086.pdf */
|
|
|
|
{ /* XTS-AES 1 */
|
|
|
|
.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 = "\x91\x7c\xf6\x9e\xbd\x68\xb2\xec"
|
|
|
|
"\x9b\x9f\xe9\xa3\xea\xdd\xa6\x92"
|
|
|
|
"\xcd\x43\xd2\xf5\x95\x98\xed\x85"
|
|
|
|
"\x8c\x02\xc2\x65\x2f\xbf\x92\x2e",
|
|
|
|
.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,
|
|
|
|
}, { /* XTS-AES 2 */
|
|
|
|
.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 = "\xc4\x54\x18\x5e\x6a\x16\x93\x6e"
|
|
|
|
"\x39\x33\x40\x38\xac\xef\x83\x8b"
|
|
|
|
"\xfb\x18\x6f\xff\x74\x80\xad\xc4"
|
|
|
|
"\x28\x93\x82\xec\xd6\xd3\x94\xf0",
|
|
|
|
.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,
|
|
|
|
}, { /* XTS-AES 3 */
|
|
|
|
.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 = "\xaf\x85\x33\x6b\x59\x7a\xfc\x1a"
|
|
|
|
"\x90\x0b\x2e\xb2\x1e\xc9\x49\xd2"
|
|
|
|
"\x92\xdf\x4c\x04\x7e\x0b\x21\x53"
|
|
|
|
"\x21\x86\xa5\x97\x1a\x22\x7a\x89",
|
|
|
|
.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,
|
|
|
|
}, { /* XTS-AES 4 */
|
|
|
|
.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 = "\x27\xa7\x47\x9b\xef\xa1\xd4\x76"
|
|
|
|
"\x48\x9f\x30\x8c\xd4\xcf\xa6\xe2"
|
|
|
|
"\xa9\x6e\x4b\xbe\x32\x08\xff\x25"
|
|
|
|
"\x28\x7d\xd3\x81\x96\x16\xe8\x9c"
|
|
|
|
"\xc7\x8c\xf7\xf5\xe5\x43\x44\x5f"
|
|
|
|
"\x83\x33\xd8\xfa\x7f\x56\x00\x00"
|
|
|
|
"\x05\x27\x9f\xa5\xd8\xb5\xe4\xad"
|
|
|
|
"\x40\xe7\x36\xdd\xb4\xd3\x54\x12"
|
|
|
|
"\x32\x80\x63\xfd\x2a\xab\x53\xe5"
|
|
|
|
"\xea\x1e\x0a\x9f\x33\x25\x00\xa5"
|
|
|
|
"\xdf\x94\x87\xd0\x7a\x5c\x92\xcc"
|
|
|
|
"\x51\x2c\x88\x66\xc7\xe8\x60\xce"
|
|
|
|
"\x93\xfd\xf1\x66\xa2\x49\x12\xb4"
|
|
|
|
"\x22\x97\x61\x46\xae\x20\xce\x84"
|
|
|
|
"\x6b\xb7\xdc\x9b\xa9\x4a\x76\x7a"
|
|
|
|
"\xae\xf2\x0c\x0d\x61\xad\x02\x65"
|
|
|
|
"\x5e\xa9\x2d\xc4\xc4\xe4\x1a\x89"
|
|
|
|
"\x52\xc6\x51\xd3\x31\x74\xbe\x51"
|
|
|
|
"\xa1\x0c\x42\x11\x10\xe6\xd8\x15"
|
|
|
|
"\x88\xed\xe8\x21\x03\xa2\x52\xd8"
|
|
|
|
"\xa7\x50\xe8\x76\x8d\xef\xff\xed"
|
|
|
|
"\x91\x22\x81\x0a\xae\xb9\x9f\x91"
|
|
|
|
"\x72\xaf\x82\xb6\x04\xdc\x4b\x8e"
|
|
|
|
"\x51\xbc\xb0\x82\x35\xa6\xf4\x34"
|
|
|
|
"\x13\x32\xe4\xca\x60\x48\x2a\x4b"
|
|
|
|
"\xa1\xa0\x3b\x3e\x65\x00\x8f\xc5"
|
|
|
|
"\xda\x76\xb7\x0b\xf1\x69\x0d\xb4"
|
|
|
|
"\xea\xe2\x9c\x5f\x1b\xad\xd0\x3c"
|
|
|
|
"\x5c\xcf\x2a\x55\xd7\x05\xdd\xcd"
|
|
|
|
"\x86\xd4\x49\x51\x1c\xeb\x7e\xc3"
|
|
|
|
"\x0b\xf1\x2b\x1f\xa3\x5b\x91\x3f"
|
|
|
|
"\x9f\x74\x7a\x8a\xfd\x1b\x13\x0e"
|
|
|
|
"\x94\xbf\xf9\x4e\xff\xd0\x1a\x91"
|
|
|
|
"\x73\x5c\xa1\x72\x6a\xcd\x0b\x19"
|
|
|
|
"\x7c\x4e\x5b\x03\x39\x36\x97\xe1"
|
|
|
|
"\x26\x82\x6f\xb6\xbb\xde\x8e\xcc"
|
|
|
|
"\x1e\x08\x29\x85\x16\xe2\xc9\xed"
|
|
|
|
"\x03\xff\x3c\x1b\x78\x60\xf6\xde"
|
|
|
|
"\x76\xd4\xce\xcd\x94\xc8\x11\x98"
|
|
|
|
"\x55\xef\x52\x97\xca\x67\xe9\xf3"
|
|
|
|
"\xe7\xff\x72\xb1\xe9\x97\x85\xca"
|
|
|
|
"\x0a\x7e\x77\x20\xc5\xb3\x6d\xc6"
|
|
|
|
"\xd7\x2c\xac\x95\x74\xc8\xcb\xbc"
|
|
|
|
"\x2f\x80\x1e\x23\xe5\x6f\xd3\x44"
|
|
|
|
"\xb0\x7f\x22\x15\x4b\xeb\xa0\xf0"
|
|
|
|
"\x8c\xe8\x89\x1e\x64\x3e\xd9\x95"
|
|
|
|
"\xc9\x4d\x9a\x69\xc9\xf1\xb5\xf4"
|
|
|
|
"\x99\x02\x7a\x78\x57\x2a\xee\xbd"
|
|
|
|
"\x74\xd2\x0c\xc3\x98\x81\xc2\x13"
|
|
|
|
"\xee\x77\x0b\x10\x10\xe4\xbe\xa7"
|
|
|
|
"\x18\x84\x69\x77\xae\x11\x9f\x7a"
|
|
|
|
"\x02\x3a\xb5\x8c\xca\x0a\xd7\x52"
|
|
|
|
"\xaf\xe6\x56\xbb\x3c\x17\x25\x6a"
|
|
|
|
"\x9f\x6e\x9b\xf1\x9f\xdd\x5a\x38"
|
|
|
|
"\xfc\x82\xbb\xe8\x72\xc5\x53\x9e"
|
|
|
|
"\xdb\x60\x9e\xf4\xf7\x9c\x20\x3e"
|
|
|
|
"\xbb\x14\x0f\x2e\x58\x3c\xb2\xad"
|
|
|
|
"\x15\xb4\xaa\x5b\x65\x50\x16\xa8"
|
|
|
|
"\x44\x92\x77\xdb\xd4\x77\xef\x2c"
|
|
|
|
"\x8d\x6c\x01\x7d\xb7\x38\xb1\x8d"
|
|
|
|
"\xeb\x4a\x42\x7d\x19\x23\xce\x3f"
|
|
|
|
"\xf2\x62\x73\x57\x79\xa4\x18\xf2"
|
|
|
|
"\x0a\x28\x2d\xf9\x20\x14\x7b\xea"
|
|
|
|
"\xbe\x42\x1e\xe5\x31\x9d\x05\x68",
|
|
|
|
.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,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
|
|
|
|
static struct cipher_testvec aes_ctr_enc_tv_template[] = {
|
|
|
|
{ /* From RFC 3686 */
|
|
|
|
.key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
|
|
|
|
"\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
|
|
|
|
"\x00\x00\x00\x30",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.klen = 20,
|
|
|
|
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.input = "Single block msg",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
|
|
|
|
"\x2d\x61\x75\xa3\x26\x13\x11\xb8",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
|
|
|
|
"\x43\xd6\xce\x1f\x32\x53\x91\x63"
|
|
|
|
"\x00\x6c\xb6\xdb",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.klen = 20,
|
|
|
|
.iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
|
|
|
|
.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",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
|
|
|
|
"\x79\x0d\x41\xee\x8e\xda\xd3\x88"
|
|
|
|
"\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
|
|
|
|
"\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.rlen = 32,
|
|
|
|
}, {
|
|
|
|
.key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
|
|
|
|
"\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
|
|
|
|
"\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
|
|
|
|
"\x00\x00\x00\x48",
|
|
|
|
.klen = 28,
|
|
|
|
.iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
|
|
|
|
.input = "Single block msg",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
|
|
|
|
"\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
|
|
|
|
"\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
|
|
|
|
"\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
|
|
|
|
"\x00\x96\xb0\x3b",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.klen = 28,
|
|
|
|
.iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
|
|
|
|
.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",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.ilen = 32,
|
|
|
|
.result = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
|
|
|
|
"\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
|
|
|
|
"\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
|
|
|
|
"\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
|
|
|
|
.rlen = 32,
|
|
|
|
}, {
|
|
|
|
.key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
|
|
|
|
"\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
|
|
|
|
"\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
|
|
|
|
"\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
|
|
|
|
"\x00\x00\x00\x60",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.klen = 36,
|
|
|
|
.iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
|
|
|
|
.input = "Single block msg",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
|
|
|
|
"\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
|
|
|
|
"\x07\x96\x36\x58\x79\xef\xf8\x86"
|
|
|
|
"\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
|
|
|
|
"\x4b\x50\x59\x0c\x87\xa2\x38\x84"
|
|
|
|
"\x00\xfa\xac\x24",
|
|
|
|
.klen = 36,
|
|
|
|
.iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
|
|
|
|
.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",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.ilen = 32,
|
|
|
|
.result = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
|
|
|
|
"\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
|
|
|
|
"\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
|
|
|
|
"\x55\x30\x83\x1d\x93\x44\xaf\x1c",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.rlen = 32,
|
|
|
|
}, {
|
|
|
|
// generated using Crypto++
|
|
|
|
.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"
|
|
|
|
"\x00\x00\x00\x00",
|
|
|
|
.klen = 32 + 4,
|
|
|
|
.iv = "\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\x03\x06\x09\x0c\x0f\x12\x15"
|
|
|
|
"\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
|
|
|
|
"\x30\x33\x36\x39\x3c\x3f\x42\x45"
|
|
|
|
"\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
|
|
|
|
"\x60\x63\x66\x69\x6c\x6f\x72\x75"
|
|
|
|
"\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
|
|
|
|
"\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
|
|
|
|
"\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
|
|
|
|
"\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
|
|
|
|
"\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
|
|
|
|
"\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
|
|
|
|
"\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
|
|
|
|
"\x20\x23\x26\x29\x2c\x2f\x32\x35"
|
|
|
|
"\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
|
|
|
|
"\x50\x53\x56\x59\x5c\x5f\x62\x65"
|
|
|
|
"\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
|
|
|
|
"\x80\x83\x86\x89\x8c\x8f\x92\x95"
|
|
|
|
"\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
|
|
|
|
"\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
|
|
|
|
"\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
|
|
|
|
"\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
|
|
|
|
"\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
|
|
|
|
"\x10\x13\x16\x19\x1c\x1f\x22\x25"
|
|
|
|
"\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
|
|
|
|
"\x40\x43\x46\x49\x4c\x4f\x52\x55"
|
|
|
|
"\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
|
|
|
|
"\x70\x73\x76\x79\x7c\x7f\x82\x85"
|
|
|
|
"\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
|
|
|
|
"\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
|
|
|
|
"\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
|
|
|
|
"\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
|
|
|
|
"\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
|
|
|
|
"\x00\x05\x0a\x0f\x14\x19\x1e\x23"
|
|
|
|
"\x28\x2d\x32\x37\x3c\x41\x46\x4b"
|
|
|
|
"\x50\x55\x5a\x5f\x64\x69\x6e\x73"
|
|
|
|
"\x78\x7d\x82\x87\x8c\x91\x96\x9b"
|
|
|
|
"\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
|
|
|
|
"\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
|
|
|
|
"\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
|
|
|
|
"\x18\x1d\x22\x27\x2c\x31\x36\x3b"
|
|
|
|
"\x40\x45\x4a\x4f\x54\x59\x5e\x63"
|
|
|
|
"\x68\x6d\x72\x77\x7c\x81\x86\x8b"
|
|
|
|
"\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
|
|
|
|
"\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
|
|
|
|
"\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
|
|
|
|
"\x08\x0d\x12\x17\x1c\x21\x26\x2b"
|
|
|
|
"\x30\x35\x3a\x3f\x44\x49\x4e\x53"
|
|
|
|
"\x58\x5d\x62\x67\x6c\x71\x76\x7b"
|
|
|
|
"\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
|
|
|
|
"\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
|
|
|
|
"\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
|
|
|
|
"\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
|
|
|
|
"\x20\x25\x2a\x2f\x34\x39\x3e\x43"
|
|
|
|
"\x48\x4d\x52\x57\x5c\x61\x66\x6b"
|
|
|
|
"\x70\x75\x7a\x7f\x84\x89\x8e\x93"
|
|
|
|
"\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
|
|
|
|
"\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
|
|
|
|
"\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
|
|
|
|
"\x10\x15\x1a\x1f\x24\x29\x2e\x33"
|
|
|
|
"\x38\x3d\x42\x47\x4c\x51\x56\x5b"
|
|
|
|
"\x60\x65\x6a\x6f\x74\x79\x7e\x83"
|
|
|
|
"\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
|
|
|
|
"\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
|
|
|
|
"\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
|
|
|
|
"\x00\x07\x0e\x15\x1c\x23\x2a\x31"
|
|
|
|
"\x38\x3f\x46\x4d\x54\x5b\x62\x69"
|
|
|
|
"\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
|
|
|
|
"\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
|
|
|
|
"\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
|
|
|
|
"\x18\x1f\x26\x2d\x34\x3b\x42\x49"
|
|
|
|
"\x50\x57\x5e\x65\x6c\x73\x7a\x81"
|
|
|
|
"\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
|
|
|
|
"\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
|
|
|
|
"\xf8\xff\x06\x0d\x14\x1b\x22\x29"
|
|
|
|
"\x30\x37\x3e\x45\x4c\x53\x5a\x61"
|
|
|
|
"\x68\x6f\x76\x7d\x84\x8b\x92\x99"
|
|
|
|
"\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
|
|
|
|
"\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
|
|
|
|
"\x10\x17\x1e\x25\x2c\x33\x3a\x41"
|
|
|
|
"\x48\x4f\x56\x5d\x64\x6b\x72\x79"
|
|
|
|
"\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
|
|
|
|
"\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
|
|
|
|
"\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
|
|
|
|
"\x28\x2f\x36\x3d\x44\x4b\x52\x59"
|
|
|
|
"\x60\x67\x6e\x75\x7c\x83\x8a\x91"
|
|
|
|
"\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
|
|
|
|
"\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
|
|
|
|
"\x08\x0f\x16\x1d\x24\x2b\x32\x39"
|
|
|
|
"\x40\x47\x4e\x55\x5c\x63\x6a\x71"
|
|
|
|
"\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
|
|
|
|
"\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
|
|
|
|
"\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
|
|
|
|
"\x20\x27\x2e\x35\x3c\x43\x4a\x51"
|
|
|
|
"\x58\x5f\x66\x6d\x74\x7b\x82\x89"
|
|
|
|
"\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
|
|
|
|
"\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
|
|
|
|
"\x00\x09\x12\x1b\x24\x2d\x36\x3f"
|
|
|
|
"\x48\x51\x5a\x63\x6c\x75\x7e\x87"
|
|
|
|
"\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
|
|
|
|
"\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
|
|
|
|
"\x20\x29\x32\x3b\x44\x4d\x56\x5f"
|
|
|
|
"\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
|
|
|
|
"\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
|
|
|
|
"\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
|
|
|
|
"\x40\x49\x52\x5b\x64\x6d\x76\x7f"
|
|
|
|
"\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
|
|
|
|
"\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
|
|
|
|
"\x18\x21\x2a\x33\x3c\x45\x4e\x57"
|
|
|
|
"\x60\x69\x72\x7b\x84\x8d\x96\x9f"
|
|
|
|
"\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
|
|
|
|
"\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
|
|
|
|
"\x38\x41\x4a\x53\x5c\x65\x6e\x77"
|
|
|
|
"\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
|
|
|
|
"\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
|
|
|
|
"\x10\x19\x22\x2b\x34\x3d\x46\x4f"
|
|
|
|
"\x58\x61\x6a\x73\x7c\x85\x8e\x97"
|
|
|
|
"\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
|
|
|
|
"\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
|
|
|
|
"\x30\x39\x42\x4b\x54\x5d\x66\x6f"
|
|
|
|
"\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
|
|
|
|
"\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
|
|
|
|
"\x08\x11\x1a\x23\x2c\x35\x3e\x47"
|
|
|
|
"\x50\x59\x62\x6b\x74\x7d\x86\x8f"
|
|
|
|
"\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
|
|
|
|
"\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
|
|
|
|
"\x28\x31\x3a\x43\x4c\x55\x5e\x67"
|
|
|
|
"\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
|
|
|
|
"\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
|
|
|
|
"\x00\x0b\x16\x21\x2c\x37\x42\x4d"
|
|
|
|
"\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
|
|
|
|
"\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
|
|
|
|
"\x08\x13\x1e\x29\x34\x3f\x4a\x55"
|
|
|
|
"\x60\x6b\x76\x81\x8c\x97\xa2\xad"
|
|
|
|
"\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
|
|
|
|
"\x10\x1b\x26\x31\x3c\x47\x52\x5d"
|
|
|
|
"\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
|
|
|
|
"\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
|
|
|
|
"\x18\x23\x2e\x39\x44\x4f\x5a\x65"
|
|
|
|
"\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
|
|
|
|
"\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
|
|
|
|
"\x20\x2b\x36\x41\x4c\x57\x62\x6d"
|
|
|
|
"\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
|
|
|
|
"\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
|
|
|
|
"\x28\x33\x3e\x49\x54\x5f\x6a\x75"
|
|
|
|
"\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
|
|
|
|
"\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
|
|
|
|
"\x30\x3b\x46\x51\x5c\x67\x72\x7d"
|
|
|
|
"\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
|
|
|
|
"\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
|
|
|
|
"\x38\x43\x4e\x59\x64\x6f\x7a\x85"
|
|
|
|
"\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
|
|
|
|
"\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
|
|
|
|
"\x40\x4b\x56\x61\x6c\x77\x82\x8d"
|
|
|
|
"\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
|
|
|
|
"\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
|
|
|
|
"\x48\x53\x5e\x69\x74\x7f\x8a\x95"
|
|
|
|
"\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
|
|
|
|
"\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
|
|
|
|
"\x50\x5b\x66\x71\x7c\x87\x92\x9d"
|
|
|
|
"\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
|
|
|
|
"\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
|
|
|
|
"\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
|
|
|
|
"\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
|
|
|
|
"\x38\x45\x52\x5f\x6c\x79\x86\x93"
|
|
|
|
"\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
|
|
|
|
"\x08\x15\x22\x2f\x3c\x49\x56\x63"
|
|
|
|
"\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
|
|
|
|
"\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
|
|
|
|
"\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
|
|
|
|
"\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
|
|
|
|
"\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
|
|
|
|
"\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
|
|
|
|
"\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
|
|
|
|
"\x48\x55\x62\x6f\x7c\x89\x96\xa3"
|
|
|
|
"\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
|
|
|
|
"\x18\x25\x32\x3f\x4c\x59\x66\x73"
|
|
|
|
"\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
|
|
|
|
"\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
|
|
|
|
"\x50\x5d\x6a\x77\x84\x91\x9e\xab"
|
|
|
|
"\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
|
|
|
|
"\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
|
|
|
|
"\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
|
|
|
|
"\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
|
|
|
|
"\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
|
|
|
|
"\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
|
|
|
|
"\x28\x35\x42\x4f\x5c\x69\x76\x83"
|
|
|
|
"\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
|
|
|
|
"\xf8\x05\x12\x1f\x2c\x39\x46\x53"
|
|
|
|
"\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
|
|
|
|
"\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
|
|
|
|
"\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
|
|
|
|
"\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
|
|
|
|
"\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
|
|
|
|
"\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
|
|
|
|
"\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
|
|
|
|
"\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
|
|
|
|
"\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
|
|
|
|
"\x58\x67\x76\x85\x94\xa3\xb2\xc1"
|
|
|
|
"\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
|
|
|
|
"\x48\x57\x66\x75\x84\x93\xa2\xb1"
|
|
|
|
"\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
|
|
|
|
"\x38\x47\x56\x65\x74\x83\x92\xa1"
|
|
|
|
"\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
|
|
|
|
"\x28\x37\x46\x55\x64\x73\x82\x91"
|
|
|
|
"\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
|
|
|
|
"\x18\x27\x36\x45\x54\x63\x72\x81"
|
|
|
|
"\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
|
|
|
|
"\x08\x17\x26\x35\x44\x53\x62\x71"
|
|
|
|
"\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
|
|
|
|
"\xf8\x07\x16\x25\x34\x43\x52\x61"
|
|
|
|
"\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
|
|
|
|
"\xe8\xf7\x06\x15\x24\x33\x42\x51"
|
|
|
|
"\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
|
|
|
|
"\xd8\xe7\xf6\x05\x14\x23\x32\x41"
|
|
|
|
"\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
|
|
|
|
"\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
|
|
|
|
"\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
|
|
|
|
"\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
|
|
|
|
"\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
|
|
|
|
"\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
|
|
|
|
"\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
|
|
|
|
"\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
|
|
|
|
"\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
|
|
|
|
"\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
|
|
|
|
"\x00\x11\x22\x33\x44\x55\x66\x77"
|
|
|
|
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
|
|
|
|
"\x10\x21\x32\x43\x54\x65\x76\x87"
|
|
|
|
"\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
|
|
|
|
"\x20\x31\x42\x53\x64\x75\x86\x97"
|
|
|
|
"\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
|
|
|
|
"\x30\x41\x52\x63\x74\x85\x96\xa7"
|
|
|
|
"\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
|
|
|
|
"\x40\x51\x62\x73\x84\x95\xa6\xb7"
|
|
|
|
"\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
|
|
|
|
"\x50\x61\x72\x83\x94\xa5\xb6\xc7"
|
|
|
|
"\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
|
|
|
|
"\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
|
|
|
|
"\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
|
|
|
|
"\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
|
|
|
|
"\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
|
|
|
|
"\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
|
|
|
|
"\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
|
|
|
|
"\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
|
|
|
|
"\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
|
|
|
|
"\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
|
|
|
|
"\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
|
|
|
|
"\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
|
|
|
|
"\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
|
|
|
|
"\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
|
|
|
|
"\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
|
|
|
|
"\xd0\xe1\xf2\x03\x14\x25\x36\x47"
|
|
|
|
"\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
|
|
|
|
"\xe0\xf1\x02\x13\x24\x35\x46\x57"
|
|
|
|
"\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
|
|
|
|
"\xf0\x01\x12\x23\x34\x45\x56\x67"
|
|
|
|
"\x78\x89\x9a\xab\xbc\xcd\xde\xef"
|
|
|
|
"\x00\x13\x26\x39\x4c\x5f\x72\x85"
|
|
|
|
"\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
|
|
|
|
"\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
|
|
|
|
"\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
|
|
|
|
"\x60\x73\x86\x99\xac\xbf\xd2\xe5"
|
|
|
|
"\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
|
|
|
|
"\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
|
|
|
|
"\x28\x3b\x4e\x61\x74\x87\x9a\xad"
|
|
|
|
"\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
|
|
|
|
"\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
|
|
|
|
"\xf0\x03\x16\x29\x3c\x4f\x62\x75"
|
|
|
|
"\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
|
|
|
|
"\x20\x33\x46\x59\x6c\x7f\x92\xa5"
|
|
|
|
"\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
|
|
|
|
"\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
|
|
|
|
"\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
|
|
|
|
"\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
|
|
|
|
"\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
|
|
|
|
"\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
|
|
|
|
"\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
|
|
|
|
"\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
|
|
|
|
"\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
|
|
|
|
"\x10\x23\x36\x49\x5c\x6f\x82\x95"
|
|
|
|
"\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
|
|
|
|
"\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
|
|
|
|
"\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
|
|
|
|
"\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
|
|
|
|
"\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
|
|
|
|
"\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
|
|
|
|
"\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
|
|
|
|
"\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
|
|
|
|
"\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
|
|
|
|
"\x00\x15\x2a\x3f\x54\x69\x7e\x93"
|
|
|
|
"\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
|
|
|
|
"\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
|
|
|
|
"\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
|
|
|
|
"\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
|
|
|
|
"\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
|
|
|
|
"\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
|
|
|
|
"\x98\xad\xc2\xd7\xec\x01\x16\x2b"
|
|
|
|
"\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
|
|
|
|
"\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
|
|
|
|
"\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
|
|
|
|
"\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
|
|
|
|
"\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
|
|
|
|
"\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
|
|
|
|
"\x30\x45\x5a\x6f\x84\x99\xae\xc3"
|
|
|
|
"\xd8\xed\x02\x17\x2c\x41\x56\x6b"
|
|
|
|
"\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
|
|
|
|
"\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
|
|
|
|
"\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
|
|
|
|
"\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
|
|
|
|
"\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
|
|
|
|
"\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
|
|
|
|
"\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
|
|
|
|
"\x18\x2d\x42\x57\x6c\x81\x96\xab"
|
|
|
|
"\xc0\xd5\xea\xff\x14\x29\x3e\x53"
|
|
|
|
"\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
|
|
|
|
"\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
|
|
|
|
"\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
|
|
|
|
"\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
|
|
|
|
"\x08\x1d\x32\x47\x5c\x71\x86\x9b"
|
|
|
|
"\xb0\xc5\xda\xef\x04\x19\x2e\x43"
|
|
|
|
"\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
|
|
|
|
"\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
|
|
|
|
"\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
|
|
|
|
"\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
|
|
|
|
"\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
|
|
|
|
"\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
|
|
|
|
"\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
|
|
|
|
"\x50\x67\x7e\x95\xac\xc3\xda\xf1"
|
|
|
|
"\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
|
|
|
|
"\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
|
|
|
|
"\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
|
|
|
|
"\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
|
|
|
|
"\xe8\xff\x16\x2d\x44\x5b\x72\x89"
|
|
|
|
"\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
|
|
|
|
"\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
|
|
|
|
"\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
|
|
|
|
"\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
|
|
|
|
"\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
|
|
|
|
"\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
|
|
|
|
"\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
|
|
|
|
"\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
|
|
|
|
"\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
|
|
|
|
"\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
|
|
|
|
"\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
|
|
|
|
"\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
|
|
|
|
"\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
|
|
|
|
"\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
|
|
|
|
"\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
|
|
|
|
"\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
|
|
|
|
"\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
|
|
|
|
"\xd8\xef\x06\x1d\x34\x4b\x62\x79"
|
|
|
|
"\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
|
|
|
|
"\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
|
|
|
|
"\x00\x19\x32\x4b\x64\x7d\x96\xaf"
|
|
|
|
"\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
|
|
|
|
"\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
|
|
|
|
"\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
|
|
|
|
"\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
|
|
|
|
"\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
|
|
|
|
"\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
|
|
|
|
"\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
|
|
|
|
"\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
|
|
|
|
"\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
|
|
|
|
"\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
|
|
|
|
"\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
|
|
|
|
"\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
|
|
|
|
"\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
|
|
|
|
"\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
|
|
|
|
"\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
|
|
|
|
"\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
|
|
|
|
"\x48\x61\x7a\x93\xac\xc5\xde\xf7"
|
|
|
|
"\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
|
|
|
|
"\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
|
|
|
|
"\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
|
|
|
|
"\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
|
|
|
|
"\x30\x49\x62\x7b\x94\xad\xc6\xdf"
|
|
|
|
"\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
|
|
|
|
"\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
|
|
|
|
"\x88\xa1\xba\xd3\xec\x05\x1e\x37"
|
|
|
|
"\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
|
|
|
|
"\x18\x31\x4a\x63\x7c\x95\xae\xc7"
|
|
|
|
"\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
|
|
|
|
"\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
|
|
|
|
"\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
|
|
|
|
"\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
|
|
|
|
"\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
|
|
|
|
"\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
|
|
|
|
"\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
|
|
|
|
"\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
|
|
|
|
"\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
|
|
|
|
"\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
|
|
|
|
"\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
|
|
|
|
"\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
|
|
|
|
"\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
|
|
|
|
"\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
|
|
|
|
"\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
|
|
|
|
"\x48\x63\x7e\x99\xb4\xcf\xea\x05"
|
|
|
|
"\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
|
|
|
|
"\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
|
|
|
|
"\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
|
|
|
|
"\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
|
|
|
|
"\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
|
|
|
|
"\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
|
|
|
|
"\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
|
|
|
|
"\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
|
|
|
|
"\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
|
|
|
|
"\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
|
|
|
|
"\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
|
|
|
|
"\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
|
|
|
|
"\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
|
|
|
|
"\x18\x33\x4e\x69\x84\x9f\xba\xd5"
|
|
|
|
"\xf0\x0b\x26\x41\x5c\x77\x92\xad"
|
|
|
|
"\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
|
|
|
|
"\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
|
|
|
|
"\x78\x93\xae\xc9\xe4\xff\x1a\x35"
|
|
|
|
"\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
|
|
|
|
"\x28\x43\x5e\x79\x94\xaf\xca\xe5"
|
|
|
|
"\x00\x1d\x3a\x57\x74\x91\xae\xcb"
|
|
|
|
"\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
|
|
|
|
"\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
|
|
|
|
"\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
|
|
|
|
"\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
|
|
|
|
"\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
|
|
|
|
"\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
|
|
|
|
"\x58\x75\x92\xaf\xcc\xe9\x06\x23"
|
|
|
|
"\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
|
|
|
|
"\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
|
|
|
|
"\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
|
|
|
|
"\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
|
|
|
|
"\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
|
|
|
|
"\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
|
|
|
|
"\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
|
|
|
|
"\x98\xb5\xd2\xef\x0c\x29\x46\x63"
|
|
|
|
"\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
|
|
|
|
"\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
|
|
|
|
"\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
|
|
|
|
"\x38\x55\x72\x8f\xac\xc9\xe6\x03"
|
|
|
|
"\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
|
|
|
|
"\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
|
|
|
|
"\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
|
|
|
|
"\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
|
|
|
|
"\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
|
|
|
|
"\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
|
|
|
|
"\x90\xad\xca\xe7\x04\x21\x3e\x5b"
|
|
|
|
"\x78\x95\xb2\xcf\xec\x09\x26\x43"
|
|
|
|
"\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
|
|
|
|
"\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
|
|
|
|
"\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
|
|
|
|
"\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
|
|
|
|
"\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
|
|
|
|
"\xf8\x17\x36\x55\x74\x93\xb2\xd1"
|
|
|
|
"\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
|
|
|
|
"\xe8\x07\x26\x45\x64\x83\xa2\xc1"
|
|
|
|
"\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
|
|
|
|
"\xd8\xf7\x16\x35\x54\x73\x92\xb1"
|
|
|
|
"\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
|
|
|
|
"\xc8\xe7\x06\x25\x44\x63\x82\xa1"
|
|
|
|
"\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
|
|
|
|
"\xb8\xd7\xf6\x15\x34\x53\x72\x91"
|
|
|
|
"\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
|
|
|
|
"\xa8\xc7\xe6\x05\x24\x43\x62\x81"
|
|
|
|
"\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
|
|
|
|
"\x98\xb7\xd6\xf5\x14\x33\x52\x71"
|
|
|
|
"\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
|
|
|
|
"\x88\xa7\xc6\xe5\x04\x23\x42\x61"
|
|
|
|
"\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
|
|
|
|
"\x78\x97\xb6\xd5\xf4\x13\x32\x51"
|
|
|
|
"\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
|
|
|
|
"\x68\x87\xa6\xc5\xe4\x03\x22\x41"
|
|
|
|
"\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
|
|
|
|
"\x58\x77\x96\xb5\xd4\xf3\x12\x31"
|
|
|
|
"\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
|
|
|
|
"\x48\x67\x86\xa5\xc4\xe3\x02\x21"
|
|
|
|
"\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
|
|
|
|
"\x38\x57\x76\x95\xb4\xd3\xf2\x11"
|
|
|
|
"\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
|
|
|
|
"\x28\x47\x66\x85\xa4\xc3\xe2\x01"
|
|
|
|
"\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
|
|
|
|
"\x18\x37\x56\x75\x94\xb3\xd2\xf1"
|
|
|
|
"\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
|
|
|
|
"\x08\x27\x46\x65\x84\xa3\xc2\xe1"
|
|
|
|
"\x00\x21\x42\x63",
|
|
|
|
.ilen = 4100,
|
|
|
|
.result =
|
|
|
|
"\xf0\x5c\x74\xad\x4e\xbc\x99\xe2"
|
|
|
|
"\xae\xff\x91\x3a\x44\xcf\x38\x32"
|
|
|
|
"\x1e\xad\xa7\xcd\xa1\x39\x95\xaa"
|
|
|
|
"\x10\xb1\xb3\x2e\x04\x31\x8f\x86"
|
|
|
|
"\xf2\x62\x74\x70\x0c\xa4\x46\x08"
|
|
|
|
"\xa8\xb7\x99\xa8\xe9\xd2\x73\x79"
|
|
|
|
"\x7e\x6e\xd4\x8f\x1e\xc7\x8e\x31"
|
|
|
|
"\x0b\xfa\x4b\xce\xfd\xf3\x57\x71"
|
|
|
|
"\xe9\x46\x03\xa5\x3d\x34\x00\xe2"
|
|
|
|
"\x18\xff\x75\x6d\x06\x2d\x00\xab"
|
|
|
|
"\xb9\x3e\x6c\x59\xc5\x84\x06\xb5"
|
|
|
|
"\x8b\xd0\x89\x9c\x4a\x79\x16\xc6"
|
|
|
|
"\x3d\x74\x54\xfa\x44\xcd\x23\x26"
|
|
|
|
"\x5c\xcf\x7e\x28\x92\x32\xbf\xdf"
|
|
|
|
"\xa7\x20\x3c\x74\x58\x2a\x9a\xde"
|
|
|
|
"\x61\x00\x1c\x4f\xff\x59\xc4\x22"
|
|
|
|
"\xac\x3c\xd0\xe8\x6c\xf9\x97\x1b"
|
|
|
|
"\x58\x9b\xad\x71\xe8\xa9\xb5\x0d"
|
|
|
|
"\xee\x2f\x04\x1f\x7f\xbc\x99\xee"
|
|
|
|
"\x84\xff\x42\x60\xdc\x3a\x18\xa5"
|
|
|
|
"\x81\xf9\xef\xdc\x7a\x0f\x65\x41"
|
|
|
|
"\x2f\xa3\xd3\xf9\xc2\xcb\xc0\x4d"
|
|
|
|
"\x8f\xd3\x76\x96\xad\x49\x6d\x38"
|
|
|
|
"\x3d\x39\x0b\x6c\x80\xb7\x54\x69"
|
|
|
|
"\xf0\x2c\x90\x02\x29\x0d\x1c\x12"
|
|
|
|
"\xad\x55\xc3\x8b\x68\xd9\xcc\xb3"
|
|
|
|
"\xb2\x64\x33\x90\x5e\xca\x4b\xe2"
|
|
|
|
"\xfb\x75\xdc\x63\xf7\x9f\x82\x74"
|
|
|
|
"\xf0\xc9\xaa\x7f\xe9\x2a\x9b\x33"
|
|
|
|
"\xbc\x88\x00\x7f\xca\xb2\x1f\x14"
|
|
|
|
"\xdb\xc5\x8e\x7b\x11\x3c\x3e\x08"
|
|
|
|
"\xf3\x83\xe8\xe0\x94\x86\x2e\x92"
|
|
|
|
"\x78\x6b\x01\xc9\xc7\x83\xba\x21"
|
|
|
|
"\x6a\x25\x15\x33\x4e\x45\x08\xec"
|
|
|
|
"\x35\xdb\xe0\x6e\x31\x51\x79\xa9"
|
|
|
|
"\x42\x44\x65\xc1\xa0\xf1\xf9\x2a"
|
|
|
|
"\x70\xd5\xb6\xc6\xc1\x8c\x39\xfc"
|
|
|
|
"\x25\xa6\x55\xd9\xdd\x2d\x4c\xec"
|
|
|
|
"\x49\xc6\xeb\x0e\xa8\x25\x2a\x16"
|
|
|
|
"\x1b\x66\x84\xda\xe2\x92\xe5\xc0"
|
|
|
|
"\xc8\x53\x07\xaf\x80\x84\xec\xfd"
|
|
|
|
"\xcd\xd1\x6e\xcd\x6f\x6a\xf5\x36"
|
|
|
|
"\xc5\x15\xe5\x25\x7d\x77\xd1\x1a"
|
|
|
|
"\x93\x36\xa9\xcf\x7c\xa4\x54\x4a"
|
|
|
|
"\x06\x51\x48\x4e\xf6\x59\x87\xd2"
|
|
|
|
"\x04\x02\xef\xd3\x44\xde\x76\x31"
|
|
|
|
"\xb3\x34\x17\x1b\x9d\x66\x11\x9f"
|
|
|
|
"\x1e\xcc\x17\xe9\xc7\x3c\x1b\xe7"
|
|
|
|
"\xcb\x50\x08\xfc\xdc\x2b\x24\xdb"
|
|
|
|
"\x65\x83\xd0\x3b\xe3\x30\xea\x94"
|
|
|
|
"\x6c\xe7\xe8\x35\x32\xc7\xdb\x64"
|
|
|
|
"\xb4\x01\xab\x36\x2c\x77\x13\xaf"
|
|
|
|
"\xf8\x2b\x88\x3f\x54\x39\xc4\x44"
|
|
|
|
"\xfe\xef\x6f\x68\x34\xbe\x0f\x05"
|
|
|
|
"\x16\x6d\xf6\x0a\x30\xe7\xe3\xed"
|
|
|
|
"\xc4\xde\x3c\x1b\x13\xd8\xdb\xfe"
|
|
|
|
"\x41\x62\xe5\x28\xd4\x8d\xa3\xc7"
|
|
|
|
"\x93\x97\xc6\x48\x45\x1d\x9f\x83"
|
|
|
|
"\xdf\x4b\x40\x3e\x42\x25\x87\x80"
|
|
|
|
"\x4c\x7d\xa8\xd4\x98\x23\x95\x75"
|
|
|
|
"\x41\x8c\xda\x41\x9b\xd4\xa7\x06"
|
|
|
|
"\xb5\xf1\x71\x09\x53\xbe\xca\xbf"
|
|
|
|
"\x32\x03\xed\xf0\x50\x1c\x56\x39"
|
|
|
|
"\x5b\xa4\x75\x18\xf7\x9b\x58\xef"
|
|
|
|
"\x53\xfc\x2a\x38\x23\x15\x75\xcd"
|
|
|
|
"\x45\xe5\x5a\x82\x55\xba\x21\xfa"
|
|
|
|
"\xd4\xbd\xc6\x94\x7c\xc5\x80\x12"
|
|
|
|
"\xf7\x4b\x32\xc4\x9a\x82\xd8\x28"
|
|
|
|
"\x8f\xd9\xc2\x0f\x60\x03\xbe\x5e"
|
|
|
|
"\x21\xd6\x5f\x58\xbf\x5c\xb1\x32"
|
|
|
|
"\x82\x8d\xa9\xe5\xf2\x66\x1a\xc0"
|
|
|
|
"\xa0\xbc\x58\x2f\x71\xf5\x2f\xed"
|
|
|
|
"\xd1\x26\xb9\xd8\x49\x5a\x07\x19"
|
|
|
|
"\x01\x7c\x59\xb0\xf8\xa4\xb7\xd3"
|
|
|
|
"\x7b\x1a\x8c\x38\xf4\x50\xa4\x59"
|
|
|
|
"\xb0\xcc\x41\x0b\x88\x7f\xe5\x31"
|
|
|
|
"\xb3\x42\xba\xa2\x7e\xd4\x32\x71"
|
|
|
|
"\x45\x87\x48\xa9\xc2\xf2\x89\xb3"
|
|
|
|
"\xe4\xa7\x7e\x52\x15\x61\xfa\xfe"
|
|
|
|
"\xc9\xdd\x81\xeb\x13\xab\xab\xc3"
|
|
|
|
"\x98\x59\xd8\x16\x3d\x14\x7a\x1c"
|
|
|
|
"\x3c\x41\x9a\x16\x16\x9b\xd2\xd2"
|
|
|
|
"\x69\x3a\x29\x23\xac\x86\x32\xa5"
|
|
|
|
"\x48\x9c\x9e\xf3\x47\x77\x81\x70"
|
|
|
|
"\x24\xe8\x85\xd2\xf5\xb5\xfa\xff"
|
|
|
|
"\x59\x6a\xd3\x50\x59\x43\x59\xde"
|
|
|
|
"\xd9\xf1\x55\xa5\x0c\xc3\x1a\x1a"
|
|
|
|
"\x18\x34\x0d\x1a\x63\x33\xed\x10"
|
|
|
|
"\xe0\x1d\x2a\x18\xd2\xc0\x54\xa8"
|
|
|
|
"\xca\xb5\x9a\xd3\xdd\xca\x45\x84"
|
|
|
|
"\x50\xe7\x0f\xfe\xa4\x99\x5a\xbe"
|
|
|
|
"\x43\x2d\x9a\xcb\x92\x3f\x5a\x1d"
|
|
|
|
"\x85\xd8\xc9\xdf\x68\xc9\x12\x80"
|
|
|
|
"\x56\x0c\xdc\x00\xdc\x3a\x7d\x9d"
|
|
|
|
"\xa3\xa2\xe8\x4d\xbf\xf9\x70\xa0"
|
|
|
|
"\xa4\x13\x4f\x6b\xaf\x0a\x89\x7f"
|
|
|
|
"\xda\xf0\xbf\x9b\xc8\x1d\xe5\xf8"
|
|
|
|
"\x2e\x8b\x07\xb5\x73\x1b\xcc\xa2"
|
|
|
|
"\xa6\xad\x30\xbc\x78\x3c\x5b\x10"
|
|
|
|
"\xfa\x5e\x62\x2d\x9e\x64\xb3\x33"
|
|
|
|
"\xce\xf9\x1f\x86\xe7\x8b\xa2\xb8"
|
|
|
|
"\xe8\x99\x57\x8c\x11\xed\x66\xd9"
|
|
|
|
"\x3c\x72\xb9\xc3\xe6\x4e\x17\x3a"
|
|
|
|
"\x6a\xcb\x42\x24\x06\xed\x3e\x4e"
|
|
|
|
"\xa3\xe8\x6a\x94\xda\x0d\x4e\xd5"
|
|
|
|
"\x14\x19\xcf\xb6\x26\xd8\x2e\xcc"
|
|
|
|
"\x64\x76\x38\x49\x4d\xfe\x30\x6d"
|
|
|
|
"\xe4\xc8\x8c\x7b\xc4\xe0\x35\xba"
|
|
|
|
"\x22\x6e\x76\xe1\x1a\xf2\x53\xc3"
|
|
|
|
"\x28\xa2\x82\x1f\x61\x69\xad\xc1"
|
|
|
|
"\x7b\x28\x4b\x1e\x6c\x85\x95\x9b"
|
|
|
|
"\x51\xb5\x17\x7f\x12\x69\x8c\x24"
|
|
|
|
"\xd5\xc7\x5a\x5a\x11\x54\xff\x5a"
|
|
|
|
"\xf7\x16\xc3\x91\xa6\xf0\xdc\x0a"
|
|
|
|
"\xb6\xa7\x4a\x0d\x7a\x58\xfe\xa5"
|
|
|
|
"\xf5\xcb\x8f\x7b\x0e\xea\x57\xe7"
|
|
|
|
"\xbd\x79\xd6\x1c\x88\x23\x6c\xf2"
|
|
|
|
"\x4d\x29\x77\x53\x35\x6a\x00\x8d"
|
|
|
|
"\xcd\xa3\x58\xbe\x77\x99\x18\xf8"
|
|
|
|
"\xe6\xe1\x8f\xe9\x37\x8f\xe3\xe2"
|
|
|
|
"\x5a\x8a\x93\x25\xaf\xf3\x78\x80"
|
|
|
|
"\xbe\xa6\x1b\xc6\xac\x8b\x1c\x91"
|
|
|
|
"\x58\xe1\x9f\x89\x35\x9d\x1d\x21"
|
|
|
|
"\x29\x9f\xf4\x99\x02\x27\x0f\xa8"
|
|
|
|
"\x4f\x79\x94\x2b\x33\x2c\xda\xa2"
|
|
|
|
"\x26\x39\x83\x94\xef\x27\xd8\x53"
|
|
|
|
"\x8f\x66\x0d\xe4\x41\x7d\x34\xcd"
|
|
|
|
"\x43\x7c\x95\x0a\x53\xef\x66\xda"
|
|
|
|
"\x7e\x9b\xf3\x93\xaf\xd0\x73\x71"
|
|
|
|
"\xba\x40\x9b\x74\xf8\xd7\xd7\x41"
|
|
|
|
"\x6d\xaf\x72\x9c\x8d\x21\x87\x3c"
|
|
|
|
"\xfd\x0a\x90\xa9\x47\x96\x9e\xd3"
|
|
|
|
"\x88\xee\x73\xcf\x66\x2f\x52\x56"
|
|
|
|
"\x6d\xa9\x80\x4c\xe2\x6f\x62\x88"
|
|
|
|
"\x3f\x0e\x54\x17\x48\x80\x5d\xd3"
|
|
|
|
"\xc3\xda\x25\x3d\xa1\xc8\xcb\x9f"
|
|
|
|
"\x9b\x70\xb3\xa1\xeb\x04\x52\xa1"
|
|
|
|
"\xf2\x22\x0f\xfc\xc8\x18\xfa\xf9"
|
|
|
|
"\x85\x9c\xf1\xac\xeb\x0c\x02\x46"
|
|
|
|
"\x75\xd2\xf5\x2c\xe3\xd2\x59\x94"
|
|
|
|
"\x12\xf3\x3c\xfc\xd7\x92\xfa\x36"
|
|
|
|
"\xba\x61\x34\x38\x7c\xda\x48\x3e"
|
|
|
|
"\x08\xc9\x39\x23\x5e\x02\x2c\x1a"
|
|
|
|
"\x18\x7e\xb4\xd9\xfd\x9e\x40\x02"
|
|
|
|
"\xb1\x33\x37\x32\xe7\xde\xd6\xd0"
|
|
|
|
"\x7c\x58\x65\x4b\xf8\x34\x27\x9c"
|
|
|
|
"\x44\xb4\xbd\xe9\xe9\x4c\x78\x7d"
|
|
|
|
"\x4b\x9f\xce\xb1\xcd\x47\xa5\x37"
|
|
|
|
"\xe5\x6d\xbd\xb9\x43\x94\x0a\xd4"
|
|
|
|
"\xd6\xf9\x04\x5f\xb5\x66\x6c\x1a"
|
|
|
|
"\x35\x12\xe3\x36\x28\x27\x36\x58"
|
|
|
|
"\x01\x2b\x79\xe4\xba\x6d\x10\x7d"
|
|
|
|
"\x65\xdf\x84\x95\xf4\xd5\xb6\x8f"
|
|
|
|
"\x2b\x9f\x96\x00\x86\x60\xf0\x21"
|
|
|
|
"\x76\xa8\x6a\x8c\x28\x1c\xb3\x6b"
|
|
|
|
"\x97\xd7\xb6\x53\x2a\xcc\xab\x40"
|
|
|
|
"\x9d\x62\x79\x58\x52\xe6\x65\xb7"
|
|
|
|
"\xab\x55\x67\x9c\x89\x7c\x03\xb0"
|
|
|
|
"\x73\x59\xc5\x81\xf5\x18\x17\x5c"
|
|
|
|
"\x89\xf3\x78\x35\x44\x62\x78\x72"
|
|
|
|
"\xd0\x96\xeb\x31\xe7\x87\x77\x14"
|
|
|
|
"\x99\x51\xf2\x59\x26\x9e\xb5\xa6"
|
|
|
|
"\x45\xfe\x6e\xbd\x07\x4c\x94\x5a"
|
|
|
|
"\xa5\x7d\xfc\xf1\x2b\x77\xe2\xfe"
|
|
|
|
"\x17\xd4\x84\xa0\xac\xb5\xc7\xda"
|
|
|
|
"\xa9\x1a\xb6\xf3\x74\x11\xb4\x9d"
|
|
|
|
"\xfb\x79\x2e\x04\x2d\x50\x28\x83"
|
|
|
|
"\xbf\xc6\x52\xd3\x34\xd6\xe8\x7a"
|
|
|
|
"\xb6\xea\xe7\xa8\x6c\x15\x1e\x2c"
|
|
|
|
"\x57\xbc\x48\x4e\x5f\x5c\xb6\x92"
|
|
|
|
"\xd2\x49\x77\x81\x6d\x90\x70\xae"
|
|
|
|
"\x98\xa1\x03\x0d\x6b\xb9\x77\x14"
|
|
|
|
"\xf1\x4e\x23\xd3\xf8\x68\xbd\xc2"
|
|
|
|
"\xfe\x04\xb7\x5c\xc5\x17\x60\x8f"
|
|
|
|
"\x65\x54\xa4\x7a\x42\xdc\x18\x0d"
|
|
|
|
"\xb5\xcf\x0f\xd3\xc7\x91\x66\x1b"
|
|
|
|
"\x45\x42\x27\x75\x50\xe5\xee\xb8"
|
|
|
|
"\x7f\x33\x2c\xba\x4a\x92\x4d\x2c"
|
|
|
|
"\x3c\xe3\x0d\x80\x01\xba\x0d\x29"
|
|
|
|
"\xd8\x3c\xe9\x13\x16\x57\xe6\xea"
|
|
|
|
"\x94\x52\xe7\x00\x4d\x30\xb0\x0f"
|
|
|
|
"\x35\xb8\xb8\xa7\xb1\xb5\x3b\x44"
|
|
|
|
"\xe1\x2f\xfd\x88\xed\x43\xe7\x52"
|
|
|
|
"\x10\x93\xb3\x8a\x30\x6b\x0a\xf7"
|
|
|
|
"\x23\xc6\x50\x9d\x4a\xb0\xde\xc3"
|
|
|
|
"\xdc\x9b\x2f\x01\x56\x36\x09\xc5"
|
|
|
|
"\x2f\x6b\xfe\xf1\xd8\x27\x45\x03"
|
|
|
|
"\x30\x5e\x5c\x5b\xb4\x62\x0e\x1a"
|
|
|
|
"\xa9\x21\x2b\x92\x94\x87\x62\x57"
|
|
|
|
"\x4c\x10\x74\x1a\xf1\x0a\xc5\x84"
|
|
|
|
"\x3b\x9e\x72\x02\xd7\xcc\x09\x56"
|
|
|
|
"\xbd\x54\xc1\xf0\xc3\xe3\xb3\xf8"
|
|
|
|
"\xd2\x0d\x61\xcb\xef\xce\x0d\x05"
|
|
|
|
"\xb0\x98\xd9\x8e\x4f\xf9\xbc\x93"
|
|
|
|
"\xa6\xea\xc8\xcf\x10\x53\x4b\xf1"
|
|
|
|
"\xec\xfc\x89\xf9\x64\xb0\x22\xbf"
|
|
|
|
"\x9e\x55\x46\x9f\x7c\x50\x8e\x84"
|
|
|
|
"\x54\x20\x98\xd7\x6c\x40\x1e\xdb"
|
|
|
|
"\x69\x34\x78\x61\x24\x21\x9c\x8a"
|
|
|
|
"\xb3\x62\x31\x8b\x6e\xf5\x2a\x35"
|
|
|
|
"\x86\x13\xb1\x6c\x64\x2e\x41\xa5"
|
|
|
|
"\x05\xf2\x42\xba\xd2\x3a\x0d\x8e"
|
|
|
|
"\x8a\x59\x94\x3c\xcf\x36\x27\x82"
|
|
|
|
"\xc2\x45\xee\x58\xcd\x88\xb4\xec"
|
|
|
|
"\xde\xb2\x96\x0a\xaf\x38\x6f\x88"
|
|
|
|
"\xd7\xd8\xe1\xdf\xb9\x96\xa9\x0a"
|
|
|
|
"\xb1\x95\x28\x86\x20\xe9\x17\x49"
|
|
|
|
"\xa2\x29\x38\xaa\xa5\xe9\x6e\xf1"
|
|
|
|
"\x19\x27\xc0\xd5\x2a\x22\xc3\x0b"
|
|
|
|
"\xdb\x7c\x73\x10\xb9\xba\x89\x76"
|
|
|
|
"\x54\xae\x7d\x71\xb3\x93\xf6\x32"
|
|
|
|
"\xe6\x47\x43\x55\xac\xa0\x0d\xc2"
|
|
|
|
"\x93\x27\x4a\x8e\x0e\x74\x15\xc7"
|
|
|
|
"\x0b\x85\xd9\x0c\xa9\x30\x7a\x3e"
|
|
|
|
"\xea\x8f\x85\x6d\x3a\x12\x4f\x72"
|
|
|
|
"\x69\x58\x7a\x80\xbb\xb5\x97\xf3"
|
|
|
|
"\xcf\x70\xd2\x5d\xdd\x4d\x21\x79"
|
|
|
|
"\x54\x4d\xe4\x05\xe8\xbd\xc2\x62"
|
|
|
|
"\xb1\x3b\x77\x1c\xd6\x5c\xf3\xa0"
|
|
|
|
"\x79\x00\xa8\x6c\x29\xd9\x18\x24"
|
|
|
|
"\x36\xa2\x46\xc0\x96\x65\x7f\xbd"
|
|
|
|
"\x2a\xed\x36\x16\x0c\xaa\x9f\xf4"
|
|
|
|
"\xc5\xb4\xe2\x12\xed\x69\xed\x4f"
|
|
|
|
"\x26\x2c\x39\x52\x89\x98\xe7\x2c"
|
|
|
|
"\x99\xa4\x9e\xa3\x9b\x99\x46\x7a"
|
|
|
|
"\x3a\xdc\xa8\x59\xa3\xdb\xc3\x3b"
|
|
|
|
"\x95\x0d\x3b\x09\x6e\xee\x83\x5d"
|
|
|
|
"\x32\x4d\xed\xab\xfa\x98\x14\x4e"
|
|
|
|
"\xc3\x15\x45\x53\x61\xc4\x93\xbd"
|
|
|
|
"\x90\xf4\x99\x95\x4c\xe6\x76\x92"
|
|
|
|
"\x29\x90\x46\x30\x92\x69\x7d\x13"
|
|
|
|
"\xf2\xa5\xcd\x69\x49\x44\xb2\x0f"
|
|
|
|
"\x63\x40\x36\x5f\x09\xe2\x78\xf8"
|
|
|
|
"\x91\xe3\xe2\xfa\x10\xf7\xc8\x24"
|
|
|
|
"\xa8\x89\x32\x5c\x37\x25\x1d\xb2"
|
|
|
|
"\xea\x17\x8a\x0a\xa9\x64\xc3\x7c"
|
|
|
|
"\x3c\x7c\xbd\xc6\x79\x34\xe7\xe2"
|
|
|
|
"\x85\x8e\xbf\xf8\xde\x92\xa0\xae"
|
|
|
|
"\x20\xc4\xf6\xbb\x1f\x38\x19\x0e"
|
|
|
|
"\xe8\x79\x9c\xa1\x23\xe9\x54\x7e"
|
|
|
|
"\x37\x2f\xe2\x94\x32\xaf\xa0\x23"
|
|
|
|
"\x49\xe4\xc0\xb3\xac\x00\x8f\x36"
|
|
|
|
"\x05\xc4\xa6\x96\xec\x05\x98\x4f"
|
|
|
|
"\x96\x67\x57\x1f\x20\x86\x1b\x2d"
|
|
|
|
"\x69\xe4\x29\x93\x66\x5f\xaf\x6b"
|
|
|
|
"\x88\x26\x2c\x67\x02\x4b\x52\xd0"
|
|
|
|
"\x83\x7a\x43\x1f\xc0\x71\x15\x25"
|
|
|
|
"\x77\x65\x08\x60\x11\x76\x4c\x8d"
|
|
|
|
"\xed\xa9\x27\xc6\xb1\x2a\x2c\x6a"
|
|
|
|
"\x4a\x97\xf5\xc6\xb7\x70\x42\xd3"
|
|
|
|
"\x03\xd1\x24\x95\xec\x6d\xab\x38"
|
|
|
|
"\x72\xce\xe2\x8b\x33\xd7\x51\x09"
|
|
|
|
"\xdc\x45\xe0\x09\x96\x32\xf3\xc4"
|
|
|
|
"\x84\xdc\x73\x73\x2d\x1b\x11\x98"
|
|
|
|
"\xc5\x0e\x69\x28\x94\xc7\xb5\x4d"
|
|
|
|
"\xc8\x8a\xd0\xaa\x13\x2e\x18\x74"
|
|
|
|
"\xdd\xd1\x1e\xf3\x90\xe8\xfc\x9a"
|
|
|
|
"\x72\x4a\x0e\xd1\xe4\xfb\x0d\x96"
|
|
|
|
"\xd1\x0c\x79\x85\x1b\x1c\xfe\xe1"
|
|
|
|
"\x62\x8f\x7a\x73\x32\xab\xc8\x18"
|
|
|
|
"\x69\xe3\x34\x30\xdf\x13\xa6\xe5"
|
|
|
|
"\xe8\x0e\x67\x7f\x81\x11\xb4\x60"
|
|
|
|
"\xc7\xbd\x79\x65\x50\xdc\xc4\x5b"
|
|
|
|
"\xde\x39\xa4\x01\x72\x63\xf3\xd1"
|
|
|
|
"\x64\x4e\xdf\xfc\x27\x92\x37\x0d"
|
|
|
|
"\x57\xcd\x11\x4f\x11\x04\x8e\x1d"
|
|
|
|
"\x16\xf7\xcd\x92\x9a\x99\x30\x14"
|
|
|
|
"\xf1\x7c\x67\x1b\x1f\x41\x0b\xe8"
|
|
|
|
"\x32\xe8\xb8\xc1\x4f\x54\x86\x4f"
|
|
|
|
"\xe5\x79\x81\x73\xcd\x43\x59\x68"
|
|
|
|
"\x73\x02\x3b\x78\x21\x72\x43\x00"
|
|
|
|
"\x49\x17\xf7\x00\xaf\x68\x24\x53"
|
|
|
|
"\x05\x0a\xc3\x33\xe0\x33\x3f\x69"
|
|
|
|
"\xd2\x84\x2f\x0b\xed\xde\x04\xf4"
|
|
|
|
"\x11\x94\x13\x69\x51\x09\x28\xde"
|
|
|
|
"\x57\x5c\xef\xdc\x9a\x49\x1c\x17"
|
|
|
|
"\x97\xf3\x96\xc1\x7f\x5d\x2e\x7d"
|
|
|
|
"\x55\xb8\xb3\x02\x09\xb3\x1f\xe7"
|
|
|
|
"\xc9\x8d\xa3\x36\x34\x8a\x77\x13"
|
|
|
|
"\x30\x63\x4c\xa5\xcd\xc3\xe0\x7e"
|
|
|
|
"\x05\xa1\x7b\x0c\xcb\x74\x47\x31"
|
|
|
|
"\x62\x03\x43\xf1\x87\xb4\xb0\x85"
|
|
|
|
"\x87\x8e\x4b\x25\xc7\xcf\xae\x4b"
|
|
|
|
"\x36\x46\x3e\x62\xbc\x6f\xeb\x5f"
|
|
|
|
"\x73\xac\xe6\x07\xee\xc1\xa1\xd6"
|
|
|
|
"\xc4\xab\xc9\xd6\x89\x45\xe1\xf1"
|
|
|
|
"\x04\x4e\x1a\x6f\xbb\x4f\x3a\xa3"
|
|
|
|
"\xa0\xcb\xa3\x0a\xd8\x71\x35\x55"
|
|
|
|
"\xe4\xbc\x2e\x04\x06\xe6\xff\x5b"
|
|
|
|
"\x1c\xc0\x11\x7c\xc5\x17\xf3\x38"
|
|
|
|
"\xcf\xe9\xba\x0f\x0e\xef\x02\xc2"
|
|
|
|
"\x8d\xc6\xbc\x4b\x67\x20\x95\xd7"
|
|
|
|
"\x2c\x45\x5b\x86\x44\x8c\x6f\x2e"
|
|
|
|
"\x7e\x9f\x1c\x77\xba\x6b\x0e\xa3"
|
|
|
|
"\x69\xdc\xab\x24\x57\x60\x47\xc1"
|
|
|
|
"\xd1\xa5\x9d\x23\xe6\xb1\x37\xfe"
|
|
|
|
"\x93\xd2\x4c\x46\xf9\x0c\xc6\xfb"
|
|
|
|
"\xd6\x9d\x99\x69\xab\x7a\x07\x0c"
|
|
|
|
"\x65\xe7\xc4\x08\x96\xe2\xa5\x01"
|
|
|
|
"\x3f\x46\x07\x05\x7e\xe8\x9a\x90"
|
|
|
|
"\x50\xdc\xe9\x7a\xea\xa1\x39\x6e"
|
|
|
|
"\x66\xe4\x6f\xa5\x5f\xb2\xd9\x5b"
|
|
|
|
"\xf5\xdb\x2a\x32\xf0\x11\x6f\x7c"
|
|
|
|
"\x26\x10\x8f\x3d\x80\xe9\x58\xf7"
|
|
|
|
"\xe0\xa8\x57\xf8\xdb\x0e\xce\x99"
|
|
|
|
"\x63\x19\x3d\xd5\xec\x1b\x77\x69"
|
|
|
|
"\x98\xf6\xe4\x5f\x67\x17\x4b\x09"
|
|
|
|
"\x85\x62\x82\x70\x18\xe2\x9a\x78"
|
|
|
|
"\xe2\x62\xbd\xb4\xf1\x42\xc6\xfb"
|
|
|
|
"\x08\xd0\xbd\xeb\x4e\x09\xf2\xc8"
|
|
|
|
"\x1e\xdc\x3d\x32\x21\x56\x9c\x4f"
|
|
|
|
"\x35\xf3\x61\x06\x72\x84\xc4\x32"
|
|
|
|
"\xf2\xf1\xfa\x0b\x2f\xc3\xdb\x02"
|
|
|
|
"\x04\xc2\xde\x57\x64\x60\x8d\xcf"
|
|
|
|
"\xcb\x86\x5d\x97\x3e\xb1\x9c\x01"
|
|
|
|
"\xd6\x28\x8f\x99\xbc\x46\xeb\x05"
|
|
|
|
"\xaf\x7e\xb8\x21\x2a\x56\x85\x1c"
|
|
|
|
"\xb3\x71\xa0\xde\xca\x96\xf1\x78"
|
|
|
|
"\x49\xa2\x99\x81\x80\x5c\x01\xf5"
|
|
|
|
"\xa0\xa2\x56\x63\xe2\x70\x07\xa5"
|
|
|
|
"\x95\xd6\x85\xeb\x36\x9e\xa9\x51"
|
|
|
|
"\x66\x56\x5f\x1d\x02\x19\xe2\xf6"
|
|
|
|
"\x4f\x73\x38\x09\x75\x64\x48\xe0"
|
|
|
|
"\xf1\x7e\x0e\xe8\x9d\xf9\xed\x94"
|
|
|
|
"\xfe\x16\x26\x62\x49\x74\xf4\xb0"
|
|
|
|
"\xd4\xa9\x6c\xb0\xfd\x53\xe9\x81"
|
|
|
|
"\xe0\x7a\xbf\xcf\xb5\xc4\x01\x81"
|
|
|
|
"\x79\x99\x77\x01\x3b\xe9\xa2\xb6"
|
|
|
|
"\xe6\x6a\x8a\x9e\x56\x1c\x8d\x1e"
|
|
|
|
"\x8f\x06\x55\x2c\x6c\xdc\x92\x87"
|
|
|
|
"\x64\x3b\x4b\x19\xa1\x13\x64\x1d"
|
|
|
|
"\x4a\xe9\xc0\x00\xb8\x95\xef\x6b"
|
|
|
|
"\x1a\x86\x6d\x37\x52\x02\xc2\xe0"
|
|
|
|
"\xc8\xbb\x42\x0c\x02\x21\x4a\xc9"
|
|
|
|
"\xef\xa0\x54\xe4\x5e\x16\x53\x81"
|
|
|
|
"\x70\x62\x10\xaf\xde\xb8\xb5\xd3"
|
|
|
|
"\xe8\x5e\x6c\xc3\x8a\x3e\x18\x07"
|
|
|
|
"\xf2\x2f\x7d\xa7\xe1\x3d\x4e\xb4"
|
|
|
|
"\x26\xa7\xa3\x93\x86\xb2\x04\x1e"
|
|
|
|
"\x53\x5d\x86\xd6\xde\x65\xca\xe3"
|
|
|
|
"\x4e\xc1\xcf\xef\xc8\x70\x1b\x83"
|
|
|
|
"\x13\xdd\x18\x8b\x0d\x76\xd2\xf6"
|
|
|
|
"\x37\x7a\x93\x7a\x50\x11\x9f\x96"
|
|
|
|
"\x86\x25\xfd\xac\xdc\xbe\x18\x93"
|
|
|
|
"\x19\x6b\xec\x58\x4f\xb9\x75\xa7"
|
|
|
|
"\xdd\x3f\x2f\xec\xc8\x5a\x84\xab"
|
|
|
|
"\xd5\xe4\x8a\x07\xf6\x4d\x23\xd6"
|
|
|
|
"\x03\xfb\x03\x6a\xea\x66\xbf\xd4"
|
|
|
|
"\xb1\x34\xfb\x78\xe9\x55\xdc\x7c"
|
|
|
|
"\x3d\x9c\xe5\x9a\xac\xc3\x7a\x80"
|
|
|
|
"\x24\x6d\xa0\xef\x25\x7c\xb7\xea"
|
|
|
|
"\xce\x4d\x5f\x18\x60\xce\x87\x22"
|
|
|
|
"\x66\x2f\xd5\xdd\xdd\x02\x21\x75"
|
|
|
|
"\x82\xa0\x1f\x58\xc6\xd3\x62\xf7"
|
|
|
|
"\x32\xd8\xaf\x1e\x07\x77\x51\x96"
|
|
|
|
"\xd5\x6b\x1e\x7e\x80\x02\xe8\x67"
|
|
|
|
"\xea\x17\x0b\x10\xd2\x3f\x28\x25"
|
|
|
|
"\x4f\x05\x77\x02\x14\x69\xf0\x2c"
|
|
|
|
"\xbe\x0c\xf1\x74\x30\xd1\xb9\x9b"
|
|
|
|
"\xfc\x8c\xbb\x04\x16\xd9\xba\xc3"
|
|
|
|
"\xbc\x91\x8a\xc4\x30\xa4\xb0\x12"
|
|
|
|
"\x4c\x21\x87\xcb\xc9\x1d\x16\x96"
|
|
|
|
"\x07\x6f\x23\x54\xb9\x6f\x79\xe5"
|
|
|
|
"\x64\xc0\x64\xda\xb1\xae\xdd\x60"
|
|
|
|
"\x6c\x1a\x9d\xd3\x04\x8e\x45\xb0"
|
|
|
|
"\x92\x61\xd0\x48\x81\xed\x5e\x1d"
|
|
|
|
"\xa0\xc9\xa4\x33\xc7\x13\x51\x5d"
|
|
|
|
"\x7f\x83\x73\xb6\x70\x18\x65\x3e"
|
|
|
|
"\x2f\x0e\x7a\x12\x39\x98\xab\xd8"
|
|
|
|
"\x7e\x6f\xa3\xd1\xba\x56\xad\xbd"
|
|
|
|
"\xf0\x03\x01\x1c\x85\x35\x9f\xeb"
|
|
|
|
"\x19\x63\xa1\xaf\xfe\x2d\x35\x50"
|
|
|
|
"\x39\xa0\x65\x7c\x95\x7e\x6b\xfe"
|
|
|
|
"\xc1\xac\x07\x7c\x98\x4f\xbe\x57"
|
|
|
|
"\xa7\x22\xec\xe2\x7e\x29\x09\x53"
|
|
|
|
"\xe8\xbf\xb4\x7e\x3f\x8f\xfc\x14"
|
|
|
|
"\xce\x54\xf9\x18\x58\xb5\xff\x44"
|
|
|
|
"\x05\x9d\xce\x1b\xb6\x82\x23\xc8"
|
|
|
|
"\x2e\xbc\x69\xbb\x4a\x29\x0f\x65"
|
|
|
|
"\x94\xf0\x63\x06\x0e\xef\x8c\xbd"
|
|
|
|
"\xff\xfd\xb0\x21\x6e\x57\x05\x75"
|
|
|
|
"\xda\xd5\xc4\xeb\x8d\x32\xf7\x50"
|
|
|
|
"\xd3\x6f\x22\xed\x5f\x8e\xa2\x5b"
|
|
|
|
"\x80\x8c\xc8\x78\x40\x24\x4b\x89"
|
|
|
|
"\x30\xce\x7a\x97\x0e\xc4\xaf\xef"
|
|
|
|
"\x9b\xb4\xcd\x66\x74\x14\x04\x2b"
|
|
|
|
"\xf7\xce\x0b\x1c\x6e\xc2\x78\x8c"
|
|
|
|
"\xca\xc5\xd0\x1c\x95\x4a\x91\x2d"
|
|
|
|
"\xa7\x20\xeb\x86\x52\xb7\x67\xd8"
|
|
|
|
"\x0c\xd6\x04\x14\xde\x51\x74\x75"
|
|
|
|
"\xe7\x11\xb4\x87\xa3\x3d\x2d\xad"
|
|
|
|
"\x4f\xef\xa0\x0f\x70\x00\x6d\x13"
|
|
|
|
"\x19\x1d\x41\x50\xe9\xd8\xf0\x32"
|
|
|
|
"\x71\xbc\xd3\x11\xf2\xac\xbe\xaf"
|
|
|
|
"\x75\x46\x65\x4e\x07\x34\x37\xa3"
|
|
|
|
"\x89\xfe\x75\xd4\x70\x4c\xc6\x3f"
|
|
|
|
"\x69\x24\x0e\x38\x67\x43\x8c\xde"
|
|
|
|
"\x06\xb5\xb8\xe7\xc4\xf0\x41\x8f"
|
|
|
|
"\xf0\xbd\x2f\x0b\xb9\x18\xf8\xde"
|
|
|
|
"\x64\xb1\xdb\xee\x00\x50\x77\xe1"
|
|
|
|
"\xc7\xff\xa6\xfa\xdd\x70\xf4\xe3"
|
|
|
|
"\x93\xe9\x77\x35\x3d\x4b\x2f\x2b"
|
|
|
|
"\x6d\x55\xf0\xfc\x88\x54\x4e\x89"
|
|
|
|
"\xc1\x8a\x23\x31\x2d\x14\x2a\xb8"
|
|
|
|
"\x1b\x15\xdd\x9e\x6e\x7b\xda\x05"
|
|
|
|
"\x91\x7d\x62\x64\x96\x72\xde\xfc"
|
|
|
|
"\xc1\xec\xf0\x23\x51\x6f\xdb\x5b"
|
|
|
|
"\x1d\x08\x57\xce\x09\xb8\xf6\xcd"
|
|
|
|
"\x8d\x95\xf2\x20\xbf\x0f\x20\x57"
|
|
|
|
"\x98\x81\x84\x4f\x15\x5c\x76\xe7"
|
|
|
|
"\x3e\x0a\x3a\x6c\xc4\x8a\xbe\x78"
|
|
|
|
"\x74\x77\xc3\x09\x4b\x5d\x48\xe4"
|
|
|
|
"\xc8\xcb\x0b\xea\x17\x28\xcf\xcf"
|
|
|
|
"\x31\x32\x44\xa4\xe5\x0e\x1a\x98"
|
|
|
|
"\x94\xc4\xf0\xff\xae\x3e\x44\xe8"
|
|
|
|
"\xa5\xb3\xb5\x37\x2f\xe8\xaf\x6f"
|
|
|
|
"\x28\xc1\x37\x5f\x31\xd2\xb9\x33"
|
|
|
|
"\xb1\xb2\x52\x94\x75\x2c\x29\x59"
|
|
|
|
"\x06\xc2\x25\xe8\x71\x65\x4e\xed"
|
|
|
|
"\xc0\x9c\xb1\xbb\x25\xdc\x6c\xe7"
|
|
|
|
"\x4b\xa5\x7a\x54\x7a\x60\xff\x7a"
|
|
|
|
"\xe0\x50\x40\x96\x35\x63\xe4\x0b"
|
|
|
|
"\x76\xbd\xa4\x65\x00\x1b\x57\x88"
|
|
|
|
"\xae\xed\x39\x88\x42\x11\x3c\xed"
|
|
|
|
"\x85\x67\x7d\xb9\x68\x82\xe9\x43"
|
|
|
|
"\x3c\x47\x53\xfa\xe8\xf8\x9f\x1f"
|
|
|
|
"\x9f\xef\x0f\xf7\x30\xd9\x30\x0e"
|
|
|
|
"\xb9\x9f\x69\x18\x2f\x7e\xf8\xf8"
|
|
|
|
"\xf8\x8c\x0f\xd4\x02\x4d\xea\xcd"
|
|
|
|
"\x0a\x9c\x6f\x71\x6d\x5a\x4c\x60"
|
|
|
|
"\xce\x20\x56\x32\xc6\xc5\x99\x1f"
|
|
|
|
"\x09\xe6\x4e\x18\x1a\x15\x13\xa8"
|
|
|
|
"\x7d\xb1\x6b\xc0\xb2\x6d\xf8\x26"
|
|
|
|
"\x66\xf8\x3d\x18\x74\x70\x66\x7a"
|
|
|
|
"\x34\x17\xde\xba\x47\xf1\x06\x18"
|
|
|
|
"\xcb\xaf\xeb\x4a\x1e\x8f\xa7\x77"
|
|
|
|
"\xe0\x3b\x78\x62\x66\xc9\x10\xea"
|
|
|
|
"\x1f\xb7\x29\x0a\x45\xa1\x1d\x1e"
|
|
|
|
"\x1d\xe2\x65\x61\x50\x9c\xd7\x05"
|
|
|
|
"\xf2\x0b\x5b\x12\x61\x02\xc8\xe5"
|
|
|
|
"\x63\x4f\x20\x0c\x07\x17\x33\x5e"
|
|
|
|
"\x03\x9a\x53\x0f\x2e\x55\xfe\x50"
|
|
|
|
"\x43\x7d\xd0\xb6\x7e\x5a\xda\xae"
|
|
|
|
"\x58\xef\x15\xa9\x83\xd9\x46\xb1"
|
|
|
|
"\x42\xaa\xf5\x02\x6c\xce\x92\x06"
|
|
|
|
"\x1b\xdb\x66\x45\x91\x79\xc2\x2d"
|
|
|
|
"\xe6\x53\xd3\x14\xfd\xbb\x44\x63"
|
|
|
|
"\xc6\xd7\x3d\x7a\x0c\x75\x78\x9d"
|
|
|
|
"\x5c\xa6\x39\xb3\xe5\x63\xca\x8b"
|
|
|
|
"\xfe\xd3\xef\x60\x83\xf6\x8e\x70"
|
|
|
|
"\xb6\x67\xc7\x77\xed\x23\xef\x4c"
|
|
|
|
"\xf0\xed\x2d\x07\x59\x6f\xc1\x01"
|
|
|
|
"\x34\x37\x08\xab\xd9\x1f\x09\xb1"
|
|
|
|
"\xce\x5b\x17\xff\x74\xf8\x9c\xd5"
|
|
|
|
"\x2c\x56\x39\x79\x0f\x69\x44\x75"
|
|
|
|
"\x58\x27\x01\xc4\xbf\xa7\xa1\x1d"
|
|
|
|
"\x90\x17\x77\x86\x5a\x3f\xd9\xd1"
|
|
|
|
"\x0e\xa0\x10\xf8\xec\x1e\xa5\x7f"
|
|
|
|
"\x5e\x36\xd1\xe3\x04\x2c\x70\xf7"
|
|
|
|
"\x8e\xc0\x98\x2f\x6c\x94\x2b\x41"
|
|
|
|
"\xb7\x60\x00\xb7\x2e\xb8\x02\x8d"
|
|
|
|
"\xb8\xb0\xd3\x86\xba\x1d\xd7\x90"
|
|
|
|
"\xd6\xb6\xe1\xfc\xd7\xd8\x28\x06"
|
|
|
|
"\x63\x9b\xce\x61\x24\x79\xc0\x70"
|
|
|
|
"\x52\xd0\xb6\xd4\x28\x95\x24\x87"
|
|
|
|
"\x03\x1f\xb7\x9a\xda\xa3\xfb\x52"
|
|
|
|
"\x5b\x68\xe7\x4c\x8c\x24\xe1\x42"
|
|
|
|
"\xf7\xd5\xfd\xad\x06\x32\x9f\xba"
|
|
|
|
"\xc1\xfc\xdd\xc6\xfc\xfc\xb3\x38"
|
|
|
|
"\x74\x56\x58\x40\x02\x37\x52\x2c"
|
|
|
|
"\x55\xcc\xb3\x9e\x7a\xe9\xd4\x38"
|
|
|
|
"\x41\x5e\x0c\x35\xe2\x11\xd1\x13"
|
|
|
|
"\xf8\xb7\x8d\x72\x6b\x22\x2a\xb0"
|
|
|
|
"\xdb\x08\xba\x35\xb9\x3f\xc8\xd3"
|
|
|
|
"\x24\x90\xec\x58\xd2\x09\xc7\x2d"
|
|
|
|
"\xed\x38\x80\x36\x72\x43\x27\x49"
|
|
|
|
"\x4a\x80\x8a\xa2\xe8\xd3\xda\x30"
|
|
|
|
"\x7d\xb6\x82\x37\x86\x92\x86\x3e"
|
|
|
|
"\x08\xb2\x28\x5a\x55\x44\x24\x7d"
|
|
|
|
"\x40\x48\x8a\xb6\x89\x58\x08\xa0"
|
|
|
|
"\xd6\x6d\x3a\x17\xbf\xf6\x54\xa2"
|
|
|
|
"\xf5\xd3\x8c\x0f\x78\x12\x57\x8b"
|
|
|
|
"\xd5\xc2\xfd\x58\x5b\x7f\x38\xe3"
|
|
|
|
"\xcc\xb7\x7c\x48\xb3\x20\xe8\x81"
|
|
|
|
"\x14\x32\x45\x05\xe0\xdb\x9f\x75"
|
|
|
|
"\x85\xb4\x6a\xfc\x95\xe3\x54\x22"
|
|
|
|
"\x12\xee\x30\xfe\xd8\x30\xef\x34"
|
|
|
|
"\x50\xab\x46\x30\x98\x2f\xb7\xc0"
|
|
|
|
"\x15\xa2\x83\xb6\xf2\x06\x21\xa2"
|
|
|
|
"\xc3\x26\x37\x14\xd1\x4d\xb5\x10"
|
|
|
|
"\x52\x76\x4d\x6a\xee\xb5\x2b\x15"
|
|
|
|
"\xb7\xf9\x51\xe8\x2a\xaf\xc7\xfa"
|
|
|
|
"\x77\xaf\xb0\x05\x4d\xd1\x68\x8e"
|
|
|
|
"\x74\x05\x9f\x9d\x93\xa5\x3e\x7f"
|
|
|
|
"\x4e\x5f\x9d\xcb\x09\xc7\x83\xe3"
|
|
|
|
"\x02\x9d\x27\x1f\xef\x85\x05\x8d"
|
|
|
|
"\xec\x55\x88\x0f\x0d\x7c\x4c\xe8"
|
|
|
|
"\xa1\x75\xa0\xd8\x06\x47\x14\xef"
|
|
|
|
"\xaa\x61\xcf\x26\x15\xad\xd8\xa3"
|
|
|
|
"\xaa\x75\xf2\x78\x4a\x5a\x61\xdf"
|
|
|
|
"\x8b\xc7\x04\xbc\xb2\x32\xd2\x7e"
|
|
|
|
"\x42\xee\xb4\x2f\x51\xff\x7b\x2e"
|
|
|
|
"\xd3\x02\xe8\xdc\x5d\x0d\x50\xdc"
|
|
|
|
"\xae\xb7\x46\xf9\xa8\xe6\xd0\x16"
|
|
|
|
"\xcc\xe6\x2c\x81\xc7\xad\xe9\xf0"
|
|
|
|
"\x05\x72\x6d\x3d\x0a\x7a\xa9\x02"
|
|
|
|
"\xac\x82\x93\x6e\xb6\x1c\x28\xfc"
|
|
|
|
"\x44\x12\xfb\x73\x77\xd4\x13\x39"
|
|
|
|
"\x29\x88\x8a\xf3\x5c\xa6\x36\xa0"
|
|
|
|
"\x2a\xed\x7e\xb1\x1d\xd6\x4c\x6b"
|
|
|
|
"\x41\x01\x18\x5d\x5d\x07\x97\xa6"
|
|
|
|
"\x4b\xef\x31\x18\xea\xac\xb1\x84"
|
|
|
|
"\x21\xed\xda\x86",
|
|
|
|
.rlen = 4100,
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec aes_ctr_dec_tv_template[] = {
|
|
|
|
{ /* From RFC 3686 */
|
|
|
|
.key = "\xae\x68\x52\xf8\x12\x10\x67\xcc"
|
|
|
|
"\x4b\xf7\xa5\x76\x55\x77\xf3\x9e"
|
|
|
|
"\x00\x00\x00\x30",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.klen = 20,
|
|
|
|
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.input = "\xe4\x09\x5d\x4f\xb7\xa7\xb3\x79"
|
|
|
|
"\x2d\x61\x75\xa3\x26\x13\x11\xb8",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.ilen = 16,
|
|
|
|
.result = "Single block msg",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x7e\x24\x06\x78\x17\xfa\xe0\xd7"
|
|
|
|
"\x43\xd6\xce\x1f\x32\x53\x91\x63"
|
|
|
|
"\x00\x6c\xb6\xdb",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.klen = 20,
|
|
|
|
.iv = "\xc0\x54\x3b\x59\xda\x48\xd9\x0b",
|
|
|
|
.input = "\x51\x04\xa1\x06\x16\x8a\x72\xd9"
|
|
|
|
"\x79\x0d\x41\xee\x8e\xda\xd3\x88"
|
|
|
|
"\xeb\x2e\x1e\xfc\x46\xda\x57\xc8"
|
|
|
|
"\xfc\xe6\x30\xdf\x91\x41\xbe\x28",
|
|
|
|
.ilen = 32,
|
|
|
|
.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",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.rlen = 32,
|
|
|
|
}, {
|
|
|
|
.key = "\x16\xaf\x5b\x14\x5f\xc9\xf5\x79"
|
|
|
|
"\xc1\x75\xf9\x3e\x3b\xfb\x0e\xed"
|
|
|
|
"\x86\x3d\x06\xcc\xfd\xb7\x85\x15"
|
|
|
|
"\x00\x00\x00\x48",
|
|
|
|
.klen = 28,
|
|
|
|
.iv = "\x36\x73\x3c\x14\x7d\x6d\x93\xcb",
|
|
|
|
.input = "\x4b\x55\x38\x4f\xe2\x59\xc9\xc8"
|
|
|
|
"\x4e\x79\x35\xa0\x03\xcb\xe9\x28",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "Single block msg",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x7c\x5c\xb2\x40\x1b\x3d\xc3\x3c"
|
|
|
|
"\x19\xe7\x34\x08\x19\xe0\xf6\x9c"
|
|
|
|
"\x67\x8c\x3d\xb8\xe6\xf6\xa9\x1a"
|
|
|
|
"\x00\x96\xb0\x3b",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.klen = 28,
|
|
|
|
.iv = "\x02\x0c\x6e\xad\xc2\xcb\x50\x0d",
|
|
|
|
.input = "\x45\x32\x43\xfc\x60\x9b\x23\x32"
|
|
|
|
"\x7e\xdf\xaa\xfa\x71\x31\xcd\x9f"
|
|
|
|
"\x84\x90\x70\x1c\x5a\xd4\xa7\x9c"
|
|
|
|
"\xfc\x1f\xe0\xff\x42\xf4\xfb\x00",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.ilen = 32,
|
|
|
|
.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",
|
|
|
|
.rlen = 32,
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
}, {
|
|
|
|
.key = "\x77\x6b\xef\xf2\x85\x1d\xb0\x6f"
|
|
|
|
"\x4c\x8a\x05\x42\xc8\x69\x6f\x6c"
|
|
|
|
"\x6a\x81\xaf\x1e\xec\x96\xb4\xd3"
|
|
|
|
"\x7f\xc1\xd6\x89\xe6\xc1\xc1\x04"
|
|
|
|
"\x00\x00\x00\x60",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.klen = 36,
|
|
|
|
.iv = "\xdb\x56\x72\xc9\x7a\xa8\xf0\xb2",
|
|
|
|
.input = "\x14\x5a\xd0\x1d\xbf\x82\x4e\xc7"
|
|
|
|
"\x56\x08\x63\xdc\x71\xe3\xe0\xc0",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.ilen = 16,
|
|
|
|
.result = "Single block msg",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\xf6\xd6\x6d\x6b\xd5\x2d\x59\xbb"
|
|
|
|
"\x07\x96\x36\x58\x79\xef\xf8\x86"
|
|
|
|
"\xc6\x6d\xd5\x1a\x5b\x6a\x99\x74"
|
|
|
|
"\x4b\x50\x59\x0c\x87\xa2\x38\x84"
|
|
|
|
"\x00\xfa\xac\x24",
|
|
|
|
.klen = 36,
|
|
|
|
.iv = "\xc1\x58\x5e\xf1\x5a\x43\xd8\x75",
|
|
|
|
.input = "\xf0\x5e\x23\x1b\x38\x94\x61\x2c"
|
|
|
|
"\x49\xee\x00\x0b\x80\x4e\xb2\xa9"
|
|
|
|
"\xb8\x30\x6b\x50\x8f\x83\x9d\x6a"
|
|
|
|
"\x55\x30\x83\x1d\x93\x44\xaf\x1c",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.ilen = 32,
|
|
|
|
.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",
|
[CRYPTO] ctr: Add CTR (Counter) block cipher mode
This patch implements CTR mode for IPsec.
It is based off of RFC 3686.
Please note:
1. CTR turns a block cipher into a stream cipher.
Encryption is done in blocks, however the last block
may be a partial block.
A "counter block" is encrypted, creating a keystream
that is xor'ed with the plaintext. The counter portion
of the counter block is incremented after each block
of plaintext is encrypted.
Decryption is performed in same manner.
2. The CTR counterblock is composed of,
nonce + IV + counter
The size of the counterblock is equivalent to the
blocksize of the cipher.
sizeof(nonce) + sizeof(IV) + sizeof(counter) = blocksize
The CTR template requires the name of the cipher
algorithm, the sizeof the nonce, and the sizeof the iv.
ctr(cipher,sizeof_nonce,sizeof_iv)
So for example,
ctr(aes,4,8)
specifies the counterblock will be composed of 4 bytes
from a nonce, 8 bytes from the iv, and 4 bytes for counter
since aes has a blocksize of 16 bytes.
3. The counter portion of the counter block is stored
in big endian for conformance to rfc 3686.
Signed-off-by: Joy Latten <latten@austin.ibm.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
18 years ago
|
|
|
.rlen = 32,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct aead_testvec aes_gcm_enc_tv_template[] = {
|
|
|
|
{ /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 16,
|
|
|
|
.result = "\x58\xe2\xfc\xce\xfa\x7e\x30\x61"
|
|
|
|
"\x36\x7f\x1d\x57\xa4\xe7\x45\x5a",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 16,
|
|
|
|
.input = zeroed_string,
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x03\x88\xda\xce\x60\xb6\xa3\x92"
|
|
|
|
"\xf3\x28\xc2\xb9\x71\xb2\xfe\x78"
|
|
|
|
"\xab\x6e\x47\xd4\x2c\xec\x13\xbd"
|
|
|
|
"\xf5\x3a\x67\xb2\x12\x57\xbd\xdf",
|
|
|
|
.rlen = 32,
|
|
|
|
}, {
|
|
|
|
.key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
|
|
|
|
"\x6d\x6a\x8f\x94\x67\x30\x83\x08",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
|
|
|
|
"\xde\xca\xf8\x88",
|
|
|
|
.input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
|
|
|
|
"\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
|
|
|
|
"\x86\xa7\xa9\x53\x15\x34\xf7\xda"
|
|
|
|
"\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
|
|
|
|
"\x1c\x3c\x0c\x95\x95\x68\x09\x53"
|
|
|
|
"\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
|
|
|
|
"\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
|
|
|
|
"\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
|
|
|
|
.ilen = 64,
|
|
|
|
.result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
|
|
|
|
"\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
|
|
|
|
"\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
|
|
|
|
"\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
|
|
|
|
"\x21\xd5\x14\xb2\x54\x66\x93\x1c"
|
|
|
|
"\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
|
|
|
|
"\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
|
|
|
|
"\x3d\x58\xe0\x91\x47\x3f\x59\x85"
|
|
|
|
"\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
|
|
|
|
"\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
|
|
|
|
.rlen = 80,
|
|
|
|
}, {
|
|
|
|
.key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
|
|
|
|
"\x6d\x6a\x8f\x94\x67\x30\x83\x08",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
|
|
|
|
"\xde\xca\xf8\x88",
|
|
|
|
.input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
|
|
|
|
"\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
|
|
|
|
"\x86\xa7\xa9\x53\x15\x34\xf7\xda"
|
|
|
|
"\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
|
|
|
|
"\x1c\x3c\x0c\x95\x95\x68\x09\x53"
|
|
|
|
"\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
|
|
|
|
"\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
|
|
|
|
"\xba\x63\x7b\x39",
|
|
|
|
.ilen = 60,
|
|
|
|
.assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
|
|
|
|
"\xfe\xed\xfa\xce\xde\xad\xbe\xef"
|
|
|
|
"\xab\xad\xda\xd2",
|
|
|
|
.alen = 20,
|
|
|
|
.result = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
|
|
|
|
"\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
|
|
|
|
"\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
|
|
|
|
"\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
|
|
|
|
"\x21\xd5\x14\xb2\x54\x66\x93\x1c"
|
|
|
|
"\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
|
|
|
|
"\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
|
|
|
|
"\x3d\x58\xe0\x91"
|
|
|
|
"\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
|
|
|
|
"\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
|
|
|
|
.rlen = 76,
|
|
|
|
}, {
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 24,
|
|
|
|
.result = "\xcd\x33\xb2\x8a\xc7\x73\xf7\x4b"
|
|
|
|
"\xa0\x0e\xd1\xf3\x12\x57\x24\x35",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 24,
|
|
|
|
.input = zeroed_string,
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
|
|
|
|
"\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
|
|
|
|
"\x2f\xf5\x8d\x80\x03\x39\x27\xab"
|
|
|
|
"\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
|
|
|
|
.rlen = 32,
|
|
|
|
}, {
|
|
|
|
.key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
|
|
|
|
"\x6d\x6a\x8f\x94\x67\x30\x83\x08"
|
|
|
|
"\xfe\xff\xe9\x92\x86\x65\x73\x1c",
|
|
|
|
.klen = 24,
|
|
|
|
.iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
|
|
|
|
"\xde\xca\xf8\x88",
|
|
|
|
.input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
|
|
|
|
"\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
|
|
|
|
"\x86\xa7\xa9\x53\x15\x34\xf7\xda"
|
|
|
|
"\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
|
|
|
|
"\x1c\x3c\x0c\x95\x95\x68\x09\x53"
|
|
|
|
"\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
|
|
|
|
"\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
|
|
|
|
"\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
|
|
|
|
.ilen = 64,
|
|
|
|
.result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
|
|
|
|
"\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
|
|
|
|
"\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
|
|
|
|
"\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
|
|
|
|
"\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
|
|
|
|
"\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
|
|
|
|
"\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
|
|
|
|
"\xcc\xda\x27\x10\xac\xad\xe2\x56"
|
|
|
|
"\x99\x24\xa7\xc8\x58\x73\x36\xbf"
|
|
|
|
"\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
|
|
|
|
.rlen = 80,
|
|
|
|
}, {
|
|
|
|
.key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
|
|
|
|
"\x6d\x6a\x8f\x94\x67\x30\x83\x08"
|
|
|
|
"\xfe\xff\xe9\x92\x86\x65\x73\x1c",
|
|
|
|
.klen = 24,
|
|
|
|
.iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
|
|
|
|
"\xde\xca\xf8\x88",
|
|
|
|
.input = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
|
|
|
|
"\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
|
|
|
|
"\x86\xa7\xa9\x53\x15\x34\xf7\xda"
|
|
|
|
"\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
|
|
|
|
"\x1c\x3c\x0c\x95\x95\x68\x09\x53"
|
|
|
|
"\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
|
|
|
|
"\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
|
|
|
|
"\xba\x63\x7b\x39",
|
|
|
|
.ilen = 60,
|
|
|
|
.assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
|
|
|
|
"\xfe\xed\xfa\xce\xde\xad\xbe\xef"
|
|
|
|
"\xab\xad\xda\xd2",
|
|
|
|
.alen = 20,
|
|
|
|
.result = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
|
|
|
|
"\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
|
|
|
|
"\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
|
|
|
|
"\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
|
|
|
|
"\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
|
|
|
|
"\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
|
|
|
|
"\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
|
|
|
|
"\xcc\xda\x27\x10"
|
|
|
|
"\x25\x19\x49\x8e\x80\xf1\x47\x8f"
|
|
|
|
"\x37\xba\x55\xbd\x6d\x27\x61\x8c",
|
|
|
|
.rlen = 76,
|
|
|
|
.np = 2,
|
|
|
|
.tap = { 32, 28 },
|
|
|
|
.anp = 2,
|
|
|
|
.atap = { 8, 12 }
|
|
|
|
}, {
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 32,
|
|
|
|
.result = "\x53\x0f\x8a\xfb\xc7\x45\x36\xb9"
|
|
|
|
"\xa9\x63\xb4\xf1\xc4\xcb\x73\x8b",
|
|
|
|
.rlen = 16,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct aead_testvec aes_gcm_dec_tv_template[] = {
|
|
|
|
{ /* From McGrew & Viega - http://citeseer.ist.psu.edu/656989.html */
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 32,
|
|
|
|
.input = "\xce\xa7\x40\x3d\x4d\x60\x6b\x6e"
|
|
|
|
"\x07\x4e\xc5\xd3\xba\xf3\x9d\x18"
|
|
|
|
"\xd0\xd1\xc8\xa7\x99\x99\x6b\xf0"
|
|
|
|
"\x26\x5b\x98\xb5\xd4\x8a\xb9\x19",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = zeroed_string,
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
|
|
|
|
"\x6d\x6a\x8f\x94\x67\x30\x83\x08"
|
|
|
|
"\xfe\xff\xe9\x92\x86\x65\x73\x1c"
|
|
|
|
"\x6d\x6a\x8f\x94\x67\x30\x83\x08",
|
|
|
|
.klen = 32,
|
|
|
|
.iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
|
|
|
|
"\xde\xca\xf8\x88",
|
|
|
|
.input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
|
|
|
|
"\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
|
|
|
|
"\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
|
|
|
|
"\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
|
|
|
|
"\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
|
|
|
|
"\xa7\xb0\x8b\x10\x56\x82\x88\x38"
|
|
|
|
"\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
|
|
|
|
"\xbc\xc9\xf6\x62\x89\x80\x15\xad"
|
|
|
|
"\xb0\x94\xda\xc5\xd9\x34\x71\xbd"
|
|
|
|
"\xec\x1a\x50\x22\x70\xe3\xcc\x6c",
|
|
|
|
.ilen = 80,
|
|
|
|
.result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
|
|
|
|
"\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
|
|
|
|
"\x86\xa7\xa9\x53\x15\x34\xf7\xda"
|
|
|
|
"\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
|
|
|
|
"\x1c\x3c\x0c\x95\x95\x68\x09\x53"
|
|
|
|
"\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
|
|
|
|
"\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
|
|
|
|
"\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
|
|
|
|
.rlen = 64,
|
|
|
|
}, {
|
|
|
|
.key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
|
|
|
|
"\x6d\x6a\x8f\x94\x67\x30\x83\x08"
|
|
|
|
"\xfe\xff\xe9\x92\x86\x65\x73\x1c"
|
|
|
|
"\x6d\x6a\x8f\x94\x67\x30\x83\x08",
|
|
|
|
.klen = 32,
|
|
|
|
.iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
|
|
|
|
"\xde\xca\xf8\x88",
|
|
|
|
.input = "\x52\x2d\xc1\xf0\x99\x56\x7d\x07"
|
|
|
|
"\xf4\x7f\x37\xa3\x2a\x84\x42\x7d"
|
|
|
|
"\x64\x3a\x8c\xdc\xbf\xe5\xc0\xc9"
|
|
|
|
"\x75\x98\xa2\xbd\x25\x55\xd1\xaa"
|
|
|
|
"\x8c\xb0\x8e\x48\x59\x0d\xbb\x3d"
|
|
|
|
"\xa7\xb0\x8b\x10\x56\x82\x88\x38"
|
|
|
|
"\xc5\xf6\x1e\x63\x93\xba\x7a\x0a"
|
|
|
|
"\xbc\xc9\xf6\x62"
|
|
|
|
"\x76\xfc\x6e\xce\x0f\x4e\x17\x68"
|
|
|
|
"\xcd\xdf\x88\x53\xbb\x2d\x55\x1b",
|
|
|
|
.ilen = 76,
|
|
|
|
.assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
|
|
|
|
"\xfe\xed\xfa\xce\xde\xad\xbe\xef"
|
|
|
|
"\xab\xad\xda\xd2",
|
|
|
|
.alen = 20,
|
|
|
|
.result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
|
|
|
|
"\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
|
|
|
|
"\x86\xa7\xa9\x53\x15\x34\xf7\xda"
|
|
|
|
"\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
|
|
|
|
"\x1c\x3c\x0c\x95\x95\x68\x09\x53"
|
|
|
|
"\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
|
|
|
|
"\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
|
|
|
|
"\xba\x63\x7b\x39",
|
|
|
|
.rlen = 60,
|
|
|
|
.np = 2,
|
|
|
|
.tap = { 48, 28 },
|
|
|
|
.anp = 3,
|
|
|
|
.atap = { 8, 8, 4 }
|
|
|
|
}, {
|
|
|
|
.key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
|
|
|
|
"\x6d\x6a\x8f\x94\x67\x30\x83\x08",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
|
|
|
|
"\xde\xca\xf8\x88",
|
|
|
|
.input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
|
|
|
|
"\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
|
|
|
|
"\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
|
|
|
|
"\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
|
|
|
|
"\x21\xd5\x14\xb2\x54\x66\x93\x1c"
|
|
|
|
"\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
|
|
|
|
"\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
|
|
|
|
"\x3d\x58\xe0\x91\x47\x3f\x59\x85"
|
|
|
|
"\x4d\x5c\x2a\xf3\x27\xcd\x64\xa6"
|
|
|
|
"\x2c\xf3\x5a\xbd\x2b\xa6\xfa\xb4",
|
|
|
|
.ilen = 80,
|
|
|
|
.result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
|
|
|
|
"\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
|
|
|
|
"\x86\xa7\xa9\x53\x15\x34\xf7\xda"
|
|
|
|
"\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
|
|
|
|
"\x1c\x3c\x0c\x95\x95\x68\x09\x53"
|
|
|
|
"\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
|
|
|
|
"\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
|
|
|
|
"\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
|
|
|
|
.rlen = 64,
|
|
|
|
}, {
|
|
|
|
.key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
|
|
|
|
"\x6d\x6a\x8f\x94\x67\x30\x83\x08",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
|
|
|
|
"\xde\xca\xf8\x88",
|
|
|
|
.input = "\x42\x83\x1e\xc2\x21\x77\x74\x24"
|
|
|
|
"\x4b\x72\x21\xb7\x84\xd0\xd4\x9c"
|
|
|
|
"\xe3\xaa\x21\x2f\x2c\x02\xa4\xe0"
|
|
|
|
"\x35\xc1\x7e\x23\x29\xac\xa1\x2e"
|
|
|
|
"\x21\xd5\x14\xb2\x54\x66\x93\x1c"
|
|
|
|
"\x7d\x8f\x6a\x5a\xac\x84\xaa\x05"
|
|
|
|
"\x1b\xa3\x0b\x39\x6a\x0a\xac\x97"
|
|
|
|
"\x3d\x58\xe0\x91"
|
|
|
|
"\x5b\xc9\x4f\xbc\x32\x21\xa5\xdb"
|
|
|
|
"\x94\xfa\xe9\x5a\xe7\x12\x1a\x47",
|
|
|
|
.ilen = 76,
|
|
|
|
.assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
|
|
|
|
"\xfe\xed\xfa\xce\xde\xad\xbe\xef"
|
|
|
|
"\xab\xad\xda\xd2",
|
|
|
|
.alen = 20,
|
|
|
|
.result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
|
|
|
|
"\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
|
|
|
|
"\x86\xa7\xa9\x53\x15\x34\xf7\xda"
|
|
|
|
"\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
|
|
|
|
"\x1c\x3c\x0c\x95\x95\x68\x09\x53"
|
|
|
|
"\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
|
|
|
|
"\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
|
|
|
|
"\xba\x63\x7b\x39",
|
|
|
|
.rlen = 60,
|
|
|
|
}, {
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 24,
|
|
|
|
.input = "\x98\xe7\x24\x7c\x07\xf0\xfe\x41"
|
|
|
|
"\x1c\x26\x7e\x43\x84\xb0\xf6\x00"
|
|
|
|
"\x2f\xf5\x8d\x80\x03\x39\x27\xab"
|
|
|
|
"\x8e\xf4\xd4\x58\x75\x14\xf0\xfb",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = zeroed_string,
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
|
|
|
|
"\x6d\x6a\x8f\x94\x67\x30\x83\x08"
|
|
|
|
"\xfe\xff\xe9\x92\x86\x65\x73\x1c",
|
|
|
|
.klen = 24,
|
|
|
|
.iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
|
|
|
|
"\xde\xca\xf8\x88",
|
|
|
|
.input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
|
|
|
|
"\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
|
|
|
|
"\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
|
|
|
|
"\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
|
|
|
|
"\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
|
|
|
|
"\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
|
|
|
|
"\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
|
|
|
|
"\xcc\xda\x27\x10\xac\xad\xe2\x56"
|
|
|
|
"\x99\x24\xa7\xc8\x58\x73\x36\xbf"
|
|
|
|
"\xb1\x18\x02\x4d\xb8\x67\x4a\x14",
|
|
|
|
.ilen = 80,
|
|
|
|
.result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
|
|
|
|
"\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
|
|
|
|
"\x86\xa7\xa9\x53\x15\x34\xf7\xda"
|
|
|
|
"\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
|
|
|
|
"\x1c\x3c\x0c\x95\x95\x68\x09\x53"
|
|
|
|
"\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
|
|
|
|
"\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
|
|
|
|
"\xba\x63\x7b\x39\x1a\xaf\xd2\x55",
|
|
|
|
.rlen = 64,
|
|
|
|
}, {
|
|
|
|
.key = "\xfe\xff\xe9\x92\x86\x65\x73\x1c"
|
|
|
|
"\x6d\x6a\x8f\x94\x67\x30\x83\x08"
|
|
|
|
"\xfe\xff\xe9\x92\x86\x65\x73\x1c",
|
|
|
|
.klen = 24,
|
|
|
|
.iv = "\xca\xfe\xba\xbe\xfa\xce\xdb\xad"
|
|
|
|
"\xde\xca\xf8\x88",
|
|
|
|
.input = "\x39\x80\xca\x0b\x3c\x00\xe8\x41"
|
|
|
|
"\xeb\x06\xfa\xc4\x87\x2a\x27\x57"
|
|
|
|
"\x85\x9e\x1c\xea\xa6\xef\xd9\x84"
|
|
|
|
"\x62\x85\x93\xb4\x0c\xa1\xe1\x9c"
|
|
|
|
"\x7d\x77\x3d\x00\xc1\x44\xc5\x25"
|
|
|
|
"\xac\x61\x9d\x18\xc8\x4a\x3f\x47"
|
|
|
|
"\x18\xe2\x44\x8b\x2f\xe3\x24\xd9"
|
|
|
|
"\xcc\xda\x27\x10"
|
|
|
|
"\x25\x19\x49\x8e\x80\xf1\x47\x8f"
|
|
|
|
"\x37\xba\x55\xbd\x6d\x27\x61\x8c",
|
|
|
|
.ilen = 76,
|
|
|
|
.assoc = "\xfe\xed\xfa\xce\xde\xad\xbe\xef"
|
|
|
|
"\xfe\xed\xfa\xce\xde\xad\xbe\xef"
|
|
|
|
"\xab\xad\xda\xd2",
|
|
|
|
.alen = 20,
|
|
|
|
.result = "\xd9\x31\x32\x25\xf8\x84\x06\xe5"
|
|
|
|
"\xa5\x59\x09\xc5\xaf\xf5\x26\x9a"
|
|
|
|
"\x86\xa7\xa9\x53\x15\x34\xf7\xda"
|
|
|
|
"\x2e\x4c\x30\x3d\x8a\x31\x8a\x72"
|
|
|
|
"\x1c\x3c\x0c\x95\x95\x68\x09\x53"
|
|
|
|
"\x2f\xcf\x0e\x24\x49\xa6\xb5\x25"
|
|
|
|
"\xb1\x6a\xed\xf5\xaa\x0d\xe6\x57"
|
|
|
|
"\xba\x63\x7b\x39",
|
|
|
|
.rlen = 60,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct aead_testvec aes_ccm_enc_tv_template[] = {
|
|
|
|
{ /* From RFC 3610 */
|
|
|
|
.key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
|
|
|
|
"\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
|
|
|
|
"\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
|
|
|
|
.assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
|
|
|
|
.alen = 8,
|
|
|
|
.input = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
|
|
|
|
"\x10\x11\x12\x13\x14\x15\x16\x17"
|
|
|
|
"\x18\x19\x1a\x1b\x1c\x1d\x1e",
|
|
|
|
.ilen = 23,
|
|
|
|
.result = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
|
|
|
|
"\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
|
|
|
|
"\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
|
|
|
|
"\xe8\xd1\x2c\xfd\xf9\x26\xe0",
|
|
|
|
.rlen = 31,
|
|
|
|
}, {
|
|
|
|
.key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
|
|
|
|
"\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
|
|
|
|
"\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
|
|
|
|
.assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b",
|
|
|
|
.alen = 12,
|
|
|
|
.input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
|
|
|
|
"\x14\x15\x16\x17\x18\x19\x1a\x1b"
|
|
|
|
"\x1c\x1d\x1e\x1f",
|
|
|
|
.ilen = 20,
|
|
|
|
.result = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
|
|
|
|
"\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
|
|
|
|
"\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
|
|
|
|
"\x7d\x9c\x2d\x93",
|
|
|
|
.rlen = 28,
|
|
|
|
}, {
|
|
|
|
.key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
|
|
|
|
"\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
|
|
|
|
"\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
|
|
|
|
.assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
|
|
|
|
.alen = 8,
|
|
|
|
.input = "\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",
|
|
|
|
.ilen = 25,
|
|
|
|
.result = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
|
|
|
|
"\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
|
|
|
|
"\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
|
|
|
|
"\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
|
|
|
|
"\x7e\x5f\x4e",
|
|
|
|
.rlen = 35,
|
|
|
|
}, {
|
|
|
|
.key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
|
|
|
|
"\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
|
|
|
|
"\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
|
|
|
|
.assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b",
|
|
|
|
.alen = 12,
|
|
|
|
.input = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
|
|
|
|
"\x14\x15\x16\x17\x18\x19\x1a\x1b"
|
|
|
|
"\x1c\x1d\x1e",
|
|
|
|
.ilen = 19,
|
|
|
|
.result = "\x07\x34\x25\x94\x15\x77\x85\x15"
|
|
|
|
"\x2b\x07\x40\x98\x33\x0a\xbb\x14"
|
|
|
|
"\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
|
|
|
|
"\x4d\x99\x99\x88\xdd",
|
|
|
|
.rlen = 29,
|
|
|
|
}, {
|
|
|
|
.key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
|
|
|
|
"\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
|
|
|
|
"\x3c\x96\x96\x76\x6c\xfa\x00\x00",
|
|
|
|
.assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
|
|
|
|
.alen = 8,
|
|
|
|
.input = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
|
|
|
|
"\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
|
|
|
|
"\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
|
|
|
|
.ilen = 24,
|
|
|
|
.result = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
|
|
|
|
"\xa0\x72\x6c\x55\xd3\x78\x06\x12"
|
|
|
|
"\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
|
|
|
|
"\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
|
|
|
|
.rlen = 32,
|
|
|
|
}, {
|
|
|
|
.key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
|
|
|
|
"\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
|
|
|
|
"\x3c\x96\x96\x76\x6c\xfa\x00\x00",
|
|
|
|
.assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
|
|
|
|
"\x20\xea\x60\xc0",
|
|
|
|
.alen = 12,
|
|
|
|
.input = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
|
|
|
|
"\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
|
|
|
|
"\x3a\x80\x3b\xa8\x7f",
|
|
|
|
.ilen = 21,
|
|
|
|
.result = "\x00\x97\x69\xec\xab\xdf\x48\x62"
|
|
|
|
"\x55\x94\xc5\x92\x51\xe6\x03\x57"
|
|
|
|
"\x22\x67\x5e\x04\xc8\x47\x09\x9e"
|
|
|
|
"\x5a\xe0\x70\x45\x51",
|
|
|
|
.rlen = 29,
|
|
|
|
}, {
|
|
|
|
.key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
|
|
|
|
"\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
|
|
|
|
"\x3c\x96\x96\x76\x6c\xfa\x00\x00",
|
|
|
|
.assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
|
|
|
|
.alen = 8,
|
|
|
|
.input = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
|
|
|
|
"\x8e\x5e\x67\x01\xc9\x17\x87\x65"
|
|
|
|
"\x98\x09\xd6\x7d\xbe\xdd\x18",
|
|
|
|
.ilen = 23,
|
|
|
|
.result = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
|
|
|
|
"\xdb\x38\x6a\x99\xac\x1a\xef\x23"
|
|
|
|
"\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
|
|
|
|
"\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
|
|
|
|
"\xba",
|
|
|
|
.rlen = 33,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct aead_testvec aes_ccm_dec_tv_template[] = {
|
|
|
|
{ /* From RFC 3610 */
|
|
|
|
.key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
|
|
|
|
"\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x01\x00\x00\x00\x03\x02\x01\x00"
|
|
|
|
"\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
|
|
|
|
.assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
|
|
|
|
.alen = 8,
|
|
|
|
.input = "\x58\x8c\x97\x9a\x61\xc6\x63\xd2"
|
|
|
|
"\xf0\x66\xd0\xc2\xc0\xf9\x89\x80"
|
|
|
|
"\x6d\x5f\x6b\x61\xda\xc3\x84\x17"
|
|
|
|
"\xe8\xd1\x2c\xfd\xf9\x26\xe0",
|
|
|
|
.ilen = 31,
|
|
|
|
.result = "\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
|
|
|
|
"\x10\x11\x12\x13\x14\x15\x16\x17"
|
|
|
|
"\x18\x19\x1a\x1b\x1c\x1d\x1e",
|
|
|
|
.rlen = 23,
|
|
|
|
}, {
|
|
|
|
.key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
|
|
|
|
"\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x01\x00\x00\x00\x07\x06\x05\x04"
|
|
|
|
"\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
|
|
|
|
.assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b",
|
|
|
|
.alen = 12,
|
|
|
|
.input = "\xdc\xf1\xfb\x7b\x5d\x9e\x23\xfb"
|
|
|
|
"\x9d\x4e\x13\x12\x53\x65\x8a\xd8"
|
|
|
|
"\x6e\xbd\xca\x3e\x51\xe8\x3f\x07"
|
|
|
|
"\x7d\x9c\x2d\x93",
|
|
|
|
.ilen = 28,
|
|
|
|
.result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
|
|
|
|
"\x14\x15\x16\x17\x18\x19\x1a\x1b"
|
|
|
|
"\x1c\x1d\x1e\x1f",
|
|
|
|
.rlen = 20,
|
|
|
|
}, {
|
|
|
|
.key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
|
|
|
|
"\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x01\x00\x00\x00\x0b\x0a\x09\x08"
|
|
|
|
"\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
|
|
|
|
.assoc = "\x00\x01\x02\x03\x04\x05\x06\x07",
|
|
|
|
.alen = 8,
|
|
|
|
.input = "\x82\x53\x1a\x60\xcc\x24\x94\x5a"
|
|
|
|
"\x4b\x82\x79\x18\x1a\xb5\xc8\x4d"
|
|
|
|
"\xf2\x1c\xe7\xf9\xb7\x3f\x42\xe1"
|
|
|
|
"\x97\xea\x9c\x07\xe5\x6b\x5e\xb1"
|
|
|
|
"\x7e\x5f\x4e",
|
|
|
|
.ilen = 35,
|
|
|
|
.result = "\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",
|
|
|
|
.rlen = 25,
|
|
|
|
}, {
|
|
|
|
.key = "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"
|
|
|
|
"\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x01\x00\x00\x00\x0c\x0b\x0a\x09"
|
|
|
|
"\xa0\xa1\xa2\xa3\xa4\xa5\x00\x00",
|
|
|
|
.assoc = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b",
|
|
|
|
.alen = 12,
|
|
|
|
.input = "\x07\x34\x25\x94\x15\x77\x85\x15"
|
|
|
|
"\x2b\x07\x40\x98\x33\x0a\xbb\x14"
|
|
|
|
"\x1b\x94\x7b\x56\x6a\xa9\x40\x6b"
|
|
|
|
"\x4d\x99\x99\x88\xdd",
|
|
|
|
.ilen = 29,
|
|
|
|
.result = "\x0c\x0d\x0e\x0f\x10\x11\x12\x13"
|
|
|
|
"\x14\x15\x16\x17\x18\x19\x1a\x1b"
|
|
|
|
"\x1c\x1d\x1e",
|
|
|
|
.rlen = 19,
|
|
|
|
}, {
|
|
|
|
.key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
|
|
|
|
"\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x01\x00\x33\x56\x8e\xf7\xb2\x63"
|
|
|
|
"\x3c\x96\x96\x76\x6c\xfa\x00\x00",
|
|
|
|
.assoc = "\x63\x01\x8f\x76\xdc\x8a\x1b\xcb",
|
|
|
|
.alen = 8,
|
|
|
|
.input = "\x4c\xcb\x1e\x7c\xa9\x81\xbe\xfa"
|
|
|
|
"\xa0\x72\x6c\x55\xd3\x78\x06\x12"
|
|
|
|
"\x98\xc8\x5c\x92\x81\x4a\xbc\x33"
|
|
|
|
"\xc5\x2e\xe8\x1d\x7d\x77\xc0\x8a",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = "\x90\x20\xea\x6f\x91\xbd\xd8\x5a"
|
|
|
|
"\xfa\x00\x39\xba\x4b\xaf\xf9\xbf"
|
|
|
|
"\xb7\x9c\x70\x28\x94\x9c\xd0\xec",
|
|
|
|
.rlen = 24,
|
|
|
|
}, {
|
|
|
|
.key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
|
|
|
|
"\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x01\x00\xd5\x60\x91\x2d\x3f\x70"
|
|
|
|
"\x3c\x96\x96\x76\x6c\xfa\x00\x00",
|
|
|
|
.assoc = "\xcd\x90\x44\xd2\xb7\x1f\xdb\x81"
|
|
|
|
"\x20\xea\x60\xc0",
|
|
|
|
.alen = 12,
|
|
|
|
.input = "\x00\x97\x69\xec\xab\xdf\x48\x62"
|
|
|
|
"\x55\x94\xc5\x92\x51\xe6\x03\x57"
|
|
|
|
"\x22\x67\x5e\x04\xc8\x47\x09\x9e"
|
|
|
|
"\x5a\xe0\x70\x45\x51",
|
|
|
|
.ilen = 29,
|
|
|
|
.result = "\x64\x35\xac\xba\xfb\x11\xa8\x2e"
|
|
|
|
"\x2f\x07\x1d\x7c\xa4\xa5\xeb\xd9"
|
|
|
|
"\x3a\x80\x3b\xa8\x7f",
|
|
|
|
.rlen = 21,
|
|
|
|
}, {
|
|
|
|
.key = "\xd7\x82\x8d\x13\xb2\xb0\xbd\xc3"
|
|
|
|
"\x25\xa7\x62\x36\xdf\x93\xcc\x6b",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x01\x00\x42\xff\xf8\xf1\x95\x1c"
|
|
|
|
"\x3c\x96\x96\x76\x6c\xfa\x00\x00",
|
|
|
|
.assoc = "\xd8\x5b\xc7\xe6\x9f\x94\x4f\xb8",
|
|
|
|
.alen = 8,
|
|
|
|
.input = "\xbc\x21\x8d\xaa\x94\x74\x27\xb6"
|
|
|
|
"\xdb\x38\x6a\x99\xac\x1a\xef\x23"
|
|
|
|
"\xad\xe0\xb5\x29\x39\xcb\x6a\x63"
|
|
|
|
"\x7c\xf9\xbe\xc2\x40\x88\x97\xc6"
|
|
|
|
"\xba",
|
|
|
|
.ilen = 33,
|
|
|
|
.result = "\x8a\x19\xb9\x50\xbc\xf7\x1a\x01"
|
|
|
|
"\x8e\x5e\x67\x01\xc9\x17\x87\x65"
|
|
|
|
"\x98\x09\xd6\x7d\xbe\xdd\x18",
|
|
|
|
.rlen = 23,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Cast5 test vectors from RFC 2144 */
|
|
|
|
#define CAST5_ENC_TEST_VECTORS 3
|
|
|
|
#define CAST5_DEC_TEST_VECTORS 3
|
|
|
|
|
|
|
|
static struct cipher_testvec cast5_enc_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\x01\x23\x45\x67\x12\x34\x56\x78"
|
|
|
|
"\x23\x45\x67\x89\x34\x56\x78\x9a",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x01\x23\x45\x67\x12\x34\x56\x78"
|
|
|
|
"\x23\x45",
|
|
|
|
.klen = 10,
|
|
|
|
.input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x01\x23\x45\x67\x12",
|
|
|
|
.klen = 5,
|
|
|
|
.input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
|
|
|
|
.rlen = 8,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec cast5_dec_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\x01\x23\x45\x67\x12\x34\x56\x78"
|
|
|
|
"\x23\x45\x67\x89\x34\x56\x78\x9a",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x23\x8b\x4f\xe5\x84\x7e\x44\xb2",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x01\x23\x45\x67\x12\x34\x56\x78"
|
|
|
|
"\x23\x45",
|
|
|
|
.klen = 10,
|
|
|
|
.input = "\xeb\x6a\x71\x1a\x2c\x02\x27\x1b",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x01\x23\x45\x67\x12",
|
|
|
|
.klen = 5,
|
|
|
|
.input = "\x7a\xc8\x16\xd1\x6e\x9b\x30\x2e",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
|
|
|
|
.rlen = 8,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* ARC4 test vectors from OpenSSL
|
|
|
|
*/
|
|
|
|
#define ARC4_ENC_TEST_VECTORS 7
|
|
|
|
#define ARC4_DEC_TEST_VECTORS 7
|
|
|
|
|
|
|
|
static struct cipher_testvec arc4_enc_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
|
|
|
|
.klen = 8,
|
|
|
|
.input = "\x01\x23\x45\x67\x89\xab\xcd\xef",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
|
|
|
|
.klen = 8,
|
|
|
|
.input = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.klen = 8,
|
|
|
|
.input = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\xef\x01\x23\x45",
|
|
|
|
.klen = 4,
|
|
|
|
.input = "\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00\x00\x00",
|
|
|
|
.ilen = 20,
|
|
|
|
.result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
|
|
|
|
"\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
|
|
|
|
"\x36\xb6\x78\x58",
|
|
|
|
.rlen = 20,
|
|
|
|
}, {
|
|
|
|
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
|
|
|
|
.klen = 8,
|
|
|
|
.input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
|
|
|
|
"\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
|
|
|
|
"\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
|
|
|
|
"\x12\x34\x56\x78",
|
|
|
|
.ilen = 28,
|
|
|
|
.result = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
|
|
|
|
"\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
|
|
|
|
"\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
|
|
|
|
"\x40\x01\x1e\xcf",
|
|
|
|
.rlen = 28,
|
|
|
|
}, {
|
|
|
|
.key = "\xef\x01\x23\x45",
|
|
|
|
.klen = 4,
|
|
|
|
.input = "\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00",
|
|
|
|
.ilen = 10,
|
|
|
|
.result = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
|
|
|
|
"\xbd\x61",
|
|
|
|
.rlen = 10,
|
|
|
|
}, {
|
|
|
|
.key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
|
|
|
|
.rlen = 8,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec arc4_dec_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
|
|
|
|
.klen = 8,
|
|
|
|
.input = "\x75\xb7\x87\x80\x99\xe0\xc5\x96",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x01\x23\x45\x67\x89\xab\xcd\xef",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
|
|
|
|
.klen = 8,
|
|
|
|
.input = "\x74\x94\xc2\xe7\x10\x4b\x08\x79",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.klen = 8,
|
|
|
|
.input = "\xde\x18\x89\x41\xa3\x37\x5d\x3a",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\xef\x01\x23\x45",
|
|
|
|
.klen = 4,
|
|
|
|
.input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
|
|
|
|
"\xbd\x61\x5a\x11\x62\xe1\xc7\xba"
|
|
|
|
"\x36\xb6\x78\x58",
|
|
|
|
.ilen = 20,
|
|
|
|
.result = "\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00\x00\x00",
|
|
|
|
.rlen = 20,
|
|
|
|
}, {
|
|
|
|
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef",
|
|
|
|
.klen = 8,
|
|
|
|
.input = "\x66\xa0\x94\x9f\x8a\xf7\xd6\x89"
|
|
|
|
"\x1f\x7f\x83\x2b\xa8\x33\xc0\x0c"
|
|
|
|
"\x89\x2e\xbe\x30\x14\x3c\xe2\x87"
|
|
|
|
"\x40\x01\x1e\xcf",
|
|
|
|
.ilen = 28,
|
|
|
|
.result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
|
|
|
|
"\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
|
|
|
|
"\x12\x34\x56\x78\x9A\xBC\xDE\xF0"
|
|
|
|
"\x12\x34\x56\x78",
|
|
|
|
.rlen = 28,
|
|
|
|
}, {
|
|
|
|
.key = "\xef\x01\x23\x45",
|
|
|
|
.klen = 4,
|
|
|
|
.input = "\xd6\xa1\x41\xa7\xec\x3c\x38\xdf"
|
|
|
|
"\xbd\x61",
|
|
|
|
.ilen = 10,
|
|
|
|
.result = "\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00",
|
|
|
|
.rlen = 10,
|
|
|
|
}, {
|
|
|
|
.key = "\x01\x23\x45\x67\x89\xAB\xCD\xEF"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x69\x72\x36\x59\x1B\x52\x42\xB1",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x01\x23\x45\x67\x89\xAB\xCD\xEF",
|
|
|
|
.rlen = 8,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* TEA test vectors
|
|
|
|
*/
|
|
|
|
#define TEA_ENC_TEST_VECTORS 4
|
|
|
|
#define TEA_DEC_TEST_VECTORS 4
|
|
|
|
|
|
|
|
static struct cipher_testvec tea_enc_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 16,
|
|
|
|
.input = zeroed_string,
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
|
|
|
|
"\x77\x5d\x0e\x26\x6c\x28\x78\x43",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x09\x65\x43\x11\x66\x44\x39\x25"
|
|
|
|
"\x51\x3a\x16\x10\x0a\x08\x12\x6e",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
|
|
|
|
"\x65\x73\x74\x5f\x76\x65\x63\x74",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
|
|
|
|
"\xdd\x89\xa1\x25\x04\x21\xdf\x95",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
|
|
|
|
"\x5d\x04\x16\x36\x15\x72\x63\x2f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x54\x65\x61\x20\x69\x73\x20\x67"
|
|
|
|
"\x6f\x6f\x64\x20\x66\x6f\x72\x20"
|
|
|
|
"\x79\x6f\x75\x21\x21\x21\x20\x72"
|
|
|
|
"\x65\x61\x6c\x6c\x79\x21\x21\x21",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
|
|
|
|
"\x94\x18\x95\x91\xa9\xfc\x49\xf8"
|
|
|
|
"\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
|
|
|
|
"\x07\x89\x73\xc2\x45\x92\xc6\x90",
|
|
|
|
.rlen = 32,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec tea_dec_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x0a\x3a\xea\x41\x40\xa9\xba\x94",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = zeroed_string,
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
|
|
|
|
"\x77\x5d\x0e\x26\x6c\x28\x78\x43",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x77\x5d\x2a\x6a\xf6\xce\x92\x09",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x09\x65\x43\x11\x66\x44\x39\x25"
|
|
|
|
"\x51\x3a\x16\x10\x0a\x08\x12\x6e",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xbe\x7a\xbb\x81\x95\x2d\x1f\x1e"
|
|
|
|
"\xdd\x89\xa1\x25\x04\x21\xdf\x95",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
|
|
|
|
"\x65\x73\x74\x5f\x76\x65\x63\x74",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
|
|
|
|
"\x5d\x04\x16\x36\x15\x72\x63\x2f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xe0\x4d\x5d\x3c\xb7\x8c\x36\x47"
|
|
|
|
"\x94\x18\x95\x91\xa9\xfc\x49\xf8"
|
|
|
|
"\x44\xd1\x2d\xc2\x99\xb8\x08\x2a"
|
|
|
|
"\x07\x89\x73\xc2\x45\x92\xc6\x90",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = "\x54\x65\x61\x20\x69\x73\x20\x67"
|
|
|
|
"\x6f\x6f\x64\x20\x66\x6f\x72\x20"
|
|
|
|
"\x79\x6f\x75\x21\x21\x21\x20\x72"
|
|
|
|
"\x65\x61\x6c\x6c\x79\x21\x21\x21",
|
|
|
|
.rlen = 32,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* XTEA test vectors
|
|
|
|
*/
|
|
|
|
#define XTEA_ENC_TEST_VECTORS 4
|
|
|
|
#define XTEA_DEC_TEST_VECTORS 4
|
|
|
|
|
|
|
|
static struct cipher_testvec xtea_enc_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 16,
|
|
|
|
.input = zeroed_string,
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
|
|
|
|
"\x77\x5d\x0e\x26\x6c\x28\x78\x43",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x09\x65\x43\x11\x66\x44\x39\x25"
|
|
|
|
"\x51\x3a\x16\x10\x0a\x08\x12\x6e",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
|
|
|
|
"\x65\x73\x74\x5f\x76\x65\x63\x74",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
|
|
|
|
"\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
|
|
|
|
"\x5d\x04\x16\x36\x15\x72\x63\x2f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x54\x65\x61\x20\x69\x73\x20\x67"
|
|
|
|
"\x6f\x6f\x64\x20\x66\x6f\x72\x20"
|
|
|
|
"\x79\x6f\x75\x21\x21\x21\x20\x72"
|
|
|
|
"\x65\x61\x6c\x6c\x79\x21\x21\x21",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
|
|
|
|
"\x86\xff\x6f\xd0\xe3\x87\x70\x07"
|
|
|
|
"\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
|
|
|
|
"\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
|
|
|
|
.rlen = 32,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec xtea_dec_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xd8\xd4\xe9\xde\xd9\x1e\x13\xf7",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = zeroed_string,
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
|
|
|
|
"\x77\x5d\x0e\x26\x6c\x28\x78\x43",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x94\xeb\xc8\x96\x84\x6a\x49\xa8",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x09\x65\x43\x11\x66\x44\x39\x25"
|
|
|
|
"\x51\x3a\x16\x10\x0a\x08\x12\x6e",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x3e\xce\xae\x22\x60\x56\xa8\x9d"
|
|
|
|
"\x77\x4d\xd4\xb4\x87\x24\xe3\x9a",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
|
|
|
|
"\x65\x73\x74\x5f\x76\x65\x63\x74",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
|
|
|
|
"\x5d\x04\x16\x36\x15\x72\x63\x2f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x99\x81\x9f\x5d\x6f\x4b\x31\x3a"
|
|
|
|
"\x86\xff\x6f\xd0\xe3\x87\x70\x07"
|
|
|
|
"\x4d\xb8\xcf\xf3\x99\x50\xb3\xd4"
|
|
|
|
"\x73\xa2\xfa\xc9\x16\x59\x5d\x81",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = "\x54\x65\x61\x20\x69\x73\x20\x67"
|
|
|
|
"\x6f\x6f\x64\x20\x66\x6f\x72\x20"
|
|
|
|
"\x79\x6f\x75\x21\x21\x21\x20\x72"
|
|
|
|
"\x65\x61\x6c\x6c\x79\x21\x21\x21",
|
|
|
|
.rlen = 32,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* KHAZAD test vectors.
|
|
|
|
*/
|
|
|
|
#define KHAZAD_ENC_TEST_VECTORS 5
|
|
|
|
#define KHAZAD_DEC_TEST_VECTORS 5
|
|
|
|
|
|
|
|
static struct cipher_testvec khazad_enc_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\x80\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x38\x38\x38\x38\x38\x38\x38\x38"
|
|
|
|
"\x38\x38\x38\x38\x38\x38\x38\x38",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x38\x38\x38\x38\x38\x38\x38\x38",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
|
|
|
|
"\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
|
|
|
|
"\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
|
|
|
|
"\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
|
|
|
|
"\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
|
|
|
|
"\x04\x74\xf5\x70\x50\x16\xd3\xb8",
|
|
|
|
.rlen = 16,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec khazad_dec_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\x80\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x49\xa4\xce\x32\xac\x19\x0e\x3f",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x38\x38\x38\x38\x38\x38\x38\x38"
|
|
|
|
"\x38\x38\x38\x38\x38\x38\x38\x38",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x7e\x82\x12\xa1\xd9\x5b\xe4\xf9",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x38\x38\x38\x38\x38\x38\x38\x38",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2"
|
|
|
|
"\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xaa\xbe\xc1\x95\xc5\x94\x1a\x9c",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\xa2\xa2\xa2\xa2\xa2\xa2\xa2\xa2",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
|
|
|
|
"\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
|
|
|
|
"\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x04\x74\xf5\x70\x50\x16\xd3\xb8"
|
|
|
|
"\x04\x74\xf5\x70\x50\x16\xd3\xb8",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f"
|
|
|
|
"\x2f\x2f\x2f\x2f\x2f\x2f\x2f\x2f",
|
|
|
|
.rlen = 16,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Anubis test vectors.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define ANUBIS_ENC_TEST_VECTORS 5
|
|
|
|
#define ANUBIS_DEC_TEST_VECTORS 5
|
|
|
|
#define ANUBIS_CBC_ENC_TEST_VECTORS 2
|
|
|
|
#define ANUBIS_CBC_DEC_TEST_VECTORS 2
|
|
|
|
|
|
|
|
static struct cipher_testvec anubis_enc_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
|
|
|
|
"\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
|
|
|
|
"\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
|
|
|
|
"\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
|
|
|
|
.key = "\x03\x03\x03\x03\x03\x03\x03\x03"
|
|
|
|
"\x03\x03\x03\x03\x03\x03\x03\x03"
|
|
|
|
"\x03\x03\x03\x03",
|
|
|
|
.klen = 20,
|
|
|
|
.input = "\x03\x03\x03\x03\x03\x03\x03\x03"
|
|
|
|
"\x03\x03\x03\x03\x03\x03\x03\x03",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
|
|
|
|
"\x87\x41\x6f\x82\x0a\x98\x64\xae",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x24\x24\x24\x24\x24\x24\x24\x24"
|
|
|
|
"\x24\x24\x24\x24\x24\x24\x24\x24"
|
|
|
|
"\x24\x24\x24\x24\x24\x24\x24\x24"
|
|
|
|
"\x24\x24\x24\x24",
|
|
|
|
.klen = 28,
|
|
|
|
.input = "\x24\x24\x24\x24\x24\x24\x24\x24"
|
|
|
|
"\x24\x24\x24\x24\x24\x24\x24\x24",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
|
|
|
|
"\x06\xd3\x61\x27\xfd\x13\x9e\xde",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x25\x25\x25\x25\x25\x25\x25\x25"
|
|
|
|
"\x25\x25\x25\x25\x25\x25\x25\x25"
|
|
|
|
"\x25\x25\x25\x25\x25\x25\x25\x25"
|
|
|
|
"\x25\x25\x25\x25\x25\x25\x25\x25",
|
|
|
|
.klen = 32,
|
|
|
|
.input = "\x25\x25\x25\x25\x25\x25\x25\x25"
|
|
|
|
"\x25\x25\x25\x25\x25\x25\x25\x25",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
|
|
|
|
"\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35",
|
|
|
|
.klen = 40,
|
|
|
|
.input = "\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
|
|
|
|
"\x9e\xc6\x84\x0f\x17\x21\x07\xee",
|
|
|
|
.rlen = 16,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec anubis_dec_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
|
|
|
|
"\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
|
|
|
|
"\x08\xb7\x52\x8e\x6e\x6e\x86\x90",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
|
|
|
|
"\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
|
|
|
|
.key = "\x03\x03\x03\x03\x03\x03\x03\x03"
|
|
|
|
"\x03\x03\x03\x03\x03\x03\x03\x03"
|
|
|
|
"\x03\x03\x03\x03",
|
|
|
|
.klen = 20,
|
|
|
|
.input = "\xdb\xf1\x42\xf4\xd1\x8a\xc7\x49"
|
|
|
|
"\x87\x41\x6f\x82\x0a\x98\x64\xae",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x03\x03\x03\x03\x03\x03\x03\x03"
|
|
|
|
"\x03\x03\x03\x03\x03\x03\x03\x03",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x24\x24\x24\x24\x24\x24\x24\x24"
|
|
|
|
"\x24\x24\x24\x24\x24\x24\x24\x24"
|
|
|
|
"\x24\x24\x24\x24\x24\x24\x24\x24"
|
|
|
|
"\x24\x24\x24\x24",
|
|
|
|
.klen = 28,
|
|
|
|
.input = "\xfd\x1b\x4a\xe3\xbf\xf0\xad\x3d"
|
|
|
|
"\x06\xd3\x61\x27\xfd\x13\x9e\xde",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x24\x24\x24\x24\x24\x24\x24\x24"
|
|
|
|
"\x24\x24\x24\x24\x24\x24\x24\x24",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x25\x25\x25\x25\x25\x25\x25\x25"
|
|
|
|
"\x25\x25\x25\x25\x25\x25\x25\x25"
|
|
|
|
"\x25\x25\x25\x25\x25\x25\x25\x25"
|
|
|
|
"\x25\x25\x25\x25\x25\x25\x25\x25",
|
|
|
|
.klen = 32,
|
|
|
|
.input = "\x1a\x91\xfb\x2b\xb7\x78\x6b\xc4"
|
|
|
|
"\x17\xd9\xff\x40\x3b\x0e\xe5\xfe",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x25\x25\x25\x25\x25\x25\x25\x25"
|
|
|
|
"\x25\x25\x25\x25\x25\x25\x25\x25",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35",
|
|
|
|
.input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
|
|
|
|
"\x9e\xc6\x84\x0f\x17\x21\x07\xee",
|
|
|
|
.klen = 40,
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35",
|
|
|
|
.rlen = 16,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec anubis_cbc_enc_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
|
|
|
|
"\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
|
|
|
|
"\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
|
|
|
|
"\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
|
|
|
|
"\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
|
|
|
|
"\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
|
|
|
|
"\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
|
|
|
|
"\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
|
|
|
|
.rlen = 32,
|
|
|
|
}, {
|
|
|
|
.key = "\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35",
|
|
|
|
.klen = 40,
|
|
|
|
.input = "\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
|
|
|
|
"\x9e\xc6\x84\x0f\x17\x21\x07\xee"
|
|
|
|
"\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
|
|
|
|
"\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
|
|
|
|
.rlen = 32,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec anubis_cbc_dec_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
|
|
|
|
"\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x6d\xc5\xda\xa2\x26\x7d\x62\x6f"
|
|
|
|
"\x08\xb7\x52\x8e\x6e\x6e\x86\x90"
|
|
|
|
"\x86\xd8\xb5\x6f\x98\x5e\x8a\x66"
|
|
|
|
"\x4f\x1f\x78\xa1\xbb\x37\xf1\xbe",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = "\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
|
|
|
|
"\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
|
|
|
|
"\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe"
|
|
|
|
"\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe",
|
|
|
|
.rlen = 32,
|
|
|
|
}, {
|
|
|
|
.key = "\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35",
|
|
|
|
.klen = 40,
|
|
|
|
.input = "\xa5\x2c\x85\x6f\x9c\xba\xa0\x97"
|
|
|
|
"\x9e\xc6\x84\x0f\x17\x21\x07\xee"
|
|
|
|
"\xa2\xbc\x06\x98\xc6\x4b\xda\x75"
|
|
|
|
"\x2e\xaa\xbe\x58\xce\x01\x5b\xc7",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = "\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35"
|
|
|
|
"\x35\x35\x35\x35\x35\x35\x35\x35",
|
|
|
|
.rlen = 32,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* XETA test vectors
|
|
|
|
*/
|
|
|
|
#define XETA_ENC_TEST_VECTORS 4
|
|
|
|
#define XETA_DEC_TEST_VECTORS 4
|
|
|
|
|
|
|
|
static struct cipher_testvec xeta_enc_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 16,
|
|
|
|
.input = zeroed_string,
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
|
|
|
|
"\x77\x5d\x0e\x26\x6c\x28\x78\x43",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x09\x65\x43\x11\x66\x44\x39\x25"
|
|
|
|
"\x51\x3a\x16\x10\x0a\x08\x12\x6e",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
|
|
|
|
"\x65\x73\x74\x5f\x76\x65\x63\x74",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
|
|
|
|
"\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
|
|
|
|
"\x5d\x04\x16\x36\x15\x72\x63\x2f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x54\x65\x61\x20\x69\x73\x20\x67"
|
|
|
|
"\x6f\x6f\x64\x20\x66\x6f\x72\x20"
|
|
|
|
"\x79\x6f\x75\x21\x21\x21\x20\x72"
|
|
|
|
"\x65\x61\x6c\x6c\x79\x21\x21\x21",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
|
|
|
|
"\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
|
|
|
|
"\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
|
|
|
|
"\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
|
|
|
|
.rlen = 32,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec xeta_dec_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xaa\x22\x96\xe5\x6c\x61\xf3\x45",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = zeroed_string,
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x2b\x02\x05\x68\x06\x14\x49\x76"
|
|
|
|
"\x77\x5d\x0e\x26\x6c\x28\x78\x43",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x82\x3e\xeb\x35\xdc\xdd\xd9\xc3",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x74\x65\x73\x74\x20\x6d\x65\x2e",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x09\x65\x43\x11\x66\x44\x39\x25"
|
|
|
|
"\x51\x3a\x16\x10\x0a\x08\x12\x6e",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xe2\x04\xdb\xf2\x89\x85\x9e\xea"
|
|
|
|
"\x61\x35\xaa\xed\xb5\xcb\x71\x2c",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x6c\x6f\x6e\x67\x65\x72\x5f\x74"
|
|
|
|
"\x65\x73\x74\x5f\x76\x65\x63\x74",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x4d\x76\x32\x17\x05\x3f\x75\x2c"
|
|
|
|
"\x5d\x04\x16\x36\x15\x72\x63\x2f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x0b\x03\xcd\x8a\xbe\x95\xfd\xb1"
|
|
|
|
"\xc1\x44\x91\x0b\xa5\xc9\x1b\xb4"
|
|
|
|
"\xa9\xda\x1e\x9e\xb1\x3e\x2a\x8f"
|
|
|
|
"\xea\xa5\x6a\x85\xd1\xf4\xa8\xa5",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = "\x54\x65\x61\x20\x69\x73\x20\x67"
|
|
|
|
"\x6f\x6f\x64\x20\x66\x6f\x72\x20"
|
|
|
|
"\x79\x6f\x75\x21\x21\x21\x20\x72"
|
|
|
|
"\x65\x61\x6c\x6c\x79\x21\x21\x21",
|
|
|
|
.rlen = 32,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* FCrypt test vectors
|
|
|
|
*/
|
|
|
|
#define FCRYPT_ENC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_enc_tv_template)
|
|
|
|
#define FCRYPT_DEC_TEST_VECTORS ARRAY_SIZE(fcrypt_pcbc_dec_tv_template)
|
|
|
|
|
|
|
|
static struct cipher_testvec fcrypt_pcbc_enc_tv_template[] = {
|
|
|
|
{ /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
|
|
|
|
.key = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.klen = 8,
|
|
|
|
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.input = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
|
|
|
|
.klen = 8,
|
|
|
|
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.input = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
|
|
|
|
.rlen = 8,
|
|
|
|
}, { /* From Arla */
|
|
|
|
.key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
|
|
|
|
.klen = 8,
|
|
|
|
.iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
|
|
|
|
.input = "The quick brown fox jumps over the lazy dogs.\0\0",
|
|
|
|
.ilen = 48,
|
|
|
|
.result = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
|
|
|
|
"\xee\xac\x98\x62\x44\x51\xe4\x84"
|
|
|
|
"\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
|
|
|
|
"\xd2\xd9\x13\x79\x72\xa3\x45\x03"
|
|
|
|
"\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
|
|
|
|
"\xf8\x91\x3c\xac\x44\x22\x92\xef",
|
|
|
|
.rlen = 48,
|
|
|
|
}, {
|
|
|
|
.key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
|
|
|
|
.klen = 8,
|
|
|
|
.iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
|
|
|
|
.input = "The quick brown fox jumps over the lazy dogs.\0\0",
|
|
|
|
.ilen = 48,
|
|
|
|
.result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
|
|
|
|
"\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
|
|
|
|
"\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
|
|
|
|
"\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
|
|
|
|
"\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
|
|
|
|
"\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
|
|
|
|
.rlen = 48,
|
|
|
|
}, { /* split-page version */
|
|
|
|
.key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
|
|
|
|
.klen = 8,
|
|
|
|
.iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
|
|
|
|
.input = "The quick brown fox jumps over the lazy dogs.\0\0",
|
|
|
|
.ilen = 48,
|
|
|
|
.result = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
|
|
|
|
"\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
|
|
|
|
"\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
|
|
|
|
"\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
|
|
|
|
"\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
|
|
|
|
"\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
|
|
|
|
.rlen = 48,
|
|
|
|
.np = 2,
|
|
|
|
.tap = { 20, 28 },
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec fcrypt_pcbc_dec_tv_template[] = {
|
|
|
|
{ /* http://www.openafs.org/pipermail/openafs-devel/2000-December/005320.html */
|
|
|
|
.key = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.klen = 8,
|
|
|
|
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.input = "\x0E\x09\x00\xC7\x3E\xF7\xED\x41",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.rlen = 8,
|
|
|
|
}, {
|
|
|
|
.key = "\x11\x44\x77\xAA\xDD\x00\x33\x66",
|
|
|
|
.klen = 8,
|
|
|
|
.iv = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.input = "\xD8\xED\x78\x74\x77\xEC\x06\x80",
|
|
|
|
.ilen = 8,
|
|
|
|
.result = "\x12\x34\x56\x78\x9A\xBC\xDE\xF0",
|
|
|
|
.rlen = 8,
|
|
|
|
}, { /* From Arla */
|
|
|
|
.key = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
|
|
|
|
.klen = 8,
|
|
|
|
.iv = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
|
|
|
|
.input = "\x00\xf0\x0e\x11\x75\xe6\x23\x82"
|
|
|
|
"\xee\xac\x98\x62\x44\x51\xe4\x84"
|
|
|
|
"\xc3\x59\xd8\xaa\x64\x60\xae\xf7"
|
|
|
|
"\xd2\xd9\x13\x79\x72\xa3\x45\x03"
|
|
|
|
"\x23\xb5\x62\xd7\x0c\xf5\x27\xd1"
|
|
|
|
"\xf8\x91\x3c\xac\x44\x22\x92\xef",
|
|
|
|
.ilen = 48,
|
|
|
|
.result = "The quick brown fox jumps over the lazy dogs.\0\0",
|
|
|
|
.rlen = 48,
|
|
|
|
}, {
|
|
|
|
.key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
|
|
|
|
.klen = 8,
|
|
|
|
.iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
|
|
|
|
.input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
|
|
|
|
"\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
|
|
|
|
"\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
|
|
|
|
"\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
|
|
|
|
"\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
|
|
|
|
"\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
|
|
|
|
.ilen = 48,
|
|
|
|
.result = "The quick brown fox jumps over the lazy dogs.\0\0",
|
|
|
|
.rlen = 48,
|
|
|
|
}, { /* split-page version */
|
|
|
|
.key = "\xfe\xdc\xba\x98\x76\x54\x32\x10",
|
|
|
|
.klen = 8,
|
|
|
|
.iv = "\xf0\xe1\xd2\xc3\xb4\xa5\x96\x87",
|
|
|
|
.input = "\xca\x90\xf5\x9d\xcb\xd4\xd2\x3c"
|
|
|
|
"\x01\x88\x7f\x3e\x31\x6e\x62\x9d"
|
|
|
|
"\xd8\xe0\x57\xa3\x06\x3a\x42\x58"
|
|
|
|
"\x2a\x28\xfe\x72\x52\x2f\xdd\xe0"
|
|
|
|
"\x19\x89\x09\x1c\x2a\x8e\x8c\x94"
|
|
|
|
"\xfc\xc7\x68\xe4\x88\xaa\xde\x0f",
|
|
|
|
.ilen = 48,
|
|
|
|
.result = "The quick brown fox jumps over the lazy dogs.\0\0",
|
|
|
|
.rlen = 48,
|
|
|
|
.np = 2,
|
|
|
|
.tap = { 20, 28 },
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* CAMELLIA test vectors.
|
|
|
|
*/
|
|
|
|
#define CAMELLIA_ENC_TEST_VECTORS 3
|
|
|
|
#define CAMELLIA_DEC_TEST_VECTORS 3
|
|
|
|
#define CAMELLIA_CBC_ENC_TEST_VECTORS 2
|
|
|
|
#define CAMELLIA_CBC_DEC_TEST_VECTORS 2
|
|
|
|
|
|
|
|
static struct cipher_testvec camellia_enc_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
|
|
|
|
"\xfe\xdc\xba\x98\x76\x54\x32\x10",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x01\x23\x45\x67\x89\xab\xcd\xef"
|
|
|
|
"\xfe\xdc\xba\x98\x76\x54\x32\x10",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x67\x67\x31\x38\x54\x96\x69\x73"
|
|
|
|
"\x08\x57\x06\x56\x48\xea\xbe\x43",
|
|
|
|
.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 = "\x01\x23\x45\x67\x89\xab\xcd\xef"
|
|
|
|
"\xfe\xdc\xba\x98\x76\x54\x32\x10",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
|
|
|
|
"\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
|
|
|
|
.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 = "\x01\x23\x45\x67\x89\xab\xcd\xef"
|
|
|
|
"\xfe\xdc\xba\x98\x76\x54\x32\x10",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
|
|
|
|
"\x20\xef\x7c\x91\x9e\x3a\x75\x09",
|
|
|
|
.rlen = 16,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec camellia_dec_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\x01\x23\x45\x67\x89\xab\xcd\xef"
|
|
|
|
"\xfe\xdc\xba\x98\x76\x54\x32\x10",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x67\x67\x31\x38\x54\x96\x69\x73"
|
|
|
|
"\x08\x57\x06\x56\x48\xea\xbe\x43",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
|
|
|
|
"\xfe\xdc\xba\x98\x76\x54\x32\x10",
|
|
|
|
.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 = "\xb4\x99\x34\x01\xb3\xe9\x96\xf8"
|
|
|
|
"\x4e\xe5\xce\xe7\xd7\x9b\x09\xb9",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
|
|
|
|
"\xfe\xdc\xba\x98\x76\x54\x32\x10",
|
|
|
|
.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 = "\x9a\xcc\x23\x7d\xff\x16\xd7\x6c"
|
|
|
|
"\x20\xef\x7c\x91\x9e\x3a\x75\x09",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x01\x23\x45\x67\x89\xab\xcd\xef"
|
|
|
|
"\xfe\xdc\xba\x98\x76\x54\x32\x10",
|
|
|
|
.rlen = 16,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec camellia_cbc_enc_tv_template[] = {
|
|
|
|
{
|
|
|
|
.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",
|
|
|
|
.input = "Single block msg",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
|
|
|
|
"\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
|
|
|
|
.rlen = 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",
|
|
|
|
.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",
|
|
|
|
.ilen = 32,
|
|
|
|
.result = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
|
|
|
|
"\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
|
|
|
|
"\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
|
|
|
|
"\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
|
|
|
|
.rlen = 32,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec camellia_cbc_dec_tv_template[] = {
|
|
|
|
{
|
|
|
|
.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",
|
|
|
|
.input = "\xea\x32\x12\x76\x3b\x50\x10\xe7"
|
|
|
|
"\x18\xf6\xfd\x5d\xf6\x8f\x13\x51",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "Single block msg",
|
|
|
|
.rlen = 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",
|
|
|
|
.input = "\xa5\xdf\x6e\x50\xda\x70\x6c\x01"
|
|
|
|
"\x4a\xab\xf3\xf2\xd6\xfc\x6c\xfd"
|
|
|
|
"\x19\xb4\x3e\x57\x1c\x02\x5e\xa0"
|
|
|
|
"\x15\x78\xe0\x5e\xf2\xcb\x87\x16",
|
|
|
|
.ilen = 32,
|
|
|
|
.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",
|
|
|
|
.rlen = 32,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* SEED test vectors
|
|
|
|
*/
|
|
|
|
#define SEED_ENC_TEST_VECTORS 4
|
|
|
|
#define SEED_DEC_TEST_VECTORS 4
|
|
|
|
|
|
|
|
static struct cipher_testvec seed_enc_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
|
|
|
|
"\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = zeroed_string,
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
|
|
|
|
"\x84\x48\x35\x97\xe4\x37\x0f\x43",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
|
|
|
|
"\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
|
|
|
|
"\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
|
|
|
|
"\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
|
|
|
|
"\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
|
|
|
|
"\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
|
|
|
|
"\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
|
|
|
|
.rlen = 16,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec seed_dec_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = zeroed_string,
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x5e\xba\xc6\xe0\x05\x4e\x16\x68"
|
|
|
|
"\x19\xaf\xf1\xcc\x6d\x34\x6c\xdb",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xc1\x1f\x22\xf2\x01\x40\x50\x50"
|
|
|
|
"\x84\x48\x35\x97\xe4\x37\x0f\x43",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = zeroed_string,
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x47\x06\x48\x08\x51\xe6\x1b\xe8"
|
|
|
|
"\x5d\x74\xbf\xb3\xfd\x95\x61\x85",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\xee\x54\xd1\x3e\xbc\xae\x70\x6d"
|
|
|
|
"\x22\x6b\xc3\x14\x2c\xd4\x0d\x4a",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\x83\xa2\xf8\xa2\x88\x64\x1f\xb9"
|
|
|
|
"\xa4\xe9\xa5\xcc\x2f\x13\x1c\x7d",
|
|
|
|
.rlen = 16,
|
|
|
|
}, {
|
|
|
|
.key = "\x28\xdb\xc3\xbc\x49\xff\xd8\x7d"
|
|
|
|
"\xcf\xa5\x09\xb1\x1d\x42\x2b\xe7",
|
|
|
|
.klen = 16,
|
|
|
|
.input = "\x9b\x9b\x7b\xfc\xd1\x81\x3c\xb9"
|
|
|
|
"\x5d\x0b\x36\x18\xf4\x0f\x51\x22",
|
|
|
|
.ilen = 16,
|
|
|
|
.result = "\xb4\x1e\x6b\xe2\xeb\xa8\x4a\x14"
|
|
|
|
"\x8e\x2e\xed\x84\x59\x3c\x5e\xc7",
|
|
|
|
.rlen = 16,
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
#define SALSA20_STREAM_ENC_TEST_VECTORS 5
|
|
|
|
static struct cipher_testvec salsa20_stream_enc_tv_template[] = {
|
|
|
|
/*
|
|
|
|
* Testvectors from verified.test-vectors submitted to ECRYPT.
|
|
|
|
* They are truncated to size 39, 64, 111, 129 to test a variety
|
|
|
|
* of input length.
|
|
|
|
*/
|
|
|
|
{ /* Set 3, vector 0 */
|
|
|
|
.key = "\x00\x01\x02\x03\x04\x05\x06\x07"
|
|
|
|
"\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\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"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.ilen = 39,
|
|
|
|
.result = "\x2D\xD5\xC3\xF7\xBA\x2B\x20\xF7"
|
|
|
|
"\x68\x02\x41\x0C\x68\x86\x88\x89"
|
|
|
|
"\x5A\xD8\xC1\xBD\x4E\xA6\xC9\xB1"
|
|
|
|
"\x40\xFB\x9B\x90\xE2\x10\x49\xBF"
|
|
|
|
"\x58\x3F\x52\x79\x70\xEB\xC1",
|
|
|
|
.rlen = 39,
|
|
|
|
}, { /* Set 5, vector 0 */
|
|
|
|
.key = "\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.klen = 16,
|
|
|
|
.iv = "\x80\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"
|
|
|
|
"\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 = 64,
|
|
|
|
.result = "\xB6\x6C\x1E\x44\x46\xDD\x95\x57"
|
|
|
|
"\xE5\x78\xE2\x23\xB0\xB7\x68\x01"
|
|
|
|
"\x7B\x23\xB2\x67\xBB\x02\x34\xAE"
|
|
|
|
"\x46\x26\xBF\x44\x3F\x21\x97\x76"
|
|
|
|
"\x43\x6F\xB1\x9F\xD0\xE8\x86\x6F"
|
|
|
|
"\xCD\x0D\xE9\xA9\x53\x8F\x4A\x09"
|
|
|
|
"\xCA\x9A\xC0\x73\x2E\x30\xBC\xF9"
|
|
|
|
"\x8E\x4F\x13\xE4\xB9\xE2\x01\xD9",
|
|
|
|
.rlen = 64,
|
|
|
|
}, { /* Set 3, vector 27 */
|
|
|
|
.key = "\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",
|
|
|
|
.klen = 32,
|
|
|
|
.iv = "\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"
|
|
|
|
"\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"
|
|
|
|
"\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"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00\x00"
|
|
|
|
"\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.ilen = 111,
|
|
|
|
.result = "\xAE\x39\x50\x8E\xAC\x9A\xEC\xE7"
|
|
|
|
"\xBF\x97\xBB\x20\xB9\xDE\xE4\x1F"
|
|
|
|
"\x87\xD9\x47\xF8\x28\x91\x35\x98"
|
|
|
|
"\xDB\x72\xCC\x23\x29\x48\x56\x5E"
|
|
|
|
"\x83\x7E\x0B\xF3\x7D\x5D\x38\x7B"
|
|
|
|
"\x2D\x71\x02\xB4\x3B\xB5\xD8\x23"
|
|
|
|
"\xB0\x4A\xDF\x3C\xEC\xB6\xD9\x3B"
|
|
|
|
"\x9B\xA7\x52\xBE\xC5\xD4\x50\x59"
|
|
|
|
"\x15\x14\xB4\x0E\x40\xE6\x53\xD1"
|
|
|
|
"\x83\x9C\x5B\xA0\x92\x29\x6B\x5E"
|
|
|
|
"\x96\x5B\x1E\x2F\xD3\xAC\xC1\x92"
|
|
|
|
"\xB1\x41\x3F\x19\x2F\xC4\x3B\xC6"
|
|
|
|
"\x95\x46\x45\x54\xE9\x75\x03\x08"
|
|
|
|
"\x44\xAF\xE5\x8A\x81\x12\x09",
|
|
|
|
.rlen = 111,
|
|
|
|
}, { /* Set 5, vector 27 */
|
|
|
|
.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\x10\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"
|
|
|
|
"\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"
|
|
|
|
"\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"
|
|
|
|
"\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"
|
|
|
|
"\x00",
|
|
|
|
.ilen = 129,
|
|
|
|
.result = "\xD2\xDB\x1A\x5C\xF1\xC1\xAC\xDB"
|
|
|
|
"\xE8\x1A\x7A\x43\x40\xEF\x53\x43"
|
|
|
|
"\x5E\x7F\x4B\x1A\x50\x52\x3F\x8D"
|
|
|
|
"\x28\x3D\xCF\x85\x1D\x69\x6E\x60"
|
|
|
|
"\xF2\xDE\x74\x56\x18\x1B\x84\x10"
|
|
|
|
"\xD4\x62\xBA\x60\x50\xF0\x61\xF2"
|
|
|
|
"\x1C\x78\x7F\xC1\x24\x34\xAF\x58"
|
|
|
|
"\xBF\x2C\x59\xCA\x90\x77\xF3\xB0"
|
|
|
|
"\x5B\x4A\xDF\x89\xCE\x2C\x2F\xFC"
|
|
|
|
"\x67\xF0\xE3\x45\xE8\xB3\xB3\x75"
|
|
|
|
"\xA0\x95\x71\xA1\x29\x39\x94\xCA"
|
|
|
|
"\x45\x2F\xBD\xCB\x10\xB6\xBE\x9F"
|
|
|
|
"\x8E\xF9\xB2\x01\x0A\x5A\x0A\xB7"
|
|
|
|
"\x6B\x9D\x70\x8E\x4B\xD6\x2F\xCD"
|
|
|
|
"\x2E\x40\x48\x75\xE9\xE2\x21\x45"
|
|
|
|
"\x0B\xC9\xB6\xB5\x66\xBC\x9A\x59"
|
|
|
|
"\x5A",
|
|
|
|
.rlen = 129,
|
|
|
|
}, { /* large test vector generated using Crypto++ */
|
|
|
|
.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,
|
|
|
|
.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\x03\x06\x09\x0c\x0f\x12\x15"
|
|
|
|
"\x18\x1b\x1e\x21\x24\x27\x2a\x2d"
|
|
|
|
"\x30\x33\x36\x39\x3c\x3f\x42\x45"
|
|
|
|
"\x48\x4b\x4e\x51\x54\x57\x5a\x5d"
|
|
|
|
"\x60\x63\x66\x69\x6c\x6f\x72\x75"
|
|
|
|
"\x78\x7b\x7e\x81\x84\x87\x8a\x8d"
|
|
|
|
"\x90\x93\x96\x99\x9c\x9f\xa2\xa5"
|
|
|
|
"\xa8\xab\xae\xb1\xb4\xb7\xba\xbd"
|
|
|
|
"\xc0\xc3\xc6\xc9\xcc\xcf\xd2\xd5"
|
|
|
|
"\xd8\xdb\xde\xe1\xe4\xe7\xea\xed"
|
|
|
|
"\xf0\xf3\xf6\xf9\xfc\xff\x02\x05"
|
|
|
|
"\x08\x0b\x0e\x11\x14\x17\x1a\x1d"
|
|
|
|
"\x20\x23\x26\x29\x2c\x2f\x32\x35"
|
|
|
|
"\x38\x3b\x3e\x41\x44\x47\x4a\x4d"
|
|
|
|
"\x50\x53\x56\x59\x5c\x5f\x62\x65"
|
|
|
|
"\x68\x6b\x6e\x71\x74\x77\x7a\x7d"
|
|
|
|
"\x80\x83\x86\x89\x8c\x8f\x92\x95"
|
|
|
|
"\x98\x9b\x9e\xa1\xa4\xa7\xaa\xad"
|
|
|
|
"\xb0\xb3\xb6\xb9\xbc\xbf\xc2\xc5"
|
|
|
|
"\xc8\xcb\xce\xd1\xd4\xd7\xda\xdd"
|
|
|
|
"\xe0\xe3\xe6\xe9\xec\xef\xf2\xf5"
|
|
|
|
"\xf8\xfb\xfe\x01\x04\x07\x0a\x0d"
|
|
|
|
"\x10\x13\x16\x19\x1c\x1f\x22\x25"
|
|
|
|
"\x28\x2b\x2e\x31\x34\x37\x3a\x3d"
|
|
|
|
"\x40\x43\x46\x49\x4c\x4f\x52\x55"
|
|
|
|
"\x58\x5b\x5e\x61\x64\x67\x6a\x6d"
|
|
|
|
"\x70\x73\x76\x79\x7c\x7f\x82\x85"
|
|
|
|
"\x88\x8b\x8e\x91\x94\x97\x9a\x9d"
|
|
|
|
"\xa0\xa3\xa6\xa9\xac\xaf\xb2\xb5"
|
|
|
|
"\xb8\xbb\xbe\xc1\xc4\xc7\xca\xcd"
|
|
|
|
"\xd0\xd3\xd6\xd9\xdc\xdf\xe2\xe5"
|
|
|
|
"\xe8\xeb\xee\xf1\xf4\xf7\xfa\xfd"
|
|
|
|
"\x00\x05\x0a\x0f\x14\x19\x1e\x23"
|
|
|
|
"\x28\x2d\x32\x37\x3c\x41\x46\x4b"
|
|
|
|
"\x50\x55\x5a\x5f\x64\x69\x6e\x73"
|
|
|
|
"\x78\x7d\x82\x87\x8c\x91\x96\x9b"
|
|
|
|
"\xa0\xa5\xaa\xaf\xb4\xb9\xbe\xc3"
|
|
|
|
"\xc8\xcd\xd2\xd7\xdc\xe1\xe6\xeb"
|
|
|
|
"\xf0\xf5\xfa\xff\x04\x09\x0e\x13"
|
|
|
|
"\x18\x1d\x22\x27\x2c\x31\x36\x3b"
|
|
|
|
"\x40\x45\x4a\x4f\x54\x59\x5e\x63"
|
|
|
|
"\x68\x6d\x72\x77\x7c\x81\x86\x8b"
|
|
|
|
"\x90\x95\x9a\x9f\xa4\xa9\xae\xb3"
|
|
|
|
"\xb8\xbd\xc2\xc7\xcc\xd1\xd6\xdb"
|
|
|
|
"\xe0\xe5\xea\xef\xf4\xf9\xfe\x03"
|
|
|
|
"\x08\x0d\x12\x17\x1c\x21\x26\x2b"
|
|
|
|
"\x30\x35\x3a\x3f\x44\x49\x4e\x53"
|
|
|
|
"\x58\x5d\x62\x67\x6c\x71\x76\x7b"
|
|
|
|
"\x80\x85\x8a\x8f\x94\x99\x9e\xa3"
|
|
|
|
"\xa8\xad\xb2\xb7\xbc\xc1\xc6\xcb"
|
|
|
|
"\xd0\xd5\xda\xdf\xe4\xe9\xee\xf3"
|
|
|
|
"\xf8\xfd\x02\x07\x0c\x11\x16\x1b"
|
|
|
|
"\x20\x25\x2a\x2f\x34\x39\x3e\x43"
|
|
|
|
"\x48\x4d\x52\x57\x5c\x61\x66\x6b"
|
|
|
|
"\x70\x75\x7a\x7f\x84\x89\x8e\x93"
|
|
|
|
"\x98\x9d\xa2\xa7\xac\xb1\xb6\xbb"
|
|
|
|
"\xc0\xc5\xca\xcf\xd4\xd9\xde\xe3"
|
|
|
|
"\xe8\xed\xf2\xf7\xfc\x01\x06\x0b"
|
|
|
|
"\x10\x15\x1a\x1f\x24\x29\x2e\x33"
|
|
|
|
"\x38\x3d\x42\x47\x4c\x51\x56\x5b"
|
|
|
|
"\x60\x65\x6a\x6f\x74\x79\x7e\x83"
|
|
|
|
"\x88\x8d\x92\x97\x9c\xa1\xa6\xab"
|
|
|
|
"\xb0\xb5\xba\xbf\xc4\xc9\xce\xd3"
|
|
|
|
"\xd8\xdd\xe2\xe7\xec\xf1\xf6\xfb"
|
|
|
|
"\x00\x07\x0e\x15\x1c\x23\x2a\x31"
|
|
|
|
"\x38\x3f\x46\x4d\x54\x5b\x62\x69"
|
|
|
|
"\x70\x77\x7e\x85\x8c\x93\x9a\xa1"
|
|
|
|
"\xa8\xaf\xb6\xbd\xc4\xcb\xd2\xd9"
|
|
|
|
"\xe0\xe7\xee\xf5\xfc\x03\x0a\x11"
|
|
|
|
"\x18\x1f\x26\x2d\x34\x3b\x42\x49"
|
|
|
|
"\x50\x57\x5e\x65\x6c\x73\x7a\x81"
|
|
|
|
"\x88\x8f\x96\x9d\xa4\xab\xb2\xb9"
|
|
|
|
"\xc0\xc7\xce\xd5\xdc\xe3\xea\xf1"
|
|
|
|
"\xf8\xff\x06\x0d\x14\x1b\x22\x29"
|
|
|
|
"\x30\x37\x3e\x45\x4c\x53\x5a\x61"
|
|
|
|
"\x68\x6f\x76\x7d\x84\x8b\x92\x99"
|
|
|
|
"\xa0\xa7\xae\xb5\xbc\xc3\xca\xd1"
|
|
|
|
"\xd8\xdf\xe6\xed\xf4\xfb\x02\x09"
|
|
|
|
"\x10\x17\x1e\x25\x2c\x33\x3a\x41"
|
|
|
|
"\x48\x4f\x56\x5d\x64\x6b\x72\x79"
|
|
|
|
"\x80\x87\x8e\x95\x9c\xa3\xaa\xb1"
|
|
|
|
"\xb8\xbf\xc6\xcd\xd4\xdb\xe2\xe9"
|
|
|
|
"\xf0\xf7\xfe\x05\x0c\x13\x1a\x21"
|
|
|
|
"\x28\x2f\x36\x3d\x44\x4b\x52\x59"
|
|
|
|
"\x60\x67\x6e\x75\x7c\x83\x8a\x91"
|
|
|
|
"\x98\x9f\xa6\xad\xb4\xbb\xc2\xc9"
|
|
|
|
"\xd0\xd7\xde\xe5\xec\xf3\xfa\x01"
|
|
|
|
"\x08\x0f\x16\x1d\x24\x2b\x32\x39"
|
|
|
|
"\x40\x47\x4e\x55\x5c\x63\x6a\x71"
|
|
|
|
"\x78\x7f\x86\x8d\x94\x9b\xa2\xa9"
|
|
|
|
"\xb0\xb7\xbe\xc5\xcc\xd3\xda\xe1"
|
|
|
|
"\xe8\xef\xf6\xfd\x04\x0b\x12\x19"
|
|
|
|
"\x20\x27\x2e\x35\x3c\x43\x4a\x51"
|
|
|
|
"\x58\x5f\x66\x6d\x74\x7b\x82\x89"
|
|
|
|
"\x90\x97\x9e\xa5\xac\xb3\xba\xc1"
|
|
|
|
"\xc8\xcf\xd6\xdd\xe4\xeb\xf2\xf9"
|
|
|
|
"\x00\x09\x12\x1b\x24\x2d\x36\x3f"
|
|
|
|
"\x48\x51\x5a\x63\x6c\x75\x7e\x87"
|
|
|
|
"\x90\x99\xa2\xab\xb4\xbd\xc6\xcf"
|
|
|
|
"\xd8\xe1\xea\xf3\xfc\x05\x0e\x17"
|
|
|
|
"\x20\x29\x32\x3b\x44\x4d\x56\x5f"
|
|
|
|
"\x68\x71\x7a\x83\x8c\x95\x9e\xa7"
|
|
|
|
"\xb0\xb9\xc2\xcb\xd4\xdd\xe6\xef"
|
|
|
|
"\xf8\x01\x0a\x13\x1c\x25\x2e\x37"
|
|
|
|
"\x40\x49\x52\x5b\x64\x6d\x76\x7f"
|
|
|
|
"\x88\x91\x9a\xa3\xac\xb5\xbe\xc7"
|
|
|
|
"\xd0\xd9\xe2\xeb\xf4\xfd\x06\x0f"
|
|
|
|
"\x18\x21\x2a\x33\x3c\x45\x4e\x57"
|
|
|
|
"\x60\x69\x72\x7b\x84\x8d\x96\x9f"
|
|
|
|
"\xa8\xb1\xba\xc3\xcc\xd5\xde\xe7"
|
|
|
|
"\xf0\xf9\x02\x0b\x14\x1d\x26\x2f"
|
|
|
|
"\x38\x41\x4a\x53\x5c\x65\x6e\x77"
|
|
|
|
"\x80\x89\x92\x9b\xa4\xad\xb6\xbf"
|
|
|
|
"\xc8\xd1\xda\xe3\xec\xf5\xfe\x07"
|
|
|
|
"\x10\x19\x22\x2b\x34\x3d\x46\x4f"
|
|
|
|
"\x58\x61\x6a\x73\x7c\x85\x8e\x97"
|
|
|
|
"\xa0\xa9\xb2\xbb\xc4\xcd\xd6\xdf"
|
|
|
|
"\xe8\xf1\xfa\x03\x0c\x15\x1e\x27"
|
|
|
|
"\x30\x39\x42\x4b\x54\x5d\x66\x6f"
|
|
|
|
"\x78\x81\x8a\x93\x9c\xa5\xae\xb7"
|
|
|
|
"\xc0\xc9\xd2\xdb\xe4\xed\xf6\xff"
|
|
|
|
"\x08\x11\x1a\x23\x2c\x35\x3e\x47"
|
|
|
|
"\x50\x59\x62\x6b\x74\x7d\x86\x8f"
|
|
|
|
"\x98\xa1\xaa\xb3\xbc\xc5\xce\xd7"
|
|
|
|
"\xe0\xe9\xf2\xfb\x04\x0d\x16\x1f"
|
|
|
|
"\x28\x31\x3a\x43\x4c\x55\x5e\x67"
|
|
|
|
"\x70\x79\x82\x8b\x94\x9d\xa6\xaf"
|
|
|
|
"\xb8\xc1\xca\xd3\xdc\xe5\xee\xf7"
|
|
|
|
"\x00\x0b\x16\x21\x2c\x37\x42\x4d"
|
|
|
|
"\x58\x63\x6e\x79\x84\x8f\x9a\xa5"
|
|
|
|
"\xb0\xbb\xc6\xd1\xdc\xe7\xf2\xfd"
|
|
|
|
"\x08\x13\x1e\x29\x34\x3f\x4a\x55"
|
|
|
|
"\x60\x6b\x76\x81\x8c\x97\xa2\xad"
|
|
|
|
"\xb8\xc3\xce\xd9\xe4\xef\xfa\x05"
|
|
|
|
"\x10\x1b\x26\x31\x3c\x47\x52\x5d"
|
|
|
|
"\x68\x73\x7e\x89\x94\x9f\xaa\xb5"
|
|
|
|
"\xc0\xcb\xd6\xe1\xec\xf7\x02\x0d"
|
|
|
|
"\x18\x23\x2e\x39\x44\x4f\x5a\x65"
|
|
|
|
"\x70\x7b\x86\x91\x9c\xa7\xb2\xbd"
|
|
|
|
"\xc8\xd3\xde\xe9\xf4\xff\x0a\x15"
|
|
|
|
"\x20\x2b\x36\x41\x4c\x57\x62\x6d"
|
|
|
|
"\x78\x83\x8e\x99\xa4\xaf\xba\xc5"
|
|
|
|
"\xd0\xdb\xe6\xf1\xfc\x07\x12\x1d"
|
|
|
|
"\x28\x33\x3e\x49\x54\x5f\x6a\x75"
|
|
|
|
"\x80\x8b\x96\xa1\xac\xb7\xc2\xcd"
|
|
|
|
"\xd8\xe3\xee\xf9\x04\x0f\x1a\x25"
|
|
|
|
"\x30\x3b\x46\x51\x5c\x67\x72\x7d"
|
|
|
|
"\x88\x93\x9e\xa9\xb4\xbf\xca\xd5"
|
|
|
|
"\xe0\xeb\xf6\x01\x0c\x17\x22\x2d"
|
|
|
|
"\x38\x43\x4e\x59\x64\x6f\x7a\x85"
|
|
|
|
"\x90\x9b\xa6\xb1\xbc\xc7\xd2\xdd"
|
|
|
|
"\xe8\xf3\xfe\x09\x14\x1f\x2a\x35"
|
|
|
|
"\x40\x4b\x56\x61\x6c\x77\x82\x8d"
|
|
|
|
"\x98\xa3\xae\xb9\xc4\xcf\xda\xe5"
|
|
|
|
"\xf0\xfb\x06\x11\x1c\x27\x32\x3d"
|
|
|
|
"\x48\x53\x5e\x69\x74\x7f\x8a\x95"
|
|
|
|
"\xa0\xab\xb6\xc1\xcc\xd7\xe2\xed"
|
|
|
|
"\xf8\x03\x0e\x19\x24\x2f\x3a\x45"
|
|
|
|
"\x50\x5b\x66\x71\x7c\x87\x92\x9d"
|
|
|
|
"\xa8\xb3\xbe\xc9\xd4\xdf\xea\xf5"
|
|
|
|
"\x00\x0d\x1a\x27\x34\x41\x4e\x5b"
|
|
|
|
"\x68\x75\x82\x8f\x9c\xa9\xb6\xc3"
|
|
|
|
"\xd0\xdd\xea\xf7\x04\x11\x1e\x2b"
|
|
|
|
"\x38\x45\x52\x5f\x6c\x79\x86\x93"
|
|
|
|
"\xa0\xad\xba\xc7\xd4\xe1\xee\xfb"
|
|
|
|
"\x08\x15\x22\x2f\x3c\x49\x56\x63"
|
|
|
|
"\x70\x7d\x8a\x97\xa4\xb1\xbe\xcb"
|
|
|
|
"\xd8\xe5\xf2\xff\x0c\x19\x26\x33"
|
|
|
|
"\x40\x4d\x5a\x67\x74\x81\x8e\x9b"
|
|
|
|
"\xa8\xb5\xc2\xcf\xdc\xe9\xf6\x03"
|
|
|
|
"\x10\x1d\x2a\x37\x44\x51\x5e\x6b"
|
|
|
|
"\x78\x85\x92\x9f\xac\xb9\xc6\xd3"
|
|
|
|
"\xe0\xed\xfa\x07\x14\x21\x2e\x3b"
|
|
|
|
"\x48\x55\x62\x6f\x7c\x89\x96\xa3"
|
|
|
|
"\xb0\xbd\xca\xd7\xe4\xf1\xfe\x0b"
|
|
|
|
"\x18\x25\x32\x3f\x4c\x59\x66\x73"
|
|
|
|
"\x80\x8d\x9a\xa7\xb4\xc1\xce\xdb"
|
|
|
|
"\xe8\xf5\x02\x0f\x1c\x29\x36\x43"
|
|
|
|
"\x50\x5d\x6a\x77\x84\x91\x9e\xab"
|
|
|
|
"\xb8\xc5\xd2\xdf\xec\xf9\x06\x13"
|
|
|
|
"\x20\x2d\x3a\x47\x54\x61\x6e\x7b"
|
|
|
|
"\x88\x95\xa2\xaf\xbc\xc9\xd6\xe3"
|
|
|
|
"\xf0\xfd\x0a\x17\x24\x31\x3e\x4b"
|
|
|
|
"\x58\x65\x72\x7f\x8c\x99\xa6\xb3"
|
|
|
|
"\xc0\xcd\xda\xe7\xf4\x01\x0e\x1b"
|
|
|
|
"\x28\x35\x42\x4f\x5c\x69\x76\x83"
|
|
|
|
"\x90\x9d\xaa\xb7\xc4\xd1\xde\xeb"
|
|
|
|
"\xf8\x05\x12\x1f\x2c\x39\x46\x53"
|
|
|
|
"\x60\x6d\x7a\x87\x94\xa1\xae\xbb"
|
|
|
|
"\xc8\xd5\xe2\xef\xfc\x09\x16\x23"
|
|
|
|
"\x30\x3d\x4a\x57\x64\x71\x7e\x8b"
|
|
|
|
"\x98\xa5\xb2\xbf\xcc\xd9\xe6\xf3"
|
|
|
|
"\x00\x0f\x1e\x2d\x3c\x4b\x5a\x69"
|
|
|
|
"\x78\x87\x96\xa5\xb4\xc3\xd2\xe1"
|
|
|
|
"\xf0\xff\x0e\x1d\x2c\x3b\x4a\x59"
|
|
|
|
"\x68\x77\x86\x95\xa4\xb3\xc2\xd1"
|
|
|
|
"\xe0\xef\xfe\x0d\x1c\x2b\x3a\x49"
|
|
|
|
"\x58\x67\x76\x85\x94\xa3\xb2\xc1"
|
|
|
|
"\xd0\xdf\xee\xfd\x0c\x1b\x2a\x39"
|
|
|
|
"\x48\x57\x66\x75\x84\x93\xa2\xb1"
|
|
|
|
"\xc0\xcf\xde\xed\xfc\x0b\x1a\x29"
|
|
|
|
"\x38\x47\x56\x65\x74\x83\x92\xa1"
|
|
|
|
"\xb0\xbf\xce\xdd\xec\xfb\x0a\x19"
|
|
|
|
"\x28\x37\x46\x55\x64\x73\x82\x91"
|
|
|
|
"\xa0\xaf\xbe\xcd\xdc\xeb\xfa\x09"
|
|
|
|
"\x18\x27\x36\x45\x54\x63\x72\x81"
|
|
|
|
"\x90\x9f\xae\xbd\xcc\xdb\xea\xf9"
|
|
|
|
"\x08\x17\x26\x35\x44\x53\x62\x71"
|
|
|
|
"\x80\x8f\x9e\xad\xbc\xcb\xda\xe9"
|
|
|
|
"\xf8\x07\x16\x25\x34\x43\x52\x61"
|
|
|
|
"\x70\x7f\x8e\x9d\xac\xbb\xca\xd9"
|
|
|
|
"\xe8\xf7\x06\x15\x24\x33\x42\x51"
|
|
|
|
"\x60\x6f\x7e\x8d\x9c\xab\xba\xc9"
|
|
|
|
"\xd8\xe7\xf6\x05\x14\x23\x32\x41"
|
|
|
|
"\x50\x5f\x6e\x7d\x8c\x9b\xaa\xb9"
|
|
|
|
"\xc8\xd7\xe6\xf5\x04\x13\x22\x31"
|
|
|
|
"\x40\x4f\x5e\x6d\x7c\x8b\x9a\xa9"
|
|
|
|
"\xb8\xc7\xd6\xe5\xf4\x03\x12\x21"
|
|
|
|
"\x30\x3f\x4e\x5d\x6c\x7b\x8a\x99"
|
|
|
|
"\xa8\xb7\xc6\xd5\xe4\xf3\x02\x11"
|
|
|
|
"\x20\x2f\x3e\x4d\x5c\x6b\x7a\x89"
|
|
|
|
"\x98\xa7\xb6\xc5\xd4\xe3\xf2\x01"
|
|
|
|
"\x10\x1f\x2e\x3d\x4c\x5b\x6a\x79"
|
|
|
|
"\x88\x97\xa6\xb5\xc4\xd3\xe2\xf1"
|
|
|
|
"\x00\x11\x22\x33\x44\x55\x66\x77"
|
|
|
|
"\x88\x99\xaa\xbb\xcc\xdd\xee\xff"
|
|
|
|
"\x10\x21\x32\x43\x54\x65\x76\x87"
|
|
|
|
"\x98\xa9\xba\xcb\xdc\xed\xfe\x0f"
|
|
|
|
"\x20\x31\x42\x53\x64\x75\x86\x97"
|
|
|
|
"\xa8\xb9\xca\xdb\xec\xfd\x0e\x1f"
|
|
|
|
"\x30\x41\x52\x63\x74\x85\x96\xa7"
|
|
|
|
"\xb8\xc9\xda\xeb\xfc\x0d\x1e\x2f"
|
|
|
|
"\x40\x51\x62\x73\x84\x95\xa6\xb7"
|
|
|
|
"\xc8\xd9\xea\xfb\x0c\x1d\x2e\x3f"
|
|
|
|
"\x50\x61\x72\x83\x94\xa5\xb6\xc7"
|
|
|
|
"\xd8\xe9\xfa\x0b\x1c\x2d\x3e\x4f"
|
|
|
|
"\x60\x71\x82\x93\xa4\xb5\xc6\xd7"
|
|
|
|
"\xe8\xf9\x0a\x1b\x2c\x3d\x4e\x5f"
|
|
|
|
"\x70\x81\x92\xa3\xb4\xc5\xd6\xe7"
|
|
|
|
"\xf8\x09\x1a\x2b\x3c\x4d\x5e\x6f"
|
|
|
|
"\x80\x91\xa2\xb3\xc4\xd5\xe6\xf7"
|
|
|
|
"\x08\x19\x2a\x3b\x4c\x5d\x6e\x7f"
|
|
|
|
"\x90\xa1\xb2\xc3\xd4\xe5\xf6\x07"
|
|
|
|
"\x18\x29\x3a\x4b\x5c\x6d\x7e\x8f"
|
|
|
|
"\xa0\xb1\xc2\xd3\xe4\xf5\x06\x17"
|
|
|
|
"\x28\x39\x4a\x5b\x6c\x7d\x8e\x9f"
|
|
|
|
"\xb0\xc1\xd2\xe3\xf4\x05\x16\x27"
|
|
|
|
"\x38\x49\x5a\x6b\x7c\x8d\x9e\xaf"
|
|
|
|
"\xc0\xd1\xe2\xf3\x04\x15\x26\x37"
|
|
|
|
"\x48\x59\x6a\x7b\x8c\x9d\xae\xbf"
|
|
|
|
"\xd0\xe1\xf2\x03\x14\x25\x36\x47"
|
|
|
|
"\x58\x69\x7a\x8b\x9c\xad\xbe\xcf"
|
|
|
|
"\xe0\xf1\x02\x13\x24\x35\x46\x57"
|
|
|
|
"\x68\x79\x8a\x9b\xac\xbd\xce\xdf"
|
|
|
|
"\xf0\x01\x12\x23\x34\x45\x56\x67"
|
|
|
|
"\x78\x89\x9a\xab\xbc\xcd\xde\xef"
|
|
|
|
"\x00\x13\x26\x39\x4c\x5f\x72\x85"
|
|
|
|
"\x98\xab\xbe\xd1\xe4\xf7\x0a\x1d"
|
|
|
|
"\x30\x43\x56\x69\x7c\x8f\xa2\xb5"
|
|
|
|
"\xc8\xdb\xee\x01\x14\x27\x3a\x4d"
|
|
|
|
"\x60\x73\x86\x99\xac\xbf\xd2\xe5"
|
|
|
|
"\xf8\x0b\x1e\x31\x44\x57\x6a\x7d"
|
|
|
|
"\x90\xa3\xb6\xc9\xdc\xef\x02\x15"
|
|
|
|
"\x28\x3b\x4e\x61\x74\x87\x9a\xad"
|
|
|
|
"\xc0\xd3\xe6\xf9\x0c\x1f\x32\x45"
|
|
|
|
"\x58\x6b\x7e\x91\xa4\xb7\xca\xdd"
|
|
|
|
"\xf0\x03\x16\x29\x3c\x4f\x62\x75"
|
|
|
|
"\x88\x9b\xae\xc1\xd4\xe7\xfa\x0d"
|
|
|
|
"\x20\x33\x46\x59\x6c\x7f\x92\xa5"
|
|
|
|
"\xb8\xcb\xde\xf1\x04\x17\x2a\x3d"
|
|
|
|
"\x50\x63\x76\x89\x9c\xaf\xc2\xd5"
|
|
|
|
"\xe8\xfb\x0e\x21\x34\x47\x5a\x6d"
|
|
|
|
"\x80\x93\xa6\xb9\xcc\xdf\xf2\x05"
|
|
|
|
"\x18\x2b\x3e\x51\x64\x77\x8a\x9d"
|
|
|
|
"\xb0\xc3\xd6\xe9\xfc\x0f\x22\x35"
|
|
|
|
"\x48\x5b\x6e\x81\x94\xa7\xba\xcd"
|
|
|
|
"\xe0\xf3\x06\x19\x2c\x3f\x52\x65"
|
|
|
|
"\x78\x8b\x9e\xb1\xc4\xd7\xea\xfd"
|
|
|
|
"\x10\x23\x36\x49\x5c\x6f\x82\x95"
|
|
|
|
"\xa8\xbb\xce\xe1\xf4\x07\x1a\x2d"
|
|
|
|
"\x40\x53\x66\x79\x8c\x9f\xb2\xc5"
|
|
|
|
"\xd8\xeb\xfe\x11\x24\x37\x4a\x5d"
|
|
|
|
"\x70\x83\x96\xa9\xbc\xcf\xe2\xf5"
|
|
|
|
"\x08\x1b\x2e\x41\x54\x67\x7a\x8d"
|
|
|
|
"\xa0\xb3\xc6\xd9\xec\xff\x12\x25"
|
|
|
|
"\x38\x4b\x5e\x71\x84\x97\xaa\xbd"
|
|
|
|
"\xd0\xe3\xf6\x09\x1c\x2f\x42\x55"
|
|
|
|
"\x68\x7b\x8e\xa1\xb4\xc7\xda\xed"
|
|
|
|
"\x00\x15\x2a\x3f\x54\x69\x7e\x93"
|
|
|
|
"\xa8\xbd\xd2\xe7\xfc\x11\x26\x3b"
|
|
|
|
"\x50\x65\x7a\x8f\xa4\xb9\xce\xe3"
|
|
|
|
"\xf8\x0d\x22\x37\x4c\x61\x76\x8b"
|
|
|
|
"\xa0\xb5\xca\xdf\xf4\x09\x1e\x33"
|
|
|
|
"\x48\x5d\x72\x87\x9c\xb1\xc6\xdb"
|
|
|
|
"\xf0\x05\x1a\x2f\x44\x59\x6e\x83"
|
|
|
|
"\x98\xad\xc2\xd7\xec\x01\x16\x2b"
|
|
|
|
"\x40\x55\x6a\x7f\x94\xa9\xbe\xd3"
|
|
|
|
"\xe8\xfd\x12\x27\x3c\x51\x66\x7b"
|
|
|
|
"\x90\xa5\xba\xcf\xe4\xf9\x0e\x23"
|
|
|
|
"\x38\x4d\x62\x77\x8c\xa1\xb6\xcb"
|
|
|
|
"\xe0\xf5\x0a\x1f\x34\x49\x5e\x73"
|
|
|
|
"\x88\x9d\xb2\xc7\xdc\xf1\x06\x1b"
|
|
|
|
"\x30\x45\x5a\x6f\x84\x99\xae\xc3"
|
|
|
|
"\xd8\xed\x02\x17\x2c\x41\x56\x6b"
|
|
|
|
"\x80\x95\xaa\xbf\xd4\xe9\xfe\x13"
|
|
|
|
"\x28\x3d\x52\x67\x7c\x91\xa6\xbb"
|
|
|
|
"\xd0\xe5\xfa\x0f\x24\x39\x4e\x63"
|
|
|
|
"\x78\x8d\xa2\xb7\xcc\xe1\xf6\x0b"
|
|
|
|
"\x20\x35\x4a\x5f\x74\x89\x9e\xb3"
|
|
|
|
"\xc8\xdd\xf2\x07\x1c\x31\x46\x5b"
|
|
|
|
"\x70\x85\x9a\xaf\xc4\xd9\xee\x03"
|
|
|
|
"\x18\x2d\x42\x57\x6c\x81\x96\xab"
|
|
|
|
"\xc0\xd5\xea\xff\x14\x29\x3e\x53"
|
|
|
|
"\x68\x7d\x92\xa7\xbc\xd1\xe6\xfb"
|
|
|
|
"\x10\x25\x3a\x4f\x64\x79\x8e\xa3"
|
|
|
|
"\xb8\xcd\xe2\xf7\x0c\x21\x36\x4b"
|
|
|
|
"\x60\x75\x8a\x9f\xb4\xc9\xde\xf3"
|
|
|
|
"\x08\x1d\x32\x47\x5c\x71\x86\x9b"
|
|
|
|
"\xb0\xc5\xda\xef\x04\x19\x2e\x43"
|
|
|
|
"\x58\x6d\x82\x97\xac\xc1\xd6\xeb"
|
|
|
|
"\x00\x17\x2e\x45\x5c\x73\x8a\xa1"
|
|
|
|
"\xb8\xcf\xe6\xfd\x14\x2b\x42\x59"
|
|
|
|
"\x70\x87\x9e\xb5\xcc\xe3\xfa\x11"
|
|
|
|
"\x28\x3f\x56\x6d\x84\x9b\xb2\xc9"
|
|
|
|
"\xe0\xf7\x0e\x25\x3c\x53\x6a\x81"
|
|
|
|
"\x98\xaf\xc6\xdd\xf4\x0b\x22\x39"
|
|
|
|
"\x50\x67\x7e\x95\xac\xc3\xda\xf1"
|
|
|
|
"\x08\x1f\x36\x4d\x64\x7b\x92\xa9"
|
|
|
|
"\xc0\xd7\xee\x05\x1c\x33\x4a\x61"
|
|
|
|
"\x78\x8f\xa6\xbd\xd4\xeb\x02\x19"
|
|
|
|
"\x30\x47\x5e\x75\x8c\xa3\xba\xd1"
|
|
|
|
"\xe8\xff\x16\x2d\x44\x5b\x72\x89"
|
|
|
|
"\xa0\xb7\xce\xe5\xfc\x13\x2a\x41"
|
|
|
|
"\x58\x6f\x86\x9d\xb4\xcb\xe2\xf9"
|
|
|
|
"\x10\x27\x3e\x55\x6c\x83\x9a\xb1"
|
|
|
|
"\xc8\xdf\xf6\x0d\x24\x3b\x52\x69"
|
|
|
|
"\x80\x97\xae\xc5\xdc\xf3\x0a\x21"
|
|
|
|
"\x38\x4f\x66\x7d\x94\xab\xc2\xd9"
|
|
|
|
"\xf0\x07\x1e\x35\x4c\x63\x7a\x91"
|
|
|
|
"\xa8\xbf\xd6\xed\x04\x1b\x32\x49"
|
|
|
|
"\x60\x77\x8e\xa5\xbc\xd3\xea\x01"
|
|
|
|
"\x18\x2f\x46\x5d\x74\x8b\xa2\xb9"
|
|
|
|
"\xd0\xe7\xfe\x15\x2c\x43\x5a\x71"
|
|
|
|
"\x88\x9f\xb6\xcd\xe4\xfb\x12\x29"
|
|
|
|
"\x40\x57\x6e\x85\x9c\xb3\xca\xe1"
|
|
|
|
"\xf8\x0f\x26\x3d\x54\x6b\x82\x99"
|
|
|
|
"\xb0\xc7\xde\xf5\x0c\x23\x3a\x51"
|
|
|
|
"\x68\x7f\x96\xad\xc4\xdb\xf2\x09"
|
|
|
|
"\x20\x37\x4e\x65\x7c\x93\xaa\xc1"
|
|
|
|
"\xd8\xef\x06\x1d\x34\x4b\x62\x79"
|
|
|
|
"\x90\xa7\xbe\xd5\xec\x03\x1a\x31"
|
|
|
|
"\x48\x5f\x76\x8d\xa4\xbb\xd2\xe9"
|
|
|
|
"\x00\x19\x32\x4b\x64\x7d\x96\xaf"
|
|
|
|
"\xc8\xe1\xfa\x13\x2c\x45\x5e\x77"
|
|
|
|
"\x90\xa9\xc2\xdb\xf4\x0d\x26\x3f"
|
|
|
|
"\x58\x71\x8a\xa3\xbc\xd5\xee\x07"
|
|
|
|
"\x20\x39\x52\x6b\x84\x9d\xb6\xcf"
|
|
|
|
"\xe8\x01\x1a\x33\x4c\x65\x7e\x97"
|
|
|
|
"\xb0\xc9\xe2\xfb\x14\x2d\x46\x5f"
|
|
|
|
"\x78\x91\xaa\xc3\xdc\xf5\x0e\x27"
|
|
|
|
"\x40\x59\x72\x8b\xa4\xbd\xd6\xef"
|
|
|
|
"\x08\x21\x3a\x53\x6c\x85\x9e\xb7"
|
|
|
|
"\xd0\xe9\x02\x1b\x34\x4d\x66\x7f"
|
|
|
|
"\x98\xb1\xca\xe3\xfc\x15\x2e\x47"
|
|
|
|
"\x60\x79\x92\xab\xc4\xdd\xf6\x0f"
|
|
|
|
"\x28\x41\x5a\x73\x8c\xa5\xbe\xd7"
|
|
|
|
"\xf0\x09\x22\x3b\x54\x6d\x86\x9f"
|
|
|
|
"\xb8\xd1\xea\x03\x1c\x35\x4e\x67"
|
|
|
|
"\x80\x99\xb2\xcb\xe4\xfd\x16\x2f"
|
|
|
|
"\x48\x61\x7a\x93\xac\xc5\xde\xf7"
|
|
|
|
"\x10\x29\x42\x5b\x74\x8d\xa6\xbf"
|
|
|
|
"\xd8\xf1\x0a\x23\x3c\x55\x6e\x87"
|
|
|
|
"\xa0\xb9\xd2\xeb\x04\x1d\x36\x4f"
|
|
|
|
"\x68\x81\x9a\xb3\xcc\xe5\xfe\x17"
|
|
|
|
"\x30\x49\x62\x7b\x94\xad\xc6\xdf"
|
|
|
|
"\xf8\x11\x2a\x43\x5c\x75\x8e\xa7"
|
|
|
|
"\xc0\xd9\xf2\x0b\x24\x3d\x56\x6f"
|
|
|
|
"\x88\xa1\xba\xd3\xec\x05\x1e\x37"
|
|
|
|
"\x50\x69\x82\x9b\xb4\xcd\xe6\xff"
|
|
|
|
"\x18\x31\x4a\x63\x7c\x95\xae\xc7"
|
|
|
|
"\xe0\xf9\x12\x2b\x44\x5d\x76\x8f"
|
|
|
|
"\xa8\xc1\xda\xf3\x0c\x25\x3e\x57"
|
|
|
|
"\x70\x89\xa2\xbb\xd4\xed\x06\x1f"
|
|
|
|
"\x38\x51\x6a\x83\x9c\xb5\xce\xe7"
|
|
|
|
"\x00\x1b\x36\x51\x6c\x87\xa2\xbd"
|
|
|
|
"\xd8\xf3\x0e\x29\x44\x5f\x7a\x95"
|
|
|
|
"\xb0\xcb\xe6\x01\x1c\x37\x52\x6d"
|
|
|
|
"\x88\xa3\xbe\xd9\xf4\x0f\x2a\x45"
|
|
|
|
"\x60\x7b\x96\xb1\xcc\xe7\x02\x1d"
|
|
|
|
"\x38\x53\x6e\x89\xa4\xbf\xda\xf5"
|
|
|
|
"\x10\x2b\x46\x61\x7c\x97\xb2\xcd"
|
|
|
|
"\xe8\x03\x1e\x39\x54\x6f\x8a\xa5"
|
|
|
|
"\xc0\xdb\xf6\x11\x2c\x47\x62\x7d"
|
|
|
|
"\x98\xb3\xce\xe9\x04\x1f\x3a\x55"
|
|
|
|
"\x70\x8b\xa6\xc1\xdc\xf7\x12\x2d"
|
|
|
|
"\x48\x63\x7e\x99\xb4\xcf\xea\x05"
|
|
|
|
"\x20\x3b\x56\x71\x8c\xa7\xc2\xdd"
|
|
|
|
"\xf8\x13\x2e\x49\x64\x7f\x9a\xb5"
|
|
|
|
"\xd0\xeb\x06\x21\x3c\x57\x72\x8d"
|
|
|
|
"\xa8\xc3\xde\xf9\x14\x2f\x4a\x65"
|
|
|
|
"\x80\x9b\xb6\xd1\xec\x07\x22\x3d"
|
|
|
|
"\x58\x73\x8e\xa9\xc4\xdf\xfa\x15"
|
|
|
|
"\x30\x4b\x66\x81\x9c\xb7\xd2\xed"
|
|
|
|
"\x08\x23\x3e\x59\x74\x8f\xaa\xc5"
|
|
|
|
"\xe0\xfb\x16\x31\x4c\x67\x82\x9d"
|
|
|
|
"\xb8\xd3\xee\x09\x24\x3f\x5a\x75"
|
|
|
|
"\x90\xab\xc6\xe1\xfc\x17\x32\x4d"
|
|
|
|
"\x68\x83\x9e\xb9\xd4\xef\x0a\x25"
|
|
|
|
"\x40\x5b\x76\x91\xac\xc7\xe2\xfd"
|
|
|
|
"\x18\x33\x4e\x69\x84\x9f\xba\xd5"
|
|
|
|
"\xf0\x0b\x26\x41\x5c\x77\x92\xad"
|
|
|
|
"\xc8\xe3\xfe\x19\x34\x4f\x6a\x85"
|
|
|
|
"\xa0\xbb\xd6\xf1\x0c\x27\x42\x5d"
|
|
|
|
"\x78\x93\xae\xc9\xe4\xff\x1a\x35"
|
|
|
|
"\x50\x6b\x86\xa1\xbc\xd7\xf2\x0d"
|
|
|
|
"\x28\x43\x5e\x79\x94\xaf\xca\xe5"
|
|
|
|
"\x00\x1d\x3a\x57\x74\x91\xae\xcb"
|
|
|
|
"\xe8\x05\x22\x3f\x5c\x79\x96\xb3"
|
|
|
|
"\xd0\xed\x0a\x27\x44\x61\x7e\x9b"
|
|
|
|
"\xb8\xd5\xf2\x0f\x2c\x49\x66\x83"
|
|
|
|
"\xa0\xbd\xda\xf7\x14\x31\x4e\x6b"
|
|
|
|
"\x88\xa5\xc2\xdf\xfc\x19\x36\x53"
|
|
|
|
"\x70\x8d\xaa\xc7\xe4\x01\x1e\x3b"
|
|
|
|
"\x58\x75\x92\xaf\xcc\xe9\x06\x23"
|
|
|
|
"\x40\x5d\x7a\x97\xb4\xd1\xee\x0b"
|
|
|
|
"\x28\x45\x62\x7f\x9c\xb9\xd6\xf3"
|
|
|
|
"\x10\x2d\x4a\x67\x84\xa1\xbe\xdb"
|
|
|
|
"\xf8\x15\x32\x4f\x6c\x89\xa6\xc3"
|
|
|
|
"\xe0\xfd\x1a\x37\x54\x71\x8e\xab"
|
|
|
|
"\xc8\xe5\x02\x1f\x3c\x59\x76\x93"
|
|
|
|
"\xb0\xcd\xea\x07\x24\x41\x5e\x7b"
|
|
|
|
"\x98\xb5\xd2\xef\x0c\x29\x46\x63"
|
|
|
|
"\x80\x9d\xba\xd7\xf4\x11\x2e\x4b"
|
|
|
|
"\x68\x85\xa2\xbf\xdc\xf9\x16\x33"
|
|
|
|
"\x50\x6d\x8a\xa7\xc4\xe1\xfe\x1b"
|
|
|
|
"\x38\x55\x72\x8f\xac\xc9\xe6\x03"
|
|
|
|
"\x20\x3d\x5a\x77\x94\xb1\xce\xeb"
|
|
|
|
"\x08\x25\x42\x5f\x7c\x99\xb6\xd3"
|
|
|
|
"\xf0\x0d\x2a\x47\x64\x81\x9e\xbb"
|
|
|
|
"\xd8\xf5\x12\x2f\x4c\x69\x86\xa3"
|
|
|
|
"\xc0\xdd\xfa\x17\x34\x51\x6e\x8b"
|
|
|
|
"\xa8\xc5\xe2\xff\x1c\x39\x56\x73"
|
|
|
|
"\x90\xad\xca\xe7\x04\x21\x3e\x5b"
|
|
|
|
"\x78\x95\xb2\xcf\xec\x09\x26\x43"
|
|
|
|
"\x60\x7d\x9a\xb7\xd4\xf1\x0e\x2b"
|
|
|
|
"\x48\x65\x82\x9f\xbc\xd9\xf6\x13"
|
|
|
|
"\x30\x4d\x6a\x87\xa4\xc1\xde\xfb"
|
|
|
|
"\x18\x35\x52\x6f\x8c\xa9\xc6\xe3"
|
|
|
|
"\x00\x1f\x3e\x5d\x7c\x9b\xba\xd9"
|
|
|
|
"\xf8\x17\x36\x55\x74\x93\xb2\xd1"
|
|
|
|
"\xf0\x0f\x2e\x4d\x6c\x8b\xaa\xc9"
|
|
|
|
"\xe8\x07\x26\x45\x64\x83\xa2\xc1"
|
|
|
|
"\xe0\xff\x1e\x3d\x5c\x7b\x9a\xb9"
|
|
|
|
"\xd8\xf7\x16\x35\x54\x73\x92\xb1"
|
|
|
|
"\xd0\xef\x0e\x2d\x4c\x6b\x8a\xa9"
|
|
|
|
"\xc8\xe7\x06\x25\x44\x63\x82\xa1"
|
|
|
|
"\xc0\xdf\xfe\x1d\x3c\x5b\x7a\x99"
|
|
|
|
"\xb8\xd7\xf6\x15\x34\x53\x72\x91"
|
|
|
|
"\xb0\xcf\xee\x0d\x2c\x4b\x6a\x89"
|
|
|
|
"\xa8\xc7\xe6\x05\x24\x43\x62\x81"
|
|
|
|
"\xa0\xbf\xde\xfd\x1c\x3b\x5a\x79"
|
|
|
|
"\x98\xb7\xd6\xf5\x14\x33\x52\x71"
|
|
|
|
"\x90\xaf\xce\xed\x0c\x2b\x4a\x69"
|
|
|
|
"\x88\xa7\xc6\xe5\x04\x23\x42\x61"
|
|
|
|
"\x80\x9f\xbe\xdd\xfc\x1b\x3a\x59"
|
|
|
|
"\x78\x97\xb6\xd5\xf4\x13\x32\x51"
|
|
|
|
"\x70\x8f\xae\xcd\xec\x0b\x2a\x49"
|
|
|
|
"\x68\x87\xa6\xc5\xe4\x03\x22\x41"
|
|
|
|
"\x60\x7f\x9e\xbd\xdc\xfb\x1a\x39"
|
|
|
|
"\x58\x77\x96\xb5\xd4\xf3\x12\x31"
|
|
|
|
"\x50\x6f\x8e\xad\xcc\xeb\x0a\x29"
|
|
|
|
"\x48\x67\x86\xa5\xc4\xe3\x02\x21"
|
|
|
|
"\x40\x5f\x7e\x9d\xbc\xdb\xfa\x19"
|
|
|
|
"\x38\x57\x76\x95\xb4\xd3\xf2\x11"
|
|
|
|
"\x30\x4f\x6e\x8d\xac\xcb\xea\x09"
|
|
|
|
"\x28\x47\x66\x85\xa4\xc3\xe2\x01"
|
|
|
|
"\x20\x3f\x5e\x7d\x9c\xbb\xda\xf9"
|
|
|
|
"\x18\x37\x56\x75\x94\xb3\xd2\xf1"
|
|
|
|
"\x10\x2f\x4e\x6d\x8c\xab\xca\xe9"
|
|
|
|
"\x08\x27\x46\x65\x84\xa3\xc2\xe1"
|
|
|
|
"\x00\x21\x42\x63",
|
|
|
|
.ilen = 4100,
|
|
|
|
.result =
|
|
|
|
"\xb5\x81\xf5\x64\x18\x73\xe3\xf0"
|
|
|
|
"\x4c\x13\xf2\x77\x18\x60\x65\x5e"
|
|
|
|
"\x29\x01\xce\x98\x55\x53\xf9\x0c"
|
|
|
|
"\x2a\x08\xd5\x09\xb3\x57\x55\x56"
|
|
|
|
"\xc5\xe9\x56\x90\xcb\x6a\xa3\xc0"
|
|
|
|
"\xff\xc4\x79\xb4\xd2\x97\x5d\xc4"
|
|
|
|
"\x43\xd1\xfe\x94\x7b\x88\x06\x5a"
|
|
|
|
"\xb2\x9e\x2c\xfc\x44\x03\xb7\x90"
|
|
|
|
"\xa0\xc1\xba\x6a\x33\xb8\xc7\xb2"
|
|
|
|
"\x9d\xe1\x12\x4f\xc0\x64\xd4\x01"
|
|
|
|
"\xfe\x8c\x7a\x66\xf7\xe6\x5a\x91"
|
|
|
|
"\xbb\xde\x56\x86\xab\x65\x21\x30"
|
|
|
|
"\x00\x84\x65\x24\xa5\x7d\x85\xb4"
|
|
|
|
"\xe3\x17\xed\x3a\xb7\x6f\xb4\x0b"
|
|
|
|
"\x0b\xaf\x15\xae\x5a\x8f\xf2\x0c"
|
|
|
|
"\x2f\x27\xf4\x09\xd8\xd2\x96\xb7"
|
|
|
|
"\x71\xf2\xc5\x99\x4d\x7e\x7f\x75"
|
|
|
|
"\x77\x89\x30\x8b\x59\xdb\xa2\xb2"
|
|
|
|
"\xa0\xf3\x19\x39\x2b\xc5\x7e\x3f"
|
|
|
|
"\x4f\xd9\xd3\x56\x28\x97\x44\xdc"
|
|
|
|
"\xc0\x8b\x77\x24\xd9\x52\xe7\xc5"
|
|
|
|
"\xaf\xf6\x7d\x59\xb2\x44\x05\x1d"
|
|
|
|
"\xb1\xb0\x11\xa5\x0f\xec\x33\xe1"
|
|
|
|
"\x6d\x1b\x4e\x1f\xff\x57\x91\xb4"
|
|
|
|
"\x5b\x9a\x96\xc5\x53\xbc\xae\x20"
|
|
|
|
"\x3c\xbb\x14\xe2\xe8\x22\x33\xc1"
|
|
|
|
"\x5e\x76\x9e\x46\x99\xf6\x2a\x15"
|
|
|
|
"\xc6\x97\x02\xa0\x66\x43\xd1\xa6"
|
|
|
|
"\x31\xa6\x9f\xfb\xf4\xd3\x69\xe5"
|
|
|
|
"\xcd\x76\x95\xb8\x7a\x82\x7f\x21"
|
|
|
|
"\x45\xff\x3f\xce\x55\xf6\x95\x10"
|
|
|
|
"\x08\x77\x10\x43\xc6\xf3\x09\xe5"
|
|
|
|
"\x68\xe7\x3c\xad\x00\x52\x45\x0d"
|
|
|
|
"\xfe\x2d\xc6\xc2\x94\x8c\x12\x1d"
|
|
|
|
"\xe6\x25\xae\x98\x12\x8e\x19\x9c"
|
|
|
|
"\x81\x68\xb1\x11\xf6\x69\xda\xe3"
|
|
|
|
"\x62\x08\x18\x7a\x25\x49\x28\xac"
|
|
|
|
"\xba\x71\x12\x0b\xe4\xa2\xe5\xc7"
|
|
|
|
"\x5d\x8e\xec\x49\x40\x21\xbf\x5a"
|
|
|
|
"\x98\xf3\x02\x68\x55\x03\x7f\x8a"
|
|
|
|
"\xe5\x94\x0c\x32\x5c\x07\x82\x63"
|
|
|
|
"\xaf\x6f\x91\x40\x84\x8e\x52\x25"
|
|
|
|
"\xd0\xb0\x29\x53\x05\xe2\x50\x7a"
|
|
|
|
"\x34\xeb\xc9\x46\x20\xa8\x3d\xde"
|
|
|
|
"\x7f\x16\x5f\x36\xc5\x2e\xdc\xd1"
|
|
|
|
"\x15\x47\xc7\x50\x40\x6d\x91\xc5"
|
|
|
|
"\xe7\x93\x95\x1a\xd3\x57\xbc\x52"
|
|
|
|
"\x33\xee\x14\x19\x22\x52\x89\xa7"
|
|
|
|
"\x4a\x25\x56\x77\x4b\xca\xcf\x0a"
|
|
|
|
"\xe1\xf5\x35\x85\x30\x7e\x59\x4a"
|
|
|
|
"\xbd\x14\x5b\xdf\xe3\x46\xcb\xac"
|
|
|
|
"\x1f\x6c\x96\x0e\xf4\x81\xd1\x99"
|
|
|
|
"\xca\x88\x63\x3d\x02\x58\x6b\xa9"
|
|
|
|
"\xe5\x9f\xb3\x00\xb2\x54\xc6\x74"
|
|
|
|
"\x1c\xbf\x46\xab\x97\xcc\xf8\x54"
|
|
|
|
"\x04\x07\x08\x52\xe6\xc0\xda\x93"
|
|
|
|
"\x74\x7d\x93\x99\x5d\x78\x68\xa6"
|
|
|
|
"\x2e\x6b\xd3\x6a\x69\xcc\x12\x6b"
|
|
|
|
"\xd4\xc7\xa5\xc6\xe7\xf6\x03\x04"
|
|
|
|
"\x5d\xcd\x61\x5e\x17\x40\xdc\xd1"
|
|
|
|
"\x5c\xf5\x08\xdf\x5c\x90\x85\xa4"
|
|
|
|
"\xaf\xf6\x78\xbb\x0d\xf1\xf4\xa4"
|
|
|
|
"\x54\x26\x72\x9e\x61\xfa\x86\xcf"
|
|
|
|
"\xe8\x9e\xa1\xe0\xc7\x48\x23\xae"
|
|
|
|
"\x5a\x90\xae\x75\x0a\x74\x18\x89"
|
|
|
|
"\x05\xb1\x92\xb2\x7f\xd0\x1b\xa6"
|
|
|
|
"\x62\x07\x25\x01\xc7\xc2\x4f\xf9"
|
|
|
|
"\xe8\xfe\x63\x95\x80\x07\xb4\x26"
|
|
|
|
"\xcc\xd1\x26\xb6\xc4\x3f\x9e\xcb"
|
|
|
|
"\x8e\x3b\x2e\x44\x16\xd3\x10\x9a"
|
|
|
|
"\x95\x08\xeb\xc8\xcb\xeb\xbf\x6f"
|
|
|
|
"\x0b\xcd\x1f\xc8\xca\x86\xaa\xec"
|
|
|
|
"\x33\xe6\x69\xf4\x45\x25\x86\x3a"
|
|
|
|
"\x22\x94\x4f\x00\x23\x6a\x44\xc2"
|
|
|
|
"\x49\x97\x33\xab\x36\x14\x0a\x70"
|
|
|
|
"\x24\xc3\xbe\x04\x3b\x79\xa0\xf9"
|
|
|
|
"\xb8\xe7\x76\x29\x22\x83\xd7\xf2"
|
|
|
|
"\x94\xf4\x41\x49\xba\x5f\x7b\x07"
|
|
|
|
"\xb5\xfb\xdb\x03\x1a\x9f\xb6\x4c"
|
|
|
|
"\xc2\x2e\x37\x40\x49\xc3\x38\x16"
|
|
|
|
"\xe2\x4f\x77\x82\xb0\x68\x4c\x71"
|
|
|
|
"\x1d\x57\x61\x9c\xd9\x4e\x54\x99"
|
|
|
|
"\x47\x13\x28\x73\x3c\xbb\x00\x90"
|
|
|
|
"\xf3\x4d\xc9\x0e\xfd\xe7\xb1\x71"
|
|
|
|
"\xd3\x15\x79\xbf\xcc\x26\x2f\xbd"
|
|
|
|
"\xad\x6c\x50\x69\x6c\x3e\x6d\x80"
|
|
|
|
"\x9a\xea\x78\xaf\x19\xb2\x0d\x4d"
|
|
|
|
"\xad\x04\x07\xae\x22\x90\x4a\x93"
|
|
|
|
"\x32\x0e\x36\x9b\x1b\x46\xba\x3b"
|
|
|
|
"\xb4\xac\xc6\xd1\xa2\x31\x53\x3b"
|
|
|
|
"\x2a\x3d\x45\xfe\x03\x61\x10\x85"
|
|
|
|
"\x17\x69\xa6\x78\xcc\x6c\x87\x49"
|
|
|
|
"\x53\xf9\x80\x10\xde\x80\xa2\x41"
|
|
|
|
"\x6a\xc3\x32\x02\xad\x6d\x3c\x56"
|
|
|
|
"\x00\x71\x51\x06\xa7\xbd\xfb\xef"
|
|
|
|
"\x3c\xb5\x9f\xfc\x48\x7d\x53\x7c"
|
|
|
|
"\x66\xb0\x49\x23\xc4\x47\x10\x0e"
|
|
|
|
"\xe5\x6c\x74\x13\xe6\xc5\x3f\xaa"
|
|
|
|
"\xde\xff\x07\x44\xdd\x56\x1b\xad"
|
|
|
|
"\x09\x77\xfb\x5b\x12\xb8\x0d\x38"
|
|
|
|
"\x17\x37\x35\x7b\x9b\xbc\xfe\xd4"
|
|
|
|
"\x7e\x8b\xda\x7e\x5b\x04\xa7\x22"
|
|
|
|
"\xa7\x31\xa1\x20\x86\xc7\x1b\x99"
|
|
|
|
"\xdb\xd1\x89\xf4\x94\xa3\x53\x69"
|
|
|
|
"\x8d\xe7\xe8\x74\x11\x8d\x74\xd6"
|
|
|
|
"\x07\x37\x91\x9f\xfd\x67\x50\x3a"
|
|
|
|
"\xc9\xe1\xf4\x36\xd5\xa0\x47\xd1"
|
|
|
|
"\xf9\xe5\x39\xa3\x31\xac\x07\x36"
|
|
|
|
"\x23\xf8\x66\x18\x14\x28\x34\x0f"
|
|
|
|
"\xb8\xd0\xe7\x29\xb3\x04\x4b\x55"
|
|
|
|
"\x01\x41\xb2\x75\x8d\xcb\x96\x85"
|
|
|
|
"\x3a\xfb\xab\x2b\x9e\xfa\x58\x20"
|
|
|
|
"\x44\x1f\xc0\x14\x22\x75\x61\xe8"
|
|
|
|
"\xaa\x19\xcf\xf1\x82\x56\xf4\xd7"
|
|
|
|
"\x78\x7b\x3d\x5f\xb3\x9e\x0b\x8a"
|
|
|
|
"\x57\x50\xdb\x17\x41\x65\x4d\xa3"
|
|
|
|
"\x02\xc9\x9c\x9c\x53\xfb\x39\x39"
|
|
|
|
"\x9b\x1d\x72\x24\xda\xb7\x39\xbe"
|
|
|
|
"\x13\x3b\xfa\x29\xda\x9e\x54\x64"
|
|
|
|
"\x6e\xba\xd8\xa1\xcb\xb3\x36\xfa"
|
|
|
|
"\xcb\x47\x85\xe9\x61\x38\xbc\xbe"
|
|
|
|
"\xc5\x00\x38\x2a\x54\xf7\xc4\xb9"
|
|
|
|
"\xb3\xd3\x7b\xa0\xa0\xf8\x72\x7f"
|
|
|
|
"\x8c\x8e\x82\x0e\xc6\x1c\x75\x9d"
|
|
|
|
"\xca\x8e\x61\x87\xde\xad\x80\xd2"
|
|
|
|
"\xf5\xf9\x80\xef\x15\x75\xaf\xf5"
|
|
|
|
"\x80\xfb\xff\x6d\x1e\x25\xb7\x40"
|
|
|
|
"\x61\x6a\x39\x5a\x6a\xb5\x31\xab"
|
|
|
|
"\x97\x8a\x19\x89\x44\x40\xc0\xa6"
|
|
|
|
"\xb4\x4e\x30\x32\x7b\x13\xe7\x67"
|
|
|
|
"\xa9\x8b\x57\x04\xc2\x01\xa6\xf4"
|
|
|
|
"\x28\x99\xad\x2c\x76\xa3\x78\xc2"
|
|
|
|
"\x4a\xe6\xca\x5c\x50\x6a\xc1\xb0"
|
|
|
|
"\x62\x4b\x10\x8e\x7c\x17\x43\xb3"
|
|
|
|
"\x17\x66\x1c\x3e\x8d\x69\xf0\x5a"
|
|
|
|
"\x71\xf5\x97\xdc\xd1\x45\xdd\x28"
|
|
|
|
"\xf3\x5d\xdf\x53\x7b\x11\xe5\xbc"
|
|
|
|
"\x4c\xdb\x1b\x51\x6b\xe9\xfb\x3d"
|
|
|
|
"\xc1\xc3\x2c\xb9\x71\xf5\xb6\xb2"
|
|
|
|
"\x13\x36\x79\x80\x53\xe8\xd3\xa6"
|
|
|
|
"\x0a\xaf\xfd\x56\x97\xf7\x40\x8e"
|
|
|
|
"\x45\xce\xf8\xb0\x9e\x5c\x33\x82"
|
|
|
|
"\xb0\x44\x56\xfc\x05\x09\xe9\x2a"
|
|
|
|
"\xac\x26\x80\x14\x1d\xc8\x3a\x35"
|
|
|
|
"\x4c\x82\x97\xfd\x76\xb7\xa9\x0a"
|
|
|
|
"\x35\x58\x79\x8e\x0f\x66\xea\xaf"
|
|
|
|
"\x51\x6c\x09\xa9\x6e\x9b\xcb\x9a"
|
|
|
|
"\x31\x47\xa0\x2f\x7c\x71\xb4\x4a"
|
|
|
|
"\x11\xaa\x8c\x66\xc5\x64\xe6\x3a"
|
|
|
|
"\x54\xda\x24\x6a\xc4\x41\x65\x46"
|
|
|
|
"\x82\xa0\x0a\x0f\x5f\xfb\x25\xd0"
|
|
|
|
"\x2c\x91\xa7\xee\xc4\x81\x07\x86"
|
|
|
|
"\x75\x5e\x33\x69\x97\xe4\x2c\xa8"
|
|
|
|
"\x9d\x9f\x0b\x6a\xbe\xad\x98\xda"
|
|
|
|
"\x6d\x94\x41\xda\x2c\x1e\x89\xc4"
|
|
|
|
"\xc2\xaf\x1e\x00\x05\x0b\x83\x60"
|
|
|
|
"\xbd\x43\xea\x15\x23\x7f\xb9\xac"
|
|
|
|
"\xee\x4f\x2c\xaf\x2a\xf3\xdf\xd0"
|
|
|
|
"\xf3\x19\x31\xbb\x4a\x74\x84\x17"
|
|
|
|
"\x52\x32\x2c\x7d\x61\xe4\xcb\xeb"
|
|
|
|
"\x80\x38\x15\x52\xcb\x6f\xea\xe5"
|
|
|
|
"\x73\x9c\xd9\x24\x69\xc6\x95\x32"
|
|
|
|
"\x21\xc8\x11\xe4\xdc\x36\xd7\x93"
|
|
|
|
"\x38\x66\xfb\xb2\x7f\x3a\xb9\xaf"
|
|
|
|
"\x31\xdd\x93\x75\x78\x8a\x2c\x94"
|
|
|
|
"\x87\x1a\x58\xec\x9e\x7d\x4d\xba"
|
|
|
|
"\xe1\xe5\x4d\xfc\xbc\xa4\x2a\x14"
|
|
|
|
"\xef\xcc\xa7\xec\xab\x43\x09\x18"
|
|
|
|
"\xd3\xab\x68\xd1\x07\x99\x44\x47"
|
|
|
|
"\xd6\x83\x85\x3b\x30\xea\xa9\x6b"
|
|
|
|
"\x63\xea\xc4\x07\xfb\x43\x2f\xa4"
|
|
|
|
"\xaa\xb0\xab\x03\x89\xce\x3f\x8c"
|
|
|
|
"\x02\x7c\x86\x54\xbc\x88\xaf\x75"
|
|
|
|
"\xd2\xdc\x63\x17\xd3\x26\xf6\x96"
|
|
|
|
"\xa9\x3c\xf1\x61\x8c\x11\x18\xcc"
|
|
|
|
"\xd6\xea\x5b\xe2\xcd\xf0\xf1\xb2"
|
|
|
|
"\xe5\x35\x90\x1f\x85\x4c\x76\x5b"
|
|
|
|
"\x66\xce\x44\xa4\x32\x9f\xe6\x7b"
|
|
|
|
"\x71\x6e\x9f\x58\x15\x67\x72\x87"
|
|
|
|
"\x64\x8e\x3a\x44\x45\xd4\x76\xfa"
|
|
|
|
"\xc2\xf6\xef\x85\x05\x18\x7a\x9b"
|
|
|
|
"\xba\x41\x54\xac\xf0\xfc\x59\x12"
|
|
|
|
"\x3f\xdf\xa0\xe5\x8a\x65\xfd\x3a"
|
|
|
|
"\x62\x8d\x83\x2c\x03\xbe\x05\x76"
|
|
|
|
"\x2e\x53\x49\x97\x94\x33\xae\x40"
|
|
|
|
"\x81\x15\xdb\x6e\xad\xaa\xf5\x4b"
|
|
|
|
"\xe3\x98\x70\xdf\xe0\x7c\xcd\xdb"
|
|
|
|
"\x02\xd4\x7d\x2f\xc1\xe6\xb4\xf3"
|
|
|
|
"\xd7\x0d\x7a\xd9\x23\x9e\x87\x2d"
|
|
|
|
"\xce\x87\xad\xcc\x72\x05\x00\x29"
|
|
|
|
"\xdc\x73\x7f\x64\xc1\x15\x0e\xc2"
|
|
|
|
"\xdf\xa7\x5f\xeb\x41\xa1\xcd\xef"
|
|
|
|
"\x5c\x50\x79\x2a\x56\x56\x71\x8c"
|
|
|
|
"\xac\xc0\x79\x50\x69\xca\x59\x32"
|
|
|
|
"\x65\xf2\x54\xe4\x52\x38\x76\xd1"
|
|
|
|
"\x5e\xde\x26\x9e\xfb\x75\x2e\x11"
|
|
|
|
"\xb5\x10\xf4\x17\x73\xf5\x89\xc7"
|
|
|
|
"\x4f\x43\x5c\x8e\x7c\xb9\x05\x52"
|
|
|
|
"\x24\x40\x99\xfe\x9b\x85\x0b\x6c"
|
|
|
|
"\x22\x3e\x8b\xae\x86\xa1\xd2\x79"
|
|
|
|
"\x05\x68\x6b\xab\xe3\x41\x49\xed"
|
|
|
|
"\x15\xa1\x8d\x40\x2d\x61\xdf\x1a"
|
|
|
|
"\x59\xc9\x26\x8b\xef\x30\x4c\x88"
|
|
|
|
"\x4b\x10\xf8\x8d\xa6\x92\x9f\x4b"
|
|
|
|
"\xf3\xc4\x53\x0b\x89\x5d\x28\x92"
|
|
|
|
"\xcf\x78\xb2\xc0\x5d\xed\x7e\xfc"
|
|
|
|
"\xc0\x12\x23\x5f\x5a\x78\x86\x43"
|
|
|
|
"\x6e\x27\xf7\x5a\xa7\x6a\xed\x19"
|
|
|
|
"\x04\xf0\xb3\x12\xd1\xbd\x0e\x89"
|
|
|
|
"\x6e\xbc\x96\xa8\xd8\x49\x39\x9f"
|
|
|
|
"\x7e\x67\xf0\x2e\x3e\x01\xa9\xba"
|
|
|
|
"\xec\x8b\x62\x8e\xcb\x4a\x70\x43"
|
|
|
|
"\xc7\xc2\xc4\xca\x82\x03\x73\xe9"
|
|
|
|
"\x11\xdf\xcf\x54\xea\xc9\xb0\x95"
|
|
|
|
"\x51\xc0\x13\x3d\x92\x05\xfa\xf4"
|
|
|
|
"\xa9\x34\xc8\xce\x6c\x3d\x54\xcc"
|
|
|
|
"\xc4\xaf\xf1\xdc\x11\x44\x26\xa2"
|
|
|
|
"\xaf\xf1\x85\x75\x7d\x03\x61\x68"
|
|
|
|
"\x4e\x78\xc6\x92\x7d\x86\x7d\x77"
|
|
|
|
"\xdc\x71\x72\xdb\xc6\xae\xa1\xcb"
|
|
|
|
"\x70\x9a\x0b\x19\xbe\x4a\x6c\x2a"
|
|
|
|
"\xe2\xba\x6c\x64\x9a\x13\x28\xdf"
|
|
|
|
"\x85\x75\xe6\x43\xf6\x87\x08\x68"
|
|
|
|
"\x6e\xba\x6e\x79\x9f\x04\xbc\x23"
|
|
|
|
"\x50\xf6\x33\x5c\x1f\x24\x25\xbe"
|
|
|
|
"\x33\x47\x80\x45\x56\xa3\xa7\xd7"
|
|
|
|
"\x7a\xb1\x34\x0b\x90\x3c\x9c\xad"
|
|
|
|
"\x44\x5f\x9e\x0e\x9d\xd4\xbd\x93"
|
|
|
|
"\x5e\xfa\x3c\xe0\xb0\xd9\xed\xf3"
|
|
|
|
"\xd6\x2e\xff\x24\xd8\x71\x6c\xed"
|
|
|
|
"\xaf\x55\xeb\x22\xac\x93\x68\x32"
|
|
|
|
"\x05\x5b\x47\xdd\xc6\x4a\xcb\xc7"
|
|
|
|
"\x10\xe1\x3c\x92\x1a\xf3\x23\x78"
|
|
|
|
"\x2b\xa1\xd2\x80\xf4\x12\xb1\x20"
|
|
|
|
"\x8f\xff\x26\x35\xdd\xfb\xc7\x4e"
|
|
|
|
"\x78\xf1\x2d\x50\x12\x77\xa8\x60"
|
|
|
|
"\x7c\x0f\xf5\x16\x2f\x63\x70\x2a"
|
|
|
|
"\xc0\x96\x80\x4e\x0a\xb4\x93\x35"
|
|
|
|
"\x5d\x1d\x3f\x56\xf7\x2f\xbb\x90"
|
|
|
|
"\x11\x16\x8f\xa2\xec\x47\xbe\xac"
|
|
|
|
"\x56\x01\x26\x56\xb1\x8c\xb2\x10"
|
|
|
|
"\xf9\x1a\xca\xf5\xd1\xb7\x39\x20"
|
|
|
|
"\x63\xf1\x69\x20\x4f\x13\x12\x1f"
|
|
|
|
"\x5b\x65\xfc\x98\xf7\xc4\x7a\xbe"
|
|
|
|
"\xf7\x26\x4d\x2b\x84\x7b\x42\xad"
|
|
|
|
"\xd8\x7a\x0a\xb4\xd8\x74\xbf\xc1"
|
|
|
|
"\xf0\x6e\xb4\x29\xa3\xbb\xca\x46"
|
|
|
|
"\x67\x70\x6a\x2d\xce\x0e\xa2\x8a"
|
|
|
|
"\xa9\x87\xbf\x05\xc4\xc1\x04\xa3"
|
|
|
|
"\xab\xd4\x45\x43\x8c\xb6\x02\xb0"
|
|
|
|
"\x41\xc8\xfc\x44\x3d\x59\xaa\x2e"
|
|
|
|
"\x44\x21\x2a\x8d\x88\x9d\x57\xf4"
|
|
|
|
"\xa0\x02\x77\xb8\xa6\xa0\xe6\x75"
|
|
|
|
"\x5c\x82\x65\x3e\x03\x5c\x29\x8f"
|
|
|
|
"\x38\x55\xab\x33\x26\xef\x9f\x43"
|
|
|
|
"\x52\xfd\x68\xaf\x36\xb4\xbb\x9a"
|
|
|
|
"\x58\x09\x09\x1b\xc3\x65\x46\x46"
|
|
|
|
"\x1d\xa7\x94\x18\x23\x50\x2c\xca"
|
|
|
|
"\x2c\x55\x19\x97\x01\x9d\x93\x3b"
|
|
|
|
"\x63\x86\xf2\x03\x67\x45\xd2\x72"
|
|
|
|
"\x28\x52\x6c\xf4\xe3\x1c\xb5\x11"
|
|
|
|
"\x13\xf1\xeb\x21\xc7\xd9\x56\x82"
|
|
|
|
"\x2b\x82\x39\xbd\x69\x54\xed\x62"
|
|
|
|
"\xc3\xe2\xde\x73\xd4\x6a\x12\xae"
|
|
|
|
"\x13\x21\x7f\x4b\x5b\xfc\xbf\xe8"
|
|
|
|
"\x2b\xbe\x56\xba\x68\x8b\x9a\xb1"
|
|
|
|
"\x6e\xfa\xbf\x7e\x5a\x4b\xf1\xac"
|
|
|
|
"\x98\x65\x85\xd1\x93\x53\xd3\x7b"
|
|
|
|
"\x09\xdd\x4b\x10\x6d\x84\xb0\x13"
|
|
|
|
"\x65\xbd\xcf\x52\x09\xc4\x85\xe2"
|
|
|
|
"\x84\x74\x15\x65\xb7\xf7\x51\xaf"
|
|
|
|
"\x55\xad\xa4\xd1\x22\x54\x70\x94"
|
|
|
|
"\xa0\x1c\x90\x41\xfd\x99\xd7\x5a"
|
|
|
|
"\x31\xef\xaa\x25\xd0\x7f\x4f\xea"
|
|
|
|
"\x1d\x55\x42\xe5\x49\xb0\xd0\x46"
|
|
|
|
"\x62\x36\x43\xb2\x82\x15\x75\x50"
|
|
|
|
"\xa4\x72\xeb\x54\x27\x1f\x8a\xe4"
|
|
|
|
"\x7d\xe9\x66\xc5\xf1\x53\xa4\xd1"
|
|
|
|
"\x0c\xeb\xb8\xf8\xbc\xd4\xe2\xe7"
|
|
|
|
"\xe1\xf8\x4b\xcb\xa9\xa1\xaf\x15"
|
|
|
|
"\x83\xcb\x72\xd0\x33\x79\x00\x2d"
|
|
|
|
"\x9f\xd7\xf1\x2e\x1e\x10\xe4\x45"
|
|
|
|
"\xc0\x75\x3a\x39\xea\x68\xf7\x5d"
|
|
|
|
"\x1b\x73\x8f\xe9\x8e\x0f\x72\x47"
|
|
|
|
"\xae\x35\x0a\x31\x7a\x14\x4d\x4a"
|
|
|
|
"\x6f\x47\xf7\x7e\x91\x6e\x74\x8b"
|
|
|
|
"\x26\x47\xf9\xc3\xf9\xde\x70\xf5"
|
|
|
|
"\x61\xab\xa9\x27\x9f\x82\xe4\x9c"
|
|
|
|
"\x89\x91\x3f\x2e\x6a\xfd\xb5\x49"
|
|
|
|
"\xe9\xfd\x59\x14\x36\x49\x40\x6d"
|
|
|
|
"\x32\xd8\x85\x42\xf3\xa5\xdf\x0c"
|
|
|
|
"\xa8\x27\xd7\x54\xe2\x63\x2f\xf2"
|
|
|
|
"\x7e\x8b\x8b\xe7\xf1\x9a\x95\x35"
|
|
|
|
"\x43\xdc\x3a\xe4\xb6\xf4\xd0\xdf"
|
|
|
|
"\x9c\xcb\x94\xf3\x21\xa0\x77\x50"
|
|
|
|
"\xe2\xc6\xc4\xc6\x5f\x09\x64\x5b"
|
|
|
|
"\x92\x90\xd8\xe1\xd1\xed\x4b\x42"
|
|
|
|
"\xd7\x37\xaf\x65\x3d\x11\x39\xb6"
|
|
|
|
"\x24\x8a\x60\xae\xd6\x1e\xbf\x0e"
|
|
|
|
"\x0d\xd7\xdc\x96\x0e\x65\x75\x4e"
|
|
|
|
"\x29\x06\x9d\xa4\x51\x3a\x10\x63"
|
|
|
|
"\x8f\x17\x07\xd5\x8e\x3c\xf4\x28"
|
|
|
|
"\x00\x5a\x5b\x05\x19\xd8\xc0\x6c"
|
|
|
|
"\xe5\x15\xe4\x9c\x9d\x71\x9d\x5e"
|
|
|
|
"\x94\x29\x1a\xa7\x80\xfa\x0e\x33"
|
|
|
|
"\x03\xdd\xb7\x3e\x9a\xa9\x26\x18"
|
|
|
|
"\x37\xa9\x64\x08\x4d\x94\x5a\x88"
|
|
|
|
"\xca\x35\xce\x81\x02\xe3\x1f\x1b"
|
|
|
|
"\x89\x1a\x77\x85\xe3\x41\x6d\x32"
|
|
|
|
"\x42\x19\x23\x7d\xc8\x73\xee\x25"
|
|
|
|
"\x85\x0d\xf8\x31\x25\x79\x1b\x6f"
|
|
|
|
"\x79\x25\xd2\xd8\xd4\x23\xfd\xf7"
|
|
|
|
"\x82\x36\x6a\x0c\x46\x22\x15\xe9"
|
|
|
|
"\xff\x72\x41\x91\x91\x7d\x3a\xb7"
|
|
|
|
"\xdd\x65\x99\x70\xf6\x8d\x84\xf8"
|
|
|
|
"\x67\x15\x20\x11\xd6\xb2\x55\x7b"
|
|
|
|
"\xdb\x87\xee\xef\x55\x89\x2a\x59"
|
|
|
|
"\x2b\x07\x8f\x43\x8a\x59\x3c\x01"
|
|
|
|
"\x8b\x65\x54\xa1\x66\xd5\x38\xbd"
|
|
|
|
"\xc6\x30\xa9\xcc\x49\xb6\xa8\x1b"
|
|
|
|
"\xb8\xc0\x0e\xe3\x45\x28\xe2\xff"
|
|
|
|
"\x41\x9f\x7e\x7c\xd1\xae\x9e\x25"
|
|
|
|
"\x3f\x4c\x7c\x7c\xf4\xa8\x26\x4d"
|
|
|
|
"\x5c\xfd\x4b\x27\x18\xf9\x61\x76"
|
|
|
|
"\x48\xba\x0c\x6b\xa9\x4d\xfc\xf5"
|
|
|
|
"\x3b\x35\x7e\x2f\x4a\xa9\xc2\x9a"
|
|
|
|
"\xae\xab\x86\x09\x89\xc9\xc2\x40"
|
|
|
|
"\x39\x2c\x81\xb3\xb8\x17\x67\xc2"
|
|
|
|
"\x0d\x32\x4a\x3a\x67\x81\xd7\x1a"
|
|
|
|
"\x34\x52\xc5\xdb\x0a\xf5\x63\x39"
|
|
|
|
"\xea\x1f\xe1\x7c\xa1\x9e\xc1\x35"
|
|
|
|
"\xe3\xb1\x18\x45\x67\xf9\x22\x38"
|
|
|
|
"\x95\xd9\x34\x34\x86\xc6\x41\x94"
|
|
|
|
"\x15\xf9\x5b\x41\xa6\x87\x8b\xf8"
|
|
|
|
"\xd5\xe1\x1b\xe2\x5b\xf3\x86\x10"
|
|
|
|
"\xff\xe6\xae\x69\x76\xbc\x0d\xb4"
|
|
|
|
"\x09\x90\x0c\xa2\x65\x0c\xad\x74"
|
|
|
|
"\xf5\xd7\xff\xda\xc1\xce\x85\xbe"
|
|
|
|
"\x00\xa7\xff\x4d\x2f\x65\xd3\x8c"
|
|
|
|
"\x86\x2d\x05\xe8\xed\x3e\x6b\x8b"
|
|
|
|
"\x0f\x3d\x83\x8c\xf1\x1d\x5b\x96"
|
|
|
|
"\x2e\xb1\x9c\xc2\x98\xe1\x70\xb9"
|
|
|
|
"\xba\x5c\x8a\x43\xd6\x34\xa7\x2d"
|
|
|
|
"\xc9\x92\xae\xf2\xa5\x7b\x05\x49"
|
|
|
|
"\xa7\x33\x34\x86\xca\xe4\x96\x23"
|
|
|
|
"\x76\x5b\xf2\xc6\xf1\x51\x28\x42"
|
|
|
|
"\x7b\xcc\x76\x8f\xfa\xa2\xad\x31"
|
|
|
|
"\xd4\xd6\x7a\x6d\x25\x25\x54\xe4"
|
|
|
|
"\x3f\x50\x59\xe1\x5c\x05\xb7\x27"
|
|
|
|
"\x48\xbf\x07\xec\x1b\x13\xbe\x2b"
|
|
|
|
"\xa1\x57\x2b\xd5\xab\xd7\xd0\x4c"
|
|
|
|
"\x1e\xcb\x71\x9b\xc5\x90\x85\xd3"
|
|
|
|
"\xde\x59\xec\x71\xeb\x89\xbb\xd0"
|
|
|
|
"\x09\x50\xe1\x16\x3f\xfd\x1c\x34"
|
|
|
|
"\xc3\x1c\xa1\x10\x77\x53\x98\xef"
|
|
|
|
"\xf2\xfd\xa5\x01\x59\xc2\x9b\x26"
|
|
|
|
"\xc7\x42\xd9\x49\xda\x58\x2b\x6e"
|
|
|
|
"\x9f\x53\x19\x76\x7e\xd9\xc9\x0e"
|
|
|
|
"\x68\xc8\x7f\x51\x22\x42\xef\x49"
|
|
|
|
"\xa4\x55\xb6\x36\xac\x09\xc7\x31"
|
|
|
|
"\x88\x15\x4b\x2e\x8f\x3a\x08\xf7"
|
|
|
|
"\xd8\xf7\xa8\xc5\xa9\x33\xa6\x45"
|
|
|
|
"\xe4\xc4\x94\x76\xf3\x0d\x8f\x7e"
|
|
|
|
"\xc8\xf6\xbc\x23\x0a\xb6\x4c\xd3"
|
|
|
|
"\x6a\xcd\x36\xc2\x90\x5c\x5c\x3c"
|
|
|
|
"\x65\x7b\xc2\xd6\xcc\xe6\x0d\x87"
|
|
|
|
"\x73\x2e\x71\x79\x16\x06\x63\x28"
|
|
|
|
"\x09\x15\xd8\x89\x38\x38\x3d\xb5"
|
|
|
|
"\x42\x1c\x08\x24\xf7\x2a\xd2\x9d"
|
|
|
|
"\xc8\xca\xef\xf9\x27\xd8\x07\x86"
|
|
|
|
"\xf7\x43\x0b\x55\x15\x3f\x9f\x83"
|
|
|
|
"\xef\xdc\x49\x9d\x2a\xc1\x54\x62"
|
|
|
|
"\xbd\x9b\x66\x55\x9f\xb7\x12\xf3"
|
|
|
|
"\x1b\x4d\x9d\x2a\x5c\xed\x87\x75"
|
|
|
|
"\x87\x26\xec\x61\x2c\xb4\x0f\x89"
|
|
|
|
"\xb0\xfb\x2e\x68\x5d\x15\xc7\x8d"
|
|
|
|
"\x2e\xc0\xd9\xec\xaf\x4f\xd2\x25"
|
|
|
|
"\x29\xe8\xd2\x26\x2b\x67\xe9\xfc"
|
|
|
|
"\x2b\xa8\x67\x96\x12\x1f\x5b\x96"
|
|
|
|
"\xc6\x14\x53\xaf\x44\xea\xd6\xe2"
|
|
|
|
"\x94\x98\xe4\x12\x93\x4c\x92\xe0"
|
|
|
|
"\x18\xa5\x8d\x2d\xe4\x71\x3c\x47"
|
|
|
|
"\x4c\xf7\xe6\x47\x9e\xc0\x68\xdf"
|
|
|
|
"\xd4\xf5\x5a\x74\xb1\x2b\x29\x03"
|
|
|
|
"\x19\x07\xaf\x90\x62\x5c\x68\x98"
|
|
|
|
"\x48\x16\x11\x02\x9d\xee\xb4\x9b"
|
|
|
|
"\xe5\x42\x7f\x08\xfd\x16\x32\x0b"
|
|
|
|
"\xd0\xb3\xfa\x2b\xb7\x99\xf9\x29"
|
|
|
|
"\xcd\x20\x45\x9f\xb3\x1a\x5d\xa2"
|
|
|
|
"\xaf\x4d\xe0\xbd\x42\x0d\xbc\x74"
|
|
|
|
"\x99\x9c\x8e\x53\x1a\xb4\x3e\xbd"
|
|
|
|
"\xa2\x9a\x2d\xf7\xf8\x39\x0f\x67"
|
|
|
|
"\x63\xfc\x6b\xc0\xaf\xb3\x4b\x4f"
|
|
|
|
"\x55\xc4\xcf\xa7\xc8\x04\x11\x3e"
|
|
|
|
"\x14\x32\xbb\x1b\x38\x77\xd6\x7f"
|
|
|
|
"\x54\x4c\xdf\x75\xf3\x07\x2d\x33"
|
|
|
|
"\x9b\xa8\x20\xe1\x7b\x12\xb5\xf3"
|
|
|
|
"\xef\x2f\xce\x72\xe5\x24\x60\xc1"
|
|
|
|
"\x30\xe2\xab\xa1\x8e\x11\x09\xa8"
|
|
|
|
"\x21\x33\x44\xfe\x7f\x35\x32\x93"
|
|
|
|
"\x39\xa7\xad\x8b\x79\x06\xb2\xcb"
|
|
|
|
"\x4e\xa9\x5f\xc7\xba\x74\x29\xec"
|
|
|
|
"\x93\xa0\x4e\x54\x93\xc0\xbc\x55"
|
|
|
|
"\x64\xf0\x48\xe5\x57\x99\xee\x75"
|
|
|
|
"\xd6\x79\x0f\x66\xb7\xc6\x57\x76"
|
|
|
|
"\xf7\xb7\xf3\x9c\xc5\x60\xe8\x7f"
|
|
|
|
"\x83\x76\xd6\x0e\xaa\xe6\x90\x39"
|
|
|
|
"\x1d\xa6\x32\x6a\x34\xe3\x55\xf8"
|
|
|
|
"\x58\xa0\x58\x7d\x33\xe0\x22\x39"
|
|
|
|
"\x44\x64\x87\x86\x5a\x2f\xa7\x7e"
|
|
|
|
"\x0f\x38\xea\xb0\x30\xcc\x61\xa5"
|
|
|
|
"\x6a\x32\xae\x1e\xf7\xe9\xd0\xa9"
|
|
|
|
"\x0c\x32\x4b\xb5\x49\x28\xab\x85"
|
|
|
|
"\x2f\x8e\x01\x36\x38\x52\xd0\xba"
|
|
|
|
"\xd6\x02\x78\xf8\x0e\x3e\x9c\x8b"
|
|
|
|
"\x6b\x45\x99\x3f\x5c\xfe\x58\xf1"
|
|
|
|
"\x5c\x94\x04\xe1\xf5\x18\x6d\x51"
|
|
|
|
"\xb2\x5d\x18\x20\xb6\xc2\x9a\x42"
|
|
|
|
"\x1d\xb3\xab\x3c\xb6\x3a\x13\x03"
|
|
|
|
"\xb2\x46\x82\x4f\xfc\x64\xbc\x4f"
|
|
|
|
"\xca\xfa\x9c\xc0\xd5\xa7\xbd\x11"
|
|
|
|
"\xb7\xe4\x5a\xf6\x6f\x4d\x4d\x54"
|
|
|
|
"\xea\xa4\x98\x66\xd4\x22\x3b\xd3"
|
|
|
|
"\x8f\x34\x47\xd9\x7c\xf4\x72\x3b"
|
|
|
|
"\x4d\x02\x77\xf6\xd6\xdd\x08\x0a"
|
|
|
|
"\x81\xe1\x86\x89\x3e\x56\x10\x3c"
|
|
|
|
"\xba\xd7\x81\x8c\x08\xbc\x8b\xe2"
|
|
|
|
"\x53\xec\xa7\x89\xee\xc8\x56\xb5"
|
|
|
|
"\x36\x2c\xb2\x03\xba\x99\xdd\x7c"
|
|
|
|
"\x48\xa0\xb0\xbc\x91\x33\xe9\xa8"
|
|
|
|
"\xcb\xcd\xcf\x59\x5f\x1f\x15\xe2"
|
|
|
|
"\x56\xf5\x4e\x01\x35\x27\x45\x77"
|
|
|
|
"\x47\xc8\xbc\xcb\x7e\x39\xc1\x97"
|
|
|
|
"\x28\xd3\x84\xfc\x2c\x3e\xc8\xad"
|
|
|
|
"\x9c\xf8\x8a\x61\x9c\x28\xaa\xc5"
|
|
|
|
"\x99\x20\x43\x85\x9d\xa5\xe2\x8b"
|
|
|
|
"\xb8\xae\xeb\xd0\x32\x0d\x52\x78"
|
|
|
|
"\x09\x56\x3f\xc7\xd8\x7e\x26\xfc"
|
|
|
|
"\x37\xfb\x6f\x04\xfc\xfa\x92\x10"
|
|
|
|
"\xac\xf8\x3e\x21\xdc\x8c\x21\x16"
|
|
|
|
"\x7d\x67\x6e\xf6\xcd\xda\xb6\x98"
|
|
|
|
"\x23\xab\x23\x3c\xb2\x10\xa0\x53"
|
|
|
|
"\x5a\x56\x9f\xc5\xd0\xff\xbb\xe4"
|
|
|
|
"\x98\x3c\x69\x1e\xdb\x38\x8f\x7e"
|
|
|
|
"\x0f\xd2\x98\x88\x81\x8b\x45\x67"
|
|
|
|
"\xea\x33\xf1\xeb\xe9\x97\x55\x2e"
|
|
|
|
"\xd9\xaa\xeb\x5a\xec\xda\xe1\x68"
|
|
|
|
"\xa8\x9d\x3c\x84\x7c\x05\x3d\x62"
|
|
|
|
"\x87\x8f\x03\x21\x28\x95\x0c\x89"
|
|
|
|
"\x25\x22\x4a\xb0\x93\xa9\x50\xa2"
|
|
|
|
"\x2f\x57\x6e\x18\x42\x19\x54\x0c"
|
|
|
|
"\x55\x67\xc6\x11\x49\xf4\x5c\xd2"
|
|
|
|
"\xe9\x3d\xdd\x8b\x48\x71\x21\x00"
|
|
|
|
"\xc3\x9a\x6c\x85\x74\x28\x83\x4a"
|
|
|
|
"\x1b\x31\x05\xe1\x06\x92\xe7\xda"
|
|
|
|
"\x85\x73\x78\x45\x20\x7f\xae\x13"
|
|
|
|
"\x7c\x33\x06\x22\xf4\x83\xf9\x35"
|
|
|
|
"\x3f\x6c\x71\xa8\x4e\x48\xbe\x9b"
|
|
|
|
"\xce\x8a\xba\xda\xbe\x28\x08\xf7"
|
|
|
|
"\xe2\x14\x8c\x71\xea\x72\xf9\x33"
|
|
|
|
"\xf2\x88\x3f\xd7\xbb\x69\x6c\x29"
|
|
|
|
"\x19\xdc\x84\xce\x1f\x12\x4f\xc8"
|
|
|
|
"\xaf\xa5\x04\xba\x5a\xab\xb0\xd9"
|
|
|
|
"\x14\x1f\x6c\x68\x98\x39\x89\x7a"
|
|
|
|
"\xd9\xd8\x2f\xdf\xa8\x47\x4a\x25"
|
|
|
|
"\xe2\xfb\x33\xf4\x59\x78\xe1\x68"
|
|
|
|
"\x85\xcf\xfe\x59\x20\xd4\x05\x1d"
|
|
|
|
"\x80\x99\xae\xbc\xca\xae\x0f\x2f"
|
|
|
|
"\x65\x43\x34\x8e\x7e\xac\xd3\x93"
|
|
|
|
"\x2f\xac\x6d\x14\x3d\x02\x07\x70"
|
|
|
|
"\x9d\xa4\xf3\x1b\x5c\x36\xfc\x01"
|
|
|
|
"\x73\x34\x85\x0c\x6c\xd6\xf1\xbd"
|
|
|
|
"\x3f\xdf\xee\xf5\xd9\xba\x56\xef"
|
|
|
|
"\xf4\x9b\x6b\xee\x9f\x5a\x78\x6d"
|
|
|
|
"\x32\x19\xf4\xf7\xf8\x4c\x69\x0b"
|
|
|
|
"\x4b\xbc\xbb\xb7\xf2\x85\xaf\x70"
|
|
|
|
"\x75\x24\x6c\x54\xa7\x0e\x4d\x1d"
|
|
|
|
"\x01\xbf\x08\xac\xcf\x7f\x2c\xe3"
|
|
|
|
"\x14\x89\x5e\x70\x5a\x99\x92\xcd"
|
|
|
|
"\x01\x84\xc8\xd2\xab\xe5\x4f\x58"
|
|
|
|
"\xe7\x0f\x2f\x0e\xff\x68\xea\xfd"
|
|
|
|
"\x15\xb3\x17\xe6\xb0\xe7\x85\xd8"
|
|
|
|
"\x23\x2e\x05\xc7\xc9\xc4\x46\x1f"
|
|
|
|
"\xe1\x9e\x49\x20\x23\x24\x4d\x7e"
|
|
|
|
"\x29\x65\xff\xf4\xb6\xfd\x1a\x85"
|
|
|
|
"\xc4\x16\xec\xfc\xea\x7b\xd6\x2c"
|
|
|
|
"\x43\xf8\xb7\xbf\x79\xc0\x85\xcd"
|
|
|
|
"\xef\xe1\x98\xd3\xa5\xf7\x90\x8c"
|
|
|
|
"\xe9\x7f\x80\x6b\xd2\xac\x4c\x30"
|
|
|
|
"\xa7\xc6\x61\x6c\xd2\xf9\x2c\xff"
|
|
|
|
"\x30\xbc\x22\x81\x7d\x93\x12\xe4"
|
|
|
|
"\x0a\xcd\xaf\xdd\xe8\xab\x0a\x1e"
|
|
|
|
"\x13\xa4\x27\xc3\x5f\xf7\x4b\xbb"
|
|
|
|
"\x37\x09\x4b\x91\x6f\x92\x4f\xaf"
|
|
|
|
"\x52\xee\xdf\xef\x09\x6f\xf7\x5c"
|
|
|
|
"\x6e\x12\x17\x72\x63\x57\xc7\xba"
|
|
|
|
"\x3b\x6b\x38\x32\x73\x1b\x9c\x80"
|
|
|
|
"\xc1\x7a\xc6\xcf\xcd\x35\xc0\x6b"
|
|
|
|
"\x31\x1a\x6b\xe9\xd8\x2c\x29\x3f"
|
|
|
|
"\x96\xfb\xb6\xcd\x13\x91\x3b\xc2"
|
|
|
|
"\xd2\xa3\x31\x8d\xa4\xcd\x57\xcd"
|
|
|
|
"\x13\x3d\x64\xfd\x06\xce\xe6\xdc"
|
|
|
|
"\x0c\x24\x43\x31\x40\x57\xf1\x72"
|
|
|
|
"\x17\xe3\x3a\x63\x6d\x35\xcf\x5d"
|
|
|
|
"\x97\x40\x59\xdd\xf7\x3c\x02\xf7"
|
|
|
|
"\x1c\x7e\x05\xbb\xa9\x0d\x01\xb1"
|
|
|
|
"\x8e\xc0\x30\xa9\x53\x24\xc9\x89"
|
|
|
|
"\x84\x6d\xaa\xd0\xcd\x91\xc2\x4d"
|
|
|
|
"\x91\xb0\x89\xe2\xbf\x83\x44\xaa"
|
|
|
|
"\x28\x72\x23\xa0\xc2\xad\xad\x1c"
|
|
|
|
"\xfc\x3f\x09\x7a\x0b\xdc\xc5\x1b"
|
|
|
|
"\x87\x13\xc6\x5b\x59\x8d\xf2\xc8"
|
|
|
|
"\xaf\xdf\x11\x95",
|
|
|
|
.rlen = 4100,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* CTS (Cipher Text Stealing) mode tests
|
|
|
|
*/
|
|
|
|
#define CTS_MODE_ENC_TEST_VECTORS 6
|
|
|
|
#define CTS_MODE_DEC_TEST_VECTORS 6
|
|
|
|
static struct cipher_testvec cts_mode_enc_tv_template[] = {
|
|
|
|
{ /* from rfc3962 */
|
|
|
|
.klen = 16,
|
|
|
|
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
|
|
|
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
|
|
|
.ilen = 17,
|
|
|
|
.input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
|
|
|
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
|
|
|
"\x20",
|
|
|
|
.rlen = 17,
|
|
|
|
.result = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
|
|
|
|
"\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
|
|
|
|
"\x97",
|
|
|
|
}, {
|
|
|
|
.klen = 16,
|
|
|
|
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
|
|
|
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
|
|
|
.ilen = 31,
|
|
|
|
.input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
|
|
|
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
|
|
|
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
|
|
|
"\x20\x47\x61\x75\x27\x73\x20",
|
|
|
|
.rlen = 31,
|
|
|
|
.result = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
|
|
|
|
"\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
|
|
|
|
"\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
|
|
|
"\xc0\x7b\x25\xe2\x5e\xcf\xe5",
|
|
|
|
}, {
|
|
|
|
.klen = 16,
|
|
|
|
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
|
|
|
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
|
|
|
.ilen = 32,
|
|
|
|
.input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
|
|
|
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
|
|
|
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
|
|
|
"\x20\x47\x61\x75\x27\x73\x20\x43",
|
|
|
|
.rlen = 32,
|
|
|
|
.result = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
|
|
|
"\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
|
|
|
|
"\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
|
|
|
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
|
|
|
|
}, {
|
|
|
|
.klen = 16,
|
|
|
|
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
|
|
|
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
|
|
|
.ilen = 47,
|
|
|
|
.input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
|
|
|
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
|
|
|
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
|
|
|
"\x20\x47\x61\x75\x27\x73\x20\x43"
|
|
|
|
"\x68\x69\x63\x6b\x65\x6e\x2c\x20"
|
|
|
|
"\x70\x6c\x65\x61\x73\x65\x2c",
|
|
|
|
.rlen = 47,
|
|
|
|
.result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
|
|
|
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
|
|
|
|
"\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
|
|
|
|
"\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
|
|
|
|
"\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
|
|
|
"\xbe\x7f\xcb\xcc\x98\xeb\xf5",
|
|
|
|
}, {
|
|
|
|
.klen = 16,
|
|
|
|
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
|
|
|
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
|
|
|
.ilen = 48,
|
|
|
|
.input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
|
|
|
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
|
|
|
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
|
|
|
"\x20\x47\x61\x75\x27\x73\x20\x43"
|
|
|
|
"\x68\x69\x63\x6b\x65\x6e\x2c\x20"
|
|
|
|
"\x70\x6c\x65\x61\x73\x65\x2c\x20",
|
|
|
|
.rlen = 48,
|
|
|
|
.result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
|
|
|
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
|
|
|
|
"\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
|
|
|
|
"\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
|
|
|
|
"\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
|
|
|
"\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
|
|
|
|
}, {
|
|
|
|
.klen = 16,
|
|
|
|
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
|
|
|
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
|
|
|
.ilen = 64,
|
|
|
|
.input = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
|
|
|
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
|
|
|
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
|
|
|
"\x20\x47\x61\x75\x27\x73\x20\x43"
|
|
|
|
"\x68\x69\x63\x6b\x65\x6e\x2c\x20"
|
|
|
|
"\x70\x6c\x65\x61\x73\x65\x2c\x20"
|
|
|
|
"\x61\x6e\x64\x20\x77\x6f\x6e\x74"
|
|
|
|
"\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
|
|
|
|
.rlen = 64,
|
|
|
|
.result = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
|
|
|
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
|
|
|
|
"\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
|
|
|
"\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
|
|
|
|
"\x48\x07\xef\xe8\x36\xee\x89\xa5"
|
|
|
|
"\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
|
|
|
|
"\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
|
|
|
|
"\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct cipher_testvec cts_mode_dec_tv_template[] = {
|
|
|
|
{ /* from rfc3962 */
|
|
|
|
.klen = 16,
|
|
|
|
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
|
|
|
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
|
|
|
.rlen = 17,
|
|
|
|
.result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
|
|
|
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
|
|
|
"\x20",
|
|
|
|
.ilen = 17,
|
|
|
|
.input = "\xc6\x35\x35\x68\xf2\xbf\x8c\xb4"
|
|
|
|
"\xd8\xa5\x80\x36\x2d\xa7\xff\x7f"
|
|
|
|
"\x97",
|
|
|
|
}, {
|
|
|
|
.klen = 16,
|
|
|
|
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
|
|
|
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
|
|
|
.rlen = 31,
|
|
|
|
.result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
|
|
|
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
|
|
|
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
|
|
|
"\x20\x47\x61\x75\x27\x73\x20",
|
|
|
|
.ilen = 31,
|
|
|
|
.input = "\xfc\x00\x78\x3e\x0e\xfd\xb2\xc1"
|
|
|
|
"\xd4\x45\xd4\xc8\xef\xf7\xed\x22"
|
|
|
|
"\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
|
|
|
"\xc0\x7b\x25\xe2\x5e\xcf\xe5",
|
|
|
|
}, {
|
|
|
|
.klen = 16,
|
|
|
|
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
|
|
|
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
|
|
|
.rlen = 32,
|
|
|
|
.result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
|
|
|
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
|
|
|
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
|
|
|
"\x20\x47\x61\x75\x27\x73\x20\x43",
|
|
|
|
.ilen = 32,
|
|
|
|
.input = "\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
|
|
|
"\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
|
|
|
|
"\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
|
|
|
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84",
|
|
|
|
}, {
|
|
|
|
.klen = 16,
|
|
|
|
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
|
|
|
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
|
|
|
.rlen = 47,
|
|
|
|
.result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
|
|
|
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
|
|
|
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
|
|
|
"\x20\x47\x61\x75\x27\x73\x20\x43"
|
|
|
|
"\x68\x69\x63\x6b\x65\x6e\x2c\x20"
|
|
|
|
"\x70\x6c\x65\x61\x73\x65\x2c",
|
|
|
|
.ilen = 47,
|
|
|
|
.input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
|
|
|
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
|
|
|
|
"\xb3\xff\xfd\x94\x0c\x16\xa1\x8c"
|
|
|
|
"\x1b\x55\x49\xd2\xf8\x38\x02\x9e"
|
|
|
|
"\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
|
|
|
"\xbe\x7f\xcb\xcc\x98\xeb\xf5",
|
|
|
|
}, {
|
|
|
|
.klen = 16,
|
|
|
|
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
|
|
|
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
|
|
|
.rlen = 48,
|
|
|
|
.result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
|
|
|
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
|
|
|
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
|
|
|
"\x20\x47\x61\x75\x27\x73\x20\x43"
|
|
|
|
"\x68\x69\x63\x6b\x65\x6e\x2c\x20"
|
|
|
|
"\x70\x6c\x65\x61\x73\x65\x2c\x20",
|
|
|
|
.ilen = 48,
|
|
|
|
.input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
|
|
|
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
|
|
|
|
"\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
|
|
|
|
"\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8"
|
|
|
|
"\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
|
|
|
"\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8",
|
|
|
|
}, {
|
|
|
|
.klen = 16,
|
|
|
|
.key = "\x63\x68\x69\x63\x6b\x65\x6e\x20"
|
|
|
|
"\x74\x65\x72\x69\x79\x61\x6b\x69",
|
|
|
|
.rlen = 64,
|
|
|
|
.result = "\x49\x20\x77\x6f\x75\x6c\x64\x20"
|
|
|
|
"\x6c\x69\x6b\x65\x20\x74\x68\x65"
|
|
|
|
"\x20\x47\x65\x6e\x65\x72\x61\x6c"
|
|
|
|
"\x20\x47\x61\x75\x27\x73\x20\x43"
|
|
|
|
"\x68\x69\x63\x6b\x65\x6e\x2c\x20"
|
|
|
|
"\x70\x6c\x65\x61\x73\x65\x2c\x20"
|
|
|
|
"\x61\x6e\x64\x20\x77\x6f\x6e\x74"
|
|
|
|
"\x6f\x6e\x20\x73\x6f\x75\x70\x2e",
|
|
|
|
.ilen = 64,
|
|
|
|
.input = "\x97\x68\x72\x68\xd6\xec\xcc\xc0"
|
|
|
|
"\xc0\x7b\x25\xe2\x5e\xcf\xe5\x84"
|
|
|
|
"\x39\x31\x25\x23\xa7\x86\x62\xd5"
|
|
|
|
"\xbe\x7f\xcb\xcc\x98\xeb\xf5\xa8"
|
|
|
|
"\x48\x07\xef\xe8\x36\xee\x89\xa5"
|
|
|
|
"\x26\x73\x0d\xbc\x2f\x7b\xc8\x40"
|
|
|
|
"\x9d\xad\x8b\xbb\x96\xc4\xcd\xc0"
|
|
|
|
"\x3b\xc1\x03\xe1\xa1\x94\xbb\xd8",
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Compression stuff.
|
|
|
|
*/
|
|
|
|
#define COMP_BUF_SIZE 512
|
|
|
|
|
|
|
|
struct comp_testvec {
|
|
|
|
int inlen, outlen;
|
|
|
|
char input[COMP_BUF_SIZE];
|
|
|
|
char output[COMP_BUF_SIZE];
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Deflate test vectors (null-terminated strings).
|
|
|
|
* Params: winbits=11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL.
|
|
|
|
*/
|
|
|
|
#define DEFLATE_COMP_TEST_VECTORS 2
|
|
|
|
#define DEFLATE_DECOMP_TEST_VECTORS 2
|
|
|
|
|
|
|
|
static struct comp_testvec deflate_comp_tv_template[] = {
|
|
|
|
{
|
|
|
|
.inlen = 70,
|
|
|
|
.outlen = 38,
|
|
|
|
.input = "Join us now and share the software "
|
|
|
|
"Join us now and share the software ",
|
|
|
|
.output = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
|
|
|
|
"\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
|
|
|
|
"\x28\xce\x48\x2c\x4a\x55\x28\xc9"
|
|
|
|
"\x48\x55\x28\xce\x4f\x2b\x29\x07"
|
|
|
|
"\x71\xbc\x08\x2b\x01\x00",
|
|
|
|
}, {
|
|
|
|
.inlen = 191,
|
|
|
|
.outlen = 122,
|
|
|
|
.input = "This document describes a compression method based on the DEFLATE"
|
|
|
|
"compression algorithm. This document defines the application of "
|
|
|
|
"the DEFLATE algorithm to the IP Payload Compression Protocol.",
|
|
|
|
.output = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
|
|
|
|
"\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
|
|
|
|
"\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
|
|
|
|
"\x24\xdb\x67\xd9\x47\xc1\xef\x49"
|
|
|
|
"\x68\x12\x51\xae\x76\x67\xd6\x27"
|
|
|
|
"\x19\x88\x1a\xde\x85\xab\x21\xf2"
|
|
|
|
"\x08\x5d\x16\x1e\x20\x04\x2d\xad"
|
|
|
|
"\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
|
|
|
|
"\x42\x83\x23\xb6\x6c\x89\x71\x9b"
|
|
|
|
"\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
|
|
|
|
"\xed\x62\xa9\x4c\x80\xff\x13\xaf"
|
|
|
|
"\x52\x37\xed\x0e\x52\x6b\x59\x02"
|
|
|
|
"\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
|
|
|
|
"\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
|
|
|
|
"\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
|
|
|
|
"\xfa\x02",
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct comp_testvec deflate_decomp_tv_template[] = {
|
|
|
|
{
|
|
|
|
.inlen = 122,
|
|
|
|
.outlen = 191,
|
|
|
|
.input = "\x5d\x8d\x31\x0e\xc2\x30\x10\x04"
|
|
|
|
"\xbf\xb2\x2f\xc8\x1f\x10\x04\x09"
|
|
|
|
"\x89\xc2\x85\x3f\x70\xb1\x2f\xf8"
|
|
|
|
"\x24\xdb\x67\xd9\x47\xc1\xef\x49"
|
|
|
|
"\x68\x12\x51\xae\x76\x67\xd6\x27"
|
|
|
|
"\x19\x88\x1a\xde\x85\xab\x21\xf2"
|
|
|
|
"\x08\x5d\x16\x1e\x20\x04\x2d\xad"
|
|
|
|
"\xf3\x18\xa2\x15\x85\x2d\x69\xc4"
|
|
|
|
"\x42\x83\x23\xb6\x6c\x89\x71\x9b"
|
|
|
|
"\xef\xcf\x8b\x9f\xcf\x33\xca\x2f"
|
|
|
|
"\xed\x62\xa9\x4c\x80\xff\x13\xaf"
|
|
|
|
"\x52\x37\xed\x0e\x52\x6b\x59\x02"
|
|
|
|
"\xd9\x4e\xe8\x7a\x76\x1d\x02\x98"
|
|
|
|
"\xfe\x8a\x87\x83\xa3\x4f\x56\x8a"
|
|
|
|
"\xb8\x9e\x8e\x5c\x57\xd3\xa0\x79"
|
|
|
|
"\xfa\x02",
|
|
|
|
.output = "This document describes a compression method based on the DEFLATE"
|
|
|
|
"compression algorithm. This document defines the application of "
|
|
|
|
"the DEFLATE algorithm to the IP Payload Compression Protocol.",
|
|
|
|
}, {
|
|
|
|
.inlen = 38,
|
|
|
|
.outlen = 70,
|
|
|
|
.input = "\xf3\xca\xcf\xcc\x53\x28\x2d\x56"
|
|
|
|
"\xc8\xcb\x2f\x57\x48\xcc\x4b\x51"
|
|
|
|
"\x28\xce\x48\x2c\x4a\x55\x28\xc9"
|
|
|
|
"\x48\x55\x28\xce\x4f\x2b\x29\x07"
|
|
|
|
"\x71\xbc\x08\x2b\x01\x00",
|
|
|
|
.output = "Join us now and share the software "
|
|
|
|
"Join us now and share the software ",
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* LZO test vectors (null-terminated strings).
|
|
|
|
*/
|
|
|
|
#define LZO_COMP_TEST_VECTORS 2
|
|
|
|
#define LZO_DECOMP_TEST_VECTORS 2
|
|
|
|
|
|
|
|
static struct comp_testvec lzo_comp_tv_template[] = {
|
|
|
|
{
|
|
|
|
.inlen = 70,
|
|
|
|
.outlen = 46,
|
|
|
|
.input = "Join us now and share the software "
|
|
|
|
"Join us now and share the software ",
|
|
|
|
.output = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
|
|
|
|
"\x73\x20\x6e\x6f\x77\x20\x61\x6e"
|
|
|
|
"\x64\x20\x73\x68\x61\x72\x65\x20"
|
|
|
|
"\x74\x68\x65\x20\x73\x6f\x66\x74"
|
|
|
|
"\x77\x70\x01\x01\x4a\x6f\x69\x6e"
|
|
|
|
"\x3d\x88\x00\x11\x00\x00",
|
|
|
|
}, {
|
|
|
|
.inlen = 159,
|
|
|
|
.outlen = 133,
|
|
|
|
.input = "This document describes a compression method based on the LZO "
|
|
|
|
"compression algorithm. This document defines the application of "
|
|
|
|
"the LZO algorithm used in UBIFS.",
|
|
|
|
.output = "\x00\x2b\x54\x68\x69\x73\x20\x64"
|
|
|
|
"\x6f\x63\x75\x6d\x65\x6e\x74\x20"
|
|
|
|
"\x64\x65\x73\x63\x72\x69\x62\x65"
|
|
|
|
"\x73\x20\x61\x20\x63\x6f\x6d\x70"
|
|
|
|
"\x72\x65\x73\x73\x69\x6f\x6e\x20"
|
|
|
|
"\x6d\x65\x74\x68\x6f\x64\x20\x62"
|
|
|
|
"\x61\x73\x65\x64\x20\x6f\x6e\x20"
|
|
|
|
"\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
|
|
|
|
"\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
|
|
|
|
"\x69\x74\x68\x6d\x2e\x20\x20\x54"
|
|
|
|
"\x68\x69\x73\x2a\x54\x01\x02\x66"
|
|
|
|
"\x69\x6e\x65\x73\x94\x06\x05\x61"
|
|
|
|
"\x70\x70\x6c\x69\x63\x61\x74\x76"
|
|
|
|
"\x0a\x6f\x66\x88\x02\x60\x09\x27"
|
|
|
|
"\xf0\x00\x0c\x20\x75\x73\x65\x64"
|
|
|
|
"\x20\x69\x6e\x20\x55\x42\x49\x46"
|
|
|
|
"\x53\x2e\x11\x00\x00",
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
static struct comp_testvec lzo_decomp_tv_template[] = {
|
|
|
|
{
|
|
|
|
.inlen = 133,
|
|
|
|
.outlen = 159,
|
|
|
|
.input = "\x00\x2b\x54\x68\x69\x73\x20\x64"
|
|
|
|
"\x6f\x63\x75\x6d\x65\x6e\x74\x20"
|
|
|
|
"\x64\x65\x73\x63\x72\x69\x62\x65"
|
|
|
|
"\x73\x20\x61\x20\x63\x6f\x6d\x70"
|
|
|
|
"\x72\x65\x73\x73\x69\x6f\x6e\x20"
|
|
|
|
"\x6d\x65\x74\x68\x6f\x64\x20\x62"
|
|
|
|
"\x61\x73\x65\x64\x20\x6f\x6e\x20"
|
|
|
|
"\x74\x68\x65\x20\x4c\x5a\x4f\x2b"
|
|
|
|
"\x8c\x00\x0d\x61\x6c\x67\x6f\x72"
|
|
|
|
"\x69\x74\x68\x6d\x2e\x20\x20\x54"
|
|
|
|
"\x68\x69\x73\x2a\x54\x01\x02\x66"
|
|
|
|
"\x69\x6e\x65\x73\x94\x06\x05\x61"
|
|
|
|
"\x70\x70\x6c\x69\x63\x61\x74\x76"
|
|
|
|
"\x0a\x6f\x66\x88\x02\x60\x09\x27"
|
|
|
|
"\xf0\x00\x0c\x20\x75\x73\x65\x64"
|
|
|
|
"\x20\x69\x6e\x20\x55\x42\x49\x46"
|
|
|
|
"\x53\x2e\x11\x00\x00",
|
|
|
|
.output = "This document describes a compression method based on the LZO "
|
|
|
|
"compression algorithm. This document defines the application of "
|
|
|
|
"the LZO algorithm used in UBIFS.",
|
|
|
|
}, {
|
|
|
|
.inlen = 46,
|
|
|
|
.outlen = 70,
|
|
|
|
.input = "\x00\x0d\x4a\x6f\x69\x6e\x20\x75"
|
|
|
|
"\x73\x20\x6e\x6f\x77\x20\x61\x6e"
|
|
|
|
"\x64\x20\x73\x68\x61\x72\x65\x20"
|
|
|
|
"\x74\x68\x65\x20\x73\x6f\x66\x74"
|
|
|
|
"\x77\x70\x01\x01\x4a\x6f\x69\x6e"
|
|
|
|
"\x3d\x88\x00\x11\x00\x00",
|
|
|
|
.output = "Join us now and share the software "
|
|
|
|
"Join us now and share the software ",
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Michael MIC test vectors from IEEE 802.11i
|
|
|
|
*/
|
|
|
|
#define MICHAEL_MIC_TEST_VECTORS 6
|
|
|
|
|
|
|
|
static struct hash_testvec michael_mic_tv_template[] = {
|
|
|
|
{
|
|
|
|
.key = "\x00\x00\x00\x00\x00\x00\x00\x00",
|
|
|
|
.ksize = 8,
|
|
|
|
.plaintext = zeroed_string,
|
|
|
|
.psize = 0,
|
|
|
|
.digest = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\x82\x92\x5c\x1c\xa1\xd1\x30\xb8",
|
|
|
|
.ksize = 8,
|
|
|
|
.plaintext = "M",
|
|
|
|
.psize = 1,
|
|
|
|
.digest = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\x43\x47\x21\xca\x40\x63\x9b\x3f",
|
|
|
|
.ksize = 8,
|
|
|
|
.plaintext = "Mi",
|
|
|
|
.psize = 2,
|
|
|
|
.digest = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\xe8\xf9\xbe\xca\xe9\x7e\x5d\x29",
|
|
|
|
.ksize = 8,
|
|
|
|
.plaintext = "Mic",
|
|
|
|
.psize = 3,
|
|
|
|
.digest = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\x90\x03\x8f\xc6\xcf\x13\xc1\xdb",
|
|
|
|
.ksize = 8,
|
|
|
|
.plaintext = "Mich",
|
|
|
|
.psize = 4,
|
|
|
|
.digest = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\xd5\x5e\x10\x05\x10\x12\x89\x86",
|
|
|
|
.ksize = 8,
|
|
|
|
.plaintext = "Michael",
|
|
|
|
.psize = 7,
|
|
|
|
.digest = "\x0a\x94\x2b\x12\x4e\xca\xa5\x46",
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* CRC32C test vectors
|
|
|
|
*/
|
|
|
|
#define CRC32C_TEST_VECTORS 14
|
|
|
|
|
|
|
|
static struct hash_testvec crc32c_tv_template[] = {
|
|
|
|
{
|
|
|
|
.psize = 0,
|
|
|
|
.digest = "\x00\x00\x00\x00",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\x87\xa9\xcb\xed",
|
|
|
|
.ksize = 4,
|
|
|
|
.psize = 0,
|
|
|
|
.digest = "\x78\x56\x34\x12",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\xff\xff\xff\xff",
|
|
|
|
.ksize = 4,
|
|
|
|
.plaintext = "\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",
|
|
|
|
.psize = 40,
|
|
|
|
.digest = "\x7f\x15\x2c\x0e",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\xff\xff\xff\xff",
|
|
|
|
.ksize = 4,
|
|
|
|
.plaintext = "\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",
|
|
|
|
.psize = 40,
|
|
|
|
.digest = "\xf6\xeb\x80\xe9",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\xff\xff\xff\xff",
|
|
|
|
.ksize = 4,
|
|
|
|
.plaintext = "\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",
|
|
|
|
.psize = 40,
|
|
|
|
.digest = "\xed\xbd\x74\xde",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\xff\xff\xff\xff",
|
|
|
|
.ksize = 4,
|
|
|
|
.plaintext = "\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",
|
|
|
|
.psize = 40,
|
|
|
|
.digest = "\x62\xc8\x79\xd5",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\xff\xff\xff\xff",
|
|
|
|
.ksize = 4,
|
|
|
|
.plaintext = "\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",
|
|
|
|
.psize = 40,
|
|
|
|
.digest = "\xd0\x9a\x97\xba",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\xff\xff\xff\xff",
|
|
|
|
.ksize = 4,
|
|
|
|
.plaintext = "\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",
|
|
|
|
.psize = 40,
|
|
|
|
.digest = "\x13\xd9\x29\x2b",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\x80\xea\xd3\xf1",
|
|
|
|
.ksize = 4,
|
|
|
|
.plaintext = "\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",
|
|
|
|
.psize = 40,
|
|
|
|
.digest = "\x0c\xb5\xe2\xa2",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\xf3\x4a\x1d\x5d",
|
|
|
|
.ksize = 4,
|
|
|
|
.plaintext = "\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",
|
|
|
|
.psize = 40,
|
|
|
|
.digest = "\xd1\x7f\xfb\xa6",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\x2e\x80\x04\x59",
|
|
|
|
.ksize = 4,
|
|
|
|
.plaintext = "\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",
|
|
|
|
.psize = 40,
|
|
|
|
.digest = "\x59\x33\xe6\x7a",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\xa6\xcc\x19\x85",
|
|
|
|
.ksize = 4,
|
|
|
|
.plaintext = "\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",
|
|
|
|
.psize = 40,
|
|
|
|
.digest = "\xbe\x03\x01\xd2",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\x41\xfc\xfe\x2d",
|
|
|
|
.ksize = 4,
|
|
|
|
.plaintext = "\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",
|
|
|
|
.psize = 40,
|
|
|
|
.digest = "\x75\xd3\xc5\x24",
|
|
|
|
},
|
|
|
|
{
|
|
|
|
.key = "\xff\xff\xff\xff",
|
|
|
|
.ksize = 4,
|
|
|
|
.plaintext = "\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",
|
|
|
|
.psize = 240,
|
|
|
|
.digest = "\x75\xd3\xc5\x24",
|
|
|
|
.np = 2,
|
|
|
|
.tap = { 31, 209 }
|
|
|
|
},
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Cipher speed tests
|
|
|
|
*/
|
|
|
|
static u8 speed_template_8[] = {8, 0};
|
|
|
|
static u8 speed_template_24[] = {24, 0};
|
|
|
|
static u8 speed_template_8_32[] = {8, 32, 0};
|
|
|
|
static u8 speed_template_16_32[] = {16, 32, 0};
|
|
|
|
static u8 speed_template_16_24_32[] = {16, 24, 32, 0};
|
|
|
|
static u8 speed_template_32_40_48[] = {32, 40, 48, 0};
|
|
|
|
static u8 speed_template_32_48_64[] = {32, 48, 64, 0};
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Digest speed tests
|
|
|
|
*/
|
|
|
|
static struct hash_speed generic_hash_speed_template[] = {
|
|
|
|
{ .blen = 16, .plen = 16, },
|
|
|
|
{ .blen = 64, .plen = 16, },
|
|
|
|
{ .blen = 64, .plen = 64, },
|
|
|
|
{ .blen = 256, .plen = 16, },
|
|
|
|
{ .blen = 256, .plen = 64, },
|
|
|
|
{ .blen = 256, .plen = 256, },
|
|
|
|
{ .blen = 1024, .plen = 16, },
|
|
|
|
{ .blen = 1024, .plen = 256, },
|
|
|
|
{ .blen = 1024, .plen = 1024, },
|
|
|
|
{ .blen = 2048, .plen = 16, },
|
|
|
|
{ .blen = 2048, .plen = 256, },
|
|
|
|
{ .blen = 2048, .plen = 1024, },
|
|
|
|
{ .blen = 2048, .plen = 2048, },
|
|
|
|
{ .blen = 4096, .plen = 16, },
|
|
|
|
{ .blen = 4096, .plen = 256, },
|
|
|
|
{ .blen = 4096, .plen = 1024, },
|
|
|
|
{ .blen = 4096, .plen = 4096, },
|
|
|
|
{ .blen = 8192, .plen = 16, },
|
|
|
|
{ .blen = 8192, .plen = 256, },
|
|
|
|
{ .blen = 8192, .plen = 1024, },
|
|
|
|
{ .blen = 8192, .plen = 4096, },
|
|
|
|
{ .blen = 8192, .plen = 8192, },
|
|
|
|
|
|
|
|
/* End marker */
|
|
|
|
{ .blen = 0, .plen = 0, }
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* _CRYPTO_TCRYPT_H */
|