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