2 * Copyright (c) 2019 Cisco and/or its affiliates.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at:
7 * http://www.apache.org/licenses/LICENSE-2.0
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
16 /* Test vectors published in RFC4231 */
18 #include <vppinfra/clib.h>
19 #include <vnet/crypto/crypto.h>
20 #include <unittest/crypto/crypto.h>
22 static u8 tc1_key[] = {
23 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
24 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
25 0x0b, 0x0b, 0x0b, 0x0b
28 static char tc1_data[8] = "Hi There";
30 static u8 tc1_digest_sha224[] = {
31 0x89, 0x6f, 0xb1, 0x12, 0x8a, 0xbb, 0xdf, 0x19,
32 0x68, 0x32, 0x10, 0x7c, 0xd4, 0x9d, 0xf3, 0x3f,
33 0x47, 0xb4, 0xb1, 0x16, 0x99, 0x12, 0xba, 0x4f,
34 0x53, 0x68, 0x4b, 0x22
37 static u8 tc1_digest_sha256[] = {
38 0xb0, 0x34, 0x4c, 0x61, 0xd8, 0xdb, 0x38, 0x53,
39 0x5c, 0xa8, 0xaf, 0xce, 0xaf, 0x0b, 0xf1, 0x2b,
40 0x88, 0x1d, 0xc2, 0x00, 0xc9, 0x83, 0x3d, 0xa7,
41 0x26, 0xe9, 0x37, 0x6c, 0x2e, 0x32, 0xcf, 0xf7,
44 static u8 tc1_digest_sha384[] = {
45 0xaf, 0xd0, 0x39, 0x44, 0xd8, 0x48, 0x95, 0x62,
46 0x6b, 0x08, 0x25, 0xf4, 0xab, 0x46, 0x90, 0x7f,
47 0x15, 0xf9, 0xda, 0xdb, 0xe4, 0x10, 0x1e, 0xc6,
48 0x82, 0xaa, 0x03, 0x4c, 0x7c, 0xeb, 0xc5, 0x9c,
49 0xfa, 0xea, 0x9e, 0xa9, 0x07, 0x6e, 0xde, 0x7f,
50 0x4a, 0xf1, 0x52, 0xe8, 0xb2, 0xfa, 0x9c, 0xb6
53 static u8 tc1_digest_sha512[] = {
54 0x87, 0xaa, 0x7c, 0xde, 0xa5, 0xef, 0x61, 0x9d,
55 0x4f, 0xf0, 0xb4, 0x24, 0x1a, 0x1d, 0x6c, 0xb0,
56 0x23, 0x79, 0xf4, 0xe2, 0xce, 0x4e, 0xc2, 0x78,
57 0x7a, 0xd0, 0xb3, 0x05, 0x45, 0xe1, 0x7c, 0xde,
58 0xda, 0xa8, 0x33, 0xb7, 0xd6, 0xb8, 0xa7, 0x02,
59 0x03, 0x8b, 0x27, 0x4e, 0xae, 0xa3, 0xf4, 0xe4,
60 0xbe, 0x9d, 0x91, 0x4e, 0xeb, 0x61, 0xf1, 0x70,
61 0x2e, 0x69, 0x6c, 0x20, 0x3a, 0x12, 0x68, 0x54
65 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc1_sha224) = {
66 .name = "RFC4231 TC1",
67 .op = VNET_CRYPTO_OP_SHA224_HMAC,
68 .key = TEST_DATA (tc1_key),
69 .data = TEST_DATA (tc1_data),
70 .expected = TEST_DATA (tc1_digest_sha224),
73 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc1_sha256) = {
74 .name = "RFC4231 TC1",
75 .op = VNET_CRYPTO_OP_SHA256_HMAC,
76 .key = TEST_DATA (tc1_key),
77 .data = TEST_DATA (tc1_data),
78 .expected = TEST_DATA (tc1_digest_sha256),
81 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc1_sha384) = {
82 .name = "RFC4231 TC1",
83 .op = VNET_CRYPTO_OP_SHA384_HMAC,
84 .key = TEST_DATA (tc1_key),
85 .data = TEST_DATA (tc1_data),
86 .expected = TEST_DATA (tc1_digest_sha384),
89 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc1_sha512) = {
90 .name = "RFC4231 TC1",
91 .op = VNET_CRYPTO_OP_SHA512_HMAC,
92 .key = TEST_DATA (tc1_key),
93 .data = TEST_DATA (tc1_data),
94 .expected = TEST_DATA (tc1_digest_sha512),
98 static char tc2_key[4] = "Jefe";
100 static char tc2_data[28] = "what do ya want for nothing?";
102 static u8 tc2_digest_sha224[] = {
103 0xa3, 0x0e, 0x01, 0x09, 0x8b, 0xc6, 0xdb, 0xbf,
104 0x45, 0x69, 0x0f, 0x3a, 0x7e, 0x9e, 0x6d, 0x0f,
105 0x8b, 0xbe, 0xa2, 0xa3, 0x9e, 0x61, 0x48, 0x00,
106 0x8f, 0xd0, 0x5e, 0x44
109 static u8 tc2_digest_sha256[] = {
110 0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e,
111 0x6a, 0x04, 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7,
112 0x5a, 0x00, 0x3f, 0x08, 0x9d, 0x27, 0x39, 0x83,
113 0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec, 0x38, 0x43,
116 static u8 tc2_digest_sha384[] = {
117 0xaf, 0x45, 0xd2, 0xe3, 0x76, 0x48, 0x40, 0x31,
118 0x61, 0x7f, 0x78, 0xd2, 0xb5, 0x8a, 0x6b, 0x1b,
119 0x9c, 0x7e, 0xf4, 0x64, 0xf5, 0xa0, 0x1b, 0x47,
120 0xe4, 0x2e, 0xc3, 0x73, 0x63, 0x22, 0x44, 0x5e,
121 0x8e, 0x22, 0x40, 0xca, 0x5e, 0x69, 0xe2, 0xc7,
122 0x8b, 0x32, 0x39, 0xec, 0xfa, 0xb2, 0x16, 0x49,
125 static u8 tc2_digest_sha512[] = {
126 0x16, 0x4b, 0x7a, 0x7b, 0xfc, 0xf8, 0x19, 0xe2,
127 0xe3, 0x95, 0xfb, 0xe7, 0x3b, 0x56, 0xe0, 0xa3,
128 0x87, 0xbd, 0x64, 0x22, 0x2e, 0x83, 0x1f, 0xd6,
129 0x10, 0x27, 0x0c, 0xd7, 0xea, 0x25, 0x05, 0x54,
130 0x97, 0x58, 0xbf, 0x75, 0xc0, 0x5a, 0x99, 0x4a,
131 0x6d, 0x03, 0x4f, 0x65, 0xf8, 0xf0, 0xe6, 0xfd,
132 0xca, 0xea, 0xb1, 0xa3, 0x4d, 0x4a, 0x6b, 0x4b,
133 0x63, 0x6e, 0x07, 0x0a, 0x38, 0xbc, 0xe7, 0x37,
137 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc2_sha224) = {
138 .name = "RFC4231 TC2",
139 .op = VNET_CRYPTO_OP_SHA224_HMAC,
140 .key = TEST_DATA (tc2_key),
141 .data = TEST_DATA (tc2_data),
142 .expected = TEST_DATA (tc2_digest_sha224),
145 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc2_sha256) = {
146 .name = "RFC4231 TC2",
147 .op = VNET_CRYPTO_OP_SHA256_HMAC,
148 .key = TEST_DATA (tc2_key),
149 .data = TEST_DATA (tc2_data),
150 .expected = TEST_DATA (tc2_digest_sha256),
153 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc2_sha384) = {
154 .name = "RFC4231 TC2",
155 .op = VNET_CRYPTO_OP_SHA384_HMAC,
156 .key = TEST_DATA (tc2_key),
157 .data = TEST_DATA (tc2_data),
158 .expected = TEST_DATA (tc2_digest_sha384),
161 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc2_sha512) = {
162 .name = "RFC4231 TC2",
163 .op = VNET_CRYPTO_OP_SHA512_HMAC,
164 .key = TEST_DATA (tc2_key),
165 .data = TEST_DATA (tc2_data),
166 .expected = TEST_DATA (tc2_digest_sha512),
170 static u8 tc3_key[20] = {
171 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
172 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
173 0xaa, 0xaa, 0xaa, 0xaa
176 static u8 tc3_data[50] = {
177 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
178 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
179 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
180 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
181 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
182 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
186 static u8 tc3_digest_sha224[] = {
187 0x7f, 0xb3, 0xcb, 0x35, 0x88, 0xc6, 0xc1, 0xf6,
188 0xff, 0xa9, 0x69, 0x4d, 0x7d, 0x6a, 0xd2, 0x64,
189 0x93, 0x65, 0xb0, 0xc1, 0xf6, 0x5d, 0x69, 0xd1,
190 0xec, 0x83, 0x33, 0xea
193 static u8 tc3_digest_sha256[] = {
194 0x77, 0x3e, 0xa9, 0x1e, 0x36, 0x80, 0x0e, 0x46,
195 0x85, 0x4d, 0xb8, 0xeb, 0xd0, 0x91, 0x81, 0xa7,
196 0x29, 0x59, 0x09, 0x8b, 0x3e, 0xf8, 0xc1, 0x22,
197 0xd9, 0x63, 0x55, 0x14, 0xce, 0xd5, 0x65, 0xfe
200 static u8 tc3_digest_sha384[] = {
201 0x88, 0x06, 0x26, 0x08, 0xd3, 0xe6, 0xad, 0x8a,
202 0x0a, 0xa2, 0xac, 0xe0, 0x14, 0xc8, 0xa8, 0x6f,
203 0x0a, 0xa6, 0x35, 0xd9, 0x47, 0xac, 0x9f, 0xeb,
204 0xe8, 0x3e, 0xf4, 0xe5, 0x59, 0x66, 0x14, 0x4b,
205 0x2a, 0x5a, 0xb3, 0x9d, 0xc1, 0x38, 0x14, 0xb9,
206 0x4e, 0x3a, 0xb6, 0xe1, 0x01, 0xa3, 0x4f, 0x27
209 static u8 tc3_digest_sha512[] = {
210 0xfa, 0x73, 0xb0, 0x08, 0x9d, 0x56, 0xa2, 0x84,
211 0xef, 0xb0, 0xf0, 0x75, 0x6c, 0x89, 0x0b, 0xe9,
212 0xb1, 0xb5, 0xdb, 0xdd, 0x8e, 0xe8, 0x1a, 0x36,
213 0x55, 0xf8, 0x3e, 0x33, 0xb2, 0x27, 0x9d, 0x39,
214 0xbf, 0x3e, 0x84, 0x82, 0x79, 0xa7, 0x22, 0xc8,
215 0x06, 0xb4, 0x85, 0xa4, 0x7e, 0x67, 0xc8, 0x07,
216 0xb9, 0x46, 0xa3, 0x37, 0xbe, 0xe8, 0x94, 0x26,
217 0x74, 0x27, 0x88, 0x59, 0xe1, 0x32, 0x92, 0xfb
221 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc3_sha224) = {
222 .name = "RFC4231 TC3",
223 .op = VNET_CRYPTO_OP_SHA224_HMAC,
224 .key = TEST_DATA (tc3_key),
225 .data = TEST_DATA (tc3_data),
226 .expected = TEST_DATA (tc3_digest_sha224),
229 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc3_sha256) = {
230 .name = "RFC4231 TC3",
231 .op = VNET_CRYPTO_OP_SHA256_HMAC,
232 .key = TEST_DATA (tc3_key),
233 .data = TEST_DATA (tc3_data),
234 .expected = TEST_DATA (tc3_digest_sha256),
237 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc3_sha384) = {
238 .name = "RFC4231 TC3",
239 .op = VNET_CRYPTO_OP_SHA384_HMAC,
240 .key = TEST_DATA (tc3_key),
241 .data = TEST_DATA (tc3_data),
242 .expected = TEST_DATA (tc3_digest_sha384),
245 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc3_sha512) = {
246 .name = "RFC4231 TC3",
247 .op = VNET_CRYPTO_OP_SHA512_HMAC,
248 .key = TEST_DATA (tc3_key),
249 .data = TEST_DATA (tc3_data),
250 .expected = TEST_DATA (tc3_digest_sha512),
254 static u8 tc4_key[25] = {
255 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
256 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
257 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
261 static u8 tc4_data[50] = {
262 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
263 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
264 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
265 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
266 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
267 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
271 static u8 tc4_digest_sha224[] = {
272 0x6c, 0x11, 0x50, 0x68, 0x74, 0x01, 0x3c, 0xac,
273 0x6a, 0x2a, 0xbc, 0x1b, 0xb3, 0x82, 0x62, 0x7c,
274 0xec, 0x6a, 0x90, 0xd8, 0x6e, 0xfc, 0x01, 0x2d,
275 0xe7, 0xaf, 0xec, 0x5a
278 static u8 tc4_digest_sha256[] = {
279 0x82, 0x55, 0x8a, 0x38, 0x9a, 0x44, 0x3c, 0x0e,
280 0xa4, 0xcc, 0x81, 0x98, 0x99, 0xf2, 0x08, 0x3a,
281 0x85, 0xf0, 0xfa, 0xa3, 0xe5, 0x78, 0xf8, 0x07,
282 0x7a, 0x2e, 0x3f, 0xf4, 0x67, 0x29, 0x66, 0x5b
285 static u8 tc4_digest_sha384[] = {
286 0x3e, 0x8a, 0x69, 0xb7, 0x78, 0x3c, 0x25, 0x85,
287 0x19, 0x33, 0xab, 0x62, 0x90, 0xaf, 0x6c, 0xa7,
288 0x7a, 0x99, 0x81, 0x48, 0x08, 0x50, 0x00, 0x9c,
289 0xc5, 0x57, 0x7c, 0x6e, 0x1f, 0x57, 0x3b, 0x4e,
290 0x68, 0x01, 0xdd, 0x23, 0xc4, 0xa7, 0xd6, 0x79,
291 0xcc, 0xf8, 0xa3, 0x86, 0xc6, 0x74, 0xcf, 0xfb
294 static u8 tc4_digest_sha512[] = {
295 0xb0, 0xba, 0x46, 0x56, 0x37, 0x45, 0x8c, 0x69,
296 0x90, 0xe5, 0xa8, 0xc5, 0xf6, 0x1d, 0x4a, 0xf7,
297 0xe5, 0x76, 0xd9, 0x7f, 0xf9, 0x4b, 0x87, 0x2d,
298 0xe7, 0x6f, 0x80, 0x50, 0x36, 0x1e, 0xe3, 0xdb,
299 0xa9, 0x1c, 0xa5, 0xc1, 0x1a, 0xa2, 0x5e, 0xb4,
300 0xd6, 0x79, 0x27, 0x5c, 0xc5, 0x78, 0x80, 0x63,
301 0xa5, 0xf1, 0x97, 0x41, 0x12, 0x0c, 0x4f, 0x2d,
302 0xe2, 0xad, 0xeb, 0xeb, 0x10, 0xa2, 0x98, 0xdd
306 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc4_sha224) = {
307 .name = "RFC4231 TC4",
308 .op = VNET_CRYPTO_OP_SHA224_HMAC,
309 .key = TEST_DATA (tc4_key),
310 .data = TEST_DATA (tc4_data),
311 .expected = TEST_DATA (tc4_digest_sha224),
314 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc4_sha256) = {
315 .name = "RFC4231 TC4",
316 .op = VNET_CRYPTO_OP_SHA256_HMAC,
317 .key = TEST_DATA (tc4_key),
318 .data = TEST_DATA (tc4_data),
319 .expected = TEST_DATA (tc4_digest_sha256),
322 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc4_sha384) = {
323 .name = "RFC4231 TC4",
324 .op = VNET_CRYPTO_OP_SHA384_HMAC,
325 .key = TEST_DATA (tc4_key),
326 .data = TEST_DATA (tc4_data),
327 .expected = TEST_DATA (tc4_digest_sha384),
330 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc4_sha512) = {
331 .name = "RFC4231 TC4",
332 .op = VNET_CRYPTO_OP_SHA512_HMAC,
333 .key = TEST_DATA (tc4_key),
334 .data = TEST_DATA (tc4_data),
335 .expected = TEST_DATA (tc4_digest_sha512),
339 static u8 tc5_key[20] = {
340 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
341 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
342 0x0c, 0x0c, 0x0c, 0x0c
345 static u8 tc5_data[] = {
346 0x54, 0x65, 0x73, 0x74, 0x20, 0x57, 0x69, 0x74,
347 0x68, 0x20, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61,
348 0x74, 0x69, 0x6f, 0x6e
351 static u8 tc5_digest_sha224[16] = {
352 0x0e, 0x2a, 0xea, 0x68, 0xa9, 0x0c, 0x8d, 0x37,
353 0xc9, 0x88, 0xbc, 0xdb, 0x9f, 0xca, 0x6f, 0xa8
356 static u8 tc5_digest_sha256[16] = {
357 0xa3, 0xb6, 0x16, 0x74, 0x73, 0x10, 0x0e, 0xe0,
358 0x6e, 0x0c, 0x79, 0x6c, 0x29, 0x55, 0x55, 0x2b
361 static u8 tc5_digest_sha384[16] = {
362 0x3a, 0xbf, 0x34, 0xc3, 0x50, 0x3b, 0x2a, 0x23,
363 0xa4, 0x6e, 0xfc, 0x61, 0x9b, 0xae, 0xf8, 0x97
366 static u8 tc5_digest_sha512[16] = {
367 0x41, 0x5f, 0xad, 0x62, 0x71, 0x58, 0x0a, 0x53,
368 0x1d, 0x41, 0x79, 0xbc, 0x89, 0x1d, 0x87, 0xa6
372 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc5_sha224) = {
373 .name = "RFC4231 TC5",
374 .op = VNET_CRYPTO_OP_SHA224_HMAC,
375 .key = TEST_DATA (tc5_key),
376 .data = TEST_DATA (tc5_data),
377 .expected = TEST_DATA (tc5_digest_sha224),
378 .hmac_trunc_len = 16,
381 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc5_sha256) = {
382 .name = "RFC4231 TC5",
383 .op = VNET_CRYPTO_OP_SHA256_HMAC,
384 .key = TEST_DATA (tc5_key),
385 .data = TEST_DATA (tc5_data),
386 .expected = TEST_DATA (tc5_digest_sha256),
387 .hmac_trunc_len = 16,
390 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc5_sha384) = {
391 .name = "RFC4231 TC5",
392 .op = VNET_CRYPTO_OP_SHA384_HMAC,
393 .key = TEST_DATA (tc5_key),
394 .data = TEST_DATA (tc5_data),
395 .expected = TEST_DATA (tc5_digest_sha384),
396 .hmac_trunc_len = 16,
399 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc5_sha512) = {
400 .name = "RFC4231 TC5",
401 .op = VNET_CRYPTO_OP_SHA512_HMAC,
402 .key = TEST_DATA (tc5_key),
403 .data = TEST_DATA (tc5_data),
404 .expected = TEST_DATA (tc5_digest_sha512),
405 .hmac_trunc_len = 16,
409 static u8 tc6_key[131] = {
410 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
411 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
412 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
413 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
414 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
415 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
416 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
417 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
418 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
419 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
420 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
421 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
422 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
423 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
424 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
425 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
429 static char tc6_data[54] =
430 "Test Using Larger Than Block-Size Key - Hash Key First";
432 static u8 tc6_digest_sha224[] = {
433 0x95, 0xe9, 0xa0, 0xdb, 0x96, 0x20, 0x95, 0xad,
434 0xae, 0xbe, 0x9b, 0x2d, 0x6f, 0x0d, 0xbc, 0xe2,
435 0xd4, 0x99, 0xf1, 0x12, 0xf2, 0xd2, 0xb7, 0x27,
436 0x3f, 0xa6, 0x87, 0x0e
439 static u8 tc6_digest_sha256[] = {
440 0x60, 0xe4, 0x31, 0x59, 0x1e, 0xe0, 0xb6, 0x7f,
441 0x0d, 0x8a, 0x26, 0xaa, 0xcb, 0xf5, 0xb7, 0x7f,
442 0x8e, 0x0b, 0xc6, 0x21, 0x37, 0x28, 0xc5, 0x14,
443 0x05, 0x46, 0x04, 0x0f, 0x0e, 0xe3, 0x7f, 0x54
446 static u8 tc6_digest_sha384[] = {
447 0x4e, 0xce, 0x08, 0x44, 0x85, 0x81, 0x3e, 0x90,
448 0x88, 0xd2, 0xc6, 0x3a, 0x04, 0x1b, 0xc5, 0xb4,
449 0x4f, 0x9e, 0xf1, 0x01, 0x2a, 0x2b, 0x58, 0x8f,
450 0x3c, 0xd1, 0x1f, 0x05, 0x03, 0x3a, 0xc4, 0xc6,
451 0x0c, 0x2e, 0xf6, 0xab, 0x40, 0x30, 0xfe, 0x82,
452 0x96, 0x24, 0x8d, 0xf1, 0x63, 0xf4, 0x49, 0x52
455 static u8 tc6_digest_sha512[] = {
456 0x80, 0xb2, 0x42, 0x63, 0xc7, 0xc1, 0xa3, 0xeb,
457 0xb7, 0x14, 0x93, 0xc1, 0xdd, 0x7b, 0xe8, 0xb4,
458 0x9b, 0x46, 0xd1, 0xf4, 0x1b, 0x4a, 0xee, 0xc1,
459 0x12, 0x1b, 0x01, 0x37, 0x83, 0xf8, 0xf3, 0x52,
460 0x6b, 0x56, 0xd0, 0x37, 0xe0, 0x5f, 0x25, 0x98,
461 0xbd, 0x0f, 0xd2, 0x21, 0x5d, 0x6a, 0x1e, 0x52,
462 0x95, 0xe6, 0x4f, 0x73, 0xf6, 0x3f, 0x0a, 0xec,
463 0x8b, 0x91, 0x5a, 0x98, 0x5d, 0x78, 0x65, 0x98
467 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc6_sha224) = {
468 .name = "RFC4231 TC6",
469 .op = VNET_CRYPTO_OP_SHA224_HMAC,
470 .key = TEST_DATA (tc6_key),
471 .data = TEST_DATA (tc6_data),
472 .expected = TEST_DATA (tc6_digest_sha224),
475 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc6_sha256) = {
476 .name = "RFC4231 TC6",
477 .op = VNET_CRYPTO_OP_SHA256_HMAC,
478 .key = TEST_DATA (tc6_key),
479 .data = TEST_DATA (tc6_data),
480 .expected = TEST_DATA (tc6_digest_sha256),
483 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc6_sha384) = {
484 .name = "RFC4231 TC6",
485 .op = VNET_CRYPTO_OP_SHA384_HMAC,
486 .key = TEST_DATA (tc6_key),
487 .data = TEST_DATA (tc6_data),
488 .expected = TEST_DATA (tc6_digest_sha384),
491 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc6_sha512) = {
492 .name = "RFC4231 TC6",
493 .op = VNET_CRYPTO_OP_SHA512_HMAC,
494 .key = TEST_DATA (tc6_key),
495 .data = TEST_DATA (tc6_data),
496 .expected = TEST_DATA (tc6_digest_sha512),
500 static u8 tc7_key[131] = {
501 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
502 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
503 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
504 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
505 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
506 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
507 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
508 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
509 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
510 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
511 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
512 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
513 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
514 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
515 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
516 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
520 static char tc7_data[152] =
521 "This is a test using a larger than block-size key and a larger than "
522 "block-size data. The key needs to be hashed before being used by the "
525 static u8 tc7_digest_sha224[] = {
526 0x3a, 0x85, 0x41, 0x66, 0xac, 0x5d, 0x9f, 0x02,
527 0x3f, 0x54, 0xd5, 0x17, 0xd0, 0xb3, 0x9d, 0xbd,
528 0x94, 0x67, 0x70, 0xdb, 0x9c, 0x2b, 0x95, 0xc9,
529 0xf6, 0xf5, 0x65, 0xd1
532 static u8 tc7_digest_sha256[] = {
533 0x9b, 0x09, 0xff, 0xa7, 0x1b, 0x94, 0x2f, 0xcb,
534 0x27, 0x63, 0x5f, 0xbc, 0xd5, 0xb0, 0xe9, 0x44,
535 0xbf, 0xdc, 0x63, 0x64, 0x4f, 0x07, 0x13, 0x93,
536 0x8a, 0x7f, 0x51, 0x53, 0x5c, 0x3a, 0x35, 0xe2
539 static u8 tc7_digest_sha384[] = {
540 0x66, 0x17, 0x17, 0x8e, 0x94, 0x1f, 0x02, 0x0d,
541 0x35, 0x1e, 0x2f, 0x25, 0x4e, 0x8f, 0xd3, 0x2c,
542 0x60, 0x24, 0x20, 0xfe, 0xb0, 0xb8, 0xfb, 0x9a,
543 0xdc, 0xce, 0xbb, 0x82, 0x46, 0x1e, 0x99, 0xc5,
544 0xa6, 0x78, 0xcc, 0x31, 0xe7, 0x99, 0x17, 0x6d,
545 0x38, 0x60, 0xe6, 0x11, 0x0c, 0x46, 0x52, 0x3e
548 static u8 tc7_digest_sha512[] = {
549 0xe3, 0x7b, 0x6a, 0x77, 0x5d, 0xc8, 0x7d, 0xba,
550 0xa4, 0xdf, 0xa9, 0xf9, 0x6e, 0x5e, 0x3f, 0xfd,
551 0xde, 0xbd, 0x71, 0xf8, 0x86, 0x72, 0x89, 0x86,
552 0x5d, 0xf5, 0xa3, 0x2d, 0x20, 0xcd, 0xc9, 0x44,
553 0xb6, 0x02, 0x2c, 0xac, 0x3c, 0x49, 0x82, 0xb1,
554 0x0d, 0x5e, 0xeb, 0x55, 0xc3, 0xe4, 0xde, 0x15,
555 0x13, 0x46, 0x76, 0xfb, 0x6d, 0xe0, 0x44, 0x60,
556 0x65, 0xc9, 0x74, 0x40, 0xfa, 0x8c, 0x6a, 0x58
560 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc7_sha224) = {
561 .name = "RFC4231 TC7",
562 .op = VNET_CRYPTO_OP_SHA224_HMAC,
563 .key = TEST_DATA (tc7_key),
564 .data = TEST_DATA (tc7_data),
565 .expected = TEST_DATA (tc7_digest_sha224),
568 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc7_sha256) = {
569 .name = "RFC4231 TC7",
570 .op = VNET_CRYPTO_OP_SHA256_HMAC,
571 .key = TEST_DATA (tc7_key),
572 .data = TEST_DATA (tc7_data),
573 .expected = TEST_DATA (tc7_digest_sha256),
576 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc7_sha384) = {
577 .name = "RFC4231 TC7",
578 .op = VNET_CRYPTO_OP_SHA384_HMAC,
579 .key = TEST_DATA (tc7_key),
580 .data = TEST_DATA (tc7_data),
581 .expected = TEST_DATA (tc7_digest_sha384),
584 UNITTEST_REGISTER_CRYPTO_TEST (rfc4231_tc7_sha512) = {
585 .name = "RFC4231 TC7",
586 .op = VNET_CRYPTO_OP_SHA512_HMAC,
587 .key = TEST_DATA (tc7_key),
588 .data = TEST_DATA (tc7_data),
589 .expected = TEST_DATA (tc7_digest_sha512),
594 * fd.io coding-style-patch-verification: ON
597 * eval: (c-set-style "gnu")