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