xref: /dpdk/app/test/test_cryptodev_security_ipsec_test_vectors.h (revision 8f1d23ece06adff5eae9f1b4365bdbbd3abee2b2)
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 /* Known vectors for AES-CBC
329  * https://datatracker.ietf.org/doc/html/rfc3602#section-4
330  */
331 
332 struct ipsec_test_data pkt_aes_128_cbc_null = {
333 	.key = {
334 		.data = {
335 			0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
336 			0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
337 		},
338 	},
339 	.input_text = {
340 		.data = {
341 			/* IP - outer header */
342 			0x45, 0x00, 0x00, 0x8c, 0x00, 0x02, 0x00, 0x00,
343 			0x40, 0x32, 0x27, 0xbc, 0x00, 0x01, 0xa8, 0xc0,
344 			0x01, 0x01, 0xa8, 0xc0,
345 
346 			/* ESP */
347 			0x00, 0x00, 0x87, 0x65,	0x00, 0x00, 0x00, 0x02,
348 
349 			/* IV */
350 			0xf4, 0xe7, 0x65, 0x24,	0x4f, 0x64, 0x07, 0xad,
351 			0xf1, 0x3d, 0xc1, 0x38,	0x0f, 0x67, 0x3f, 0x37,
352 
353 			/* Data */
354 			0x77, 0x3b, 0x52, 0x41,	0xa4, 0xc4, 0x49, 0x22,
355 			0x5e, 0x4f, 0x3c, 0xe5, 0xed, 0x61, 0x1b, 0x0c,
356 			0x23, 0x7c, 0xa9, 0x6c, 0xf7, 0x4a, 0x93, 0x01,
357 			0x3c, 0x1b, 0x0e, 0xa1, 0xa0, 0xcf, 0x70, 0xf8,
358 			0xe4, 0xec, 0xae, 0xc7, 0x8a, 0xc5, 0x3a, 0xad,
359 			0x7a, 0x0f, 0x02, 0x2b, 0x85, 0x92, 0x43, 0xc6,
360 			0x47, 0x75, 0x2e, 0x94, 0xa8, 0x59, 0x35, 0x2b,
361 			0x8a, 0x4d, 0x4d, 0x2d, 0xec, 0xd1, 0x36, 0xe5,
362 			0xc1, 0x77, 0xf1, 0x32,	0xad, 0x3f, 0xbf, 0xb2,
363 			0x20, 0x1a, 0xc9, 0x90,	0x4c, 0x74, 0xee, 0x0a,
364 			0x10, 0x9e, 0x0c, 0xa1,	0xe4, 0xdf, 0xe9, 0xd5,
365 			0xa1, 0x00, 0xb8, 0x42,	0xf1, 0xc2, 0x2f, 0x0d,
366 		},
367 		.len = 140,
368 	},
369 	.output_text = {
370 		.data = {
371 			/* IP */
372 			0x45, 0x00, 0x00, 0x54, 0x09, 0x04, 0x00, 0x00,
373 			0x40, 0x01, 0xf9, 0x88, 0xc0, 0xa8, 0x7b, 0x03,
374 			0xc0, 0xa8, 0x7b, 0xc8,
375 
376 			/* ICMP */
377 			0x08, 0x00, 0x9f, 0x76,	0xa9, 0x0a, 0x01, 0x00,
378 			0xb4, 0x9c, 0x08, 0x3d,	0x02, 0xa2, 0x04, 0x00,
379 			0x08, 0x09, 0x0a, 0x0b,	0x0c, 0x0d, 0x0e, 0x0f,
380 			0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
381 			0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
382 			0x20, 0x21, 0x22, 0x23,	0x24, 0x25, 0x26, 0x27,
383 			0x28, 0x29, 0x2a, 0x2b,	0x2c, 0x2d, 0x2e, 0x2f,
384 			0x30, 0x31, 0x32, 0x33,	0x34, 0x35, 0x36, 0x37,
385 			0x01, 0x02, 0x03, 0x04,	0x05, 0x06, 0x07, 0x08,
386 			0x09, 0x0a, 0x0a, 0x04,
387 		},
388 		.len = 84,
389 	},
390 	.iv = {
391 		.data = {
392 			0xf4, 0xe7, 0x65, 0x24, 0x4f, 0x64, 0x07, 0xad,
393 			0xf1, 0x3d, 0xc1, 0x38, 0x0f, 0x67, 0x3f, 0x37,
394 		},
395 	},
396 
397 	.ipsec_xform = {
398 		.spi = 0x8765,
399 		.options.esn = 0,
400 		.options.udp_encap = 0,
401 		.options.copy_dscp = 0,
402 		.options.copy_flabel = 0,
403 		.options.copy_df = 0,
404 		.options.dec_ttl = 0,
405 		.options.ecn = 0,
406 		.options.stats = 0,
407 		.options.tunnel_hdr_verify = 0,
408 		.direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS,
409 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
410 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
411 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4,
412 		.replay_win_sz = 0,
413 	},
414 
415 	.aead = false,
416 
417 	.xform = {
418 		.chain.cipher = {
419 			.next = NULL,
420 			.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
421 			.cipher = {
422 				.op = RTE_CRYPTO_CIPHER_OP_DECRYPT,
423 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
424 				.key.length = 16,
425 				.iv.length = 16,
426 			},
427 		},
428 		.chain.auth = {
429 			.next = NULL,
430 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
431 			.auth = {
432 				.algo = RTE_CRYPTO_AUTH_NULL,
433 			},
434 		},
435 	},
436 };
437 
438 struct ipsec_test_data pkt_aes_256_gcm_v6 = {
439 	.key = {
440 		.data = {
441 			0xde, 0x12, 0xbe, 0x56, 0xde, 0xad, 0xbe, 0xef,
442 			0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef,
443 			0x12, 0x78, 0xbe, 0x34, 0x01, 0x02, 0x03, 0x07,
444 			0xaa, 0xbb, 0xcc, 0xf1, 0x08, 0x07, 0x06, 0x05,
445 		},
446 	},
447 	.input_text = {
448 		.data = {
449 			0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x06, 0x38,
450 			0x26, 0x07, 0xf8, 0xb0, 0x40, 0x0c, 0x0c, 0x03,
451 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a,
452 			0x20, 0x01, 0x04, 0x70, 0xe5, 0xbf, 0xde, 0xad,
453 			0x49, 0x57, 0x21, 0x74, 0xe8, 0x2c, 0x48, 0x87,
454 			0x00, 0x19, 0xf9, 0xc7, 0x95, 0x63, 0x97, 0x9c,
455 			0x03, 0xa0, 0x88, 0x31, 0x80, 0x12, 0xa7, 0xd6,
456 			0x25, 0x83, 0x00, 0x00, 0x02, 0x04, 0x05, 0x6a,
457 			0x01, 0x01, 0x04, 0x02, 0x01, 0x03, 0x03, 0x07,
458 		},
459 		.len = 72,
460 	},
461 	.output_text = {
462 		.data = {
463 			0x60, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x32, 0x40,
464 			0x12, 0x34, 0x12, 0x21, 0x17, 0x45, 0x11, 0x34,
465 			0x11, 0xfc, 0x89, 0x71, 0xdf, 0x22, 0x56, 0x78,
466 			0x12, 0x34, 0x12, 0x21, 0x17, 0x45, 0x11, 0x34,
467 			0x11, 0xfc, 0x89, 0x71, 0xdf, 0x22, 0x34, 0x56,
468 			0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01,
469 			0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00,
470 			0xe7, 0xdf, 0xc4, 0x7e, 0x21, 0xbd, 0xec, 0x1b,
471 			0x74, 0x5a, 0xe4, 0x7e, 0x2e, 0x94, 0x21, 0x0a,
472 			0x9b, 0x0e, 0x59, 0xbe, 0x06, 0x2a, 0xda, 0xb8,
473 			0x6b, 0x48, 0x7f, 0x0b, 0x88, 0x3a, 0xa9, 0xfd,
474 			0x3c, 0xfe, 0x9f, 0xb1, 0x8c, 0x67, 0xd2, 0xf8,
475 			0xaf, 0xb5, 0xad, 0x16, 0xdb, 0xff, 0x8d, 0x50,
476 			0xd3, 0x48, 0xf5, 0x6c, 0x3c, 0x0c, 0x27, 0x34,
477 			0x2b, 0x65, 0xc8, 0xff, 0xeb, 0x5f, 0xb8, 0xff,
478 			0x12, 0x00, 0x1c, 0x9f, 0xb7, 0x85, 0xdd, 0x7d,
479 			0x40, 0x19, 0xcb, 0x18, 0xeb, 0x15, 0xc4, 0x88,
480 			0xe1, 0xc2, 0x91, 0xc7, 0xb1, 0x65, 0xc3, 0x27,
481 			0x16, 0x06, 0x8f, 0xf2,
482 		},
483 		.len = 148,
484 	},
485 	.salt = {
486 		.data = {
487 			0x11, 0x22, 0x33, 0x44
488 		},
489 		.len = 4,
490 	},
491 
492 	.iv = {
493 		.data = {
494 			0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00,
495 		},
496 	},
497 
498 	.ipsec_xform = {
499 		.spi = 52,
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_EGRESS,
510 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
511 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
512 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV6,
513 		.replay_win_sz = 0,
514 	},
515 
516 	.aead = true,
517 
518 	.xform = {
519 		.aead = {
520 			.next = NULL,
521 			.type = RTE_CRYPTO_SYM_XFORM_AEAD,
522 			.aead = {
523 				.op = RTE_CRYPTO_AEAD_OP_ENCRYPT,
524 				.algo = RTE_CRYPTO_AEAD_AES_GCM,
525 				.key.length = 32,
526 				.iv.length = 12,
527 				.iv.offset = IV_OFFSET,
528 				.digest_length = 16,
529 				.aad_length = 12,
530 			},
531 		},
532 	},
533 };
534 
535 struct ipsec_test_data pkt_aes_128_cbc_hmac_sha256 = {
536 	.key = {
537 		.data = {
538 			0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00,
539 			0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0f, 0x00, 0x00,
540 		},
541 	},
542 	.auth_key = {
543 		.data = {
544 			0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00,
545 			0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
546 			0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04,
547 			0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08,
548 		},
549 	},
550 	.input_text = {
551 		.data = {
552 			/* IP */
553 			0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00,
554 			0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f,
555 			0xc0, 0xa8, 0x01, 0x70,
556 
557 			/* UDP */
558 			0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00,
559 			0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21,
560 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
561 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
562 		},
563 		.len = 50,
564 	},
565 	.output_text = {
566 		.data = {
567 			/* IP - outer header */
568 			0x45, 0x00, 0x00, 0x7c, 0x00, 0x01, 0x00, 0x00,
569 			0x40, 0x32, 0x52, 0x4d, 0x14, 0x00, 0x00, 0x01,
570 			0x14, 0x00, 0x00, 0x02,
571 
572 			/* ESP */
573 			0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01,
574 
575 			/* IV */
576 			0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00,
577 			0x20, 0xbf, 0xe8, 0x39, 0x00, 0x00, 0x00, 0x00,
578 
579 			/* Data */
580 			0x67, 0xb5, 0x46, 0x6e, 0x78, 0x17, 0xd3, 0x5a,
581 			0xac, 0x62, 0x62, 0x62, 0xb0, 0x57, 0x9b, 0x09,
582 			0x19, 0x4f, 0x06, 0x59, 0xc8, 0xb0, 0x30, 0x65,
583 			0x1f, 0x45, 0x57, 0x41, 0x72, 0x17, 0x28, 0xe9,
584 			0xad, 0x50, 0xbe, 0x44, 0x1d, 0x2d, 0x9a, 0xd0,
585 			0x48, 0x75, 0x0d, 0x1c, 0x8d, 0x24, 0xa8, 0x6f,
586 			0x6b, 0x24, 0xb6, 0x5d, 0x43, 0x1e, 0x55, 0xf0,
587 			0xf7, 0x14, 0x1f, 0xf2, 0x61, 0xd4, 0xe0, 0x30,
588 			0x16, 0xbe, 0x1b, 0x5c, 0xcc, 0xb7, 0x66, 0x1c,
589 			0x47, 0xad, 0x07, 0x6c, 0xd5, 0xcb, 0xce, 0x6c,
590 		},
591 		.len = 124,
592 	},
593 	.iv = {
594 		.data = {
595 			0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00,
596 			0x20, 0xbf, 0xe8, 0x39, 0x00, 0x00, 0x00, 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_IPV4,
615 		.replay_win_sz = 0,
616 	},
617 
618 	.aead = false,
619 
620 	.xform = {
621 		.chain.cipher = {
622 			.next = NULL,
623 			.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
624 			.cipher = {
625 				.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT,
626 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
627 				.key.length = 16,
628 				.iv.length = 16,
629 			},
630 		},
631 		.chain.auth = {
632 			.next = NULL,
633 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
634 			.auth = {
635 				.op = RTE_CRYPTO_AUTH_OP_GENERATE,
636 				.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
637 				.key.length = 32,
638 				.digest_length = 16,
639 			},
640 		},
641 	},
642 };
643 
644 struct ipsec_test_data pkt_aes_128_cbc_hmac_sha384 = {
645 	.key = {
646 		.data = {
647 			0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00,
648 			0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0f, 0x00, 0x00,
649 		},
650 	},
651 	.auth_key = {
652 		.data = {
653 			0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04,
654 			0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08,
655 			0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00,
656 			0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02,
657 			0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x34,
658 			0x1a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08,
659 		},
660 	},
661 	.input_text = {
662 		.data = {
663 			/* IP */
664 			0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00,
665 			0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f,
666 			0xc0, 0xa8, 0x01, 0x70,
667 
668 			/* UDP */
669 			0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00,
670 			0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21,
671 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
672 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
673 		},
674 		.len = 50,
675 	},
676 	.output_text = {
677 		.data = {
678 			0x45, 0x00, 0x00, 0x84, 0x00, 0x01, 0x00, 0x00,
679 			0x40, 0x32, 0x52, 0x45, 0x14, 0x00, 0x00, 0x01,
680 			0x14, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x34,
681 			0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
682 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
683 			0x00, 0x00, 0x00, 0x00, 0x44, 0x24, 0xb9, 0xd8,
684 			0x0f, 0xbe, 0xa3, 0x3f, 0xc9, 0xc0, 0xa2, 0xcb,
685 			0xaa, 0xda, 0x3f, 0xc6, 0x0e, 0x88, 0x75, 0x96,
686 			0x25, 0x50, 0x07, 0x4d, 0x52, 0xf4, 0x75, 0xec,
687 			0xd8, 0xcd, 0xe4, 0xcf, 0x85, 0x9a, 0xbc, 0x9e,
688 			0x84, 0x0f, 0xbb, 0x83, 0x72, 0x0c, 0x7f, 0x58,
689 			0x02, 0x46, 0xeb, 0x86, 0x6e, 0xd1, 0xcf, 0x05,
690 			0x6a, 0xd1, 0xd2, 0xc6, 0xb5, 0x94, 0x09, 0x0a,
691 			0x3e, 0xdf, 0x09, 0xfb, 0x0a, 0xb7, 0xb4, 0x97,
692 			0x17, 0xf2, 0x20, 0xaf, 0xfa, 0x90, 0x92, 0x4d,
693 			0xe4, 0x0e, 0xef, 0x5a, 0xe8, 0x43, 0x46, 0xa8,
694 			0x5e, 0x3f, 0x52, 0x46,
695 		},
696 		.len = 132,
697 	},
698 	.iv = {
699 		.data = {
700 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
701 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
702 		},
703 	},
704 
705 	.ipsec_xform = {
706 		.spi = 52,
707 		.options.esn = 0,
708 		.options.udp_encap = 0,
709 		.options.copy_dscp = 0,
710 		.options.copy_flabel = 0,
711 		.options.copy_df = 0,
712 		.options.dec_ttl = 0,
713 		.options.ecn = 0,
714 		.options.stats = 0,
715 		.options.tunnel_hdr_verify = 0,
716 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
717 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
718 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
719 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4,
720 		.replay_win_sz = 0,
721 	},
722 
723 	.aead = false,
724 
725 	.xform = {
726 		.chain.cipher = {
727 			.next = NULL,
728 			.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
729 			.cipher = {
730 				.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT,
731 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
732 				.key.length = 16,
733 				.iv.length = 16,
734 			},
735 		},
736 		.chain.auth = {
737 			.next = NULL,
738 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
739 			.auth = {
740 				.op = RTE_CRYPTO_AUTH_OP_GENERATE,
741 				.algo = RTE_CRYPTO_AUTH_SHA384_HMAC,
742 				.key.length = 48,
743 				.digest_length = 24,
744 			},
745 		},
746 	},
747 };
748 
749 struct ipsec_test_data pkt_aes_128_cbc_hmac_sha512 = {
750 	.key = {
751 		.data = {
752 			0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00,
753 			0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0f, 0x00, 0x00,
754 		},
755 	},
756 	.auth_key = {
757 		.data = {
758 			0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00,
759 			0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
760 			0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04,
761 			0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08,
762 			0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00,
763 			0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02,
764 			0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x34,
765 			0x1a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08,
766 		},
767 	},
768 	.input_text = {
769 		.data = {
770 			/* IP */
771 			0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00,
772 			0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f,
773 			0xc0, 0xa8, 0x01, 0x70,
774 
775 			/* UDP */
776 			0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00,
777 			0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21,
778 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
779 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
780 		},
781 		.len = 50,
782 	},
783 	.output_text = {
784 		.data = {
785 			0x45, 0x00, 0x00, 0x8c, 0x00, 0x01, 0x00, 0x00,
786 			0x40, 0x32, 0x52, 0x3d, 0x14, 0x00, 0x00, 0x01,
787 			0x14, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x34,
788 			0x00, 0x00, 0x00, 0x01, 0x42, 0x32, 0x76, 0x65,
789 			0x45, 0x35, 0x24, 0x41, 0xf0, 0xc1, 0xb4, 0x40,
790 			0x00, 0x00, 0x00, 0x00, 0xd0, 0x32, 0x23, 0xf7,
791 			0xcd, 0x3d, 0xdb, 0xd5, 0x70, 0x19, 0x1b, 0xf5,
792 			0x8f, 0xeb, 0x98, 0x3d, 0x41, 0x5c, 0x28, 0xdd,
793 			0xfd, 0xcc, 0xdd, 0xa2, 0xeb, 0x43, 0x4c, 0x13,
794 			0x2d, 0xa1, 0x98, 0x87, 0x92, 0x3a, 0x1f, 0x67,
795 			0x20, 0x8d, 0x9e, 0x8e, 0x51, 0x21, 0x4c, 0xa9,
796 			0xff, 0xad, 0xfb, 0x5d, 0x57, 0xa3, 0x16, 0x91,
797 			0xaa, 0x75, 0xc7, 0x28, 0x42, 0x4e, 0x8f, 0x8e,
798 			0x84, 0x37, 0x94, 0x09, 0x74, 0xfa, 0x70, 0x0d,
799 			0xd1, 0x37, 0xe2, 0x7c, 0x54, 0xdd, 0x2e, 0xb4,
800 			0xf4, 0x54, 0x4b, 0x12, 0xe0, 0xaf, 0x4a, 0x0a,
801 			0x0b, 0x52, 0x57, 0x9d, 0x36, 0xdc, 0xac, 0x02,
802 			0xfb, 0x55, 0x34, 0x05,
803 		},
804 		.len = 140,
805 	},
806 	.iv = {
807 		.data = {
808 			0x42, 0x32, 0x76, 0x65, 0x45, 0x35, 0x24, 0x41,
809 			0xf0, 0xc1, 0xb4, 0x40, 0x00, 0x00, 0x00, 0x00,
810 		},
811 	},
812 
813 	.ipsec_xform = {
814 		.spi = 52,
815 		.options.esn = 0,
816 		.options.udp_encap = 0,
817 		.options.copy_dscp = 0,
818 		.options.copy_flabel = 0,
819 		.options.copy_df = 0,
820 		.options.dec_ttl = 0,
821 		.options.ecn = 0,
822 		.options.stats = 0,
823 		.options.tunnel_hdr_verify = 0,
824 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
825 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
826 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
827 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4,
828 		.replay_win_sz = 0,
829 	},
830 
831 	.aead = false,
832 
833 	.xform = {
834 		.chain.cipher = {
835 			.next = NULL,
836 			.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
837 			.cipher = {
838 				.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT,
839 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
840 				.key.length = 16,
841 				.iv.length = 16,
842 			},
843 		},
844 		.chain.auth = {
845 			.next = NULL,
846 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
847 			.auth = {
848 				.op = RTE_CRYPTO_AUTH_OP_GENERATE,
849 				.algo = RTE_CRYPTO_AUTH_SHA512_HMAC,
850 				.key.length = 64,
851 				.digest_length = 32,
852 			},
853 		},
854 	},
855 };
856 
857 struct ipsec_test_data pkt_aes_128_cbc_hmac_sha256_v6 = {
858 	.key = {
859 		.data = {
860 			0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00,
861 			0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0f, 0x00, 0x00,
862 		},
863 	},
864 	.auth_key = {
865 		.data = {
866 			0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00,
867 			0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
868 			0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04,
869 			0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08,
870 		},
871 	},
872 	.input_text = {
873 		.data = {
874 			0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x06, 0x38,
875 			0x26, 0x07, 0xf8, 0xb0, 0x40, 0x0c, 0x0c, 0x03,
876 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a,
877 			0x20, 0x01, 0x04, 0x70, 0xe5, 0xbf, 0xde, 0xad,
878 			0x49, 0x57, 0x21, 0x74, 0xe8, 0x2c, 0x48, 0x87,
879 			0x00, 0x19, 0xf9, 0xc7, 0x95, 0x63, 0x97, 0x9c,
880 			0x03, 0xa0, 0x88, 0x31, 0x80, 0x12, 0xa7, 0xd6,
881 			0x25, 0x83, 0x00, 0x00, 0x02, 0x04, 0x05, 0x6a,
882 			0x01, 0x01, 0x04, 0x02, 0x01, 0x03, 0x03, 0x07,
883 		},
884 		.len = 72,
885 	},
886 	.output_text = {
887 		.data = {
888 			0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0x32, 0x40,
889 			0x12, 0x34, 0x12, 0x21, 0x17, 0x45, 0x11, 0x34,
890 			0x11, 0xfc, 0x89, 0x71, 0xdf, 0x22, 0x56, 0x78,
891 			0x12, 0x34, 0x12, 0x21, 0x17, 0x45, 0x11, 0x34,
892 			0x11, 0xfc, 0x89, 0x71, 0xdf, 0x22, 0x34, 0x56,
893 			0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01,
894 			0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00,
895 			0xf0, 0xc1, 0x05, 0x3c, 0x00, 0x00, 0x00, 0x00,
896 			0x1b, 0x1c, 0x98, 0x6e, 0x2a, 0xce, 0x61, 0xef,
897 			0xc1, 0xdd, 0x25, 0x96, 0x5c, 0xb1, 0xb0, 0x15,
898 			0x47, 0x25, 0xb7, 0x8b, 0x00, 0xb6, 0xbb, 0xe6,
899 			0x2e, 0x29, 0xcb, 0x4a, 0x94, 0x00, 0xf0, 0x73,
900 			0xdb, 0x14, 0x32, 0xd9, 0xa2, 0xdf, 0x22, 0x2f,
901 			0x52, 0x3e, 0x79, 0x77, 0xf3, 0x17, 0xaa, 0x40,
902 			0x1c, 0x57, 0x27, 0x12, 0x82, 0x44, 0x35, 0xb8,
903 			0x64, 0xe0, 0xaa, 0x5c, 0x10, 0xc7, 0x97, 0x35,
904 			0x9c, 0x6b, 0x1c, 0xf7, 0xe7, 0xbd, 0x83, 0x33,
905 			0x77, 0x48, 0x44, 0x7d, 0xa4, 0x13, 0x74, 0x3b,
906 			0x6a, 0x91, 0xd0, 0xd8, 0x7d, 0x41, 0x45, 0x23,
907 			0x5d, 0xc9, 0x2d, 0x08, 0x7a, 0xd8, 0x25, 0x8e,
908 		},
909 		.len = 160,
910 	},
911 	.iv = {
912 		.data = {
913 			0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00,
914 			0xf0, 0xc1, 0x05, 0x3c, 0x00, 0x00, 0x00, 0x00,
915 		},
916 	},
917 
918 	.ipsec_xform = {
919 		.spi = 52,
920 		.options.esn = 0,
921 		.options.udp_encap = 0,
922 		.options.copy_dscp = 0,
923 		.options.copy_flabel = 0,
924 		.options.copy_df = 0,
925 		.options.dec_ttl = 0,
926 		.options.ecn = 0,
927 		.options.stats = 0,
928 		.options.tunnel_hdr_verify = 0,
929 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
930 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
931 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
932 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV6,
933 		.replay_win_sz = 0,
934 	},
935 
936 	.aead = false,
937 
938 	.xform = {
939 		.chain.cipher = {
940 			.next = NULL,
941 			.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
942 			.cipher = {
943 				.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT,
944 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
945 				.key.length = 16,
946 				.iv.length = 16,
947 			},
948 		},
949 		.chain.auth = {
950 			.next = NULL,
951 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
952 			.auth = {
953 				.op = RTE_CRYPTO_AUTH_OP_GENERATE,
954 				.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
955 				.key.length = 32,
956 				.digest_length = 16,
957 			},
958 		},
959 	},
960 };
961 
962 struct ipsec_test_data pkt_aes_128_gcm_frag = {
963 	.key = {
964 		.data = {
965 			0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef,
966 			0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef,
967 		},
968 	},
969 	.input_text = {
970 		.data = {
971 			0x45, 0x00, 0x00, 0x6e, 0x00, 0x01, 0x00, 0x17,
972 			0x40, 0x06, 0xed, 0x48, 0xc6, 0x12, 0x00, 0x00,
973 			0xc6, 0x12, 0x01, 0x05, 0x00, 0x14, 0x00, 0x50,
974 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
975 			0x50, 0x00, 0x00, 0x00, 0x55, 0x05, 0x00, 0x00,
976 			0x00, 0x01, 0x02, 0x03, 0xf2, 0xf6, 0xe9, 0x21,
977 			0xf9, 0xf2, 0xf6, 0xe9, 0x21, 0xf9, 0xf2, 0xf6,
978 			0xe9, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
979 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
980 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
981 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
982 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
983 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
984 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
985 		},
986 		.len = 110,
987 	},
988 	.output_text = {
989 		.data = {
990 			0x45, 0x00, 0x00, 0xa4, 0x00, 0x01, 0x00, 0x00,
991 			0x40, 0x32, 0xf6, 0x0c, 0xc0, 0xa8, 0x01, 0x70,
992 			0xc0, 0xa8, 0x01, 0x5a, 0x00, 0x00, 0x00, 0x34,
993 			0x00, 0x00, 0x00, 0x01, 0x45, 0xad, 0xfe, 0x23,
994 			0x78, 0x56, 0x12, 0x00, 0x49, 0x26, 0xac, 0x4e,
995 			0x8d, 0xf3, 0x74, 0x26, 0x18, 0x3f, 0x65, 0x94,
996 			0x73, 0x2e, 0xe4, 0xcf, 0x84, 0x6d, 0x03, 0x8a,
997 			0x4c, 0xdd, 0x2d, 0xef, 0xcd, 0x9f, 0x84, 0x76,
998 			0x93, 0xe1, 0xee, 0x21, 0x92, 0x8b, 0xf7, 0x7a,
999 			0xb1, 0x6a, 0x7f, 0xd6, 0x10, 0x66, 0xdd, 0xa1,
1000 			0x8b, 0x17, 0x56, 0x99, 0x9a, 0x40, 0xd0, 0x6b,
1001 			0x2d, 0xe0, 0x55, 0x40, 0x2f, 0xb8, 0x38, 0xe3,
1002 			0x08, 0x46, 0xe2, 0x69, 0xc9, 0xa1, 0x85, 0x9d,
1003 			0x7b, 0xec, 0x33, 0x2a, 0x2d, 0x1d, 0x1f, 0x1a,
1004 			0x9e, 0xf0, 0x1e, 0xc3, 0x33, 0x64, 0x35, 0x82,
1005 			0xbb, 0xb5, 0x7a, 0x91, 0x2e, 0x8d, 0xd5, 0x5b,
1006 			0x3a, 0xbe, 0x95, 0x94, 0xba, 0x40, 0x73, 0x4e,
1007 			0xa4, 0x15, 0xe4, 0x4a, 0xf9, 0x14, 0x2c, 0x4f,
1008 			0x63, 0x2e, 0x23, 0x6e, 0xeb, 0x06, 0xe7, 0x52,
1009 			0xe1, 0xc7, 0x91, 0x7f, 0x19, 0xc0, 0x4a, 0xd2,
1010 			0xd5, 0x3e, 0x84, 0xa8,
1011 		},
1012 		.len = 164,
1013 	},
1014 	.salt = {
1015 		.data = {
1016 			0xde, 0xad, 0xbe, 0xef,
1017 		},
1018 		.len = 4,
1019 	},
1020 
1021 	.iv = {
1022 		.data = {
1023 			0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00,
1024 		},
1025 	},
1026 
1027 	.ipsec_xform = {
1028 		.spi = 52,
1029 		.options.esn = 0,
1030 		.options.udp_encap = 0,
1031 		.options.copy_dscp = 0,
1032 		.options.copy_flabel = 0,
1033 		.options.copy_df = 0,
1034 		.options.dec_ttl = 0,
1035 		.options.ecn = 0,
1036 		.options.stats = 0,
1037 		.options.tunnel_hdr_verify = 0,
1038 		.options.ip_csum_enable = 0,
1039 		.options.l4_csum_enable = 0,
1040 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
1041 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1042 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
1043 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4,
1044 		.replay_win_sz = 0,
1045 	},
1046 
1047 	.aead = true,
1048 
1049 	.xform = {
1050 		.aead = {
1051 			.next = NULL,
1052 			.type = RTE_CRYPTO_SYM_XFORM_AEAD,
1053 			.aead = {
1054 				.op = RTE_CRYPTO_AEAD_OP_ENCRYPT,
1055 				.algo = RTE_CRYPTO_AEAD_AES_GCM,
1056 				.key.length = 16,
1057 				.iv.length = 12,
1058 				.iv.offset = IV_OFFSET,
1059 				.digest_length = 16,
1060 				.aad_length = 12,
1061 			},
1062 		},
1063 	},
1064 };
1065 
1066 struct ipsec_test_data pkt_null_aes_xcbc = {
1067 	.auth_key = {
1068 		.data = {
1069 			0x61, 0x31, 0x62, 0x32, 0x63, 0x33, 0x64, 0x34,
1070 			0x65, 0x35, 0x66, 0x36, 0x67, 0x37, 0x68, 0x38,
1071 		},
1072 	},
1073 	.input_text = {
1074 		.data = {
1075 			/* IP */
1076 			0x45, 0x00, 0x00, 0x2f, 0x49, 0x37, 0x00, 0x00,
1077 			0x40, 0x11, 0x22, 0x84, 0x0d, 0x00, 0x00, 0x02,
1078 			0x02, 0x00, 0x00, 0x02, 0x08, 0x00, 0x08, 0x00,
1079 			0x00, 0x1b, 0x6d, 0x99, 0x58, 0x58, 0x58, 0x58,
1080 			0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
1081 			0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
1082 		},
1083 		.len = 47,
1084 	},
1085 	.output_text = {
1086 		.data = {
1087 			/* IP */
1088 			0x45, 0x00, 0x00, 0x5c, 0x06, 0x00, 0x00, 0x00,
1089 			0x40, 0x32, 0x13, 0x6c, 0x0a, 0x00, 0x6f, 0x02,
1090 			0x0a, 0x00, 0xde, 0x02,
1091 
1092 			/* ESP */
1093 			0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
1094 
1095 			/* IP */
1096 			0x45, 0x00, 0x00, 0x2f, 0x49, 0x37, 0x00, 0x00,
1097 			0x40, 0x11, 0x22, 0x84, 0x0d, 0x00, 0x00, 0x02,
1098 			0x02, 0x00, 0x00, 0x02, 0x08, 0x00, 0x08, 0x00,
1099 			0x00, 0x1b, 0x6d, 0x99, 0x58, 0x58, 0x58, 0x58,
1100 			0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
1101 			0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
1102 
1103 			/* ESP trailer */
1104 			0x01, 0x02, 0x03, 0x03, 0x04,
1105 
1106 			/* ICV */
1107 			0xf1, 0x52, 0x64, 0xd1, 0x9b, 0x62, 0x24, 0xdd,
1108 			0xcc, 0x14, 0xf5, 0xc1,
1109 		},
1110 		.len = 92,
1111 	},
1112 	.ipsec_xform = {
1113 		.spi = 0x100,
1114 		.options.esn = 0,
1115 		.options.udp_encap = 0,
1116 		.options.copy_dscp = 0,
1117 		.options.copy_flabel = 0,
1118 		.options.copy_df = 0,
1119 		.options.dec_ttl = 0,
1120 		.options.ecn = 0,
1121 		.options.stats = 0,
1122 		.options.tunnel_hdr_verify = 0,
1123 		.options.ip_csum_enable = 0,
1124 		.options.l4_csum_enable = 0,
1125 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
1126 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1127 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
1128 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4,
1129 		.replay_win_sz = 0,
1130 	},
1131 	.aead = false,
1132 	.xform = {
1133 		.chain.cipher = {
1134 			.next = NULL,
1135 			.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1136 			.cipher = {
1137 				.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT,
1138 				.algo = RTE_CRYPTO_CIPHER_NULL,
1139 				.key.length = 0,
1140 				.iv.length = 0,
1141 			},
1142 		},
1143 		.chain.auth = {
1144 			.next = NULL,
1145 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
1146 			.auth = {
1147 				.op = RTE_CRYPTO_AUTH_OP_GENERATE,
1148 				.algo = RTE_CRYPTO_AUTH_AES_XCBC_MAC,
1149 				.key.length = 16,
1150 				.digest_length = 12,
1151 			},
1152 		},
1153 	},
1154 };
1155 
1156 struct ipsec_test_data pkt_ah_tunnel_sha256 = {
1157 	.auth_key = {
1158 		.data = {
1159 			0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,
1160 			0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,
1161 			0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,
1162 			0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,
1163 		},
1164 	},
1165 	.input_text = {
1166 		.data = {
1167 			/* IP */
1168 			0x45, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
1169 			0x40, 0x01, 0xac, 0x27, 0xc0, 0xa8, 0x6f, 0x02,
1170 			0xc0, 0xa8, 0xde, 0x02,
1171 
1172 			/* ICMP */
1173 			0x08, 0x00, 0xfb, 0x37, 0x12, 0x34, 0x00, 0x00,
1174 			0xba, 0xbe, 0x01, 0x23, 0x45, 0x67, 0xca, 0xfe,
1175 			0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1176 			0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1177 			0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1178 			0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
1179 			0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
1180 			0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
1181 			0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1182 			0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
1183 			0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
1184 			0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
1185 			0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
1186 			0x58, 0x59, 0x5a, 0x5b,
1187 		},
1188 		.len = 128,
1189 	},
1190 	.output_text = {
1191 		.data = {
1192 			/* IP outer header */
1193 			0x45, 0x00, 0x00, 0xb0, 0x00, 0x01, 0x00, 0x00,
1194 			0x00, 0x33, 0x59, 0x16, 0x0a, 0x00, 0x6f, 0x02,
1195 			0x0a, 0x00, 0xde, 0x02,
1196 
1197 			/* AH */
1198 			0x04, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b,
1199 			0x00, 0x00, 0x00, 0x01,
1200 			0x59, 0xfd, 0xb4, 0xdb, 0x70, 0x57, 0x4f, 0x27,
1201 			0x72, 0xfe, 0xc9, 0xdc, 0xb2, 0xf0, 0xab, 0xea,
1202 
1203 			/* Inner IP */
1204 			0x45, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
1205 			0x40, 0x01, 0xac, 0x27, 0xc0, 0xa8, 0x6f, 0x02,
1206 			0xc0, 0xa8, 0xde, 0x02,
1207 
1208 			/* ICMP */
1209 			0x08, 0x00, 0xfb, 0x37, 0x12, 0x34, 0x00, 0x00,
1210 			0xba, 0xbe, 0x01, 0x23, 0x45, 0x67, 0xca, 0xfe,
1211 			0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1212 			0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1213 			0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1214 			0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
1215 			0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
1216 			0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
1217 			0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1218 			0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
1219 			0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
1220 			0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
1221 			0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
1222 			0x58, 0x59, 0x5a, 0x5b,
1223 		},
1224 		.len = 176,
1225 	},
1226 
1227 	.ipsec_xform = {
1228 		.spi = 0x7b,
1229 		.options.esn = 0,
1230 		.options.udp_encap = 0,
1231 		.options.copy_dscp = 0,
1232 		.options.copy_flabel = 0,
1233 		.options.copy_df = 0,
1234 		.options.dec_ttl = 0,
1235 		.options.ecn = 0,
1236 		.options.stats = 0,
1237 		.options.tunnel_hdr_verify = 0,
1238 		.options.ip_csum_enable = 0,
1239 		.options.l4_csum_enable = 0,
1240 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
1241 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_AH,
1242 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
1243 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4,
1244 		.replay_win_sz = 0,
1245 	},
1246 
1247 	.aead = false,
1248 	.auth_only = true,
1249 
1250 	.xform = {
1251 		.chain.auth = {
1252 			.next = NULL,
1253 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
1254 			.auth = {
1255 				.op = RTE_CRYPTO_AUTH_OP_GENERATE,
1256 				.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
1257 				.key.length = 32,
1258 				.digest_length = 16,
1259 			},
1260 		},
1261 	},
1262 };
1263 
1264 struct ipsec_test_data pkt_ah_transport_sha256 = {
1265 	.auth_key = {
1266 		.data = {
1267 			0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,
1268 			0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,
1269 			0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,
1270 			0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a,
1271 		},
1272 	},
1273 	.input_text = {
1274 		.data = {
1275 			/* IP */
1276 			0x45, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
1277 			0x40, 0x01, 0xac, 0x27, 0xc0, 0xa8, 0x6f, 0x02,
1278 			0xc0, 0xa8, 0xde, 0x02,
1279 
1280 			/* ICMP */
1281 			0x08, 0x00, 0xfb, 0x37, 0x12, 0x34, 0x00, 0x00,
1282 			0xba, 0xbe, 0x01, 0x23, 0x45, 0x67, 0xca, 0xfe,
1283 			0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1284 			0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1285 			0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1286 			0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
1287 			0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
1288 			0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
1289 			0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1290 			0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
1291 			0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
1292 			0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
1293 			0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
1294 			0x58, 0x59, 0x5a, 0x5b,
1295 		},
1296 		.len = 128,
1297 	},
1298 	.output_text = {
1299 		.data = {
1300 			/* IP outer header */
1301 			0x45, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x00,
1302 			0x40, 0x33, 0xab, 0xd9, 0xc0, 0xa8, 0x6f, 0x02,
1303 			0xc0, 0xa8, 0xde, 0x02,
1304 
1305 			/* AH */
1306 			0x01, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b,
1307 			0x00, 0x00, 0x00, 0x01,
1308 			0x6c, 0x2e, 0xf7, 0x1f, 0x7c, 0x70, 0x39, 0xa3,
1309 			0x4a, 0x77, 0x01, 0x47, 0x9e, 0x45, 0x73, 0x51,
1310 
1311 			/* ICMP */
1312 			0x08, 0x00, 0xfb, 0x37, 0x12, 0x34, 0x00, 0x00,
1313 			0xba, 0xbe, 0x01, 0x23, 0x45, 0x67, 0xca, 0xfe,
1314 			0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1315 			0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1316 			0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1317 			0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
1318 			0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
1319 			0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
1320 			0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1321 			0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
1322 			0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
1323 			0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
1324 			0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
1325 			0x58, 0x59, 0x5a, 0x5b,
1326 		},
1327 		.len = 156,
1328 	},
1329 
1330 	.ipsec_xform = {
1331 		.spi = 0x7b,
1332 		.options.esn = 0,
1333 		.options.udp_encap = 0,
1334 		.options.copy_dscp = 0,
1335 		.options.copy_flabel = 0,
1336 		.options.copy_df = 0,
1337 		.options.dec_ttl = 0,
1338 		.options.ecn = 0,
1339 		.options.stats = 0,
1340 		.options.tunnel_hdr_verify = 0,
1341 		.options.ip_csum_enable = 0,
1342 		.options.l4_csum_enable = 0,
1343 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
1344 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_AH,
1345 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TRANSPORT,
1346 		.replay_win_sz = 0,
1347 	},
1348 
1349 	.aead = false,
1350 	.auth_only = true,
1351 
1352 	.xform = {
1353 		.chain.auth = {
1354 			.next = NULL,
1355 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
1356 			.auth = {
1357 				.op = RTE_CRYPTO_AUTH_OP_GENERATE,
1358 				.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
1359 				.key.length = 32,
1360 				.digest_length = 16,
1361 			},
1362 		},
1363 	},
1364 };
1365 
1366 struct ipsec_test_data pkt_ah_ipv4_aes_gmac_128 = {
1367 	.auth_key = {
1368 		.data = {
1369 			0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
1370 			0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
1371 		},
1372 	},
1373 	.input_text = {
1374 		.data = {
1375 			/* IP */
1376 			0x45, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
1377 			0x40, 0x01, 0xac, 0x27, 0xc0, 0xa8, 0x6f, 0x02,
1378 			0xc0, 0xa8, 0xde, 0x02,
1379 
1380 			/* ICMP */
1381 			0x08, 0x00, 0xfb, 0x37, 0x12, 0x34, 0x00, 0x00,
1382 			0xba, 0xbe, 0x01, 0x23, 0x45, 0x67, 0xca, 0xfe,
1383 			0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1384 			0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1385 			0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1386 			0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
1387 			0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
1388 			0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
1389 			0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1390 			0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
1391 			0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
1392 			0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
1393 			0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
1394 			0x58, 0x59, 0x5a, 0x5b,
1395 		},
1396 		.len = 128,
1397 	},
1398 	.output_text = {
1399 		.data = {
1400 			/* IP outer header */
1401 			0x45, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x00,
1402 			0x40, 0x33, 0xab, 0xd1, 0xc0, 0xa8, 0x6f, 0x02,
1403 			0xc0, 0xa8, 0xde, 0x02,
1404 
1405 			/* AH */
1406 			0x01, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b,
1407 			0x00, 0x00, 0x00, 0x01,
1408 			0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1409 			0xd6, 0x0e, 0xcc, 0x22, 0x31, 0x79, 0x59, 0x72,
1410 			0x68, 0xc9, 0x58, 0xfb, 0x8b, 0xb0, 0xbb, 0xd5,
1411 
1412 			/* ICMP */
1413 			0x08, 0x00, 0xfb, 0x37, 0x12, 0x34, 0x00, 0x00,
1414 			0xba, 0xbe, 0x01, 0x23, 0x45, 0x67, 0xca, 0xfe,
1415 			0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
1416 			0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
1417 			0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
1418 			0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
1419 			0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
1420 			0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
1421 			0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
1422 			0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
1423 			0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
1424 			0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
1425 			0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
1426 			0x58, 0x59, 0x5a, 0x5b,
1427 		},
1428 		.len = 164,
1429 	},
1430 	.salt = {
1431 		.data = {
1432 			0xca, 0xfe, 0xba, 0xbe,
1433 		},
1434 		.len = 4,
1435 	},
1436 
1437 	.iv = {
1438 		.data = {
1439 			0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1440 		},
1441 	},
1442 
1443 	.ipsec_xform = {
1444 		.spi = 0x7b,
1445 		.options.esn = 0,
1446 		.options.udp_encap = 0,
1447 		.options.copy_dscp = 0,
1448 		.options.copy_flabel = 0,
1449 		.options.copy_df = 0,
1450 		.options.dec_ttl = 0,
1451 		.options.ecn = 0,
1452 		.options.stats = 0,
1453 		.options.tunnel_hdr_verify = 0,
1454 		.options.ip_csum_enable = 0,
1455 		.options.l4_csum_enable = 0,
1456 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
1457 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_AH,
1458 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TRANSPORT,
1459 		.replay_win_sz = 0,
1460 	},
1461 
1462 	.aead = false,
1463 	.aes_gmac = true,
1464 	.auth_only = true,
1465 
1466 	.xform = {
1467 		.chain.auth = {
1468 			.next = NULL,
1469 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
1470 			.auth = {
1471 				.op = RTE_CRYPTO_AUTH_OP_GENERATE,
1472 				.algo = RTE_CRYPTO_AUTH_AES_GMAC,
1473 				.key.length = 16,
1474 				.digest_length = 16,
1475 				.iv.length = 12,
1476 				.iv.offset = IV_OFFSET,
1477 			},
1478 		},
1479 	},
1480 };
1481 
1482 #endif /* TEST_CRYPTODEV_SECURITY_IPSEC_TEST_VECTORS_H_ */
1483