PageRenderTime 77ms CodeModel.GetById 6ms app.highlight 39ms RepoModel.GetById 0ms app.codeStats 1ms

/crypto/testmgr.h

https://bitbucket.org/abioy/linux
C Header | 9555 lines | 9183 code | 190 blank | 182 comment | 0 complexity | cabf10221da7621ef57f0015bd45d0ed MD5 | raw file
Possible License(s): CC-BY-SA-3.0, GPL-2.0, LGPL-2.0, AGPL-1.0

Large files files are truncated, but you can click here to view the full file

   1/*
   2 * Algorithm testing framework and tests.
   3 *
   4 * Copyright (c) 2002 James Morris <jmorris@intercode.com.au>
   5 * Copyright (c) 2002 Jean-Francois Dive <jef@linuxbe.org>
   6 * Copyright (c) 2007 Nokia Siemens Networks
   7 * Copyright (c) 2008 Herbert Xu <herbert@gondor.apana.org.au>
   8 *
   9 * This program is free software; you can redistribute it and/or modify it
  10 * under the terms of the GNU General Public License as published by the Free
  11 * Software Foundation; either version 2 of the License, or (at your option)
  12 * any later version.
  13 *
  14 */
  15#ifndef _CRYPTO_TESTMGR_H
  16#define _CRYPTO_TESTMGR_H
  17
  18#include <linux/netlink.h>
  19#include <linux/zlib.h>
  20
  21#include <crypto/compress.h>
  22
  23#define MAX_DIGEST_SIZE		64
  24#define MAX_TAP			8
  25
  26#define MAX_KEYLEN		56
  27#define MAX_IVLEN		32
  28
  29struct hash_testvec {
  30	/* only used with keyed hash algorithms */
  31	char *key;
  32	char *plaintext;
  33	char *digest;
  34	unsigned char tap[MAX_TAP];
  35	unsigned char psize;
  36	unsigned char np;
  37	unsigned char ksize;
  38};
  39
  40struct cipher_testvec {
  41	char *key;
  42	char *iv;
  43	char *input;
  44	char *result;
  45	unsigned short tap[MAX_TAP];
  46	int np;
  47	unsigned char fail;
  48	unsigned char wk; /* weak key flag */
  49	unsigned char klen;
  50	unsigned short ilen;
  51	unsigned short rlen;
  52};
  53
  54struct aead_testvec {
  55	char *key;
  56	char *iv;
  57	char *input;
  58	char *assoc;
  59	char *result;
  60	unsigned char tap[MAX_TAP];
  61	unsigned char atap[MAX_TAP];
  62	int np;
  63	int anp;
  64	unsigned char fail;
  65	unsigned char novrfy;	/* ccm dec verification failure expected */
  66	unsigned char wk; /* weak key flag */
  67	unsigned char klen;
  68	unsigned short ilen;
  69	unsigned short alen;
  70	unsigned short rlen;
  71};
  72
  73struct cprng_testvec {
  74	char *key;
  75	char *dt;
  76	char *v;
  77	char *result;
  78	unsigned char klen;
  79	unsigned short dtlen;
  80	unsigned short vlen;
  81	unsigned short rlen;
  82	unsigned short loops;
  83};
  84
  85static char zeroed_string[48];
  86
  87/*
  88 * MD4 test vectors from RFC1320
  89 */
  90#define MD4_TEST_VECTORS	7
  91
  92static struct hash_testvec md4_tv_template [] = {
  93	{
  94		.plaintext = "",
  95		.digest	= "\x31\xd6\xcf\xe0\xd1\x6a\xe9\x31"
  96			  "\xb7\x3c\x59\xd7\xe0\xc0\x89\xc0",
  97	}, {
  98		.plaintext = "a",
  99		.psize	= 1,
 100		.digest	= "\xbd\xe5\x2c\xb3\x1d\xe3\x3e\x46"
 101			  "\x24\x5e\x05\xfb\xdb\xd6\xfb\x24",
 102	}, {
 103		.plaintext = "abc",
 104		.psize	= 3,
 105		.digest	= "\xa4\x48\x01\x7a\xaf\x21\xd8\x52"
 106			  "\x5f\xc1\x0a\xe8\x7a\xa6\x72\x9d",
 107	}, {
 108		.plaintext = "message digest",
 109		.psize	= 14,
 110		.digest	= "\xd9\x13\x0a\x81\x64\x54\x9f\xe8"
 111			"\x18\x87\x48\x06\xe1\xc7\x01\x4b",
 112	}, {
 113		.plaintext = "abcdefghijklmnopqrstuvwxyz",
 114		.psize	= 26,
 115		.digest	= "\xd7\x9e\x1c\x30\x8a\xa5\xbb\xcd"
 116			  "\xee\xa8\xed\x63\xdf\x41\x2d\xa9",
 117		.np	= 2,
 118		.tap	= { 13, 13 },
 119	}, {
 120		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
 121		.psize	= 62,
 122		.digest	= "\x04\x3f\x85\x82\xf2\x41\xdb\x35"
 123			  "\x1c\xe6\x27\xe1\x53\xe7\xf0\xe4",
 124	}, {
 125		.plaintext = "123456789012345678901234567890123456789012345678901234567890123"
 126			   "45678901234567890",
 127		.psize	= 80,
 128		.digest	= "\xe3\x3b\x4d\xdc\x9c\x38\xf2\x19"
 129			  "\x9c\x3e\x7b\x16\x4f\xcc\x05\x36",
 130	},
 131};
 132
 133/*
 134 * MD5 test vectors from RFC1321
 135 */
 136#define MD5_TEST_VECTORS	7
 137
 138static struct hash_testvec md5_tv_template[] = {
 139	{
 140		.digest	= "\xd4\x1d\x8c\xd9\x8f\x00\xb2\x04"
 141			  "\xe9\x80\x09\x98\xec\xf8\x42\x7e",
 142	}, {
 143		.plaintext = "a",
 144		.psize	= 1,
 145		.digest	= "\x0c\xc1\x75\xb9\xc0\xf1\xb6\xa8"
 146			  "\x31\xc3\x99\xe2\x69\x77\x26\x61",
 147	}, {
 148		.plaintext = "abc",
 149		.psize	= 3,
 150		.digest	= "\x90\x01\x50\x98\x3c\xd2\x4f\xb0"
 151			  "\xd6\x96\x3f\x7d\x28\xe1\x7f\x72",
 152	}, {
 153		.plaintext = "message digest",
 154		.psize	= 14,
 155		.digest	= "\xf9\x6b\x69\x7d\x7c\xb7\x93\x8d"
 156			  "\x52\x5a\x2f\x31\xaa\xf1\x61\xd0",
 157	}, {
 158		.plaintext = "abcdefghijklmnopqrstuvwxyz",
 159		.psize	= 26,
 160		.digest	= "\xc3\xfc\xd3\xd7\x61\x92\xe4\x00"
 161			  "\x7d\xfb\x49\x6c\xca\x67\xe1\x3b",
 162		.np	= 2,
 163		.tap	= {13, 13}
 164	}, {
 165		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
 166		.psize	= 62,
 167		.digest	= "\xd1\x74\xab\x98\xd2\x77\xd9\xf5"
 168			  "\xa5\x61\x1c\x2c\x9f\x41\x9d\x9f",
 169	}, {
 170		.plaintext = "12345678901234567890123456789012345678901234567890123456789012"
 171			   "345678901234567890",
 172		.psize	= 80,
 173		.digest	= "\x57\xed\xf4\xa2\x2b\xe3\xc9\x55"
 174			  "\xac\x49\xda\x2e\x21\x07\xb6\x7a",
 175	}
 176
 177};
 178
 179/*
 180 * RIPEMD-128 test vectors from ISO/IEC 10118-3:2004(E)
 181 */
 182#define RMD128_TEST_VECTORS     10
 183
 184static struct hash_testvec rmd128_tv_template[] = {
 185	{
 186		.digest	= "\xcd\xf2\x62\x13\xa1\x50\xdc\x3e"
 187			  "\xcb\x61\x0f\x18\xf6\xb3\x8b\x46",
 188	}, {
 189		.plaintext = "a",
 190		.psize	= 1,
 191		.digest	= "\x86\xbe\x7a\xfa\x33\x9d\x0f\xc7"
 192			  "\xcf\xc7\x85\xe7\x2f\x57\x8d\x33",
 193	}, {
 194		.plaintext = "abc",
 195		.psize	= 3,
 196		.digest	= "\xc1\x4a\x12\x19\x9c\x66\xe4\xba"
 197			  "\x84\x63\x6b\x0f\x69\x14\x4c\x77",
 198	}, {
 199		.plaintext = "message digest",
 200		.psize	= 14,
 201		.digest	= "\x9e\x32\x7b\x3d\x6e\x52\x30\x62"
 202			  "\xaf\xc1\x13\x2d\x7d\xf9\xd1\xb8",
 203	}, {
 204		.plaintext = "abcdefghijklmnopqrstuvwxyz",
 205		.psize	= 26,
 206		.digest	= "\xfd\x2a\xa6\x07\xf7\x1d\xc8\xf5"
 207			  "\x10\x71\x49\x22\xb3\x71\x83\x4e",
 208	}, {
 209		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
 210			     "fghijklmnopqrstuvwxyz0123456789",
 211		.psize	= 62,
 212		.digest	= "\xd1\xe9\x59\xeb\x17\x9c\x91\x1f"
 213			  "\xae\xa4\x62\x4c\x60\xc5\xc7\x02",
 214	}, {
 215		.plaintext = "1234567890123456789012345678901234567890"
 216			     "1234567890123456789012345678901234567890",
 217		.psize	= 80,
 218		.digest	= "\x3f\x45\xef\x19\x47\x32\xc2\xdb"
 219			  "\xb2\xc4\xa2\xc7\x69\x79\x5f\xa3",
 220	}, {
 221		.plaintext = "abcdbcdecdefdefgefghfghighij"
 222			     "hijkijkljklmklmnlmnomnopnopq",
 223		.psize	= 56,
 224		.digest	= "\xa1\xaa\x06\x89\xd0\xfa\xfa\x2d"
 225			  "\xdc\x22\xe8\x8b\x49\x13\x3a\x06",
 226		.np	= 2,
 227		.tap	= { 28, 28 },
 228	}, {
 229		.plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghi"
 230			     "jklmghijklmnhijklmnoijklmnopjklmnopqklmnopqr"
 231			     "lmnopqrsmnopqrstnopqrstu",
 232		.psize	= 112,
 233		.digest	= "\xd4\xec\xc9\x13\xe1\xdf\x77\x6b"
 234			  "\xf4\x8d\xe9\xd5\x5b\x1f\x25\x46",
 235	}, {
 236		.plaintext = "abcdbcdecdefdefgefghfghighijhijk",
 237		.psize	= 32,
 238		.digest	= "\x13\xfc\x13\xe8\xef\xff\x34\x7d"
 239			  "\xe1\x93\xff\x46\xdb\xac\xcf\xd4",
 240	}
 241};
 242
 243/*
 244 * RIPEMD-160 test vectors from ISO/IEC 10118-3:2004(E)
 245 */
 246#define RMD160_TEST_VECTORS     10
 247
 248static struct hash_testvec rmd160_tv_template[] = {
 249	{
 250		.digest	= "\x9c\x11\x85\xa5\xc5\xe9\xfc\x54\x61\x28"
 251			  "\x08\x97\x7e\xe8\xf5\x48\xb2\x25\x8d\x31",
 252	}, {
 253		.plaintext = "a",
 254		.psize	= 1,
 255		.digest	= "\x0b\xdc\x9d\x2d\x25\x6b\x3e\xe9\xda\xae"
 256			  "\x34\x7b\xe6\xf4\xdc\x83\x5a\x46\x7f\xfe",
 257	}, {
 258		.plaintext = "abc",
 259		.psize	= 3,
 260		.digest	= "\x8e\xb2\x08\xf7\xe0\x5d\x98\x7a\x9b\x04"
 261			  "\x4a\x8e\x98\xc6\xb0\x87\xf1\x5a\x0b\xfc",
 262	}, {
 263		.plaintext = "message digest",
 264		.psize	= 14,
 265		.digest	= "\x5d\x06\x89\xef\x49\xd2\xfa\xe5\x72\xb8"
 266			  "\x81\xb1\x23\xa8\x5f\xfa\x21\x59\x5f\x36",
 267	}, {
 268		.plaintext = "abcdefghijklmnopqrstuvwxyz",
 269		.psize	= 26,
 270		.digest	= "\xf7\x1c\x27\x10\x9c\x69\x2c\x1b\x56\xbb"
 271			  "\xdc\xeb\x5b\x9d\x28\x65\xb3\x70\x8d\xbc",
 272	}, {
 273		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
 274			     "fghijklmnopqrstuvwxyz0123456789",
 275		.psize	= 62,
 276		.digest	= "\xb0\xe2\x0b\x6e\x31\x16\x64\x02\x86\xed"
 277			  "\x3a\x87\xa5\x71\x30\x79\xb2\x1f\x51\x89",
 278	}, {
 279		.plaintext = "1234567890123456789012345678901234567890"
 280			     "1234567890123456789012345678901234567890",
 281		.psize	= 80,
 282		.digest	= "\x9b\x75\x2e\x45\x57\x3d\x4b\x39\xf4\xdb"
 283			  "\xd3\x32\x3c\xab\x82\xbf\x63\x32\x6b\xfb",
 284	}, {
 285		.plaintext = "abcdbcdecdefdefgefghfghighij"
 286			     "hijkijkljklmklmnlmnomnopnopq",
 287		.psize	= 56,
 288		.digest	= "\x12\xa0\x53\x38\x4a\x9c\x0c\x88\xe4\x05"
 289			  "\xa0\x6c\x27\xdc\xf4\x9a\xda\x62\xeb\x2b",
 290		.np	= 2,
 291		.tap	= { 28, 28 },
 292	}, {
 293		.plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghi"
 294			     "jklmghijklmnhijklmnoijklmnopjklmnopqklmnopqr"
 295			     "lmnopqrsmnopqrstnopqrstu",
 296		.psize	= 112,
 297		.digest	= "\x6f\x3f\xa3\x9b\x6b\x50\x3c\x38\x4f\x91"
 298			  "\x9a\x49\xa7\xaa\x5c\x2c\x08\xbd\xfb\x45",
 299	}, {
 300		.plaintext = "abcdbcdecdefdefgefghfghighijhijk",
 301		.psize	= 32,
 302		.digest	= "\x94\xc2\x64\x11\x54\x04\xe6\x33\x79\x0d"
 303			  "\xfc\xc8\x7b\x58\x7d\x36\x77\x06\x7d\x9f",
 304	}
 305};
 306
 307/*
 308 * RIPEMD-256 test vectors
 309 */
 310#define RMD256_TEST_VECTORS     8
 311
 312static struct hash_testvec rmd256_tv_template[] = {
 313	{
 314		.digest	= "\x02\xba\x4c\x4e\x5f\x8e\xcd\x18"
 315			  "\x77\xfc\x52\xd6\x4d\x30\xe3\x7a"
 316			  "\x2d\x97\x74\xfb\x1e\x5d\x02\x63"
 317			  "\x80\xae\x01\x68\xe3\xc5\x52\x2d",
 318	}, {
 319		.plaintext = "a",
 320		.psize	= 1,
 321		.digest	= "\xf9\x33\x3e\x45\xd8\x57\xf5\xd9"
 322			  "\x0a\x91\xba\xb7\x0a\x1e\xba\x0c"
 323			  "\xfb\x1b\xe4\xb0\x78\x3c\x9a\xcf"
 324			  "\xcd\x88\x3a\x91\x34\x69\x29\x25",
 325	}, {
 326		.plaintext = "abc",
 327		.psize	= 3,
 328		.digest	= "\xaf\xbd\x6e\x22\x8b\x9d\x8c\xbb"
 329			  "\xce\xf5\xca\x2d\x03\xe6\xdb\xa1"
 330			  "\x0a\xc0\xbc\x7d\xcb\xe4\x68\x0e"
 331			  "\x1e\x42\xd2\xe9\x75\x45\x9b\x65",
 332	}, {
 333		.plaintext = "message digest",
 334		.psize	= 14,
 335		.digest	= "\x87\xe9\x71\x75\x9a\x1c\xe4\x7a"
 336			  "\x51\x4d\x5c\x91\x4c\x39\x2c\x90"
 337			  "\x18\xc7\xc4\x6b\xc1\x44\x65\x55"
 338			  "\x4a\xfc\xdf\x54\xa5\x07\x0c\x0e",
 339	}, {
 340		.plaintext = "abcdefghijklmnopqrstuvwxyz",
 341		.psize	= 26,
 342		.digest	= "\x64\x9d\x30\x34\x75\x1e\xa2\x16"
 343			  "\x77\x6b\xf9\xa1\x8a\xcc\x81\xbc"
 344			  "\x78\x96\x11\x8a\x51\x97\x96\x87"
 345			  "\x82\xdd\x1f\xd9\x7d\x8d\x51\x33",
 346	}, {
 347		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
 348			     "fghijklmnopqrstuvwxyz0123456789",
 349		.psize	= 62,
 350		.digest	= "\x57\x40\xa4\x08\xac\x16\xb7\x20"
 351			  "\xb8\x44\x24\xae\x93\x1c\xbb\x1f"
 352			  "\xe3\x63\xd1\xd0\xbf\x40\x17\xf1"
 353			  "\xa8\x9f\x7e\xa6\xde\x77\xa0\xb8",
 354	}, {
 355		.plaintext = "1234567890123456789012345678901234567890"
 356			     "1234567890123456789012345678901234567890",
 357		.psize	= 80,
 358		.digest	= "\x06\xfd\xcc\x7a\x40\x95\x48\xaa"
 359			  "\xf9\x13\x68\xc0\x6a\x62\x75\xb5"
 360			  "\x53\xe3\xf0\x99\xbf\x0e\xa4\xed"
 361			  "\xfd\x67\x78\xdf\x89\xa8\x90\xdd",
 362	}, {
 363		.plaintext = "abcdbcdecdefdefgefghfghighij"
 364			     "hijkijkljklmklmnlmnomnopnopq",
 365		.psize	= 56,
 366		.digest	= "\x38\x43\x04\x55\x83\xaa\xc6\xc8"
 367			  "\xc8\xd9\x12\x85\x73\xe7\xa9\x80"
 368			  "\x9a\xfb\x2a\x0f\x34\xcc\xc3\x6e"
 369			  "\xa9\xe7\x2f\x16\xf6\x36\x8e\x3f",
 370		.np	= 2,
 371		.tap	= { 28, 28 },
 372	}
 373};
 374
 375/*
 376 * RIPEMD-320 test vectors
 377 */
 378#define RMD320_TEST_VECTORS     8
 379
 380static struct hash_testvec rmd320_tv_template[] = {
 381	{
 382		.digest	= "\x22\xd6\x5d\x56\x61\x53\x6c\xdc\x75\xc1"
 383			  "\xfd\xf5\xc6\xde\x7b\x41\xb9\xf2\x73\x25"
 384			  "\xeb\xc6\x1e\x85\x57\x17\x7d\x70\x5a\x0e"
 385			  "\xc8\x80\x15\x1c\x3a\x32\xa0\x08\x99\xb8",
 386	}, {
 387		.plaintext = "a",
 388		.psize	= 1,
 389		.digest	= "\xce\x78\x85\x06\x38\xf9\x26\x58\xa5\xa5"
 390			  "\x85\x09\x75\x79\x92\x6d\xda\x66\x7a\x57"
 391			  "\x16\x56\x2c\xfc\xf6\xfb\xe7\x7f\x63\x54"
 392			  "\x2f\x99\xb0\x47\x05\xd6\x97\x0d\xff\x5d",
 393	}, {
 394		.plaintext = "abc",
 395		.psize	= 3,
 396		.digest	= "\xde\x4c\x01\xb3\x05\x4f\x89\x30\xa7\x9d"
 397			  "\x09\xae\x73\x8e\x92\x30\x1e\x5a\x17\x08"
 398			  "\x5b\xef\xfd\xc1\xb8\xd1\x16\x71\x3e\x74"
 399			  "\xf8\x2f\xa9\x42\xd6\x4c\xdb\xc4\x68\x2d",
 400	}, {
 401		.plaintext = "message digest",
 402		.psize	= 14,
 403		.digest	= "\x3a\x8e\x28\x50\x2e\xd4\x5d\x42\x2f\x68"
 404			  "\x84\x4f\x9d\xd3\x16\xe7\xb9\x85\x33\xfa"
 405			  "\x3f\x2a\x91\xd2\x9f\x84\xd4\x25\xc8\x8d"
 406			  "\x6b\x4e\xff\x72\x7d\xf6\x6a\x7c\x01\x97",
 407	}, {
 408		.plaintext = "abcdefghijklmnopqrstuvwxyz",
 409		.psize	= 26,
 410		.digest	= "\xca\xbd\xb1\x81\x0b\x92\x47\x0a\x20\x93"
 411			  "\xaa\x6b\xce\x05\x95\x2c\x28\x34\x8c\xf4"
 412			  "\x3f\xf6\x08\x41\x97\x51\x66\xbb\x40\xed"
 413			  "\x23\x40\x04\xb8\x82\x44\x63\xe6\xb0\x09",
 414	}, {
 415		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcde"
 416			     "fghijklmnopqrstuvwxyz0123456789",
 417		.psize	= 62,
 418		.digest	= "\xed\x54\x49\x40\xc8\x6d\x67\xf2\x50\xd2"
 419			  "\x32\xc3\x0b\x7b\x3e\x57\x70\xe0\xc6\x0c"
 420			  "\x8c\xb9\xa4\xca\xfe\x3b\x11\x38\x8a\xf9"
 421			  "\x92\x0e\x1b\x99\x23\x0b\x84\x3c\x86\xa4",
 422	}, {
 423		.plaintext = "1234567890123456789012345678901234567890"
 424			     "1234567890123456789012345678901234567890",
 425		.psize	= 80,
 426		.digest	= "\x55\x78\x88\xaf\x5f\x6d\x8e\xd6\x2a\xb6"
 427			  "\x69\x45\xc6\xd2\xa0\xa4\x7e\xcd\x53\x41"
 428			  "\xe9\x15\xeb\x8f\xea\x1d\x05\x24\x95\x5f"
 429			  "\x82\x5d\xc7\x17\xe4\xa0\x08\xab\x2d\x42",
 430	}, {
 431		.plaintext = "abcdbcdecdefdefgefghfghighij"
 432			     "hijkijkljklmklmnlmnomnopnopq",
 433		.psize	= 56,
 434		.digest	= "\xd0\x34\xa7\x95\x0c\xf7\x22\x02\x1b\xa4"
 435			  "\xb8\x4d\xf7\x69\xa5\xde\x20\x60\xe2\x59"
 436			  "\xdf\x4c\x9b\xb4\xa4\x26\x8c\x0e\x93\x5b"
 437			  "\xbc\x74\x70\xa9\x69\xc9\xd0\x72\xa1\xac",
 438		.np	= 2,
 439		.tap	= { 28, 28 },
 440	}
 441};
 442
 443/*
 444 * SHA1 test vectors  from from FIPS PUB 180-1
 445 */
 446#define SHA1_TEST_VECTORS	2
 447
 448static struct hash_testvec sha1_tv_template[] = {
 449	{
 450		.plaintext = "abc",
 451		.psize	= 3,
 452		.digest	= "\xa9\x99\x3e\x36\x47\x06\x81\x6a\xba\x3e"
 453			  "\x25\x71\x78\x50\xc2\x6c\x9c\xd0\xd8\x9d",
 454	}, {
 455		.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
 456		.psize	= 56,
 457		.digest	= "\x84\x98\x3e\x44\x1c\x3b\xd2\x6e\xba\xae"
 458			  "\x4a\xa1\xf9\x51\x29\xe5\xe5\x46\x70\xf1",
 459		.np	= 2,
 460		.tap	= { 28, 28 }
 461	}
 462};
 463
 464
 465/*
 466 * SHA224 test vectors from from FIPS PUB 180-2
 467 */
 468#define SHA224_TEST_VECTORS     2
 469
 470static struct hash_testvec sha224_tv_template[] = {
 471	{
 472		.plaintext = "abc",
 473		.psize  = 3,
 474		.digest = "\x23\x09\x7D\x22\x34\x05\xD8\x22"
 475			  "\x86\x42\xA4\x77\xBD\xA2\x55\xB3"
 476			  "\x2A\xAD\xBC\xE4\xBD\xA0\xB3\xF7"
 477			  "\xE3\x6C\x9D\xA7",
 478	}, {
 479		.plaintext =
 480		"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
 481		.psize  = 56,
 482		.digest = "\x75\x38\x8B\x16\x51\x27\x76\xCC"
 483			  "\x5D\xBA\x5D\xA1\xFD\x89\x01\x50"
 484			  "\xB0\xC6\x45\x5C\xB4\xF5\x8B\x19"
 485			  "\x52\x52\x25\x25",
 486		.np     = 2,
 487		.tap    = { 28, 28 }
 488	}
 489};
 490
 491/*
 492 * SHA256 test vectors from from NIST
 493 */
 494#define SHA256_TEST_VECTORS	2
 495
 496static struct hash_testvec sha256_tv_template[] = {
 497	{
 498		.plaintext = "abc",
 499		.psize	= 3,
 500		.digest	= "\xba\x78\x16\xbf\x8f\x01\xcf\xea"
 501			  "\x41\x41\x40\xde\x5d\xae\x22\x23"
 502			  "\xb0\x03\x61\xa3\x96\x17\x7a\x9c"
 503			  "\xb4\x10\xff\x61\xf2\x00\x15\xad",
 504	}, {
 505		.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
 506		.psize	= 56,
 507		.digest	= "\x24\x8d\x6a\x61\xd2\x06\x38\xb8"
 508			  "\xe5\xc0\x26\x93\x0c\x3e\x60\x39"
 509			  "\xa3\x3c\xe4\x59\x64\xff\x21\x67"
 510			  "\xf6\xec\xed\xd4\x19\xdb\x06\xc1",
 511		.np	= 2,
 512		.tap	= { 28, 28 }
 513	},
 514};
 515
 516/*
 517 * SHA384 test vectors from from NIST and kerneli
 518 */
 519#define SHA384_TEST_VECTORS	4
 520
 521static struct hash_testvec sha384_tv_template[] = {
 522	{
 523		.plaintext= "abc",
 524		.psize	= 3,
 525		.digest	= "\xcb\x00\x75\x3f\x45\xa3\x5e\x8b"
 526			  "\xb5\xa0\x3d\x69\x9a\xc6\x50\x07"
 527			  "\x27\x2c\x32\xab\x0e\xde\xd1\x63"
 528			  "\x1a\x8b\x60\x5a\x43\xff\x5b\xed"
 529			  "\x80\x86\x07\x2b\xa1\xe7\xcc\x23"
 530			  "\x58\xba\xec\xa1\x34\xc8\x25\xa7",
 531	}, {
 532		.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
 533		.psize	= 56,
 534		.digest	= "\x33\x91\xfd\xdd\xfc\x8d\xc7\x39"
 535			  "\x37\x07\xa6\x5b\x1b\x47\x09\x39"
 536			  "\x7c\xf8\xb1\xd1\x62\xaf\x05\xab"
 537			  "\xfe\x8f\x45\x0d\xe5\xf3\x6b\xc6"
 538			  "\xb0\x45\x5a\x85\x20\xbc\x4e\x6f"
 539			  "\x5f\xe9\x5b\x1f\xe3\xc8\x45\x2b",
 540	}, {
 541		.plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
 542			   "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
 543		.psize	= 112,
 544		.digest	= "\x09\x33\x0c\x33\xf7\x11\x47\xe8"
 545			  "\x3d\x19\x2f\xc7\x82\xcd\x1b\x47"
 546			  "\x53\x11\x1b\x17\x3b\x3b\x05\xd2"
 547			  "\x2f\xa0\x80\x86\xe3\xb0\xf7\x12"
 548			  "\xfc\xc7\xc7\x1a\x55\x7e\x2d\xb9"
 549			  "\x66\xc3\xe9\xfa\x91\x74\x60\x39",
 550	}, {
 551		.plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
 552			   "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
 553		.psize	= 104,
 554		.digest	= "\x3d\x20\x89\x73\xab\x35\x08\xdb"
 555			  "\xbd\x7e\x2c\x28\x62\xba\x29\x0a"
 556			  "\xd3\x01\x0e\x49\x78\xc1\x98\xdc"
 557			  "\x4d\x8f\xd0\x14\xe5\x82\x82\x3a"
 558			  "\x89\xe1\x6f\x9b\x2a\x7b\xbc\x1a"
 559			  "\xc9\x38\xe2\xd1\x99\xe8\xbe\xa4",
 560		.np	= 4,
 561		.tap	= { 26, 26, 26, 26 }
 562	},
 563};
 564
 565/*
 566 * SHA512 test vectors from from NIST and kerneli
 567 */
 568#define SHA512_TEST_VECTORS	4
 569
 570static struct hash_testvec sha512_tv_template[] = {
 571	{
 572		.plaintext = "abc",
 573		.psize	= 3,
 574		.digest	= "\xdd\xaf\x35\xa1\x93\x61\x7a\xba"
 575			  "\xcc\x41\x73\x49\xae\x20\x41\x31"
 576			  "\x12\xe6\xfa\x4e\x89\xa9\x7e\xa2"
 577			  "\x0a\x9e\xee\xe6\x4b\x55\xd3\x9a"
 578			  "\x21\x92\x99\x2a\x27\x4f\xc1\xa8"
 579			  "\x36\xba\x3c\x23\xa3\xfe\xeb\xbd"
 580			  "\x45\x4d\x44\x23\x64\x3c\xe8\x0e"
 581			  "\x2a\x9a\xc9\x4f\xa5\x4c\xa4\x9f",
 582	}, {
 583		.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
 584		.psize	= 56,
 585		.digest	= "\x20\x4a\x8f\xc6\xdd\xa8\x2f\x0a"
 586			  "\x0c\xed\x7b\xeb\x8e\x08\xa4\x16"
 587			  "\x57\xc1\x6e\xf4\x68\xb2\x28\xa8"
 588			  "\x27\x9b\xe3\x31\xa7\x03\xc3\x35"
 589			  "\x96\xfd\x15\xc1\x3b\x1b\x07\xf9"
 590			  "\xaa\x1d\x3b\xea\x57\x78\x9c\xa0"
 591			  "\x31\xad\x85\xc7\xa7\x1d\xd7\x03"
 592			  "\x54\xec\x63\x12\x38\xca\x34\x45",
 593	}, {
 594		.plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn"
 595			   "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu",
 596		.psize	= 112,
 597		.digest	= "\x8e\x95\x9b\x75\xda\xe3\x13\xda"
 598			  "\x8c\xf4\xf7\x28\x14\xfc\x14\x3f"
 599			  "\x8f\x77\x79\xc6\xeb\x9f\x7f\xa1"
 600			  "\x72\x99\xae\xad\xb6\x88\x90\x18"
 601			  "\x50\x1d\x28\x9e\x49\x00\xf7\xe4"
 602			  "\x33\x1b\x99\xde\xc4\xb5\x43\x3a"
 603			  "\xc7\xd3\x29\xee\xb6\xdd\x26\x54"
 604			  "\x5e\x96\xe5\x5b\x87\x4b\xe9\x09",
 605	}, {
 606		.plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd"
 607			   "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz",
 608		.psize	= 104,
 609		.digest	= "\x93\x0d\x0c\xef\xcb\x30\xff\x11"
 610			  "\x33\xb6\x89\x81\x21\xf1\xcf\x3d"
 611			  "\x27\x57\x8a\xfc\xaf\xe8\x67\x7c"
 612			  "\x52\x57\xcf\x06\x99\x11\xf7\x5d"
 613			  "\x8f\x58\x31\xb5\x6e\xbf\xda\x67"
 614			  "\xb2\x78\xe6\x6d\xff\x8b\x84\xfe"
 615			  "\x2b\x28\x70\xf7\x42\xa5\x80\xd8"
 616			  "\xed\xb4\x19\x87\x23\x28\x50\xc9",
 617		.np	= 4,
 618		.tap	= { 26, 26, 26, 26 }
 619	},
 620};
 621
 622
 623/*
 624 * WHIRLPOOL test vectors from Whirlpool package
 625 * by Vincent Rijmen and Paulo S. L. M. Barreto as part of the NESSIE
 626 * submission
 627 */
 628#define WP512_TEST_VECTORS	8
 629
 630static struct hash_testvec wp512_tv_template[] = {
 631	{
 632		.plaintext = "",
 633		.psize	= 0,
 634		.digest	= "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
 635			  "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
 636			  "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
 637			  "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
 638			  "\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
 639			  "\xCF\x88\xE3\xE0\x3C\x4F\x07\x57"
 640			  "\xEA\x89\x64\xE5\x9B\x63\xD9\x37"
 641			  "\x08\xB1\x38\xCC\x42\xA6\x6E\xB3",
 642
 643
 644	}, {
 645		.plaintext = "a",
 646		.psize	= 1,
 647		.digest	= "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
 648			  "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
 649			  "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
 650			  "\x73\xC4\x50\x01\xD0\x08\x7B\x42"
 651			  "\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
 652			  "\x3A\x42\x39\x1A\x39\x14\x5A\x59"
 653			  "\x1A\x92\x20\x0D\x56\x01\x95\xE5"
 654			  "\x3B\x47\x85\x84\xFD\xAE\x23\x1A",
 655	}, {
 656		.plaintext = "abc",
 657		.psize	= 3,
 658		.digest	= "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
 659			  "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
 660			  "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
 661			  "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
 662			  "\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
 663			  "\x7D\x0E\x34\x95\x71\x14\xCB\xD6"
 664			  "\xC7\x97\xFC\x9D\x95\xD8\xB5\x82"
 665			  "\xD2\x25\x29\x20\x76\xD4\xEE\xF5",
 666	}, {
 667		.plaintext = "message digest",
 668		.psize	= 14,
 669		.digest	= "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
 670			  "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
 671			  "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
 672			  "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
 673			  "\x84\x21\x55\x76\x59\xEF\x55\xC1"
 674			  "\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6"
 675			  "\x92\xED\x92\x00\x52\x83\x8F\x33"
 676			  "\x62\xE8\x6D\xBD\x37\xA8\x90\x3E",
 677	}, {
 678		.plaintext = "abcdefghijklmnopqrstuvwxyz",
 679		.psize	= 26,
 680		.digest	= "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
 681			  "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
 682			  "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
 683			  "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
 684			  "\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
 685			  "\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6"
 686			  "\xF6\x8F\x67\x3E\x72\x07\x86\x5D"
 687			  "\x5D\x98\x19\xA3\xDB\xA4\xEB\x3B",
 688	}, {
 689		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 690			   "abcdefghijklmnopqrstuvwxyz0123456789",
 691		.psize	= 62,
 692		.digest	= "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
 693			  "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
 694			  "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
 695			  "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
 696			  "\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
 697			  "\xB7\xCB\x57\x21\x1B\x92\x81\xA6"
 698			  "\x55\x17\xCC\x87\x9D\x7B\x96\x21"
 699			  "\x42\xC6\x5F\x5A\x7A\xF0\x14\x67",
 700	}, {
 701		.plaintext = "1234567890123456789012345678901234567890"
 702			   "1234567890123456789012345678901234567890",
 703		.psize	= 80,
 704		.digest	= "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
 705			  "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
 706			  "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
 707			  "\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
 708			  "\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
 709			  "\x38\xCD\x04\x7B\x26\x81\xA5\x1A"
 710			  "\x2C\x60\x48\x1E\x88\xC5\xA2\x0B"
 711			  "\x2C\x2A\x80\xCF\x3A\x9A\x08\x3B",
 712	}, {
 713		.plaintext = "abcdbcdecdefdefgefghfghighijhijk",
 714		.psize	= 32,
 715		.digest	= "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
 716			  "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
 717			  "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
 718			  "\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
 719			  "\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
 720			  "\x7B\x94\x76\x39\xFE\x05\x0B\x56"
 721			  "\x93\x9B\xAA\xA0\xAD\xFF\x9A\xE6"
 722			  "\x74\x5B\x7B\x18\x1C\x3B\xE3\xFD",
 723	},
 724};
 725
 726#define WP384_TEST_VECTORS	8
 727
 728static struct hash_testvec wp384_tv_template[] = {
 729	{
 730		.plaintext = "",
 731		.psize	= 0,
 732		.digest	= "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
 733			  "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
 734			  "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
 735			  "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7"
 736			  "\x3E\x83\xBE\x69\x8B\x28\x8F\xEB"
 737			  "\xCF\x88\xE3\xE0\x3C\x4F\x07\x57",
 738
 739
 740	}, {
 741		.plaintext = "a",
 742		.psize	= 1,
 743		.digest	= "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
 744			  "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
 745			  "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
 746			  "\x73\xC4\x50\x01\xD0\x08\x7B\x42"
 747			  "\xD1\x1B\xC6\x45\x41\x3A\xEF\xF6"
 748			  "\x3A\x42\x39\x1A\x39\x14\x5A\x59",
 749	}, {
 750		.plaintext = "abc",
 751		.psize	= 3,
 752		.digest	= "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
 753			  "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
 754			  "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
 755			  "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C"
 756			  "\x71\x81\xEE\xBD\xB6\xC5\x7E\x27"
 757			  "\x7D\x0E\x34\x95\x71\x14\xCB\xD6",
 758	}, {
 759		.plaintext = "message digest",
 760		.psize	= 14,
 761		.digest	= "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
 762			  "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
 763			  "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
 764			  "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B"
 765			  "\x84\x21\x55\x76\x59\xEF\x55\xC1"
 766			  "\x06\xB4\xB5\x2A\xC5\xA4\xAA\xA6",
 767	}, {
 768		.plaintext = "abcdefghijklmnopqrstuvwxyz",
 769		.psize	= 26,
 770		.digest	= "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
 771			  "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
 772			  "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
 773			  "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B"
 774			  "\x08\xBF\x2A\x92\x51\xC3\x0B\x6A"
 775			  "\x0B\x8A\xAE\x86\x17\x7A\xB4\xA6",
 776	}, {
 777		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 778			   "abcdefghijklmnopqrstuvwxyz0123456789",
 779		.psize	= 62,
 780		.digest	= "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
 781			  "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
 782			  "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
 783			  "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E"
 784			  "\x08\xEB\xA2\x66\x29\x12\x9D\x8F"
 785			  "\xB7\xCB\x57\x21\x1B\x92\x81\xA6",
 786	}, {
 787		.plaintext = "1234567890123456789012345678901234567890"
 788			   "1234567890123456789012345678901234567890",
 789		.psize	= 80,
 790		.digest	= "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
 791			  "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
 792			  "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
 793			  "\x54\x9C\x4A\xFA\xDB\x60\x14\x29"
 794			  "\x4D\x5B\xD8\xDF\x2A\x6C\x44\xE5"
 795			  "\x38\xCD\x04\x7B\x26\x81\xA5\x1A",
 796	}, {
 797		.plaintext = "abcdbcdecdefdefgefghfghighijhijk",
 798		.psize	= 32,
 799		.digest	= "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
 800			  "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
 801			  "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
 802			  "\x07\xC5\x62\xF9\x88\xE9\x5C\x69"
 803			  "\x16\xBD\xC8\x03\x1B\xC5\xBE\x1B"
 804			  "\x7B\x94\x76\x39\xFE\x05\x0B\x56",
 805	},
 806};
 807
 808#define WP256_TEST_VECTORS	8
 809
 810static struct hash_testvec wp256_tv_template[] = {
 811	{
 812		.plaintext = "",
 813		.psize	= 0,
 814		.digest	= "\x19\xFA\x61\xD7\x55\x22\xA4\x66"
 815			  "\x9B\x44\xE3\x9C\x1D\x2E\x17\x26"
 816			  "\xC5\x30\x23\x21\x30\xD4\x07\xF8"
 817			  "\x9A\xFE\xE0\x96\x49\x97\xF7\xA7",
 818
 819
 820	}, {
 821		.plaintext = "a",
 822		.psize	= 1,
 823		.digest	= "\x8A\xCA\x26\x02\x79\x2A\xEC\x6F"
 824			  "\x11\xA6\x72\x06\x53\x1F\xB7\xD7"
 825			  "\xF0\xDF\xF5\x94\x13\x14\x5E\x69"
 826			  "\x73\xC4\x50\x01\xD0\x08\x7B\x42",
 827	}, {
 828		.plaintext = "abc",
 829		.psize	= 3,
 830		.digest	= "\x4E\x24\x48\xA4\xC6\xF4\x86\xBB"
 831			  "\x16\xB6\x56\x2C\x73\xB4\x02\x0B"
 832			  "\xF3\x04\x3E\x3A\x73\x1B\xCE\x72"
 833			  "\x1A\xE1\xB3\x03\xD9\x7E\x6D\x4C",
 834	}, {
 835		.plaintext = "message digest",
 836		.psize	= 14,
 837		.digest	= "\x37\x8C\x84\xA4\x12\x6E\x2D\xC6"
 838			  "\xE5\x6D\xCC\x74\x58\x37\x7A\xAC"
 839			  "\x83\x8D\x00\x03\x22\x30\xF5\x3C"
 840			  "\xE1\xF5\x70\x0C\x0F\xFB\x4D\x3B",
 841	}, {
 842		.plaintext = "abcdefghijklmnopqrstuvwxyz",
 843		.psize	= 26,
 844		.digest	= "\xF1\xD7\x54\x66\x26\x36\xFF\xE9"
 845			  "\x2C\x82\xEB\xB9\x21\x2A\x48\x4A"
 846			  "\x8D\x38\x63\x1E\xAD\x42\x38\xF5"
 847			  "\x44\x2E\xE1\x3B\x80\x54\xE4\x1B",
 848	}, {
 849		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 850			   "abcdefghijklmnopqrstuvwxyz0123456789",
 851		.psize	= 62,
 852		.digest	= "\xDC\x37\xE0\x08\xCF\x9E\xE6\x9B"
 853			  "\xF1\x1F\x00\xED\x9A\xBA\x26\x90"
 854			  "\x1D\xD7\xC2\x8C\xDE\xC0\x66\xCC"
 855			  "\x6A\xF4\x2E\x40\xF8\x2F\x3A\x1E",
 856	}, {
 857		.plaintext = "1234567890123456789012345678901234567890"
 858			   "1234567890123456789012345678901234567890",
 859		.psize	= 80,
 860		.digest	= "\x46\x6E\xF1\x8B\xAB\xB0\x15\x4D"
 861			  "\x25\xB9\xD3\x8A\x64\x14\xF5\xC0"
 862			  "\x87\x84\x37\x2B\xCC\xB2\x04\xD6"
 863			  "\x54\x9C\x4A\xFA\xDB\x60\x14\x29",
 864	}, {
 865		.plaintext = "abcdbcdecdefdefgefghfghighijhijk",
 866		.psize	= 32,
 867		.digest	= "\x2A\x98\x7E\xA4\x0F\x91\x70\x61"
 868			  "\xF5\xD6\xF0\xA0\xE4\x64\x4F\x48"
 869			  "\x8A\x7A\x5A\x52\xDE\xEE\x65\x62"
 870			  "\x07\xC5\x62\xF9\x88\xE9\x5C\x69",
 871	},
 872};
 873
 874/*
 875 * TIGER test vectors from Tiger website
 876 */
 877#define TGR192_TEST_VECTORS	6
 878
 879static struct hash_testvec tgr192_tv_template[] = {
 880	{
 881		.plaintext = "",
 882		.psize	= 0,
 883		.digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
 884			  "\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
 885			  "\xf3\x73\xde\x2d\x49\x58\x4e\x7a",
 886	}, {
 887		.plaintext = "abc",
 888		.psize	= 3,
 889		.digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
 890			  "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
 891			  "\x93\x5f\x7b\x95\x1c\x13\x29\x51",
 892	}, {
 893		.plaintext = "Tiger",
 894		.psize	= 5,
 895		.digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
 896			  "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
 897			  "\x37\x79\x0c\x11\x6f\x9d\x2b\xdf",
 898	}, {
 899		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
 900		.psize	= 64,
 901		.digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
 902			  "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
 903			  "\xb5\x86\x44\x50\x34\xa5\xa3\x86",
 904	}, {
 905		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
 906		.psize	= 64,
 907		.digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
 908			  "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
 909			  "\x57\x89\x65\x65\x97\x5f\x91\x97",
 910	}, {
 911		.plaintext = "Tiger - A Fast New Hash Function, "
 912			   "by Ross Anderson and Eli Biham, "
 913			   "proceedings of Fast Software Encryption 3, "
 914			   "Cambridge, 1996.",
 915		.psize  = 125,
 916		.digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
 917			  "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
 918			  "\xdd\x68\x15\x1d\x50\x39\x74\xfc",
 919	},
 920};
 921
 922#define TGR160_TEST_VECTORS	6
 923
 924static struct hash_testvec tgr160_tv_template[] = {
 925	{
 926		.plaintext = "",
 927		.psize	= 0,
 928		.digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
 929			  "\x16\x16\x6e\x76\xb1\xbb\x92\x5f"
 930			  "\xf3\x73\xde\x2d",
 931	}, {
 932		.plaintext = "abc",
 933		.psize	= 3,
 934		.digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
 935			  "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf"
 936			  "\x93\x5f\x7b\x95",
 937	}, {
 938		.plaintext = "Tiger",
 939		.psize	= 5,
 940		.digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
 941			  "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec"
 942			  "\x37\x79\x0c\x11",
 943	}, {
 944		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
 945		.psize	= 64,
 946		.digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
 947			  "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e"
 948			  "\xb5\x86\x44\x50",
 949	}, {
 950		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
 951		.psize	= 64,
 952		.digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
 953			  "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9"
 954			  "\x57\x89\x65\x65",
 955	}, {
 956		.plaintext = "Tiger - A Fast New Hash Function, "
 957			   "by Ross Anderson and Eli Biham, "
 958			   "proceedings of Fast Software Encryption 3, "
 959			   "Cambridge, 1996.",
 960		.psize  = 125,
 961		.digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
 962			  "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24"
 963			  "\xdd\x68\x15\x1d",
 964	},
 965};
 966
 967#define TGR128_TEST_VECTORS	6
 968
 969static struct hash_testvec tgr128_tv_template[] = {
 970	{
 971		.plaintext = "",
 972		.psize	= 0,
 973		.digest = "\x24\xf0\x13\x0c\x63\xac\x93\x32"
 974			  "\x16\x16\x6e\x76\xb1\xbb\x92\x5f",
 975	}, {
 976		.plaintext = "abc",
 977		.psize	= 3,
 978		.digest = "\xf2\x58\xc1\xe8\x84\x14\xab\x2a"
 979			  "\x52\x7a\xb5\x41\xff\xc5\xb8\xbf",
 980	}, {
 981		.plaintext = "Tiger",
 982		.psize	= 5,
 983		.digest = "\x9f\x00\xf5\x99\x07\x23\x00\xdd"
 984			  "\x27\x6a\xbb\x38\xc8\xeb\x6d\xec",
 985	}, {
 986		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-",
 987		.psize	= 64,
 988		.digest = "\x87\xfb\x2a\x90\x83\x85\x1c\xf7"
 989			  "\x47\x0d\x2c\xf8\x10\xe6\xdf\x9e",
 990	}, {
 991		.plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789",
 992		.psize	= 64,
 993		.digest = "\x46\x7d\xb8\x08\x63\xeb\xce\x48"
 994			  "\x8d\xf1\xcd\x12\x61\x65\x5d\xe9",
 995	}, {
 996		.plaintext = "Tiger - A Fast New Hash Function, "
 997			   "by Ross Anderson and Eli Biham, "
 998			   "proceedings of Fast Software Encryption 3, "
 999			   "Cambridge, 1996.",
1000		.psize  = 125,
1001		.digest = "\x3d\x9a\xeb\x03\xd1\xbd\x1a\x63"
1002			  "\x57\xb2\x77\x4d\xfd\x6d\x5b\x24",
1003	},
1004};
1005
1006#define GHASH_TEST_VECTORS 1
1007
1008static struct hash_testvec ghash_tv_template[] =
1009{
1010	{
1011
1012		.key	= "\xdf\xa6\xbf\x4d\xed\x81\xdb\x03\xff\xca\xff\x95\xf8\x30\xf0\x61",
1013		.ksize	= 16,
1014		.plaintext = "\x95\x2b\x2a\x56\xa5\x60\x04a\xc0\xb3\x2b\x66\x56\xa0\x5b\x40\xb6",
1015		.psize	= 16,
1016		.digest	= "\xda\x53\xeb\x0a\xd2\xc5\x5b\xb6"
1017			  "\x4f\xc4\x80\x2c\xc3\xfe\xda\x60",
1018	},
1019};
1020
1021/*
1022 * HMAC-MD5 test vectors from RFC2202
1023 * (These need to be fixed to not use strlen).
1024 */
1025#define HMAC_MD5_TEST_VECTORS	7
1026
1027static struct hash_testvec hmac_md5_tv_template[] =
1028{
1029	{
1030		.key	= "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
1031		.ksize	= 16,
1032		.plaintext = "Hi There",
1033		.psize	= 8,
1034		.digest	= "\x92\x94\x72\x7a\x36\x38\xbb\x1c"
1035			  "\x13\xf4\x8e\xf8\x15\x8b\xfc\x9d",
1036	}, {
1037		.key	= "Jefe",
1038		.ksize	= 4,
1039		.plaintext = "what do ya want for nothing?",
1040		.psize	= 28,
1041		.digest	= "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03"
1042			  "\xea\xa8\x6e\x31\x0a\x5d\xb7\x38",
1043		.np	= 2,
1044		.tap	= {14, 14}
1045	}, {
1046		.key	= "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1047		.ksize	= 16,
1048		.plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1049			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1050			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1051			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1052		.psize	= 50,
1053		.digest	= "\x56\xbe\x34\x52\x1d\x14\x4c\x88"
1054			  "\xdb\xb8\xc7\x33\xf0\xe8\xb3\xf6",
1055	}, {
1056		.key	= "\x01\x02\x03\x04\x05\x06\x07\x08"
1057			  "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1058			  "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
1059		.ksize	= 25,
1060		.plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1061			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1062			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1063			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1064		.psize	= 50,
1065		.digest	= "\x69\x7e\xaf\x0a\xca\x3a\x3a\xea"
1066			  "\x3a\x75\x16\x47\x46\xff\xaa\x79",
1067	}, {
1068		.key	= "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
1069		.ksize	= 16,
1070		.plaintext = "Test With Truncation",
1071		.psize	= 20,
1072		.digest	= "\x56\x46\x1e\xf2\x34\x2e\xdc\x00"
1073			  "\xf9\xba\xb9\x95\x69\x0e\xfd\x4c",
1074	}, {
1075		.key	= "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1076			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1077			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1078			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1079			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1080			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1081			"\xaa\xaa",
1082		.ksize	= 80,
1083		.plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1084		.psize	= 54,
1085		.digest	= "\x6b\x1a\xb7\xfe\x4b\xd7\xbf\x8f"
1086			  "\x0b\x62\xe6\xce\x61\xb9\xd0\xcd",
1087	}, {
1088		.key	= "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1089			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1090			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1091			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1092			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1093			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1094			"\xaa\xaa",
1095		.ksize	= 80,
1096		.plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
1097			   "Block-Size Data",
1098		.psize	= 73,
1099		.digest	= "\x6f\x63\x0f\xad\x67\xcd\xa0\xee"
1100			  "\x1f\xb1\xf5\x62\xdb\x3a\xa5\x3e",
1101	},
1102};
1103
1104/*
1105 * HMAC-RIPEMD128 test vectors from RFC2286
1106 */
1107#define HMAC_RMD128_TEST_VECTORS	7
1108
1109static struct hash_testvec hmac_rmd128_tv_template[] = {
1110	{
1111		.key	= "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
1112		.ksize	= 16,
1113		.plaintext = "Hi There",
1114		.psize	= 8,
1115		.digest	= "\xfb\xf6\x1f\x94\x92\xaa\x4b\xbf"
1116			  "\x81\xc1\x72\xe8\x4e\x07\x34\xdb",
1117	}, {
1118		.key	= "Jefe",
1119		.ksize	= 4,
1120		.plaintext = "what do ya want for nothing?",
1121		.psize	= 28,
1122		.digest	= "\x87\x5f\x82\x88\x62\xb6\xb3\x34"
1123			  "\xb4\x27\xc5\x5f\x9f\x7f\xf0\x9b",
1124		.np	= 2,
1125		.tap	= { 14, 14 },
1126	}, {
1127		.key	= "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1128		.ksize	= 16,
1129		.plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1130			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1131			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1132			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1133		.psize	= 50,
1134		.digest	= "\x09\xf0\xb2\x84\x6d\x2f\x54\x3d"
1135			  "\xa3\x63\xcb\xec\x8d\x62\xa3\x8d",
1136	}, {
1137		.key	= "\x01\x02\x03\x04\x05\x06\x07\x08"
1138			  "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1139			  "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
1140		.ksize	= 25,
1141		.plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1142			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1143			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1144			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1145		.psize	= 50,
1146		.digest	= "\xbd\xbb\xd7\xcf\x03\xe4\x4b\x5a"
1147			  "\xa6\x0a\xf8\x15\xbe\x4d\x22\x94",
1148	}, {
1149		.key	= "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
1150		.ksize	= 16,
1151		.plaintext = "Test With Truncation",
1152		.psize	= 20,
1153		.digest	= "\xe7\x98\x08\xf2\x4b\x25\xfd\x03"
1154			  "\x1c\x15\x5f\x0d\x55\x1d\x9a\x3a",
1155	}, {
1156		.key	= "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1157			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1158			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1159			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1160			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1161			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1162			"\xaa\xaa",
1163		.ksize	= 80,
1164		.plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1165		.psize	= 54,
1166		.digest	= "\xdc\x73\x29\x28\xde\x98\x10\x4a"
1167			  "\x1f\x59\xd3\x73\xc1\x50\xac\xbb",
1168	}, {
1169		.key	= "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1170			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1171			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1172			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1173			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1174			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1175			"\xaa\xaa",
1176		.ksize	= 80,
1177		.plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
1178			   "Block-Size Data",
1179		.psize	= 73,
1180		.digest	= "\x5c\x6b\xec\x96\x79\x3e\x16\xd4"
1181			  "\x06\x90\xc2\x37\x63\x5f\x30\xc5",
1182	},
1183};
1184
1185/*
1186 * HMAC-RIPEMD160 test vectors from RFC2286
1187 */
1188#define HMAC_RMD160_TEST_VECTORS	7
1189
1190static struct hash_testvec hmac_rmd160_tv_template[] = {
1191	{
1192		.key	= "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
1193		.ksize	= 20,
1194		.plaintext = "Hi There",
1195		.psize	= 8,
1196		.digest	= "\x24\xcb\x4b\xd6\x7d\x20\xfc\x1a\x5d\x2e"
1197			  "\xd7\x73\x2d\xcc\x39\x37\x7f\x0a\x56\x68",
1198	}, {
1199		.key	= "Jefe",
1200		.ksize	= 4,
1201		.plaintext = "what do ya want for nothing?",
1202		.psize	= 28,
1203		.digest	= "\xdd\xa6\xc0\x21\x3a\x48\x5a\x9e\x24\xf4"
1204			  "\x74\x20\x64\xa7\xf0\x33\xb4\x3c\x40\x69",
1205		.np	= 2,
1206		.tap	= { 14, 14 },
1207	}, {
1208		.key	= "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1209		.ksize	= 20,
1210		.plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1211			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1212			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1213			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1214		.psize	= 50,
1215		.digest	= "\xb0\xb1\x05\x36\x0d\xe7\x59\x96\x0a\xb4"
1216			  "\xf3\x52\x98\xe1\x16\xe2\x95\xd8\xe7\xc1",
1217	}, {
1218		.key	= "\x01\x02\x03\x04\x05\x06\x07\x08"
1219			  "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1220			  "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
1221		.ksize	= 25,
1222		.plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1223			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1224			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1225			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1226		.psize	= 50,
1227		.digest	= "\xd5\xca\x86\x2f\x4d\x21\xd5\xe6\x10\xe1"
1228			  "\x8b\x4c\xf1\xbe\xb9\x7a\x43\x65\xec\xf4",
1229	}, {
1230		.key	= "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
1231		.ksize	= 20,
1232		.plaintext = "Test With Truncation",
1233		.psize	= 20,
1234		.digest	= "\x76\x19\x69\x39\x78\xf9\x1d\x90\x53\x9a"
1235			  "\xe7\x86\x50\x0f\xf3\xd8\xe0\x51\x8e\x39",
1236	}, {
1237		.key	= "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1238			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1239			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1240			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1241			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1242			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1243			"\xaa\xaa",
1244		.ksize	= 80,
1245		.plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1246		.psize	= 54,
1247		.digest	= "\x64\x66\xca\x07\xac\x5e\xac\x29\xe1\xbd"
1248			  "\x52\x3e\x5a\xda\x76\x05\xb7\x91\xfd\x8b",
1249	}, {
1250		.key	= "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1251			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1252			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1253			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1254			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1255			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1256			"\xaa\xaa",
1257		.ksize	= 80,
1258		.plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
1259			   "Block-Size Data",
1260		.psize	= 73,
1261		.digest	= "\x69\xea\x60\x79\x8d\x71\x61\x6c\xce\x5f"
1262			  "\xd0\x87\x1e\x23\x75\x4c\xd7\x5d\x5a\x0a",
1263	},
1264};
1265
1266/*
1267 * HMAC-SHA1 test vectors from RFC2202
1268 */
1269#define HMAC_SHA1_TEST_VECTORS	7
1270
1271static struct hash_testvec hmac_sha1_tv_template[] = {
1272	{
1273		.key	= "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
1274		.ksize	= 20,
1275		.plaintext = "Hi There",
1276		.psize	= 8,
1277		.digest	= "\xb6\x17\x31\x86\x55\x05\x72\x64"
1278			  "\xe2\x8b\xc0\xb6\xfb\x37\x8c\x8e\xf1"
1279			  "\x46\xbe",
1280	}, {
1281		.key	= "Jefe",
1282		.ksize	= 4,
1283		.plaintext = "what do ya want for nothing?",
1284		.psize	= 28,
1285		.digest	= "\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74"
1286			  "\x16\xd5\xf1\x84\xdf\x9c\x25\x9a\x7c\x79",
1287		.np	= 2,
1288		.tap	= { 14, 14 }
1289	}, {
1290		.key	= "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1291		.ksize	= 20,
1292		.plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1293			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1294			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1295			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1296		.psize	= 50,
1297		.digest	= "\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3"
1298			  "\x9a\xf4\x8a\xa1\x7b\x4f\x63\xf1\x75\xd3",
1299	}, {
1300		.key	= "\x01\x02\x03\x04\x05\x06\x07\x08"
1301			  "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1302			  "\x11\x12\x13\x14\x15\x16\x17\x18\x19",
1303		.ksize	= 25,
1304		.plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1305			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1306			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1307			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1308		.psize	= 50,
1309		.digest	= "\x4c\x90\x07\xf4\x02\x62\x50\xc6\xbc\x84"
1310			  "\x14\xf9\xbf\x50\xc8\x6c\x2d\x72\x35\xda",
1311	}, {
1312		.key	= "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c",
1313		.ksize	= 20,
1314		.plaintext = "Test With Truncation",
1315		.psize	= 20,
1316		.digest	= "\x4c\x1a\x03\x42\x4b\x55\xe0\x7f\xe7\xf2"
1317			  "\x7b\xe1\xd5\x8b\xb9\x32\x4a\x9a\x5a\x04",
1318	}, {
1319		.key	= "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1320			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1321			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1322			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1323			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1324			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1325			"\xaa\xaa",
1326		.ksize	= 80,
1327		.plaintext = "Test Using Larger Than Block-Size Key - Hash Key First",
1328		.psize	= 54,
1329		.digest	= "\xaa\x4a\xe5\xe1\x52\x72\xd0\x0e\x95\x70"
1330			  "\x56\x37\xce\x8a\x3b\x55\xed\x40\x21\x12",
1331	}, {
1332		.key	= "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1333			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1334			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1335			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1336			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1337			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1338			"\xaa\xaa",
1339		.ksize	= 80,
1340		.plaintext = "Test Using Larger Than Block-Size Key and Larger Than One "
1341			   "Block-Size Data",
1342		.psize	= 73,
1343		.digest	= "\xe8\xe9\x9d\x0f\x45\x23\x7d\x78\x6d\x6b"
1344			  "\xba\xa7\x96\x5c\x78\x08\xbb\xff\x1a\x91",
1345	},
1346};
1347
1348
1349/*
1350 * SHA224 HMAC test vectors from RFC4231
1351 */
1352#define HMAC_SHA224_TEST_VECTORS    4
1353
1354static struct hash_testvec hmac_sha224_tv_template[] = {
1355	{
1356		.key    = "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1357			"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1358			"\x0b\x0b\x0b\x0b",
1359		.ksize  = 20,
1360		/*  ("Hi There") */
1361		.plaintext = "\x48\x69\x20\x54\x68\x65\x72\x65",
1362		.psize  = 8,
1363		.digest = "\x89\x6f\xb1\x12\x8a\xbb\xdf\x19"
1364			"\x68\x32\x10\x7c\xd4\x9d\xf3\x3f"
1365			"\x47\xb4\xb1\x16\x99\x12\xba\x4f"
1366			"\x53\x68\x4b\x22",
1367	}, {
1368		.key    = "Jefe",
1369		.ksize  = 4,
1370		/* ("what do ya want for nothing?") */
1371		.plaintext = "\x77\x68\x61\x74\x20\x64\x6f\x20"
1372			"\x79\x61\x20\x77\x61\x6e\x74\x20"
1373			"\x66\x6f\x72\x20\x6e\x6f\x74\x68"
1374			"\x69\x6e\x67\x3f",
1375		.psize  = 28,
1376		.digest = "\xa3\x0e\x01\x09\x8b\xc6\xdb\xbf"
1377			"\x45\x69\x0f\x3a\x7e\x9e\x6d\x0f"
1378			"\x8b\xbe\xa2\xa3\x9e\x61\x48\x00"
1379			"\x8f\xd0\x5e\x44",
1380		.np = 4,
1381		.tap    = { 7, 7, 7, 7 }
1382	}, {
1383		.key    = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1384			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1385			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1386			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1387			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1388			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1389			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1390			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1391			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1392			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1393			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1394			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1395			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1396			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1397			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1398			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1399			"\xaa\xaa\xaa",
1400		.ksize  = 131,
1401		/* ("Test Using Larger Than Block-Size Key - Hash Key First") */
1402		.plaintext = "\x54\x65\x73\x74\x20\x55\x73\x69"
1403			"\x6e\x67\x20\x4c\x61\x72\x67\x65"
1404			"\x72\x20\x54\x68\x61\x6e\x20\x42"
1405			"\x6c\x6f\x63\x6b\x2d\x53\x69\x7a"
1406			"\x65\x20\x4b\x65\x79\x20\x2d\x20"
1407			"\x48\x61\x73\x68\x20\x4b\x65\x79"
1408			"\x20\x46\x69\x72\x73\x74",
1409		.psize  = 54,
1410		.digest = "\x95\xe9\xa0\xdb\x96\x20\x95\xad"
1411			"\xae\xbe\x9b\x2d\x6f\x0d\xbc\xe2"
1412			"\xd4\x99\xf1\x12\xf2\xd2\xb7\x27"
1413			"\x3f\xa6\x87\x0e",
1414	}, {
1415		.key    = "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1416			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1417			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1418			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1419			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1420			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1421			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1422			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1423			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1424			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1425			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1426			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1427			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1428			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1429			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1430			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1431			"\xaa\xaa\xaa",
1432		.ksize  = 131,
1433		/* ("This is a test using a larger than block-size key and a")
1434		(" larger than block-size data. The key needs to be")
1435			(" hashed before being used by the HMAC algorithm.") */
1436		.plaintext = "\x54\x68\x69\x73\x20\x69\x73\x20"
1437			"\x61\x20\x74\x65\x73\x74\x20\x75"
1438			"\x73\x69\x6e\x67\x20\x61\x20\x6c"
1439			"\x61\x72\x67\x65\x72\x20\x74\x68"
1440			"\x61\x6e\x20\x62\x6c\x6f\x63\x6b"
1441			"\x2d\x73\x69\x7a\x65\x20\x6b\x65"
1442			"\x79\x20\x61\x6e\x64\x20\x61\x20"
1443			"\x6c\x61\x72\x67\x65\x72\x20\x74"
1444			"\x68\x61\x6e\x20\x62\x6c\x6f\x63"
1445			"\x6b\x2d\x73\x69\x7a\x65\x20\x64"
1446			"\x61\x74\x61\x2e\x20\x54\x68\x65"
1447			"\x20\x6b\x65\x79\x20\x6e\x65\x65"
1448			"\x64\x73\x20\x74\x6f\x20\x62\x65"
1449			"\x20\x68\x61\x73\x68\x65\x64\x20"
1450			"\x62\x65\x66\x6f\x72\x65\x20\x62"
1451			"\x65\x69\x6e\x67\x20\x75\x73\x65"
1452			"\x64\x20\x62\x79\x20\x74\x68\x65"
1453			"\x20\x48\x4d\x41\x43\x20\x61\x6c"
1454			"\x67\x6f\x72\x69\x74\x68\x6d\x2e",
1455		.psize  = 152,
1456		.digest = "\x3a\x85\x41\x66\xac\x5d\x9f\x02"
1457			"\x3f\x54\xd5\x17\xd0\xb3\x9d\xbd"
1458			"\x94\x67\x70\xdb\x9c\x2b\x95\xc9"
1459			"\xf6\xf5\x65\xd1",
1460	},
1461};
1462
1463/*
1464 * HMAC-SHA256 test vectors from
1465 * draft-ietf-ipsec-ciph-sha-256-01.txt
1466 */
1467#define HMAC_SHA256_TEST_VECTORS	10
1468
1469static struct hash_testvec hmac_sha256_tv_template[] = {
1470	{
1471		.key	= "\x01\x02\x03\x04\x05\x06\x07\x08"
1472			  "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1473			  "\x11\x12\x13\x14\x15\x16\x17\x18"
1474			  "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
1475		.ksize	= 32,
1476		.plaintext = "abc",
1477		.psize	= 3,
1478		.digest	= "\xa2\x1b\x1f\x5d\x4c\xf4\xf7\x3a"
1479			  "\x4d\xd9\x39\x75\x0f\x7a\x06\x6a"
1480			  "\x7f\x98\xcc\x13\x1c\xb1\x6a\x66"
1481			  "\x92\x75\x90\x21\xcf\xab\x81\x81",
1482	}, {
1483		.key	= "\x01\x02\x03\x04\x05\x06\x07\x08"
1484			  "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1485			  "\x11\x12\x13\x14\x15\x16\x17\x18"
1486			  "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
1487		.ksize	= 32,
1488		.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
1489		.psize	= 56,
1490		.digest	= "\x10\x4f\xdc\x12\x57\x32\x8f\x08"
1491			  "\x18\x4b\xa7\x31\x31\xc5\x3c\xae"
1492			  "\xe6\x98\xe3\x61\x19\x42\x11\x49"
1493			  "\xea\x8c\x71\x24\x56\x69\x7d\x30",
1494	}, {
1495		.key	= "\x01\x02\x03\x04\x05\x06\x07\x08"
1496			  "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1497			  "\x11\x12\x13\x14\x15\x16\x17\x18"
1498			  "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20",
1499		.ksize	= 32,
1500		.plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
1501			   "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
1502		.psize	= 112,
1503		.digest	= "\x47\x03\x05\xfc\x7e\x40\xfe\x34"
1504			  "\xd3\xee\xb3\xe7\x73\xd9\x5a\xab"
1505			  "\x73\xac\xf0\xfd\x06\x04\x47\xa5"
1506			  "\xeb\x45\x95\xbf\x33\xa9\xd1\xa3",
1507	}, {
1508		.key	= "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1509			"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
1510			"\x0b\x0b\x0b\x0b\x0b\x0b",
1511		.ksize	= 32,
1512		.plaintext = "Hi There",
1513		.psize	= 8,
1514		.digest	= "\x19\x8a\x60\x7e\xb4\x4b\xfb\xc6"
1515			  "\x99\x03\xa0\xf1\xcf\x2b\xbd\xc5"
1516			  "\xba\x0a\xa3\xf3\xd9\xae\x3c\x1c"
1517			  "\x7a\x3b\x16\x96\xa0\xb6\x8c\xf7",
1518	}, {
1519		.key	= "Jefe",
1520		.ksize	= 4,
1521		.plaintext = "what do ya want for nothing?",
1522		.psize	= 28,
1523		.digest	= "\x5b\xdc\xc1\x46\xbf\x60\x75\x4e"
1524			  "\x6a\x04\x24\x26\x08\x95\x75\xc7"
1525			  "\x5a\x00\x3f\x08\x9d\x27\x39\x83"
1526			  "\x9d\xec\x58\xb9\x64\xec\x38\x43",
1527		.np	= 2,
1528		.tap	= { 14, 14 }
1529	}, {
1530		.key	= "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1531			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1532			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa",
1533		.ksize	= 32,
1534		.plaintext = "\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1535			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1536			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd"
1537			"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd",
1538		.psize	= 50,
1539		.digest	= "\xcd\xcb\x12\x20\xd1\xec\xcc\xea"
1540			  "\x91\xe5\x3a\xba\x30\x92\xf9\x62"
1541			  "\xe5\x49\xfe\x6c\xe9\xed\x7f\xdc"
1542			  "\x43\x19\x1f\xbd\xe4\x5c\x30\xb0",
1543	}, {
1544		.key	= "\x01\x02\x03\x04\x05\x06\x07\x08"
1545			  "\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10"
1546			  "\x11\x12\x13\x14\x15\x16\x17\x18"
1547			  "\x19\x1a\x1b\x1c\x1d\x1e\x1f\x20"
1548			  "\x21\x22\x23\x24\x25",
1549		.ksize	= 37,
1550		.plaintext = "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1551			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1552			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
1553			"\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd",
1554		.psize	= 50,
1555		.digest	= "\xd4\x63\x3c\x17\xf6\xfb\x8d\x74"
1556			  "\x4c\x66\xde\xe0\xf8\xf0\x74\x55"
1557			  "\x6e\xc4\xaf\x55\xef\x07\x99\x85"
1558			  "\x41\x46\x8e\xb4\x9b\xd2\xe9\x17",
1559	}, {
1560		.key	= "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
1561			"\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
1562			"\x0c\x0c\x0c\x0c\x0c\x0c",
1563		.ksize	= 32,
1564		.plaintext = "Test With Truncation",
1565		.psize	= 20,
1566		.digest	= "\x75\x46\xaf\x01\x84\x1f\xc0\x9b"
1567			  "\x1a\xb9\xc3\x74\x9a\x5f\x1c\x17"
1568			  "\xd4\xf5\x89\x66\x8a\x58\x7b\x27"
1569			  "\x00\xa9\xc9\x7c\x11\x93\xcf\x42",
1570	}, {
1571		.key	= "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1572			"\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
1573			"\xaa\xaa\xaa\xaa\xaa\

Large files files are truncated, but you can click here to view the full file