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