New upstream version 18.02
[deb_dpdk.git] / test / 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 len;
12         } key;
13
14         struct {
15                 uint8_t data[64] __rte_aligned(16);
16                 unsigned 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 len; /* length must be in Bits */
27         } plaintext;
28
29         struct {
30                 unsigned len;
31         } validDataLenInBits;
32
33         struct {
34                 uint8_t data[1024];
35                 unsigned len; /* length must be in Bits */
36         } ciphertext;
37
38         struct {
39                 unsigned 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 len;
49         } validAuthLenInBits;
50
51         struct {
52                 uint8_t data[64];
53                 unsigned len;
54         } digest;
55
56 };
57
58 struct kasumi_test_data kasumi_test_case_1 = {
59         .key = {
60                 .data = {
61                         0x2B, 0xD6, 0x45, 0x9F, 0x82, 0xC5, 0xB3, 0x00,
62                         0x95, 0x2C, 0x49, 0x10, 0x48, 0x81, 0xFF, 0x48
63                 },
64                 .len = 16
65         },
66         .cipher_iv = {
67                 .data = {
68                         0x72, 0xA4, 0xF2, 0x0F, 0x64, 0x00, 0x00, 0x00
69                 },
70                 .len = 8
71         },
72         .plaintext = {
73                 .data = {
74                         0x7E, 0xC6, 0x12, 0x72, 0x74, 0x3B, 0xF1, 0x61,
75                         0x47, 0x26, 0x44, 0x6A, 0x6C, 0x38, 0xCE, 0xD1,
76                         0x66, 0xF6, 0xCA, 0x76, 0xEB, 0x54, 0x30, 0x04,
77                         0x42, 0x86, 0x34, 0x6C, 0xEF, 0x13, 0x0F, 0x92,
78                         0x92, 0x2B, 0x03, 0x45, 0x0D, 0x3A, 0x99, 0x75,
79                         0xE5, 0xBD, 0x2E, 0xA0, 0xEB, 0x55, 0xAD, 0x8E,
80                         0x1B, 0x19, 0x9E, 0x3E, 0xC4, 0x31, 0x60, 0x20,
81                         0xE9, 0xA1, 0xB2, 0x85, 0xE7, 0x62, 0x79, 0x53,
82                         0x59, 0xB7, 0xBD, 0xFD, 0x39, 0xBE, 0xF4, 0xB2,
83                         0x48, 0x45, 0x83, 0xD5, 0xAF, 0xE0, 0x82, 0xAE,
84                         0xE6, 0x38, 0xBF, 0x5F, 0xD5, 0xA6, 0x06, 0x19,
85                         0x39, 0x01, 0xA0, 0x8F, 0x4A, 0xB4, 0x1A, 0xAB,
86                         0x9B, 0x13, 0x48, 0x80
87                 },
88                 .len = 800
89         },
90         .ciphertext = {
91                 .data = {
92                         0xD1, 0xE2, 0xDE, 0x70, 0xEE, 0xF8, 0x6C, 0x69,
93                         0x64, 0xFB, 0x54, 0x2B, 0xC2, 0xD4, 0x60, 0xAA,
94                         0xBF, 0xAA, 0x10, 0xA4, 0xA0, 0x93, 0x26, 0x2B,
95                         0x7D, 0x19, 0x9E, 0x70, 0x6F, 0xC2, 0xD4, 0x89,
96                         0x15, 0x53, 0x29, 0x69, 0x10, 0xF3, 0xA9, 0x73,
97                         0x01, 0x26, 0x82, 0xE4, 0x1C, 0x4E, 0x2B, 0x02,
98                         0xBE, 0x20, 0x17, 0xB7, 0x25, 0x3B, 0xBF, 0x93,
99                         0x09, 0xDE, 0x58, 0x19, 0xCB, 0x42, 0xE8, 0x19,
100                         0x56, 0xF4, 0xC9, 0x9B, 0xC9, 0x76, 0x5C, 0xAF,
101                         0x53, 0xB1, 0xD0, 0xBB, 0x82, 0x79, 0x82, 0x6A,
102                         0xDB, 0xBC, 0x55, 0x22, 0xE9, 0x15, 0xC1, 0x20,
103                         0xA6, 0x18, 0xA5, 0xA7, 0xF5, 0xE8, 0x97, 0x08,
104                         0x93, 0x39, 0x65, 0x0F
105                 },
106                 .len = 800
107         },
108         .validCipherLenInBits = {
109                 .len = 798
110         },
111         .validCipherOffsetInBits = {
112                 .len = 0
113         }
114 };
115
116 struct kasumi_test_data kasumi_test_case_2 = {
117         .key = {
118                 .data = {
119                         0xEF, 0xA8, 0xB2, 0x22, 0x9E, 0x72, 0x0C, 0x2A,
120                         0x7C, 0x36, 0xEA, 0x55, 0xE9, 0x60, 0x56, 0x95
121                 },
122                 .len = 16
123         },
124         .cipher_iv = {
125                 .data = {
126                         0xE2, 0x8B, 0xCF, 0x7B, 0xC0, 0x00, 0x00, 0x00
127                 },
128                 .len = 8
129         },
130         .plaintext = {
131                 .data = {
132                         0x10, 0x11, 0x12, 0x31, 0xE0, 0x60, 0x25, 0x3A,
133                         0x43, 0xFD, 0x3F, 0x57, 0xE3, 0x76, 0x07, 0xAB,
134                         0x28, 0x27, 0xB5, 0x99, 0xB6, 0xB1, 0xBB, 0xDA,
135                         0x37, 0xA8, 0xAB, 0xCC, 0x5A, 0x8C, 0x55, 0x0D,
136                         0x1B, 0xFB, 0x2F, 0x49, 0x46, 0x24, 0xFB, 0x50,
137                         0x36, 0x7F, 0xA3, 0x6C, 0xE3, 0xBC, 0x68, 0xF1,
138                         0x1C, 0xF9, 0x3B, 0x15, 0x10, 0x37, 0x6B, 0x02,
139                         0x13, 0x0F, 0x81, 0x2A, 0x9F, 0xA1, 0x69, 0xD8
140                 },
141                 .len = 512
142         },
143         .ciphertext = {
144                 .data = {
145                         0x3D, 0xEA, 0xCC, 0x7C, 0x15, 0x82, 0x1C, 0xAA,
146                         0x89, 0xEE, 0xCA, 0xDE, 0x9B, 0x5B, 0xD3, 0x61,
147                         0x4B, 0xD0, 0xC8, 0x41, 0x9D, 0x71, 0x03, 0x85,
148                         0xDD, 0xBE, 0x58, 0x49, 0xEF, 0x1B, 0xAC, 0x5A,
149                         0xE8, 0xB1, 0x4A, 0x5B, 0x0A, 0x67, 0x41, 0x52,
150                         0x1E, 0xB4, 0xE0, 0x0B, 0xB9, 0xEC, 0xF3, 0xE9,
151                         0xF7, 0xCC, 0xB9, 0xCA, 0xE7, 0x41, 0x52, 0xD7,
152                         0xF4, 0xE2, 0xA0, 0x34, 0xB6, 0xEA, 0x00, 0xEC
153                 },
154                 .len = 512
155         },
156         .validCipherLenInBits = {
157                 .len = 510
158         },
159         .validCipherOffsetInBits = {
160                 .len = 0
161         }
162 };
163
164 struct kasumi_test_data kasumi_test_case_3 = {
165         .key = {
166                 .data = {
167                          0x5A, 0xCB, 0x1D, 0x64, 0x4C, 0x0D, 0x51, 0x20,
168                          0x4E, 0xA5, 0xF1, 0x45, 0x10, 0x10, 0xD8, 0x52
169                 },
170                 .len = 16
171         },
172         .cipher_iv = {
173                 .data = {
174                         0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00
175                 },
176                 .len = 8
177         },
178         .plaintext = {
179                 .data = {
180                         0x38, 0xA6, 0xF0, 0x56, 0x05, 0xD2, 0xEC, 0x49,
181                         0xAD, 0x9C, 0x44, 0x1F, 0x89, 0x0B, 0x38, 0xC4,
182                         0x57, 0xA4, 0x9D, 0x42, 0x14, 0x07, 0xE8, 0xC0
183                 },
184                 .len = 192
185         },
186         .ciphertext = {
187                 .data = {
188                         0x38, 0xA6, 0xF0, 0x56, 0x05, 0xD2, 0xEC, 0x49,
189                         0x9B, 0xC9, 0x2C, 0xA8, 0x03, 0xC6, 0x7B, 0x28,
190                         0xA1, 0x1A, 0x4B, 0xEE, 0x5A, 0x0C, 0x25, 0xC0
191                 },
192                 .len = 192
193         },
194         .validDataLenInBits = {
195                 .len = 192
196         },
197         .validCipherLenInBits = {
198                 .len = 120
199         },
200         .validAuthLenInBits = {
201                 .len = 192
202         },
203         .validCipherOffsetInBits = {
204                 .len = 64
205         },
206         .digest = {
207                 .data = {0x87, 0x5F, 0xE4, 0x89},
208                 .len  = 4
209         }
210 };
211
212 struct kasumi_test_data kasumi_test_case_4 = {
213         .key = {
214                 .data = {
215                         0xD3, 0xC5, 0xD5, 0x92, 0x32, 0x7F, 0xB1, 0x1C,
216                         0x40, 0x35, 0xC6, 0x68, 0x0A, 0xF8, 0xC6, 0xD1
217                 },
218                 .len = 16
219         },
220         .cipher_iv = {
221                 .data = {
222                         0x39, 0x8A, 0x59, 0xB4, 0x2C, 0x00, 0x00, 0x00,
223                 },
224                 .len = 8
225         },
226         .plaintext = {
227                 .data = {
228                         0x98, 0x1B, 0xA6, 0x82, 0x4C, 0x1B, 0xFB, 0x1A,
229                         0xB4, 0x85, 0x47, 0x20, 0x29, 0xB7, 0x1D, 0x80,
230                         0x8C, 0xE3, 0x3E, 0x2C, 0xC3, 0xC0, 0xB5, 0xFC,
231                         0x1F, 0x3D, 0xE8, 0xA6, 0xDC, 0x66, 0xB1, 0xF0
232                 },
233                 .len = 256
234         },
235         .ciphertext = {
236                 .data = {
237                         0x5B, 0xB9, 0x43, 0x1B, 0xB1, 0xE9, 0x8B, 0xD1,
238                         0x1B, 0x93, 0xDB, 0x7C, 0x3D, 0x45, 0x13, 0x65,
239                         0x59, 0xBB, 0x86, 0xA2, 0x95, 0xAA, 0x20, 0x4E,
240                         0xCB, 0xEB, 0xF6, 0xF7, 0xA5, 0x10, 0x15, 0x10
241                 },
242                 .len = 256
243         },
244         .validCipherLenInBits = {
245                 .len = 253
246         },
247         .validCipherOffsetInBits = {
248                 .len = 0
249         }
250 };
251
252 struct kasumi_test_data kasumi_test_case_5 = {
253         .key = {
254                 .data = {
255                         0x60, 0x90, 0xEA, 0xE0, 0x4C, 0x83, 0x70, 0x6E,
256                         0xEC, 0xBF, 0x65, 0x2B, 0xE8, 0xE3, 0x65, 0x66
257                 },
258                 .len = 16
259         },
260         .cipher_iv = {
261                 .data = {
262                         0x72, 0xA4, 0xF2, 0x0F, 0x48, 0x00, 0x00, 0x00
263                 },
264                 .len = 8
265         },
266         .plaintext = {
267                 .data = {
268                         0x40, 0x98, 0x1B, 0xA6, 0x82, 0x4C, 0x1B, 0xFB,
269                         0x42, 0x86, 0xB2, 0x99, 0x78, 0x3D, 0xAF, 0x44,
270                         0x2C, 0x09, 0x9F, 0x7A, 0xB0, 0xF5, 0x8D, 0x5C,
271                         0x8E, 0x46, 0xB1, 0x04, 0xF0, 0x8F, 0x01, 0xB4,
272                         0x1A, 0xB4, 0x85, 0x47, 0x20, 0x29, 0xB7, 0x1D,
273                         0x36, 0xBD, 0x1A, 0x3D, 0x90, 0xDC, 0x3A, 0x41,
274                         0xB4, 0x6D, 0x51, 0x67, 0x2A, 0xC4, 0xC9, 0x66,
275                         0x3A, 0x2B, 0xE0, 0x63, 0xDA, 0x4B, 0xC8, 0xD2,
276                         0x80, 0x8C, 0xE3, 0x3E, 0x2C, 0xCC, 0xBF, 0xC6,
277                         0x34, 0xE1, 0xB2, 0x59, 0x06, 0x08, 0x76, 0xA0,
278                         0xFB, 0xB5, 0xA4, 0x37, 0xEB, 0xCC, 0x8D, 0x31,
279                         0xC1, 0x9E, 0x44, 0x54, 0x31, 0x87, 0x45, 0xE3,
280                         0x98, 0x76, 0x45, 0x98, 0x7A, 0x98, 0x6F, 0x2C,
281                         0xB0
282                 },
283                 .len = 840
284         },
285         .ciphertext = {
286                 .data = {
287                         0xDD, 0xB3, 0x64, 0xDD, 0x2A, 0xAE, 0xC2, 0x4D,
288                         0xFF, 0x29, 0x19, 0x57, 0xB7, 0x8B, 0xAD, 0x06,
289                         0x3A, 0xC5, 0x79, 0xCD, 0x90, 0x41, 0xBA, 0xBE,
290                         0x89, 0xFD, 0x19, 0x5C, 0x05, 0x78, 0xCB, 0x9F,
291                         0xDE, 0x42, 0x17, 0x56, 0x61, 0x78, 0xD2, 0x02,
292                         0x40, 0x20, 0x6D, 0x07, 0xCF, 0xA6, 0x19, 0xEC,
293                         0x05, 0x9F, 0x63, 0x51, 0x44, 0x59, 0xFC, 0x10,
294                         0xD4, 0x2D, 0xC9, 0x93, 0x4E, 0x56, 0xEB, 0xC0,
295                         0xCB, 0xC6, 0x0D, 0x4D, 0x2D, 0xF1, 0x74, 0x77,
296                         0x4C, 0xBD, 0xCD, 0x5D, 0xA4, 0xA3, 0x50, 0x31,
297                         0x7A, 0x7F, 0x12, 0xE1, 0x94, 0x94, 0x71, 0xF8,
298                         0xA2, 0x95, 0xF2, 0x72, 0xE6, 0x8F, 0xC0, 0x71,
299                         0x59, 0xB0, 0x7D, 0x8E, 0x2D, 0x26, 0xE4, 0x59,
300                         0x9E
301                 },
302                 .len = 840
303         },
304         .validCipherLenInBits = {
305                 .len = 837
306         },
307         .validCipherOffsetInBits = {
308                 .len = 0
309         }
310 };
311
312 struct kasumi_test_data kasumi_test_case_6 = {
313         .key = {
314                 .data = {
315                          0x5A, 0xCB, 0x1D, 0x64, 0x4C, 0x0D, 0x51, 0x20,
316                          0x4E, 0xA5, 0xF1, 0x45, 0x10, 0x10, 0xD8, 0x52
317                 },
318                 .len = 16
319         },
320         .cipher_iv = {
321                 .data = {
322                         0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00
323                 },
324                 .len = 8
325         },
326         .plaintext = {
327                 .data = {
328                         0x38, 0xA6, 0xF0, 0x56, 0x05, 0xD2, 0xEC, 0x49,
329                         0xAD, 0x9C, 0x44, 0x1F, 0x89, 0x0B, 0x38, 0xC4,
330                         0x57, 0xA4, 0x9D, 0x42, 0x14, 0x07, 0xE8, 0xC0
331                 },
332                 .len = 192
333         },
334         .ciphertext = {
335                 .data = {
336                         0x38, 0xA6, 0xF0, 0x56, 0x05, 0xD2, 0xEC, 0x49,
337                         0x9B, 0xC9, 0x2C, 0xA8, 0x03, 0xC6, 0x7B, 0x28,
338                         0xA1, 0x1A, 0x4B, 0xEE, 0x5A, 0x0C, 0x25, 0xC0
339                 },
340                 .len = 192
341         },
342         .validDataLenInBits = {
343                 .len = 192
344         },
345         .validCipherLenInBits = {
346                 .len = 120
347         },
348         .validCipherOffsetInBits = {
349                 .len = 64
350         },
351         .validAuthLenInBits = {
352                 .len = 192
353         },
354         .digest = {
355                 .data = {0x0F, 0xD2, 0xAA, 0xB5},
356                 .len  = 4
357         }
358 };
359 #endif /* TEST_CRYPTODEV_KASUMI_TEST_VECTORS_H_ */