Resync with broadcom drivers 5.100.138.20 and utilities.
[tomato.git] / release / src-rt / bcmcrypto / rc4_vectors.h
blobc540396e6e47a55e17ac4ededd0f701bd1da7650
1 /*
2 * rc4_vectors.h
3 * RC4 stream cipher test vectors
5 * Copyright (C) 2010, Broadcom Corporation
6 * All Rights Reserved.
7 *
8 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation;
9 * the contents of this file may not be disclosed to third parties, copied
10 * or duplicated in any form, in whole or in part, without the prior
11 * written permission of Broadcom Corporation.
13 * $Id: rc4_vectors.h,v 1.3 2006-06-14 21:08:49 Exp $
16 #include <typedefs.h>
18 /* 16 byte key, 16 bytes of data */
19 uint8 key_00[] = {
20 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
21 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
24 uint8 input_00[] = {
25 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
26 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF
29 uint8 ref_00[] = {
30 0xE9, 0x8D, 0x62, 0xCA, 0x03, 0xB7, 0x7F, 0xBB,
31 0x8E, 0x42, 0x3D, 0x7D, 0xC2, 0x00, 0xC4, 0xB0
34 /* 24 byte key, 16 bytes of data */
35 uint8 key_01[] = {
36 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
37 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
38 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17
41 uint8 input_01[] = {
42 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
43 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF
46 uint8 ref_01[] = {
47 0x2A, 0x82, 0xD7, 0xBB, 0xCF, 0x41, 0xE7, 0xDE,
48 0x3F, 0x7F, 0x3F, 0x27, 0x28, 0xD3, 0xE3, 0xBC
51 /* 32 byte key, 16 bytes of data */
52 uint8 key_02[] = {
53 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
54 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
55 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
56 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
59 uint8 input_02[] = {
60 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
61 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF
64 uint8 ref_02[] = {
65 0x10, 0x35, 0xD3, 0xFA, 0xEE, 0xFA, 0xCF, 0x4A,
66 0xFE, 0xA5, 0x34, 0x3B, 0xC4, 0xE8, 0x87, 0x6C
69 /* 24 byte key, 24 bytes of data */
70 uint8 key_03[] = {
71 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
72 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
73 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17
76 uint8 input_03[] = {
77 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
78 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF,
79 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
82 uint8 ref_03[] = {
83 0x2A, 0x82, 0xD7, 0xBB, 0xCF, 0x41, 0xE7, 0xDE,
84 0x3F, 0x7F, 0x3F, 0x27, 0x28, 0xD3, 0xE3, 0xBC,
85 0xBC, 0xAC, 0x8A, 0x44, 0xFC, 0x5A, 0xFE, 0x8A
88 /* 32 byte key, 24 bytes of data */
89 uint8 key_04[] = {
90 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
91 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
92 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
93 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
96 uint8 input_04[] = {
97 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
98 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF,
99 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07
102 uint8 ref_04[] = {
103 0x10, 0x35, 0xD3, 0xFA, 0xEE, 0xFA, 0xCF, 0x4A,
104 0xFE, 0xA5, 0x34, 0x3B, 0xC4, 0xE8, 0x87, 0x6C,
105 0xCC, 0x88, 0x22, 0x77, 0xD7, 0xCB, 0xA2, 0xBA
108 /* 32 byte key, 32 bytes of data */
109 uint8 key_05[] = {
110 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
111 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
112 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
113 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F
116 uint8 input_05[] = {
117 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
118 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF,
119 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
120 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
123 uint8 ref_05[] = {
124 0x10, 0x35, 0xD3, 0xFA, 0xEE, 0xFA, 0xCF, 0x4A,
125 0xFE, 0xA5, 0x34, 0x3B, 0xC4, 0xE8, 0x87, 0x6C,
126 0xCC, 0x88, 0x22, 0x77, 0xD7, 0xCB, 0xA2, 0xBA,
127 0x6E, 0xF3, 0x2A, 0x82, 0x85, 0xC3, 0xC6, 0x97
130 /* 16 byte key, 32 bytes of data */
131 uint8 key_06[] = {
132 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
133 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
136 uint8 input_06[] = {
137 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
138 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF,
139 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
140 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
143 uint8 ref_06[] = {
144 0xE9, 0x8D, 0x62, 0xCA, 0x03, 0xB7, 0x7F, 0xBB,
145 0x8E, 0x42, 0x3D, 0x7D, 0xC2, 0x00, 0xC4, 0xB0,
146 0xD3, 0x70, 0x83, 0x5C, 0xF6, 0xB2, 0x44, 0xE9,
147 0x87, 0x97, 0xAF, 0xD2, 0xF5, 0x3A, 0xED, 0x0D
150 /* RC4 test vectors generated with our tcl rc4 implementation */
151 uint8 key_07[] = {
152 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05
155 uint8 input_07[] = {
156 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
157 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
160 uint8 ref_07[] = {
161 0x0f, 0x17, 0xc0, 0x50, 0xbd, 0x01, 0x7f, 0x4a,
162 0xce, 0xa1, 0xde, 0xc3, 0x10, 0x2b, 0x16, 0xd1
165 uint8 key_08[] = {
166 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05
169 uint8 input_08[] = {
170 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
171 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
174 uint8 ref_08[] = {
175 0x0e, 0x15, 0xc3, 0x54, 0xb8, 0x07, 0x78, 0x42,
176 0xcf, 0xa3, 0xdd, 0xc7, 0x15, 0x2d, 0x11, 0xd9
179 uint8 key_09[] = {
180 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05
183 uint8 input_09[] = {
184 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
185 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18
188 uint8 ref_09[] = {
189 0x1e, 0x05, 0xd3, 0x44, 0xa8, 0x17, 0x68, 0x52,
190 0xdf, 0xb3, 0xcd, 0xd7, 0x05, 0x3d, 0x01, 0xc9
193 uint8 key_10[] = {
194 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05
197 uint8 input_10[] = {
198 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
199 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10
202 uint8 ref_10[] = {
203 0xf1, 0xcb, 0x7a, 0xc8, 0xcb, 0x55, 0x4d, 0x5a,
204 0x30, 0x7d, 0x64, 0x5b, 0x66, 0x7f, 0x24, 0xc1
207 uint8 key_11[] = {
208 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
209 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d
212 uint8 input_11[] = {
213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
214 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
217 uint8 ref_11[] = {
218 0x85, 0x5c, 0xba, 0xe1, 0x78, 0xfa, 0x5c, 0xc2,
219 0xf8, 0x81, 0xa2, 0xef, 0xce, 0x49, 0x47, 0xb7
222 uint8 key_12[] = {
223 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
224 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d
227 uint8 input_12[] = {
228 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
229 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08
232 uint8 ref_12[] = {
233 0x84, 0x5e, 0xb9, 0xe5, 0x7d, 0xfc, 0x5b, 0xca,
234 0xf9, 0x83, 0xa1, 0xeb, 0xcb, 0x4f, 0x40, 0xbf
237 uint8 key_13[] = {
238 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
239 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d
242 uint8 input_13[] = {
243 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
244 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18
247 uint8 ref_13[] = {
248 0x94, 0x4e, 0xa9, 0xf5, 0x6d, 0xec, 0x4b, 0xda,
249 0xe9, 0x93, 0xb1, 0xfb, 0xdb, 0x5f, 0x50, 0xaf
252 uint8 key_14[] = {
253 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
254 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d
257 uint8 input_14[] = {
258 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10,
259 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10
262 uint8 ref_14[] = {
263 0x7b, 0x80, 0x00, 0x79, 0x0e, 0xae, 0x6e, 0xd2,
264 0x06, 0x5d, 0x18, 0x77, 0xb8, 0x1d, 0x75, 0xa7
267 typedef struct {
268 int kl;
269 uint8 *key;
270 int il;
271 uint8 *input;
272 uint8 *ref;
273 } rc4_vector_t;
275 #define RC4_VECTOR_ENTRY(x) \
276 { sizeof(key_##x), key_##x, sizeof(input_##x), input_##x, ref_##x }
278 rc4_vector_t rc4_vec[] = {
279 RC4_VECTOR_ENTRY(00),
280 RC4_VECTOR_ENTRY(01),
281 RC4_VECTOR_ENTRY(02),
282 RC4_VECTOR_ENTRY(03),
283 RC4_VECTOR_ENTRY(04),
284 RC4_VECTOR_ENTRY(05),
285 RC4_VECTOR_ENTRY(06),
286 RC4_VECTOR_ENTRY(07),
287 RC4_VECTOR_ENTRY(08),
288 RC4_VECTOR_ENTRY(09),
289 RC4_VECTOR_ENTRY(10),
290 RC4_VECTOR_ENTRY(11),
291 RC4_VECTOR_ENTRY(12),
292 RC4_VECTOR_ENTRY(13),
293 RC4_VECTOR_ENTRY(14)