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