xref: /dpdk/app/test/test_cryptodev_security_ipsec_test_vectors.h (revision 9ad3a41ab2a10db0059e1decdbf3ec038f348e08)
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 #endif /* TEST_CRYPTODEV_SECURITY_IPSEC_TEST_VECTORS_H_ */
1157