1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2020 Intel Corporation 3 */ 4 5 #ifndef TEST_CRYPTODEV_SECURITY_DOCSIS_TEST_VECTORS_H_ 6 #define TEST_CRYPTODEV_SECURITY_DOCSIS_TEST_VECTORS_H_ 7 8 /* 9 * DOCSIS test data and cases 10 * - encrypt direction: CRC-Crypto 11 * - decrypt direction: Crypto-CRC 12 */ 13 14 struct docsis_test_data { 15 const char test_descr_uplink[128]; 16 const char test_descr_downlink[128]; 17 18 struct { 19 uint8_t data[32]; 20 unsigned int len; 21 } key; 22 23 struct { 24 alignas(16) uint8_t data[16]; 25 unsigned int len; 26 } iv; 27 28 struct { 29 uint8_t data[1024]; 30 unsigned int len; 31 unsigned int cipher_offset; 32 unsigned int crc_offset; 33 bool no_cipher; 34 bool no_crc; 35 } plaintext; 36 37 struct { 38 uint8_t data[1024]; 39 unsigned int len; 40 unsigned int cipher_offset; 41 unsigned int crc_offset; 42 bool no_cipher; 43 bool no_crc; 44 } ciphertext; 45 }; 46 47 const struct docsis_test_data docsis_test_case_1 = { 48 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-128 and CRC Verify (24-byte " 49 "frame, Small offset and runt block decryption)"}, 50 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-128 " 51 "(24-byte frame, Small offset and runt block encryption)"}, 52 .key = { 53 .data = { 54 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 55 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 56 }, 57 .len = 16 58 }, 59 .iv = { 60 .data = { 61 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 62 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 63 }, 64 .len = 16 65 }, 66 .plaintext = { 67 .data = { 68 /* DOCSIS header */ 69 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 70 /* Ethernet frame */ 71 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 72 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 73 /* CRC */ 74 0xFF, 0xFF, 0xFF, 0xFF 75 }, 76 .len = 24, 77 .cipher_offset = 18, 78 .crc_offset = 6, 79 .no_cipher = false, 80 .no_crc = false 81 }, 82 .ciphertext = { 83 .data = { 84 /* DOCSIS header */ 85 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 86 /* Ethernet frame */ 87 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 88 0x04, 0x03, 0x02, 0x01, 0x7A, 0xF0, 89 /* CRC */ 90 0x61, 0xF8, 0x63, 0x42 91 }, 92 .len = 24, 93 .cipher_offset = 18, 94 .crc_offset = 6, 95 .no_cipher = false, 96 .no_crc = false 97 } 98 }; 99 100 const struct docsis_test_data docsis_test_case_2 = { 101 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-128 and CRC Verify (25-byte " 102 "frame, Small offset and runt block decryption)"}, 103 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-128 " 104 "(25-byte frame, Small offset and runt block encryption)"}, 105 .key = { 106 .data = { 107 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 108 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 109 }, 110 .len = 16 111 }, 112 .iv = { 113 .data = { 114 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 115 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 116 }, 117 .len = 16 118 }, 119 .plaintext = { 120 .data = { 121 /* DOCSIS header */ 122 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 123 /* Ethernet frame */ 124 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 125 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 126 /* CRC */ 127 0xFF, 0xFF, 0xFF, 0xFF 128 }, 129 .len = 25, 130 .cipher_offset = 18, 131 .crc_offset = 6, 132 .no_cipher = false, 133 .no_crc = false 134 }, 135 .ciphertext = { 136 .data = { 137 /* DOCSIS header */ 138 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 139 /* Ethernet frame */ 140 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 141 0x04, 0x03, 0x02, 0x01, 0x7A, 0xF0, 0xDF, 142 /* CRC */ 143 0xFE, 0x12, 0x99, 0xE5 144 }, 145 .len = 25, 146 .cipher_offset = 18, 147 .crc_offset = 6, 148 .no_cipher = false, 149 .no_crc = false 150 } 151 }; 152 153 const struct docsis_test_data docsis_test_case_3 = { 154 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-128 and CRC Verify (34-byte " 155 "frame, Small offset and full block decryption)"}, 156 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-128 " 157 "(34-byte frame, Small offset and full block encryption)"}, 158 .key = { 159 .data = { 160 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 161 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 162 }, 163 .len = 16 164 }, 165 .iv = { 166 .data = { 167 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 168 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 169 }, 170 .len = 16 171 }, 172 .plaintext = { 173 .data = { 174 /* DOCSIS header */ 175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 176 /* Ethernet frame */ 177 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 178 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 179 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 180 /* CRC */ 181 0xFF, 0xFF, 0xFF, 0xFF 182 }, 183 .len = 34, 184 .cipher_offset = 18, 185 .crc_offset = 6, 186 .no_cipher = false, 187 .no_crc = false 188 }, 189 .ciphertext = { 190 .data = { 191 /* DOCSIS header */ 192 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 193 /* Ethernet frame */ 194 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 195 0x04, 0x03, 0x02, 0x01, 0xD6, 0xE2, 0x70, 0x5C, 196 0xE6, 0x4D, 0xCC, 0x8C, 0x47, 0xB7, 0x09, 0xD6, 197 /* CRC */ 198 0x54, 0x85, 0xF8, 0x32 199 }, 200 .len = 34, 201 .cipher_offset = 18, 202 .crc_offset = 6, 203 .no_cipher = false, 204 .no_crc = false 205 } 206 }; 207 208 const struct docsis_test_data docsis_test_case_4 = { 209 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-128 and CRC Verify (35-byte " 210 "frame, Small offset and uneven decryption)"}, 211 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-128 " 212 "(35-byte frame, Small offset and uneven encryption)"}, 213 .key = { 214 .data = { 215 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 216 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 217 }, 218 .len = 16 219 }, 220 .iv = { 221 .data = { 222 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 223 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 224 }, 225 .len = 16 226 }, 227 .plaintext = { 228 .data = { 229 /* DOCSIS header */ 230 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 231 /* Ethernet frame */ 232 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 233 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 234 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 235 0xAA, 236 /* CRC */ 237 0xFF, 0xFF, 0xFF, 0xFF 238 }, 239 .len = 35, 240 .cipher_offset = 18, 241 .crc_offset = 6, 242 .no_cipher = false, 243 .no_crc = false 244 }, 245 .ciphertext = { 246 .data = { 247 /* DOCSIS header */ 248 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 249 /* Ethernet frame */ 250 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 251 0x04, 0x03, 0x02, 0x01, 0x92, 0x6A, 0xC2, 0xDC, 252 0xEE, 0x3B, 0x31, 0xEC, 0x03, 0xDE, 0x95, 0x33, 253 0x5E, 254 /* CRC */ 255 0xFE, 0x47, 0x3E, 0x22 256 }, 257 .len = 35, 258 .cipher_offset = 18, 259 .crc_offset = 6, 260 .no_cipher = false, 261 .no_crc = false 262 } 263 }; 264 265 const struct docsis_test_data docsis_test_case_5 = { 266 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-128 and CRC Verify (82-byte " 267 "frame, Small offset and full block decryption)"}, 268 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-128 " 269 "(82-byte frame, Small offset and full block encryption)"}, 270 .key = { 271 .data = { 272 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 273 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 274 }, 275 .len = 16 276 }, 277 .iv = { 278 .data = { 279 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 280 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 281 }, 282 .len = 16 283 }, 284 .plaintext = { 285 .data = { 286 /* DOCSIS header */ 287 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 288 /* Ethernet frame */ 289 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 290 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 291 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 292 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 293 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 294 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 295 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 296 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 297 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 298 /* CRC */ 299 0xFF, 0xFF, 0xFF, 0xFF 300 }, 301 .len = 82, 302 .cipher_offset = 18, 303 .crc_offset = 6, 304 .no_cipher = false, 305 .no_crc = false 306 }, 307 .ciphertext = { 308 .data = { 309 /* DOCSIS header */ 310 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 311 /* Ethernet frame */ 312 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 313 0x04, 0x03, 0x02, 0x01, 0x77, 0x74, 0x56, 0x05, 314 0xD1, 0x14, 0xA2, 0x8D, 0x2C, 0x9A, 0x11, 0xFC, 315 0x7D, 0xB0, 0xE7, 0x18, 0xCE, 0x75, 0x7C, 0x89, 316 0x14, 0x56, 0xE2, 0xF2, 0xB7, 0x47, 0x08, 0x27, 317 0xF7, 0x08, 0x7A, 0x13, 0x90, 0x81, 0x75, 0xB0, 318 0xC7, 0x91, 0x04, 0x83, 0xAD, 0x11, 0x46, 0x46, 319 0xF8, 0x54, 0x87, 0xA0, 0x42, 0xF3, 0x71, 0xA9, 320 0x8A, 0xCD, 0x59, 0x77, 0x67, 0x11, 0x1A, 0x87, 321 /* CRC */ 322 0xAB, 0xED, 0x2C, 0x26 323 }, 324 .len = 82, 325 .cipher_offset = 18, 326 .crc_offset = 6, 327 .no_cipher = false, 328 .no_crc = false 329 } 330 }; 331 332 const struct docsis_test_data docsis_test_case_6 = { 333 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-128 and CRC Verify (83-byte " 334 "frame, Small offset and uneven decryption)"}, 335 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-128 " 336 "(83-byte frame, Small offset and uneven encryption)"}, 337 .key = { 338 .data = { 339 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 340 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 341 }, 342 .len = 16 343 }, 344 .iv = { 345 .data = { 346 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 347 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 348 }, 349 .len = 16 350 }, 351 .plaintext = { 352 .data = { 353 /* DOCSIS header */ 354 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 355 /* Ethernet frame */ 356 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 357 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 358 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 359 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 360 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 361 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 362 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 363 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 364 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 365 0xAA, 366 /* CRC */ 367 0xFF, 0xFF, 0xFF, 0xFF 368 }, 369 .len = 83, 370 .cipher_offset = 18, 371 .crc_offset = 6, 372 .no_cipher = false, 373 .no_crc = false 374 }, 375 .ciphertext = { 376 .data = { 377 /* DOCSIS header */ 378 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 379 /* Ethernet frame */ 380 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 381 0x04, 0x03, 0x02, 0x01, 0x77, 0x74, 0x56, 0x05, 382 0xD1, 0x14, 0xA2, 0x8D, 0x2C, 0x9A, 0x11, 0xFC, 383 0x7D, 0xB0, 0xE7, 0x18, 0xCE, 0x75, 0x7C, 0x89, 384 0x14, 0x56, 0xE2, 0xF2, 0xB7, 0x47, 0x08, 0x27, 385 0xF7, 0x08, 0x7A, 0x13, 0x90, 0x81, 0x75, 0xB0, 386 0xC7, 0x91, 0x04, 0x83, 0xAD, 0x11, 0x46, 0x46, 387 0xF8, 0x54, 0x87, 0xA0, 0xA4, 0x0C, 0xC2, 0xF0, 388 0x81, 0x49, 0xA8, 0xA6, 0x6C, 0x48, 0xEB, 0x1F, 389 0x4B, 390 /* CRC */ 391 0x2F, 0xD4, 0x48, 0x18 392 }, 393 .len = 83, 394 .cipher_offset = 18, 395 .crc_offset = 6, 396 .no_cipher = false, 397 .no_crc = false 398 } 399 }; 400 401 const struct docsis_test_data docsis_test_case_7 = { 402 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-128 and CRC Verify (83-byte " 403 "frame, Big offset and uneven decryption)"}, 404 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-128 " 405 "(83-byte frame, Big offset and uneven encryption)"}, 406 .key = { 407 .data = { 408 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 409 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 410 }, 411 .len = 16 412 }, 413 .iv = { 414 .data = { 415 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 416 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 417 }, 418 .len = 16 419 }, 420 .plaintext = { 421 .data = { 422 /* DOCSIS header */ 423 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 424 /* Ethernet frame */ 425 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 426 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 427 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 428 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 429 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 430 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 431 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 432 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 433 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 434 0xAA, 435 /* CRC */ 436 0xFF, 0xFF, 0xFF, 0xFF 437 }, 438 .len = 83, 439 .cipher_offset = 40, 440 .crc_offset = 6, 441 .no_cipher = false, 442 .no_crc = false 443 }, 444 .ciphertext = { 445 .data = { 446 /* DOCSIS header */ 447 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 448 /* Ethernet frame */ 449 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 450 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 451 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 452 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 453 0xAA, 0xAA, 0x3B, 0x9F, 0x72, 0x4C, 0xB5, 0x72, 454 0x3E, 0x56, 0x54, 0x49, 0x13, 0x53, 0xC4, 0xAA, 455 0xCD, 0xEA, 0x6A, 0x88, 0x99, 0x07, 0x86, 0xF4, 456 0xCF, 0x03, 0x4E, 0xDF, 0x65, 0x61, 0x47, 0x5B, 457 0x2F, 0x81, 0x09, 0x12, 0x9A, 0xC2, 0x24, 0x8C, 458 0x09, 459 /* CRC */ 460 0x11, 0xB4, 0x06, 0x33 461 }, 462 .len = 83, 463 .cipher_offset = 40, 464 .crc_offset = 6, 465 .no_cipher = false, 466 .no_crc = false 467 } 468 }; 469 470 const struct docsis_test_data docsis_test_case_8 = { 471 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-128 and CRC Verify (24-byte " 472 "frame, No CRC, Small offset and runt block decryption)"}, 473 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-128 " 474 "(24-byte frame, No CRC, Small offset and runt block encryption)"}, 475 .key = { 476 .data = { 477 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 478 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 479 }, 480 .len = 16 481 }, 482 .iv = { 483 .data = { 484 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 485 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 486 }, 487 .len = 16 488 }, 489 .plaintext = { 490 .data = { 491 /* DOCSIS header */ 492 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 493 /* Ethernet frame */ 494 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 495 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 496 /* CRC */ 497 0xFF, 0xFF, 0xFF, 0xFF 498 }, 499 .len = 24, 500 .cipher_offset = 18, 501 .crc_offset = 6, 502 .no_cipher = false, 503 .no_crc = true 504 }, 505 .ciphertext = { 506 .data = { 507 /* DOCSIS header */ 508 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 509 /* Ethernet frame */ 510 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 511 0x04, 0x03, 0x02, 0x01, 0x7A, 0xF0, 512 /* CRC */ 513 0x8A, 0x0F, 0x74, 0xE8 514 }, 515 .len = 24, 516 .cipher_offset = 18, 517 .crc_offset = 6, 518 .no_cipher = false, 519 .no_crc = true 520 } 521 }; 522 523 const struct docsis_test_data docsis_test_case_9 = { 524 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-128 and CRC Verify (83-byte " 525 "frame, No CRC, Big offset and uneven decryption)"}, 526 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-128 " 527 "(83-byte frame, No CRC, Big offset and uneven encryption)"}, 528 .key = { 529 .data = { 530 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 531 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 532 }, 533 .len = 16 534 }, 535 .iv = { 536 .data = { 537 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 538 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 539 }, 540 .len = 16 541 }, 542 .plaintext = { 543 .data = { 544 /* DOCSIS header */ 545 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 546 /* Ethernet frame */ 547 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 548 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 549 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 550 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 551 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 552 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 553 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 554 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 555 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 556 0xAA, 557 /* CRC */ 558 0xFF, 0xFF, 0xFF, 0xFF 559 }, 560 .len = 83, 561 .cipher_offset = 40, 562 .crc_offset = 6, 563 .no_cipher = false, 564 .no_crc = true 565 }, 566 .ciphertext = { 567 .data = { 568 /* DOCSIS header */ 569 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 570 /* Ethernet frame */ 571 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 572 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 573 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 574 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 575 0xAA, 0xAA, 0x3B, 0x9F, 0x72, 0x4C, 0xB5, 0x72, 576 0x3E, 0x56, 0x54, 0x49, 0x13, 0x53, 0xC4, 0xAA, 577 0xCD, 0xEA, 0x6A, 0x88, 0x99, 0x07, 0x86, 0xF4, 578 0xCF, 0x03, 0x4E, 0xDF, 0x65, 0x61, 0x47, 0x5B, 579 0x2F, 0x81, 0x09, 0x12, 0x9A, 0xC2, 0x24, 0x8C, 580 0x09, 581 /* CRC */ 582 0x5D, 0x2B, 0x12, 0xF4 583 }, 584 .len = 83, 585 .cipher_offset = 40, 586 .crc_offset = 6, 587 .no_cipher = false, 588 .no_crc = true 589 } 590 }; 591 592 const struct docsis_test_data docsis_test_case_10 = { 593 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-128 and CRC Verify (24-byte " 594 "frame, No decryption)"}, 595 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-128 " 596 "(24-byte frame, No encryption)"}, 597 .key = { 598 .data = { 599 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 600 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 601 }, 602 .len = 16 603 }, 604 .iv = { 605 .data = { 606 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 607 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 608 }, 609 .len = 16 610 }, 611 .plaintext = { 612 .data = { 613 /* DOCSIS header */ 614 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 615 /* Ethernet frame */ 616 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 617 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 618 /* CRC */ 619 0xFF, 0xFF, 0xFF, 0xFF 620 }, 621 .len = 24, 622 .cipher_offset = 18, 623 .crc_offset = 6, 624 .no_cipher = true, 625 .no_crc = false 626 }, 627 .ciphertext = { 628 .data = { 629 /* DOCSIS header */ 630 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 631 /* Ethernet frame */ 632 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 633 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 634 /* CRC */ 635 0x14, 0x08, 0xE8, 0x55 636 }, 637 .len = 24, 638 .cipher_offset = 18, 639 .crc_offset = 6, 640 .no_cipher = true, 641 .no_crc = false 642 } 643 }; 644 645 const struct docsis_test_data docsis_test_case_11 = { 646 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-128 and CRC Verify (83-byte " 647 "frame, No decryption)"}, 648 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-128 " 649 "(83-byte frame, No encryption)"}, 650 .key = { 651 .data = { 652 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 653 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 654 }, 655 .len = 16 656 }, 657 .iv = { 658 .data = { 659 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 660 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 661 }, 662 .len = 16 663 }, 664 .plaintext = { 665 .data = { 666 /* DOCSIS header */ 667 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 668 /* Ethernet frame */ 669 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 670 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 671 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 672 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 673 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 674 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 675 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 676 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 677 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 678 0xAA, 679 /* CRC */ 680 0xFF, 0xFF, 0xFF, 0xFF 681 }, 682 .len = 83, 683 .cipher_offset = 40, 684 .crc_offset = 6, 685 .no_cipher = true, 686 .no_crc = false 687 }, 688 .ciphertext = { 689 .data = { 690 /* DOCSIS header */ 691 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 692 /* Ethernet frame */ 693 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 694 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 695 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 696 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 697 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 698 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 699 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 700 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 701 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 702 0xAA, 703 /* CRC */ 704 0xB3, 0x60, 0xEB, 0x38 705 }, 706 .len = 83, 707 .cipher_offset = 40, 708 .crc_offset = 6, 709 .no_cipher = true, 710 .no_crc = false 711 } 712 }; 713 714 const struct docsis_test_data docsis_test_case_12 = { 715 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-128 and CRC Verify (24-byte " 716 "frame, No CRC, No decryption)"}, 717 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-128 " 718 "(24-byte frame, No CRC, No encryption)"}, 719 .key = { 720 .data = { 721 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 722 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 723 }, 724 .len = 16 725 }, 726 .iv = { 727 .data = { 728 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 729 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 730 }, 731 .len = 16 732 }, 733 .plaintext = { 734 .data = { 735 /* DOCSIS header */ 736 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 737 /* Ethernet frame */ 738 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 739 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 740 /* CRC */ 741 0xFF, 0xFF, 0xFF, 0xFF 742 }, 743 .len = 24, 744 .cipher_offset = 18, 745 .crc_offset = 6, 746 .no_cipher = true, 747 .no_crc = true 748 }, 749 .ciphertext = { 750 .data = { 751 /* DOCSIS header */ 752 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 753 /* Ethernet frame */ 754 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 755 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 756 /* CRC */ 757 0xFF, 0xFF, 0xFF, 0xFF 758 }, 759 .len = 24, 760 .cipher_offset = 18, 761 .crc_offset = 6, 762 .no_cipher = true, 763 .no_crc = true 764 } 765 }; 766 767 const struct docsis_test_data docsis_test_case_13 = { 768 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-128 and CRC Verify (83-byte " 769 "frame, No CRC, No decryption)"}, 770 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-128 " 771 "(83-byte frame, No CRC, No encryption)"}, 772 .key = { 773 .data = { 774 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 775 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 776 }, 777 .len = 16 778 }, 779 .iv = { 780 .data = { 781 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 782 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 783 }, 784 .len = 16 785 }, 786 .plaintext = { 787 .data = { 788 /* DOCSIS header */ 789 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 790 /* Ethernet frame */ 791 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 792 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 793 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 794 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 795 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 796 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 797 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 798 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 799 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 800 0xAA, 801 /* CRC */ 802 0xFF, 0xFF, 0xFF, 0xFF 803 }, 804 .len = 83, 805 .cipher_offset = 40, 806 .crc_offset = 6, 807 .no_cipher = true, 808 .no_crc = true 809 }, 810 .ciphertext = { 811 .data = { 812 /* DOCSIS header */ 813 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 814 /* Ethernet frame */ 815 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 816 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 817 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 818 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 819 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 820 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 821 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 822 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 823 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 824 0xAA, 825 /* CRC */ 826 0xFF, 0xFF, 0xFF, 0xFF 827 }, 828 .len = 83, 829 .cipher_offset = 40, 830 .crc_offset = 6, 831 .no_cipher = true, 832 .no_crc = true 833 } 834 }; 835 836 const struct docsis_test_data docsis_test_case_14 = { 837 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-256 and CRC Verify (24-byte " 838 "frame, Small offset and runt block decryption)"}, 839 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-256 " 840 "(24-byte frame, Small offset and runt block encryption)"}, 841 .key = { 842 .data = { 843 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 844 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 845 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 846 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 847 }, 848 .len = 32 849 }, 850 .iv = { 851 .data = { 852 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 853 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 854 }, 855 .len = 16 856 }, 857 .plaintext = { 858 .data = { 859 /* DOCSIS header */ 860 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 861 /* Ethernet frame */ 862 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 863 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 864 /* CRC */ 865 0xFF, 0xFF, 0xFF, 0xFF 866 }, 867 .len = 24, 868 .cipher_offset = 18, 869 .crc_offset = 6, 870 .no_cipher = false, 871 .no_crc = false 872 }, 873 .ciphertext = { 874 .data = { 875 /* DOCSIS header */ 876 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 877 /* Ethernet frame */ 878 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 879 0x04, 0x03, 0x02, 0x01, 0x6A, 0x86, 880 /* CRC */ 881 0x9B, 0xB3, 0x1A, 0x26 882 }, 883 .len = 24, 884 .cipher_offset = 18, 885 .crc_offset = 6, 886 .no_cipher = false, 887 .no_crc = false 888 } 889 }; 890 891 const struct docsis_test_data docsis_test_case_15 = { 892 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-256 and CRC Verify (25-byte " 893 "frame, Small offset and runt block decryption)"}, 894 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-256 " 895 "(25-byte frame, Small offset and runt block encryption)"}, 896 .key = { 897 .data = { 898 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 899 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 900 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 901 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 902 }, 903 .len = 32 904 }, 905 .iv = { 906 .data = { 907 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 908 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 909 }, 910 .len = 16 911 }, 912 .plaintext = { 913 .data = { 914 /* DOCSIS header */ 915 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 916 /* Ethernet frame */ 917 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 918 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 919 /* CRC */ 920 0xFF, 0xFF, 0xFF, 0xFF 921 }, 922 .len = 25, 923 .cipher_offset = 18, 924 .crc_offset = 6, 925 .no_cipher = false, 926 .no_crc = false 927 }, 928 .ciphertext = { 929 .data = { 930 /* DOCSIS header */ 931 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 932 /* Ethernet frame */ 933 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 934 0x04, 0x03, 0x02, 0x01, 0x6A, 0x86, 0x25, 935 /* CRC */ 936 0xB5, 0x6B, 0xFD, 0xCB 937 }, 938 .len = 25, 939 .cipher_offset = 18, 940 .crc_offset = 6, 941 .no_cipher = false, 942 .no_crc = false 943 } 944 }; 945 946 const struct docsis_test_data docsis_test_case_16 = { 947 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-256 and CRC Verify (34-byte " 948 "frame, Small offset and full block decryption)"}, 949 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-256 " 950 "(34-byte frame, Small offset and full block encryption)"}, 951 .key = { 952 .data = { 953 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 954 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 955 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 956 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 957 }, 958 .len = 32 959 }, 960 .iv = { 961 .data = { 962 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 963 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 964 }, 965 .len = 16 966 }, 967 .plaintext = { 968 .data = { 969 /* DOCSIS header */ 970 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 971 /* Ethernet frame */ 972 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 973 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 974 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 975 /* CRC */ 976 0xFF, 0xFF, 0xFF, 0xFF 977 }, 978 .len = 34, 979 .cipher_offset = 18, 980 .crc_offset = 6, 981 .no_cipher = false, 982 .no_crc = false 983 }, 984 .ciphertext = { 985 .data = { 986 /* DOCSIS header */ 987 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 988 /* Ethernet frame */ 989 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 990 0x04, 0x03, 0x02, 0x01, 0xF6, 0xA1, 0x2E, 0x0A, 991 0xBB, 0x27, 0x82, 0x4F, 0x99, 0x0A, 0xE2, 0x3F, 992 /* CRC */ 993 0xEB, 0xB7, 0x89, 0xB0 994 }, 995 .len = 34, 996 .cipher_offset = 18, 997 .crc_offset = 6, 998 .no_cipher = false, 999 .no_crc = false 1000 } 1001 }; 1002 1003 const struct docsis_test_data docsis_test_case_17 = { 1004 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-256 and CRC Verify (35-byte " 1005 "frame, Small offset and uneven decryption)"}, 1006 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-256 " 1007 "(35-byte frame, Small offset and uneven encryption)"}, 1008 .key = { 1009 .data = { 1010 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 1011 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 1012 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 1013 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 1014 }, 1015 .len = 32 1016 }, 1017 .iv = { 1018 .data = { 1019 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 1020 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 1021 }, 1022 .len = 16 1023 }, 1024 .plaintext = { 1025 .data = { 1026 /* DOCSIS header */ 1027 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1028 /* Ethernet frame */ 1029 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1030 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 1031 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1032 0xAA, 1033 /* CRC */ 1034 0xFF, 0xFF, 0xFF, 0xFF 1035 }, 1036 .len = 35, 1037 .cipher_offset = 18, 1038 .crc_offset = 6, 1039 .no_cipher = false, 1040 .no_crc = false 1041 }, 1042 .ciphertext = { 1043 .data = { 1044 /* DOCSIS header */ 1045 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1046 /* Ethernet frame */ 1047 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1048 0x04, 0x03, 0x02, 0x01, 0xE1, 0x30, 0x38, 0xC8, 1049 0xC4, 0x59, 0x8D, 0x43, 0x9A, 0xBE, 0xBE, 0x73, 1050 0xC3, 1051 /*CRC */ 1052 0x8C, 0xE1, 0x89, 0x8B 1053 }, 1054 .len = 35, 1055 .cipher_offset = 18, 1056 .crc_offset = 6, 1057 .no_cipher = false, 1058 .no_crc = false 1059 } 1060 }; 1061 1062 const struct docsis_test_data docsis_test_case_18 = { 1063 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-256 and CRC Verify (82-byte " 1064 "frame, Small offset and full block decryption)"}, 1065 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-256 " 1066 "(82-byte frame, Small offset and full block encryption)"}, 1067 .key = { 1068 .data = { 1069 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 1070 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 1071 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 1072 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 1073 }, 1074 .len = 32 1075 }, 1076 .iv = { 1077 .data = { 1078 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 1079 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 1080 }, 1081 .len = 16 1082 }, 1083 .plaintext = { 1084 .data = { 1085 /* DOCSIS header */ 1086 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1087 /* Ethernet frame */ 1088 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1089 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 1090 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1091 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1092 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1093 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1094 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1095 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1096 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1097 /* CRC */ 1098 0xFF, 0xFF, 0xFF, 0xFF 1099 }, 1100 .len = 82, 1101 .cipher_offset = 18, 1102 .crc_offset = 6, 1103 .no_cipher = false, 1104 .no_crc = false 1105 }, 1106 .ciphertext = { 1107 .data = { 1108 /* DOCSIS header */ 1109 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1110 /* Ethernet frame */ 1111 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1112 0x04, 0x03, 0x02, 0x01, 0xE9, 0x12, 0x3B, 0x12, 1113 0x36, 0x56, 0x95, 0xA6, 0x97, 0xF1, 0x74, 0x68, 1114 0xBA, 0x58, 0x77, 0xEA, 0x43, 0x11, 0x85, 0xD4, 1115 0x7A, 0xF8, 0x1C, 0x11, 0x50, 0xD1, 0xF1, 0xBD, 1116 0x15, 0x4D, 0x99, 0xB5, 0x39, 0x74, 0x84, 0xDF, 1117 0xD4, 0x8B, 0xDC, 0xB7, 0x58, 0x1B, 0x22, 0xAB, 1118 0xF3, 0x29, 0xC6, 0xCB, 0x26, 0x07, 0x36, 0x6B, 1119 0x8C, 0xAC, 0x6E, 0x99, 0x37, 0x94, 0xDF, 0x31, 1120 /* CRC */ 1121 0xA1, 0x7D, 0x70, 0xBB 1122 }, 1123 .len = 82, 1124 .cipher_offset = 18, 1125 .crc_offset = 6, 1126 .no_cipher = false, 1127 .no_crc = false 1128 } 1129 }; 1130 1131 const struct docsis_test_data docsis_test_case_19 = { 1132 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-256 and CRC Verify (83-byte " 1133 "frame, Small offset and uneven decryption)"}, 1134 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-256 " 1135 "(83-byte frame, Small offset and uneven encryption)"}, 1136 .key = { 1137 .data = { 1138 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 1139 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 1140 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 1141 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 1142 }, 1143 .len = 32 1144 }, 1145 .iv = { 1146 .data = { 1147 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 1148 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 1149 }, 1150 .len = 16 1151 }, 1152 .plaintext = { 1153 .data = { 1154 /* DOCSIS header */ 1155 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1156 /* Ethernet frame */ 1157 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1158 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 1159 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1160 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1161 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1162 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1163 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1164 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1165 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1166 0xAA, 1167 /* CRC */ 1168 0xFF, 0xFF, 0xFF, 0xFF 1169 }, 1170 .len = 83, 1171 .cipher_offset = 18, 1172 .crc_offset = 6, 1173 .no_cipher = false, 1174 .no_crc = false 1175 }, 1176 .ciphertext = { 1177 .data = { 1178 /* DOCSIS header */ 1179 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1180 /* Ethernet frame */ 1181 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1182 0x04, 0x03, 0x02, 0x01, 0xE9, 0x12, 0x3B, 0x12, 1183 0x36, 0x56, 0x95, 0xA6, 0x97, 0xF1, 0x74, 0x68, 1184 0xBA, 0x58, 0x77, 0xEA, 0x43, 0x11, 0x85, 0xD4, 1185 0x7A, 0xF8, 0x1C, 0x11, 0x50, 0xD1, 0xF1, 0xBD, 1186 0x15, 0x4D, 0x99, 0xB5, 0x39, 0x74, 0x84, 0xDF, 1187 0xD4, 0x8B, 0xDC, 0xB7, 0x58, 0x1B, 0x22, 0xAB, 1188 0xF3, 0x29, 0xC6, 0xCB, 0x13, 0xED, 0x08, 0xF5, 1189 0x1B, 0x4B, 0xD8, 0x79, 0x93, 0x26, 0x69, 0x03, 1190 0x23, 1191 /* CRC */ 1192 0xC8, 0x8E, 0x02, 0x3A 1193 }, 1194 .len = 83, 1195 .cipher_offset = 18, 1196 .crc_offset = 6, 1197 .no_cipher = false, 1198 .no_crc = false 1199 } 1200 }; 1201 1202 const struct docsis_test_data docsis_test_case_20 = { 1203 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-256 and CRC Verify (83-byte " 1204 "frame, Big offset and uneven decryption)"}, 1205 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-256 " 1206 "(83-byte frame, Big offset and uneven encryption)"}, 1207 .key = { 1208 .data = { 1209 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 1210 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 1211 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 1212 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 1213 }, 1214 .len = 32 1215 }, 1216 .iv = { 1217 .data = { 1218 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 1219 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 1220 }, 1221 .len = 16 1222 }, 1223 .plaintext = { 1224 .data = { 1225 /* DOCSIS header */ 1226 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1227 /* Ethernet frame */ 1228 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1229 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 1230 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1231 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1232 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1233 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1234 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1235 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1236 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1237 0xAA, 1238 /* CRC */ 1239 0xFF, 0xFF, 0xFF, 0xFF 1240 }, 1241 .len = 83, 1242 .cipher_offset = 40, 1243 .crc_offset = 6, 1244 .no_cipher = false, 1245 .no_crc = false 1246 }, 1247 .ciphertext = { 1248 .data = { 1249 /* DOCSIS header */ 1250 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1251 /* Ethernet frame */ 1252 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1253 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 1254 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1255 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1256 0xAA, 0xAA, 0x54, 0xB4, 0x55, 0x68, 0x06, 0xBF, 1257 0x00, 0x8B, 0x5F, 0x2C, 0x10, 0x4A, 0xBF, 0x5A, 1258 0xF2, 0x20, 0xD9, 0x77, 0x7F, 0x2D, 0x2B, 0x11, 1259 0xAC, 0xAF, 0x21, 0x36, 0xD2, 0xD4, 0x80, 0xF2, 1260 0x4F, 0x14, 0xA0, 0x3A, 0x66, 0xE5, 0xC5, 0xE2, 1261 0x15, 1262 /* CRC */ 1263 0x0C, 0x89, 0x76, 0x26 1264 }, 1265 .len = 83, 1266 .cipher_offset = 40, 1267 .crc_offset = 6, 1268 .no_cipher = false, 1269 .no_crc = false 1270 } 1271 }; 1272 1273 const struct docsis_test_data docsis_test_case_21 = { 1274 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-256 and CRC Verify (24-byte " 1275 "frame, No CRC, Small offset and runt block decryption)"}, 1276 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-256 " 1277 "(24-byte frame, No CRC, Small offset and runt block encryption)"}, 1278 .key = { 1279 .data = { 1280 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 1281 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 1282 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 1283 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 1284 }, 1285 .len = 32 1286 }, 1287 .iv = { 1288 .data = { 1289 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 1290 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 1291 }, 1292 .len = 16 1293 }, 1294 .plaintext = { 1295 .data = { 1296 /* DOCSIS header */ 1297 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1298 /* Ethernet frame */ 1299 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1300 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 1301 /* CRC */ 1302 0xFF, 0xFF, 0xFF, 0xFF 1303 }, 1304 .len = 24, 1305 .cipher_offset = 18, 1306 .crc_offset = 6, 1307 .no_cipher = false, 1308 .no_crc = true 1309 }, 1310 .ciphertext = { 1311 .data = { 1312 /* DOCSIS header */ 1313 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1314 /* Ethernet frame */ 1315 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1316 0x04, 0x03, 0x02, 0x01, 0x6A, 0x86, 1317 /* CRC */ 1318 0x70, 0x44, 0x0D, 0x8C 1319 }, 1320 .len = 24, 1321 .cipher_offset = 18, 1322 .crc_offset = 6, 1323 .no_cipher = false, 1324 .no_crc = true 1325 } 1326 }; 1327 1328 const struct docsis_test_data docsis_test_case_22 = { 1329 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-256 and CRC Verify (83-byte " 1330 "frame, No CRC, Big offset and uneven decryption)"}, 1331 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-256 " 1332 "(83-byte frame, No CRC, Big offset and uneven encryption)"}, 1333 .key = { 1334 .data = { 1335 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 1336 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 1337 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 1338 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 1339 }, 1340 .len = 32 1341 }, 1342 .iv = { 1343 .data = { 1344 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 1345 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 1346 }, 1347 .len = 16 1348 }, 1349 .plaintext = { 1350 .data = { 1351 /* DOCSIS header */ 1352 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1353 /* Ethernet frame */ 1354 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1355 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 1356 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1357 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1358 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1359 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1360 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1361 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1362 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1363 0xAA, 1364 /* CRC */ 1365 0xFF, 0xFF, 0xFF, 0xFF 1366 }, 1367 .len = 83, 1368 .cipher_offset = 40, 1369 .crc_offset = 6, 1370 .no_cipher = false, 1371 .no_crc = true 1372 }, 1373 .ciphertext = { 1374 .data = { 1375 /* DOCSIS header */ 1376 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1377 /* Ethernet frame */ 1378 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1379 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 1380 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1381 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1382 0xAA, 0xAA, 0x54, 0xB4, 0x55, 0x68, 0x06, 0xBF, 1383 0x00, 0x8B, 0x5F, 0x2C, 0x10, 0x4A, 0xBF, 0x5A, 1384 0xF2, 0x20, 0xD9, 0x77, 0x7F, 0x2D, 0x2B, 0x11, 1385 0xAC, 0xAF, 0x21, 0x36, 0xD2, 0xD4, 0x80, 0xF2, 1386 0x4F, 0x14, 0xA0, 0x3A, 0x66, 0xE5, 0xC5, 0xE2, 1387 0x15, 1388 /* CRC */ 1389 0x40, 0x16, 0x62, 0xE1 1390 }, 1391 .len = 83, 1392 .cipher_offset = 40, 1393 .crc_offset = 6, 1394 .no_cipher = false, 1395 .no_crc = true 1396 } 1397 }; 1398 1399 const struct docsis_test_data docsis_test_case_23 = { 1400 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-256 and CRC Verify (24-byte " 1401 "frame, No decryption)"}, 1402 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-256 " 1403 "(24-byte frame, No encryption)"}, 1404 .key = { 1405 .data = { 1406 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 1407 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 1408 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 1409 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 1410 }, 1411 .len = 32 1412 }, 1413 .iv = { 1414 .data = { 1415 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 1416 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 1417 }, 1418 .len = 16 1419 }, 1420 .plaintext = { 1421 .data = { 1422 /* DOCSIS header */ 1423 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1424 /* Ethernet frame */ 1425 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1426 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 1427 /* CRC */ 1428 0xFF, 0xFF, 0xFF, 0xFF 1429 }, 1430 .len = 24, 1431 .cipher_offset = 18, 1432 .crc_offset = 6, 1433 .no_cipher = true, 1434 .no_crc = false 1435 }, 1436 .ciphertext = { 1437 .data = { 1438 /* DOCSIS header */ 1439 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1440 /* Ethernet frame */ 1441 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1442 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 1443 /* CRC */ 1444 0x14, 0x08, 0xE8, 0x55 1445 }, 1446 .len = 24, 1447 .cipher_offset = 18, 1448 .crc_offset = 6, 1449 .no_cipher = true, 1450 .no_crc = false 1451 } 1452 }; 1453 1454 const struct docsis_test_data docsis_test_case_24 = { 1455 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-256 and CRC Verify (83-byte " 1456 "frame, No decryption)"}, 1457 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-256 " 1458 "(83-byte frame, No encryption)"}, 1459 .key = { 1460 .data = { 1461 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 1462 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 1463 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 1464 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 1465 }, 1466 .len = 32 1467 }, 1468 .iv = { 1469 .data = { 1470 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 1471 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 1472 }, 1473 .len = 16 1474 }, 1475 .plaintext = { 1476 .data = { 1477 /* DOCSIS header */ 1478 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1479 /* Ethernet frame */ 1480 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1481 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 1482 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1483 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1484 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1485 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1486 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1487 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1488 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1489 0xAA, 1490 /* CRC */ 1491 0xFF, 0xFF, 0xFF, 0xFF 1492 }, 1493 .len = 83, 1494 .cipher_offset = 40, 1495 .crc_offset = 6, 1496 .no_cipher = true, 1497 .no_crc = false 1498 }, 1499 .ciphertext = { 1500 .data = { 1501 /* DOCSIS header */ 1502 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1503 /* Ethernet frame */ 1504 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1505 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 1506 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1507 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1508 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1509 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1510 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1511 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1512 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1513 0xAA, 1514 /* CRC */ 1515 0xB3, 0x60, 0xEB, 0x38 1516 }, 1517 .len = 83, 1518 .cipher_offset = 40, 1519 .crc_offset = 6, 1520 .no_cipher = true, 1521 .no_crc = false 1522 } 1523 }; 1524 1525 const struct docsis_test_data docsis_test_case_25 = { 1526 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-256 and CRC Verify (24-byte " 1527 "frame, No CRC, No decryption)"}, 1528 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-256 " 1529 "(24-byte frame, No CRC, No encryption)"}, 1530 .key = { 1531 .data = { 1532 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 1533 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 1534 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 1535 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 1536 }, 1537 .len = 32 1538 }, 1539 .iv = { 1540 .data = { 1541 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 1542 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 1543 }, 1544 .len = 16 1545 }, 1546 .plaintext = { 1547 .data = { 1548 /* DOCSIS header */ 1549 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1550 /* Ethernet frame */ 1551 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1552 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 1553 /* CRC */ 1554 0xFF, 0xFF, 0xFF, 0xFF 1555 }, 1556 .len = 24, 1557 .cipher_offset = 18, 1558 .crc_offset = 6, 1559 .no_cipher = true, 1560 .no_crc = true 1561 }, 1562 .ciphertext = { 1563 .data = { 1564 /* DOCSIS header */ 1565 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1566 /* Ethernet frame */ 1567 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1568 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 1569 /* CRC */ 1570 0xFF, 0xFF, 0xFF, 0xFF 1571 }, 1572 .len = 24, 1573 .cipher_offset = 18, 1574 .crc_offset = 6, 1575 .no_cipher = true, 1576 .no_crc = true 1577 } 1578 }; 1579 1580 const struct docsis_test_data docsis_test_case_26 = { 1581 .test_descr_uplink = {"Uplink AES-DOCSIS-BPI-256 and CRC Verify (83-byte " 1582 "frame, No CRC, No decryption)"}, 1583 .test_descr_downlink = {"Downlink CRC Generate and AES-DOCSIS-BPI-256 " 1584 "(83-byte frame, No CRC, No encryption)"}, 1585 .key = { 1586 .data = { 1587 0x00, 0x00, 0x00, 0x00, 0xAA, 0xBB, 0xCC, 0xDD, 1588 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 1589 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 1590 0xEE, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55 1591 }, 1592 .len = 32 1593 }, 1594 .iv = { 1595 .data = { 1596 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 1597 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 1598 }, 1599 .len = 16 1600 }, 1601 .plaintext = { 1602 .data = { 1603 /* DOCSIS header */ 1604 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1605 /* Ethernet frame */ 1606 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1607 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 1608 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1609 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1610 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1611 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1612 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1613 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1614 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1615 0xAA, 1616 /* CRC */ 1617 0xFF, 0xFF, 0xFF, 0xFF 1618 }, 1619 .len = 83, 1620 .cipher_offset = 40, 1621 .crc_offset = 6, 1622 .no_cipher = true, 1623 .no_crc = true 1624 }, 1625 .ciphertext = { 1626 .data = { 1627 /* DOCSIS header */ 1628 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1629 /* Ethernet frame */ 1630 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x06, 0x05, 1631 0x04, 0x03, 0x02, 0x01, 0x08, 0x00, 0xAA, 0xAA, 1632 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1633 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1634 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1635 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1636 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1637 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1638 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 1639 0xAA, 1640 /* CRC */ 1641 0xFF, 0xFF, 0xFF, 0xFF 1642 }, 1643 .len = 83, 1644 .cipher_offset = 40, 1645 .crc_offset = 6, 1646 .no_cipher = true, 1647 .no_crc = true 1648 } 1649 }; 1650 1651 #endif /* TEST_CRYPTODEV_SECURITY_DOCSIS_TEST_VECTORS_H_ */ 1652