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