1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2015-2019 Intel Corporation 3 */ 4 5 #ifndef TEST_CRYPTODEV_SNOW3G_TEST_VECTORS_H_ 6 #define TEST_CRYPTODEV_SNOW3G_TEST_VECTORS_H_ 7 8 struct snow3g_test_data { 9 struct { 10 uint8_t data[64]; 11 unsigned len; 12 } key; 13 14 struct { 15 alignas(16) uint8_t data[64]; 16 unsigned len; 17 } cipher_iv; 18 19 struct { 20 uint8_t data[1024]; 21 unsigned len; /* length must be in Bits */ 22 } plaintext; 23 24 struct { 25 uint8_t data[1024]; 26 unsigned len; /* length must be in Bits */ 27 } ciphertext; 28 29 struct { 30 unsigned len; 31 } validDataLenInBits; 32 33 struct { 34 unsigned len; 35 } validCipherLenInBits; 36 37 struct { 38 unsigned len; 39 } validAuthLenInBits; 40 41 struct { 42 uint8_t data[64]; 43 unsigned len; 44 } auth_iv; 45 46 struct { 47 uint8_t data[64]; 48 unsigned int len; /* length must be in Bytes */ 49 unsigned int offset_bytes; /* offset must be in Bytes */ 50 } digest; 51 52 struct { 53 unsigned int len_bits; /* length must be in Bits */ 54 unsigned int offset_bits; 55 } cipher; 56 57 struct { 58 unsigned int len_bits; /* length must be in Bits */ 59 unsigned int offset_bits; 60 } auth; 61 }; 62 63 struct snow3g_test_data snow3g_test_case_1 = { 64 .key = { 65 .data = { 66 0x2B, 0xD6, 0x45, 0x9F, 0x82, 0xC5, 0xB3, 0x00, 67 0x95, 0x2C, 0x49, 0x10, 0x48, 0x81, 0xFF, 0x48 68 }, 69 .len = 16 70 }, 71 .cipher_iv = { 72 .data = { 73 0x72, 0xA4, 0xF2, 0x0F, 0x64, 0x00, 0x00, 0x00, 74 0x72, 0xA4, 0xF2, 0x0F, 0x64, 0x00, 0x00, 0x00 75 }, 76 .len = 16 77 }, 78 .plaintext = { 79 .data = { 80 0x7E, 0xC6, 0x12, 0x72, 0x74, 0x3B, 0xF1, 0x61, 81 0x47, 0x26, 0x44, 0x6A, 0x6C, 0x38, 0xCE, 0xD1, 82 0x66, 0xF6, 0xCA, 0x76, 0xEB, 0x54, 0x30, 0x04, 83 0x42, 0x86, 0x34, 0x6C, 0xEF, 0x13, 0x0F, 0x92, 84 0x92, 0x2B, 0x03, 0x45, 0x0D, 0x3A, 0x99, 0x75, 85 0xE5, 0xBD, 0x2E, 0xA0, 0xEB, 0x55, 0xAD, 0x8E, 86 0x1B, 0x19, 0x9E, 0x3E, 0xC4, 0x31, 0x60, 0x20, 87 0xE9, 0xA1, 0xB2, 0x85, 0xE7, 0x62, 0x79, 0x53, 88 0x59, 0xB7, 0xBD, 0xFD, 0x39, 0xBE, 0xF4, 0xB2, 89 0x48, 0x45, 0x83, 0xD5, 0xAF, 0xE0, 0x82, 0xAE, 90 0xE6, 0x38, 0xBF, 0x5F, 0xD5, 0xA6, 0x06, 0x19, 91 0x39, 0x01, 0xA0, 0x8F, 0x4A, 0xB4, 0x1A, 0xAB, 92 0x9B, 0x13, 0x48, 0x80 93 }, 94 .len = 800 95 }, 96 .ciphertext = { 97 .data = { 98 0x8C, 0xEB, 0xA6, 0x29, 0x43, 0xDC, 0xED, 0x3A, 99 0x09, 0x90, 0xB0, 0x6E, 0xA1, 0xB0, 0xA2, 0xC4, 100 0xFB, 0x3C, 0xED, 0xC7, 0x1B, 0x36, 0x9F, 0x42, 101 0xBA, 0x64, 0xC1, 0xEB, 0x66, 0x65, 0xE7, 0x2A, 102 0xA1, 0xC9, 0xBB, 0x0D, 0xEA, 0xA2, 0x0F, 0xE8, 103 0x60, 0x58, 0xB8, 0xBA, 0xEE, 0x2C, 0x2E, 0x7F, 104 0x0B, 0xEC, 0xCE, 0x48, 0xB5, 0x29, 0x32, 0xA5, 105 0x3C, 0x9D, 0x5F, 0x93, 0x1A, 0x3A, 0x7C, 0x53, 106 0x22, 0x59, 0xAF, 0x43, 0x25, 0xE2, 0xA6, 0x5E, 107 0x30, 0x84, 0xAD, 0x5F, 0x6A, 0x51, 0x3B, 0x7B, 108 0xDD, 0xC1, 0xB6, 0x5F, 0x0A, 0xA0, 0xD9, 0x7A, 109 0x05, 0x3D, 0xB5, 0x5A, 0x88, 0xC4, 0xC4, 0xF9, 110 0x60, 0x5E, 0x41, 0x40 111 }, 112 .len = 800 113 }, 114 .cipher = { 115 .offset_bits = 0 116 }, 117 .validDataLenInBits = { 118 .len = 798 119 }, 120 .validCipherLenInBits = { 121 .len = 800 122 }, 123 .auth_iv = { 124 .data = { 125 0x72, 0xA4, 0xF2, 0x0F, 0x64, 0x00, 0x00, 0x00, 126 0x72, 0xA4, 0xF2, 0x0F, 0x64, 0x00, 0x00, 0x00 127 }, 128 .len = 16 129 } 130 }; 131 132 struct snow3g_test_data snow3g_test_case_2 = { 133 .key = { 134 .data = { 135 0xEF, 0xA8, 0xB2, 0x22, 0x9E, 0x72, 0x0C, 0x2A, 136 0x7C, 0x36, 0xEA, 0x55, 0xE9, 0x60, 0x56, 0x95 137 }, 138 .len = 16 139 }, 140 .cipher_iv = { 141 .data = { 142 0xE2, 0x8B, 0xCF, 0x7B, 0xC0, 0x00, 0x00, 0x00, 143 0xE2, 0x8B, 0xCF, 0x7B, 0xC0, 0x00, 0x00, 0x00 144 }, 145 .len = 16 146 }, 147 .plaintext = { 148 .data = { 149 0x10, 0x11, 0x12, 0x31, 0xE0, 0x60, 0x25, 0x3A, 150 0x43, 0xFD, 0x3F, 0x57, 0xE3, 0x76, 0x07, 0xAB, 151 0x28, 0x27, 0xB5, 0x99, 0xB6, 0xB1, 0xBB, 0xDA, 152 0x37, 0xA8, 0xAB, 0xCC, 0x5A, 0x8C, 0x55, 0x0D, 153 0x1B, 0xFB, 0x2F, 0x49, 0x46, 0x24, 0xFB, 0x50, 154 0x36, 0x7F, 0xA3, 0x6C, 0xE3, 0xBC, 0x68, 0xF1, 155 0x1C, 0xF9, 0x3B, 0x15, 0x10, 0x37, 0x6B, 0x02, 156 0x13, 0x0F, 0x81, 0x2A, 0x9F, 0xA1, 0x69, 0xD8 157 }, 158 .len = 512 159 }, 160 .ciphertext = { 161 .data = { 162 0xE0, 0xDA, 0x15, 0xCA, 0x8E, 0x25, 0x54, 0xF5, 163 0xE5, 0x6C, 0x94, 0x68, 0xDC, 0x6C, 0x7C, 0x12, 164 0x9C, 0x56, 0x8A, 0xA5, 0x03, 0x23, 0x17, 0xE0, 165 0x4E, 0x07, 0x29, 0x64, 0x6C, 0xAB, 0xEF, 0xA6, 166 0x89, 0x86, 0x4C, 0x41, 0x0F, 0x24, 0xF9, 0x19, 167 0xE6, 0x1E, 0x3D, 0xFD, 0xFA, 0xD7, 0x7E, 0x56, 168 0x0D, 0xB0, 0xA9, 0xCD, 0x36, 0xC3, 0x4A, 0xE4, 169 0x18, 0x14, 0x90, 0xB2, 0x9F, 0x5F, 0xA2, 0xFC 170 }, 171 .len = 512 172 }, 173 .cipher = { 174 .offset_bits = 0 175 }, 176 .validDataLenInBits = { 177 .len = 510 178 }, 179 .validCipherLenInBits = { 180 .len = 512 181 }, 182 .auth_iv = { 183 .data = { 184 0xE2, 0x8B, 0xCF, 0x7B, 0xC0, 0x00, 0x00, 0x00, 185 0xE2, 0x8B, 0xCF, 0x7B, 0xC0, 0x00, 0x00, 0x00 186 }, 187 .len = 16 188 } 189 }; 190 191 struct snow3g_test_data snow3g_test_case_3 = { 192 .key = { 193 .data = { 194 0x5A, 0xCB, 0x1D, 0x64, 0x4C, 0x0D, 0x51, 0x20, 195 0x4E, 0xA5, 0xF1, 0x45, 0x10, 0x10, 0xD8, 0x52 196 }, 197 .len = 16 198 }, 199 .cipher_iv = { 200 .data = { 201 0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00, 202 0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00 203 }, 204 .len = 16 205 }, 206 .plaintext = { 207 .data = { 208 0xAD, 0x9C, 0x44, 0x1F, 0x89, 0x0B, 0x38, 0xC4, 209 0x57, 0xA4, 0x9D, 0x42, 0x14, 0x07, 0xE8 210 }, 211 .len = 120 212 }, 213 .ciphertext = { 214 .data = { 215 0xBA, 0x0F, 0x31, 0x30, 0x03, 0x34, 0xC5, 0x6B, 216 0x52, 0xA7, 0x49, 0x7C, 0xBA, 0xC0, 0x46 217 }, 218 .len = 120 219 }, 220 .cipher = { 221 .offset_bits = 0 222 }, 223 .validDataLenInBits = { 224 .len = 120 225 }, 226 .validCipherLenInBits = { 227 .len = 120 228 }, 229 .auth_iv = { 230 .data = { 231 0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00, 232 0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00 233 }, 234 .len = 16 235 }, 236 .digest = { 237 .data = {0xE8, 0x60, 0x5A, 0x3E}, 238 .len = 4 239 }, 240 .validAuthLenInBits = { 241 .len = 120 242 } 243 }; 244 245 struct snow3g_test_data snow3g_test_case_4 = { 246 .key = { 247 .data = { 248 0xD3, 0xC5, 0xD5, 0x92, 0x32, 0x7F, 0xB1, 0x1C, 249 0x40, 0x35, 0xC6, 0x68, 0x0A, 0xF8, 0xC6, 0xD1 250 }, 251 .len = 16 252 }, 253 .cipher_iv = { 254 .data = { 255 0x39, 0x8A, 0x59, 0xB4, 0x2C, 0x00, 0x00, 0x00, 256 0x39, 0x8A, 0x59, 0xB4, 0x2C, 0x00, 0x00, 0x00 257 }, 258 .len = 16 259 }, 260 .plaintext = { 261 .data = { 262 0x98, 0x1B, 0xA6, 0x82, 0x4C, 0x1B, 0xFB, 0x1A, 263 0xB4, 0x85, 0x47, 0x20, 0x29, 0xB7, 0x1D, 0x80, 264 0x8C, 0xE3, 0x3E, 0x2C, 0xC3, 0xC0, 0xB5, 0xFC, 265 0x1F, 0x3D, 0xE8, 0xA6, 0xDC, 0x66, 0xB1, 0xF0 266 }, 267 .len = 256 268 }, 269 .ciphertext = { 270 .data = { 271 0x98, 0x9B, 0x71, 0x9C, 0xDC, 0x33, 0xCE, 0xB7, 272 0xCF, 0x27, 0x6A, 0x52, 0x82, 0x7C, 0xEF, 0x94, 273 0xA5, 0x6C, 0x40, 0xC0, 0xAB, 0x9D, 0x81, 0xF7, 274 0xA2, 0xA9, 0xBA, 0xC6, 0x0E, 0x11, 0xC4, 0xB0 275 }, 276 .len = 256 277 }, 278 .cipher = { 279 .offset_bits = 0 280 }, 281 .validDataLenInBits = { 282 .len = 253 283 }, 284 .validCipherLenInBits = { 285 .len = 256 286 } 287 }; 288 289 struct snow3g_test_data snow3g_test_case_5 = { 290 .key = { 291 .data = { 292 0x60, 0x90, 0xEA, 0xE0, 0x4C, 0x83, 0x70, 0x6E, 293 0xEC, 0xBF, 0x65, 0x2B, 0xE8, 0xE3, 0x65, 0x66 294 }, 295 .len = 16 296 }, 297 .cipher_iv = { 298 .data = { 299 0x72, 0xA4, 0xF2, 0x0F, 0x48, 0x00, 0x00, 0x00, 300 0x72, 0xA4, 0xF2, 0x0F, 0x48, 0x00, 0x00, 0x00 301 }, 302 .len = 16}, 303 .plaintext = { 304 .data = { 305 0x40, 0x98, 0x1B, 0xA6, 0x82, 0x4C, 0x1B, 0xFB, 306 0x42, 0x86, 0xB2, 0x99, 0x78, 0x3D, 0xAF, 0x44, 307 0x2C, 0x09, 0x9F, 0x7A, 0xB0, 0xF5, 0x8D, 0x5C, 308 0x8E, 0x46, 0xB1, 0x04, 0xF0, 0x8F, 0x01, 0xB4, 309 0x1A, 0xB4, 0x85, 0x47, 0x20, 0x29, 0xB7, 0x1D, 310 0x36, 0xBD, 0x1A, 0x3D, 0x90, 0xDC, 0x3A, 0x41, 311 0xB4, 0x6D, 0x51, 0x67, 0x2A, 0xC4, 0xC9, 0x66, 312 0x3A, 0x2B, 0xE0, 0x63, 0xDA, 0x4B, 0xC8, 0xD2, 313 0x80, 0x8C, 0xE3, 0x3E, 0x2C, 0xCC, 0xBF, 0xC6, 314 0x34, 0xE1, 0xB2, 0x59, 0x06, 0x08, 0x76, 0xA0, 315 0xFB, 0xB5, 0xA4, 0x37, 0xEB, 0xCC, 0x8D, 0x31, 316 0xC1, 0x9E, 0x44, 0x54, 0x31, 0x87, 0x45, 0xE3, 317 0x98, 0x76, 0x45, 0x98, 0x7A, 0x98, 0x6F, 0x2C, 318 0xB0 319 }, 320 .len = 840 321 }, 322 .ciphertext = { 323 .data = { 324 0x58, 0x92, 0xBB, 0xA8, 0x8B, 0xBB, 0xCA, 0xAE, 325 0xAE, 0x76, 0x9A, 0xA0, 0x6B, 0x68, 0x3D, 0x3A, 326 0x17, 0xCC, 0x04, 0xA3, 0x69, 0x88, 0x16, 0x97, 327 0x43, 0x5E, 0x44, 0xFE, 0xD5, 0xFF, 0x9A, 0xF5, 328 0x7B, 0x9E, 0x89, 0x0D, 0x4D, 0x5C, 0x64, 0x70, 329 0x98, 0x85, 0xD4, 0x8A, 0xE4, 0x06, 0x90, 0xEC, 330 0x04, 0x3B, 0xAA, 0xE9, 0x70, 0x57, 0x96, 0xE4, 331 0xA9, 0xFF, 0x5A, 0x4B, 0x8D, 0x8B, 0x36, 0xD7, 332 0xF3, 0xFE, 0x57, 0xCC, 0x6C, 0xFD, 0x6C, 0xD0, 333 0x05, 0xCD, 0x38, 0x52, 0xA8, 0x5E, 0x94, 0xCE, 334 0x6B, 0xCD, 0x90, 0xD0, 0xD0, 0x78, 0x39, 0xCE, 335 0x09, 0x73, 0x35, 0x44, 0xCA, 0x8E, 0x35, 0x08, 336 0x43, 0x24, 0x85, 0x50, 0x92, 0x2A, 0xC1, 0x28, 337 0x18 338 }, 339 .len = 840 340 }, 341 .cipher = { 342 .offset_bits = 0 343 }, 344 .validDataLenInBits = { 345 .len = 837 346 }, 347 .validCipherLenInBits = { 348 .len = 840 349 }, 350 }; 351 352 struct snow3g_test_data snow3g_auth_cipher_test_case_1 = { 353 .key = { 354 .data = { 355 0xC7, 0x36, 0xC6, 0xAA, 0xB2, 0x2B, 0xFF, 0xF9, 356 0x1E, 0x26, 0x98, 0xD2, 0xE2, 0x2A, 0xD5, 0x7E 357 }, 358 .len = 16 359 }, 360 .cipher_iv = { 361 .data = { 362 0x72, 0xA4, 0xF2, 0x0F, 0x48, 0x00, 0x00, 0x00, 363 0x72, 0xA4, 0xF2, 0x0F, 0x48, 0x00, 0x00, 0x00 364 }, 365 .len = 16 366 }, 367 .auth_iv = { 368 .data = { 369 0x14, 0x79, 0x3E, 0x41, 0x03, 0x97, 0xE8, 0xFD, 370 0x94, 0x79, 0x3E, 0x41, 0x03, 0x97, 0x68, 0xFD 371 }, 372 .len = 16 373 }, 374 .plaintext = { 375 .data = { 376 0xD0, 0xA7, 0xD4, 0x63, 0xDF, 0x9F, 0xB2, 0xB2, 377 0x78, 0x83, 0x3F, 0xA0, 0x2E, 0x23, 0x5A, 0xA1, 378 0x72, 0xBD, 0x97, 0x0C, 0x14, 0x73, 0xE1, 0x29, 379 0x07, 0xFB, 0x64, 0x8B, 0x65, 0x99, 0xAA, 0xA0, 380 0xB2, 0x4A, 0x03, 0x86, 0x65, 0x42, 0x2B, 0x20, 381 0xA4, 0x99, 0x27, 0x6A, 0x50, 0x42, 0x70, 0x09 382 }, 383 .len = 384 384 }, 385 .ciphertext = { 386 .data = { 387 0x86, 0x4F, 0x4D, 0xE8, 0x86, 0xE6, 0x3E, 0x66, 388 0x52, 0x97, 0xC7, 0x62, 0xAE, 0x8E, 0xA2, 0xDB, 389 0x01, 0xD6, 0x33, 0xA9, 0xA4, 0xCE, 0x02, 0xD5, 390 0xC2, 0xC5, 0x5F, 0x90, 0xE0, 0x89, 0x48, 0xD4, 391 0x92, 0xF4, 0xE5, 0x9A, 0xDA, 0x13, 0x76, 0xFF, 392 0x6E, 0x76, 0x6B, 0x71, 0x62, 0x28, 0xB2, 0xEC 393 }, 394 .len = 384 395 }, 396 .cipher = { 397 .len_bits = 384, 398 .offset_bits = 0 399 }, 400 .auth = { 401 .len_bits = 384, 402 .offset_bits = 0 403 }, 404 .digest = { 405 .data = {0x38, 0xB5, 0x54, 0xC0 }, 406 .len = 4, 407 .offset_bytes = 0 408 }, 409 .validDataLenInBits = { 410 .len = 384 411 }, 412 .validCipherLenInBits = { 413 .len = 384 414 }, 415 .validAuthLenInBits = { 416 .len = 384 417 }, 418 }; 419 420 struct snow3g_test_data snow3g_test_case_7 = { 421 .key = { 422 .data = { 423 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 424 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 425 426 }, 427 .len = 16 428 }, 429 .cipher_iv = { 430 .data = { 431 0xE2, 0x8B, 0xCF, 0x7B, 0xC0, 0x00, 0x00, 0x00, 432 0xE2, 0x8B, 0xCF, 0x7B, 0xC0, 0x00, 0x00, 0x00 433 }, 434 .len = 16 435 }, 436 .auth_iv = { 437 .data = { 438 0x36, 0xAF, 0x61, 0x44, 0x98, 0x38, 0xF0, 0x3A, 439 0x36, 0xAF, 0x61, 0x44, 0x98, 0x38, 0xF0, 0x3A 440 }, 441 .len = 16 442 }, 443 .plaintext = { 444 .data = { 445 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 446 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 447 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 448 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 449 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 450 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 451 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 452 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 453 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 454 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 455 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 456 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 457 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 458 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 459 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 460 0x5A, 0x5A, 0x5A, 0x5A, 0xBB, 0x2B, 0x8B, 0x15, 461 }, 462 .len = 128 << 3 463 }, 464 .ciphertext = { 465 .data = { 466 0x5A, 0x5A, 0x8A, 0x35, 0xF7, 0x36, 0xDA, 0xD7, 467 0xC4, 0x2C, 0x10, 0xEA, 0x92, 0x9C, 0x00, 0xF0, 468 0xAE, 0x35, 0x5E, 0x8D, 0xB6, 0x88, 0x30, 0x66, 469 0x74, 0x8B, 0xA2, 0x82, 0x5C, 0xA7, 0xF3, 0x54, 470 0x75, 0x02, 0xA9, 0x90, 0x6B, 0x4B, 0x6A, 0x63, 471 0xFF, 0x4B, 0x08, 0xFE, 0x11, 0x3C, 0x5A, 0x53, 472 0xEE, 0x68, 0x14, 0x41, 0x17, 0xCD, 0x7B, 0x27, 473 0x88, 0xAF, 0x99, 0xE2, 0x9C, 0x86, 0x42, 0x12, 474 0x97, 0x93, 0xF0, 0xE6, 0xE2, 0xB2, 0x2D, 0xDA, 475 0x2C, 0x59, 0xB0, 0xA7, 0x09, 0xF6, 0x32, 0xC0, 476 0x35, 0x9A, 0xD3, 0xBA, 0xDC, 0x8F, 0x2E, 0x18, 477 0x97, 0x87, 0x44, 0xD6, 0x43, 0xFA, 0x86, 0x5A, 478 0xB0, 0xA2, 0x5A, 0xB8, 0x5F, 0x57, 0xE3, 0x2F, 479 0x73, 0x9C, 0x01, 0x3A, 0x02, 0x08, 0x8C, 0xEB, 480 0xA0, 0x5D, 0x74, 0x58, 0x5A, 0xA1, 0x58, 0x17, 481 0x5E, 0x86, 0x96, 0xE6, 0x9C, 0xEE, 0x8C, 0xA8 482 483 }, 484 .len = 128 << 3 485 }, 486 .cipher = { 487 .len_bits = 126 << 3, 488 .offset_bits = 2 << 3 489 }, 490 .auth = { 491 .len_bits = 124 << 3, 492 .offset_bits = 0 493 }, 494 .digest = { 495 .data = { 496 0x9C, 0xEE, 0x8C, 0xA8 497 }, 498 .len = 4, 499 .offset_bytes = 124 500 }, 501 .validDataLenInBits = { 502 .len = 128 << 3 503 }, 504 .validCipherLenInBits = { 505 .len = 126 << 3 506 }, 507 .validAuthLenInBits = { 508 .len = 124 << 3 509 }, 510 }; 511 512 struct snow3g_test_data snow3g_auth_cipher_test_case_2 = { 513 .key = { 514 .data = { 515 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 516 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 517 518 }, 519 .len = 16 520 }, 521 .cipher_iv = { 522 .data = { 523 0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00, 524 0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00 525 }, 526 .len = 16 527 }, 528 .auth_iv = { 529 .data = { 530 0x3E, 0xDC, 0x87, 0xE2, 0xA4, 0xF2, 0xD8, 0xE2, 531 0x3E, 0xDC, 0x87, 0xE2, 0xA4, 0xF2, 0xD8, 0xE2 532 }, 533 .len = 16 534 }, 535 .plaintext = { 536 .data = { 537 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 538 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 539 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 540 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 541 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 542 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 543 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 544 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 545 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 546 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 547 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 548 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 549 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 550 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 551 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 552 0x5A, 0x5A, 0x5A, 0x5A, 0x01, 0x02, 0x03, 0x04, 553 554 }, 555 .len = 128 << 3 556 }, 557 .ciphertext = { 558 .data = { 559 0x5A, 0x5A, 0xCF, 0xCF, 0x3D, 0x11, 0xBF, 0xD9, 560 0xC3, 0x7F, 0x7C, 0xA8, 0x1A, 0x9F, 0x9F, 0x34, 561 0xC5, 0x6E, 0x1B, 0x2C, 0xE0, 0x81, 0x4B, 0x66, 562 0x87, 0xCB, 0xD5, 0x61, 0x04, 0xED, 0xBC, 0x69, 563 0x79, 0x86, 0x73, 0x48, 0x69, 0x4A, 0xBA, 0x55, 564 0x44, 0x6C, 0xEF, 0xD9, 0x34, 0x61, 0x59, 0x67, 565 0x80, 0x4E, 0x03, 0x95, 0x0A, 0xA1, 0x6C, 0xBA, 566 0x74, 0xBD, 0xAF, 0x11, 0x4B, 0xE6, 0x98, 0x61, 567 0x4E, 0xD4, 0x3E, 0xE4, 0x99, 0x55, 0x5C, 0x3A, 568 0x8C, 0x3E, 0xC0, 0x01, 0x6E, 0x15, 0xE1, 0x0E, 569 0x71, 0x4C, 0x89, 0x43, 0x8A, 0x48, 0x69, 0x6D, 570 0x02, 0x10, 0xC6, 0x54, 0x37, 0x18, 0xAA, 0x10, 571 0x90, 0x80, 0x0B, 0x69, 0x08, 0xB4, 0xF9, 0x4D, 572 0xD1, 0x2E, 0x43, 0xD9, 0x92, 0xAF, 0x06, 0x4A, 573 0xAF, 0x26, 0x25, 0x77, 0x37, 0xD0, 0xFC, 0x3C, 574 0xA0, 0xCB, 0xAF, 0x06, 0x95, 0x26, 0x30, 0x38, 575 576 }, 577 .len = 128 << 3 578 }, 579 .cipher = { 580 .len_bits = 126 << 3, 581 .offset_bits = 2 << 3 582 }, 583 .auth = { 584 .len_bits = 124 << 3, 585 .offset_bits = 0 586 }, 587 .digest = { 588 .data = { 589 0x95, 0x26, 0x30, 0x38 590 }, 591 .len = 4, 592 .offset_bytes = 124 593 }, 594 .validDataLenInBits = { 595 .len = 128 << 3 596 }, 597 .validCipherLenInBits = { 598 .len = 126 << 3 599 }, 600 .validAuthLenInBits = { 601 .len = 124 << 3 602 }, 603 }; 604 605 struct snow3g_test_data snow3g_auth_cipher_test_case_3 = { 606 .key = { 607 .data = { 608 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 609 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 610 611 }, 612 .len = 16 613 }, 614 .cipher_iv = { 615 .data = { 616 0x39, 0x8A, 0x59, 0xB4, 0x2C, 0x00, 0x00, 0x00, 617 0x39, 0x8A, 0x59, 0xB4, 0x2C, 0x00, 0x00, 0x00 618 }, 619 .len = 16 620 }, 621 .auth_iv = { 622 .data = { 623 0x29, 0x6F, 0x39, 0x3C, 0x6B, 0x22, 0x77, 0x37, 624 0x29, 0x6F, 0x39, 0x3C, 0x6B, 0x22, 0x77, 0x37 625 }, 626 .len = 16 627 }, 628 .plaintext = { 629 .data = { 630 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 631 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 632 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 633 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 634 }, 635 .len = 32 << 3 636 }, 637 .ciphertext = { 638 .data = { 639 0x5A, 0x5A, 0x93, 0xB0, 0x3F, 0xA4, 0xEB, 0xD4, 640 0x51, 0x12, 0x3B, 0x95, 0x93, 0x12, 0xBF, 0xBE, 641 0xF2, 0xFE, 0xA5, 0xAE, 0xE7, 0xF4, 0x80, 0x3E, 642 0xB2, 0xD1, 0xFF, 0x5F, 0xD9, 0x32, 0x72, 0xFE, 643 }, 644 .len = 32 << 3 645 }, 646 .cipher = { 647 .len_bits = 30 << 3, 648 .offset_bits = 2 << 3 649 }, 650 .auth = { 651 .len_bits = 28 << 3, 652 .offset_bits = 0 653 }, 654 .digest = { 655 .data = { 656 0xD9, 0x32, 0x72, 0xFE 657 }, 658 .len = 4, 659 .offset_bytes = 28 660 }, 661 .validDataLenInBits = { 662 .len = 32 << 3 663 }, 664 .validCipherLenInBits = { 665 .len = 30 << 3 666 }, 667 .validAuthLenInBits = { 668 .len = 28 << 3 669 }, 670 }; 671 672 struct snow3g_test_data snow3g_auth_cipher_partial_digest_encryption = { 673 .key = { 674 .data = { 675 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 676 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 677 678 }, 679 .len = 16 680 }, 681 .cipher_iv = { 682 .data = { 683 0x72, 0xA4, 0xF2, 0x0F, 0x48, 0x00, 0x00, 0x00, 684 0x72, 0xA4, 0xF2, 0x0F, 0x48, 0x00, 0x00, 0x00 685 }, 686 .len = 16 687 }, 688 .auth_iv = { 689 .data = { 690 0x14, 0x79, 0x3E, 0x41, 0x03, 0x97, 0xE8, 0xFD, 691 0x14, 0x79, 0x3E, 0x41, 0x03, 0x97, 0xE8, 0xFD 692 }, 693 .len = 16 694 }, 695 .plaintext = { 696 .data = { 697 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 698 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 699 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 700 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A 701 }, 702 .len = 32 << 3 703 }, 704 .ciphertext = { 705 .data = { 706 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 707 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0xA2, 0xB7, 708 0xDF, 0xA7, 0x98, 0xA1, 0xD8, 0xD4, 0x9B, 0x6E, 709 0x2C, 0x7A, 0x66, 0x15, 0xCC, 0x4C, 0xE5, 0xE0 710 }, 711 .len = 32 << 3 712 }, 713 .cipher = { 714 .len_bits = 16 << 3, 715 .offset_bits = 14 << 3 716 }, 717 .auth = { 718 .len_bits = 28 << 3, 719 .offset_bits = 0 720 }, 721 .digest = { 722 .data = { 723 0xCC, 0x4C, 0xE5, 0xE0 724 }, 725 .len = 4, 726 .offset_bytes = 28 727 }, 728 .validDataLenInBits = { 729 .len = 32 << 3 730 }, 731 .validCipherLenInBits = { 732 .len = 16 << 3 733 }, 734 .validAuthLenInBits = { 735 .len = 28 << 3 736 }, 737 }; 738 739 struct snow3g_test_data snow3g_auth_cipher_total_digest_encryption_1 = { 740 .key = { 741 .data = { 742 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 743 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 744 745 }, 746 .len = 16 747 }, 748 .cipher_iv = { 749 .data = { 750 0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00, 751 0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00 752 }, 753 .len = 16 754 }, 755 .auth_iv = { 756 .data = { 757 0xB6, 0xAF, 0x61, 0x44, 0x98, 0x38, 0x70, 0x3A, 758 0x36, 0xAF, 0x61, 0x44, 0x98, 0x38, 0xF0, 0x3A 759 }, 760 .len = 16 761 }, 762 .plaintext = { 763 .data = { 764 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 765 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 766 0x06, 0xC3, 0x52, 0x5B, 0x98, 0x07, 0xE4, 0x67, 767 0xE2, 0xD8, 0xFF, 0x58, 0x05, 0xF5, 0x13, 0x22, 768 }, 769 .len = 32 << 3 770 }, 771 .ciphertext = { 772 .data = { 773 0x5A, 0x5A, 0xCF, 0xCF, 0x3D, 0x11, 0xBF, 0xD9, 774 0xC3, 0x7F, 0x7C, 0xA8, 0x1A, 0x9F, 0x9F, 0x34, 775 0x99, 0xF7, 0x13, 0x2D, 0x22, 0xDC, 0xF5, 0x5B, 776 0x3F, 0x49, 0x70, 0x63, 0x26, 0x6C, 0x4E, 0x8E 777 }, 778 .len = 32 << 3 779 }, 780 .cipher = { 781 .len_bits = 30 << 3, 782 .offset_bits = 2 << 3 783 }, 784 .auth = { 785 .len_bits = 26 << 3, 786 .offset_bits = 2 << 3 787 }, 788 .digest = { 789 .data = { 790 0x26, 0x6C, 0x4E, 0x8E 791 }, 792 .len = 4, 793 .offset_bytes = 28 794 }, 795 .validDataLenInBits = { 796 .len = 32 << 3 797 }, 798 .validCipherLenInBits = { 799 .len = 30 << 3 800 }, 801 .validAuthLenInBits = { 802 .len = 26 << 3 803 }, 804 }; 805 806 #endif /* TEST_CRYPTODEV_SNOW3G_TEST_VECTORS_H_ */ 807