1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2021 Marvell 3 */ 4 5 #ifndef TEST_CRYPTODEV_SECURITY_IPSEC_TEST_VECTORS_H_ 6 #define TEST_CRYPTODEV_SECURITY_IPSEC_TEST_VECTORS_H_ 7 8 #include <rte_crypto.h> 9 #include <rte_security.h> 10 11 #include "test_cryptodev_security_ipsec.h" 12 13 /* 14 * Known vectors 15 * 16 * AES-GCM vectors are based on : 17 * https://datatracker.ietf.org/doc/html/draft-mcgrew-gcm-test-01 18 * 19 * Vectors are updated to have corrected L4 checksum and sequence number 1. 20 */ 21 22 struct ipsec_test_data pkt_aes_128_gcm = { 23 .key = { 24 .data = { 25 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 26 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08 27 }, 28 }, 29 .input_text = { 30 .data = { 31 /* IP */ 32 0x45, 0x00, 0x00, 0x3e, 0x69, 0x8f, 0x00, 0x00, 33 0x80, 0x11, 0x4d, 0xcc, 0xc0, 0xa8, 0x01, 0x02, 34 0xc0, 0xa8, 0x01, 0x01, 35 36 /* UDP */ 37 0x0a, 0x98, 0x00, 0x35, 0x00, 0x2a, 0x23, 0x43, 38 0xb2, 0xd0, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 39 0x00, 0x00, 0x00, 0x00, 0x03, 0x73, 0x69, 0x70, 40 0x09, 0x63, 0x79, 0x62, 0x65, 0x72, 0x63, 0x69, 41 0x74, 0x79, 0x02, 0x64, 0x6b, 0x00, 0x00, 0x01, 42 0x00, 0x01, 43 }, 44 .len = 62, 45 }, 46 .output_text = { 47 .data = { 48 /* IP - outer header */ 49 0x45, 0x00, 0x00, 0x74, 0x69, 0x8f, 0x00, 0x00, 50 0x80, 0x32, 0x4d, 0x75, 0xc0, 0xa8, 0x01, 0x02, 51 0xc0, 0xa8, 0x01, 0x01, 52 53 /* ESP */ 54 0x00, 0x00, 0xa5, 0xf8, 0x00, 0x00, 0x00, 0x01, 55 56 /* IV */ 57 0xfa, 0xce, 0xdb, 0xad, 0xde, 0xca, 0xf8, 0x88, 58 59 /* Data */ 60 0xde, 0xb2, 0x2c, 0xd9, 0xb0, 0x7c, 0x72, 0xc1, 61 0x6e, 0x3a, 0x65, 0xbe, 0xeb, 0x8d, 0xf3, 0x04, 62 0xa5, 0xa5, 0x89, 0x7d, 0x33, 0xae, 0x53, 0x0f, 63 0x1b, 0xa7, 0x6d, 0x5d, 0x11, 0x4d, 0x2a, 0x5c, 64 0x3d, 0xe8, 0x18, 0x27, 0xc1, 0x0e, 0x9a, 0x4f, 65 0x51, 0x33, 0x0d, 0x0e, 0xec, 0x41, 0x66, 0x42, 66 0xcf, 0xbb, 0x85, 0xa5, 0xb4, 0x7e, 0x48, 0xa4, 67 0xec, 0x3b, 0x9b, 0xa9, 0x5d, 0x91, 0x8b, 0xd4, 68 0x29, 0xc7, 0x37, 0x57, 0x9f, 0xf1, 0x9e, 0x58, 69 0xcf, 0xfc, 0x60, 0x7a, 0x3b, 0xce, 0x89, 0x94, 70 71 }, 72 .len = 116, 73 }, 74 .salt = { 75 .data = { 76 0xca, 0xfe, 0xba, 0xbe 77 }, 78 .len = 4, 79 }, 80 81 .iv = { 82 .data = { 83 0xfa, 0xce, 0xdb, 0xad, 0xde, 0xca, 0xf8, 0x88 84 }, 85 }, 86 87 .ipsec_xform = { 88 .spi = 0xa5f8, 89 .options.esn = 0, 90 .options.udp_encap = 0, 91 .options.copy_dscp = 0, 92 .options.copy_flabel = 0, 93 .options.copy_df = 0, 94 .options.dec_ttl = 0, 95 .options.ecn = 0, 96 .options.stats = 0, 97 .options.tunnel_hdr_verify = 0, 98 .options.ip_csum_enable = 0, 99 .options.l4_csum_enable = 0, 100 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 101 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 102 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 103 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 104 .replay_win_sz = 0, 105 .esn.low = 1, 106 }, 107 108 .aead = true, 109 110 .xform = { 111 .aead = { 112 .next = NULL, 113 .type = RTE_CRYPTO_SYM_XFORM_AEAD, 114 .aead = { 115 .op = RTE_CRYPTO_AEAD_OP_ENCRYPT, 116 .algo = RTE_CRYPTO_AEAD_AES_GCM, 117 .key.length = 16, 118 .iv.length = 12, 119 .iv.offset = IV_OFFSET, 120 .digest_length = 16, 121 .aad_length = 12, 122 }, 123 }, 124 }, 125 }; 126 127 struct ipsec_test_data pkt_aes_192_gcm = { 128 .key = { 129 .data = { 130 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, 131 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, 132 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c 133 }, 134 }, 135 .input_text = { 136 .data = { 137 /* IP */ 138 0x45, 0x00, 0x00, 0x28, 0xa4, 0xad, 0x40, 0x00, 139 0x40, 0x06, 0x78, 0x80, 0x0a, 0x01, 0x03, 0x8f, 140 0x0a, 0x01, 0x06, 0x12, 141 142 /* TCP */ 143 0x80, 0x23, 0x06, 0xb8, 0xcb, 0x71, 0x26, 0x02, 144 0xdd, 0x6b, 0xb0, 0x3e, 0x50, 0x10, 0x16, 0xd0, 145 0x75, 0x67, 0x00, 0x01 146 }, 147 .len = 40, 148 }, 149 .output_text = { 150 .data = { 151 /* IP - outer header */ 152 0x45, 0x00, 0x00, 0x60, 0x69, 0x8f, 0x00, 0x00, 153 0x80, 0x32, 0x4d, 0x89, 0xc0, 0xa8, 0x01, 0x02, 154 0xc0, 0xa8, 0x01, 0x01, 155 156 /* ESP */ 157 0x00, 0x00, 0xa5, 0xf8, 0x00, 0x00, 0x00, 0x01, 158 159 /* IV */ 160 0xfa, 0xce, 0xdb, 0xad, 0xde, 0xca, 0xf8, 0x88, 161 162 /* Data */ 163 0xa5, 0xb1, 0xf8, 0x06, 0x60, 0x29, 0xae, 0xa4, 164 0x0e, 0x59, 0x8b, 0x81, 0x22, 0xde, 0x02, 0x42, 165 0x09, 0x38, 0xb3, 0xab, 0x33, 0xf8, 0x28, 0xe6, 166 0x87, 0xb8, 0x85, 0x8b, 0x5b, 0xfb, 0xdb, 0xd0, 167 0x31, 0x5b, 0x27, 0x45, 0x21, 0x4b, 0xcc, 0x77, 168 0x82, 0xac, 0x91, 0x38, 0xf2, 0xbb, 0xbe, 0xe4, 169 0xcf, 0x03, 0x36, 0x89, 0xdd, 0x40, 0xd3, 0x6e, 170 0x54, 0x05, 0x22, 0x22, 171 }, 172 .len = 96, 173 }, 174 .salt = { 175 .data = { 176 0xca, 0xfe, 0xba, 0xbe 177 }, 178 .len = 4, 179 }, 180 181 .iv = { 182 .data = { 183 0xfa, 0xce, 0xdb, 0xad, 0xde, 0xca, 0xf8, 0x88 184 }, 185 }, 186 187 .ipsec_xform = { 188 .spi = 0xa5f8, 189 .options.esn = 0, 190 .options.udp_encap = 0, 191 .options.copy_dscp = 0, 192 .options.copy_flabel = 0, 193 .options.copy_df = 0, 194 .options.dec_ttl = 0, 195 .options.ecn = 0, 196 .options.stats = 0, 197 .options.tunnel_hdr_verify = 0, 198 .options.ip_csum_enable = 0, 199 .options.l4_csum_enable = 0, 200 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 201 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 202 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 203 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 204 .replay_win_sz = 0, 205 }, 206 207 .aead = true, 208 209 .xform = { 210 .aead = { 211 .next = NULL, 212 .type = RTE_CRYPTO_SYM_XFORM_AEAD, 213 .aead = { 214 .op = RTE_CRYPTO_AEAD_OP_ENCRYPT, 215 .algo = RTE_CRYPTO_AEAD_AES_GCM, 216 .key.length = 24, 217 .iv.length = 12, 218 .iv.offset = IV_OFFSET, 219 .digest_length = 16, 220 .aad_length = 12, 221 }, 222 }, 223 }, 224 }; 225 226 struct ipsec_test_data pkt_aes_256_gcm = { 227 .key = { 228 .data = { 229 0xab, 0xbc, 0xcd, 0xde, 0xf0, 0x01, 0x12, 0x23, 230 0x34, 0x45, 0x56, 0x67, 0x78, 0x89, 0x9a, 0xab, 231 0xab, 0xbc, 0xcd, 0xde, 0xf0, 0x01, 0x12, 0x23, 232 0x34, 0x45, 0x56, 0x67, 0x78, 0x89, 0x9a, 0xab, 233 }, 234 }, 235 .input_text = { 236 .data = { 237 /* IP */ 238 0x45, 0x00, 0x00, 0x30, 0x69, 0xa6, 0x40, 0x00, 239 0x80, 0x06, 0x26, 0x90, 0xc0, 0xa8, 0x01, 0x02, 240 0x93, 0x89, 0x15, 0x5e, 241 242 /* TCP */ 243 0x0a, 0x9e, 0x00, 0x8b, 0x2d, 0xc5, 0x7e, 0xe0, 244 0x00, 0x00, 0x00, 0x00, 0x70, 0x02, 0x40, 0x00, 245 0x20, 0xbf, 0x00, 0x00, 0x02, 0x04, 0x05, 0xb4, 246 0x01, 0x01, 0x04, 0x02, 247 }, 248 .len = 48, 249 }, 250 .output_text = { 251 .data = { 252 /* IP - outer header */ 253 0x45, 0x00, 0x00, 0x68, 0x69, 0x8f, 0x00, 0x00, 254 0x80, 0x32, 0x4d, 0x81, 0xc0, 0xa8, 0x01, 0x02, 255 0xc0, 0xa8, 0x01, 0x01, 256 257 /* ESP */ 258 0x4a, 0x2c, 0xbf, 0xe3, 0x00, 0x00, 0x00, 0x01, 259 260 /* IV */ 261 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 262 263 /* Data */ 264 0xff, 0x42, 0x5c, 0x9b, 0x72, 0x45, 0x99, 0xdf, 265 0x7a, 0x3b, 0xcd, 0x51, 0x01, 0x94, 0xe0, 0x0d, 266 0x6a, 0x78, 0x10, 0x7f, 0x1b, 0x0b, 0x1c, 0xbf, 267 0x06, 0xef, 0xae, 0x9d, 0x65, 0xa5, 0xd7, 0x63, 268 0x74, 0x8a, 0x63, 0x79, 0x85, 0x77, 0x1d, 0x34, 269 0x7f, 0x05, 0x45, 0x65, 0x9f, 0x14, 0xe9, 0x9d, 270 0xef, 0x84, 0x2d, 0x8b, 0x00, 0x14, 0x4a, 0x1f, 271 0xec, 0x6a, 0xdf, 0x0c, 0x9a, 0x92, 0x7f, 0xee, 272 0xa6, 0xc5, 0x11, 0x60, 273 }, 274 .len = 104, 275 }, 276 .salt = { 277 .data = { 278 0x11, 0x22, 0x33, 0x44 279 }, 280 .len = 4, 281 }, 282 283 .iv = { 284 .data = { 285 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 286 }, 287 }, 288 289 .ipsec_xform = { 290 .spi = 0x4a2cbfe3, 291 .options.esn = 0, 292 .options.udp_encap = 0, 293 .options.copy_dscp = 0, 294 .options.copy_flabel = 0, 295 .options.copy_df = 0, 296 .options.dec_ttl = 0, 297 .options.ecn = 0, 298 .options.stats = 0, 299 .options.tunnel_hdr_verify = 0, 300 .options.ip_csum_enable = 0, 301 .options.l4_csum_enable = 0, 302 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 303 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 304 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 305 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 306 .replay_win_sz = 0, 307 }, 308 309 .aead = true, 310 311 .xform = { 312 .aead = { 313 .next = NULL, 314 .type = RTE_CRYPTO_SYM_XFORM_AEAD, 315 .aead = { 316 .op = RTE_CRYPTO_AEAD_OP_ENCRYPT, 317 .algo = RTE_CRYPTO_AEAD_AES_GCM, 318 .key.length = 32, 319 .iv.length = 12, 320 .iv.offset = IV_OFFSET, 321 .digest_length = 16, 322 .aad_length = 12, 323 }, 324 }, 325 }, 326 }; 327 328 struct ipsec_test_data pkt_aes_256_ccm = { 329 .key = { 330 .data = { 331 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 332 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 333 0x61, 0x62, 0x63, 0x64, 0x61, 0x62, 0x63, 0x64, 334 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 335 }, 336 }, 337 .input_text = { 338 .data = { 339 /* IP */ 340 0x45, 0x00, 0x00, 0x2E, 0x00, 0x01, 0x00, 0x00, 341 0x40, 0x11, 0x5F, 0xBC, 0x0D, 0x00, 0x00, 0x02, 342 0x0E, 0x00, 0x00, 0x01, 343 344 /* UDP */ 345 0x04, 0x01, 0x04, 0x01, 0x00, 0x1A, 0xA0, 0x79, 346 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 347 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 348 0x78, 0x78, 349 }, 350 .len = 46, 351 }, 352 .output_text = { 353 .data = { 354 /* IP - outer header */ 355 0x45, 0x00, 0x00, 0x64, 0x00, 0x01, 0x00, 0x00, 356 0x40, 0x32, 0x76, 0x65, 0x02, 0x00, 0x00, 0x01, 357 0x02, 0x00, 0x00, 0x02, 358 359 /* ESP */ 360 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 361 362 /* IV */ 363 0x00, 0x00, 0x00, 0x00, 0x02, 0x58, 0xBB, 0x81, 364 365 /* Data */ 366 0xB4, 0x12, 0x67, 0x79, 0x79, 0x9A, 0xCB, 0xC5, 367 0x94, 0xF9, 0xA3, 0x95, 0xAC, 0x06, 0x8B, 0xEE, 368 0x20, 0x69, 0xE8, 0xD9, 0x4A, 0xC2, 0xAA, 0xA0, 369 0xD4, 0xEE, 0xF6, 0xAE, 0x08, 0xF8, 0x3F, 0xE6, 370 0x88, 0x1F, 0x5C, 0xD7, 0x8D, 0x9D, 0x30, 0x02, 371 0x36, 0xEA, 0x10, 0x5B, 0xB0, 0x30, 0x97, 0xBF, 372 0xFA, 0x89, 0x36, 0x53, 0x96, 0xD7, 0x43, 0x8C, 373 0x4D, 0x87, 0xFD, 0x8E, 0x45, 0x49, 0x34, 0x80, 374 }, 375 .len = 100, 376 }, 377 .salt = { 378 .data = { 379 0x6d, 0x6e, 0x6f 380 }, 381 .len = 3, 382 }, 383 384 .iv = { 385 .data = { 386 0x00, 0x00, 0x00, 0x00, 0x02, 0x58, 0xBB, 0x81, 387 }, 388 }, 389 390 .ipsec_xform = { 391 .spi = 0x00000100, 392 .options.esn = 0, 393 .options.udp_encap = 0, 394 .options.copy_dscp = 0, 395 .options.copy_flabel = 0, 396 .options.copy_df = 0, 397 .options.dec_ttl = 0, 398 .options.ecn = 0, 399 .options.stats = 0, 400 .options.tunnel_hdr_verify = 0, 401 .options.ip_csum_enable = 0, 402 .options.l4_csum_enable = 0, 403 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 404 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 405 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 406 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 407 .replay_win_sz = 0, 408 }, 409 410 .aead = true, 411 412 .xform = { 413 .aead = { 414 .next = NULL, 415 .type = RTE_CRYPTO_SYM_XFORM_AEAD, 416 .aead = { 417 .op = RTE_CRYPTO_AEAD_OP_ENCRYPT, 418 .algo = RTE_CRYPTO_AEAD_AES_CCM, 419 .key.length = 32, 420 /* IV includes 3B salt and 8B per packet IV */ 421 .iv.length = 11, 422 .iv.offset = IV_OFFSET, 423 .digest_length = 16, 424 .aad_length = 12, 425 }, 426 }, 427 }, 428 }; 429 430 /* Known vectors for AES-CBC 431 * https://datatracker.ietf.org/doc/html/rfc3602#section-4 432 */ 433 434 struct ipsec_test_data pkt_aes_128_cbc_null = { 435 .key = { 436 .data = { 437 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 438 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 439 }, 440 }, 441 .input_text = { 442 .data = { 443 /* IP - outer header */ 444 0x45, 0x00, 0x00, 0x8c, 0x00, 0x02, 0x00, 0x00, 445 0x40, 0x32, 0x27, 0xbc, 0x00, 0x01, 0xa8, 0xc0, 446 0x01, 0x01, 0xa8, 0xc0, 447 448 /* ESP */ 449 0x00, 0x00, 0x87, 0x65, 0x00, 0x00, 0x00, 0x02, 450 451 /* IV */ 452 0xf4, 0xe7, 0x65, 0x24, 0x4f, 0x64, 0x07, 0xad, 453 0xf1, 0x3d, 0xc1, 0x38, 0x0f, 0x67, 0x3f, 0x37, 454 455 /* Data */ 456 0x77, 0x3b, 0x52, 0x41, 0xa4, 0xc4, 0x49, 0x22, 457 0x5e, 0x4f, 0x3c, 0xe5, 0xed, 0x61, 0x1b, 0x0c, 458 0x23, 0x7c, 0xa9, 0x6c, 0xf7, 0x4a, 0x93, 0x01, 459 0x3c, 0x1b, 0x0e, 0xa1, 0xa0, 0xcf, 0x70, 0xf8, 460 0xe4, 0xec, 0xae, 0xc7, 0x8a, 0xc5, 0x3a, 0xad, 461 0x7a, 0x0f, 0x02, 0x2b, 0x85, 0x92, 0x43, 0xc6, 462 0x47, 0x75, 0x2e, 0x94, 0xa8, 0x59, 0x35, 0x2b, 463 0x8a, 0x4d, 0x4d, 0x2d, 0xec, 0xd1, 0x36, 0xe5, 464 0xc1, 0x77, 0xf1, 0x32, 0xad, 0x3f, 0xbf, 0xb2, 465 0x20, 0x1a, 0xc9, 0x90, 0x4c, 0x74, 0xee, 0x0a, 466 0x10, 0x9e, 0x0c, 0xa1, 0xe4, 0xdf, 0xe9, 0xd5, 467 0xa1, 0x00, 0xb8, 0x42, 0xf1, 0xc2, 0x2f, 0x0d, 468 }, 469 .len = 140, 470 }, 471 .output_text = { 472 .data = { 473 /* IP */ 474 0x45, 0x00, 0x00, 0x54, 0x09, 0x04, 0x00, 0x00, 475 0x40, 0x01, 0xf9, 0x88, 0xc0, 0xa8, 0x7b, 0x03, 476 0xc0, 0xa8, 0x7b, 0xc8, 477 478 /* ICMP */ 479 0x08, 0x00, 0x9f, 0x76, 0xa9, 0x0a, 0x01, 0x00, 480 0xb4, 0x9c, 0x08, 0x3d, 0x02, 0xa2, 0x04, 0x00, 481 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 482 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 483 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 484 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 485 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 486 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 487 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 488 0x09, 0x0a, 0x0a, 0x04, 489 }, 490 .len = 84, 491 }, 492 .iv = { 493 .data = { 494 0xf4, 0xe7, 0x65, 0x24, 0x4f, 0x64, 0x07, 0xad, 495 0xf1, 0x3d, 0xc1, 0x38, 0x0f, 0x67, 0x3f, 0x37, 496 }, 497 }, 498 499 .ipsec_xform = { 500 .spi = 0x8765, 501 .options.esn = 0, 502 .options.udp_encap = 0, 503 .options.copy_dscp = 0, 504 .options.copy_flabel = 0, 505 .options.copy_df = 0, 506 .options.dec_ttl = 0, 507 .options.ecn = 0, 508 .options.stats = 0, 509 .options.tunnel_hdr_verify = 0, 510 .direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS, 511 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 512 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 513 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 514 .replay_win_sz = 0, 515 }, 516 517 .aead = false, 518 519 .xform = { 520 .chain.cipher = { 521 .next = NULL, 522 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 523 .cipher = { 524 .op = RTE_CRYPTO_CIPHER_OP_DECRYPT, 525 .algo = RTE_CRYPTO_CIPHER_AES_CBC, 526 .key.length = 16, 527 .iv.length = 16, 528 }, 529 }, 530 .chain.auth = { 531 .next = NULL, 532 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 533 .auth = { 534 .algo = RTE_CRYPTO_AUTH_NULL, 535 }, 536 }, 537 }, 538 }; 539 540 struct ipsec_test_data pkt_aes_256_gcm_v6 = { 541 .key = { 542 .data = { 543 0xde, 0x12, 0xbe, 0x56, 0xde, 0xad, 0xbe, 0xef, 544 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef, 545 0x12, 0x78, 0xbe, 0x34, 0x01, 0x02, 0x03, 0x07, 546 0xaa, 0xbb, 0xcc, 0xf1, 0x08, 0x07, 0x06, 0x05, 547 }, 548 }, 549 .input_text = { 550 .data = { 551 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x06, 0x38, 552 0x26, 0x07, 0xf8, 0xb0, 0x40, 0x0c, 0x0c, 0x03, 553 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 554 0x20, 0x01, 0x04, 0x70, 0xe5, 0xbf, 0xde, 0xad, 555 0x49, 0x57, 0x21, 0x74, 0xe8, 0x2c, 0x48, 0x87, 556 0x00, 0x19, 0xf9, 0xc7, 0x95, 0x63, 0x97, 0x9c, 557 0x03, 0xa0, 0x88, 0x31, 0x80, 0x12, 0xa7, 0xd6, 558 0x25, 0x83, 0x00, 0x00, 0x02, 0x04, 0x05, 0x6a, 559 0x01, 0x01, 0x04, 0x02, 0x01, 0x03, 0x03, 0x07, 560 }, 561 .len = 72, 562 }, 563 .output_text = { 564 .data = { 565 0x60, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x32, 0x40, 566 0x12, 0x34, 0x12, 0x21, 0x17, 0x45, 0x11, 0x34, 567 0x11, 0xfc, 0x89, 0x71, 0xdf, 0x22, 0x56, 0x78, 568 0x12, 0x34, 0x12, 0x21, 0x17, 0x45, 0x11, 0x34, 569 0x11, 0xfc, 0x89, 0x71, 0xdf, 0x22, 0x34, 0x56, 570 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 571 0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00, 572 0xe7, 0xdf, 0xc4, 0x7e, 0x21, 0xbd, 0xec, 0x1b, 573 0x74, 0x5a, 0xe4, 0x7e, 0x2e, 0x94, 0x21, 0x0a, 574 0x9b, 0x0e, 0x59, 0xbe, 0x06, 0x2a, 0xda, 0xb8, 575 0x6b, 0x48, 0x7f, 0x0b, 0x88, 0x3a, 0xa9, 0xfd, 576 0x3c, 0xfe, 0x9f, 0xb1, 0x8c, 0x67, 0xd2, 0xf8, 577 0xaf, 0xb5, 0xad, 0x16, 0xdb, 0xff, 0x8d, 0x50, 578 0xd3, 0x48, 0xf5, 0x6c, 0x3c, 0x0c, 0x27, 0x34, 579 0x2b, 0x65, 0xc8, 0xff, 0xeb, 0x5f, 0xb8, 0xff, 580 0x12, 0x00, 0x1c, 0x9f, 0xb7, 0x85, 0xdd, 0x7d, 581 0x40, 0x19, 0xcb, 0x18, 0xeb, 0x15, 0xc4, 0x88, 582 0xe1, 0xc2, 0x91, 0xc7, 0xb1, 0x65, 0xc3, 0x27, 583 0x16, 0x06, 0x8f, 0xf2, 584 }, 585 .len = 148, 586 }, 587 .salt = { 588 .data = { 589 0x11, 0x22, 0x33, 0x44 590 }, 591 .len = 4, 592 }, 593 594 .iv = { 595 .data = { 596 0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00, 597 }, 598 }, 599 600 .ipsec_xform = { 601 .spi = 52, 602 .options.esn = 0, 603 .options.udp_encap = 0, 604 .options.copy_dscp = 0, 605 .options.copy_flabel = 0, 606 .options.copy_df = 0, 607 .options.dec_ttl = 0, 608 .options.ecn = 0, 609 .options.stats = 0, 610 .options.tunnel_hdr_verify = 0, 611 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 612 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 613 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 614 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV6, 615 .replay_win_sz = 0, 616 }, 617 618 .aead = true, 619 620 .xform = { 621 .aead = { 622 .next = NULL, 623 .type = RTE_CRYPTO_SYM_XFORM_AEAD, 624 .aead = { 625 .op = RTE_CRYPTO_AEAD_OP_ENCRYPT, 626 .algo = RTE_CRYPTO_AEAD_AES_GCM, 627 .key.length = 32, 628 .iv.length = 12, 629 .iv.offset = IV_OFFSET, 630 .digest_length = 16, 631 .aad_length = 12, 632 }, 633 }, 634 }, 635 }; 636 637 struct ipsec_test_data pkt_aes_128_cbc_md5 = { 638 .key = { 639 .data = { 640 0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00, 641 0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0f, 0x00, 0x00, 642 }, 643 }, 644 .auth_key = { 645 .data = { 646 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 647 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04, 648 }, 649 }, 650 .input_text = { 651 .data = { 652 /* IP */ 653 0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00, 654 0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f, 655 0xc0, 0xa8, 0x01, 0x70, 656 657 /* UDP */ 658 0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00, 659 0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21, 660 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 661 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 662 }, 663 .len = 50, 664 }, 665 .output_text = { 666 .data = { 667 /* IP - outer header */ 668 0x45, 0x00, 0x00, 0x78, 0x00, 0x01, 0x00, 0x00, 669 0x40, 0x32, 0x52, 0x51, 0x14, 0x00, 0x00, 0x01, 670 0x14, 0x00, 0x00, 0x02, 671 672 /* ESP */ 673 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x01, 674 675 /* IV */ 676 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 677 0x20, 0xbf, 0xe8, 0x39, 0x00, 0x00, 0x00, 0x00, 678 679 /* Data */ 680 0x67, 0xb5, 0x46, 0x6e, 0x78, 0x17, 0xd3, 0x5a, 681 0xac, 0x62, 0x62, 0x62, 0xb0, 0x57, 0x9b, 0x09, 682 0x19, 0x4f, 0x06, 0x59, 0xc8, 0xb0, 0x30, 0x65, 683 0x1f, 0x45, 0x57, 0x41, 0x72, 0x17, 0x28, 0xe9, 684 0xad, 0x50, 0xbe, 0x44, 0x1d, 0x2d, 0x9a, 0xd0, 685 0x48, 0x75, 0x0d, 0x1c, 0x8d, 0x24, 0xa8, 0x6f, 686 0x6b, 0x24, 0xb6, 0x5d, 0x43, 0x1e, 0x55, 0xf0, 687 0xf7, 0x14, 0x1f, 0xf2, 0x61, 0xd4, 0xe0, 0x30, 688 0xff, 0xd7, 0x3f, 0xb4, 0x7c, 0x30, 0xdb, 0xeb, 689 0xf3, 0x95, 0xbf, 0xcd, 690 }, 691 .len = 120, 692 }, 693 .iv = { 694 .data = { 695 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 696 0x20, 0xbf, 0xe8, 0x39, 0x00, 0x00, 0x00, 0x00, 697 }, 698 }, 699 700 .ipsec_xform = { 701 .spi = 60, 702 .options.esn = 0, 703 .options.udp_encap = 0, 704 .options.copy_dscp = 0, 705 .options.copy_flabel = 0, 706 .options.copy_df = 0, 707 .options.dec_ttl = 0, 708 .options.ecn = 0, 709 .options.stats = 0, 710 .options.tunnel_hdr_verify = 0, 711 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 712 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 713 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 714 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 715 .replay_win_sz = 0, 716 }, 717 718 .aead = false, 719 720 .xform = { 721 .chain.cipher = { 722 .next = NULL, 723 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 724 .cipher = { 725 .op = RTE_CRYPTO_CIPHER_OP_ENCRYPT, 726 .algo = RTE_CRYPTO_CIPHER_AES_CBC, 727 .key.length = 16, 728 .iv.length = 16, 729 }, 730 }, 731 .chain.auth = { 732 .next = NULL, 733 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 734 .auth = { 735 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 736 .algo = RTE_CRYPTO_AUTH_MD5_HMAC, 737 .key.length = 16, 738 .digest_length = 12, 739 }, 740 }, 741 }, 742 }; 743 744 struct ipsec_test_data pkt_aes_128_cbc_hmac_sha256 = { 745 .key = { 746 .data = { 747 0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00, 748 0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0f, 0x00, 0x00, 749 }, 750 }, 751 .auth_key = { 752 .data = { 753 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 754 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 755 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04, 756 0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 757 }, 758 }, 759 .input_text = { 760 .data = { 761 /* IP */ 762 0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00, 763 0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f, 764 0xc0, 0xa8, 0x01, 0x70, 765 766 /* UDP */ 767 0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00, 768 0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21, 769 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 770 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 771 }, 772 .len = 50, 773 }, 774 .output_text = { 775 .data = { 776 /* IP - outer header */ 777 0x45, 0x00, 0x00, 0x7c, 0x00, 0x01, 0x00, 0x00, 778 0x40, 0x32, 0x52, 0x4d, 0x14, 0x00, 0x00, 0x01, 779 0x14, 0x00, 0x00, 0x02, 780 781 /* ESP */ 782 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 783 784 /* IV */ 785 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 786 0x20, 0xbf, 0xe8, 0x39, 0x00, 0x00, 0x00, 0x00, 787 788 /* Data */ 789 0x67, 0xb5, 0x46, 0x6e, 0x78, 0x17, 0xd3, 0x5a, 790 0xac, 0x62, 0x62, 0x62, 0xb0, 0x57, 0x9b, 0x09, 791 0x19, 0x4f, 0x06, 0x59, 0xc8, 0xb0, 0x30, 0x65, 792 0x1f, 0x45, 0x57, 0x41, 0x72, 0x17, 0x28, 0xe9, 793 0xad, 0x50, 0xbe, 0x44, 0x1d, 0x2d, 0x9a, 0xd0, 794 0x48, 0x75, 0x0d, 0x1c, 0x8d, 0x24, 0xa8, 0x6f, 795 0x6b, 0x24, 0xb6, 0x5d, 0x43, 0x1e, 0x55, 0xf0, 796 0xf7, 0x14, 0x1f, 0xf2, 0x61, 0xd4, 0xe0, 0x30, 797 0x16, 0xbe, 0x1b, 0x5c, 0xcc, 0xb7, 0x66, 0x1c, 798 0x47, 0xad, 0x07, 0x6c, 0xd5, 0xcb, 0xce, 0x6c, 799 }, 800 .len = 124, 801 }, 802 .iv = { 803 .data = { 804 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 805 0x20, 0xbf, 0xe8, 0x39, 0x00, 0x00, 0x00, 0x00, 806 }, 807 }, 808 809 .ipsec_xform = { 810 .spi = 52, 811 .options.esn = 0, 812 .options.udp_encap = 0, 813 .options.copy_dscp = 0, 814 .options.copy_flabel = 0, 815 .options.copy_df = 0, 816 .options.dec_ttl = 0, 817 .options.ecn = 0, 818 .options.stats = 0, 819 .options.tunnel_hdr_verify = 0, 820 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 821 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 822 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 823 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 824 .replay_win_sz = 0, 825 }, 826 827 .aead = false, 828 829 .xform = { 830 .chain.cipher = { 831 .next = NULL, 832 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 833 .cipher = { 834 .op = RTE_CRYPTO_CIPHER_OP_ENCRYPT, 835 .algo = RTE_CRYPTO_CIPHER_AES_CBC, 836 .key.length = 16, 837 .iv.length = 16, 838 }, 839 }, 840 .chain.auth = { 841 .next = NULL, 842 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 843 .auth = { 844 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 845 .algo = RTE_CRYPTO_AUTH_SHA256_HMAC, 846 .key.length = 32, 847 .digest_length = 16, 848 }, 849 }, 850 }, 851 }; 852 853 struct ipsec_test_data pkt_aes_128_cbc_hmac_sha384 = { 854 .key = { 855 .data = { 856 0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00, 857 0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0f, 0x00, 0x00, 858 }, 859 }, 860 .auth_key = { 861 .data = { 862 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04, 863 0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 864 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 865 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 866 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x34, 867 0x1a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 868 }, 869 }, 870 .input_text = { 871 .data = { 872 /* IP */ 873 0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00, 874 0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f, 875 0xc0, 0xa8, 0x01, 0x70, 876 877 /* UDP */ 878 0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00, 879 0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21, 880 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 881 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 882 }, 883 .len = 50, 884 }, 885 .output_text = { 886 .data = { 887 0x45, 0x00, 0x00, 0x84, 0x00, 0x01, 0x00, 0x00, 888 0x40, 0x32, 0x52, 0x45, 0x14, 0x00, 0x00, 0x01, 889 0x14, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x34, 890 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 891 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 892 0x00, 0x00, 0x00, 0x00, 0x44, 0x24, 0xb9, 0xd8, 893 0x0f, 0xbe, 0xa3, 0x3f, 0xc9, 0xc0, 0xa2, 0xcb, 894 0xaa, 0xda, 0x3f, 0xc6, 0x0e, 0x88, 0x75, 0x96, 895 0x25, 0x50, 0x07, 0x4d, 0x52, 0xf4, 0x75, 0xec, 896 0xd8, 0xcd, 0xe4, 0xcf, 0x85, 0x9a, 0xbc, 0x9e, 897 0x84, 0x0f, 0xbb, 0x83, 0x72, 0x0c, 0x7f, 0x58, 898 0x02, 0x46, 0xeb, 0x86, 0x6e, 0xd1, 0xcf, 0x05, 899 0x6a, 0xd1, 0xd2, 0xc6, 0xb5, 0x94, 0x09, 0x0a, 900 0x3e, 0xdf, 0x09, 0xfb, 0x0a, 0xb7, 0xb4, 0x97, 901 0x17, 0xf2, 0x20, 0xaf, 0xfa, 0x90, 0x92, 0x4d, 902 0xe4, 0x0e, 0xef, 0x5a, 0xe8, 0x43, 0x46, 0xa8, 903 0x5e, 0x3f, 0x52, 0x46, 904 }, 905 .len = 132, 906 }, 907 .iv = { 908 .data = { 909 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 910 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 911 }, 912 }, 913 914 .ipsec_xform = { 915 .spi = 52, 916 .options.esn = 0, 917 .options.udp_encap = 0, 918 .options.copy_dscp = 0, 919 .options.copy_flabel = 0, 920 .options.copy_df = 0, 921 .options.dec_ttl = 0, 922 .options.ecn = 0, 923 .options.stats = 0, 924 .options.tunnel_hdr_verify = 0, 925 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 926 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 927 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 928 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 929 .replay_win_sz = 0, 930 }, 931 932 .aead = false, 933 934 .xform = { 935 .chain.cipher = { 936 .next = NULL, 937 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 938 .cipher = { 939 .op = RTE_CRYPTO_CIPHER_OP_ENCRYPT, 940 .algo = RTE_CRYPTO_CIPHER_AES_CBC, 941 .key.length = 16, 942 .iv.length = 16, 943 }, 944 }, 945 .chain.auth = { 946 .next = NULL, 947 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 948 .auth = { 949 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 950 .algo = RTE_CRYPTO_AUTH_SHA384_HMAC, 951 .key.length = 48, 952 .digest_length = 24, 953 }, 954 }, 955 }, 956 }; 957 958 struct ipsec_test_data pkt_aes_128_cbc_hmac_sha512 = { 959 .key = { 960 .data = { 961 0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00, 962 0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0f, 0x00, 0x00, 963 }, 964 }, 965 .auth_key = { 966 .data = { 967 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 968 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 969 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04, 970 0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 971 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 972 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 973 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x34, 974 0x1a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 975 }, 976 }, 977 .input_text = { 978 .data = { 979 /* IP */ 980 0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00, 981 0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f, 982 0xc0, 0xa8, 0x01, 0x70, 983 984 /* UDP */ 985 0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00, 986 0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21, 987 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 988 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 989 }, 990 .len = 50, 991 }, 992 .output_text = { 993 .data = { 994 0x45, 0x00, 0x00, 0x8c, 0x00, 0x01, 0x00, 0x00, 995 0x40, 0x32, 0x52, 0x3d, 0x14, 0x00, 0x00, 0x01, 996 0x14, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x34, 997 0x00, 0x00, 0x00, 0x01, 0x42, 0x32, 0x76, 0x65, 998 0x45, 0x35, 0x24, 0x41, 0xf0, 0xc1, 0xb4, 0x40, 999 0x00, 0x00, 0x00, 0x00, 0xd0, 0x32, 0x23, 0xf7, 1000 0xcd, 0x3d, 0xdb, 0xd5, 0x70, 0x19, 0x1b, 0xf5, 1001 0x8f, 0xeb, 0x98, 0x3d, 0x41, 0x5c, 0x28, 0xdd, 1002 0xfd, 0xcc, 0xdd, 0xa2, 0xeb, 0x43, 0x4c, 0x13, 1003 0x2d, 0xa1, 0x98, 0x87, 0x92, 0x3a, 0x1f, 0x67, 1004 0x20, 0x8d, 0x9e, 0x8e, 0x51, 0x21, 0x4c, 0xa9, 1005 0xff, 0xad, 0xfb, 0x5d, 0x57, 0xa3, 0x16, 0x91, 1006 0xaa, 0x75, 0xc7, 0x28, 0x42, 0x4e, 0x8f, 0x8e, 1007 0x84, 0x37, 0x94, 0x09, 0x74, 0xfa, 0x70, 0x0d, 1008 0xd1, 0x37, 0xe2, 0x7c, 0x54, 0xdd, 0x2e, 0xb4, 1009 0xf4, 0x54, 0x4b, 0x12, 0xe0, 0xaf, 0x4a, 0x0a, 1010 0x0b, 0x52, 0x57, 0x9d, 0x36, 0xdc, 0xac, 0x02, 1011 0xfb, 0x55, 0x34, 0x05, 1012 }, 1013 .len = 140, 1014 }, 1015 .iv = { 1016 .data = { 1017 0x42, 0x32, 0x76, 0x65, 0x45, 0x35, 0x24, 0x41, 1018 0xf0, 0xc1, 0xb4, 0x40, 0x00, 0x00, 0x00, 0x00, 1019 }, 1020 }, 1021 1022 .ipsec_xform = { 1023 .spi = 52, 1024 .options.esn = 0, 1025 .options.udp_encap = 0, 1026 .options.copy_dscp = 0, 1027 .options.copy_flabel = 0, 1028 .options.copy_df = 0, 1029 .options.dec_ttl = 0, 1030 .options.ecn = 0, 1031 .options.stats = 0, 1032 .options.tunnel_hdr_verify = 0, 1033 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 1034 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 1035 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 1036 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 1037 .replay_win_sz = 0, 1038 }, 1039 1040 .aead = false, 1041 1042 .xform = { 1043 .chain.cipher = { 1044 .next = NULL, 1045 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 1046 .cipher = { 1047 .op = RTE_CRYPTO_CIPHER_OP_ENCRYPT, 1048 .algo = RTE_CRYPTO_CIPHER_AES_CBC, 1049 .key.length = 16, 1050 .iv.length = 16, 1051 }, 1052 }, 1053 .chain.auth = { 1054 .next = NULL, 1055 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 1056 .auth = { 1057 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 1058 .algo = RTE_CRYPTO_AUTH_SHA512_HMAC, 1059 .key.length = 64, 1060 .digest_length = 32, 1061 }, 1062 }, 1063 }, 1064 }; 1065 1066 struct ipsec_test_data pkt_3des_cbc_hmac_sha256 = { 1067 .key = { 1068 .data = { 1069 0xE4, 0x23, 0x33, 0x8A, 0x35, 0x64, 0x61, 0xE2, 1070 0x49, 0x03, 0xDD, 0xC6, 0xB8, 0xCA, 0x55, 0x7A, 1071 0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00, 1072 }, 1073 }, 1074 .auth_key = { 1075 .data = { 1076 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 1077 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 1078 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04, 1079 0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 1080 }, 1081 }, 1082 .input_text = { 1083 .data = { 1084 /* IP */ 1085 0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00, 1086 0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f, 1087 0xc0, 0xa8, 0x01, 0x70, 1088 1089 /* UDP */ 1090 0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00, 1091 0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21, 1092 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1093 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1094 }, 1095 .len = 50, 1096 }, 1097 .output_text = { 1098 .data = { 1099 /* IP - outer header */ 1100 0x45, 0x00, 0x00, 0x6c, 0x00, 0x01, 0x00, 0x00, 1101 0x40, 0x32, 0xf7, 0x0b, 0xc0, 0xa8, 0x01, 0x02, 1102 0xc0, 0xa8, 0x01, 0x01, 1103 1104 /* ESP */ 1105 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 1106 1107 /* IV */ 1108 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1109 1110 /* Data */ 1111 0x45, 0x2a, 0x7d, 0xe8, 0x96, 0x8b, 0x6e, 0x9f, 1112 0x8e, 0xa8, 0x87, 0xf6, 0x12, 0x41, 0x61, 0x6e, 1113 0x42, 0xae, 0xd4, 0x71, 0x2a, 0x7d, 0xde, 0x46, 1114 0x24, 0xa7, 0xc8, 0xd1, 0x8a, 0x78, 0x5f, 0xb8, 1115 0xb1, 0x43, 0xec, 0x3b, 0x95, 0x9c, 0x54, 0x7b, 1116 0x0c, 0x47, 0x80, 0xfb, 0xff, 0x18, 0x54, 0x87, 1117 0x16, 0x22, 0x88, 0x06, 0xcf, 0xfd, 0xf6, 0x01, 1118 0x02, 0x58, 0x94, 0x34, 0xc9, 0xbc, 0xea, 0xb8, 1119 0xc9, 0x75, 0xf6, 0xc4, 0x8b, 0x46, 0x69, 0x3c, 1120 }, 1121 .len = 108, 1122 }, 1123 .iv = { 1124 .data = { 1125 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1126 }, 1127 }, 1128 1129 .ipsec_xform = { 1130 .spi = 52, 1131 .options.esn = 0, 1132 .options.udp_encap = 0, 1133 .options.copy_dscp = 0, 1134 .options.copy_flabel = 0, 1135 .options.copy_df = 0, 1136 .options.dec_ttl = 0, 1137 .options.ecn = 0, 1138 .options.stats = 0, 1139 .options.tunnel_hdr_verify = 0, 1140 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 1141 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 1142 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 1143 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 1144 .replay_win_sz = 0, 1145 }, 1146 1147 .aead = false, 1148 1149 .xform = { 1150 .chain.cipher = { 1151 .next = NULL, 1152 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 1153 .cipher = { 1154 .op = RTE_CRYPTO_CIPHER_OP_ENCRYPT, 1155 .algo = RTE_CRYPTO_CIPHER_3DES_CBC, 1156 .key.length = 24, 1157 .iv.length = 8, 1158 }, 1159 }, 1160 .chain.auth = { 1161 .next = NULL, 1162 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 1163 .auth = { 1164 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 1165 .algo = RTE_CRYPTO_AUTH_SHA256_HMAC, 1166 .key.length = 32, 1167 .digest_length = 16, 1168 }, 1169 }, 1170 }, 1171 }; 1172 1173 struct ipsec_test_data pkt_3des_cbc_hmac_sha384 = { 1174 .key = { 1175 .data = { 1176 0xE4, 0x23, 0x33, 0x8A, 0x35, 0x64, 0x61, 0xE2, 1177 0x49, 0x03, 0xDD, 0xC6, 0xB8, 0xCA, 0x55, 0x7A, 1178 0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00, 1179 }, 1180 }, 1181 .auth_key = { 1182 .data = { 1183 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04, 1184 0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 1185 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 1186 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 1187 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x34, 1188 0x1a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 1189 }, 1190 }, 1191 .input_text = { 1192 .data = { 1193 /* IP */ 1194 0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00, 1195 0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f, 1196 0xc0, 0xa8, 0x01, 0x70, 1197 1198 /* UDP */ 1199 0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00, 1200 0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21, 1201 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1202 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1203 }, 1204 .len = 50, 1205 }, 1206 .output_text = { 1207 .data = { 1208 /* IP - outer header */ 1209 0x45, 0x00, 0x00, 0x74, 0x00, 0x01, 0x00, 0x00, 1210 0x40, 0x32, 0xf7, 0x03, 0xc0, 0xa8, 0x01, 0x02, 1211 0xc0, 0xa8, 0x01, 0x01, 1212 1213 /* ESP */ 1214 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 1215 1216 /* IV */ 1217 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1218 1219 /* Data */ 1220 0x45, 0x2a, 0x7d, 0xe8, 0x96, 0x8b, 0x6e, 0x9f, 1221 0x8e, 0xa8, 0x87, 0xf6, 0x12, 0x41, 0x61, 0x6e, 1222 0x42, 0xae, 0xd4, 0x71, 0x2a, 0x7d, 0xde, 0x46, 1223 0x24, 0xa7, 0xc8, 0xd1, 0x8a, 0x78, 0x5f, 0xb8, 1224 0xb1, 0x43, 0xec, 0x3b, 0x95, 0x9c, 0x54, 0x7b, 1225 0x0c, 0x47, 0x80, 0xfb, 0xff, 0x18, 0x54, 0x87, 1226 0x16, 0x22, 0x88, 0x06, 0xcf, 0xfd, 0xf6, 0x01, 1227 0x27, 0x34, 0x80, 0xa0, 0xc0, 0xd8, 0x97, 0xa4, 1228 0x67, 0xf5, 0x6b, 0xd4, 0x2c, 0x74, 0xc4, 0x51, 1229 0xed, 0x0d, 0xae, 0x23, 0xbb, 0xfa, 0xfb, 0x91, 1230 }, 1231 .len = 116, 1232 }, 1233 .iv = { 1234 .data = { 1235 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1236 }, 1237 }, 1238 1239 .ipsec_xform = { 1240 .spi = 52, 1241 .options.esn = 0, 1242 .options.udp_encap = 0, 1243 .options.copy_dscp = 0, 1244 .options.copy_flabel = 0, 1245 .options.copy_df = 0, 1246 .options.dec_ttl = 0, 1247 .options.ecn = 0, 1248 .options.stats = 0, 1249 .options.tunnel_hdr_verify = 0, 1250 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 1251 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 1252 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 1253 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 1254 .replay_win_sz = 0, 1255 }, 1256 1257 .aead = false, 1258 1259 .xform = { 1260 .chain.cipher = { 1261 .next = NULL, 1262 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 1263 .cipher = { 1264 .op = RTE_CRYPTO_CIPHER_OP_ENCRYPT, 1265 .algo = RTE_CRYPTO_CIPHER_3DES_CBC, 1266 .key.length = 24, 1267 .iv.length = 8, 1268 }, 1269 }, 1270 .chain.auth = { 1271 .next = NULL, 1272 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 1273 .auth = { 1274 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 1275 .algo = RTE_CRYPTO_AUTH_SHA384_HMAC, 1276 .key.length = 48, 1277 .digest_length = 24, 1278 }, 1279 }, 1280 }, 1281 }; 1282 1283 struct ipsec_test_data pkt_3des_cbc_hmac_sha512 = { 1284 .key = { 1285 .data = { 1286 0xE4, 0x23, 0x33, 0x8A, 0x35, 0x64, 0x61, 0xE2, 1287 0x49, 0x03, 0xDD, 0xC6, 0xB8, 0xCA, 0x55, 0x7A, 1288 0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00, 1289 }, 1290 }, 1291 .auth_key = { 1292 .data = { 1293 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 1294 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 1295 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04, 1296 0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 1297 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 1298 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 1299 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x34, 1300 0x1a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 1301 }, 1302 }, 1303 .input_text = { 1304 .data = { 1305 /* IP */ 1306 0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00, 1307 0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f, 1308 0xc0, 0xa8, 0x01, 0x70, 1309 1310 /* UDP */ 1311 0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00, 1312 0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21, 1313 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1314 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1315 }, 1316 .len = 50, 1317 }, 1318 .output_text = { 1319 .data = { 1320 /* IP - outer header */ 1321 0x45, 0x00, 0x00, 0x7c, 0x00, 0x01, 0x00, 0x00, 1322 0x40, 0x32, 0xf6, 0xfb, 0xc0, 0xa8, 0x01, 0x02, 1323 0xc0, 0xa8, 0x01, 0x01, 1324 1325 /* ESP */ 1326 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 1327 1328 /* IV */ 1329 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1330 1331 /* Data */ 1332 0x45, 0x2a, 0x7d, 0xe8, 0x96, 0x8b, 0x6e, 0x9f, 1333 0x8e, 0xa8, 0x87, 0xf6, 0x12, 0x41, 0x61, 0x6e, 1334 0x42, 0xae, 0xd4, 0x71, 0x2a, 0x7d, 0xde, 0x46, 1335 0x24, 0xa7, 0xc8, 0xd1, 0x8a, 0x78, 0x5f, 0xb8, 1336 0xb1, 0x43, 0xec, 0x3b, 0x95, 0x9c, 0x54, 0x7b, 1337 0x0c, 0x47, 0x80, 0xfb, 0xff, 0x18, 0x54, 0x87, 1338 0x16, 0x22, 0x88, 0x06, 0xcf, 0xfd, 0xf6, 0x01, 1339 0xe7, 0x32, 0x8b, 0x4c, 0x9f, 0xe4, 0x54, 0x0d, 1340 0x37, 0xec, 0xaa, 0x4b, 0x2a, 0x32, 0xfc, 0x4c, 1341 0x04, 0xeb, 0x26, 0x53, 0x24, 0x4c, 0xcc, 0xf7, 1342 0xeb, 0x24, 0x76, 0x42, 0xb4, 0x0c, 0xbc, 0xd4, 1343 }, 1344 .len = 124, 1345 }, 1346 .iv = { 1347 .data = { 1348 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1349 }, 1350 }, 1351 1352 .ipsec_xform = { 1353 .spi = 52, 1354 .options.esn = 0, 1355 .options.udp_encap = 0, 1356 .options.copy_dscp = 0, 1357 .options.copy_flabel = 0, 1358 .options.copy_df = 0, 1359 .options.dec_ttl = 0, 1360 .options.ecn = 0, 1361 .options.stats = 0, 1362 .options.tunnel_hdr_verify = 0, 1363 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 1364 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 1365 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 1366 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 1367 .replay_win_sz = 0, 1368 }, 1369 1370 .aead = false, 1371 1372 .xform = { 1373 .chain.cipher = { 1374 .next = NULL, 1375 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 1376 .cipher = { 1377 .op = RTE_CRYPTO_CIPHER_OP_ENCRYPT, 1378 .algo = RTE_CRYPTO_CIPHER_3DES_CBC, 1379 .key.length = 24, 1380 .iv.length = 8, 1381 }, 1382 }, 1383 .chain.auth = { 1384 .next = NULL, 1385 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 1386 .auth = { 1387 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 1388 .algo = RTE_CRYPTO_AUTH_SHA512_HMAC, 1389 .key.length = 64, 1390 .digest_length = 32, 1391 }, 1392 }, 1393 }, 1394 }; 1395 1396 struct ipsec_test_data pkt_des_cbc_hmac_sha256 = { 1397 .key = { 1398 .data = { 1399 0x49, 0x03, 0xDD, 0xC6, 0xB8, 0xCA, 0x55, 0x7A, 1400 }, 1401 }, 1402 .auth_key = { 1403 .data = { 1404 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 1405 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 1406 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04, 1407 0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 1408 }, 1409 }, 1410 .input_text = { 1411 .data = { 1412 /* IP */ 1413 0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00, 1414 0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f, 1415 0xc0, 0xa8, 0x01, 0x70, 1416 1417 /* UDP */ 1418 0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00, 1419 0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21, 1420 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1421 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1422 }, 1423 .len = 50, 1424 }, 1425 .output_text = { 1426 .data = { 1427 /* IP - outer header */ 1428 0x45, 0x00, 0x00, 0x6c, 0x00, 0x01, 0x00, 0x00, 1429 0x40, 0x32, 0xf7, 0x0b, 0xc0, 0xa8, 0x01, 0x02, 1430 0xc0, 0xa8, 0x01, 0x01, 1431 1432 /* ESP */ 1433 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 1434 1435 /* IV */ 1436 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1437 1438 /* Data */ 1439 0xdd, 0x13, 0x10, 0x3c, 0xe4, 0xb9, 0xce, 0x12, 1440 0x73, 0x4c, 0x97, 0x00, 0x28, 0xf7, 0xa4, 0x5e, 1441 0x02, 0x17, 0xe1, 0xc6, 0x09, 0x20, 0x90, 0xe3, 1442 0xb6, 0x9c, 0x25, 0x6d, 0x62, 0x06, 0x60, 0x90, 1443 0x91, 0x76, 0x94, 0xd8, 0x57, 0x56, 0xcb, 0xdd, 1444 0x62, 0x99, 0x99, 0x98, 0xd0, 0x3a, 0x99, 0x71, 1445 0x64, 0xcb, 0x79, 0x0c, 0x89, 0xa2, 0xf6, 0x12, 1446 0x1f, 0x09, 0xf8, 0x36, 0x8f, 0x5e, 0x31, 0x93, 1447 0x0a, 0xa0, 0x48, 0xee, 0x61, 0x21, 0xb5, 0x3d, 1448 }, 1449 .len = 108, 1450 }, 1451 .iv = { 1452 .data = { 1453 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1454 }, 1455 }, 1456 1457 .ipsec_xform = { 1458 .spi = 58, 1459 .options.esn = 0, 1460 .options.udp_encap = 0, 1461 .options.copy_dscp = 0, 1462 .options.copy_flabel = 0, 1463 .options.copy_df = 0, 1464 .options.dec_ttl = 0, 1465 .options.ecn = 0, 1466 .options.stats = 0, 1467 .options.tunnel_hdr_verify = 0, 1468 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 1469 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 1470 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 1471 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 1472 .replay_win_sz = 0, 1473 }, 1474 1475 .aead = false, 1476 1477 .xform = { 1478 .chain.cipher = { 1479 .next = NULL, 1480 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 1481 .cipher = { 1482 .op = RTE_CRYPTO_CIPHER_OP_ENCRYPT, 1483 .algo = RTE_CRYPTO_CIPHER_DES_CBC, 1484 .key.length = 8, 1485 .iv.length = 8, 1486 }, 1487 }, 1488 .chain.auth = { 1489 .next = NULL, 1490 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 1491 .auth = { 1492 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 1493 .algo = RTE_CRYPTO_AUTH_SHA256_HMAC, 1494 .key.length = 32, 1495 .digest_length = 16, 1496 }, 1497 }, 1498 }, 1499 }; 1500 1501 struct ipsec_test_data pkt_des_cbc_hmac_sha384 = { 1502 .key = { 1503 .data = { 1504 0xE4, 0x23, 0x33, 0x8A, 0x35, 0x64, 0x61, 0xE2, 1505 }, 1506 }, 1507 .auth_key = { 1508 .data = { 1509 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04, 1510 0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 1511 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 1512 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 1513 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x34, 1514 0x1a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 1515 }, 1516 }, 1517 .input_text = { 1518 .data = { 1519 /* IP */ 1520 0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00, 1521 0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f, 1522 0xc0, 0xa8, 0x01, 0x70, 1523 1524 /* UDP */ 1525 0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00, 1526 0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21, 1527 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1528 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1529 }, 1530 .len = 50, 1531 }, 1532 .output_text = { 1533 .data = { 1534 /* IP - outer header */ 1535 0x45, 0x00, 0x00, 0x74, 0x00, 0x01, 0x00, 0x00, 1536 0x40, 0x32, 0xf7, 0x03, 0xc0, 0xa8, 0x01, 0x02, 1537 0xc0, 0xa8, 0x01, 0x01, 1538 1539 /* ESP */ 1540 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 1541 1542 /* IV */ 1543 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1544 1545 /* Data */ 1546 0x80, 0x6a, 0xcd, 0x35, 0x95, 0x6c, 0x04, 0x66, 1547 0x4c, 0x04, 0xeb, 0xdb, 0x85, 0xc8, 0xf9, 0x56, 1548 0xe7, 0x01, 0x17, 0x97, 0xc4, 0xa5, 0xa4, 0xfe, 1549 0xa0, 0x81, 0x62, 0xda, 0xb2, 0xc0, 0xcf, 0x21, 1550 0x54, 0x0c, 0x38, 0xcf, 0xca, 0x41, 0x20, 0x5f, 1551 0xed, 0xc3, 0xe3, 0x59, 0xc4, 0x2f, 0x5e, 0xf7, 1552 0xdd, 0x16, 0x15, 0xd2, 0x00, 0xe8, 0x60, 0xc6, 1553 0xd8, 0x73, 0xf0, 0xb1, 0x89, 0xc4, 0xb2, 0x65, 1554 0xe2, 0xbf, 0xeb, 0xd8, 0x1d, 0x0a, 0xae, 0x2c, 1555 0x4d, 0xd3, 0x59, 0x30, 0x5e, 0x47, 0xb9, 0xcc, 1556 }, 1557 .len = 116, 1558 }, 1559 .iv = { 1560 .data = { 1561 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1562 }, 1563 }, 1564 1565 .ipsec_xform = { 1566 .spi = 58, 1567 .options.esn = 0, 1568 .options.udp_encap = 0, 1569 .options.copy_dscp = 0, 1570 .options.copy_flabel = 0, 1571 .options.copy_df = 0, 1572 .options.dec_ttl = 0, 1573 .options.ecn = 0, 1574 .options.stats = 0, 1575 .options.tunnel_hdr_verify = 0, 1576 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 1577 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 1578 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 1579 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 1580 .replay_win_sz = 0, 1581 }, 1582 1583 .aead = false, 1584 1585 .xform = { 1586 .chain.cipher = { 1587 .next = NULL, 1588 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 1589 .cipher = { 1590 .op = RTE_CRYPTO_CIPHER_OP_ENCRYPT, 1591 .algo = RTE_CRYPTO_CIPHER_DES_CBC, 1592 .key.length = 8, 1593 .iv.length = 8, 1594 }, 1595 }, 1596 .chain.auth = { 1597 .next = NULL, 1598 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 1599 .auth = { 1600 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 1601 .algo = RTE_CRYPTO_AUTH_SHA384_HMAC, 1602 .key.length = 48, 1603 .digest_length = 24, 1604 }, 1605 }, 1606 }, 1607 }; 1608 1609 struct ipsec_test_data pkt_des_cbc_hmac_sha512 = { 1610 .key = { 1611 .data = { 1612 0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00, 1613 }, 1614 }, 1615 .auth_key = { 1616 .data = { 1617 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 1618 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 1619 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04, 1620 0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 1621 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 1622 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02, 1623 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x34, 1624 0x1a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 1625 }, 1626 }, 1627 .input_text = { 1628 .data = { 1629 /* IP */ 1630 0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00, 1631 0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f, 1632 0xc0, 0xa8, 0x01, 0x70, 1633 1634 /* UDP */ 1635 0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00, 1636 0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21, 1637 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1638 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1639 }, 1640 .len = 50, 1641 }, 1642 .output_text = { 1643 .data = { 1644 /* IP - outer header */ 1645 0x45, 0x00, 0x00, 0x7c, 0x00, 0x01, 0x00, 0x00, 1646 0x40, 0x32, 0xf6, 0xfb, 0xc0, 0xa8, 0x01, 0x02, 1647 0xc0, 0xa8, 0x01, 0x01, 1648 1649 /* ESP */ 1650 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 1651 1652 /* IV */ 1653 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1654 1655 /* Data */ 1656 0x54, 0xe6, 0xf3, 0xd4, 0x25, 0x1c, 0x57, 0xd0, 1657 0x55, 0x7d, 0x52, 0xd3, 0xcb, 0x65, 0x57, 0x37, 1658 0xd9, 0x83, 0x37, 0x69, 0x95, 0xa7, 0x2b, 0xc2, 1659 0x65, 0x9e, 0xf6, 0xc8, 0xca, 0x6a, 0x9d, 0x51, 1660 0xde, 0xbe, 0x45, 0x58, 0x72, 0x58, 0x92, 0x49, 1661 0x15, 0x02, 0xae, 0x38, 0xb5, 0xf7, 0xcc, 0x6d, 1662 0xe5, 0x95, 0x21, 0xf1, 0xda, 0x69, 0x93, 0x76, 1663 0x6c, 0x85, 0x42, 0xef, 0xb1, 0xd4, 0xae, 0x32, 1664 0x88, 0x73, 0x1a, 0x59, 0xf9, 0xe5, 0x4b, 0x1c, 1665 0xc0, 0x32, 0x07, 0x78, 0xaf, 0x09, 0xfd, 0x15, 1666 0x3e, 0xad, 0x9d, 0x8a, 0xa5, 0x0f, 0xd4, 0x66, 1667 1668 }, 1669 .len = 124, 1670 }, 1671 .iv = { 1672 .data = { 1673 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1674 }, 1675 }, 1676 1677 .ipsec_xform = { 1678 .spi = 52, 1679 .options.esn = 0, 1680 .options.udp_encap = 0, 1681 .options.copy_dscp = 0, 1682 .options.copy_flabel = 0, 1683 .options.copy_df = 0, 1684 .options.dec_ttl = 0, 1685 .options.ecn = 0, 1686 .options.stats = 0, 1687 .options.tunnel_hdr_verify = 0, 1688 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 1689 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 1690 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 1691 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 1692 .replay_win_sz = 0, 1693 }, 1694 1695 .aead = false, 1696 1697 .xform = { 1698 .chain.cipher = { 1699 .next = NULL, 1700 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 1701 .cipher = { 1702 .op = RTE_CRYPTO_CIPHER_OP_ENCRYPT, 1703 .algo = RTE_CRYPTO_CIPHER_DES_CBC, 1704 .key.length = 8, 1705 .iv.length = 8, 1706 }, 1707 }, 1708 .chain.auth = { 1709 .next = NULL, 1710 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 1711 .auth = { 1712 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 1713 .algo = RTE_CRYPTO_AUTH_SHA512_HMAC, 1714 .key.length = 64, 1715 .digest_length = 32, 1716 }, 1717 }, 1718 }, 1719 }; 1720 1721 struct ipsec_test_data pkt_aes_128_cbc_hmac_sha256_v6 = { 1722 .key = { 1723 .data = { 1724 0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00, 1725 0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0f, 0x00, 0x00, 1726 }, 1727 }, 1728 .auth_key = { 1729 .data = { 1730 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 1731 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 1732 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04, 1733 0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 1734 }, 1735 }, 1736 .input_text = { 1737 .data = { 1738 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x06, 0x38, 1739 0x26, 0x07, 0xf8, 0xb0, 0x40, 0x0c, 0x0c, 0x03, 1740 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 1741 0x20, 0x01, 0x04, 0x70, 0xe5, 0xbf, 0xde, 0xad, 1742 0x49, 0x57, 0x21, 0x74, 0xe8, 0x2c, 0x48, 0x87, 1743 0x00, 0x19, 0xf9, 0xc7, 0x95, 0x63, 0x97, 0x9c, 1744 0x03, 0xa0, 0x88, 0x31, 0x80, 0x12, 0xa7, 0xd6, 1745 0x25, 0x83, 0x00, 0x00, 0x02, 0x04, 0x05, 0x6a, 1746 0x01, 0x01, 0x04, 0x02, 0x01, 0x03, 0x03, 0x07, 1747 }, 1748 .len = 72, 1749 }, 1750 .output_text = { 1751 .data = { 1752 0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0x32, 0x40, 1753 0x12, 0x34, 0x12, 0x21, 0x17, 0x45, 0x11, 0x34, 1754 0x11, 0xfc, 0x89, 0x71, 0xdf, 0x22, 0x56, 0x78, 1755 0x12, 0x34, 0x12, 0x21, 0x17, 0x45, 0x11, 0x34, 1756 0x11, 0xfc, 0x89, 0x71, 0xdf, 0x22, 0x34, 0x56, 1757 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 1758 0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00, 1759 0xf0, 0xc1, 0x05, 0x3c, 0x00, 0x00, 0x00, 0x00, 1760 0x1b, 0x1c, 0x98, 0x6e, 0x2a, 0xce, 0x61, 0xef, 1761 0xc1, 0xdd, 0x25, 0x96, 0x5c, 0xb1, 0xb0, 0x15, 1762 0x47, 0x25, 0xb7, 0x8b, 0x00, 0xb6, 0xbb, 0xe6, 1763 0x2e, 0x29, 0xcb, 0x4a, 0x94, 0x00, 0xf0, 0x73, 1764 0xdb, 0x14, 0x32, 0xd9, 0xa2, 0xdf, 0x22, 0x2f, 1765 0x52, 0x3e, 0x79, 0x77, 0xf3, 0x17, 0xaa, 0x40, 1766 0x1c, 0x57, 0x27, 0x12, 0x82, 0x44, 0x35, 0xb8, 1767 0x64, 0xe0, 0xaa, 0x5c, 0x10, 0xc7, 0x97, 0x35, 1768 0x9c, 0x6b, 0x1c, 0xf7, 0xe7, 0xbd, 0x83, 0x33, 1769 0x77, 0x48, 0x44, 0x7d, 0xa4, 0x13, 0x74, 0x3b, 1770 0x6a, 0x91, 0xd0, 0xd8, 0x7d, 0x41, 0x45, 0x23, 1771 0x5d, 0xc9, 0x2d, 0x08, 0x7a, 0xd8, 0x25, 0x8e, 1772 }, 1773 .len = 160, 1774 }, 1775 .iv = { 1776 .data = { 1777 0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00, 1778 0xf0, 0xc1, 0x05, 0x3c, 0x00, 0x00, 0x00, 0x00, 1779 }, 1780 }, 1781 1782 .ipsec_xform = { 1783 .spi = 52, 1784 .options.esn = 0, 1785 .options.udp_encap = 0, 1786 .options.copy_dscp = 0, 1787 .options.copy_flabel = 0, 1788 .options.copy_df = 0, 1789 .options.dec_ttl = 0, 1790 .options.ecn = 0, 1791 .options.stats = 0, 1792 .options.tunnel_hdr_verify = 0, 1793 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 1794 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 1795 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 1796 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV6, 1797 .replay_win_sz = 0, 1798 }, 1799 1800 .aead = false, 1801 1802 .xform = { 1803 .chain.cipher = { 1804 .next = NULL, 1805 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 1806 .cipher = { 1807 .op = RTE_CRYPTO_CIPHER_OP_ENCRYPT, 1808 .algo = RTE_CRYPTO_CIPHER_AES_CBC, 1809 .key.length = 16, 1810 .iv.length = 16, 1811 }, 1812 }, 1813 .chain.auth = { 1814 .next = NULL, 1815 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 1816 .auth = { 1817 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 1818 .algo = RTE_CRYPTO_AUTH_SHA256_HMAC, 1819 .key.length = 32, 1820 .digest_length = 16, 1821 }, 1822 }, 1823 }, 1824 }; 1825 1826 struct ipsec_test_data pkt_3des_cbc_hmac_sha256_v6 = { 1827 .key = { 1828 .data = { 1829 0xE4, 0x23, 0x33, 0x8A, 0x35, 0x64, 0x61, 0xE2, 1830 0x49, 0x03, 0xDD, 0xC6, 0xB8, 0xCA, 0x55, 0x7A, 1831 0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00, 1832 }, 1833 }, 1834 .auth_key = { 1835 .data = { 1836 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 1837 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 1838 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04, 1839 0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 1840 }, 1841 }, 1842 .input_text = { 1843 .data = { 1844 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x06, 0x38, 1845 0x26, 0x07, 0xf8, 0xb0, 0x40, 0x0c, 0x0c, 0x03, 1846 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 1847 0x20, 0x01, 0x04, 0x70, 0xe5, 0xbf, 0xde, 0xad, 1848 0x49, 0x57, 0x21, 0x74, 0xe8, 0x2c, 0x48, 0x87, 1849 0x00, 0x19, 0xf9, 0xc7, 0x95, 0x63, 0x97, 0x9c, 1850 0x03, 0xa0, 0x88, 0x31, 0x80, 0x12, 0xa7, 0xd6, 1851 0x25, 0x83, 0x00, 0x00, 0x02, 0x04, 0x05, 0x6a, 1852 0x01, 0x01, 0x04, 0x02, 0x01, 0x03, 0x03, 0x07, 1853 }, 1854 .len = 72, 1855 }, 1856 .output_text = { 1857 .data = { 1858 /* IP - outer header */ 1859 0x60, 0x00, 0x00, 0x00, 0x00, 0x70, 0x32, 0x40, 1860 0x0c, 0x03, 0x40, 0x0c, 0xf8, 0xb0, 0x26, 0x07, 1861 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1862 0xde, 0xad, 0xe5, 0xbf, 0x04, 0x70, 0x20, 0x01, 1863 0x48, 0x87, 0xe8, 0x2c, 0x21, 0x74, 0x49, 0x57, 1864 1865 /* ESP */ 1866 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01, 1867 1868 /* IV */ 1869 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1870 1871 /* Data */ 1872 0xf9, 0x99, 0x5b, 0x32, 0xfc, 0x7d, 0x0f, 0xcb, 1873 0x25, 0x0c, 0x9f, 0x11, 0xc5, 0xc7, 0x5e, 0x46, 1874 0x1d, 0x01, 0x2f, 0xd5, 0xb3, 0x6b, 0x02, 0x30, 1875 0x8a, 0x0c, 0x85, 0xa9, 0xca, 0x87, 0x6f, 0x17, 1876 0x3f, 0xb0, 0x03, 0x6c, 0xa5, 0x16, 0x1d, 0x1e, 1877 0x67, 0x5e, 0x70, 0x1a, 0x76, 0xe7, 0x12, 0x0e, 1878 0x19, 0x2b, 0x5d, 0xe3, 0x4c, 0x51, 0xb3, 0x3a, 1879 0x1b, 0x7e, 0xd0, 0x21, 0x76, 0x44, 0xcd, 0xb0, 1880 0xe8, 0x6d, 0xe3, 0x92, 0xad, 0xa1, 0xad, 0x26, 1881 0x9c, 0xec, 0x2a, 0x65, 0x51, 0xd4, 0xa4, 0xa9, 1882 0x97, 0x5b, 0x1e, 0xdd, 0x24, 0x47, 0x16, 0x3a, 1883 0x2d, 0xf3, 0x80, 0x50, 0xd5, 0xbd, 0x4a, 0x98, 1884 }, 1885 .len = 152, 1886 }, 1887 .iv = { 1888 .data = { 1889 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1890 }, 1891 }, 1892 1893 .ipsec_xform = { 1894 .spi = 52, 1895 .options.esn = 0, 1896 .options.udp_encap = 0, 1897 .options.copy_dscp = 0, 1898 .options.copy_flabel = 0, 1899 .options.copy_df = 0, 1900 .options.dec_ttl = 0, 1901 .options.ecn = 0, 1902 .options.stats = 0, 1903 .options.tunnel_hdr_verify = 0, 1904 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 1905 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 1906 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 1907 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV6, 1908 .replay_win_sz = 0, 1909 }, 1910 1911 .aead = false, 1912 1913 .xform = { 1914 .chain.cipher = { 1915 .next = NULL, 1916 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 1917 .cipher = { 1918 .op = RTE_CRYPTO_CIPHER_OP_ENCRYPT, 1919 .algo = RTE_CRYPTO_CIPHER_3DES_CBC, 1920 .key.length = 24, 1921 .iv.length = 8, 1922 }, 1923 }, 1924 .chain.auth = { 1925 .next = NULL, 1926 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 1927 .auth = { 1928 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 1929 .algo = RTE_CRYPTO_AUTH_SHA256_HMAC, 1930 .key.length = 32, 1931 .digest_length = 16, 1932 }, 1933 }, 1934 }, 1935 }; 1936 1937 struct ipsec_test_data pkt_des_cbc_hmac_sha256_v6 = { 1938 .key = { 1939 .data = { 1940 0x49, 0x03, 0xDD, 0xC6, 0xB8, 0xCA, 0x55, 0x7A, 1941 }, 1942 }, 1943 .auth_key = { 1944 .data = { 1945 0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00, 1946 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 1947 0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04, 1948 0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08, 1949 }, 1950 }, 1951 .input_text = { 1952 .data = { 1953 0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x06, 0x38, 1954 0x26, 0x07, 0xf8, 0xb0, 0x40, 0x0c, 0x0c, 0x03, 1955 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 1956 0x20, 0x01, 0x04, 0x70, 0xe5, 0xbf, 0xde, 0xad, 1957 0x49, 0x57, 0x21, 0x74, 0xe8, 0x2c, 0x48, 0x87, 1958 0x00, 0x19, 0xf9, 0xc7, 0x95, 0x63, 0x97, 0x9c, 1959 0x03, 0xa0, 0x88, 0x31, 0x80, 0x12, 0xa7, 0xd6, 1960 0x25, 0x83, 0x00, 0x00, 0x02, 0x04, 0x05, 0x6a, 1961 0x01, 0x01, 0x04, 0x02, 0x01, 0x03, 0x03, 0x07, 1962 }, 1963 .len = 72, 1964 }, 1965 .output_text = { 1966 .data = { 1967 /* IP - outer header */ 1968 0x60, 0x00, 0x00, 0x00, 0x00, 0x70, 0x32, 0x40, 1969 0x0c, 0x03, 0x40, 0x0c, 0xf8, 0xb0, 0x26, 0x07, 1970 0x00, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 1971 0xde, 0xad, 0xe5, 0xbf, 0x04, 0x70, 0x20, 0x01, 1972 0x48, 0x87, 0xe8, 0x2c, 0x21, 0x74, 0x49, 0x57, 1973 1974 /* ESP */ 1975 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x01, 1976 1977 /* IV */ 1978 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 1979 1980 /* Data */ 1981 0x6e, 0xf8, 0x1e, 0x91, 0x77, 0x7f, 0x61, 0x77, 1982 0xcd, 0x1a, 0x9d, 0xb4, 0x4c, 0xf8, 0x9a, 0x89, 1983 0xa7, 0x7a, 0xf8, 0x2a, 0x2e, 0x54, 0xa5, 0x0a, 1984 0xe3, 0x60, 0xb9, 0x21, 0xe1, 0xc6, 0x7f, 0x56, 1985 0x92, 0x76, 0xc3, 0x33, 0x95, 0x93, 0x0d, 0xb8, 1986 0xce, 0xb9, 0x0e, 0x32, 0xe6, 0xf1, 0x86, 0x81, 1987 0x73, 0xc9, 0x62, 0x2e, 0x5d, 0x9b, 0xb4, 0xd5, 1988 0x68, 0xda, 0xb1, 0x87, 0x78, 0x22, 0xc0, 0x9a, 1989 0x1c, 0xa1, 0x53, 0x1b, 0x67, 0xea, 0x6d, 0x58, 1990 0x1a, 0xd8, 0xc3, 0x95, 0xa0, 0xc3, 0x7a, 0xb6, 1991 0xfe, 0xb1, 0x49, 0xa8, 0xad, 0x1a, 0x21, 0xc2, 1992 0x01, 0x42, 0xa6, 0xf2, 0x3d, 0x7f, 0xb0, 0x6d, 1993 1994 }, 1995 .len = 152, 1996 }, 1997 .iv = { 1998 .data = { 1999 0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00, 2000 }, 2001 }, 2002 2003 .ipsec_xform = { 2004 .spi = 58, 2005 .options.esn = 0, 2006 .options.udp_encap = 0, 2007 .options.copy_dscp = 0, 2008 .options.copy_flabel = 0, 2009 .options.copy_df = 0, 2010 .options.dec_ttl = 0, 2011 .options.ecn = 0, 2012 .options.stats = 0, 2013 .options.tunnel_hdr_verify = 0, 2014 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 2015 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 2016 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 2017 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV6, 2018 .replay_win_sz = 0, 2019 }, 2020 2021 .aead = false, 2022 2023 .xform = { 2024 .chain.cipher = { 2025 .next = NULL, 2026 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 2027 .cipher = { 2028 .op = RTE_CRYPTO_CIPHER_OP_ENCRYPT, 2029 .algo = RTE_CRYPTO_CIPHER_DES_CBC, 2030 .key.length = 8, 2031 .iv.length = 8, 2032 }, 2033 }, 2034 .chain.auth = { 2035 .next = NULL, 2036 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 2037 .auth = { 2038 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 2039 .algo = RTE_CRYPTO_AUTH_SHA256_HMAC, 2040 .key.length = 32, 2041 .digest_length = 16, 2042 }, 2043 }, 2044 }, 2045 }; 2046 2047 struct ipsec_test_data pkt_aes_128_gcm_frag = { 2048 .key = { 2049 .data = { 2050 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef, 2051 0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef, 2052 }, 2053 }, 2054 .input_text = { 2055 .data = { 2056 0x45, 0x00, 0x00, 0x6e, 0x00, 0x01, 0x00, 0x17, 2057 0x40, 0x06, 0xed, 0x48, 0xc6, 0x12, 0x00, 0x00, 2058 0xc6, 0x12, 0x01, 0x05, 0x00, 0x14, 0x00, 0x50, 2059 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2060 0x50, 0x00, 0x00, 0x00, 0x55, 0x05, 0x00, 0x00, 2061 0x00, 0x01, 0x02, 0x03, 0xf2, 0xf6, 0xe9, 0x21, 2062 0xf9, 0xf2, 0xf6, 0xe9, 0x21, 0xf9, 0xf2, 0xf6, 2063 0xe9, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2064 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2065 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2066 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2067 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2068 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2069 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2070 }, 2071 .len = 110, 2072 }, 2073 .output_text = { 2074 .data = { 2075 0x45, 0x00, 0x00, 0xa4, 0x00, 0x01, 0x00, 0x00, 2076 0x40, 0x32, 0xf6, 0x0c, 0xc0, 0xa8, 0x01, 0x70, 2077 0xc0, 0xa8, 0x01, 0x5a, 0x00, 0x00, 0x00, 0x34, 2078 0x00, 0x00, 0x00, 0x01, 0x45, 0xad, 0xfe, 0x23, 2079 0x78, 0x56, 0x12, 0x00, 0x49, 0x26, 0xac, 0x4e, 2080 0x8d, 0xf3, 0x74, 0x26, 0x18, 0x3f, 0x65, 0x94, 2081 0x73, 0x2e, 0xe4, 0xcf, 0x84, 0x6d, 0x03, 0x8a, 2082 0x4c, 0xdd, 0x2d, 0xef, 0xcd, 0x9f, 0x84, 0x76, 2083 0x93, 0xe1, 0xee, 0x21, 0x92, 0x8b, 0xf7, 0x7a, 2084 0xb1, 0x6a, 0x7f, 0xd6, 0x10, 0x66, 0xdd, 0xa1, 2085 0x8b, 0x17, 0x56, 0x99, 0x9a, 0x40, 0xd0, 0x6b, 2086 0x2d, 0xe0, 0x55, 0x40, 0x2f, 0xb8, 0x38, 0xe3, 2087 0x08, 0x46, 0xe2, 0x69, 0xc9, 0xa1, 0x85, 0x9d, 2088 0x7b, 0xec, 0x33, 0x2a, 0x2d, 0x1d, 0x1f, 0x1a, 2089 0x9e, 0xf0, 0x1e, 0xc3, 0x33, 0x64, 0x35, 0x82, 2090 0xbb, 0xb5, 0x7a, 0x91, 0x2e, 0x8d, 0xd5, 0x5b, 2091 0x3a, 0xbe, 0x95, 0x94, 0xba, 0x40, 0x73, 0x4e, 2092 0xa4, 0x15, 0xe4, 0x4a, 0xf9, 0x14, 0x2c, 0x4f, 2093 0x63, 0x2e, 0x23, 0x6e, 0xeb, 0x06, 0xe7, 0x52, 2094 0xe1, 0xc7, 0x91, 0x7f, 0x19, 0xc0, 0x4a, 0xd2, 2095 0xd5, 0x3e, 0x84, 0xa8, 2096 }, 2097 .len = 164, 2098 }, 2099 .salt = { 2100 .data = { 2101 0xde, 0xad, 0xbe, 0xef, 2102 }, 2103 .len = 4, 2104 }, 2105 2106 .iv = { 2107 .data = { 2108 0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00, 2109 }, 2110 }, 2111 2112 .ipsec_xform = { 2113 .spi = 52, 2114 .options.esn = 0, 2115 .options.udp_encap = 0, 2116 .options.copy_dscp = 0, 2117 .options.copy_flabel = 0, 2118 .options.copy_df = 0, 2119 .options.dec_ttl = 0, 2120 .options.ecn = 0, 2121 .options.stats = 0, 2122 .options.tunnel_hdr_verify = 0, 2123 .options.ip_csum_enable = 0, 2124 .options.l4_csum_enable = 0, 2125 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 2126 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 2127 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 2128 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 2129 .replay_win_sz = 0, 2130 }, 2131 2132 .aead = true, 2133 2134 .xform = { 2135 .aead = { 2136 .next = NULL, 2137 .type = RTE_CRYPTO_SYM_XFORM_AEAD, 2138 .aead = { 2139 .op = RTE_CRYPTO_AEAD_OP_ENCRYPT, 2140 .algo = RTE_CRYPTO_AEAD_AES_GCM, 2141 .key.length = 16, 2142 .iv.length = 12, 2143 .iv.offset = IV_OFFSET, 2144 .digest_length = 16, 2145 .aad_length = 12, 2146 }, 2147 }, 2148 }, 2149 }; 2150 2151 struct ipsec_test_data pkt_null_aes_xcbc = { 2152 .auth_key = { 2153 .data = { 2154 0x61, 0x31, 0x62, 0x32, 0x63, 0x33, 0x64, 0x34, 2155 0x65, 0x35, 0x66, 0x36, 0x67, 0x37, 0x68, 0x38, 2156 }, 2157 }, 2158 .input_text = { 2159 .data = { 2160 /* IP */ 2161 0x45, 0x00, 0x00, 0x2f, 0x49, 0x37, 0x00, 0x00, 2162 0x40, 0x11, 0x22, 0x84, 0x0d, 0x00, 0x00, 0x02, 2163 0x02, 0x00, 0x00, 0x02, 0x08, 0x00, 0x08, 0x00, 2164 0x00, 0x1b, 0x6d, 0x99, 0x58, 0x58, 0x58, 0x58, 2165 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 2166 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 2167 }, 2168 .len = 47, 2169 }, 2170 .output_text = { 2171 .data = { 2172 /* IP */ 2173 0x45, 0x00, 0x00, 0x5c, 0x06, 0x00, 0x00, 0x00, 2174 0x40, 0x32, 0x13, 0x6c, 0x0a, 0x00, 0x6f, 0x02, 2175 0x0a, 0x00, 0xde, 0x02, 2176 2177 /* ESP */ 2178 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 2179 2180 /* IP */ 2181 0x45, 0x00, 0x00, 0x2f, 0x49, 0x37, 0x00, 0x00, 2182 0x40, 0x11, 0x22, 0x84, 0x0d, 0x00, 0x00, 0x02, 2183 0x02, 0x00, 0x00, 0x02, 0x08, 0x00, 0x08, 0x00, 2184 0x00, 0x1b, 0x6d, 0x99, 0x58, 0x58, 0x58, 0x58, 2185 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 2186 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 2187 2188 /* ESP trailer */ 2189 0x01, 0x02, 0x03, 0x03, 0x04, 2190 2191 /* ICV */ 2192 0xf1, 0x52, 0x64, 0xd1, 0x9b, 0x62, 0x24, 0xdd, 2193 0xcc, 0x14, 0xf5, 0xc1, 2194 }, 2195 .len = 92, 2196 }, 2197 .ipsec_xform = { 2198 .spi = 0x100, 2199 .options.esn = 0, 2200 .options.udp_encap = 0, 2201 .options.copy_dscp = 0, 2202 .options.copy_flabel = 0, 2203 .options.copy_df = 0, 2204 .options.dec_ttl = 0, 2205 .options.ecn = 0, 2206 .options.stats = 0, 2207 .options.tunnel_hdr_verify = 0, 2208 .options.ip_csum_enable = 0, 2209 .options.l4_csum_enable = 0, 2210 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 2211 .proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP, 2212 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 2213 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 2214 .replay_win_sz = 0, 2215 }, 2216 .aead = false, 2217 .xform = { 2218 .chain.cipher = { 2219 .next = NULL, 2220 .type = RTE_CRYPTO_SYM_XFORM_CIPHER, 2221 .cipher = { 2222 .op = RTE_CRYPTO_CIPHER_OP_ENCRYPT, 2223 .algo = RTE_CRYPTO_CIPHER_NULL, 2224 .key.length = 0, 2225 .iv.length = 0, 2226 }, 2227 }, 2228 .chain.auth = { 2229 .next = NULL, 2230 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 2231 .auth = { 2232 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 2233 .algo = RTE_CRYPTO_AUTH_AES_XCBC_MAC, 2234 .key.length = 16, 2235 .digest_length = 12, 2236 }, 2237 }, 2238 }, 2239 }; 2240 2241 struct ipsec_test_data pkt_ah_tunnel_sha256 = { 2242 .auth_key = { 2243 .data = { 2244 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 2245 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 2246 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 2247 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 2248 }, 2249 }, 2250 .input_text = { 2251 .data = { 2252 /* IP */ 2253 0x45, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 2254 0x40, 0x01, 0xac, 0x27, 0xc0, 0xa8, 0x6f, 0x02, 2255 0xc0, 0xa8, 0xde, 0x02, 2256 2257 /* ICMP */ 2258 0x08, 0x00, 0xfb, 0x37, 0x12, 0x34, 0x00, 0x00, 2259 0xba, 0xbe, 0x01, 0x23, 0x45, 0x67, 0xca, 0xfe, 2260 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2261 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2262 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 2263 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 2264 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 2265 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 2266 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2267 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 2268 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 2269 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 2270 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 2271 0x58, 0x59, 0x5a, 0x5b, 2272 }, 2273 .len = 128, 2274 }, 2275 .output_text = { 2276 .data = { 2277 /* IP outer header */ 2278 0x45, 0x00, 0x00, 0xb0, 0x00, 0x01, 0x00, 0x00, 2279 0x00, 0x33, 0x59, 0x16, 0x0a, 0x00, 0x6f, 0x02, 2280 0x0a, 0x00, 0xde, 0x02, 2281 2282 /* AH */ 2283 0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 2284 0x00, 0x00, 0x00, 0x01, 2285 0x59, 0xfd, 0xb4, 0xdb, 0x70, 0x57, 0x4f, 0x27, 2286 0x72, 0xfe, 0xc9, 0xdc, 0xb2, 0xf0, 0xab, 0xea, 2287 2288 /* Inner IP */ 2289 0x45, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 2290 0x40, 0x01, 0xac, 0x27, 0xc0, 0xa8, 0x6f, 0x02, 2291 0xc0, 0xa8, 0xde, 0x02, 2292 2293 /* ICMP */ 2294 0x08, 0x00, 0xfb, 0x37, 0x12, 0x34, 0x00, 0x00, 2295 0xba, 0xbe, 0x01, 0x23, 0x45, 0x67, 0xca, 0xfe, 2296 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2297 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2298 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 2299 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 2300 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 2301 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 2302 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2303 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 2304 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 2305 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 2306 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 2307 0x58, 0x59, 0x5a, 0x5b, 2308 }, 2309 .len = 176, 2310 }, 2311 2312 .ipsec_xform = { 2313 .spi = 0x7b, 2314 .options.esn = 0, 2315 .options.udp_encap = 0, 2316 .options.copy_dscp = 0, 2317 .options.copy_flabel = 0, 2318 .options.copy_df = 0, 2319 .options.dec_ttl = 0, 2320 .options.ecn = 0, 2321 .options.stats = 0, 2322 .options.tunnel_hdr_verify = 0, 2323 .options.ip_csum_enable = 0, 2324 .options.l4_csum_enable = 0, 2325 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 2326 .proto = RTE_SECURITY_IPSEC_SA_PROTO_AH, 2327 .mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL, 2328 .tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4, 2329 .replay_win_sz = 0, 2330 }, 2331 2332 .aead = false, 2333 .auth_only = true, 2334 2335 .xform = { 2336 .chain.auth = { 2337 .next = NULL, 2338 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 2339 .auth = { 2340 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 2341 .algo = RTE_CRYPTO_AUTH_SHA256_HMAC, 2342 .key.length = 32, 2343 .digest_length = 16, 2344 }, 2345 }, 2346 }, 2347 }; 2348 2349 struct ipsec_test_data pkt_ah_transport_sha256 = { 2350 .auth_key = { 2351 .data = { 2352 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 2353 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 2354 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 2355 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 2356 }, 2357 }, 2358 .input_text = { 2359 .data = { 2360 /* IP */ 2361 0x45, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 2362 0x40, 0x01, 0xac, 0x27, 0xc0, 0xa8, 0x6f, 0x02, 2363 0xc0, 0xa8, 0xde, 0x02, 2364 2365 /* ICMP */ 2366 0x08, 0x00, 0xfb, 0x37, 0x12, 0x34, 0x00, 0x00, 2367 0xba, 0xbe, 0x01, 0x23, 0x45, 0x67, 0xca, 0xfe, 2368 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2369 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2370 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 2371 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 2372 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 2373 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 2374 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2375 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 2376 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 2377 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 2378 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 2379 0x58, 0x59, 0x5a, 0x5b, 2380 }, 2381 .len = 128, 2382 }, 2383 .output_text = { 2384 .data = { 2385 /* IP outer header */ 2386 0x45, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00, 2387 0x40, 0x33, 0xab, 0xd9, 0xc0, 0xa8, 0x6f, 0x02, 2388 0xc0, 0xa8, 0xde, 0x02, 2389 2390 /* AH */ 2391 0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 2392 0x00, 0x00, 0x00, 0x01, 2393 0x6c, 0x2e, 0xf7, 0x1f, 0x7c, 0x70, 0x39, 0xa3, 2394 0x4a, 0x77, 0x01, 0x47, 0x9e, 0x45, 0x73, 0x51, 2395 2396 /* ICMP */ 2397 0x08, 0x00, 0xfb, 0x37, 0x12, 0x34, 0x00, 0x00, 2398 0xba, 0xbe, 0x01, 0x23, 0x45, 0x67, 0xca, 0xfe, 2399 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2400 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2401 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 2402 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 2403 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 2404 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 2405 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2406 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 2407 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 2408 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 2409 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 2410 0x58, 0x59, 0x5a, 0x5b, 2411 }, 2412 .len = 156, 2413 }, 2414 2415 .ipsec_xform = { 2416 .spi = 0x7b, 2417 .options.esn = 0, 2418 .options.udp_encap = 0, 2419 .options.copy_dscp = 0, 2420 .options.copy_flabel = 0, 2421 .options.copy_df = 0, 2422 .options.dec_ttl = 0, 2423 .options.ecn = 0, 2424 .options.stats = 0, 2425 .options.tunnel_hdr_verify = 0, 2426 .options.ip_csum_enable = 0, 2427 .options.l4_csum_enable = 0, 2428 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 2429 .proto = RTE_SECURITY_IPSEC_SA_PROTO_AH, 2430 .mode = RTE_SECURITY_IPSEC_SA_MODE_TRANSPORT, 2431 .replay_win_sz = 0, 2432 }, 2433 2434 .aead = false, 2435 .auth_only = true, 2436 2437 .xform = { 2438 .chain.auth = { 2439 .next = NULL, 2440 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 2441 .auth = { 2442 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 2443 .algo = RTE_CRYPTO_AUTH_SHA256_HMAC, 2444 .key.length = 32, 2445 .digest_length = 16, 2446 }, 2447 }, 2448 }, 2449 }; 2450 2451 struct ipsec_test_data pkt_ah_ipv4_aes_gmac_128 = { 2452 .auth_key = { 2453 .data = { 2454 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 2455 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 2456 }, 2457 }, 2458 .input_text = { 2459 .data = { 2460 /* IP */ 2461 0x45, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 2462 0x40, 0x01, 0xac, 0x27, 0xc0, 0xa8, 0x6f, 0x02, 2463 0xc0, 0xa8, 0xde, 0x02, 2464 2465 /* ICMP */ 2466 0x08, 0x00, 0xfb, 0x37, 0x12, 0x34, 0x00, 0x00, 2467 0xba, 0xbe, 0x01, 0x23, 0x45, 0x67, 0xca, 0xfe, 2468 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2469 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2470 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 2471 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 2472 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 2473 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 2474 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2475 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 2476 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 2477 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 2478 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 2479 0x58, 0x59, 0x5a, 0x5b, 2480 }, 2481 .len = 128, 2482 }, 2483 .output_text = { 2484 .data = { 2485 /* IP outer header */ 2486 0x45, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00, 2487 0x40, 0x33, 0xab, 0xd1, 0xc0, 0xa8, 0x6f, 0x02, 2488 0xc0, 0xa8, 0xde, 0x02, 2489 2490 /* AH */ 2491 0x01, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 2492 0x00, 0x00, 0x00, 0x01, 2493 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 2494 0xd6, 0x0e, 0xcc, 0x22, 0x31, 0x79, 0x59, 0x72, 2495 0x68, 0xc9, 0x58, 0xfb, 0x8b, 0xb0, 0xbb, 0xd5, 2496 2497 /* ICMP */ 2498 0x08, 0x00, 0xfb, 0x37, 0x12, 0x34, 0x00, 0x00, 2499 0xba, 0xbe, 0x01, 0x23, 0x45, 0x67, 0xca, 0xfe, 2500 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 2501 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 2502 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 2503 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 2504 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 2505 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 2506 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 2507 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 2508 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 2509 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 2510 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 2511 0x58, 0x59, 0x5a, 0x5b, 2512 }, 2513 .len = 164, 2514 }, 2515 .salt = { 2516 .data = { 2517 0xca, 0xfe, 0xba, 0xbe, 2518 }, 2519 .len = 4, 2520 }, 2521 2522 .iv = { 2523 .data = { 2524 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 2525 }, 2526 }, 2527 2528 .ipsec_xform = { 2529 .spi = 0x7b, 2530 .options.esn = 0, 2531 .options.udp_encap = 0, 2532 .options.copy_dscp = 0, 2533 .options.copy_flabel = 0, 2534 .options.copy_df = 0, 2535 .options.dec_ttl = 0, 2536 .options.ecn = 0, 2537 .options.stats = 0, 2538 .options.tunnel_hdr_verify = 0, 2539 .options.ip_csum_enable = 0, 2540 .options.l4_csum_enable = 0, 2541 .direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS, 2542 .proto = RTE_SECURITY_IPSEC_SA_PROTO_AH, 2543 .mode = RTE_SECURITY_IPSEC_SA_MODE_TRANSPORT, 2544 .replay_win_sz = 0, 2545 }, 2546 2547 .aead = false, 2548 .aes_gmac = true, 2549 .auth_only = true, 2550 2551 .xform = { 2552 .chain.auth = { 2553 .next = NULL, 2554 .type = RTE_CRYPTO_SYM_XFORM_AUTH, 2555 .auth = { 2556 .op = RTE_CRYPTO_AUTH_OP_GENERATE, 2557 .algo = RTE_CRYPTO_AUTH_AES_GMAC, 2558 .key.length = 16, 2559 .digest_length = 16, 2560 .iv.length = 12, 2561 .iv.offset = IV_OFFSET, 2562 }, 2563 }, 2564 }, 2565 }; 2566 2567 #endif /* TEST_CRYPTODEV_SECURITY_IPSEC_TEST_VECTORS_H_ */ 2568