mbuf: add a copy routine
[dpdk.git] / app / test / test_cryptodev_kasumi_test_vectors.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2016-2017 Intel Corporation
3  */
4
5 #ifndef TEST_CRYPTODEV_KASUMI_TEST_VECTORS_H_
6 #define TEST_CRYPTODEV_KASUMI_TEST_VECTORS_H_
7
8 struct kasumi_test_data {
9         struct {
10                 uint8_t data[64];
11                 unsigned int len;
12         } key;
13
14         struct {
15                 uint8_t data[64] __rte_aligned(16);
16                 unsigned int len;
17         } cipher_iv;
18
19         /*
20          * Data may include COUNT (4 bytes), FRESH (4 bytes),
21          * DIRECTION (1 bit), plus 1 0*, with enough 0s,
22          * so total length is multiple of 8 or 64 bits
23          */
24         struct {
25                 uint8_t data[1024];
26                 unsigned int len; /* length must be in Bits */
27         } plaintext;
28
29         struct {
30                 unsigned int len;
31         } validDataLenInBits;
32
33         struct {
34                 uint8_t data[1024];
35                 unsigned int len; /* length must be in Bits */
36         } ciphertext;
37
38         struct {
39                 unsigned int len;
40         } validCipherLenInBits;
41
42         struct {
43                 unsigned int len;
44         } validCipherOffsetInBits;
45
46         /* Actual length of data to be hashed */
47         struct {
48                 unsigned int len;
49         } validAuthLenInBits;
50
51         struct {
52                 uint8_t data[64];
53                 unsigned int len;
54                 unsigned int offset_bytes; /* offset must be in Bytes */
55         } digest;
56
57 };
58
59 struct kasumi_test_data kasumi_test_case_1 = {
60         .key = {
61                 .data = {
62                         0x2B, 0xD6, 0x45, 0x9F, 0x82, 0xC5, 0xB3, 0x00,
63                         0x95, 0x2C, 0x49, 0x10, 0x48, 0x81, 0xFF, 0x48
64                 },
65                 .len = 16
66         },
67         .cipher_iv = {
68                 .data = {
69                         0x72, 0xA4, 0xF2, 0x0F, 0x64, 0x00, 0x00, 0x00
70                 },
71                 .len = 8
72         },
73         .plaintext = {
74                 .data = {
75                         0x7E, 0xC6, 0x12, 0x72, 0x74, 0x3B, 0xF1, 0x61,
76                         0x47, 0x26, 0x44, 0x6A, 0x6C, 0x38, 0xCE, 0xD1,
77                         0x66, 0xF6, 0xCA, 0x76, 0xEB, 0x54, 0x30, 0x04,
78                         0x42, 0x86, 0x34, 0x6C, 0xEF, 0x13, 0x0F, 0x92,
79                         0x92, 0x2B, 0x03, 0x45, 0x0D, 0x3A, 0x99, 0x75,
80                         0xE5, 0xBD, 0x2E, 0xA0, 0xEB, 0x55, 0xAD, 0x8E,
81                         0x1B, 0x19, 0x9E, 0x3E, 0xC4, 0x31, 0x60, 0x20,
82                         0xE9, 0xA1, 0xB2, 0x85, 0xE7, 0x62, 0x79, 0x53,
83                         0x59, 0xB7, 0xBD, 0xFD, 0x39, 0xBE, 0xF4, 0xB2,
84                         0x48, 0x45, 0x83, 0xD5, 0xAF, 0xE0, 0x82, 0xAE,
85                         0xE6, 0x38, 0xBF, 0x5F, 0xD5, 0xA6, 0x06, 0x19,
86                         0x39, 0x01, 0xA0, 0x8F, 0x4A, 0xB4, 0x1A, 0xAB,
87                         0x9B, 0x13, 0x48, 0x80
88                 },
89                 .len = 800
90         },
91         .ciphertext = {
92                 .data = {
93                         0xD1, 0xE2, 0xDE, 0x70, 0xEE, 0xF8, 0x6C, 0x69,
94                         0x64, 0xFB, 0x54, 0x2B, 0xC2, 0xD4, 0x60, 0xAA,
95                         0xBF, 0xAA, 0x10, 0xA4, 0xA0, 0x93, 0x26, 0x2B,
96                         0x7D, 0x19, 0x9E, 0x70, 0x6F, 0xC2, 0xD4, 0x89,
97                         0x15, 0x53, 0x29, 0x69, 0x10, 0xF3, 0xA9, 0x73,
98                         0x01, 0x26, 0x82, 0xE4, 0x1C, 0x4E, 0x2B, 0x02,
99                         0xBE, 0x20, 0x17, 0xB7, 0x25, 0x3B, 0xBF, 0x93,
100                         0x09, 0xDE, 0x58, 0x19, 0xCB, 0x42, 0xE8, 0x19,
101                         0x56, 0xF4, 0xC9, 0x9B, 0xC9, 0x76, 0x5C, 0xAF,
102                         0x53, 0xB1, 0xD0, 0xBB, 0x82, 0x79, 0x82, 0x6A,
103                         0xDB, 0xBC, 0x55, 0x22, 0xE9, 0x15, 0xC1, 0x20,
104                         0xA6, 0x18, 0xA5, 0xA7, 0xF5, 0xE8, 0x97, 0x08,
105                         0x93, 0x39, 0x65, 0x0F
106                 },
107                 .len = 800
108         },
109         .validCipherLenInBits = {
110                 .len = 798
111         },
112         .validCipherOffsetInBits = {
113                 .len = 0
114         }
115 };
116
117 struct kasumi_test_data kasumi_test_case_2 = {
118         .key = {
119                 .data = {
120                         0xEF, 0xA8, 0xB2, 0x22, 0x9E, 0x72, 0x0C, 0x2A,
121                         0x7C, 0x36, 0xEA, 0x55, 0xE9, 0x60, 0x56, 0x95
122                 },
123                 .len = 16
124         },
125         .cipher_iv = {
126                 .data = {
127                         0xE2, 0x8B, 0xCF, 0x7B, 0xC0, 0x00, 0x00, 0x00
128                 },
129                 .len = 8
130         },
131         .plaintext = {
132                 .data = {
133                         0x10, 0x11, 0x12, 0x31, 0xE0, 0x60, 0x25, 0x3A,
134                         0x43, 0xFD, 0x3F, 0x57, 0xE3, 0x76, 0x07, 0xAB,
135                         0x28, 0x27, 0xB5, 0x99, 0xB6, 0xB1, 0xBB, 0xDA,
136                         0x37, 0xA8, 0xAB, 0xCC, 0x5A, 0x8C, 0x55, 0x0D,
137                         0x1B, 0xFB, 0x2F, 0x49, 0x46, 0x24, 0xFB, 0x50,
138                         0x36, 0x7F, 0xA3, 0x6C, 0xE3, 0xBC, 0x68, 0xF1,
139                         0x1C, 0xF9, 0x3B, 0x15, 0x10, 0x37, 0x6B, 0x02,
140                         0x13, 0x0F, 0x81, 0x2A, 0x9F, 0xA1, 0x69, 0xD8
141                 },
142                 .len = 512
143         },
144         .ciphertext = {
145                 .data = {
146                         0x3D, 0xEA, 0xCC, 0x7C, 0x15, 0x82, 0x1C, 0xAA,
147                         0x89, 0xEE, 0xCA, 0xDE, 0x9B, 0x5B, 0xD3, 0x61,
148                         0x4B, 0xD0, 0xC8, 0x41, 0x9D, 0x71, 0x03, 0x85,
149                         0xDD, 0xBE, 0x58, 0x49, 0xEF, 0x1B, 0xAC, 0x5A,
150                         0xE8, 0xB1, 0x4A, 0x5B, 0x0A, 0x67, 0x41, 0x52,
151                         0x1E, 0xB4, 0xE0, 0x0B, 0xB9, 0xEC, 0xF3, 0xE9,
152                         0xF7, 0xCC, 0xB9, 0xCA, 0xE7, 0x41, 0x52, 0xD7,
153                         0xF4, 0xE2, 0xA0, 0x34, 0xB6, 0xEA, 0x00, 0xEC
154                 },
155                 .len = 512
156         },
157         .validCipherLenInBits = {
158                 .len = 510
159         },
160         .validCipherOffsetInBits = {
161                 .len = 0
162         }
163 };
164
165 struct kasumi_test_data kasumi_test_case_3 = {
166         .key = {
167                 .data = {
168                          0x5A, 0xCB, 0x1D, 0x64, 0x4C, 0x0D, 0x51, 0x20,
169                          0x4E, 0xA5, 0xF1, 0x45, 0x10, 0x10, 0xD8, 0x52
170                 },
171                 .len = 16
172         },
173         .cipher_iv = {
174                 .data = {
175                         0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00
176                 },
177                 .len = 8
178         },
179         .plaintext = {
180                 .data = {
181                         0x38, 0xA6, 0xF0, 0x56, 0x05, 0xD2, 0xEC, 0x49,
182                         0xAD, 0x9C, 0x44, 0x1F, 0x89, 0x0B, 0x38, 0xC4,
183                         0x57, 0xA4, 0x9D, 0x42, 0x14, 0x07, 0xE8, 0xC0
184                 },
185                 .len = 192
186         },
187         .ciphertext = {
188                 .data = {
189                         0x38, 0xA6, 0xF0, 0x56, 0x05, 0xD2, 0xEC, 0x49,
190                         0x9B, 0xC9, 0x2C, 0xA8, 0x03, 0xC6, 0x7B, 0x28,
191                         0xA1, 0x1A, 0x4B, 0xEE, 0x5A, 0x0C, 0x25, 0xC0
192                 },
193                 .len = 192
194         },
195         .validDataLenInBits = {
196                 .len = 192
197         },
198         .validCipherLenInBits = {
199                 .len = 120
200         },
201         .validAuthLenInBits = {
202                 .len = 192
203         },
204         .validCipherOffsetInBits = {
205                 .len = 64
206         },
207         .digest = {
208                 .data = {0x87, 0x5F, 0xE4, 0x89},
209                 .len  = 4,
210                 .offset_bytes = 0
211         }
212 };
213
214 struct kasumi_test_data kasumi_test_case_4 = {
215         .key = {
216                 .data = {
217                         0xD3, 0xC5, 0xD5, 0x92, 0x32, 0x7F, 0xB1, 0x1C,
218                         0x40, 0x35, 0xC6, 0x68, 0x0A, 0xF8, 0xC6, 0xD1
219                 },
220                 .len = 16
221         },
222         .cipher_iv = {
223                 .data = {
224                         0x39, 0x8A, 0x59, 0xB4, 0x2C, 0x00, 0x00, 0x00,
225                 },
226                 .len = 8
227         },
228         .plaintext = {
229                 .data = {
230                         0x98, 0x1B, 0xA6, 0x82, 0x4C, 0x1B, 0xFB, 0x1A,
231                         0xB4, 0x85, 0x47, 0x20, 0x29, 0xB7, 0x1D, 0x80,
232                         0x8C, 0xE3, 0x3E, 0x2C, 0xC3, 0xC0, 0xB5, 0xFC,
233                         0x1F, 0x3D, 0xE8, 0xA6, 0xDC, 0x66, 0xB1, 0xF0
234                 },
235                 .len = 256
236         },
237         .ciphertext = {
238                 .data = {
239                         0x5B, 0xB9, 0x43, 0x1B, 0xB1, 0xE9, 0x8B, 0xD1,
240                         0x1B, 0x93, 0xDB, 0x7C, 0x3D, 0x45, 0x13, 0x65,
241                         0x59, 0xBB, 0x86, 0xA2, 0x95, 0xAA, 0x20, 0x4E,
242                         0xCB, 0xEB, 0xF6, 0xF7, 0xA5, 0x10, 0x15, 0x10
243                 },
244                 .len = 256
245         },
246         .validCipherLenInBits = {
247                 .len = 253
248         },
249         .validCipherOffsetInBits = {
250                 .len = 0
251         }
252 };
253
254 struct kasumi_test_data kasumi_test_case_5 = {
255         .key = {
256                 .data = {
257                         0x60, 0x90, 0xEA, 0xE0, 0x4C, 0x83, 0x70, 0x6E,
258                         0xEC, 0xBF, 0x65, 0x2B, 0xE8, 0xE3, 0x65, 0x66
259                 },
260                 .len = 16
261         },
262         .cipher_iv = {
263                 .data = {
264                         0x72, 0xA4, 0xF2, 0x0F, 0x48, 0x00, 0x00, 0x00
265                 },
266                 .len = 8
267         },
268         .plaintext = {
269                 .data = {
270                         0x40, 0x98, 0x1B, 0xA6, 0x82, 0x4C, 0x1B, 0xFB,
271                         0x42, 0x86, 0xB2, 0x99, 0x78, 0x3D, 0xAF, 0x44,
272                         0x2C, 0x09, 0x9F, 0x7A, 0xB0, 0xF5, 0x8D, 0x5C,
273                         0x8E, 0x46, 0xB1, 0x04, 0xF0, 0x8F, 0x01, 0xB4,
274                         0x1A, 0xB4, 0x85, 0x47, 0x20, 0x29, 0xB7, 0x1D,
275                         0x36, 0xBD, 0x1A, 0x3D, 0x90, 0xDC, 0x3A, 0x41,
276                         0xB4, 0x6D, 0x51, 0x67, 0x2A, 0xC4, 0xC9, 0x66,
277                         0x3A, 0x2B, 0xE0, 0x63, 0xDA, 0x4B, 0xC8, 0xD2,
278                         0x80, 0x8C, 0xE3, 0x3E, 0x2C, 0xCC, 0xBF, 0xC6,
279                         0x34, 0xE1, 0xB2, 0x59, 0x06, 0x08, 0x76, 0xA0,
280                         0xFB, 0xB5, 0xA4, 0x37, 0xEB, 0xCC, 0x8D, 0x31,
281                         0xC1, 0x9E, 0x44, 0x54, 0x31, 0x87, 0x45, 0xE3,
282                         0x98, 0x76, 0x45, 0x98, 0x7A, 0x98, 0x6F, 0x2C,
283                         0xB0
284                 },
285                 .len = 840
286         },
287         .ciphertext = {
288                 .data = {
289                         0xDD, 0xB3, 0x64, 0xDD, 0x2A, 0xAE, 0xC2, 0x4D,
290                         0xFF, 0x29, 0x19, 0x57, 0xB7, 0x8B, 0xAD, 0x06,
291                         0x3A, 0xC5, 0x79, 0xCD, 0x90, 0x41, 0xBA, 0xBE,
292                         0x89, 0xFD, 0x19, 0x5C, 0x05, 0x78, 0xCB, 0x9F,
293                         0xDE, 0x42, 0x17, 0x56, 0x61, 0x78, 0xD2, 0x02,
294                         0x40, 0x20, 0x6D, 0x07, 0xCF, 0xA6, 0x19, 0xEC,
295                         0x05, 0x9F, 0x63, 0x51, 0x44, 0x59, 0xFC, 0x10,
296                         0xD4, 0x2D, 0xC9, 0x93, 0x4E, 0x56, 0xEB, 0xC0,
297                         0xCB, 0xC6, 0x0D, 0x4D, 0x2D, 0xF1, 0x74, 0x77,
298                         0x4C, 0xBD, 0xCD, 0x5D, 0xA4, 0xA3, 0x50, 0x31,
299                         0x7A, 0x7F, 0x12, 0xE1, 0x94, 0x94, 0x71, 0xF8,
300                         0xA2, 0x95, 0xF2, 0x72, 0xE6, 0x8F, 0xC0, 0x71,
301                         0x59, 0xB0, 0x7D, 0x8E, 0x2D, 0x26, 0xE4, 0x59,
302                         0x9E
303                 },
304                 .len = 840
305         },
306         .validCipherLenInBits = {
307                 .len = 837
308         },
309         .validCipherOffsetInBits = {
310                 .len = 0
311         }
312 };
313
314 struct kasumi_test_data kasumi_test_case_6 = {
315         .key = {
316                 .data = {
317                          0x5A, 0xCB, 0x1D, 0x64, 0x4C, 0x0D, 0x51, 0x20,
318                          0x4E, 0xA5, 0xF1, 0x45, 0x10, 0x10, 0xD8, 0x52
319                 },
320                 .len = 16
321         },
322         .cipher_iv = {
323                 .data = {
324                         0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00
325                 },
326                 .len = 8
327         },
328         .plaintext = {
329                 .data = {
330                         0x38, 0xA6, 0xF0, 0x56, 0x05, 0xD2, 0xEC, 0x49,
331                         0xAD, 0x9C, 0x44, 0x1F, 0x89, 0x0B, 0x38, 0xC4,
332                         0x57, 0xA4, 0x9D, 0x42, 0x14, 0x07, 0xE8, 0xC0
333                 },
334                 .len = 192
335         },
336         .ciphertext = {
337                 .data = {
338                         0x38, 0xA6, 0xF0, 0x56, 0x05, 0xD2, 0xEC, 0x49,
339                         0x9B, 0xC9, 0x2C, 0xA8, 0x03, 0xC6, 0x7B, 0x28,
340                         0xA1, 0x1A, 0x4B, 0xEE, 0x5A, 0x0C, 0x25, 0xC0
341                 },
342                 .len = 192
343         },
344         .validDataLenInBits = {
345                 .len = 192
346         },
347         .validCipherLenInBits = {
348                 .len = 120
349         },
350         .validCipherOffsetInBits = {
351                 .len = 64
352         },
353         .validAuthLenInBits = {
354                 .len = 192
355         },
356         .digest = {
357                 .data = {0x0F, 0xD2, 0xAA, 0xB5},
358                 .len  = 4,
359                 .offset_bytes = 0
360         }
361 };
362
363 struct kasumi_test_data kasumi_auth_cipher_test_case_2 = {
364         .key = {
365                 .data = {
366                         0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
367                         0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10
368                 },
369                 .len = 16
370         },
371         .cipher_iv = {
372                 .data = {
373                         0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
374                 },
375                 .len = 8
376         },
377         .plaintext = {
378                 .data = {
379                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
380                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
381                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
382                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
383                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
384                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
385                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
386                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
387                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
388                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
389                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
390                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
391                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
392                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
393                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A,
394                         0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A
395                 },
396                 .len = 128 << 3
397         },
398         .ciphertext = {
399                 .data = {
400                         0x5A, 0x5A, 0xFA, 0xC6, 0xA9, 0x09, 0x91, 0x74,
401                         0x35, 0xAA, 0x85, 0xB0, 0xE0, 0x07, 0x78, 0xDA,
402                         0x05, 0x88, 0x4E, 0x8D, 0xEC, 0x41, 0xF3, 0xBC,
403                         0x0D, 0x9F, 0xE3, 0xEF, 0x8E, 0x33, 0x22, 0xF3,
404                         0x15, 0x4B, 0x12, 0xC2, 0x22, 0x12, 0xD6, 0x46,
405                         0xD7, 0x27, 0x20, 0x1D, 0x50, 0x60, 0x9D, 0x42,
406                         0xF6, 0x73, 0xF5, 0x28, 0x88, 0xBE, 0x60, 0xEC,
407                         0x9C, 0x18, 0x81, 0xC4, 0x0A, 0xF4, 0xD5, 0x7A,
408                         0xB5, 0x3F, 0x1A, 0x79, 0xAB, 0x79, 0xDB, 0x24,
409                         0xF9, 0x6E, 0x86, 0x78, 0x10, 0x19, 0xAE, 0xD8,
410                         0xB2, 0xCA, 0x32, 0x8D, 0xD8, 0x28, 0x8B, 0x2F,
411                         0x5B, 0x3C, 0xE3, 0x7D, 0xD3, 0x70, 0x11, 0xDE,
412                         0x2C, 0xDC, 0xC1, 0xC6, 0xB6, 0xFD, 0xF3, 0x7D,
413                         0x38, 0x97, 0x8B, 0x81, 0x02, 0x88, 0x62, 0x3C,
414                         0x1E, 0x1A, 0x93, 0x21, 0xE3, 0x6D, 0xD7, 0x20,
415                         0x80, 0xA8, 0xDA, 0x18, 0x8F, 0x58, 0x0F, 0x4E
416                 },
417                 .len = 128 << 3
418         },
419         .validDataLenInBits = {
420                 .len = 128 << 3
421         },
422         .validCipherLenInBits = {
423                 .len = 126 << 3
424         },
425         .validAuthLenInBits = {
426                 .len = 124 << 3
427         },
428         .validCipherOffsetInBits = {
429                 .len = 2 << 3
430         },
431         .digest = {
432                 .data = {0x8F, 0x58, 0x0F, 0x4E},
433                 .len  = 4,
434                 .offset_bytes = 124
435         }
436 };
437 #endif /* TEST_CRYPTODEV_KASUMI_TEST_VECTORS_H_ */