xref: /dpdk/app/test/test_cryptodev_security_ipsec_test_vectors.h (revision 7de104c59392a7ee8382f81e23b123281422f5c8)
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