xref: /illumos-gate/usr/src/test/crypto-tests/tests/hmac/hmac_sha2_data.h (revision aecc710ab066150d47e5e9e7269e2e0d69107b4e)
1 /*
2  * This file and its contents are supplied under the terms of the
3  * Common Development and Distribution License (), version 1.0.
4  * You may only use this file in accordance with the terms of version
5  * 1.0 of the CDDL.
6  *
7  * A full copy of the text of the CDDL should have accompanied this
8  * source.  A copy of the CDDL is also available via the Internet at
9  * http://www.illumos.org/license/CDDL.
10  */
11 
12 /*
13  * Copyright 2025 RackTop Systems, Inc.
14  */
15 
16 #include <sys/types.h>
17 
18 /*
19  * Test data from RFC4231
20  */
21 
22 static uint8_t KEY0[] = {
23 	0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
24 	0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
25 	0x0b, 0x0b, 0x0b, 0x0b
26 };
27 
28 /*
29  * Test 1
30  */
31 
32 /* "Hi There" */
33 static uint8_t DATA0[] = { 0x48, 0x69, 0x20, 0x54, 0x68, 0x65, 0x72, 0x65 };
34 
35 /* HMAC-SHA-256 */
36 static uint8_t HMAC0[] = {
37 	0xb0, 0x34, 0x4c, 0x61, 0xd8, 0xdb, 0x38, 0x53,
38 	0x5c, 0xa8, 0xaf, 0xce, 0xaf, 0x0b, 0xf1, 0x2b,
39 	0x88, 0x1d, 0xc2, 0x00, 0xc9, 0x83, 0x3d, 0xa7,
40 	0x26, 0xe9, 0x37, 0x6c, 0x2e, 0x32, 0xcf, 0xf7
41 };
42 
43 
44 /*
45  * Test 2
46  */
47 
48 /* "Jefe" */
49 static uint8_t KEY1[] = { 0x4a, 0x65, 0x66, 0x65 };
50 
51 /* "what do ya want for nothing?" */
52 static uint8_t DATA1[] = {
53 	0x77, 0x68, 0x61, 0x74, 0x20, 0x64, 0x6f, 0x20,
54 	0x79, 0x61, 0x20, 0x77, 0x61, 0x6e, 0x74, 0x20,
55 	0x66, 0x6f, 0x72, 0x20, 0x6e, 0x6f, 0x74, 0x68,
56 	0x69, 0x6e, 0x67, 0x3f
57 };
58 
59 /* HMAC-SHA-256 */
60 static uint8_t HMAC1[] = {
61 	0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e,
62 	0x6a, 0x04, 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7,
63 	0x5a, 0x00, 0x3f, 0x08, 0x9d, 0x27, 0x39, 0x83,
64 	0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec, 0x38, 0x43
65 };
66 
67 
68 /*
69  * Test 3
70  */
71 
72 static uint8_t KEY2[] = {
73 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
74 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
75 	0xaa, 0xaa, 0xaa, 0xaa
76 };
77 
78 static uint8_t DATA2[] = {
79 	0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
80 	0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
81 	0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
82 	0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
83 	0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
84 	0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
85 	0xdd, 0xdd
86 };
87 
88 /* HMAC-SHA-256 */
89 static uint8_t HMAC2[] = {
90 	0x77, 0x3e, 0xa9, 0x1e, 0x36, 0x80, 0x0e, 0x46,
91 	0x85, 0x4d, 0xb8, 0xeb, 0xd0, 0x91, 0x81, 0xa7,
92 	0x29, 0x59, 0x09, 0x8b, 0x3e, 0xf8, 0xc1, 0x22,
93 	0xd9, 0x63, 0x55, 0x14, 0xce, 0xd5, 0x65, 0xfe
94 };
95 
96 
97 /*
98  * Test 4
99  */
100 
101 static uint8_t KEY3[] = {
102 	0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
103 	0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
104 	0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
105 	0x19
106 };
107 
108 static uint8_t DATA3[] = {
109 	0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
110 	0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
111 	0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
112 	0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
113 	0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
114 	0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
115 	0xcd, 0xcd
116 };
117 
118 /* HMAC-SHA-256 */
119 static uint8_t HMAC3[] = {
120 	0x82, 0x55, 0x8a, 0x38, 0x9a, 0x44, 0x3c, 0x0e,
121 	0xa4, 0xcc, 0x81, 0x98, 0x99, 0xf2, 0x08, 0x3a,
122 	0x85, 0xf0, 0xfa, 0xa3, 0xe5, 0x78, 0xf8, 0x07,
123 	0x7a, 0x2e, 0x3f, 0xf4, 0x67, 0x29, 0x66, 0x5b
124 };
125 
126 
127 /*
128  * Test 5
129  */
130 
131 static uint8_t KEY4[] = {
132 	0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
133 	0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
134 	0x0c, 0x0c, 0x0c, 0x0c
135 };
136 
137 /* "Test With Truncation" */
138 static uint8_t DATA4[] = {
139 	0x54, 0x65, 0x73, 0x74, 0x20, 0x57, 0x69, 0x74,
140 	0x68, 0x20, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61,
141 	0x74, 0x69, 0x6f, 0x6e
142 };
143 
144 /* HMAC-SHA-256 */
145 static uint8_t HMAC4[] = {
146 	0xa3, 0xb6, 0x16, 0x74, 0x73, 0x10, 0x0e, 0xe0,
147 	0x6e, 0x0c, 0x79, 0x6c, 0x29, 0x55, 0x55, 0x2b,
148 	/* supposed to truncate here, but we can match the whole */
149 	0xfa, 0x6f, 0x7c, 0x0a, 0x6a, 0x8a, 0xef, 0x8b,
150 	0x93, 0xf8, 0x60, 0xaa, 0xb0, 0xcd, 0x20, 0xc5
151 };
152 
153 
154 /*
155  * Test 6
156  */
157 
158 static uint8_t KEY5[] = {
159 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
160 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
161 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
162 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
163 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
164 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
165 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
166 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
167 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
168 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
169 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
170 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
171 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
172 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
173 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
174 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
175 	0xaa, 0xaa, 0xaa
176 };
177 
178 /* "Test Using Larger Than Block-Size Key - Hash Key First" */
179 static uint8_t DATA5[] = {
180 	0x54, 0x65, 0x73, 0x74, 0x20, 0x55, 0x73, 0x69,
181 	0x6e, 0x67, 0x20, 0x4c, 0x61, 0x72, 0x67, 0x65,
182 	0x72, 0x20, 0x54, 0x68, 0x61, 0x6e, 0x20, 0x42,
183 	0x6c, 0x6f, 0x63, 0x6b, 0x2d, 0x53, 0x69, 0x7a,
184 	0x65, 0x20, 0x4b, 0x65, 0x79, 0x20, 0x2d, 0x20,
185 	0x48, 0x61, 0x73, 0x68, 0x20, 0x4b, 0x65, 0x79,
186 	0x20, 0x46, 0x69, 0x72, 0x73, 0x74
187 };
188 
189 /* HMAC-SHA-256 */
190 static uint8_t HMAC5[] = {
191 	0x60, 0xe4, 0x31, 0x59, 0x1e, 0xe0, 0xb6, 0x7f,
192 	0x0d, 0x8a, 0x26, 0xaa, 0xcb, 0xf5, 0xb7, 0x7f,
193 	0x8e, 0x0b, 0xc6, 0x21, 0x37, 0x28, 0xc5, 0x14,
194 	0x05, 0x46, 0x04, 0x0f, 0x0e, 0xe3, 0x7f, 0x54
195 };
196 
197 
198 static uint8_t KEY6[] = {
199 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
200 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
201 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
202 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
203 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
204 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
205 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
206 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
207 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
208 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
209 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
210 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
211 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
212 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
213 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
214 	0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
215 	0xaa, 0xaa, 0xaa
216 };
217 
218 /*
219  * "This is a test using a larger than block-size key and a larger than "
220  * "block-size data. The key needs to be hashed before being used by the "
221  * "HMAC algorithm."
222  */
223 static uint8_t DATA6[] = {
224 	0x54, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20,
225 	0x61, 0x20, 0x74, 0x65, 0x73, 0x74, 0x20, 0x75,
226 	0x73, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x6c,
227 	0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74, 0x68,
228 	0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63, 0x6b,
229 	0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x6b, 0x65,
230 	0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x61, 0x20,
231 	0x6c, 0x61, 0x72, 0x67, 0x65, 0x72, 0x20, 0x74,
232 	0x68, 0x61, 0x6e, 0x20, 0x62, 0x6c, 0x6f, 0x63,
233 	0x6b, 0x2d, 0x73, 0x69, 0x7a, 0x65, 0x20, 0x64,
234 	0x61, 0x74, 0x61, 0x2e, 0x20, 0x54, 0x68, 0x65,
235 	0x20, 0x6b, 0x65, 0x79, 0x20, 0x6e, 0x65, 0x65,
236 	0x64, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65,
237 	0x20, 0x68, 0x61, 0x73, 0x68, 0x65, 0x64, 0x20,
238 	0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, 0x62,
239 	0x65, 0x69, 0x6e, 0x67, 0x20, 0x75, 0x73, 0x65,
240 	0x64, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65,
241 	0x20, 0x48, 0x4d, 0x41, 0x43, 0x20, 0x61, 0x6c,
242 	0x67, 0x6f, 0x72, 0x69, 0x74, 0x68, 0x6d, 0x2e
243 };
244 
245 /* HMAC-SHA-256 */
246 static uint8_t HMAC6[] = {
247 	0x9b, 0x09, 0xff, 0xa7, 0x1b, 0x94, 0x2f, 0xcb,
248 	0x27, 0x63, 0x5f, 0xbc, 0xd5, 0xb0, 0xe9, 0x44,
249 	0xbf, 0xdc, 0x63, 0x64, 0x4f, 0x07, 0x13, 0x93,
250 	0x8a, 0x7f, 0x51, 0x53, 0x5c, 0x3a, 0x35, 0xe2
251 };
252