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 uint8_t data[64] __rte_aligned(16); 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 0x14, 0x79, 0x3E, 0x41, 0x03, 0x97, 0xE8, 0xFD, 363 0x94, 0x79, 0x3E, 0x41, 0x03, 0x97, 0x68, 0xFD 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 0x95, 0x2E, 0x5A, 0xE1, 0x50, 0xB8, 0x59, 0x2A, 388 0x9B, 0xA0, 0x38, 0xA9, 0x8E, 0x2F, 0xED, 0xAB, 389 0xFD, 0xC8, 0x3B, 0x47, 0x46, 0x0B, 0x50, 0x16, 390 0xEC, 0x88, 0x45, 0xB6, 0x05, 0xC7, 0x54, 0xF8, 391 0xBD, 0x91, 0xAA, 0xB6, 0xA4, 0xDC, 0x64, 0xB4, 392 0xCB, 0xEB, 0x97, 0x06, 0x4C, 0xF7, 0x02, 0x3D 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 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 432 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 433 }, 434 .len = 16 435 }, 436 .auth_iv = { 437 .data = { 438 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 439 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 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, 0xF1, 0x9E, 0x2B, 0x6F, 461 }, 462 .len = 128 << 3 463 }, 464 .ciphertext = { 465 .data = { 466 0x5A, 0x5A, 0xE4, 0xAD, 0x29, 0xA2, 0x6A, 0xA6, 467 0x20, 0x1D, 0xCD, 0x08, 0x50, 0xD6, 0xE6, 0x47, 468 0xBC, 0x88, 0x08, 0x01, 0x17, 0xFA, 0x47, 0x5B, 469 0x90, 0x40, 0xBA, 0x0C, 0xB5, 0x58, 0xF3, 0x0C, 470 0xA0, 0xD4, 0x98, 0x83, 0x1B, 0xCE, 0x54, 0xE3, 471 0x29, 0x00, 0x3C, 0xA4, 0xAD, 0x74, 0xEE, 0x05, 472 0xA3, 0x6C, 0xD4, 0xAC, 0xC6, 0x30, 0x33, 0xC9, 473 0x37, 0x57, 0x41, 0x9B, 0xD4, 0x73, 0xB9, 0x77, 474 0x70, 0x8B, 0x63, 0xDD, 0x22, 0xB8, 0xE1, 0x85, 475 0xB2, 0x92, 0x7C, 0x37, 0xD3, 0x2E, 0xD9, 0xF4, 476 0x4A, 0x69, 0x25, 0x30, 0xE3, 0x5B, 0x8B, 0xF6, 477 0x0F, 0xDE, 0x0B, 0x92, 0xD5, 0x25, 0x52, 0x6D, 478 0x26, 0xEB, 0x2F, 0x8A, 0x3B, 0x8B, 0x38, 0xE2, 479 0x48, 0xD3, 0x4A, 0x98, 0xF7, 0x3A, 0xC2, 0x46, 480 0x69, 0x8D, 0x73, 0x3E, 0x57, 0x88, 0x2C, 0x80, 481 0xF0, 0xF2, 0x75, 0xB8, 0x7D, 0x27, 0xC6, 0xDA, 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 0x7D, 0x27, 0xC6, 0xDA 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 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 524 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 525 }, 526 .len = 16 527 }, 528 .auth_iv = { 529 .data = { 530 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 531 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 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, 0xE4, 0xAD, 0x29, 0xA2, 0x6A, 0xA6, 560 0x20, 0x1D, 0xCD, 0x08, 0x50, 0xD6, 0xE6, 0x47, 561 0xBC, 0x88, 0x08, 0x01, 0x17, 0xFA, 0x47, 0x5B, 562 0x90, 0x40, 0xBA, 0x0C, 0xB5, 0x58, 0xF3, 0x0C, 563 0xA0, 0xD4, 0x98, 0x83, 0x1B, 0xCE, 0x54, 0xE3, 564 0x29, 0x00, 0x3C, 0xA4, 0xAD, 0x74, 0xEE, 0x05, 565 0xA3, 0x6C, 0xD4, 0xAC, 0xC6, 0x30, 0x33, 0xC9, 566 0x37, 0x57, 0x41, 0x9B, 0xD4, 0x73, 0xB9, 0x77, 567 0x70, 0x8B, 0x63, 0xDD, 0x22, 0xB8, 0xE1, 0x85, 568 0xB2, 0x92, 0x7C, 0x37, 0xD3, 0x2E, 0xD9, 0xF4, 569 0x4A, 0x69, 0x25, 0x30, 0xE3, 0x5B, 0x8B, 0xF6, 570 0x0F, 0xDE, 0x0B, 0x92, 0xD5, 0x25, 0x52, 0x6D, 571 0x26, 0xEB, 0x2F, 0x8A, 0x3B, 0x8B, 0x38, 0xE2, 572 0x48, 0xD3, 0x4A, 0x98, 0xF7, 0x3A, 0xC2, 0x46, 573 0x69, 0x8D, 0x73, 0x3E, 0x57, 0x88, 0x2C, 0x80, 574 0xF0, 0xF2, 0x75, 0xB8, 0x7D, 0x27, 0xC6, 0xDA, 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 0x7D, 0x27, 0xC6, 0xDA 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 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 617 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 618 }, 619 .len = 16 620 }, 621 .auth_iv = { 622 .data = { 623 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 624 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 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, 0xE4, 0xAD, 0x29, 0xA2, 0x6A, 0xA6, 640 0x20, 0x1D, 0xCD, 0x08, 0x50, 0xD6, 0xE6, 0x47, 641 0xBC, 0x88, 0x08, 0x01, 0x17, 0xFA, 0x47, 0x5B, 642 0x90, 0x40, 0xBA, 0x0C, 0xBA, 0x6D, 0x6A, 0x5E, 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 0xBA, 0x6D, 0x6A, 0x5E 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 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 684 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 685 }, 686 .len = 16 687 }, 688 .auth_iv = { 689 .data = { 690 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 691 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 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, 0xE4, 0xAD, 708 0x29, 0xA2, 0x6A, 0xA6, 0x20, 0x1D, 0xCD, 0x08, 709 0x50, 0xD6, 0xE6, 0x47, 0xB3, 0xBD, 0xC3, 0x08 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 0xB3, 0xBD, 0xC3, 0x08 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 #endif /* TEST_CRYPTODEV_SNOW3G_TEST_VECTORS_H_ */ 740