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