test: move unit tests to separate directory
[dpdk.git] / test / test / test_cryptodev_snow3g_test_vectors.h
1 /*-
2  *   BSD LICENSE
3  *
4  *   Copyright(c) 2015 Intel Corporation. All rights reserved.
5  *
6  *   Redistribution and use in source and binary forms, with or without
7  *   modification, are permitted provided that the following conditions
8  *   are met:
9  *
10  *   * Redistributions of source code must retain the above copyright
11  *     notice, this list of conditions and the following disclaimer.
12  *   * Redistributions in binary form must reproduce the above copyright
13  *     notice, this list of conditions and the following disclaimer in
14  *     the documentation and/or other materials provided with the
15  *     distribution.
16  *   * Neither the name of Intel Corporation nor the names of its
17  *     contributors may be used to endorse or promote products derived
18  *     from this software without specific prior written permission.
19  *
20  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32
33 #ifndef TEST_CRYPTODEV_SNOW3G_TEST_VECTORS_H_
34 #define TEST_CRYPTODEV_SNOW3G_TEST_VECTORS_H_
35
36 struct snow3g_test_data {
37         struct {
38                 uint8_t data[64];
39                 unsigned len;
40         } key;
41
42         struct {
43                 uint8_t data[64] __rte_aligned(16);
44                 unsigned len;
45         } iv;
46
47         struct {
48                 uint8_t data[1024];
49                 unsigned len; /* length must be in Bits */
50         } plaintext;
51
52         struct {
53                 uint8_t data[1024];
54                 unsigned len; /* length must be in Bits */
55         } ciphertext;
56
57         struct {
58                 unsigned len;
59         } validDataLenInBits;
60
61         struct {
62                 unsigned len;
63         } validCipherLenInBits;
64
65         struct {
66                 unsigned len;
67         } validCipherOffsetLenInBits;
68
69         struct {
70                 unsigned len;
71         } validAuthLenInBits;
72
73         struct {
74                 unsigned len;
75         } validAuthOffsetLenInBits;
76
77         struct {
78                 uint8_t data[64];
79                 unsigned len;
80         } aad;
81
82         struct {
83                 uint8_t data[64];
84                 unsigned len;
85         } digest;
86 };
87 struct snow3g_test_data snow3g_test_case_1 = {
88         .key = {
89                 .data = {
90                         0x2B, 0xD6, 0x45, 0x9F, 0x82, 0xC5, 0xB3, 0x00,
91                         0x95, 0x2C, 0x49, 0x10, 0x48, 0x81, 0xFF, 0x48
92                 },
93                 .len = 16
94         },
95         .iv = {
96                 .data = {
97                         0x72, 0xA4, 0xF2, 0x0F, 0x64, 0x00, 0x00, 0x00,
98                         0x72, 0xA4, 0xF2, 0x0F, 0x64, 0x00, 0x00, 0x00
99                 },
100                 .len = 16
101         },
102         .plaintext = {
103                 .data = {
104                         0x7E, 0xC6, 0x12, 0x72, 0x74, 0x3B, 0xF1, 0x61,
105                         0x47, 0x26, 0x44, 0x6A, 0x6C, 0x38, 0xCE, 0xD1,
106                         0x66, 0xF6, 0xCA, 0x76, 0xEB, 0x54, 0x30, 0x04,
107                         0x42, 0x86, 0x34, 0x6C, 0xEF, 0x13, 0x0F, 0x92,
108                         0x92, 0x2B, 0x03, 0x45, 0x0D, 0x3A, 0x99, 0x75,
109                         0xE5, 0xBD, 0x2E, 0xA0, 0xEB, 0x55, 0xAD, 0x8E,
110                         0x1B, 0x19, 0x9E, 0x3E, 0xC4, 0x31, 0x60, 0x20,
111                         0xE9, 0xA1, 0xB2, 0x85, 0xE7, 0x62, 0x79, 0x53,
112                         0x59, 0xB7, 0xBD, 0xFD, 0x39, 0xBE, 0xF4, 0xB2,
113                         0x48, 0x45, 0x83, 0xD5, 0xAF, 0xE0, 0x82, 0xAE,
114                         0xE6, 0x38, 0xBF, 0x5F, 0xD5, 0xA6, 0x06, 0x19,
115                         0x39, 0x01, 0xA0, 0x8F, 0x4A, 0xB4, 0x1A, 0xAB,
116                         0x9B, 0x13, 0x48, 0x80
117                 },
118                 .len = 800
119         },
120         .ciphertext = {
121                 .data = {
122                         0x8C, 0xEB, 0xA6, 0x29, 0x43, 0xDC, 0xED, 0x3A,
123                         0x09, 0x90, 0xB0, 0x6E, 0xA1, 0xB0, 0xA2, 0xC4,
124                         0xFB, 0x3C, 0xED, 0xC7, 0x1B, 0x36, 0x9F, 0x42,
125                         0xBA, 0x64, 0xC1, 0xEB, 0x66, 0x65, 0xE7, 0x2A,
126                         0xA1, 0xC9, 0xBB, 0x0D, 0xEA, 0xA2, 0x0F, 0xE8,
127                         0x60, 0x58, 0xB8, 0xBA, 0xEE, 0x2C, 0x2E, 0x7F,
128                         0x0B, 0xEC, 0xCE, 0x48, 0xB5, 0x29, 0x32, 0xA5,
129                         0x3C, 0x9D, 0x5F, 0x93, 0x1A, 0x3A, 0x7C, 0x53,
130                         0x22, 0x59, 0xAF, 0x43, 0x25, 0xE2, 0xA6, 0x5E,
131                         0x30, 0x84, 0xAD, 0x5F, 0x6A, 0x51, 0x3B, 0x7B,
132                         0xDD, 0xC1, 0xB6, 0x5F, 0x0A, 0xA0, 0xD9, 0x7A,
133                         0x05, 0x3D, 0xB5, 0x5A, 0x88, 0xC4, 0xC4, 0xF9,
134                         0x60, 0x5E, 0x41, 0x40
135                 },
136                 .len = 800
137         },
138         .validDataLenInBits = {
139                 .len = 798
140         },
141         .validCipherLenInBits = {
142                 .len = 800
143         },
144         .validCipherOffsetLenInBits = {
145                 .len = 128
146         },
147         .aad = {
148                 .data = {
149                          0x72, 0xA4, 0xF2, 0x0F, 0x64, 0x00, 0x00, 0x00,
150                          0x72, 0xA4, 0xF2, 0x0F, 0x64, 0x00, 0x00, 0x00
151                 },
152                 .len = 16
153         }
154 };
155
156 struct snow3g_test_data snow3g_test_case_2 = {
157         .key = {
158                 .data = {
159                         0xEF, 0xA8, 0xB2, 0x22, 0x9E, 0x72, 0x0C, 0x2A,
160                         0x7C, 0x36, 0xEA, 0x55, 0xE9, 0x60, 0x56, 0x95
161                 },
162                 .len = 16
163         },
164         .iv = {
165                .data = {
166                         0xE2, 0x8B, 0xCF, 0x7B, 0xC0, 0x00, 0x00, 0x00,
167                         0xE2, 0x8B, 0xCF, 0x7B, 0xC0, 0x00, 0x00, 0x00
168                 },
169                .len = 16
170         },
171         .plaintext = {
172                 .data = {
173                         0x10, 0x11, 0x12, 0x31, 0xE0, 0x60, 0x25, 0x3A,
174                         0x43, 0xFD, 0x3F, 0x57, 0xE3, 0x76, 0x07, 0xAB,
175                         0x28, 0x27, 0xB5, 0x99, 0xB6, 0xB1, 0xBB, 0xDA,
176                         0x37, 0xA8, 0xAB, 0xCC, 0x5A, 0x8C, 0x55, 0x0D,
177                         0x1B, 0xFB, 0x2F, 0x49, 0x46, 0x24, 0xFB, 0x50,
178                         0x36, 0x7F, 0xA3, 0x6C, 0xE3, 0xBC, 0x68, 0xF1,
179                         0x1C, 0xF9, 0x3B, 0x15, 0x10, 0x37, 0x6B, 0x02,
180                         0x13, 0x0F, 0x81, 0x2A, 0x9F, 0xA1, 0x69, 0xD8
181                 },
182                 .len = 512
183         },
184         .ciphertext = {
185                 .data = {
186                                 0xE0, 0xDA, 0x15, 0xCA, 0x8E, 0x25, 0x54, 0xF5,
187                                 0xE5, 0x6C, 0x94, 0x68, 0xDC, 0x6C, 0x7C, 0x12,
188                                 0x9C, 0x56, 0x8A, 0xA5, 0x03, 0x23, 0x17, 0xE0,
189                                 0x4E, 0x07, 0x29, 0x64, 0x6C, 0xAB, 0xEF, 0xA6,
190                                 0x89, 0x86, 0x4C, 0x41, 0x0F, 0x24, 0xF9, 0x19,
191                                 0xE6, 0x1E, 0x3D, 0xFD, 0xFA, 0xD7, 0x7E, 0x56,
192                                 0x0D, 0xB0, 0xA9, 0xCD, 0x36, 0xC3, 0x4A, 0xE4,
193                                 0x18, 0x14, 0x90, 0xB2, 0x9F, 0x5F, 0xA2, 0xFC
194                 },
195                 .len = 512
196         },
197         .validDataLenInBits = {
198                 .len = 510
199         },
200         .validCipherLenInBits = {
201                 .len = 512
202         },
203         .validCipherOffsetLenInBits = {
204                 .len = 128
205         },
206         .aad = {
207                 .data = {
208                          0xE2, 0x8B, 0xCF, 0x7B, 0xC0, 0x00, 0x00, 0x00,
209                          0xE2, 0x8B, 0xCF, 0x7B, 0xC0, 0x00, 0x00, 0x00
210                 },
211                 .len = 16
212         }
213 };
214
215 struct snow3g_test_data snow3g_test_case_3 = {
216         .key = {
217                 .data = {
218                          0x5A, 0xCB, 0x1D, 0x64, 0x4C, 0x0D, 0x51, 0x20,
219                          0x4E, 0xA5, 0xF1, 0x45, 0x10, 0x10, 0xD8, 0x52
220                 },
221                 .len = 16
222         },
223         .iv = {
224                 .data = {
225                         0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00,
226                         0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00
227                 },
228                 .len = 16
229         },
230         .plaintext = {
231                 .data = {
232                         0xAD, 0x9C, 0x44, 0x1F, 0x89, 0x0B, 0x38, 0xC4,
233                         0x57, 0xA4, 0x9D, 0x42, 0x14, 0x07, 0xE8
234                 },
235                 .len = 120
236         },
237         .ciphertext = {
238                 .data = {
239                         0xBA, 0x0F, 0x31, 0x30, 0x03, 0x34, 0xC5, 0x6B,
240                         0x52, 0xA7, 0x49, 0x7C, 0xBA, 0xC0, 0x46
241                 },
242                 .len = 120
243         },
244         .validDataLenInBits = {
245                 .len = 120
246         },
247         .validCipherLenInBits = {
248                 .len = 120
249         },
250         .validCipherOffsetLenInBits = {
251                 .len = 128
252         },
253         .aad = {
254                 .data = {
255                         0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00,
256                         0xFA, 0x55, 0x6B, 0x26, 0x1C, 0x00, 0x00, 0x00
257                 },
258                 .len = 16
259         },
260         .digest = {
261                 .data = {0xE8, 0x60, 0x5A, 0x3E},
262                 .len  = 4
263         },
264         .validAuthLenInBits = {
265                 .len = 120
266         },
267         .validAuthOffsetLenInBits = {
268                 .len = 128
269         }
270 };
271
272 struct snow3g_test_data snow3g_test_case_4 = {
273         .key = {
274                 .data = {
275                         0xD3, 0xC5, 0xD5, 0x92, 0x32, 0x7F, 0xB1, 0x1C,
276                         0x40, 0x35, 0xC6, 0x68, 0x0A, 0xF8, 0xC6, 0xD1
277                 },
278                 .len = 16
279         },
280         .iv = {
281                 .data = {
282                         0x39, 0x8A, 0x59, 0xB4, 0x2C, 0x00, 0x00, 0x00,
283                         0x39, 0x8A, 0x59, 0xB4, 0x2C, 0x00, 0x00, 0x00
284                 },
285                 .len = 16
286         },
287         .plaintext = {
288                 .data = {
289                         0x98, 0x1B, 0xA6, 0x82, 0x4C, 0x1B, 0xFB, 0x1A,
290                         0xB4, 0x85, 0x47, 0x20, 0x29, 0xB7, 0x1D, 0x80,
291                         0x8C, 0xE3, 0x3E, 0x2C, 0xC3, 0xC0, 0xB5, 0xFC,
292                         0x1F, 0x3D, 0xE8, 0xA6, 0xDC, 0x66, 0xB1, 0xF0
293                 },
294                 .len = 256
295         },
296         .ciphertext = {
297                 .data = {
298                         0x98, 0x9B, 0x71, 0x9C, 0xDC, 0x33, 0xCE, 0xB7,
299                         0xCF, 0x27, 0x6A, 0x52, 0x82, 0x7C, 0xEF, 0x94,
300                         0xA5, 0x6C, 0x40, 0xC0, 0xAB, 0x9D, 0x81, 0xF7,
301                         0xA2, 0xA9, 0xBA, 0xC6, 0x0E, 0x11, 0xC4, 0xB0
302                 },
303                 .len = 256
304         },
305         .validDataLenInBits = {
306                 .len = 253
307         },
308         .validCipherLenInBits = {
309                 .len = 256
310         },
311         .validCipherOffsetLenInBits = {
312                 .len = 128
313         }
314 };
315
316 struct snow3g_test_data snow3g_test_case_5 = {
317         .key = {
318                 .data = {
319                         0x60, 0x90, 0xEA, 0xE0, 0x4C, 0x83, 0x70, 0x6E,
320                         0xEC, 0xBF, 0x65, 0x2B, 0xE8, 0xE3, 0x65, 0x66
321                 },
322                 .len = 16
323         },
324         .iv = {
325                 .data = {
326                         0x72, 0xA4, 0xF2, 0x0F, 0x48, 0x00, 0x00, 0x00,
327                         0x72, 0xA4, 0xF2, 0x0F, 0x48, 0x00, 0x00, 0x00
328                 },
329                 .len = 16},
330         .plaintext = {
331                 .data = {
332                         0x40, 0x98, 0x1B, 0xA6, 0x82, 0x4C, 0x1B, 0xFB,
333                         0x42, 0x86, 0xB2, 0x99, 0x78, 0x3D, 0xAF, 0x44,
334                         0x2C, 0x09, 0x9F, 0x7A, 0xB0, 0xF5, 0x8D, 0x5C,
335                         0x8E, 0x46, 0xB1, 0x04, 0xF0, 0x8F, 0x01, 0xB4,
336                         0x1A, 0xB4, 0x85, 0x47, 0x20, 0x29, 0xB7, 0x1D,
337                         0x36, 0xBD, 0x1A, 0x3D, 0x90, 0xDC, 0x3A, 0x41,
338                         0xB4, 0x6D, 0x51, 0x67, 0x2A, 0xC4, 0xC9, 0x66,
339                         0x3A, 0x2B, 0xE0, 0x63, 0xDA, 0x4B, 0xC8, 0xD2,
340                         0x80, 0x8C, 0xE3, 0x3E, 0x2C, 0xCC, 0xBF, 0xC6,
341                         0x34, 0xE1, 0xB2, 0x59, 0x06, 0x08, 0x76, 0xA0,
342                         0xFB, 0xB5, 0xA4, 0x37, 0xEB, 0xCC, 0x8D, 0x31,
343                         0xC1, 0x9E, 0x44, 0x54, 0x31, 0x87, 0x45, 0xE3,
344                         0x98, 0x76, 0x45, 0x98, 0x7A, 0x98, 0x6F, 0x2C,
345                         0xB0
346                 },
347                 .len = 840
348         },
349         .ciphertext = {
350                 .data = {
351                         0x58, 0x92, 0xBB, 0xA8, 0x8B, 0xBB, 0xCA, 0xAE,
352                         0xAE, 0x76, 0x9A, 0xA0, 0x6B, 0x68, 0x3D, 0x3A,
353                         0x17, 0xCC, 0x04, 0xA3, 0x69, 0x88, 0x16, 0x97,
354                         0x43, 0x5E, 0x44, 0xFE, 0xD5, 0xFF, 0x9A, 0xF5,
355                         0x7B, 0x9E, 0x89, 0x0D, 0x4D, 0x5C, 0x64, 0x70,
356                         0x98, 0x85, 0xD4, 0x8A, 0xE4, 0x06, 0x90, 0xEC,
357                         0x04, 0x3B, 0xAA, 0xE9, 0x70, 0x57, 0x96, 0xE4,
358                         0xA9, 0xFF, 0x5A, 0x4B, 0x8D, 0x8B, 0x36, 0xD7,
359                         0xF3, 0xFE, 0x57, 0xCC, 0x6C, 0xFD, 0x6C, 0xD0,
360                         0x05, 0xCD, 0x38, 0x52, 0xA8, 0x5E, 0x94, 0xCE,
361                         0x6B, 0xCD, 0x90, 0xD0, 0xD0, 0x78, 0x39, 0xCE,
362                         0x09, 0x73, 0x35, 0x44, 0xCA, 0x8E, 0x35, 0x08,
363                         0x43, 0x24, 0x85, 0x50, 0x92, 0x2A, 0xC1, 0x28,
364                         0x18
365                 },
366                 .len = 840
367         },
368         .validDataLenInBits = {
369                 .len = 837
370         },
371         .validCipherLenInBits = {
372                 .len = 840
373         },
374         .validCipherOffsetLenInBits = {
375                 .len = 128
376         }
377 };
378 struct snow3g_test_data snow3g_test_case_6 = {
379         .key = {
380                 .data = {
381                         0xC7, 0x36, 0xC6, 0xAA, 0xB2, 0x2B, 0xFF, 0xF9,
382                         0x1E, 0x26, 0x98, 0xD2, 0xE2, 0x2A, 0xD5, 0x7E
383                 },
384                 .len = 16
385         },
386         .iv = {
387                 .data = {
388                         0x14, 0x79, 0x3E, 0x41, 0x03, 0x97, 0xE8, 0xFD,
389                         0x94, 0x79, 0x3E, 0x41, 0x03, 0x97, 0x68, 0xFD
390                 },
391                 .len = 16
392         },
393         .aad = {
394                 .data = {
395                         0x14, 0x79, 0x3E, 0x41, 0x03, 0x97, 0xE8, 0xFD,
396                         0x94, 0x79, 0x3E, 0x41, 0x03, 0x97, 0x68, 0xFD
397                 },
398                 .len = 16
399         },
400         .plaintext = {
401                 .data = {
402                         0xD0, 0xA7, 0xD4, 0x63, 0xDF, 0x9F, 0xB2, 0xB2,
403                         0x78, 0x83, 0x3F, 0xA0, 0x2E, 0x23, 0x5A, 0xA1,
404                         0x72, 0xBD, 0x97, 0x0C, 0x14, 0x73, 0xE1, 0x29,
405                         0x07, 0xFB, 0x64, 0x8B, 0x65, 0x99, 0xAA, 0xA0,
406                         0xB2, 0x4A, 0x03, 0x86, 0x65, 0x42, 0x2B, 0x20,
407                         0xA4, 0x99, 0x27, 0x6A, 0x50, 0x42, 0x70, 0x09
408                 },
409                 .len = 384
410         },
411         .ciphertext = {
412            .data = {
413                         0x95, 0x2E, 0x5A, 0xE1, 0x50, 0xB8, 0x59, 0x2A,
414                         0x9B, 0xA0, 0x38, 0xA9, 0x8E, 0x2F, 0xED, 0xAB,
415                         0xFD, 0xC8, 0x3B, 0x47, 0x46, 0x0B, 0x50, 0x16,
416                         0xEC, 0x88, 0x45, 0xB6, 0x05, 0xC7, 0x54, 0xF8,
417                         0xBD, 0x91, 0xAA, 0xB6, 0xA4, 0xDC, 0x64, 0xB4,
418                         0xCB, 0xEB, 0x97, 0x06, 0x4C, 0xF7, 0x02, 0x3D
419                 },
420                 .len = 384
421         },
422         .digest = {
423                 .data = {0x38, 0xB5, 0x54, 0xC0 },
424                 .len  = 4
425         },
426         .validDataLenInBits = {
427                 .len = 384
428         },
429         .validCipherLenInBits = {
430                 .len = 384
431         },
432         .validCipherOffsetLenInBits = {
433                 .len = 128
434         },
435         .validAuthLenInBits = {
436                 .len = 384
437         },
438         .validAuthOffsetLenInBits = {
439                 .len = 128
440         }
441 };
442
443 #endif /* TEST_CRYPTODEV_SNOW3G_TEST_VECTORS_H_ */