1 /* 2 * Quick & dirty crypto testing module. 3 * 4 * This will only exist until we have a better testing mechanism 5 * (e.g. a char device). 6 * 7 * Copyright (c) 2002 James Morris <jmorris@intercode.com.au> 8 * Copyright (c) 2002 Jean-Francois Dive <jef@linuxbe.org> 9 * 10 * This program is free software; you can redistribute it and/or modify it 11 * under the terms of the GNU General Public License as published by the Free 12 * Software Foundation; either version 2 of the License, or (at your option) 13 * any later version. 14 * 15 * 14 - 09 - 2003 Changes by Kartikey Mahendra Bhatt 16 * 17 */ 18 #ifndef _CRYPTO_TCRYPT_H 19 #define _CRYPTO_TCRYPT_H 20 21 #define MAX_DIGEST_SIZE 64 22 #define MAX_TAP 8 23 24 #define MAX_KEYLEN 56 25 #define MAX_IVLEN 32 26 27 struct hash_testvec { 28 char plaintext[128]; 29 unsigned char psize; 30 char digest[MAX_DIGEST_SIZE]; 31 unsigned char np; 32 unsigned char tap[MAX_TAP]; 33 char key[128]; /* only used with keyed hash algorithms */ 34 unsigned char ksize; 35 }; 36 37 struct hmac_testvec { 38 char key[128]; 39 unsigned char ksize; 40 char plaintext[128]; 41 unsigned char psize; 42 char digest[MAX_DIGEST_SIZE]; 43 unsigned char np; 44 unsigned char tap[MAX_TAP]; 45 }; 46 47 struct cipher_testvec { 48 unsigned char fail; 49 unsigned char wk; /* weak key flag */ 50 char key[MAX_KEYLEN]; 51 unsigned char klen; 52 char iv[MAX_IVLEN]; 53 char input[48]; 54 unsigned char ilen; 55 char result[48]; 56 unsigned char rlen; 57 int np; 58 unsigned char tap[MAX_TAP]; 59 }; 60 61 /* 62 * MD4 test vectors from RFC1320 63 */ 64 #define MD4_TEST_VECTORS 7 65 66 struct hash_testvec md4_tv_template [] = { 67 { 68 .plaintext = "", 69 .digest = { 0x31, 0xd6, 0xcf, 0xe0, 0xd1, 0x6a, 0xe9, 0x31, 70 0xb7, 0x3c, 0x59, 0xd7, 0xe0, 0xc0, 0x89, 0xc0 }, 71 }, { 72 .plaintext = "a", 73 .psize = 1, 74 .digest = { 0xbd, 0xe5, 0x2c, 0xb3, 0x1d, 0xe3, 0x3e, 0x46, 75 0x24, 0x5e, 0x05, 0xfb, 0xdb, 0xd6, 0xfb, 0x24 }, 76 }, { 77 .plaintext = "abc", 78 .psize = 3, 79 .digest = { 0xa4, 0x48, 0x01, 0x7a, 0xaf, 0x21, 0xd8, 0x52, 80 0x5f, 0xc1, 0x0a, 0xe8, 0x7a, 0xa6, 0x72, 0x9d }, 81 }, { 82 .plaintext = "message digest", 83 .psize = 14, 84 .digest = { 0xd9, 0x13, 0x0a, 0x81, 0x64, 0x54, 0x9f, 0xe8, 85 0x18, 0x87, 0x48, 0x06, 0xe1, 0xc7, 0x01, 0x4b }, 86 }, { 87 .plaintext = "abcdefghijklmnopqrstuvwxyz", 88 .psize = 26, 89 .digest = { 0xd7, 0x9e, 0x1c, 0x30, 0x8a, 0xa5, 0xbb, 0xcd, 90 0xee, 0xa8, 0xed, 0x63, 0xdf, 0x41, 0x2d, 0xa9 }, 91 .np = 2, 92 .tap = { 13, 13 }, 93 }, { 94 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 95 .psize = 62, 96 .digest = { 0x04, 0x3f, 0x85, 0x82, 0xf2, 0x41, 0xdb, 0x35, 97 0x1c, 0xe6, 0x27, 0xe1, 0x53, 0xe7, 0xf0, 0xe4 }, 98 }, { 99 .plaintext = "123456789012345678901234567890123456789012345678901234567890123" 100 "45678901234567890", 101 .psize = 80, 102 .digest = { 0xe3, 0x3b, 0x4d, 0xdc, 0x9c, 0x38, 0xf2, 0x19, 103 0x9c, 0x3e, 0x7b, 0x16, 0x4f, 0xcc, 0x05, 0x36 }, 104 }, 105 }; 106 107 /* 108 * MD5 test vectors from RFC1321 109 */ 110 #define MD5_TEST_VECTORS 7 111 112 struct hash_testvec md5_tv_template[] = { 113 { 114 .digest = { 0xd4, 0x1d, 0x8c, 0xd9, 0x8f, 0x00, 0xb2, 0x04, 115 0xe9, 0x80, 0x09, 0x98, 0xec, 0xf8, 0x42, 0x7e }, 116 }, { 117 .plaintext = "a", 118 .psize = 1, 119 .digest = { 0x0c, 0xc1, 0x75, 0xb9, 0xc0, 0xf1, 0xb6, 0xa8, 120 0x31, 0xc3, 0x99, 0xe2, 0x69, 0x77, 0x26, 0x61 }, 121 }, { 122 .plaintext = "abc", 123 .psize = 3, 124 .digest = { 0x90, 0x01, 0x50, 0x98, 0x3c, 0xd2, 0x4f, 0xb0, 125 0xd6, 0x96, 0x3f, 0x7d, 0x28, 0xe1, 0x7f, 0x72 }, 126 }, { 127 .plaintext = "message digest", 128 .psize = 14, 129 .digest = { 0xf9, 0x6b, 0x69, 0x7d, 0x7c, 0xb7, 0x93, 0x8d, 130 0x52, 0x5a, 0x2f, 0x31, 0xaa, 0xf1, 0x61, 0xd0 }, 131 }, { 132 .plaintext = "abcdefghijklmnopqrstuvwxyz", 133 .psize = 26, 134 .digest = { 0xc3, 0xfc, 0xd3, 0xd7, 0x61, 0x92, 0xe4, 0x00, 135 0x7d, 0xfb, 0x49, 0x6c, 0xca, 0x67, 0xe1, 0x3b }, 136 .np = 2, 137 .tap = {13, 13} 138 }, { 139 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 140 .psize = 62, 141 .digest = { 0xd1, 0x74, 0xab, 0x98, 0xd2, 0x77, 0xd9, 0xf5, 142 0xa5, 0x61, 0x1c, 0x2c, 0x9f, 0x41, 0x9d, 0x9f }, 143 }, { 144 .plaintext = "12345678901234567890123456789012345678901234567890123456789012" 145 "345678901234567890", 146 .psize = 80, 147 .digest = { 0x57, 0xed, 0xf4, 0xa2, 0x2b, 0xe3, 0xc9, 0x55, 148 0xac, 0x49, 0xda, 0x2e, 0x21, 0x07, 0xb6, 0x7a }, 149 } 150 }; 151 152 /* 153 * SHA1 test vectors from from FIPS PUB 180-1 154 */ 155 #define SHA1_TEST_VECTORS 2 156 157 struct hash_testvec sha1_tv_template[] = { 158 { 159 .plaintext = "abc", 160 .psize = 3, 161 .digest = { 0xa9, 0x99, 0x3e, 0x36, 0x47, 0x06, 0x81, 0x6a, 0xba, 0x3e, 162 0x25, 0x71, 0x78, 0x50, 0xc2, 0x6c, 0x9c, 0xd0, 0xd8, 0x9d }, 163 }, { 164 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 165 .psize = 56, 166 .digest = { 0x84, 0x98, 0x3e, 0x44, 0x1c, 0x3b, 0xd2, 0x6e, 0xba, 0xae, 167 0x4a, 0xa1, 0xf9, 0x51, 0x29, 0xe5, 0xe5, 0x46, 0x70, 0xf1 }, 168 .np = 2, 169 .tap = { 28, 28 } 170 } 171 }; 172 173 /* 174 * SHA256 test vectors from from NIST 175 */ 176 #define SHA256_TEST_VECTORS 2 177 178 struct hash_testvec sha256_tv_template[] = { 179 { 180 .plaintext = "abc", 181 .psize = 3, 182 .digest = { 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, 183 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23, 184 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, 185 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad }, 186 }, { 187 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 188 .psize = 56, 189 .digest = { 0x24, 0x8d, 0x6a, 0x61, 0xd2, 0x06, 0x38, 0xb8, 190 0xe5, 0xc0, 0x26, 0x93, 0x0c, 0x3e, 0x60, 0x39, 191 0xa3, 0x3c, 0xe4, 0x59, 0x64, 0xff, 0x21, 0x67, 192 0xf6, 0xec, 0xed, 0xd4, 0x19, 0xdb, 0x06, 0xc1 }, 193 .np = 2, 194 .tap = { 28, 28 } 195 }, 196 }; 197 198 /* 199 * SHA384 test vectors from from NIST and kerneli 200 */ 201 #define SHA384_TEST_VECTORS 4 202 203 struct hash_testvec sha384_tv_template[] = { 204 { 205 .plaintext= "abc", 206 .psize = 3, 207 .digest = { 0xcb, 0x00, 0x75, 0x3f, 0x45, 0xa3, 0x5e, 0x8b, 208 0xb5, 0xa0, 0x3d, 0x69, 0x9a, 0xc6, 0x50, 0x07, 209 0x27, 0x2c, 0x32, 0xab, 0x0e, 0xde, 0xd1, 0x63, 210 0x1a, 0x8b, 0x60, 0x5a, 0x43, 0xff, 0x5b, 0xed, 211 0x80, 0x86, 0x07, 0x2b, 0xa1, 0xe7, 0xcc, 0x23, 212 0x58, 0xba, 0xec, 0xa1, 0x34, 0xc8, 0x25, 0xa7 }, 213 }, { 214 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 215 .psize = 56, 216 .digest = { 0x33, 0x91, 0xfd, 0xdd, 0xfc, 0x8d, 0xc7, 0x39, 217 0x37, 0x07, 0xa6, 0x5b, 0x1b, 0x47, 0x09, 0x39, 218 0x7c, 0xf8, 0xb1, 0xd1, 0x62, 0xaf, 0x05, 0xab, 219 0xfe, 0x8f, 0x45, 0x0d, 0xe5, 0xf3, 0x6b, 0xc6, 220 0xb0, 0x45, 0x5a, 0x85, 0x20, 0xbc, 0x4e, 0x6f, 221 0x5f, 0xe9, 0x5b, 0x1f, 0xe3, 0xc8, 0x45, 0x2b}, 222 }, { 223 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn" 224 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", 225 .psize = 112, 226 .digest = { 0x09, 0x33, 0x0c, 0x33, 0xf7, 0x11, 0x47, 0xe8, 227 0x3d, 0x19, 0x2f, 0xc7, 0x82, 0xcd, 0x1b, 0x47, 228 0x53, 0x11, 0x1b, 0x17, 0x3b, 0x3b, 0x05, 0xd2, 229 0x2f, 0xa0, 0x80, 0x86, 0xe3, 0xb0, 0xf7, 0x12, 230 0xfc, 0xc7, 0xc7, 0x1a, 0x55, 0x7e, 0x2d, 0xb9, 231 0x66, 0xc3, 0xe9, 0xfa, 0x91, 0x74, 0x60, 0x39 }, 232 }, { 233 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd" 234 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz", 235 .psize = 104, 236 .digest = { 0x3d, 0x20, 0x89, 0x73, 0xab, 0x35, 0x08, 0xdb, 237 0xbd, 0x7e, 0x2c, 0x28, 0x62, 0xba, 0x29, 0x0a, 238 0xd3, 0x01, 0x0e, 0x49, 0x78, 0xc1, 0x98, 0xdc, 239 0x4d, 0x8f, 0xd0, 0x14, 0xe5, 0x82, 0x82, 0x3a, 240 0x89, 0xe1, 0x6f, 0x9b, 0x2a, 0x7b, 0xbc, 0x1a, 241 0xc9, 0x38, 0xe2, 0xd1, 0x99, 0xe8, 0xbe, 0xa4 }, 242 .np = 4, 243 .tap = { 26, 26, 26, 26 } 244 }, 245 }; 246 247 /* 248 * SHA512 test vectors from from NIST and kerneli 249 */ 250 #define SHA512_TEST_VECTORS 4 251 252 struct hash_testvec sha512_tv_template[] = { 253 { 254 .plaintext = "abc", 255 .psize = 3, 256 .digest = { 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba, 257 0xcc, 0x41, 0x73, 0x49, 0xae, 0x20, 0x41, 0x31, 258 0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2, 259 0x0a, 0x9e, 0xee, 0xe6, 0x4b, 0x55, 0xd3, 0x9a, 260 0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8, 261 0x36, 0xba, 0x3c, 0x23, 0xa3, 0xfe, 0xeb, 0xbd, 262 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e, 263 0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, 0x9f }, 264 }, { 265 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 266 .psize = 56, 267 .digest = { 0x20, 0x4a, 0x8f, 0xc6, 0xdd, 0xa8, 0x2f, 0x0a, 268 0x0c, 0xed, 0x7b, 0xeb, 0x8e, 0x08, 0xa4, 0x16, 269 0x57, 0xc1, 0x6e, 0xf4, 0x68, 0xb2, 0x28, 0xa8, 270 0x27, 0x9b, 0xe3, 0x31, 0xa7, 0x03, 0xc3, 0x35, 271 0x96, 0xfd, 0x15, 0xc1, 0x3b, 0x1b, 0x07, 0xf9, 272 0xaa, 0x1d, 0x3b, 0xea, 0x57, 0x78, 0x9c, 0xa0, 273 0x31, 0xad, 0x85, 0xc7, 0xa7, 0x1d, 0xd7, 0x03, 274 0x54, 0xec, 0x63, 0x12, 0x38, 0xca, 0x34, 0x45 }, 275 }, { 276 .plaintext = "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmn" 277 "hijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", 278 .psize = 112, 279 .digest = { 0x8e, 0x95, 0x9b, 0x75, 0xda, 0xe3, 0x13, 0xda, 280 0x8c, 0xf4, 0xf7, 0x28, 0x14, 0xfc, 0x14, 0x3f, 281 0x8f, 0x77, 0x79, 0xc6, 0xeb, 0x9f, 0x7f, 0xa1, 282 0x72, 0x99, 0xae, 0xad, 0xb6, 0x88, 0x90, 0x18, 283 0x50, 0x1d, 0x28, 0x9e, 0x49, 0x00, 0xf7, 0xe4, 284 0x33, 0x1b, 0x99, 0xde, 0xc4, 0xb5, 0x43, 0x3a, 285 0xc7, 0xd3, 0x29, 0xee, 0xb6, 0xdd, 0x26, 0x54, 286 0x5e, 0x96, 0xe5, 0x5b, 0x87, 0x4b, 0xe9, 0x09 }, 287 }, { 288 .plaintext = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcd" 289 "efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz", 290 .psize = 104, 291 .digest = { 0x93, 0x0d, 0x0c, 0xef, 0xcb, 0x30, 0xff, 0x11, 292 0x33, 0xb6, 0x89, 0x81, 0x21, 0xf1, 0xcf, 0x3d, 293 0x27, 0x57, 0x8a, 0xfc, 0xaf, 0xe8, 0x67, 0x7c, 294 0x52, 0x57, 0xcf, 0x06, 0x99, 0x11, 0xf7, 0x5d, 295 0x8f, 0x58, 0x31, 0xb5, 0x6e, 0xbf, 0xda, 0x67, 296 0xb2, 0x78, 0xe6, 0x6d, 0xff, 0x8b, 0x84, 0xfe, 297 0x2b, 0x28, 0x70, 0xf7, 0x42, 0xa5, 0x80, 0xd8, 298 0xed, 0xb4, 0x19, 0x87, 0x23, 0x28, 0x50, 0xc9 }, 299 .np = 4, 300 .tap = { 26, 26, 26, 26 } 301 }, 302 }; 303 304 #ifdef CONFIG_CRYPTO_HMAC 305 /* 306 * HMAC-MD5 test vectors from RFC2202 307 * (These need to be fixed to not use strlen). 308 */ 309 #define HMAC_MD5_TEST_VECTORS 7 310 311 struct hmac_testvec hmac_md5_tv_template[] = 312 { 313 { 314 .key = { [0 ... 15] = 0x0b }, 315 .ksize = 16, 316 .plaintext = "Hi There", 317 .psize = 8, 318 .digest = { 0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c, 319 0x13, 0xf4, 0x8e, 0xf8, 0x15, 0x8b, 0xfc, 0x9d }, 320 }, { 321 .key = { 'J', 'e', 'f', 'e' }, 322 .ksize = 4, 323 .plaintext = "what do ya want for nothing?", 324 .psize = 28, 325 .digest = { 0x75, 0x0c, 0x78, 0x3e, 0x6a, 0xb0, 0xb5, 0x03, 326 0xea, 0xa8, 0x6e, 0x31, 0x0a, 0x5d, 0xb7, 0x38 }, 327 .np = 2, 328 .tap = {14, 14} 329 }, { 330 .key = { [0 ... 15] = 0xaa }, 331 .ksize = 16, 332 .plaintext = { [0 ... 49] = 0xdd }, 333 .psize = 50, 334 .digest = { 0x56, 0xbe, 0x34, 0x52, 0x1d, 0x14, 0x4c, 0x88, 335 0xdb, 0xb8, 0xc7, 0x33, 0xf0, 0xe8, 0xb3, 0xf6 }, 336 }, { 337 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 338 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 339 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, }, 340 .ksize = 25, 341 .plaintext = { [0 ... 49] = 0xcd }, 342 .psize = 50, 343 .digest = { 0x69, 0x7e, 0xaf, 0x0a, 0xca, 0x3a, 0x3a, 0xea, 344 0x3a, 0x75, 0x16, 0x47, 0x46, 0xff, 0xaa, 0x79 }, 345 }, { 346 .key = { [0 ... 15] = 0x0c }, 347 .ksize = 16, 348 .plaintext = "Test With Truncation", 349 .psize = 20, 350 .digest = { 0x56, 0x46, 0x1e, 0xf2, 0x34, 0x2e, 0xdc, 0x00, 351 0xf9, 0xba, 0xb9, 0x95, 0x69, 0x0e, 0xfd, 0x4c }, 352 }, { 353 .key = { [0 ... 79] = 0xaa }, 354 .ksize = 80, 355 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First", 356 .psize = 54, 357 .digest = { 0x6b, 0x1a, 0xb7, 0xfe, 0x4b, 0xd7, 0xbf, 0x8f, 358 0x0b, 0x62, 0xe6, 0xce, 0x61, 0xb9, 0xd0, 0xcd }, 359 }, { 360 .key = { [0 ... 79] = 0xaa }, 361 .ksize = 80, 362 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One " 363 "Block-Size Data", 364 .psize = 73, 365 .digest = { 0x6f, 0x63, 0x0f, 0xad, 0x67, 0xcd, 0xa0, 0xee, 366 0x1f, 0xb1, 0xf5, 0x62, 0xdb, 0x3a, 0xa5, 0x3e }, 367 }, 368 }; 369 370 /* 371 * HMAC-SHA1 test vectors from RFC2202 372 */ 373 #define HMAC_SHA1_TEST_VECTORS 7 374 375 struct hmac_testvec hmac_sha1_tv_template[] = { 376 { 377 .key = { [0 ... 19] = 0x0b }, 378 .ksize = 20, 379 .plaintext = "Hi There", 380 .psize = 8, 381 .digest = { 0xb6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64, 382 0xe2, 0x8b, 0xc0, 0xb6, 0xfb, 0x37, 0x8c, 0x8e, 0xf1, 383 0x46, 0xbe }, 384 }, { 385 .key = { 'J', 'e', 'f', 'e' }, 386 .ksize = 4, 387 .plaintext = "what do ya want for nothing?", 388 .psize = 28, 389 .digest = { 0xef, 0xfc, 0xdf, 0x6a, 0xe5, 0xeb, 0x2f, 0xa2, 0xd2, 0x74, 390 0x16, 0xd5, 0xf1, 0x84, 0xdf, 0x9c, 0x25, 0x9a, 0x7c, 0x79 }, 391 .np = 2, 392 .tap = { 14, 14 } 393 }, { 394 .key = { [0 ... 19] = 0xaa }, 395 .ksize = 20, 396 .plaintext = { [0 ... 49] = 0xdd }, 397 .psize = 50, 398 .digest = { 0x12, 0x5d, 0x73, 0x42, 0xb9, 0xac, 0x11, 0xcd, 0x91, 0xa3, 399 0x9a, 0xf4, 0x8a, 0xa1, 0x7b, 0x4f, 0x63, 0xf1, 0x75, 0xd3 }, 400 }, { 401 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 402 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 403 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19 }, 404 .ksize = 25, 405 .plaintext = { [0 ... 49] = 0xcd }, 406 .psize = 50, 407 .digest = { 0x4c, 0x90, 0x07, 0xf4, 0x02, 0x62, 0x50, 0xc6, 0xbc, 0x84, 408 0x14, 0xf9, 0xbf, 0x50, 0xc8, 0x6c, 0x2d, 0x72, 0x35, 0xda }, 409 }, { 410 .key = { [0 ... 19] = 0x0c }, 411 .ksize = 20, 412 .plaintext = "Test With Truncation", 413 .psize = 20, 414 .digest = { 0x4c, 0x1a, 0x03, 0x42, 0x4b, 0x55, 0xe0, 0x7f, 0xe7, 0xf2, 415 0x7b, 0xe1, 0xd5, 0x8b, 0xb9, 0x32, 0x4a, 0x9a, 0x5a, 0x04 }, 416 }, { 417 .key = { [0 ... 79] = 0xaa }, 418 .ksize = 80, 419 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First", 420 .psize = 54, 421 .digest = { 0xaa, 0x4a, 0xe5, 0xe1, 0x52, 0x72, 0xd0, 0x0e, 0x95, 0x70, 422 0x56, 0x37, 0xce, 0x8a, 0x3b, 0x55, 0xed, 0x40, 0x21, 0x12 }, 423 }, { 424 .key = { [0 ... 79] = 0xaa }, 425 .ksize = 80, 426 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than One " 427 "Block-Size Data", 428 .psize = 73, 429 .digest = { 0xe8, 0xe9, 0x9d, 0x0f, 0x45, 0x23, 0x7d, 0x78, 0x6d, 0x6b, 430 0xba, 0xa7, 0x96, 0x5c, 0x78, 0x08, 0xbb, 0xff, 0x1a, 0x91 }, 431 }, 432 }; 433 434 /* 435 * HMAC-SHA256 test vectors from 436 * draft-ietf-ipsec-ciph-sha-256-01.txt 437 */ 438 #define HMAC_SHA256_TEST_VECTORS 10 439 440 struct hmac_testvec hmac_sha256_tv_template[] = { 441 { 442 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 443 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 444 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 445 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20}, 446 .ksize = 32, 447 .plaintext = "abc", 448 .psize = 3, 449 .digest = { 0xa2, 0x1b, 0x1f, 0x5d, 0x4c, 0xf4, 0xf7, 0x3a, 450 0x4d, 0xd9, 0x39, 0x75, 0x0f, 0x7a, 0x06, 0x6a, 451 0x7f, 0x98, 0xcc, 0x13, 0x1c, 0xb1, 0x6a, 0x66, 452 0x92, 0x75, 0x90, 0x21, 0xcf, 0xab, 0x81, 0x81 }, 453 }, { 454 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 455 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 456 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 457 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20 }, 458 .ksize = 32, 459 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 460 .psize = 56, 461 .digest = { 0x10, 0x4f, 0xdc, 0x12, 0x57, 0x32, 0x8f, 0x08, 462 0x18, 0x4b, 0xa7, 0x31, 0x31, 0xc5, 0x3c, 0xae, 463 0xe6, 0x98, 0xe3, 0x61, 0x19, 0x42, 0x11, 0x49, 464 0xea, 0x8c, 0x71, 0x24, 0x56, 0x69, 0x7d, 0x30 }, 465 }, { 466 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 467 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 468 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 469 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20 }, 470 .ksize = 32, 471 .plaintext = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" 472 "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 473 .psize = 112, 474 .digest = { 0x47, 0x03, 0x05, 0xfc, 0x7e, 0x40, 0xfe, 0x34, 475 0xd3, 0xee, 0xb3, 0xe7, 0x73, 0xd9, 0x5a, 0xab, 476 0x73, 0xac, 0xf0, 0xfd, 0x06, 0x04, 0x47, 0xa5, 477 0xeb, 0x45, 0x95, 0xbf, 0x33, 0xa9, 0xd1, 0xa3 }, 478 }, { 479 .key = { [0 ... 31] = 0x0b }, 480 .ksize = 32, 481 .plaintext = "Hi There", 482 .psize = 8, 483 .digest = { 0x19, 0x8a, 0x60, 0x7e, 0xb4, 0x4b, 0xfb, 0xc6, 484 0x99, 0x03, 0xa0, 0xf1, 0xcf, 0x2b, 0xbd, 0xc5, 485 0xba, 0x0a, 0xa3, 0xf3, 0xd9, 0xae, 0x3c, 0x1c, 486 0x7a, 0x3b, 0x16, 0x96, 0xa0, 0xb6, 0x8c, 0xf7 }, 487 }, { 488 .key = "Jefe", 489 .ksize = 4, 490 .plaintext = "what do ya want for nothing?", 491 .psize = 28, 492 .digest = { 0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e, 493 0x6a, 0x04, 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7, 494 0x5a, 0x00, 0x3f, 0x08, 0x9d, 0x27, 0x39, 0x83, 495 0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec, 0x38, 0x43 }, 496 .np = 2, 497 .tap = { 14, 14 } 498 }, { 499 .key = { [0 ... 31] = 0xaa }, 500 .ksize = 32, 501 .plaintext = { [0 ... 49] = 0xdd }, 502 .psize = 50, 503 .digest = { 0xcd, 0xcb, 0x12, 0x20, 0xd1, 0xec, 0xcc, 0xea, 504 0x91, 0xe5, 0x3a, 0xba, 0x30, 0x92, 0xf9, 0x62, 505 0xe5, 0x49, 0xfe, 0x6c, 0xe9, 0xed, 0x7f, 0xdc, 506 0x43, 0x19, 0x1f, 0xbd, 0xe4, 0x5c, 0x30, 0xb0 }, 507 }, { 508 .key = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 509 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 510 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 511 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 512 0x21, 0x22, 0x23, 0x24, 0x25 }, 513 .ksize = 37, 514 .plaintext = { [0 ... 49] = 0xcd }, 515 .psize = 50, 516 .digest = { 0xd4, 0x63, 0x3c, 0x17, 0xf6, 0xfb, 0x8d, 0x74, 517 0x4c, 0x66, 0xde, 0xe0, 0xf8, 0xf0, 0x74, 0x55, 518 0x6e, 0xc4, 0xaf, 0x55, 0xef, 0x07, 0x99, 0x85, 519 0x41, 0x46, 0x8e, 0xb4, 0x9b, 0xd2, 0xe9, 0x17 }, 520 }, { 521 .key = { [0 ... 31] = 0x0c }, 522 .ksize = 32, 523 .plaintext = "Test With Truncation", 524 .psize = 20, 525 .digest = { 0x75, 0x46, 0xaf, 0x01, 0x84, 0x1f, 0xc0, 0x9b, 526 0x1a, 0xb9, 0xc3, 0x74, 0x9a, 0x5f, 0x1c, 0x17, 527 0xd4, 0xf5, 0x89, 0x66, 0x8a, 0x58, 0x7b, 0x27, 528 0x00, 0xa9, 0xc9, 0x7c, 0x11, 0x93, 0xcf, 0x42 }, 529 }, { 530 .key = { [0 ... 79] = 0xaa }, 531 .ksize = 80, 532 .plaintext = "Test Using Larger Than Block-Size Key - Hash Key First", 533 .psize = 54, 534 .digest = { 0x69, 0x53, 0x02, 0x5e, 0xd9, 0x6f, 0x0c, 0x09, 535 0xf8, 0x0a, 0x96, 0xf7, 0x8e, 0x65, 0x38, 0xdb, 536 0xe2, 0xe7, 0xb8, 0x20, 0xe3, 0xdd, 0x97, 0x0e, 537 0x7d, 0xdd, 0x39, 0x09, 0x1b, 0x32, 0x35, 0x2f }, 538 }, { 539 .key = { [0 ... 79] = 0xaa }, 540 .ksize = 80, 541 .plaintext = "Test Using Larger Than Block-Size Key and Larger Than " 542 "One Block-Size Data", 543 .psize = 73, 544 .digest = { 0x63, 0x55, 0xac, 0x22, 0xe8, 0x90, 0xd0, 0xa3, 545 0xc8, 0x48, 0x1a, 0x5c, 0xa4, 0x82, 0x5b, 0xc8, 546 0x84, 0xd3, 0xe7, 0xa1, 0xff, 0x98, 0xa2, 0xfc, 547 0x2a, 0xc7, 0xd8, 0xe0, 0x64, 0xc3, 0xb2, 0xe6 }, 548 }, 549 }; 550 551 #endif /* CONFIG_CRYPTO_HMAC */ 552 553 /* 554 * WHIRLPOOL test vectors from Whirlpool package 555 * by Vincent Rijmen and Paulo S. L. M. Barreto as part of the NESSIE 556 * submission 557 */ 558 #define WP512_TEST_VECTORS 8 559 560 struct hash_testvec wp512_tv_template[] = { 561 { 562 .plaintext = "", 563 .psize = 0, 564 .digest = { 0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66, 565 0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26, 566 0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8, 567 0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7, 568 0x3E, 0x83, 0xBE, 0x69, 0x8B, 0x28, 0x8F, 0xEB, 569 0xCF, 0x88, 0xE3, 0xE0, 0x3C, 0x4F, 0x07, 0x57, 570 0xEA, 0x89, 0x64, 0xE5, 0x9B, 0x63, 0xD9, 0x37, 571 0x08, 0xB1, 0x38, 0xCC, 0x42, 0xA6, 0x6E, 0xB3 }, 572 573 574 }, { 575 .plaintext = "a", 576 .psize = 1, 577 .digest = { 0x8A, 0xCA, 0x26, 0x02, 0x79, 0x2A, 0xEC, 0x6F, 578 0x11, 0xA6, 0x72, 0x06, 0x53, 0x1F, 0xB7, 0xD7, 579 0xF0, 0xDF, 0xF5, 0x94, 0x13, 0x14, 0x5E, 0x69, 580 0x73, 0xC4, 0x50, 0x01, 0xD0, 0x08, 0x7B, 0x42, 581 0xD1, 0x1B, 0xC6, 0x45, 0x41, 0x3A, 0xEF, 0xF6, 582 0x3A, 0x42, 0x39, 0x1A, 0x39, 0x14, 0x5A, 0x59, 583 0x1A, 0x92, 0x20, 0x0D, 0x56, 0x01, 0x95, 0xE5, 584 0x3B, 0x47, 0x85, 0x84, 0xFD, 0xAE, 0x23, 0x1A }, 585 }, { 586 .plaintext = "abc", 587 .psize = 3, 588 .digest = { 0x4E, 0x24, 0x48, 0xA4, 0xC6, 0xF4, 0x86, 0xBB, 589 0x16, 0xB6, 0x56, 0x2C, 0x73, 0xB4, 0x02, 0x0B, 590 0xF3, 0x04, 0x3E, 0x3A, 0x73, 0x1B, 0xCE, 0x72, 591 0x1A, 0xE1, 0xB3, 0x03, 0xD9, 0x7E, 0x6D, 0x4C, 592 0x71, 0x81, 0xEE, 0xBD, 0xB6, 0xC5, 0x7E, 0x27, 593 0x7D, 0x0E, 0x34, 0x95, 0x71, 0x14, 0xCB, 0xD6, 594 0xC7, 0x97, 0xFC, 0x9D, 0x95, 0xD8, 0xB5, 0x82, 595 0xD2, 0x25, 0x29, 0x20, 0x76, 0xD4, 0xEE, 0xF5 }, 596 }, { 597 .plaintext = "message digest", 598 .psize = 14, 599 .digest = { 0x37, 0x8C, 0x84, 0xA4, 0x12, 0x6E, 0x2D, 0xC6, 600 0xE5, 0x6D, 0xCC, 0x74, 0x58, 0x37, 0x7A, 0xAC, 601 0x83, 0x8D, 0x00, 0x03, 0x22, 0x30, 0xF5, 0x3C, 602 0xE1, 0xF5, 0x70, 0x0C, 0x0F, 0xFB, 0x4D, 0x3B, 603 0x84, 0x21, 0x55, 0x76, 0x59, 0xEF, 0x55, 0xC1, 604 0x06, 0xB4, 0xB5, 0x2A, 0xC5, 0xA4, 0xAA, 0xA6, 605 0x92, 0xED, 0x92, 0x00, 0x52, 0x83, 0x8F, 0x33, 606 0x62, 0xE8, 0x6D, 0xBD, 0x37, 0xA8, 0x90, 0x3E }, 607 }, { 608 .plaintext = "abcdefghijklmnopqrstuvwxyz", 609 .psize = 26, 610 .digest = { 0xF1, 0xD7, 0x54, 0x66, 0x26, 0x36, 0xFF, 0xE9, 611 0x2C, 0x82, 0xEB, 0xB9, 0x21, 0x2A, 0x48, 0x4A, 612 0x8D, 0x38, 0x63, 0x1E, 0xAD, 0x42, 0x38, 0xF5, 613 0x44, 0x2E, 0xE1, 0x3B, 0x80, 0x54, 0xE4, 0x1B, 614 0x08, 0xBF, 0x2A, 0x92, 0x51, 0xC3, 0x0B, 0x6A, 615 0x0B, 0x8A, 0xAE, 0x86, 0x17, 0x7A, 0xB4, 0xA6, 616 0xF6, 0x8F, 0x67, 0x3E, 0x72, 0x07, 0x86, 0x5D, 617 0x5D, 0x98, 0x19, 0xA3, 0xDB, 0xA4, 0xEB, 0x3B }, 618 }, { 619 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 620 "abcdefghijklmnopqrstuvwxyz0123456789", 621 .psize = 62, 622 .digest = { 0xDC, 0x37, 0xE0, 0x08, 0xCF, 0x9E, 0xE6, 0x9B, 623 0xF1, 0x1F, 0x00, 0xED, 0x9A, 0xBA, 0x26, 0x90, 624 0x1D, 0xD7, 0xC2, 0x8C, 0xDE, 0xC0, 0x66, 0xCC, 625 0x6A, 0xF4, 0x2E, 0x40, 0xF8, 0x2F, 0x3A, 0x1E, 626 0x08, 0xEB, 0xA2, 0x66, 0x29, 0x12, 0x9D, 0x8F, 627 0xB7, 0xCB, 0x57, 0x21, 0x1B, 0x92, 0x81, 0xA6, 628 0x55, 0x17, 0xCC, 0x87, 0x9D, 0x7B, 0x96, 0x21, 629 0x42, 0xC6, 0x5F, 0x5A, 0x7A, 0xF0, 0x14, 0x67 }, 630 }, { 631 .plaintext = "1234567890123456789012345678901234567890" 632 "1234567890123456789012345678901234567890", 633 .psize = 80, 634 .digest = { 0x46, 0x6E, 0xF1, 0x8B, 0xAB, 0xB0, 0x15, 0x4D, 635 0x25, 0xB9, 0xD3, 0x8A, 0x64, 0x14, 0xF5, 0xC0, 636 0x87, 0x84, 0x37, 0x2B, 0xCC, 0xB2, 0x04, 0xD6, 637 0x54, 0x9C, 0x4A, 0xFA, 0xDB, 0x60, 0x14, 0x29, 638 0x4D, 0x5B, 0xD8, 0xDF, 0x2A, 0x6C, 0x44, 0xE5, 639 0x38, 0xCD, 0x04, 0x7B, 0x26, 0x81, 0xA5, 0x1A, 640 0x2C, 0x60, 0x48, 0x1E, 0x88, 0xC5, 0xA2, 0x0B, 641 0x2C, 0x2A, 0x80, 0xCF, 0x3A, 0x9A, 0x08, 0x3B }, 642 }, { 643 .plaintext = "abcdbcdecdefdefgefghfghighijhijk", 644 .psize = 32, 645 .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61, 646 0xF5, 0xD6, 0xF0, 0xA0, 0xE4, 0x64, 0x4F, 0x48, 647 0x8A, 0x7A, 0x5A, 0x52, 0xDE, 0xEE, 0x65, 0x62, 648 0x07, 0xC5, 0x62, 0xF9, 0x88, 0xE9, 0x5C, 0x69, 649 0x16, 0xBD, 0xC8, 0x03, 0x1B, 0xC5, 0xBE, 0x1B, 650 0x7B, 0x94, 0x76, 0x39, 0xFE, 0x05, 0x0B, 0x56, 651 0x93, 0x9B, 0xAA, 0xA0, 0xAD, 0xFF, 0x9A, 0xE6, 652 0x74, 0x5B, 0x7B, 0x18, 0x1C, 0x3B, 0xE3, 0xFD }, 653 }, 654 }; 655 656 #define WP384_TEST_VECTORS 8 657 658 struct hash_testvec wp384_tv_template[] = { 659 { 660 .plaintext = "", 661 .psize = 0, 662 .digest = { 0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66, 663 0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26, 664 0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8, 665 0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7, 666 0x3E, 0x83, 0xBE, 0x69, 0x8B, 0x28, 0x8F, 0xEB, 667 0xCF, 0x88, 0xE3, 0xE0, 0x3C, 0x4F, 0x07, 0x57 }, 668 669 670 }, { 671 .plaintext = "a", 672 .psize = 1, 673 .digest = { 0x8A, 0xCA, 0x26, 0x02, 0x79, 0x2A, 0xEC, 0x6F, 674 0x11, 0xA6, 0x72, 0x06, 0x53, 0x1F, 0xB7, 0xD7, 675 0xF0, 0xDF, 0xF5, 0x94, 0x13, 0x14, 0x5E, 0x69, 676 0x73, 0xC4, 0x50, 0x01, 0xD0, 0x08, 0x7B, 0x42, 677 0xD1, 0x1B, 0xC6, 0x45, 0x41, 0x3A, 0xEF, 0xF6, 678 0x3A, 0x42, 0x39, 0x1A, 0x39, 0x14, 0x5A, 0x59 }, 679 }, { 680 .plaintext = "abc", 681 .psize = 3, 682 .digest = { 0x4E, 0x24, 0x48, 0xA4, 0xC6, 0xF4, 0x86, 0xBB, 683 0x16, 0xB6, 0x56, 0x2C, 0x73, 0xB4, 0x02, 0x0B, 684 0xF3, 0x04, 0x3E, 0x3A, 0x73, 0x1B, 0xCE, 0x72, 685 0x1A, 0xE1, 0xB3, 0x03, 0xD9, 0x7E, 0x6D, 0x4C, 686 0x71, 0x81, 0xEE, 0xBD, 0xB6, 0xC5, 0x7E, 0x27, 687 0x7D, 0x0E, 0x34, 0x95, 0x71, 0x14, 0xCB, 0xD6 }, 688 }, { 689 .plaintext = "message digest", 690 .psize = 14, 691 .digest = { 0x37, 0x8C, 0x84, 0xA4, 0x12, 0x6E, 0x2D, 0xC6, 692 0xE5, 0x6D, 0xCC, 0x74, 0x58, 0x37, 0x7A, 0xAC, 693 0x83, 0x8D, 0x00, 0x03, 0x22, 0x30, 0xF5, 0x3C, 694 0xE1, 0xF5, 0x70, 0x0C, 0x0F, 0xFB, 0x4D, 0x3B, 695 0x84, 0x21, 0x55, 0x76, 0x59, 0xEF, 0x55, 0xC1, 696 0x06, 0xB4, 0xB5, 0x2A, 0xC5, 0xA4, 0xAA, 0xA6 }, 697 }, { 698 .plaintext = "abcdefghijklmnopqrstuvwxyz", 699 .psize = 26, 700 .digest = { 0xF1, 0xD7, 0x54, 0x66, 0x26, 0x36, 0xFF, 0xE9, 701 0x2C, 0x82, 0xEB, 0xB9, 0x21, 0x2A, 0x48, 0x4A, 702 0x8D, 0x38, 0x63, 0x1E, 0xAD, 0x42, 0x38, 0xF5, 703 0x44, 0x2E, 0xE1, 0x3B, 0x80, 0x54, 0xE4, 0x1B, 704 0x08, 0xBF, 0x2A, 0x92, 0x51, 0xC3, 0x0B, 0x6A, 705 0x0B, 0x8A, 0xAE, 0x86, 0x17, 0x7A, 0xB4, 0xA6 }, 706 }, { 707 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 708 "abcdefghijklmnopqrstuvwxyz0123456789", 709 .psize = 62, 710 .digest = { 0xDC, 0x37, 0xE0, 0x08, 0xCF, 0x9E, 0xE6, 0x9B, 711 0xF1, 0x1F, 0x00, 0xED, 0x9A, 0xBA, 0x26, 0x90, 712 0x1D, 0xD7, 0xC2, 0x8C, 0xDE, 0xC0, 0x66, 0xCC, 713 0x6A, 0xF4, 0x2E, 0x40, 0xF8, 0x2F, 0x3A, 0x1E, 714 0x08, 0xEB, 0xA2, 0x66, 0x29, 0x12, 0x9D, 0x8F, 715 0xB7, 0xCB, 0x57, 0x21, 0x1B, 0x92, 0x81, 0xA6 }, 716 }, { 717 .plaintext = "1234567890123456789012345678901234567890" 718 "1234567890123456789012345678901234567890", 719 .psize = 80, 720 .digest = { 0x46, 0x6E, 0xF1, 0x8B, 0xAB, 0xB0, 0x15, 0x4D, 721 0x25, 0xB9, 0xD3, 0x8A, 0x64, 0x14, 0xF5, 0xC0, 722 0x87, 0x84, 0x37, 0x2B, 0xCC, 0xB2, 0x04, 0xD6, 723 0x54, 0x9C, 0x4A, 0xFA, 0xDB, 0x60, 0x14, 0x29, 724 0x4D, 0x5B, 0xD8, 0xDF, 0x2A, 0x6C, 0x44, 0xE5, 725 0x38, 0xCD, 0x04, 0x7B, 0x26, 0x81, 0xA5, 0x1A }, 726 }, { 727 .plaintext = "abcdbcdecdefdefgefghfghighijhijk", 728 .psize = 32, 729 .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61, 730 0xF5, 0xD6, 0xF0, 0xA0, 0xE4, 0x64, 0x4F, 0x48, 731 0x8A, 0x7A, 0x5A, 0x52, 0xDE, 0xEE, 0x65, 0x62, 732 0x07, 0xC5, 0x62, 0xF9, 0x88, 0xE9, 0x5C, 0x69, 733 0x16, 0xBD, 0xC8, 0x03, 0x1B, 0xC5, 0xBE, 0x1B, 734 0x7B, 0x94, 0x76, 0x39, 0xFE, 0x05, 0x0B, 0x56 }, 735 }, 736 }; 737 738 #define WP256_TEST_VECTORS 8 739 740 struct hash_testvec wp256_tv_template[] = { 741 { 742 .plaintext = "", 743 .psize = 0, 744 .digest = { 0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66, 745 0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26, 746 0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8, 747 0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7 }, 748 749 750 }, { 751 .plaintext = "a", 752 .psize = 1, 753 .digest = { 0x8A, 0xCA, 0x26, 0x02, 0x79, 0x2A, 0xEC, 0x6F, 754 0x11, 0xA6, 0x72, 0x06, 0x53, 0x1F, 0xB7, 0xD7, 755 0xF0, 0xDF, 0xF5, 0x94, 0x13, 0x14, 0x5E, 0x69, 756 0x73, 0xC4, 0x50, 0x01, 0xD0, 0x08, 0x7B, 0x42 }, 757 }, { 758 .plaintext = "abc", 759 .psize = 3, 760 .digest = { 0x4E, 0x24, 0x48, 0xA4, 0xC6, 0xF4, 0x86, 0xBB, 761 0x16, 0xB6, 0x56, 0x2C, 0x73, 0xB4, 0x02, 0x0B, 762 0xF3, 0x04, 0x3E, 0x3A, 0x73, 0x1B, 0xCE, 0x72, 763 0x1A, 0xE1, 0xB3, 0x03, 0xD9, 0x7E, 0x6D, 0x4C }, 764 }, { 765 .plaintext = "message digest", 766 .psize = 14, 767 .digest = { 0x37, 0x8C, 0x84, 0xA4, 0x12, 0x6E, 0x2D, 0xC6, 768 0xE5, 0x6D, 0xCC, 0x74, 0x58, 0x37, 0x7A, 0xAC, 769 0x83, 0x8D, 0x00, 0x03, 0x22, 0x30, 0xF5, 0x3C, 770 0xE1, 0xF5, 0x70, 0x0C, 0x0F, 0xFB, 0x4D, 0x3B }, 771 }, { 772 .plaintext = "abcdefghijklmnopqrstuvwxyz", 773 .psize = 26, 774 .digest = { 0xF1, 0xD7, 0x54, 0x66, 0x26, 0x36, 0xFF, 0xE9, 775 0x2C, 0x82, 0xEB, 0xB9, 0x21, 0x2A, 0x48, 0x4A, 776 0x8D, 0x38, 0x63, 0x1E, 0xAD, 0x42, 0x38, 0xF5, 777 0x44, 0x2E, 0xE1, 0x3B, 0x80, 0x54, 0xE4, 0x1B }, 778 }, { 779 .plaintext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 780 "abcdefghijklmnopqrstuvwxyz0123456789", 781 .psize = 62, 782 .digest = { 0xDC, 0x37, 0xE0, 0x08, 0xCF, 0x9E, 0xE6, 0x9B, 783 0xF1, 0x1F, 0x00, 0xED, 0x9A, 0xBA, 0x26, 0x90, 784 0x1D, 0xD7, 0xC2, 0x8C, 0xDE, 0xC0, 0x66, 0xCC, 785 0x6A, 0xF4, 0x2E, 0x40, 0xF8, 0x2F, 0x3A, 0x1E }, 786 }, { 787 .plaintext = "1234567890123456789012345678901234567890" 788 "1234567890123456789012345678901234567890", 789 .psize = 80, 790 .digest = { 0x46, 0x6E, 0xF1, 0x8B, 0xAB, 0xB0, 0x15, 0x4D, 791 0x25, 0xB9, 0xD3, 0x8A, 0x64, 0x14, 0xF5, 0xC0, 792 0x87, 0x84, 0x37, 0x2B, 0xCC, 0xB2, 0x04, 0xD6, 793 0x54, 0x9C, 0x4A, 0xFA, 0xDB, 0x60, 0x14, 0x29 }, 794 }, { 795 .plaintext = "abcdbcdecdefdefgefghfghighijhijk", 796 .psize = 32, 797 .digest = { 0x2A, 0x98, 0x7E, 0xA4, 0x0F, 0x91, 0x70, 0x61, 798 0xF5, 0xD6, 0xF0, 0xA0, 0xE4, 0x64, 0x4F, 0x48, 799 0x8A, 0x7A, 0x5A, 0x52, 0xDE, 0xEE, 0x65, 0x62, 800 0x07, 0xC5, 0x62, 0xF9, 0x88, 0xE9, 0x5C, 0x69 }, 801 }, 802 }; 803 804 /* 805 * DES test vectors. 806 */ 807 #define DES_ENC_TEST_VECTORS 10 808 #define DES_DEC_TEST_VECTORS 4 809 #define DES_CBC_ENC_TEST_VECTORS 5 810 #define DES_CBC_DEC_TEST_VECTORS 4 811 #define DES3_EDE_ENC_TEST_VECTORS 3 812 #define DES3_EDE_DEC_TEST_VECTORS 3 813 814 struct cipher_testvec des_enc_tv_template[] = { 815 { /* From Applied Cryptography */ 816 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 817 .klen = 8, 818 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 }, 819 .ilen = 8, 820 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d }, 821 .rlen = 8, 822 }, { /* Same key, different plaintext block */ 823 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 824 .klen = 8, 825 .input = { 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 }, 826 .ilen = 8, 827 .result = { 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b }, 828 .rlen = 8, 829 }, { /* Sbox test from NBS */ 830 .key = { 0x7c, 0xa1, 0x10, 0x45, 0x4a, 0x1a, 0x6e, 0x57 }, 831 .klen = 8, 832 .input = { 0x01, 0xa1, 0xd6, 0xd0, 0x39, 0x77, 0x67, 0x42 }, 833 .ilen = 8, 834 .result = { 0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b }, 835 .rlen = 8, 836 }, { /* Three blocks */ 837 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 838 .klen = 8, 839 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 840 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 841 0xca, 0xfe, 0xba, 0xbe, 0xfe, 0xed, 0xbe, 0xef }, 842 .ilen = 24, 843 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d, 844 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b, 845 0xb4, 0x99, 0x26, 0xf7, 0x1f, 0xe1, 0xd4, 0x90 }, 846 .rlen = 24, 847 }, { /* Weak key */ 848 .fail = 1, 849 .wk = 1, 850 .key = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, 851 .klen = 8, 852 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 }, 853 .ilen = 8, 854 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d }, 855 .rlen = 8, 856 }, { /* Two blocks -- for testing encryption across pages */ 857 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 858 .klen = 8, 859 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 860 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 }, 861 .ilen = 16, 862 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d, 863 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b }, 864 .rlen = 16, 865 .np = 2, 866 .tap = { 8, 8 } 867 }, { /* Four blocks -- for testing encryption with chunking */ 868 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 869 .klen = 8, 870 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 871 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 872 0xca, 0xfe, 0xba, 0xbe, 0xfe, 0xed, 0xbe, 0xef, 873 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 }, 874 .ilen = 32, 875 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d, 876 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b, 877 0xb4, 0x99, 0x26, 0xf7, 0x1f, 0xe1, 0xd4, 0x90, 878 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b }, 879 .rlen = 32, 880 .np = 3, 881 .tap = { 14, 10, 8 } 882 }, { 883 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 884 .klen = 8, 885 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 886 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 887 0xca, 0xfe, 0xba, 0xbe, 0xfe, 0xed, 0xbe, 0xef }, 888 .ilen = 24, 889 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d, 890 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b, 891 0xb4, 0x99, 0x26, 0xf7, 0x1f, 0xe1, 0xd4, 0x90 }, 892 .rlen = 24, 893 .np = 4, 894 .tap = { 2, 1, 3, 18 } 895 }, { 896 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 897 .klen = 8, 898 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 899 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99 }, 900 .ilen = 16, 901 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d, 902 0xf7, 0x9c, 0x89, 0x2a, 0x33, 0x8f, 0x4a, 0x8b }, 903 .rlen = 16, 904 .np = 5, 905 .tap = { 2, 2, 2, 2, 8 } 906 }, { 907 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 908 .klen = 8, 909 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 }, 910 .ilen = 8, 911 .result = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d }, 912 .rlen = 8, 913 .np = 8, 914 .tap = { 1, 1, 1, 1, 1, 1, 1, 1 } 915 }, 916 }; 917 918 struct cipher_testvec des_dec_tv_template[] = { 919 { /* From Applied Cryptography */ 920 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 921 .klen = 8, 922 .input = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d }, 923 .ilen = 8, 924 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7 }, 925 .rlen = 8, 926 }, { /* Sbox test from NBS */ 927 .key = { 0x7c, 0xa1, 0x10, 0x45, 0x4a, 0x1a, 0x6e, 0x57 }, 928 .klen = 8, 929 .input = { 0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b }, 930 .ilen = 8, 931 .result = { 0x01, 0xa1, 0xd6, 0xd0, 0x39, 0x77, 0x67, 0x42 }, 932 .rlen = 8, 933 }, { /* Two blocks, for chunking test */ 934 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 935 .klen = 8, 936 .input = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d, 937 0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b }, 938 .ilen = 16, 939 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 940 0xa3, 0x99, 0x7b, 0xca, 0xaf, 0x69, 0xa0, 0xf5 }, 941 .rlen = 16, 942 .np = 2, 943 .tap = { 8, 8 } 944 }, { 945 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 946 .klen = 8, 947 .input = { 0xc9, 0x57, 0x44, 0x25, 0x6a, 0x5e, 0xd3, 0x1d, 948 0x69, 0x0f, 0x5b, 0x0d, 0x9a, 0x26, 0x93, 0x9b }, 949 .ilen = 16, 950 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xe7, 951 0xa3, 0x99, 0x7b, 0xca, 0xaf, 0x69, 0xa0, 0xf5 }, 952 .rlen = 16, 953 .np = 3, 954 .tap = { 3, 12, 1 } 955 }, 956 }; 957 958 struct cipher_testvec des_cbc_enc_tv_template[] = { 959 { /* From OpenSSL */ 960 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, 961 .klen = 8, 962 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, 963 .input = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20, 964 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74, 965 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 }, 966 .ilen = 24, 967 .result = { 0xcc, 0xd1, 0x73, 0xff, 0xab, 0x20, 0x39, 0xf4, 968 0xac, 0xd8, 0xae, 0xfd, 0xdf, 0xd8, 0xa1, 0xeb, 969 0x46, 0x8e, 0x91, 0x15, 0x78, 0x88, 0xba, 0x68 }, 970 .rlen = 24, 971 }, { /* FIPS Pub 81 */ 972 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 973 .klen = 8, 974 .iv = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef }, 975 .input = { 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74 }, 976 .ilen = 8, 977 .result = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c }, 978 .rlen = 8, 979 }, { 980 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 981 .klen = 8, 982 .iv = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c }, 983 .input = { 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 }, 984 .ilen = 8, 985 .result = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f }, 986 .rlen = 8, 987 }, { 988 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 989 .klen = 8, 990 .iv = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f }, 991 .input = { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 }, 992 .ilen = 8, 993 .result = { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 }, 994 .rlen = 8, 995 }, { /* Copy of openssl vector for chunk testing */ 996 /* From OpenSSL */ 997 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef}, 998 .klen = 8, 999 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, 1000 .input = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20, 1001 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74, 1002 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 }, 1003 .ilen = 24, 1004 .result = { 0xcc, 0xd1, 0x73, 0xff, 0xab, 0x20, 0x39, 0xf4, 1005 0xac, 0xd8, 0xae, 0xfd, 0xdf, 0xd8, 0xa1, 0xeb, 1006 0x46, 0x8e, 0x91, 0x15, 0x78, 0x88, 0xba, 0x68 }, 1007 .rlen = 24, 1008 .np = 2, 1009 .tap = { 13, 11 } 1010 }, 1011 }; 1012 1013 struct cipher_testvec des_cbc_dec_tv_template[] = { 1014 { /* FIPS Pub 81 */ 1015 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1016 .klen = 8, 1017 .iv = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef }, 1018 .input = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c }, 1019 .ilen = 8, 1020 .result = { 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74 }, 1021 .rlen = 8, 1022 }, { 1023 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1024 .klen = 8, 1025 .iv = { 0xe5, 0xc7, 0xcd, 0xde, 0x87, 0x2b, 0xf2, 0x7c }, 1026 .input = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f }, 1027 .ilen = 8, 1028 .result = { 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20 }, 1029 .rlen = 8, 1030 }, { 1031 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1032 .klen = 8, 1033 .iv = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f }, 1034 .input = { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 }, 1035 .ilen = 8, 1036 .result = { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 }, 1037 .rlen = 8, 1038 }, { /* Copy of above, for chunk testing */ 1039 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1040 .klen = 8, 1041 .iv = { 0x43, 0xe9, 0x34, 0x00, 0x8c, 0x38, 0x9c, 0x0f }, 1042 .input = { 0x68, 0x37, 0x88, 0x49, 0x9a, 0x7c, 0x05, 0xf6 }, 1043 .ilen = 8, 1044 .result = { 0x66, 0x6f, 0x72, 0x20, 0x61, 0x6c, 0x6c, 0x20 }, 1045 .rlen = 8, 1046 .np = 2, 1047 .tap = { 4, 4 } 1048 }, 1049 }; 1050 1051 /* 1052 * We really need some more test vectors, especially for DES3 CBC. 1053 */ 1054 struct cipher_testvec des3_ede_enc_tv_template[] = { 1055 { /* These are from openssl */ 1056 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1057 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 1058 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, 1059 .klen = 24, 1060 .input = { 0x73, 0x6f, 0x6d, 0x65, 0x64, 0x61, 0x74, 0x61 }, 1061 .ilen = 8, 1062 .result = { 0x18, 0xd7, 0x48, 0xe5, 0x63, 0x62, 0x05, 0x72 }, 1063 .rlen = 8, 1064 }, { 1065 .key = { 0x03, 0x52, 0x02, 0x07, 0x67, 0x20, 0x82, 0x17, 1066 0x86, 0x02, 0x87, 0x66, 0x59, 0x08, 0x21, 0x98, 1067 0x64, 0x05, 0x6a, 0xbd, 0xfe, 0xa9, 0x34, 0x57 }, 1068 .klen = 24, 1069 .input = { 0x73, 0x71, 0x75, 0x69, 0x67, 0x67, 0x6c, 0x65 }, 1070 .ilen = 8, 1071 .result = { 0xc0, 0x7d, 0x2a, 0x0f, 0xa5, 0x66, 0xfa, 0x30 }, 1072 .rlen = 8, 1073 }, { 1074 .key = { 0x10, 0x46, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20, 1075 0x91, 0x07, 0xd0, 0x15, 0x89, 0x19, 0x01, 0x01, 1076 0x19, 0x07, 0x92, 0x10, 0x98, 0x1a, 0x01, 0x01 }, 1077 .klen = 24, 1078 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1079 .ilen = 8, 1080 .result = { 0xe1, 0xef, 0x62, 0xc3, 0x32, 0xfe, 0x82, 0x5b }, 1081 .rlen = 8, 1082 }, 1083 }; 1084 1085 struct cipher_testvec des3_ede_dec_tv_template[] = { 1086 { /* These are from openssl */ 1087 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1088 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 1089 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10}, 1090 .klen = 24, 1091 .input = { 0x18, 0xd7, 0x48, 0xe5, 0x63, 0x62, 0x05, 0x72 }, 1092 .ilen = 8, 1093 .result = { 0x73, 0x6f, 0x6d, 0x65, 0x64, 0x61, 0x74, 0x61 }, 1094 .rlen = 8, 1095 }, { 1096 .key = { 0x03, 0x52, 0x02, 0x07, 0x67, 0x20, 0x82, 0x17, 1097 0x86, 0x02, 0x87, 0x66, 0x59, 0x08, 0x21, 0x98, 1098 0x64, 0x05, 0x6a, 0xbd, 0xfe, 0xa9, 0x34, 0x57 }, 1099 .klen = 24, 1100 .input = { 0xc0, 0x7d, 0x2a, 0x0f, 0xa5, 0x66, 0xfa, 0x30 }, 1101 .ilen = 8, 1102 .result = { 0x73, 0x71, 0x75, 0x69, 0x67, 0x67, 0x6c, 0x65 }, 1103 .rlen = 8, 1104 }, { 1105 .key = { 0x10, 0x46, 0x10, 0x34, 0x89, 0x98, 0x80, 0x20, 1106 0x91, 0x07, 0xd0, 0x15, 0x89, 0x19, 0x01, 0x01, 1107 0x19, 0x07, 0x92, 0x10, 0x98, 0x1a, 0x01, 0x01 }, 1108 .klen = 24, 1109 .input = { 0xe1, 0xef, 0x62, 0xc3, 0x32, 0xfe, 0x82, 0x5b }, 1110 .ilen = 8, 1111 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1112 .rlen = 8, 1113 }, 1114 }; 1115 1116 /* 1117 * Blowfish test vectors. 1118 */ 1119 #define BF_ENC_TEST_VECTORS 6 1120 #define BF_DEC_TEST_VECTORS 6 1121 #define BF_CBC_ENC_TEST_VECTORS 1 1122 #define BF_CBC_DEC_TEST_VECTORS 1 1123 1124 struct cipher_testvec bf_enc_tv_template[] = { 1125 { /* DES test vectors from OpenSSL */ 1126 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }, 1127 .klen = 8, 1128 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1129 .ilen = 8, 1130 .result = { 0x4e, 0xf9, 0x97, 0x45, 0x61, 0x98, 0xdd, 0x78 }, 1131 .rlen = 8, 1132 }, { 1133 .key = { 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e }, 1134 .klen = 8, 1135 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1136 .ilen = 8, 1137 .result = { 0xa7, 0x90, 0x79, 0x51, 0x08, 0xea, 0x3c, 0xae }, 1138 .rlen = 8, 1139 }, { 1140 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, 1141 .klen = 8, 1142 .input = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1143 .ilen = 8, 1144 .result = { 0xe8, 0x7a, 0x24, 0x4e, 0x2c, 0xc8, 0x5e, 0x82 }, 1145 .rlen = 8, 1146 }, { /* Vary the keylength... */ 1147 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87, 1148 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f }, 1149 .klen = 16, 1150 .input = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1151 .ilen = 8, 1152 .result = { 0x93, 0x14, 0x28, 0x87, 0xee, 0x3b, 0xe1, 0x5c }, 1153 .rlen = 8, 1154 }, { 1155 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87, 1156 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f, 1157 0x00, 0x11, 0x22, 0x33, 0x44 }, 1158 .klen = 21, 1159 .input = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1160 .ilen = 8, 1161 .result = { 0xe6, 0xf5, 0x1e, 0xd7, 0x9b, 0x9d, 0xb2, 0x1f }, 1162 .rlen = 8, 1163 }, { /* Generated with bf488 */ 1164 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87, 1165 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f, 1166 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1167 0x04, 0x68, 0x91, 0x04, 0xc2, 0xfd, 0x3b, 0x2f, 1168 0x58, 0x40, 0x23, 0x64, 0x1a, 0xba, 0x61, 0x76, 1169 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e, 1170 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 1171 .klen = 56, 1172 .input = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1173 .ilen = 8, 1174 .result = { 0xc0, 0x45, 0x04, 0x01, 0x2e, 0x4e, 0x1f, 0x53 }, 1175 .rlen = 8, 1176 }, 1177 }; 1178 1179 struct cipher_testvec bf_dec_tv_template[] = { 1180 { /* DES test vectors from OpenSSL */ 1181 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1182 .klen = 8, 1183 .input = { 0x4e, 0xf9, 0x97, 0x45, 0x61, 0x98, 0xdd, 0x78 }, 1184 .ilen = 8, 1185 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1186 .rlen = 8, 1187 }, { 1188 .key = { 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e }, 1189 .klen = 8, 1190 .input = { 0xa7, 0x90, 0x79, 0x51, 0x08, 0xea, 0x3c, 0xae }, 1191 .ilen = 8, 1192 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1193 .rlen = 8, 1194 }, { 1195 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, 1196 .klen = 8, 1197 .input = { 0xe8, 0x7a, 0x24, 0x4e, 0x2c, 0xc8, 0x5e, 0x82 }, 1198 .ilen = 8, 1199 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1200 .rlen = 8, 1201 }, { /* Vary the keylength... */ 1202 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87, 1203 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f }, 1204 .klen = 16, 1205 .input = { 0x93, 0x14, 0x28, 0x87, 0xee, 0x3b, 0xe1, 0x5c }, 1206 .ilen = 8, 1207 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1208 .rlen = 8, 1209 }, { 1210 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87, 1211 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f, 1212 0x00, 0x11, 0x22, 0x33, 0x44 }, 1213 .klen = 21, 1214 .input = { 0xe6, 0xf5, 0x1e, 0xd7, 0x9b, 0x9d, 0xb2, 0x1f }, 1215 .ilen = 8, 1216 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1217 .rlen = 8, 1218 }, { /* Generated with bf488, using OpenSSL, Libgcrypt and Nettle */ 1219 .key = { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87, 1220 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f, 1221 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1222 0x04, 0x68, 0x91, 0x04, 0xc2, 0xfd, 0x3b, 0x2f, 1223 0x58, 0x40, 0x23, 0x64, 0x1a, 0xba, 0x61, 0x76, 1224 0x1f, 0x1f, 0x1f, 0x1f, 0x0e, 0x0e, 0x0e, 0x0e, 1225 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, 1226 .klen = 56, 1227 .input = { 0xc0, 0x45, 0x04, 0x01, 0x2e, 0x4e, 0x1f, 0x53 }, 1228 .ilen = 8, 1229 .result = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1230 .rlen = 8, 1231 }, 1232 }; 1233 1234 struct cipher_testvec bf_cbc_enc_tv_template[] = { 1235 { /* From OpenSSL */ 1236 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1237 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, 1238 .klen = 16, 1239 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1240 .input = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20, 1241 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74, 1242 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 1243 0x66, 0x6f, 0x72, 0x20, 0x00, 0x00, 0x00, 0x00 }, 1244 .ilen = 32, 1245 .result = { 0x6b, 0x77, 0xb4, 0xd6, 0x30, 0x06, 0xde, 0xe6, 1246 0x05, 0xb1, 0x56, 0xe2, 0x74, 0x03, 0x97, 0x93, 1247 0x58, 0xde, 0xb9, 0xe7, 0x15, 0x46, 0x16, 0xd9, 1248 0x59, 0xf1, 0x65, 0x2b, 0xd5, 0xff, 0x92, 0xcc }, 1249 .rlen = 32, 1250 }, 1251 }; 1252 1253 struct cipher_testvec bf_cbc_dec_tv_template[] = { 1254 { /* From OpenSSL */ 1255 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1256 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, 1257 .klen = 16, 1258 .iv = { 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, 1259 .input = { 0x6b, 0x77, 0xb4, 0xd6, 0x30, 0x06, 0xde, 0xe6, 1260 0x05, 0xb1, 0x56, 0xe2, 0x74, 0x03, 0x97, 0x93, 1261 0x58, 0xde, 0xb9, 0xe7, 0x15, 0x46, 0x16, 0xd9, 1262 0x59, 0xf1, 0x65, 0x2b, 0xd5, 0xff, 0x92, 0xcc }, 1263 .ilen = 32, 1264 .result = { 0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x20, 1265 0x4e, 0x6f, 0x77, 0x20, 0x69, 0x73, 0x20, 0x74, 1266 0x68, 0x65, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 1267 0x66, 0x6f, 0x72, 0x20, 0x00, 0x00, 0x00, 0x00 }, 1268 .rlen = 32, 1269 }, 1270 }; 1271 1272 /* 1273 * Twofish test vectors. 1274 */ 1275 #define TF_ENC_TEST_VECTORS 3 1276 #define TF_DEC_TEST_VECTORS 3 1277 #define TF_CBC_ENC_TEST_VECTORS 4 1278 #define TF_CBC_DEC_TEST_VECTORS 4 1279 1280 struct cipher_testvec tf_enc_tv_template[] = { 1281 { 1282 .key = { [0 ... 15] = 0x00 }, 1283 .klen = 16, 1284 .input = { [0 ... 15] = 0x00 }, 1285 .ilen = 16, 1286 .result = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 1287 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a }, 1288 .rlen = 16, 1289 }, { 1290 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1291 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 1292 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 }, 1293 .klen = 24, 1294 .input = { [0 ... 15] = 0x00 }, 1295 .ilen = 16, 1296 .result = { 0xcf, 0xd1, 0xd2, 0xe5, 0xa9, 0xbe, 0x9c, 0xdf, 1297 0x50, 0x1f, 0x13, 0xb8, 0x92, 0xbd, 0x22, 0x48 }, 1298 .rlen = 16, 1299 }, { 1300 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1301 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 1302 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1303 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 1304 .klen = 32, 1305 .input = { [0 ... 15] = 0x00 }, 1306 .ilen = 16, 1307 .result = { 0x37, 0x52, 0x7b, 0xe0, 0x05, 0x23, 0x34, 0xb8, 1308 0x9f, 0x0c, 0xfc, 0xca, 0xe8, 0x7c, 0xfa, 0x20 }, 1309 .rlen = 16, 1310 }, 1311 }; 1312 1313 struct cipher_testvec tf_dec_tv_template[] = { 1314 { 1315 .key = { [0 ... 15] = 0x00 }, 1316 .klen = 16, 1317 .input = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 1318 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a }, 1319 .ilen = 16, 1320 .result = { [0 ... 15] = 0x00 }, 1321 .rlen = 16, 1322 }, { 1323 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1324 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 1325 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 }, 1326 .klen = 24, 1327 .input = { 0xcf, 0xd1, 0xd2, 0xe5, 0xa9, 0xbe, 0x9c, 0xdf, 1328 0x50, 0x1f, 0x13, 0xb8, 0x92, 0xbd, 0x22, 0x48 }, 1329 .ilen = 16, 1330 .result = { [0 ... 15] = 0x00 }, 1331 .rlen = 16, 1332 }, { 1333 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 1334 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, 1335 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1336 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 1337 .klen = 32, 1338 .input = { 0x37, 0x52, 0x7b, 0xe0, 0x05, 0x23, 0x34, 0xb8, 1339 0x9f, 0x0c, 0xfc, 0xca, 0xe8, 0x7c, 0xfa, 0x20 }, 1340 .ilen = 16, 1341 .result = { [0 ... 15] = 0x00 }, 1342 .rlen = 16, 1343 }, 1344 }; 1345 1346 struct cipher_testvec tf_cbc_enc_tv_template[] = { 1347 { /* Generated with Nettle */ 1348 .key = { [0 ... 15] = 0x00 }, 1349 .klen = 16, 1350 .iv = { [0 ... 15] = 0x00 }, 1351 .input = { [0 ... 15] = 0x00 }, 1352 .ilen = 16, 1353 .result = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 1354 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a }, 1355 .rlen = 16, 1356 }, { 1357 .key = { [0 ... 15] = 0x00 }, 1358 .klen = 16, 1359 .iv = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 1360 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a }, 1361 .input = { [0 ... 15] = 0x00 }, 1362 .ilen = 16, 1363 .result = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e, 1364 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 }, 1365 .rlen = 16, 1366 }, { 1367 .key = { [0 ... 15] = 0x00 }, 1368 .klen = 16, 1369 .iv = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e, 1370 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 }, 1371 .input = { [0 ... 15] = 0x00 }, 1372 .ilen = 16, 1373 .result = { 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26, 1374 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 }, 1375 .rlen = 16, 1376 }, { 1377 .key = { [0 ... 15] = 0x00 }, 1378 .klen = 16, 1379 .iv = { [0 ... 15] = 0x00 }, 1380 .input = { [0 ... 47] = 0x00 }, 1381 .ilen = 48, 1382 .result = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 1383 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a, 1384 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e, 1385 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19, 1386 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26, 1387 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 }, 1388 .rlen = 48, 1389 }, 1390 }; 1391 1392 struct cipher_testvec tf_cbc_dec_tv_template[] = { 1393 { /* Reverse of the first four above */ 1394 .key = { [0 ... 15] = 0x00 }, 1395 .klen = 16, 1396 .iv = { [0 ... 15] = 0x00 }, 1397 .input = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 1398 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a }, 1399 .ilen = 16, 1400 .result = { [0 ... 15] = 0x00 }, 1401 .rlen = 16, 1402 }, { 1403 .key = { [0 ... 15] = 0x00 }, 1404 .klen = 16, 1405 .iv = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 1406 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a }, 1407 .input = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e, 1408 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 }, 1409 .ilen = 16, 1410 .result = { [0 ... 15] = 0x00 }, 1411 .rlen = 16, 1412 }, { 1413 .key = { [0 ... 15] = 0x00 }, 1414 .klen = 16, 1415 .iv = { 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e, 1416 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19 }, 1417 .input = { 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26, 1418 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 }, 1419 .ilen = 16, 1420 .result = { [0 ... 15] = 0x00 }, 1421 .rlen = 16, 1422 }, { 1423 .key = { [0 ... 15] = 0x00 }, 1424 .klen = 16, 1425 .iv = { [0 ... 15] = 0x00 }, 1426 .input = { 0x9f, 0x58, 0x9f, 0x5c, 0xf6, 0x12, 0x2c, 0x32, 1427 0xb6, 0xbf, 0xec, 0x2f, 0x2a, 0xe8, 0xc3, 0x5a, 1428 0xd4, 0x91, 0xdb, 0x16, 0xe7, 0xb1, 0xc3, 0x9e, 1429 0x86, 0xcb, 0x08, 0x6b, 0x78, 0x9f, 0x54, 0x19, 1430 0x05, 0xef, 0x8c, 0x61, 0xa8, 0x11, 0x58, 0x26, 1431 0x34, 0xba, 0x5c, 0xb7, 0x10, 0x6a, 0xa6, 0x41 }, 1432 .ilen = 48, 1433 .result = { [0 ... 47] = 0x00 }, 1434 .rlen = 48, 1435 }, 1436 }; 1437 1438 /* 1439 * Serpent test vectors. These are backwards because Serpent writes 1440 * octet sequences in right-to-left mode. 1441 */ 1442 #define SERPENT_ENC_TEST_VECTORS 4 1443 #define SERPENT_DEC_TEST_VECTORS 4 1444 1445 #define TNEPRES_ENC_TEST_VECTORS 4 1446 #define TNEPRES_DEC_TEST_VECTORS 4 1447 1448 struct cipher_testvec serpent_enc_tv_template[] = 1449 { 1450 { 1451 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1452 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1453 .ilen = 16, 1454 .result = { 0x12, 0x07, 0xfc, 0xce, 0x9b, 0xd0, 0xd6, 0x47, 1455 0x6a, 0xe9, 0x8f, 0xbe, 0xd1, 0x43, 0xa0, 0xe2 }, 1456 .rlen = 16, 1457 }, { 1458 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1459 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1460 .klen = 16, 1461 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1462 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1463 .ilen = 16, 1464 .result = { 0x4c, 0x7d, 0x8a, 0x32, 0x80, 0x72, 0xa2, 0x2c, 1465 0x82, 0x3e, 0x4a, 0x1f, 0x3a, 0xcd, 0xa1, 0x6d }, 1466 .rlen = 16, 1467 }, { 1468 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1469 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 1470 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 1471 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 1472 .klen = 32, 1473 .input = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1474 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1475 .ilen = 16, 1476 .result = { 0xde, 0x26, 0x9f, 0xf8, 0x33, 0xe4, 0x32, 0xb8, 1477 0x5b, 0x2e, 0x88, 0xd2, 0x70, 0x1c, 0xe7, 0x5c }, 1478 .rlen = 16, 1479 }, { 1480 .key = { [15] = 0x80 }, 1481 .klen = 16, 1482 .input = { [0 ... 15] = 0x00 }, 1483 .ilen = 16, 1484 .result = { 0xdd, 0xd2, 0x6b, 0x98, 0xa5, 0xff, 0xd8, 0x2c, 1485 0x05, 0x34, 0x5a, 0x9d, 0xad, 0xbf, 0xaf, 0x49}, 1486 .rlen = 16, 1487 }, 1488 }; 1489 1490 struct cipher_testvec tnepres_enc_tv_template[] = 1491 { 1492 { /* KeySize=128, PT=0, I=1 */ 1493 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1494 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1495 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1496 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1497 .klen = 16, 1498 .ilen = 16, 1499 .result = { 0x49, 0xaf, 0xbf, 0xad, 0x9d, 0x5a, 0x34, 0x05, 1500 0x2c, 0xd8, 0xff, 0xa5, 0x98, 0x6b, 0xd2, 0xdd }, 1501 .rlen = 16, 1502 }, { /* KeySize=192, PT=0, I=1 */ 1503 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1504 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1505 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1506 .klen = 24, 1507 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1508 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1509 .ilen = 16, 1510 .result = { 0xe7, 0x8e, 0x54, 0x02, 0xc7, 0x19, 0x55, 0x68, 1511 0xac, 0x36, 0x78, 0xf7, 0xa3, 0xf6, 0x0c, 0x66 }, 1512 .rlen = 16, 1513 }, { /* KeySize=256, PT=0, I=1 */ 1514 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1515 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1516 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1517 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1518 .klen = 32, 1519 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1520 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1521 .ilen = 16, 1522 .result = { 0xab, 0xed, 0x96, 0xe7, 0x66, 0xbf, 0x28, 0xcb, 1523 0xc0, 0xeb, 0xd2, 0x1a, 0x82, 0xef, 0x08, 0x19 }, 1524 .rlen = 16, 1525 }, { /* KeySize=256, I=257 */ 1526 .key = { 0x1f, 0x1e, 0x1d, 0x1c, 0x1b, 0x1a, 0x19, 0x18, 1527 0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, 1528 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08, 1529 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 }, 1530 .klen = 32, 1531 .input = { 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08, 1532 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00 }, 1533 .ilen = 16, 1534 .result = { 0x5c, 0xe7, 0x1c, 0x70, 0xd2, 0x88, 0x2e, 0x5b, 1535 0xb8, 0x32, 0xe4, 0x33, 0xf8, 0x9f, 0x26, 0xde }, 1536 .rlen = 16, 1537 }, 1538 }; 1539 1540 1541 struct cipher_testvec serpent_dec_tv_template[] = 1542 { 1543 { 1544 .input = { 0x12, 0x07, 0xfc, 0xce, 0x9b, 0xd0, 0xd6, 0x47, 1545 0x6a, 0xe9, 0x8f, 0xbe, 0xd1, 0x43, 0xa0, 0xe2 }, 1546 .ilen = 16, 1547 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1548 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1549 .rlen = 16, 1550 }, { 1551 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1552 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1553 .klen = 16, 1554 .input = { 0x4c, 0x7d, 0x8a, 0x32, 0x80, 0x72, 0xa2, 0x2c, 1555 0x82, 0x3e, 0x4a, 0x1f, 0x3a, 0xcd, 0xa1, 0x6d }, 1556 .ilen = 16, 1557 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1558 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1559 .rlen = 16, 1560 }, { 1561 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1562 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 1563 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 1564 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 1565 .klen = 32, 1566 .input = { 0xde, 0x26, 0x9f, 0xf8, 0x33, 0xe4, 0x32, 0xb8, 1567 0x5b, 0x2e, 0x88, 0xd2, 0x70, 0x1c, 0xe7, 0x5c }, 1568 .ilen = 16, 1569 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1570 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1571 .rlen = 16, 1572 }, { 1573 .key = { [15] = 0x80 }, 1574 .klen = 16, 1575 .input = { 0xdd, 0xd2, 0x6b, 0x98, 0xa5, 0xff, 0xd8, 0x2c, 1576 0x05, 0x34, 0x5a, 0x9d, 0xad, 0xbf, 0xaf, 0x49}, 1577 .ilen = 16, 1578 .result = { [0 ... 15] = 0x00 }, 1579 .rlen = 16, 1580 }, 1581 }; 1582 1583 struct cipher_testvec tnepres_dec_tv_template[] = 1584 { 1585 { 1586 .input = { 0x41, 0xcc, 0x6b, 0x31, 0x59, 0x31, 0x45, 0x97, 1587 0x6d, 0x6f, 0xbb, 0x38, 0x4b, 0x37, 0x21, 0x28 }, 1588 .ilen = 16, 1589 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1590 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1591 .rlen = 16, 1592 }, { 1593 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1594 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1595 .klen = 16, 1596 .input = { 0xea, 0xf4, 0xd7, 0xfc, 0xd8, 0x01, 0x34, 0x47, 1597 0x81, 0x45, 0x0b, 0xfa, 0x0c, 0xd6, 0xad, 0x6e }, 1598 .ilen = 16, 1599 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1600 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1601 .rlen = 16, 1602 }, { 1603 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1604 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 1605 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 1606 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 1607 .klen = 32, 1608 .input = { 0x64, 0xa9, 0x1a, 0x37, 0xed, 0x9f, 0xe7, 0x49, 1609 0xa8, 0x4e, 0x76, 0xd6, 0xf5, 0x0d, 0x78, 0xee }, 1610 .ilen = 16, 1611 .result = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1612 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1613 .rlen = 16, 1614 }, { /* KeySize=128, I=121 */ 1615 .key = { [15] = 0x80 }, 1616 .klen = 16, 1617 .input = { 0x3d, 0xda, 0xbf, 0xc0, 0x06, 0xda, 0xab, 0x06, 1618 0x46, 0x2a, 0xf4, 0xef, 0x81, 0x54, 0x4e, 0x26 }, 1619 .ilen = 16, 1620 .result = { [0 ... 15] = 0x00 }, 1621 .rlen = 16, 1622 }, 1623 }; 1624 1625 1626 /* Cast6 test vectors from RFC 2612 */ 1627 #define CAST6_ENC_TEST_VECTORS 3 1628 #define CAST6_DEC_TEST_VECTORS 3 1629 1630 struct cipher_testvec cast6_enc_tv_template[] = 1631 { 1632 { 1633 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c, 1634 0x0a, 0xf7, 0x56, 0x47, 0xf2, 0x9f, 0x61, 0x5d }, 1635 .klen = 16, 1636 .input = { [0 ... 15] = 0x00 }, 1637 .ilen = 16, 1638 .result = { 0xc8, 0x42, 0xa0, 0x89, 0x72, 0xb4, 0x3d, 0x20, 1639 0x83, 0x6c, 0x91, 0xd1, 0xb7, 0x53, 0x0f, 0x6b }, 1640 .rlen = 16, 1641 }, { 1642 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c, 1643 0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98, 1644 0xba, 0xc7, 0x7a, 0x77, 0x17, 0x94, 0x28, 0x63 }, 1645 .klen = 24, 1646 .input = { [0 ... 15] = 0x00 }, 1647 .ilen = 16, 1648 .result = { 0x1b, 0x38, 0x6c, 0x02, 0x10, 0xdc, 0xad, 0xcb, 1649 0xdd, 0x0e, 0x41, 0xaa, 0x08, 0xa7, 0xa7, 0xe8 }, 1650 .rlen = 16, 1651 }, { 1652 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c, 1653 0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98, 1654 0x8d, 0x7c, 0x47, 0xce, 0x26, 0x49, 0x08, 0x46, 1655 0x1c, 0xc1, 0xb5, 0x13, 0x7a, 0xe6, 0xb6, 0x04 }, 1656 .klen = 32, 1657 .input = { [0 ... 15] = 0x00 }, 1658 .ilen = 16, 1659 .result = { 0x4f, 0x6a, 0x20, 0x38, 0x28, 0x68, 0x97, 0xb9, 1660 0xc9, 0x87, 0x01, 0x36, 0x55, 0x33, 0x17, 0xfa }, 1661 .rlen = 16, 1662 }, 1663 }; 1664 1665 struct cipher_testvec cast6_dec_tv_template[] = 1666 { 1667 { 1668 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c, 1669 0x0a, 0xf7, 0x56, 0x47, 0xf2, 0x9f, 0x61, 0x5d }, 1670 .klen = 16, 1671 .input = { 0xc8, 0x42, 0xa0, 0x89, 0x72, 0xb4, 0x3d, 0x20, 1672 0x83, 0x6c, 0x91, 0xd1, 0xb7, 0x53, 0x0f, 0x6b }, 1673 .ilen = 16, 1674 .result = { [0 ... 15] = 0x00 }, 1675 .rlen = 16, 1676 }, { 1677 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c, 1678 0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98, 1679 0xba, 0xc7, 0x7a, 0x77, 0x17, 0x94, 0x28, 0x63 }, 1680 .klen = 24, 1681 .input = { 0x1b, 0x38, 0x6c, 0x02, 0x10, 0xdc, 0xad, 0xcb, 1682 0xdd, 0x0e, 0x41, 0xaa, 0x08, 0xa7, 0xa7, 0xe8 }, 1683 .ilen = 16, 1684 .result = { [0 ... 15] = 0x00 }, 1685 .rlen = 16, 1686 }, { 1687 .key = { 0x23, 0x42, 0xbb, 0x9e, 0xfa, 0x38, 0x54, 0x2c, 1688 0xbe, 0xd0, 0xac, 0x83, 0x94, 0x0a, 0xc2, 0x98, 1689 0x8d, 0x7c, 0x47, 0xce, 0x26, 0x49, 0x08, 0x46, 1690 0x1c, 0xc1, 0xb5, 0x13, 0x7a, 0xe6, 0xb6, 0x04 }, 1691 .klen = 32, 1692 .input = { 0x4f, 0x6a, 0x20, 0x38, 0x28, 0x68, 0x97, 0xb9, 1693 0xc9, 0x87, 0x01, 0x36, 0x55, 0x33, 0x17, 0xfa }, 1694 .ilen = 16, 1695 .result = { [0 ... 15] = 0x00 }, 1696 .rlen = 16, 1697 }, 1698 }; 1699 1700 1701 /* 1702 * AES test vectors. 1703 */ 1704 #define AES_ENC_TEST_VECTORS 3 1705 #define AES_DEC_TEST_VECTORS 3 1706 1707 struct cipher_testvec aes_enc_tv_template[] = { 1708 { /* From FIPS-197 */ 1709 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1710 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1711 .klen = 16, 1712 .input = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1713 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 1714 .ilen = 16, 1715 .result = { 0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30, 1716 0xd8, 0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a }, 1717 .rlen = 16, 1718 }, { 1719 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1720 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 1721 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 }, 1722 .klen = 24, 1723 .input = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1724 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 1725 .ilen = 16, 1726 .result = { 0xdd, 0xa9, 0x7c, 0xa4, 0x86, 0x4c, 0xdf, 0xe0, 1727 0x6e, 0xaf, 0x70, 0xa0, 0xec, 0x0d, 0x71, 0x91 }, 1728 .rlen = 16, 1729 }, { 1730 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1731 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 1732 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 1733 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 1734 .klen = 32, 1735 .input = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1736 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 1737 .ilen = 16, 1738 .result = { 0x8e, 0xa2, 0xb7, 0xca, 0x51, 0x67, 0x45, 0xbf, 1739 0xea, 0xfc, 0x49, 0x90, 0x4b, 0x49, 0x60, 0x89 }, 1740 .rlen = 16, 1741 }, 1742 }; 1743 1744 struct cipher_testvec aes_dec_tv_template[] = { 1745 { /* From FIPS-197 */ 1746 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1747 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, 1748 .klen = 16, 1749 .input = { 0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30, 1750 0xd8, 0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a }, 1751 .ilen = 16, 1752 .result = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1753 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 1754 .rlen = 16, 1755 }, { 1756 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1757 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 1758 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 }, 1759 .klen = 24, 1760 .input = { 0xdd, 0xa9, 0x7c, 0xa4, 0x86, 0x4c, 0xdf, 0xe0, 1761 0x6e, 0xaf, 0x70, 0xa0, 0xec, 0x0d, 0x71, 0x91 }, 1762 .ilen = 16, 1763 .result = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1764 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 1765 .rlen = 16, 1766 }, { 1767 .key = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 1768 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 1769 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 1770 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, 1771 .klen = 32, 1772 .input = { 0x8e, 0xa2, 0xb7, 0xca, 0x51, 0x67, 0x45, 0xbf, 1773 0xea, 0xfc, 0x49, 0x90, 0x4b, 0x49, 0x60, 0x89 }, 1774 .ilen = 16, 1775 .result = { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 1776 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, 1777 .rlen = 16, 1778 }, 1779 }; 1780 1781 /* Cast5 test vectors from RFC 2144 */ 1782 #define CAST5_ENC_TEST_VECTORS 3 1783 #define CAST5_DEC_TEST_VECTORS 3 1784 1785 struct cipher_testvec cast5_enc_tv_template[] = 1786 { 1787 { 1788 .key = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 1789 0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9a }, 1790 .klen = 16, 1791 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1792 .ilen = 8, 1793 .result = { 0x23, 0x8b, 0x4f, 0xe5, 0x84, 0x7e, 0x44, 0xb2 }, 1794 .rlen = 8, 1795 }, { 1796 .key = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 1797 0x23, 0x45 }, 1798 .klen = 10, 1799 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1800 .ilen = 8, 1801 .result = { 0xeb, 0x6a, 0x71, 0x1a, 0x2c, 0x02, 0x27, 0x1b }, 1802 .rlen = 8, 1803 }, { 1804 .key = { 0x01, 0x23, 0x45, 0x67, 0x12 }, 1805 .klen = 5, 1806 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1807 .ilen = 8, 1808 .result = { 0x7a, 0xc8, 0x16, 0xd1, 0x6e, 0x9b, 0x30, 0x2e }, 1809 .rlen = 8, 1810 }, 1811 }; 1812 1813 struct cipher_testvec cast5_dec_tv_template[] = 1814 { 1815 { 1816 .key = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 1817 0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9a }, 1818 .klen = 16, 1819 .input = { 0x23, 0x8b, 0x4f, 0xe5, 0x84, 0x7e, 0x44, 0xb2 }, 1820 .ilen = 8, 1821 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1822 .rlen = 8, 1823 }, { 1824 .key = { 0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 1825 0x23, 0x45 }, 1826 .klen = 10, 1827 .input = { 0xeb, 0x6a, 0x71, 0x1a, 0x2c, 0x02, 0x27, 0x1b }, 1828 .ilen = 8, 1829 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1830 .rlen = 8, 1831 }, { 1832 .key = { 0x01, 0x23, 0x45, 0x67, 0x12 }, 1833 .klen = 5, 1834 .input = { 0x7a, 0xc8, 0x16, 0xd1, 0x6e, 0x9b, 0x30, 0x2e }, 1835 .ilen = 8, 1836 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1837 .rlen = 8, 1838 }, 1839 }; 1840 1841 /* 1842 * ARC4 test vectors from OpenSSL 1843 */ 1844 #define ARC4_ENC_TEST_VECTORS 7 1845 #define ARC4_DEC_TEST_VECTORS 7 1846 1847 struct cipher_testvec arc4_enc_tv_template[] = 1848 { 1849 { 1850 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1851 .klen = 8, 1852 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1853 .ilen = 8, 1854 .result = { 0x75, 0xb7, 0x87, 0x80, 0x99, 0xe0, 0xc5, 0x96 }, 1855 .rlen = 8, 1856 }, { 1857 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1858 .klen = 8, 1859 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1860 .ilen = 8, 1861 .result = { 0x74, 0x94, 0xc2, 0xe7, 0x10, 0x4b, 0x08, 0x79 }, 1862 .rlen = 8, 1863 }, { 1864 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1865 .klen = 8, 1866 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1867 .ilen = 8, 1868 .result = { 0xde, 0x18, 0x89, 0x41, 0xa3, 0x37, 0x5d, 0x3a }, 1869 .rlen = 8, 1870 }, { 1871 .key = { 0xef, 0x01, 0x23, 0x45}, 1872 .klen = 4, 1873 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1874 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1875 0x00, 0x00, 0x00, 0x00 }, 1876 .ilen = 20, 1877 .result = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf, 1878 0xbd, 0x61, 0x5a, 0x11, 0x62, 0xe1, 0xc7, 0xba, 1879 0x36, 0xb6, 0x78, 0x58 }, 1880 .rlen = 20, 1881 }, { 1882 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1883 .klen = 8, 1884 .input = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 1885 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 1886 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 1887 0x12, 0x34, 0x56, 0x78 }, 1888 .ilen = 28, 1889 .result = { 0x66, 0xa0, 0x94, 0x9f, 0x8a, 0xf7, 0xd6, 0x89, 1890 0x1f, 0x7f, 0x83, 0x2b, 0xa8, 0x33, 0xc0, 0x0c, 1891 0x89, 0x2e, 0xbe, 0x30, 0x14, 0x3c, 0xe2, 0x87, 1892 0x40, 0x01, 0x1e, 0xcf }, 1893 .rlen = 28, 1894 }, { 1895 .key = { 0xef, 0x01, 0x23, 0x45 }, 1896 .klen = 4, 1897 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1898 0x00, 0x00 }, 1899 .ilen = 10, 1900 .result = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf, 1901 0xbd, 0x61 }, 1902 .rlen = 10, 1903 }, { 1904 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 1905 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1906 .klen = 16, 1907 .input = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF }, 1908 .ilen = 8, 1909 .result = { 0x69, 0x72, 0x36, 0x59, 0x1B, 0x52, 0x42, 0xB1 }, 1910 .rlen = 8, 1911 }, 1912 }; 1913 1914 struct cipher_testvec arc4_dec_tv_template[] = 1915 { 1916 { 1917 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1918 .klen = 8, 1919 .input = { 0x75, 0xb7, 0x87, 0x80, 0x99, 0xe0, 0xc5, 0x96 }, 1920 .ilen = 8, 1921 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1922 .rlen = 8, 1923 }, { 1924 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1925 .klen = 8, 1926 .input = { 0x74, 0x94, 0xc2, 0xe7, 0x10, 0x4b, 0x08, 0x79 }, 1927 .ilen = 8, 1928 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1929 .rlen = 8, 1930 }, { 1931 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1932 .klen = 8, 1933 .input = { 0xde, 0x18, 0x89, 0x41, 0xa3, 0x37, 0x5d, 0x3a }, 1934 .ilen = 8, 1935 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1936 .rlen = 8, 1937 }, { 1938 .key = { 0xef, 0x01, 0x23, 0x45}, 1939 .klen = 4, 1940 .input = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf, 1941 0xbd, 0x61, 0x5a, 0x11, 0x62, 0xe1, 0xc7, 0xba, 1942 0x36, 0xb6, 0x78, 0x58 }, 1943 .ilen = 20, 1944 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1945 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1946 0x00, 0x00, 0x00, 0x00 }, 1947 .rlen = 20, 1948 }, { 1949 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }, 1950 .klen = 8, 1951 .input = { 0x66, 0xa0, 0x94, 0x9f, 0x8a, 0xf7, 0xd6, 0x89, 1952 0x1f, 0x7f, 0x83, 0x2b, 0xa8, 0x33, 0xc0, 0x0c, 1953 0x89, 0x2e, 0xbe, 0x30, 0x14, 0x3c, 0xe2, 0x87, 1954 0x40, 0x01, 0x1e, 0xcf }, 1955 .ilen = 28, 1956 .result = { 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 1957 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 1958 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xF0, 1959 0x12, 0x34, 0x56, 0x78 }, 1960 .rlen = 28, 1961 }, { 1962 .key = { 0xef, 0x01, 0x23, 0x45 }, 1963 .klen = 4, 1964 .input = { 0xd6, 0xa1, 0x41, 0xa7, 0xec, 0x3c, 0x38, 0xdf, 1965 0xbd, 0x61 }, 1966 .ilen = 10, 1967 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1968 0x00, 0x00 }, 1969 .rlen = 10, 1970 }, { 1971 .key = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 1972 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 1973 .klen = 16, 1974 .input = { 0x69, 0x72, 0x36, 0x59, 0x1B, 0x52, 0x42, 0xB1 }, 1975 .ilen = 8, 1976 .result = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF }, 1977 .rlen = 8, 1978 }, 1979 }; 1980 1981 /* 1982 * TEA test vectors 1983 */ 1984 #define TEA_ENC_TEST_VECTORS 4 1985 #define TEA_DEC_TEST_VECTORS 4 1986 1987 struct cipher_testvec tea_enc_tv_template[] = 1988 { 1989 { 1990 .key = { [0 ... 15] = 0x00 }, 1991 .klen = 16, 1992 .input = { [0 ... 8] = 0x00 }, 1993 .ilen = 8, 1994 .result = { 0x0a, 0x3a, 0xea, 0x41, 0x40, 0xa9, 0xba, 0x94 }, 1995 .rlen = 8, 1996 }, { 1997 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76, 1998 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 }, 1999 .klen = 16, 2000 .input = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e }, 2001 .ilen = 8, 2002 .result = { 0x77, 0x5d, 0x2a, 0x6a, 0xf6, 0xce, 0x92, 0x09 }, 2003 .rlen = 8, 2004 }, { 2005 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25, 2006 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e }, 2007 .klen = 16, 2008 .input = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74, 2009 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 }, 2010 .ilen = 16, 2011 .result = { 0xbe, 0x7a, 0xbb, 0x81, 0x95, 0x2d, 0x1f, 0x1e, 2012 0xdd, 0x89, 0xa1, 0x25, 0x04, 0x21, 0xdf, 0x95 }, 2013 .rlen = 16, 2014 }, { 2015 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c, 2016 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f }, 2017 .klen = 16, 2018 .input = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 2019 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 2020 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 2021 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 }, 2022 .ilen = 32, 2023 .result = { 0xe0, 0x4d, 0x5d, 0x3c, 0xb7, 0x8c, 0x36, 0x47, 2024 0x94, 0x18, 0x95, 0x91, 0xa9, 0xfc, 0x49, 0xf8, 2025 0x44, 0xd1, 0x2d, 0xc2, 0x99, 0xb8, 0x08, 0x2a, 2026 0x07, 0x89, 0x73, 0xc2, 0x45, 0x92, 0xc6, 0x90 }, 2027 .rlen = 32, 2028 } 2029 }; 2030 2031 struct cipher_testvec tea_dec_tv_template[] = 2032 { 2033 { 2034 .key = { [0 ... 15] = 0x00 }, 2035 .klen = 16, 2036 .input = { 0x0a, 0x3a, 0xea, 0x41, 0x40, 0xa9, 0xba, 0x94 }, 2037 .ilen = 8, 2038 .result = { [0 ... 8] = 0x00 }, 2039 .rlen = 8, 2040 }, { 2041 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76, 2042 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 }, 2043 .klen = 16, 2044 .input = { 0x77, 0x5d, 0x2a, 0x6a, 0xf6, 0xce, 0x92, 0x09 }, 2045 .ilen = 8, 2046 .result = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e }, 2047 .rlen = 8, 2048 }, { 2049 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25, 2050 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e }, 2051 .klen = 16, 2052 .input = { 0xbe, 0x7a, 0xbb, 0x81, 0x95, 0x2d, 0x1f, 0x1e, 2053 0xdd, 0x89, 0xa1, 0x25, 0x04, 0x21, 0xdf, 0x95 }, 2054 .ilen = 16, 2055 .result = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74, 2056 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 }, 2057 .rlen = 16, 2058 }, { 2059 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c, 2060 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f }, 2061 .klen = 16, 2062 .input = { 0xe0, 0x4d, 0x5d, 0x3c, 0xb7, 0x8c, 0x36, 0x47, 2063 0x94, 0x18, 0x95, 0x91, 0xa9, 0xfc, 0x49, 0xf8, 2064 0x44, 0xd1, 0x2d, 0xc2, 0x99, 0xb8, 0x08, 0x2a, 2065 0x07, 0x89, 0x73, 0xc2, 0x45, 0x92, 0xc6, 0x90 }, 2066 .ilen = 32, 2067 .result = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 2068 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 2069 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 2070 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 }, 2071 .rlen = 32, 2072 } 2073 }; 2074 2075 /* 2076 * XTEA test vectors 2077 */ 2078 #define XTEA_ENC_TEST_VECTORS 4 2079 #define XTEA_DEC_TEST_VECTORS 4 2080 2081 struct cipher_testvec xtea_enc_tv_template[] = 2082 { 2083 { 2084 .key = { [0 ... 15] = 0x00 }, 2085 .klen = 16, 2086 .input = { [0 ... 8] = 0x00 }, 2087 .ilen = 8, 2088 .result = { 0xd8, 0xd4, 0xe9, 0xde, 0xd9, 0x1e, 0x13, 0xf7 }, 2089 .rlen = 8, 2090 }, { 2091 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76, 2092 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 }, 2093 .klen = 16, 2094 .input = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e }, 2095 .ilen = 8, 2096 .result = { 0x94, 0xeb, 0xc8, 0x96, 0x84, 0x6a, 0x49, 0xa8 }, 2097 .rlen = 8, 2098 }, { 2099 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25, 2100 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e }, 2101 .klen = 16, 2102 .input = { 0x3e, 0xce, 0xae, 0x22, 0x60, 0x56, 0xa8, 0x9d, 2103 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 }, 2104 .ilen = 16, 2105 .result = { 0xe2, 0x04, 0xdb, 0xf2, 0x89, 0x85, 0x9e, 0xea, 2106 0x61, 0x35, 0xaa, 0xed, 0xb5, 0xcb, 0x71, 0x2c }, 2107 .rlen = 16, 2108 }, { 2109 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c, 2110 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f }, 2111 .klen = 16, 2112 .input = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 2113 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 2114 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 2115 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 }, 2116 .ilen = 32, 2117 .result = { 0x99, 0x81, 0x9f, 0x5d, 0x6f, 0x4b, 0x31, 0x3a, 2118 0x86, 0xff, 0x6f, 0xd0, 0xe3, 0x87, 0x70, 0x07, 2119 0x4d, 0xb8, 0xcf, 0xf3, 0x99, 0x50, 0xb3, 0xd4, 2120 0x73, 0xa2, 0xfa, 0xc9, 0x16, 0x59, 0x5d, 0x81 }, 2121 .rlen = 32, 2122 } 2123 }; 2124 2125 struct cipher_testvec xtea_dec_tv_template[] = 2126 { 2127 { 2128 .key = { [0 ... 15] = 0x00 }, 2129 .klen = 16, 2130 .input = { 0xd8, 0xd4, 0xe9, 0xde, 0xd9, 0x1e, 0x13, 0xf7 }, 2131 .ilen = 8, 2132 .result = { [0 ... 8] = 0x00 }, 2133 .rlen = 8, 2134 }, { 2135 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76, 2136 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 }, 2137 .klen = 16, 2138 .input = { 0x94, 0xeb, 0xc8, 0x96, 0x84, 0x6a, 0x49, 0xa8 }, 2139 .ilen = 8, 2140 .result = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e }, 2141 .rlen = 8, 2142 }, { 2143 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25, 2144 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e }, 2145 .klen = 16, 2146 .input = { 0x3e, 0xce, 0xae, 0x22, 0x60, 0x56, 0xa8, 0x9d, 2147 0x77, 0x4d, 0xd4, 0xb4, 0x87, 0x24, 0xe3, 0x9a }, 2148 .ilen = 16, 2149 .result = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74, 2150 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 }, 2151 .rlen = 16, 2152 }, { 2153 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c, 2154 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f }, 2155 .klen = 16, 2156 .input = { 0x99, 0x81, 0x9f, 0x5d, 0x6f, 0x4b, 0x31, 0x3a, 2157 0x86, 0xff, 0x6f, 0xd0, 0xe3, 0x87, 0x70, 0x07, 2158 0x4d, 0xb8, 0xcf, 0xf3, 0x99, 0x50, 0xb3, 0xd4, 2159 0x73, 0xa2, 0xfa, 0xc9, 0x16, 0x59, 0x5d, 0x81 }, 2160 .ilen = 32, 2161 .result = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 2162 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 2163 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 2164 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 }, 2165 .rlen = 32, 2166 } 2167 }; 2168 2169 /* 2170 * KHAZAD test vectors. 2171 */ 2172 #define KHAZAD_ENC_TEST_VECTORS 5 2173 #define KHAZAD_DEC_TEST_VECTORS 5 2174 2175 struct cipher_testvec khazad_enc_tv_template[] = { 2176 { 2177 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2178 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 2179 .klen = 16, 2180 .input = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 2181 .ilen = 8, 2182 .result = { 0x49, 0xa4, 0xce, 0x32, 0xac, 0x19, 0x0e, 0x3f }, 2183 .rlen = 8, 2184 }, { 2185 .key = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 2186 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 }, 2187 .klen = 16, 2188 .input = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 }, 2189 .ilen = 8, 2190 .result = { 0x7e, 0x82, 0x12, 0xa1, 0Xd9, 0X5b, 0Xe4, 0Xf9 }, 2191 .rlen = 8, 2192 }, { 2193 .key = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 2194 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 }, 2195 .klen = 16, 2196 .input = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 }, 2197 .ilen = 8, 2198 .result = { 0Xaa, 0Xbe, 0Xc1, 0X95, 0Xc5, 0X94, 0X1a, 0X9c }, 2199 .rlen = 8, 2200 }, { 2201 .key = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 2202 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 2203 .klen = 16, 2204 .input = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 2205 .ilen = 8, 2206 .result = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 }, 2207 .rlen = 8, 2208 }, { 2209 .key = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 2210 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 2211 .klen = 16, 2212 .input = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f , 2213 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 2214 .ilen = 16, 2215 .result = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 , 2216 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 }, 2217 .rlen = 16, 2218 }, 2219 }; 2220 2221 struct cipher_testvec khazad_dec_tv_template[] = { 2222 { 2223 .key = { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2224 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 2225 .klen = 16, 2226 .input = { 0X49, 0Xa4, 0Xce, 0X32, 0Xac, 0X19, 0X0e, 0X3f }, 2227 .ilen = 8, 2228 .result = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 2229 .rlen = 8, 2230 }, { 2231 .key = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 2232 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 }, 2233 .klen = 16, 2234 .input = { 0X7e, 0X82, 0X12, 0Xa1, 0Xd9, 0X5b, 0Xe4, 0Xf9 }, 2235 .ilen = 8, 2236 .result = { 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38 }, 2237 .rlen = 8, 2238 }, { 2239 .key = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 2240 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 }, 2241 .klen = 16, 2242 .input = { 0Xaa, 0Xbe, 0Xc1, 0X95, 0Xc5, 0X94, 0X1a, 0X9c }, 2243 .ilen = 8, 2244 .result = { 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2, 0Xa2 }, 2245 .rlen = 8, 2246 }, { 2247 .key = { 0x2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 2248 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 2249 .klen = 16, 2250 .input = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 }, 2251 .ilen = 8, 2252 .result = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 2253 .rlen = 8, 2254 }, { 2255 .key = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 2256 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 2257 .klen = 16, 2258 .input = { 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 , 2259 0X04, 0X74, 0Xf5, 0X70, 0X50, 0X16, 0Xd3, 0Xb8 }, 2260 .ilen = 16, 2261 .result = { 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f , 2262 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f, 0X2f }, 2263 .rlen = 16, 2264 }, 2265 }; 2266 2267 /* 2268 * Anubis test vectors. 2269 */ 2270 2271 #define ANUBIS_ENC_TEST_VECTORS 5 2272 #define ANUBIS_DEC_TEST_VECTORS 5 2273 #define ANUBIS_CBC_ENC_TEST_VECTORS 2 2274 #define ANUBIS_CBC_DEC_TEST_VECTORS 2 2275 2276 struct cipher_testvec anubis_enc_tv_template[] = { 2277 { 2278 .key = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 2279 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 2280 .klen = 16, 2281 .input = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 2282 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 2283 .ilen = 16, 2284 .result = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f, 2285 0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90 }, 2286 .rlen = 16, 2287 }, { 2288 2289 .key = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 2290 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 2291 0x03, 0x03, 0x03, 0x03 }, 2292 .klen = 20, 2293 .input = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 2294 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 }, 2295 .ilen = 16, 2296 .result = { 0xdb, 0xf1, 0x42, 0xf4, 0xd1, 0x8a, 0xc7, 0x49, 2297 0x87, 0x41, 0x6f, 0x82, 0x0a, 0x98, 0x64, 0xae }, 2298 .rlen = 16, 2299 }, { 2300 .key = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 2301 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 2302 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 2303 0x24, 0x24, 0x24, 0x24 }, 2304 .klen = 28, 2305 .input = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 2306 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24 }, 2307 .ilen = 16, 2308 .result = { 0xfd, 0x1b, 0x4a, 0xe3, 0xbf, 0xf0, 0xad, 0x3d, 2309 0x06, 0xd3, 0x61, 0x27, 0xfd, 0x13, 0x9e, 0xde }, 2310 .rlen = 16, 2311 }, { 2312 .key = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 2313 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 2314 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 2315 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 }, 2316 .klen = 32, 2317 .input = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 2318 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 }, 2319 .ilen = 16, 2320 .result = { 0x1a, 0x91, 0xfb, 0x2b, 0xb7, 0x78, 0x6b, 0xc4, 2321 0x17, 0xd9, 0xff, 0x40, 0x3b, 0x0e, 0xe5, 0xfe }, 2322 .rlen = 16, 2323 }, { 2324 .key = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2325 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2326 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2327 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2328 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 2329 .klen = 40, 2330 .input = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2331 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 2332 .ilen = 16, 2333 .result = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97, 2334 0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee }, 2335 .rlen = 16, 2336 }, 2337 }; 2338 2339 struct cipher_testvec anubis_dec_tv_template[] = { 2340 { 2341 .key = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 2342 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 2343 .klen = 16, 2344 .input = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f, 2345 0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90 }, 2346 .ilen = 16, 2347 .result = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 2348 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 2349 .rlen = 16, 2350 }, { 2351 2352 .key = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 2353 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 2354 0x03, 0x03, 0x03, 0x03 }, 2355 .klen = 20, 2356 .input = { 0xdb, 0xf1, 0x42, 0xf4, 0xd1, 0x8a, 0xc7, 0x49, 2357 0x87, 0x41, 0x6f, 0x82, 0x0a, 0x98, 0x64, 0xae }, 2358 .ilen = 16, 2359 .result = { 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 2360 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 }, 2361 .rlen = 16, 2362 }, { 2363 .key = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 2364 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 2365 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 2366 0x24, 0x24, 0x24, 0x24 }, 2367 .klen = 28, 2368 .input = { 0xfd, 0x1b, 0x4a, 0xe3, 0xbf, 0xf0, 0xad, 0x3d, 2369 0x06, 0xd3, 0x61, 0x27, 0xfd, 0x13, 0x9e, 0xde }, 2370 .ilen = 16, 2371 .result = { 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 2372 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24 }, 2373 .rlen = 16, 2374 }, { 2375 .key = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 2376 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 2377 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 2378 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 }, 2379 .klen = 32, 2380 .input = { 0x1a, 0x91, 0xfb, 0x2b, 0xb7, 0x78, 0x6b, 0xc4, 2381 0x17, 0xd9, 0xff, 0x40, 0x3b, 0x0e, 0xe5, 0xfe }, 2382 .ilen = 16, 2383 .result = { 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 2384 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25 }, 2385 .rlen = 16, 2386 }, { 2387 .key = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2388 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2389 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2390 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2391 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 2392 .input = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97, 2393 0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee }, 2394 .klen = 40, 2395 .ilen = 16, 2396 .result = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2397 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 2398 .rlen = 16, 2399 }, 2400 }; 2401 2402 struct cipher_testvec anubis_cbc_enc_tv_template[] = { 2403 { 2404 .key = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 2405 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 2406 .klen = 16, 2407 .input = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 2408 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 2409 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 2410 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 2411 .ilen = 32, 2412 .result = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f, 2413 0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90, 2414 0x86, 0xd8, 0xb5, 0x6f, 0x98, 0x5e, 0x8a, 0x66, 2415 0x4f, 0x1f, 0x78, 0xa1, 0xbb, 0x37, 0xf1, 0xbe }, 2416 .rlen = 32, 2417 }, { 2418 .key = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2419 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2420 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2421 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2422 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 2423 .klen = 40, 2424 .input = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2425 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2426 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2427 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 2428 .ilen = 32, 2429 .result = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97, 2430 0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee, 2431 0xa2, 0xbc, 0x06, 0x98, 0xc6, 0x4b, 0xda, 0x75, 2432 0x2e, 0xaa, 0xbe, 0x58, 0xce, 0x01, 0x5b, 0xc7 }, 2433 .rlen = 32, 2434 }, 2435 }; 2436 2437 struct cipher_testvec anubis_cbc_dec_tv_template[] = { 2438 { 2439 .key = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 2440 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 2441 .klen = 16, 2442 .input = { 0x6d, 0xc5, 0xda, 0xa2, 0x26, 0x7d, 0x62, 0x6f, 2443 0x08, 0xb7, 0x52, 0x8e, 0x6e, 0x6e, 0x86, 0x90, 2444 0x86, 0xd8, 0xb5, 0x6f, 0x98, 0x5e, 0x8a, 0x66, 2445 0x4f, 0x1f, 0x78, 0xa1, 0xbb, 0x37, 0xf1, 0xbe }, 2446 .ilen = 32, 2447 .result = { 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 2448 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 2449 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 2450 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe }, 2451 .rlen = 32, 2452 }, { 2453 .key = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2454 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2455 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2456 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2457 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 2458 .klen = 40, 2459 .input = { 0xa5, 0x2c, 0x85, 0x6f, 0x9c, 0xba, 0xa0, 0x97, 2460 0x9e, 0xc6, 0x84, 0x0f, 0x17, 0x21, 0x07, 0xee, 2461 0xa2, 0xbc, 0x06, 0x98, 0xc6, 0x4b, 0xda, 0x75, 2462 0x2e, 0xaa, 0xbe, 0x58, 0xce, 0x01, 0x5b, 0xc7 }, 2463 .ilen = 32, 2464 .result = { 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2465 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2466 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 2467 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35 }, 2468 .rlen = 32, 2469 }, 2470 }; 2471 2472 /* 2473 * XETA test vectors 2474 */ 2475 #define XETA_ENC_TEST_VECTORS 4 2476 #define XETA_DEC_TEST_VECTORS 4 2477 2478 struct cipher_testvec xeta_enc_tv_template[] = 2479 { 2480 { 2481 .key = { [0 ... 15] = 0x00 }, 2482 .klen = 16, 2483 .input = { [0 ... 8] = 0x00 }, 2484 .ilen = 8, 2485 .result = { 0xaa, 0x22, 0x96, 0xe5, 0x6c, 0x61, 0xf3, 0x45 }, 2486 .rlen = 8, 2487 }, { 2488 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76, 2489 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 }, 2490 .klen = 16, 2491 .input = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e }, 2492 .ilen = 8, 2493 .result = { 0x82, 0x3e, 0xeb, 0x35, 0xdc, 0xdd, 0xd9, 0xc3 }, 2494 .rlen = 8, 2495 }, { 2496 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25, 2497 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e }, 2498 .klen = 16, 2499 .input = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74, 2500 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 }, 2501 .ilen = 16, 2502 .result = { 0xe2, 0x04, 0xdb, 0xf2, 0x89, 0x85, 0x9e, 0xea, 2503 0x61, 0x35, 0xaa, 0xed, 0xb5, 0xcb, 0x71, 0x2c }, 2504 .rlen = 16, 2505 }, { 2506 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c, 2507 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f }, 2508 .klen = 16, 2509 .input = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 2510 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 2511 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 2512 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 }, 2513 .ilen = 32, 2514 .result = { 0x0b, 0x03, 0xcd, 0x8a, 0xbe, 0x95, 0xfd, 0xb1, 2515 0xc1, 0x44, 0x91, 0x0b, 0xa5, 0xc9, 0x1b, 0xb4, 2516 0xa9, 0xda, 0x1e, 0x9e, 0xb1, 0x3e, 0x2a, 0x8f, 2517 0xea, 0xa5, 0x6a, 0x85, 0xd1, 0xf4, 0xa8, 0xa5 }, 2518 .rlen = 32, 2519 } 2520 }; 2521 2522 struct cipher_testvec xeta_dec_tv_template[] = 2523 { 2524 { 2525 .key = { [0 ... 15] = 0x00 }, 2526 .klen = 16, 2527 .input = { 0xaa, 0x22, 0x96, 0xe5, 0x6c, 0x61, 0xf3, 0x45 }, 2528 .ilen = 8, 2529 .result = { [0 ... 8] = 0x00 }, 2530 .rlen = 8, 2531 }, { 2532 .key = { 0x2b, 0x02, 0x05, 0x68, 0x06, 0x14, 0x49, 0x76, 2533 0x77, 0x5d, 0x0e, 0x26, 0x6c, 0x28, 0x78, 0x43 }, 2534 .klen = 16, 2535 .input = { 0x82, 0x3e, 0xeb, 0x35, 0xdc, 0xdd, 0xd9, 0xc3 }, 2536 .ilen = 8, 2537 .result = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6d, 0x65, 0x2e }, 2538 .rlen = 8, 2539 }, { 2540 .key = { 0x09, 0x65, 0x43, 0x11, 0x66, 0x44, 0x39, 0x25, 2541 0x51, 0x3a, 0x16, 0x10, 0x0a, 0x08, 0x12, 0x6e }, 2542 .klen = 16, 2543 .input = { 0xe2, 0x04, 0xdb, 0xf2, 0x89, 0x85, 0x9e, 0xea, 2544 0x61, 0x35, 0xaa, 0xed, 0xb5, 0xcb, 0x71, 0x2c }, 2545 .ilen = 16, 2546 .result = { 0x6c, 0x6f, 0x6e, 0x67, 0x65, 0x72, 0x5f, 0x74, 2547 0x65, 0x73, 0x74, 0x5f, 0x76, 0x65, 0x63, 0x74 }, 2548 .rlen = 16, 2549 }, { 2550 .key = { 0x4d, 0x76, 0x32, 0x17, 0x05, 0x3f, 0x75, 0x2c, 2551 0x5d, 0x04, 0x16, 0x36, 0x15, 0x72, 0x63, 0x2f }, 2552 .klen = 16, 2553 .input = { 0x0b, 0x03, 0xcd, 0x8a, 0xbe, 0x95, 0xfd, 0xb1, 2554 0xc1, 0x44, 0x91, 0x0b, 0xa5, 0xc9, 0x1b, 0xb4, 2555 0xa9, 0xda, 0x1e, 0x9e, 0xb1, 0x3e, 0x2a, 0x8f, 2556 0xea, 0xa5, 0x6a, 0x85, 0xd1, 0xf4, 0xa8, 0xa5 }, 2557 .ilen = 32, 2558 .result = { 0x54, 0x65, 0x61, 0x20, 0x69, 0x73, 0x20, 0x67, 2559 0x6f, 0x6f, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x20, 2560 0x79, 0x6f, 0x75, 0x21, 0x21, 0x21, 0x20, 0x72, 2561 0x65, 0x61, 0x6c, 0x6c, 0x79, 0x21, 0x21, 0x21 }, 2562 .rlen = 32, 2563 } 2564 }; 2565 2566 /* 2567 * Compression stuff. 2568 */ 2569 #define COMP_BUF_SIZE 512 2570 2571 struct comp_testvec { 2572 int inlen, outlen; 2573 char input[COMP_BUF_SIZE]; 2574 char output[COMP_BUF_SIZE]; 2575 }; 2576 2577 /* 2578 * Deflate test vectors (null-terminated strings). 2579 * Params: winbits=11, Z_DEFAULT_COMPRESSION, MAX_MEM_LEVEL. 2580 */ 2581 #define DEFLATE_COMP_TEST_VECTORS 2 2582 #define DEFLATE_DECOMP_TEST_VECTORS 2 2583 2584 struct comp_testvec deflate_comp_tv_template[] = { 2585 { 2586 .inlen = 70, 2587 .outlen = 38, 2588 .input = "Join us now and share the software " 2589 "Join us now and share the software ", 2590 .output = { 0xf3, 0xca, 0xcf, 0xcc, 0x53, 0x28, 0x2d, 0x56, 2591 0xc8, 0xcb, 0x2f, 0x57, 0x48, 0xcc, 0x4b, 0x51, 2592 0x28, 0xce, 0x48, 0x2c, 0x4a, 0x55, 0x28, 0xc9, 2593 0x48, 0x55, 0x28, 0xce, 0x4f, 0x2b, 0x29, 0x07, 2594 0x71, 0xbc, 0x08, 0x2b, 0x01, 0x00 }, 2595 }, { 2596 .inlen = 191, 2597 .outlen = 122, 2598 .input = "This document describes a compression method based on the DEFLATE" 2599 "compression algorithm. This document defines the application of " 2600 "the DEFLATE algorithm to the IP Payload Compression Protocol.", 2601 .output = { 0x5d, 0x8d, 0x31, 0x0e, 0xc2, 0x30, 0x10, 0x04, 2602 0xbf, 0xb2, 0x2f, 0xc8, 0x1f, 0x10, 0x04, 0x09, 2603 0x89, 0xc2, 0x85, 0x3f, 0x70, 0xb1, 0x2f, 0xf8, 2604 0x24, 0xdb, 0x67, 0xd9, 0x47, 0xc1, 0xef, 0x49, 2605 0x68, 0x12, 0x51, 0xae, 0x76, 0x67, 0xd6, 0x27, 2606 0x19, 0x88, 0x1a, 0xde, 0x85, 0xab, 0x21, 0xf2, 2607 0x08, 0x5d, 0x16, 0x1e, 0x20, 0x04, 0x2d, 0xad, 2608 0xf3, 0x18, 0xa2, 0x15, 0x85, 0x2d, 0x69, 0xc4, 2609 0x42, 0x83, 0x23, 0xb6, 0x6c, 0x89, 0x71, 0x9b, 2610 0xef, 0xcf, 0x8b, 0x9f, 0xcf, 0x33, 0xca, 0x2f, 2611 0xed, 0x62, 0xa9, 0x4c, 0x80, 0xff, 0x13, 0xaf, 2612 0x52, 0x37, 0xed, 0x0e, 0x52, 0x6b, 0x59, 0x02, 2613 0xd9, 0x4e, 0xe8, 0x7a, 0x76, 0x1d, 0x02, 0x98, 2614 0xfe, 0x8a, 0x87, 0x83, 0xa3, 0x4f, 0x56, 0x8a, 2615 0xb8, 0x9e, 0x8e, 0x5c, 0x57, 0xd3, 0xa0, 0x79, 2616 0xfa, 0x02 }, 2617 }, 2618 }; 2619 2620 struct comp_testvec deflate_decomp_tv_template[] = { 2621 { 2622 .inlen = 122, 2623 .outlen = 191, 2624 .input = { 0x5d, 0x8d, 0x31, 0x0e, 0xc2, 0x30, 0x10, 0x04, 2625 0xbf, 0xb2, 0x2f, 0xc8, 0x1f, 0x10, 0x04, 0x09, 2626 0x89, 0xc2, 0x85, 0x3f, 0x70, 0xb1, 0x2f, 0xf8, 2627 0x24, 0xdb, 0x67, 0xd9, 0x47, 0xc1, 0xef, 0x49, 2628 0x68, 0x12, 0x51, 0xae, 0x76, 0x67, 0xd6, 0x27, 2629 0x19, 0x88, 0x1a, 0xde, 0x85, 0xab, 0x21, 0xf2, 2630 0x08, 0x5d, 0x16, 0x1e, 0x20, 0x04, 0x2d, 0xad, 2631 0xf3, 0x18, 0xa2, 0x15, 0x85, 0x2d, 0x69, 0xc4, 2632 0x42, 0x83, 0x23, 0xb6, 0x6c, 0x89, 0x71, 0x9b, 2633 0xef, 0xcf, 0x8b, 0x9f, 0xcf, 0x33, 0xca, 0x2f, 2634 0xed, 0x62, 0xa9, 0x4c, 0x80, 0xff, 0x13, 0xaf, 2635 0x52, 0x37, 0xed, 0x0e, 0x52, 0x6b, 0x59, 0x02, 2636 0xd9, 0x4e, 0xe8, 0x7a, 0x76, 0x1d, 0x02, 0x98, 2637 0xfe, 0x8a, 0x87, 0x83, 0xa3, 0x4f, 0x56, 0x8a, 2638 0xb8, 0x9e, 0x8e, 0x5c, 0x57, 0xd3, 0xa0, 0x79, 2639 0xfa, 0x02 }, 2640 .output = "This document describes a compression method based on the DEFLATE" 2641 "compression algorithm. This document defines the application of " 2642 "the DEFLATE algorithm to the IP Payload Compression Protocol.", 2643 }, { 2644 .inlen = 38, 2645 .outlen = 70, 2646 .input = { 0xf3, 0xca, 0xcf, 0xcc, 0x53, 0x28, 0x2d, 0x56, 2647 0xc8, 0xcb, 0x2f, 0x57, 0x48, 0xcc, 0x4b, 0x51, 2648 0x28, 0xce, 0x48, 0x2c, 0x4a, 0x55, 0x28, 0xc9, 2649 0x48, 0x55, 0x28, 0xce, 0x4f, 0x2b, 0x29, 0x07, 2650 0x71, 0xbc, 0x08, 0x2b, 0x01, 0x00 }, 2651 .output = "Join us now and share the software " 2652 "Join us now and share the software ", 2653 }, 2654 }; 2655 2656 /* 2657 * Michael MIC test vectors from IEEE 802.11i 2658 */ 2659 #define MICHAEL_MIC_TEST_VECTORS 6 2660 2661 struct hash_testvec michael_mic_tv_template[] = 2662 { 2663 { 2664 .key = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, 2665 .ksize = 8, 2666 .plaintext = { }, 2667 .psize = 0, 2668 .digest = { 0x82, 0x92, 0x5c, 0x1c, 0xa1, 0xd1, 0x30, 0xb8 } 2669 }, 2670 { 2671 .key = { 0x82, 0x92, 0x5c, 0x1c, 0xa1, 0xd1, 0x30, 0xb8 }, 2672 .ksize = 8, 2673 .plaintext = { 'M' }, 2674 .psize = 1, 2675 .digest = { 0x43, 0x47, 0x21, 0xca, 0x40, 0x63, 0x9b, 0x3f } 2676 }, 2677 { 2678 .key = { 0x43, 0x47, 0x21, 0xca, 0x40, 0x63, 0x9b, 0x3f }, 2679 .ksize = 8, 2680 .plaintext = { 'M', 'i' }, 2681 .psize = 2, 2682 .digest = { 0xe8, 0xf9, 0xbe, 0xca, 0xe9, 0x7e, 0x5d, 0x29 } 2683 }, 2684 { 2685 .key = { 0xe8, 0xf9, 0xbe, 0xca, 0xe9, 0x7e, 0x5d, 0x29 }, 2686 .ksize = 8, 2687 .plaintext = { 'M', 'i', 'c' }, 2688 .psize = 3, 2689 .digest = { 0x90, 0x03, 0x8f, 0xc6, 0xcf, 0x13, 0xc1, 0xdb } 2690 }, 2691 { 2692 .key = { 0x90, 0x03, 0x8f, 0xc6, 0xcf, 0x13, 0xc1, 0xdb }, 2693 .ksize = 8, 2694 .plaintext = { 'M', 'i', 'c', 'h' }, 2695 .psize = 4, 2696 .digest = { 0xd5, 0x5e, 0x10, 0x05, 0x10, 0x12, 0x89, 0x86 } 2697 }, 2698 { 2699 .key = { 0xd5, 0x5e, 0x10, 0x05, 0x10, 0x12, 0x89, 0x86 }, 2700 .ksize = 8, 2701 .plaintext = { 'M', 'i', 'c', 'h', 'a', 'e', 'l' }, 2702 .psize = 7, 2703 .digest = { 0x0a, 0x94, 0x2b, 0x12, 0x4e, 0xca, 0xa5, 0x46 }, 2704 } 2705 }; 2706 2707 #endif /* _CRYPTO_TCRYPT_H */ 2708