xref: /dpdk/app/test/test_cryptodev_security_ipsec_test_vectors.h (revision 0dff3f26d6faad4e51f75e5245f0387ee9bb0c6d)
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 	},
106 
107 	.aead = true,
108 
109 	.xform = {
110 		.aead = {
111 			.next = NULL,
112 			.type = RTE_CRYPTO_SYM_XFORM_AEAD,
113 			.aead = {
114 				.op = RTE_CRYPTO_AEAD_OP_ENCRYPT,
115 				.algo = RTE_CRYPTO_AEAD_AES_GCM,
116 				.key.length = 16,
117 				.iv.length = 12,
118 				.iv.offset = IV_OFFSET,
119 				.digest_length = 16,
120 				.aad_length = 12,
121 			},
122 		},
123 	},
124 };
125 
126 struct ipsec_test_data pkt_aes_192_gcm = {
127 	.key = {
128 		.data = {
129 			0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c,
130 			0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08,
131 			0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c
132 		},
133 	},
134 	.input_text = {
135 		.data = {
136 			/* IP */
137 			0x45, 0x00, 0x00, 0x28, 0xa4, 0xad, 0x40, 0x00,
138 			0x40, 0x06, 0x78, 0x80, 0x0a, 0x01, 0x03, 0x8f,
139 			0x0a, 0x01, 0x06, 0x12,
140 
141 			/* TCP */
142 			0x80, 0x23, 0x06, 0xb8, 0xcb, 0x71, 0x26, 0x02,
143 			0xdd, 0x6b, 0xb0, 0x3e, 0x50, 0x10, 0x16, 0xd0,
144 			0x75, 0x67, 0x00, 0x01
145 		},
146 		.len = 40,
147 	},
148 	.output_text = {
149 		.data = {
150 			/* IP - outer header */
151 			0x45, 0x00, 0x00, 0x60, 0x69, 0x8f, 0x00, 0x00,
152 			0x80, 0x32, 0x4d, 0x89, 0xc0, 0xa8, 0x01, 0x02,
153 			0xc0, 0xa8, 0x01, 0x01,
154 
155 			/* ESP */
156 			0x00, 0x00, 0xa5, 0xf8, 0x00, 0x00, 0x00, 0x01,
157 
158 			/* IV */
159 			0xfa, 0xce, 0xdb, 0xad, 0xde, 0xca, 0xf8, 0x88,
160 
161 			/* Data */
162 			0xa5, 0xb1, 0xf8, 0x06, 0x60, 0x29, 0xae, 0xa4,
163 			0x0e, 0x59, 0x8b, 0x81, 0x22, 0xde, 0x02, 0x42,
164 			0x09, 0x38, 0xb3, 0xab, 0x33, 0xf8, 0x28, 0xe6,
165 			0x87, 0xb8, 0x85, 0x8b, 0x5b, 0xfb, 0xdb, 0xd0,
166 			0x31, 0x5b, 0x27, 0x45, 0x21, 0x4b, 0xcc, 0x77,
167 			0x82, 0xac, 0x91, 0x38, 0xf2, 0xbb, 0xbe, 0xe4,
168 			0xcf, 0x03, 0x36, 0x89, 0xdd, 0x40, 0xd3, 0x6e,
169 			0x54, 0x05, 0x22, 0x22,
170 		},
171 		.len = 96,
172 	},
173 	.salt = {
174 		.data = {
175 			0xca, 0xfe, 0xba, 0xbe
176 		},
177 		.len = 4,
178 	},
179 
180 	.iv = {
181 		.data = {
182 			0xfa, 0xce, 0xdb, 0xad, 0xde, 0xca, 0xf8, 0x88
183 		},
184 	},
185 
186 	.ipsec_xform = {
187 		.spi = 0xa5f8,
188 		.options.esn = 0,
189 		.options.udp_encap = 0,
190 		.options.copy_dscp = 0,
191 		.options.copy_flabel = 0,
192 		.options.copy_df = 0,
193 		.options.dec_ttl = 0,
194 		.options.ecn = 0,
195 		.options.stats = 0,
196 		.options.tunnel_hdr_verify = 0,
197 		.options.ip_csum_enable = 0,
198 		.options.l4_csum_enable = 0,
199 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
200 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
201 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
202 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4,
203 		.replay_win_sz = 0,
204 	},
205 
206 	.aead = true,
207 
208 	.xform = {
209 		.aead = {
210 			.next = NULL,
211 			.type = RTE_CRYPTO_SYM_XFORM_AEAD,
212 			.aead = {
213 				.op = RTE_CRYPTO_AEAD_OP_ENCRYPT,
214 				.algo = RTE_CRYPTO_AEAD_AES_GCM,
215 				.key.length = 24,
216 				.iv.length = 12,
217 				.iv.offset = IV_OFFSET,
218 				.digest_length = 16,
219 				.aad_length = 12,
220 			},
221 		},
222 	},
223 };
224 
225 struct ipsec_test_data pkt_aes_256_gcm = {
226 	.key = {
227 		.data = {
228 			0xab, 0xbc, 0xcd, 0xde, 0xf0, 0x01, 0x12, 0x23,
229 			0x34, 0x45, 0x56, 0x67, 0x78, 0x89, 0x9a, 0xab,
230 			0xab, 0xbc, 0xcd, 0xde, 0xf0, 0x01, 0x12, 0x23,
231 			0x34, 0x45, 0x56, 0x67, 0x78, 0x89, 0x9a, 0xab,
232 		},
233 	},
234 	.input_text = {
235 		.data = {
236 			/* IP */
237 			0x45, 0x00, 0x00, 0x30, 0x69, 0xa6, 0x40, 0x00,
238 			0x80, 0x06, 0x26, 0x90, 0xc0, 0xa8, 0x01, 0x02,
239 			0x93, 0x89, 0x15, 0x5e,
240 
241 			/* TCP */
242 			0x0a, 0x9e, 0x00, 0x8b, 0x2d, 0xc5, 0x7e, 0xe0,
243 			0x00, 0x00, 0x00, 0x00, 0x70, 0x02, 0x40, 0x00,
244 			0x20, 0xbf, 0x00, 0x00, 0x02, 0x04, 0x05, 0xb4,
245 			0x01, 0x01, 0x04, 0x02,
246 		},
247 		.len = 48,
248 	},
249 	.output_text = {
250 		.data = {
251 			/* IP - outer header */
252 			0x45, 0x00, 0x00, 0x68, 0x69, 0x8f, 0x00, 0x00,
253 			0x80, 0x32, 0x4d, 0x81, 0xc0, 0xa8, 0x01, 0x02,
254 			0xc0, 0xa8, 0x01, 0x01,
255 
256 			/* ESP */
257 			0x4a, 0x2c, 0xbf, 0xe3, 0x00, 0x00, 0x00, 0x01,
258 
259 			/* IV */
260 			0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
261 
262 			/* Data */
263 			0xff, 0x42, 0x5c, 0x9b, 0x72, 0x45, 0x99, 0xdf,
264 			0x7a, 0x3b, 0xcd, 0x51, 0x01, 0x94, 0xe0, 0x0d,
265 			0x6a, 0x78, 0x10, 0x7f, 0x1b, 0x0b, 0x1c, 0xbf,
266 			0x06, 0xef, 0xae, 0x9d, 0x65, 0xa5, 0xd7, 0x63,
267 			0x74, 0x8a, 0x63, 0x79, 0x85, 0x77, 0x1d, 0x34,
268 			0x7f, 0x05, 0x45, 0x65, 0x9f, 0x14, 0xe9, 0x9d,
269 			0xef, 0x84, 0x2d, 0x8b, 0x00, 0x14, 0x4a, 0x1f,
270 			0xec, 0x6a, 0xdf, 0x0c, 0x9a, 0x92, 0x7f, 0xee,
271 			0xa6, 0xc5, 0x11, 0x60,
272 		},
273 		.len = 104,
274 	},
275 	.salt = {
276 		.data = {
277 			0x11, 0x22, 0x33, 0x44
278 		},
279 		.len = 4,
280 	},
281 
282 	.iv = {
283 		.data = {
284 			0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
285 		},
286 	},
287 
288 	.ipsec_xform = {
289 		.spi = 0x4a2cbfe3,
290 		.options.esn = 0,
291 		.options.udp_encap = 0,
292 		.options.copy_dscp = 0,
293 		.options.copy_flabel = 0,
294 		.options.copy_df = 0,
295 		.options.dec_ttl = 0,
296 		.options.ecn = 0,
297 		.options.stats = 0,
298 		.options.tunnel_hdr_verify = 0,
299 		.options.ip_csum_enable = 0,
300 		.options.l4_csum_enable = 0,
301 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
302 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
303 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
304 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4,
305 		.replay_win_sz = 0,
306 	},
307 
308 	.aead = true,
309 
310 	.xform = {
311 		.aead = {
312 			.next = NULL,
313 			.type = RTE_CRYPTO_SYM_XFORM_AEAD,
314 			.aead = {
315 				.op = RTE_CRYPTO_AEAD_OP_ENCRYPT,
316 				.algo = RTE_CRYPTO_AEAD_AES_GCM,
317 				.key.length = 32,
318 				.iv.length = 12,
319 				.iv.offset = IV_OFFSET,
320 				.digest_length = 16,
321 				.aad_length = 12,
322 			},
323 		},
324 	},
325 };
326 
327 /* Known vectors for AES-CBC
328  * https://datatracker.ietf.org/doc/html/rfc3602#section-4
329  */
330 
331 struct ipsec_test_data pkt_aes_128_cbc_null = {
332 	.key = {
333 		.data = {
334 			0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
335 			0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef,
336 		},
337 	},
338 	.input_text = {
339 		.data = {
340 			/* IP - outer header */
341 			0x45, 0x00, 0x00, 0x8c, 0x00, 0x02, 0x00, 0x00,
342 			0x40, 0x32, 0x27, 0xbc, 0x00, 0x01, 0xa8, 0xc0,
343 			0x01, 0x01, 0xa8, 0xc0,
344 
345 			/* ESP */
346 			0x00, 0x00, 0x87, 0x65,	0x00, 0x00, 0x00, 0x02,
347 
348 			/* IV */
349 			0xf4, 0xe7, 0x65, 0x24,	0x4f, 0x64, 0x07, 0xad,
350 			0xf1, 0x3d, 0xc1, 0x38,	0x0f, 0x67, 0x3f, 0x37,
351 
352 			/* Data */
353 			0x77, 0x3b, 0x52, 0x41,	0xa4, 0xc4, 0x49, 0x22,
354 			0x5e, 0x4f, 0x3c, 0xe5, 0xed, 0x61, 0x1b, 0x0c,
355 			0x23, 0x7c, 0xa9, 0x6c, 0xf7, 0x4a, 0x93, 0x01,
356 			0x3c, 0x1b, 0x0e, 0xa1, 0xa0, 0xcf, 0x70, 0xf8,
357 			0xe4, 0xec, 0xae, 0xc7, 0x8a, 0xc5, 0x3a, 0xad,
358 			0x7a, 0x0f, 0x02, 0x2b, 0x85, 0x92, 0x43, 0xc6,
359 			0x47, 0x75, 0x2e, 0x94, 0xa8, 0x59, 0x35, 0x2b,
360 			0x8a, 0x4d, 0x4d, 0x2d, 0xec, 0xd1, 0x36, 0xe5,
361 			0xc1, 0x77, 0xf1, 0x32,	0xad, 0x3f, 0xbf, 0xb2,
362 			0x20, 0x1a, 0xc9, 0x90,	0x4c, 0x74, 0xee, 0x0a,
363 			0x10, 0x9e, 0x0c, 0xa1,	0xe4, 0xdf, 0xe9, 0xd5,
364 			0xa1, 0x00, 0xb8, 0x42,	0xf1, 0xc2, 0x2f, 0x0d,
365 		},
366 		.len = 140,
367 	},
368 	.output_text = {
369 		.data = {
370 			/* IP */
371 			0x45, 0x00, 0x00, 0x54, 0x09, 0x04, 0x00, 0x00,
372 			0x40, 0x01, 0xf9, 0x88, 0xc0, 0xa8, 0x7b, 0x03,
373 			0xc0, 0xa8, 0x7b, 0xc8,
374 
375 			/* ICMP */
376 			0x08, 0x00, 0x9f, 0x76,	0xa9, 0x0a, 0x01, 0x00,
377 			0xb4, 0x9c, 0x08, 0x3d,	0x02, 0xa2, 0x04, 0x00,
378 			0x08, 0x09, 0x0a, 0x0b,	0x0c, 0x0d, 0x0e, 0x0f,
379 			0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
380 			0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
381 			0x20, 0x21, 0x22, 0x23,	0x24, 0x25, 0x26, 0x27,
382 			0x28, 0x29, 0x2a, 0x2b,	0x2c, 0x2d, 0x2e, 0x2f,
383 			0x30, 0x31, 0x32, 0x33,	0x34, 0x35, 0x36, 0x37,
384 			0x01, 0x02, 0x03, 0x04,	0x05, 0x06, 0x07, 0x08,
385 			0x09, 0x0a, 0x0a, 0x04,
386 		},
387 		.len = 84,
388 	},
389 	.iv = {
390 		.data = {
391 			0xf4, 0xe7, 0x65, 0x24, 0x4f, 0x64, 0x07, 0xad,
392 			0xf1, 0x3d, 0xc1, 0x38, 0x0f, 0x67, 0x3f, 0x37,
393 		},
394 	},
395 
396 	.ipsec_xform = {
397 		.spi = 0x8765,
398 		.options.esn = 0,
399 		.options.udp_encap = 0,
400 		.options.copy_dscp = 0,
401 		.options.copy_flabel = 0,
402 		.options.copy_df = 0,
403 		.options.dec_ttl = 0,
404 		.options.ecn = 0,
405 		.options.stats = 0,
406 		.options.tunnel_hdr_verify = 0,
407 		.direction = RTE_SECURITY_IPSEC_SA_DIR_INGRESS,
408 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
409 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
410 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4,
411 		.replay_win_sz = 0,
412 	},
413 
414 	.aead = false,
415 
416 	.xform = {
417 		.chain.cipher = {
418 			.next = NULL,
419 			.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
420 			.cipher = {
421 				.op = RTE_CRYPTO_CIPHER_OP_DECRYPT,
422 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
423 				.key.length = 16,
424 				.iv.length = 16,
425 			},
426 		},
427 		.chain.auth = {
428 			.next = NULL,
429 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
430 			.auth = {
431 				.algo = RTE_CRYPTO_AUTH_NULL,
432 			},
433 		},
434 	},
435 };
436 
437 struct ipsec_test_data pkt_aes_256_gcm_v6 = {
438 	.key = {
439 		.data = {
440 			0xde, 0x12, 0xbe, 0x56, 0xde, 0xad, 0xbe, 0xef,
441 			0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef,
442 			0x12, 0x78, 0xbe, 0x34, 0x01, 0x02, 0x03, 0x07,
443 			0xaa, 0xbb, 0xcc, 0xf1, 0x08, 0x07, 0x06, 0x05,
444 		},
445 	},
446 	.input_text = {
447 		.data = {
448 			0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x06, 0x38,
449 			0x26, 0x07, 0xf8, 0xb0, 0x40, 0x0c, 0x0c, 0x03,
450 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a,
451 			0x20, 0x01, 0x04, 0x70, 0xe5, 0xbf, 0xde, 0xad,
452 			0x49, 0x57, 0x21, 0x74, 0xe8, 0x2c, 0x48, 0x87,
453 			0x00, 0x19, 0xf9, 0xc7, 0x95, 0x63, 0x97, 0x9c,
454 			0x03, 0xa0, 0x88, 0x31, 0x80, 0x12, 0xa7, 0xd6,
455 			0x25, 0x83, 0x00, 0x00, 0x02, 0x04, 0x05, 0x6a,
456 			0x01, 0x01, 0x04, 0x02, 0x01, 0x03, 0x03, 0x07,
457 		},
458 		.len = 72,
459 	},
460 	.output_text = {
461 		.data = {
462 			0x60, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x32, 0x40,
463 			0x12, 0x34, 0x12, 0x21, 0x17, 0x45, 0x11, 0x34,
464 			0x11, 0xfc, 0x89, 0x71, 0xdf, 0x22, 0x56, 0x78,
465 			0x12, 0x34, 0x12, 0x21, 0x17, 0x45, 0x11, 0x34,
466 			0x11, 0xfc, 0x89, 0x71, 0xdf, 0x22, 0x34, 0x56,
467 			0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01,
468 			0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00,
469 			0xe7, 0xdf, 0xc4, 0x7e, 0x21, 0xbd, 0xec, 0x1b,
470 			0x74, 0x5a, 0xe4, 0x7e, 0x2e, 0x94, 0x21, 0x0a,
471 			0x9b, 0x0e, 0x59, 0xbe, 0x06, 0x2a, 0xda, 0xb8,
472 			0x6b, 0x48, 0x7f, 0x0b, 0x88, 0x3a, 0xa9, 0xfd,
473 			0x3c, 0xfe, 0x9f, 0xb1, 0x8c, 0x67, 0xd2, 0xf8,
474 			0xaf, 0xb5, 0xad, 0x16, 0xdb, 0xff, 0x8d, 0x50,
475 			0xd3, 0x48, 0xf5, 0x6c, 0x3c, 0x0c, 0x27, 0x34,
476 			0x2b, 0x65, 0xc8, 0xff, 0xeb, 0x5f, 0xb8, 0xff,
477 			0x12, 0x00, 0x1c, 0x9f, 0xb7, 0x85, 0xdd, 0x7d,
478 			0x40, 0x19, 0xcb, 0x18, 0xeb, 0x15, 0xc4, 0x88,
479 			0xe1, 0xc2, 0x91, 0xc7, 0xb1, 0x65, 0xc3, 0x27,
480 			0x16, 0x06, 0x8f, 0xf2,
481 		},
482 		.len = 148,
483 	},
484 	.salt = {
485 		.data = {
486 			0x11, 0x22, 0x33, 0x44
487 		},
488 		.len = 4,
489 	},
490 
491 	.iv = {
492 		.data = {
493 			0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00,
494 		},
495 	},
496 
497 	.ipsec_xform = {
498 		.spi = 52,
499 		.options.esn = 0,
500 		.options.udp_encap = 0,
501 		.options.copy_dscp = 0,
502 		.options.copy_flabel = 0,
503 		.options.copy_df = 0,
504 		.options.dec_ttl = 0,
505 		.options.ecn = 0,
506 		.options.stats = 0,
507 		.options.tunnel_hdr_verify = 0,
508 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
509 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
510 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
511 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV6,
512 		.replay_win_sz = 0,
513 	},
514 
515 	.aead = true,
516 
517 	.xform = {
518 		.aead = {
519 			.next = NULL,
520 			.type = RTE_CRYPTO_SYM_XFORM_AEAD,
521 			.aead = {
522 				.op = RTE_CRYPTO_AEAD_OP_ENCRYPT,
523 				.algo = RTE_CRYPTO_AEAD_AES_GCM,
524 				.key.length = 32,
525 				.iv.length = 12,
526 				.iv.offset = IV_OFFSET,
527 				.digest_length = 16,
528 				.aad_length = 12,
529 			},
530 		},
531 	},
532 };
533 
534 struct ipsec_test_data pkt_aes_128_cbc_hmac_sha256 = {
535 	.key = {
536 		.data = {
537 			0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00,
538 			0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0f, 0x00, 0x00,
539 		},
540 	},
541 	.auth_key = {
542 		.data = {
543 			0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00,
544 			0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
545 			0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04,
546 			0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08,
547 		},
548 	},
549 	.input_text = {
550 		.data = {
551 			/* IP */
552 			0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00,
553 			0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f,
554 			0xc0, 0xa8, 0x01, 0x70,
555 
556 			/* UDP */
557 			0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00,
558 			0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21,
559 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
560 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
561 		},
562 		.len = 50,
563 	},
564 	.output_text = {
565 		.data = {
566 			/* IP - outer header */
567 			0x45, 0x00, 0x00, 0x7c, 0x00, 0x01, 0x00, 0x00,
568 			0x40, 0x32, 0x52, 0x4d, 0x14, 0x00, 0x00, 0x01,
569 			0x14, 0x00, 0x00, 0x02,
570 
571 			/* ESP */
572 			0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01,
573 
574 			/* IV */
575 			0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00,
576 			0x20, 0xbf, 0xe8, 0x39, 0x00, 0x00, 0x00, 0x00,
577 
578 			/* Data */
579 			0x67, 0xb5, 0x46, 0x6e, 0x78, 0x17, 0xd3, 0x5a,
580 			0xac, 0x62, 0x62, 0x62, 0xb0, 0x57, 0x9b, 0x09,
581 			0x19, 0x4f, 0x06, 0x59, 0xc8, 0xb0, 0x30, 0x65,
582 			0x1f, 0x45, 0x57, 0x41, 0x72, 0x17, 0x28, 0xe9,
583 			0xad, 0x50, 0xbe, 0x44, 0x1d, 0x2d, 0x9a, 0xd0,
584 			0x48, 0x75, 0x0d, 0x1c, 0x8d, 0x24, 0xa8, 0x6f,
585 			0x6b, 0x24, 0xb6, 0x5d, 0x43, 0x1e, 0x55, 0xf0,
586 			0xf7, 0x14, 0x1f, 0xf2, 0x61, 0xd4, 0xe0, 0x30,
587 			0x16, 0xbe, 0x1b, 0x5c, 0xcc, 0xb7, 0x66, 0x1c,
588 			0x47, 0xad, 0x07, 0x6c, 0xd5, 0xcb, 0xce, 0x6c,
589 		},
590 		.len = 124,
591 	},
592 	.iv = {
593 		.data = {
594 			0x34, 0x12, 0x67, 0x45, 0xff, 0xff, 0x00, 0x00,
595 			0x20, 0xbf, 0xe8, 0x39, 0x00, 0x00, 0x00, 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_IPV4,
614 		.replay_win_sz = 0,
615 	},
616 
617 	.aead = false,
618 
619 	.xform = {
620 		.chain.cipher = {
621 			.next = NULL,
622 			.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
623 			.cipher = {
624 				.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT,
625 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
626 				.key.length = 16,
627 				.iv.length = 16,
628 			},
629 		},
630 		.chain.auth = {
631 			.next = NULL,
632 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
633 			.auth = {
634 				.op = RTE_CRYPTO_AUTH_OP_GENERATE,
635 				.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
636 				.key.length = 32,
637 				.digest_length = 16,
638 			},
639 		},
640 	},
641 };
642 
643 struct ipsec_test_data pkt_aes_128_cbc_hmac_sha384 = {
644 	.key = {
645 		.data = {
646 			0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00,
647 			0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0f, 0x00, 0x00,
648 		},
649 	},
650 	.auth_key = {
651 		.data = {
652 			0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04,
653 			0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08,
654 			0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00,
655 			0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02,
656 			0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x34,
657 			0x1a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08,
658 		},
659 	},
660 	.input_text = {
661 		.data = {
662 			/* IP */
663 			0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00,
664 			0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f,
665 			0xc0, 0xa8, 0x01, 0x70,
666 
667 			/* UDP */
668 			0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00,
669 			0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21,
670 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
671 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
672 		},
673 		.len = 50,
674 	},
675 	.output_text = {
676 		.data = {
677 			0x45, 0x00, 0x00, 0x84, 0x00, 0x01, 0x00, 0x00,
678 			0x40, 0x32, 0x52, 0x45, 0x14, 0x00, 0x00, 0x01,
679 			0x14, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x34,
680 			0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00,
681 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
682 			0x00, 0x00, 0x00, 0x00, 0x44, 0x24, 0xb9, 0xd8,
683 			0x0f, 0xbe, 0xa3, 0x3f, 0xc9, 0xc0, 0xa2, 0xcb,
684 			0xaa, 0xda, 0x3f, 0xc6, 0x0e, 0x88, 0x75, 0x96,
685 			0x25, 0x50, 0x07, 0x4d, 0x52, 0xf4, 0x75, 0xec,
686 			0xd8, 0xcd, 0xe4, 0xcf, 0x85, 0x9a, 0xbc, 0x9e,
687 			0x84, 0x0f, 0xbb, 0x83, 0x72, 0x0c, 0x7f, 0x58,
688 			0x02, 0x46, 0xeb, 0x86, 0x6e, 0xd1, 0xcf, 0x05,
689 			0x6a, 0xd1, 0xd2, 0xc6, 0xb5, 0x94, 0x09, 0x0a,
690 			0x3e, 0xdf, 0x09, 0xfb, 0x0a, 0xb7, 0xb4, 0x97,
691 			0x17, 0xf2, 0x20, 0xaf, 0xfa, 0x90, 0x92, 0x4d,
692 			0xe4, 0x0e, 0xef, 0x5a, 0xe8, 0x43, 0x46, 0xa8,
693 			0x5e, 0x3f, 0x52, 0x46,
694 		},
695 		.len = 132,
696 	},
697 	.iv = {
698 		.data = {
699 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
700 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
701 		},
702 	},
703 
704 	.ipsec_xform = {
705 		.spi = 52,
706 		.options.esn = 0,
707 		.options.udp_encap = 0,
708 		.options.copy_dscp = 0,
709 		.options.copy_flabel = 0,
710 		.options.copy_df = 0,
711 		.options.dec_ttl = 0,
712 		.options.ecn = 0,
713 		.options.stats = 0,
714 		.options.tunnel_hdr_verify = 0,
715 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
716 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
717 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
718 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4,
719 		.replay_win_sz = 0,
720 	},
721 
722 	.aead = false,
723 
724 	.xform = {
725 		.chain.cipher = {
726 			.next = NULL,
727 			.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
728 			.cipher = {
729 				.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT,
730 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
731 				.key.length = 16,
732 				.iv.length = 16,
733 			},
734 		},
735 		.chain.auth = {
736 			.next = NULL,
737 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
738 			.auth = {
739 				.op = RTE_CRYPTO_AUTH_OP_GENERATE,
740 				.algo = RTE_CRYPTO_AUTH_SHA384_HMAC,
741 				.key.length = 48,
742 				.digest_length = 24,
743 			},
744 		},
745 	},
746 };
747 
748 struct ipsec_test_data pkt_aes_128_cbc_hmac_sha512 = {
749 	.key = {
750 		.data = {
751 			0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00,
752 			0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0f, 0x00, 0x00,
753 		},
754 	},
755 	.auth_key = {
756 		.data = {
757 			0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00,
758 			0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
759 			0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04,
760 			0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08,
761 			0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00,
762 			0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x02,
763 			0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x34,
764 			0x1a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08,
765 		},
766 	},
767 	.input_text = {
768 		.data = {
769 			/* IP */
770 			0x45, 0x00, 0x00, 0x32, 0x00, 0x01, 0x00, 0x00,
771 			0x1f, 0x11, 0x17, 0x8b, 0xc0, 0xa8, 0x01, 0x6f,
772 			0xc0, 0xa8, 0x01, 0x70,
773 
774 			/* UDP */
775 			0x00, 0x09, 0x00, 0x09, 0x00, 0x1e, 0x00, 0x00,
776 			0xbe, 0x9b, 0xe9, 0x55, 0x00, 0x00, 0x00, 0x21,
777 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
778 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
779 		},
780 		.len = 50,
781 	},
782 	.output_text = {
783 		.data = {
784 			0x45, 0x00, 0x00, 0x8c, 0x00, 0x01, 0x00, 0x00,
785 			0x40, 0x32, 0x52, 0x3d, 0x14, 0x00, 0x00, 0x01,
786 			0x14, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x34,
787 			0x00, 0x00, 0x00, 0x01, 0x42, 0x32, 0x76, 0x65,
788 			0x45, 0x35, 0x24, 0x41, 0xf0, 0xc1, 0xb4, 0x40,
789 			0x00, 0x00, 0x00, 0x00, 0xd0, 0x32, 0x23, 0xf7,
790 			0xcd, 0x3d, 0xdb, 0xd5, 0x70, 0x19, 0x1b, 0xf5,
791 			0x8f, 0xeb, 0x98, 0x3d, 0x41, 0x5c, 0x28, 0xdd,
792 			0xfd, 0xcc, 0xdd, 0xa2, 0xeb, 0x43, 0x4c, 0x13,
793 			0x2d, 0xa1, 0x98, 0x87, 0x92, 0x3a, 0x1f, 0x67,
794 			0x20, 0x8d, 0x9e, 0x8e, 0x51, 0x21, 0x4c, 0xa9,
795 			0xff, 0xad, 0xfb, 0x5d, 0x57, 0xa3, 0x16, 0x91,
796 			0xaa, 0x75, 0xc7, 0x28, 0x42, 0x4e, 0x8f, 0x8e,
797 			0x84, 0x37, 0x94, 0x09, 0x74, 0xfa, 0x70, 0x0d,
798 			0xd1, 0x37, 0xe2, 0x7c, 0x54, 0xdd, 0x2e, 0xb4,
799 			0xf4, 0x54, 0x4b, 0x12, 0xe0, 0xaf, 0x4a, 0x0a,
800 			0x0b, 0x52, 0x57, 0x9d, 0x36, 0xdc, 0xac, 0x02,
801 			0xfb, 0x55, 0x34, 0x05,
802 		},
803 		.len = 140,
804 	},
805 	.iv = {
806 		.data = {
807 			0x42, 0x32, 0x76, 0x65, 0x45, 0x35, 0x24, 0x41,
808 			0xf0, 0xc1, 0xb4, 0x40, 0x00, 0x00, 0x00, 0x00,
809 		},
810 	},
811 
812 	.ipsec_xform = {
813 		.spi = 52,
814 		.options.esn = 0,
815 		.options.udp_encap = 0,
816 		.options.copy_dscp = 0,
817 		.options.copy_flabel = 0,
818 		.options.copy_df = 0,
819 		.options.dec_ttl = 0,
820 		.options.ecn = 0,
821 		.options.stats = 0,
822 		.options.tunnel_hdr_verify = 0,
823 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
824 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
825 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
826 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4,
827 		.replay_win_sz = 0,
828 	},
829 
830 	.aead = false,
831 
832 	.xform = {
833 		.chain.cipher = {
834 			.next = NULL,
835 			.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
836 			.cipher = {
837 				.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT,
838 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
839 				.key.length = 16,
840 				.iv.length = 16,
841 			},
842 		},
843 		.chain.auth = {
844 			.next = NULL,
845 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
846 			.auth = {
847 				.op = RTE_CRYPTO_AUTH_OP_GENERATE,
848 				.algo = RTE_CRYPTO_AUTH_SHA512_HMAC,
849 				.key.length = 64,
850 				.digest_length = 32,
851 			},
852 		},
853 	},
854 };
855 
856 struct ipsec_test_data pkt_aes_128_cbc_hmac_sha256_v6 = {
857 	.key = {
858 		.data = {
859 			0x00, 0x04, 0x05, 0x01, 0x23, 0x00, 0x00, 0x00,
860 			0x00, 0x00, 0x0a, 0x0b, 0x0c, 0x0f, 0x00, 0x00,
861 		},
862 	},
863 	.auth_key = {
864 		.data = {
865 			0xde, 0x34, 0x56, 0x00, 0x00, 0x00, 0x78, 0x00,
866 			0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02,
867 			0x10, 0x30, 0x40, 0x00, 0x01, 0x02, 0x03, 0x04,
868 			0x0a, 0x0b, 0x0c, 0x0d, 0x05, 0x06, 0x07, 0x08,
869 		},
870 	},
871 	.input_text = {
872 		.data = {
873 			0x60, 0x00, 0x00, 0x00, 0x00, 0x20, 0x06, 0x38,
874 			0x26, 0x07, 0xf8, 0xb0, 0x40, 0x0c, 0x0c, 0x03,
875 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a,
876 			0x20, 0x01, 0x04, 0x70, 0xe5, 0xbf, 0xde, 0xad,
877 			0x49, 0x57, 0x21, 0x74, 0xe8, 0x2c, 0x48, 0x87,
878 			0x00, 0x19, 0xf9, 0xc7, 0x95, 0x63, 0x97, 0x9c,
879 			0x03, 0xa0, 0x88, 0x31, 0x80, 0x12, 0xa7, 0xd6,
880 			0x25, 0x83, 0x00, 0x00, 0x02, 0x04, 0x05, 0x6a,
881 			0x01, 0x01, 0x04, 0x02, 0x01, 0x03, 0x03, 0x07,
882 		},
883 		.len = 72,
884 	},
885 	.output_text = {
886 		.data = {
887 			0x60, 0x00, 0x00, 0x00, 0x00, 0x78, 0x32, 0x40,
888 			0x12, 0x34, 0x12, 0x21, 0x17, 0x45, 0x11, 0x34,
889 			0x11, 0xfc, 0x89, 0x71, 0xdf, 0x22, 0x56, 0x78,
890 			0x12, 0x34, 0x12, 0x21, 0x17, 0x45, 0x11, 0x34,
891 			0x11, 0xfc, 0x89, 0x71, 0xdf, 0x22, 0x34, 0x56,
892 			0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x01,
893 			0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00,
894 			0xf0, 0xc1, 0x05, 0x3c, 0x00, 0x00, 0x00, 0x00,
895 			0x1b, 0x1c, 0x98, 0x6e, 0x2a, 0xce, 0x61, 0xef,
896 			0xc1, 0xdd, 0x25, 0x96, 0x5c, 0xb1, 0xb0, 0x15,
897 			0x47, 0x25, 0xb7, 0x8b, 0x00, 0xb6, 0xbb, 0xe6,
898 			0x2e, 0x29, 0xcb, 0x4a, 0x94, 0x00, 0xf0, 0x73,
899 			0xdb, 0x14, 0x32, 0xd9, 0xa2, 0xdf, 0x22, 0x2f,
900 			0x52, 0x3e, 0x79, 0x77, 0xf3, 0x17, 0xaa, 0x40,
901 			0x1c, 0x57, 0x27, 0x12, 0x82, 0x44, 0x35, 0xb8,
902 			0x64, 0xe0, 0xaa, 0x5c, 0x10, 0xc7, 0x97, 0x35,
903 			0x9c, 0x6b, 0x1c, 0xf7, 0xe7, 0xbd, 0x83, 0x33,
904 			0x77, 0x48, 0x44, 0x7d, 0xa4, 0x13, 0x74, 0x3b,
905 			0x6a, 0x91, 0xd0, 0xd8, 0x7d, 0x41, 0x45, 0x23,
906 			0x5d, 0xc9, 0x2d, 0x08, 0x7a, 0xd8, 0x25, 0x8e,
907 		},
908 		.len = 160,
909 	},
910 	.iv = {
911 		.data = {
912 			0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00,
913 			0xf0, 0xc1, 0x05, 0x3c, 0x00, 0x00, 0x00, 0x00,
914 		},
915 	},
916 
917 	.ipsec_xform = {
918 		.spi = 52,
919 		.options.esn = 0,
920 		.options.udp_encap = 0,
921 		.options.copy_dscp = 0,
922 		.options.copy_flabel = 0,
923 		.options.copy_df = 0,
924 		.options.dec_ttl = 0,
925 		.options.ecn = 0,
926 		.options.stats = 0,
927 		.options.tunnel_hdr_verify = 0,
928 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
929 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
930 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
931 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV6,
932 		.replay_win_sz = 0,
933 	},
934 
935 	.aead = false,
936 
937 	.xform = {
938 		.chain.cipher = {
939 			.next = NULL,
940 			.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
941 			.cipher = {
942 				.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT,
943 				.algo = RTE_CRYPTO_CIPHER_AES_CBC,
944 				.key.length = 16,
945 				.iv.length = 16,
946 			},
947 		},
948 		.chain.auth = {
949 			.next = NULL,
950 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
951 			.auth = {
952 				.op = RTE_CRYPTO_AUTH_OP_GENERATE,
953 				.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,
954 				.key.length = 32,
955 				.digest_length = 16,
956 			},
957 		},
958 	},
959 };
960 
961 struct ipsec_test_data pkt_aes_128_gcm_frag = {
962 	.key = {
963 		.data = {
964 			0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef,
965 			0xde, 0xad, 0xbe, 0xef, 0xde, 0xad, 0xbe, 0xef,
966 		},
967 	},
968 	.input_text = {
969 		.data = {
970 			0x45, 0x00, 0x00, 0x6e, 0x00, 0x01, 0x00, 0x17,
971 			0x40, 0x06, 0xed, 0x48, 0xc6, 0x12, 0x00, 0x00,
972 			0xc6, 0x12, 0x01, 0x05, 0x00, 0x14, 0x00, 0x50,
973 			0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
974 			0x50, 0x00, 0x00, 0x00, 0x55, 0x05, 0x00, 0x00,
975 			0x00, 0x01, 0x02, 0x03, 0xf2, 0xf6, 0xe9, 0x21,
976 			0xf9, 0xf2, 0xf6, 0xe9, 0x21, 0xf9, 0xf2, 0xf6,
977 			0xe9, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
978 			0x00, 0x00, 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,
984 		},
985 		.len = 110,
986 	},
987 	.output_text = {
988 		.data = {
989 			0x45, 0x00, 0x00, 0xa4, 0x00, 0x01, 0x00, 0x00,
990 			0x40, 0x32, 0xf6, 0x0c, 0xc0, 0xa8, 0x01, 0x70,
991 			0xc0, 0xa8, 0x01, 0x5a, 0x00, 0x00, 0x00, 0x34,
992 			0x00, 0x00, 0x00, 0x01, 0x45, 0xad, 0xfe, 0x23,
993 			0x78, 0x56, 0x12, 0x00, 0x49, 0x26, 0xac, 0x4e,
994 			0x8d, 0xf3, 0x74, 0x26, 0x18, 0x3f, 0x65, 0x94,
995 			0x73, 0x2e, 0xe4, 0xcf, 0x84, 0x6d, 0x03, 0x8a,
996 			0x4c, 0xdd, 0x2d, 0xef, 0xcd, 0x9f, 0x84, 0x76,
997 			0x93, 0xe1, 0xee, 0x21, 0x92, 0x8b, 0xf7, 0x7a,
998 			0xb1, 0x6a, 0x7f, 0xd6, 0x10, 0x66, 0xdd, 0xa1,
999 			0x8b, 0x17, 0x56, 0x99, 0x9a, 0x40, 0xd0, 0x6b,
1000 			0x2d, 0xe0, 0x55, 0x40, 0x2f, 0xb8, 0x38, 0xe3,
1001 			0x08, 0x46, 0xe2, 0x69, 0xc9, 0xa1, 0x85, 0x9d,
1002 			0x7b, 0xec, 0x33, 0x2a, 0x2d, 0x1d, 0x1f, 0x1a,
1003 			0x9e, 0xf0, 0x1e, 0xc3, 0x33, 0x64, 0x35, 0x82,
1004 			0xbb, 0xb5, 0x7a, 0x91, 0x2e, 0x8d, 0xd5, 0x5b,
1005 			0x3a, 0xbe, 0x95, 0x94, 0xba, 0x40, 0x73, 0x4e,
1006 			0xa4, 0x15, 0xe4, 0x4a, 0xf9, 0x14, 0x2c, 0x4f,
1007 			0x63, 0x2e, 0x23, 0x6e, 0xeb, 0x06, 0xe7, 0x52,
1008 			0xe1, 0xc7, 0x91, 0x7f, 0x19, 0xc0, 0x4a, 0xd2,
1009 			0xd5, 0x3e, 0x84, 0xa8,
1010 		},
1011 		.len = 164,
1012 	},
1013 	.salt = {
1014 		.data = {
1015 			0xde, 0xad, 0xbe, 0xef,
1016 		},
1017 		.len = 4,
1018 	},
1019 
1020 	.iv = {
1021 		.data = {
1022 			0x45, 0xad, 0xfe, 0x23, 0x78, 0x56, 0x12, 0x00,
1023 		},
1024 	},
1025 
1026 	.ipsec_xform = {
1027 		.spi = 52,
1028 		.options.esn = 0,
1029 		.options.udp_encap = 0,
1030 		.options.copy_dscp = 0,
1031 		.options.copy_flabel = 0,
1032 		.options.copy_df = 0,
1033 		.options.dec_ttl = 0,
1034 		.options.ecn = 0,
1035 		.options.stats = 0,
1036 		.options.tunnel_hdr_verify = 0,
1037 		.options.ip_csum_enable = 0,
1038 		.options.l4_csum_enable = 0,
1039 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
1040 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1041 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
1042 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4,
1043 		.replay_win_sz = 0,
1044 	},
1045 
1046 	.aead = true,
1047 
1048 	.xform = {
1049 		.aead = {
1050 			.next = NULL,
1051 			.type = RTE_CRYPTO_SYM_XFORM_AEAD,
1052 			.aead = {
1053 				.op = RTE_CRYPTO_AEAD_OP_ENCRYPT,
1054 				.algo = RTE_CRYPTO_AEAD_AES_GCM,
1055 				.key.length = 16,
1056 				.iv.length = 12,
1057 				.iv.offset = IV_OFFSET,
1058 				.digest_length = 16,
1059 				.aad_length = 12,
1060 			},
1061 		},
1062 	},
1063 };
1064 
1065 struct ipsec_test_data pkt_null_aes_xcbc = {
1066 	.auth_key = {
1067 		.data = {
1068 			0x61, 0x31, 0x62, 0x32, 0x63, 0x33, 0x64, 0x34,
1069 			0x65, 0x35, 0x66, 0x36, 0x67, 0x37, 0x68, 0x38,
1070 		},
1071 	},
1072 	.input_text = {
1073 		.data = {
1074 			/* IP */
1075 			0x45, 0x00, 0x00, 0x2f, 0x49, 0x37, 0x00, 0x00,
1076 			0x40, 0x11, 0x22, 0x84, 0x0d, 0x00, 0x00, 0x02,
1077 			0x02, 0x00, 0x00, 0x02, 0x08, 0x00, 0x08, 0x00,
1078 			0x00, 0x1b, 0x6d, 0x99, 0x58, 0x58, 0x58, 0x58,
1079 			0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
1080 			0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
1081 		},
1082 		.len = 47,
1083 	},
1084 	.output_text = {
1085 		.data = {
1086 			/* IP */
1087 			0x45, 0x00, 0x00, 0x5c, 0x06, 0x00, 0x00, 0x00,
1088 			0x40, 0x32, 0x13, 0x6c, 0x0a, 0x00, 0x6f, 0x02,
1089 			0x0a, 0x00, 0xde, 0x02,
1090 
1091 			/* ESP */
1092 			0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
1093 
1094 			/* IP */
1095 			0x45, 0x00, 0x00, 0x2f, 0x49, 0x37, 0x00, 0x00,
1096 			0x40, 0x11, 0x22, 0x84, 0x0d, 0x00, 0x00, 0x02,
1097 			0x02, 0x00, 0x00, 0x02, 0x08, 0x00, 0x08, 0x00,
1098 			0x00, 0x1b, 0x6d, 0x99, 0x58, 0x58, 0x58, 0x58,
1099 			0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
1100 			0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58,
1101 
1102 			/* ESP trailer */
1103 			0x01, 0x02, 0x03, 0x03, 0x04,
1104 
1105 			/* ICV */
1106 			0xf1, 0x52, 0x64, 0xd1, 0x9b, 0x62, 0x24, 0xdd,
1107 			0xcc, 0x14, 0xf5, 0xc1,
1108 		},
1109 		.len = 92,
1110 	},
1111 	.ipsec_xform = {
1112 		.spi = 0x100,
1113 		.options.esn = 0,
1114 		.options.udp_encap = 0,
1115 		.options.copy_dscp = 0,
1116 		.options.copy_flabel = 0,
1117 		.options.copy_df = 0,
1118 		.options.dec_ttl = 0,
1119 		.options.ecn = 0,
1120 		.options.stats = 0,
1121 		.options.tunnel_hdr_verify = 0,
1122 		.options.ip_csum_enable = 0,
1123 		.options.l4_csum_enable = 0,
1124 		.direction = RTE_SECURITY_IPSEC_SA_DIR_EGRESS,
1125 		.proto = RTE_SECURITY_IPSEC_SA_PROTO_ESP,
1126 		.mode = RTE_SECURITY_IPSEC_SA_MODE_TUNNEL,
1127 		.tunnel.type = RTE_SECURITY_IPSEC_TUNNEL_IPV4,
1128 		.replay_win_sz = 0,
1129 	},
1130 	.aead = false,
1131 	.xform = {
1132 		.chain.cipher = {
1133 			.next = NULL,
1134 			.type = RTE_CRYPTO_SYM_XFORM_CIPHER,
1135 			.cipher = {
1136 				.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT,
1137 				.algo = RTE_CRYPTO_CIPHER_NULL,
1138 				.key.length = 0,
1139 				.iv.length = 0,
1140 			},
1141 		},
1142 		.chain.auth = {
1143 			.next = NULL,
1144 			.type = RTE_CRYPTO_SYM_XFORM_AUTH,
1145 			.auth = {
1146 				.op = RTE_CRYPTO_AUTH_OP_GENERATE,
1147 				.algo = RTE_CRYPTO_AUTH_AES_XCBC_MAC,
1148 				.key.length = 16,
1149 				.digest_length = 12,
1150 			},
1151 		},
1152 	},
1153 };
1154 
1155 #endif /* TEST_CRYPTODEV_SECURITY_IPSEC_TEST_VECTORS_H_ */
1156