test/event: add asymmetric cases for crypto adapter
[dpdk.git] / app / test / test_cryptodev_security_ipsec_test_vectors.h
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_ */