5 /* HMAC-MD5 test vectors as per RFC 2202 */
8 guint8 key_md5_test1[] = {
9 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
10 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b };
11 guint8 result_md5_test1[] = {
12 0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c, 0x13, 0xf4,
13 0x8e, 0xf8, 0x15, 0x8b, 0xfc, 0x9d };
16 guint8 result_md5_test2[] = {
17 0x75, 0x0c, 0x78, 0x3e, 0x6a, 0xb0, 0xb5, 0x03, 0xea, 0xa8,
18 0x6e, 0x31, 0x0a, 0x5d, 0xb7, 0x38 };
21 guint8 key_md5_test3[] = {
22 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
23 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa };
24 guint8 data_md5_test3[] = {
25 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
26 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
27 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
28 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
29 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd };
30 guint8 result_md5_test3[] = {
31 0x56, 0xbe, 0x34, 0x52, 0x1d, 0x14, 0x4c, 0x88, 0xdb, 0xb8,
32 0xc7, 0x33, 0xf0, 0xe8, 0xb3, 0xf6 };
35 guint8 key_md5_test4[] = {
36 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
37 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
38 0x15, 0x16, 0x17, 0x18, 0x19 };
39 guint8 data_md5_test4[] = {
40 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
41 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
42 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
43 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
44 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd };
45 guint8 result_md5_test4[] = {
46 0x69, 0x7e, 0xaf, 0x0a, 0xca, 0x3a, 0x3a, 0xea, 0x3a, 0x75,
47 0x16, 0x47, 0x46, 0xff, 0xaa, 0x79 };
50 guint8 key_md5_test5[] = {
51 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
52 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c};
53 guint8 result_md5_test5[] = {
54 0x56, 0x46, 0x1e, 0xf2, 0x34, 0x2e, 0xdc, 0x00, 0xf9, 0xba,
55 0xb9, 0x95, 0x69, 0x0e, 0xfd, 0x4c };
58 guint8 key_md5_test6[] = {
59 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
60 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
61 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
62 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
63 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
64 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
65 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
66 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa };
67 guint8 result_md5_test6[] = {
68 0x6b, 0x1a, 0xb7, 0xfe, 0x4b, 0xd7, 0xbf, 0x8f, 0x0b, 0x62,
69 0xe6, 0xce, 0x61, 0xb9, 0xd0, 0xcd };
72 guint8 key_md5_test7[] = {
73 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
74 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
75 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
76 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
77 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
78 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
79 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
80 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa };
81 guint8 result_md5_test7[] = {
82 0x6f, 0x63, 0x0f, 0xad, 0x67, 0xcd, 0xa0, 0xee, 0x1f, 0xb1,
83 0xf5, 0x62, 0xdb, 0x3a, 0xa5, 0x3e };
85 /* HMAC-SHA1, HMAC-SHA256 and HMAC-SHA512 test vectors
86 * as per RFCs 2202 and 4868.
88 * See: https://tools.ietf.org/html/rfc4868#section-2.7.1 */
91 guint8 key_sha_test1[] = {
92 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
93 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b };
94 guint8 result_sha1_test1[] = {
95 0xb6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64, 0xe2, 0x8b,
96 0xc0, 0xb6, 0xfb, 0x37, 0x8c, 0x8e, 0xf1, 0x46, 0xbe, 0x00 };
97 guint8 result_sha256_test1[] = {
98 0xb0, 0x34, 0x4c, 0x61, 0xd8, 0xdb, 0x38, 0x53, 0x5c, 0xa8,
99 0xaf, 0xce, 0xaf, 0x0b, 0xf1, 0x2b, 0x88, 0x1d, 0xc2, 0x00,
100 0xc9, 0x83, 0x3d, 0xa7, 0x26, 0xe9, 0x37, 0x6c, 0x2e, 0x32,
102 guint8 result_sha512_test1[] = {
103 0x87, 0xaa, 0x7c, 0xde, 0xa5, 0xef, 0x61, 0x9d, 0x4f, 0xf0,
104 0xb4, 0x24, 0x1a, 0x1d, 0x6c, 0xb0, 0x23, 0x79, 0xf4, 0xe2,
105 0xce, 0x4e, 0xc2, 0x78, 0x7a, 0xd0, 0xb3, 0x05, 0x45, 0xe1,
106 0x7c, 0xde, 0xda, 0xa8, 0x33, 0xb7, 0xd6, 0xb8, 0xa7, 0x02,
107 0x03, 0x8b, 0x27, 0x4e, 0xae, 0xa3, 0xf4, 0xe4, 0xbe, 0x9d,
108 0x91, 0x4e, 0xeb, 0x61, 0xf1, 0x70, 0x2e, 0x69, 0x6c, 0x20,
109 0x3a, 0x12, 0x68, 0x54 };
112 guint8 result_sha1_test2[] = {
113 0xef, 0xfc, 0xdf, 0x6a, 0xe5, 0xeb, 0x2f, 0xa2, 0xd2, 0x74,
114 0x16, 0xd5, 0xf1, 0x84, 0xdf, 0x9c, 0x25, 0x9a, 0x7c, 0x79 };
115 guint8 result_sha256_test2[] = {
116 0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e, 0x6a, 0x04,
117 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7, 0x5a, 0x00, 0x3f, 0x08,
118 0x9d, 0x27, 0x39, 0x83, 0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec,
120 guint8 result_sha512_test2[] = {
121 0x16, 0x4b, 0x7a, 0x7b, 0xfc, 0xf8, 0x19, 0xe2, 0xe3, 0x95,
122 0xfb, 0xe7, 0x3b, 0x56, 0xe0, 0xa3, 0x87, 0xbd, 0x64, 0x22,
123 0x2e, 0x83, 0x1f, 0xd6, 0x10, 0x27, 0x0c, 0xd7, 0xea, 0x25,
124 0x05, 0x54, 0x97, 0x58, 0xbf, 0x75, 0xc0, 0x5a, 0x99, 0x4a,
125 0x6d, 0x03, 0x4f, 0x65, 0xf8, 0xf0, 0xe6, 0xfd, 0xca, 0xea,
126 0xb1, 0xa3, 0x4d, 0x4a, 0x6b, 0x4b, 0x63, 0x6e, 0x07, 0x0a,
127 0x38, 0xbc, 0xe7, 0x37 };
130 guint8 key_sha_test3[] = {
131 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
132 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa };
133 guint8 data_sha_test3[] = {
134 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
135 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
136 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
137 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
138 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd };
139 guint8 result_sha1_test3[] = {
140 0x12, 0x5d, 0x73, 0x42, 0xb9, 0xac, 0x11, 0xcd, 0x91, 0xa3,
141 0x9a, 0xf4, 0x8a, 0xa1, 0x7b, 0x4f, 0x63, 0xf1, 0x75, 0xd3 };
142 guint8 result_sha256_test3[] = {
143 0x77, 0x3e, 0xa9, 0x1e, 0x36, 0x80, 0x0e, 0x46, 0x85, 0x4d,
144 0xb8, 0xeb, 0xd0, 0x91, 0x81, 0xa7, 0x29, 0x59, 0x09, 0x8b,
145 0x3e, 0xf8, 0xc1, 0x22, 0xd9, 0x63, 0x55, 0x14, 0xce, 0xd5,
147 guint8 result_sha512_test3[] = {
148 0xfa, 0x73, 0xb0, 0x08, 0x9d, 0x56, 0xa2, 0x84, 0xef, 0xb0,
149 0xf0, 0x75, 0x6c, 0x89, 0x0b, 0xe9, 0xb1, 0xb5, 0xdb, 0xdd,
150 0x8e, 0xe8, 0x1a, 0x36, 0x55, 0xf8, 0x3e, 0x33, 0xb2, 0x27,
151 0x9d, 0x39, 0xbf, 0x3e, 0x84, 0x82, 0x79, 0xa7, 0x22, 0xc8,
152 0x06, 0xb4, 0x85, 0xa4, 0x7e, 0x67, 0xc8, 0x07, 0xb9, 0x46,
153 0xa3, 0x37, 0xbe, 0xe8, 0x94, 0x26, 0x74, 0x27, 0x88, 0x59,
154 0xe1, 0x32, 0x92, 0xfb };
157 guint8 key_sha_test4[] = {
158 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
159 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14,
160 0x15, 0x16, 0x17, 0x18, 0x19 };
161 guint8 data_sha_test4[] = {
162 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
163 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
164 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
165 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
166 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd };
167 guint8 result_sha1_test4[] = {
168 0x4c, 0x90, 0x07, 0xf4, 0x02, 0x62, 0x50, 0xc6, 0xbc, 0x84,
169 0x14, 0xf9, 0xbf, 0x50, 0xc8, 0x6c, 0x2d, 0x72, 0x35, 0xda };
170 guint8 result_sha256_test4[] = {
171 0x82, 0x55, 0x8a, 0x38, 0x9a, 0x44, 0x3c, 0x0e, 0xa4, 0xcc,
172 0x81, 0x98, 0x99, 0xf2, 0x08, 0x3a, 0x85, 0xf0, 0xfa, 0xa3,
173 0xe5, 0x78, 0xf8, 0x07, 0x7a, 0x2e, 0x3f, 0xf4, 0x67, 0x29,
175 guint8 result_sha512_test4[] = {
176 0xb0, 0xba, 0x46, 0x56, 0x37, 0x45, 0x8c, 0x69, 0x90, 0xe5,
177 0xa8, 0xc5, 0xf6, 0x1d, 0x4a, 0xf7, 0xe5, 0x76, 0xd9, 0x7f,
178 0xf9, 0x4b, 0x87, 0x2d, 0xe7, 0x6f, 0x80, 0x50, 0x36, 0x1e,
179 0xe3, 0xdb, 0xa9, 0x1c, 0xa5, 0xc1, 0x1a, 0xa2, 0x5e, 0xb4,
180 0xd6, 0x79, 0x27, 0x5c, 0xc5, 0x78, 0x80, 0x63, 0xa5, 0xf1,
181 0x97, 0x41, 0x12, 0x0c, 0x4f, 0x2d, 0xe2, 0xad, 0xeb, 0xeb,
182 0x10, 0xa2, 0x98, 0xdd };
184 /* Test 5 (note: different for SHA-256/SHA-512) */
185 guint8 key_sha1_test5[] = {
186 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
187 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c };
188 guint8 result_sha1_test5[] = {
189 0x4c, 0x1a, 0x03, 0x42, 0x4b, 0x55, 0xe0, 0x7f, 0xe7, 0xf2,
190 0x7b, 0xe1, 0xd5, 0x8b, 0xb9, 0x32, 0x4a, 0x9a, 0x5a, 0x04 };
192 /* Test 6 & 7 (note: different for SHA-1 and SHA-256/SHA-512) */
193 guint8 key_sha1_test6_7[] = {
194 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
195 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
196 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
197 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
198 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
199 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
200 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
201 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa };
203 guint8 result_sha1_test6[] = {
204 0xaa, 0x4a, 0xe5, 0xe1, 0x52, 0x72, 0xd0, 0x0e, 0x95, 0x70,
205 0x56, 0x37, 0xce, 0x8a, 0x3b, 0x55, 0xed, 0x40, 0x21, 0x12 };
207 guint8 result_sha1_test7[] = {
208 0xe8, 0xe9, 0x9d, 0xf, 0x45, 0x23, 0x7d, 0x78, 0x6d, 0x6b,
209 0xba, 0xa7, 0x96, 0x5c, 0x78, 0x8, 0xbb, 0xff, 0x1a, 0x91 };
211 /* Test 5 & 6 for SHA-256 and SHA-512. */
212 guint8 key_sha256_test5_6[] = {
213 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
214 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
215 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
216 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
217 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
218 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
219 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
220 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
221 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
222 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
223 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
224 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
225 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
228 guint8 result_sha256_test5[] = {
229 0x60, 0xe4, 0x31, 0x59, 0x1e, 0xe0, 0xb6, 0x7f, 0x0d, 0x8a,
230 0x26, 0xaa, 0xcb, 0xf5, 0xb7, 0x7f, 0x8e, 0x0b, 0xc6, 0x21,
231 0x37, 0x28, 0xc5, 0x14, 0x05, 0x46, 0x04, 0x0f, 0x0e, 0xe3,
233 guint8 result_sha512_test5[] = {
234 0x80, 0xb2, 0x42, 0x63, 0xc7, 0xc1, 0xa3, 0xeb, 0xb7, 0x14,
235 0x93, 0xc1, 0xdd, 0x7b, 0xe8, 0xb4, 0x9b, 0x46, 0xd1, 0xf4,
236 0x1b, 0x4a, 0xee, 0xc1, 0x12, 0x1b, 0x01, 0x37, 0x83, 0xf8,
237 0xf3, 0x52, 0x6b, 0x56, 0xd0, 0x37, 0xe0, 0x5f, 0x25, 0x98,
238 0xbd, 0x0f, 0xd2, 0x21, 0x5d, 0x6a, 0x1e, 0x52, 0x95, 0xe6,
239 0x4f, 0x73, 0xf6, 0x3f, 0x0a, 0xec, 0x8b, 0x91, 0x5a, 0x98,
240 0x5d, 0x78, 0x65, 0x98 };
242 guint8 result_sha256_test6[] = {
243 0x9b, 0x09, 0xff, 0xa7, 0x1b, 0x94, 0x2f, 0xcb, 0x27, 0x63,
244 0x5f, 0xbc, 0xd5, 0xb0, 0xe9, 0x44, 0xbf, 0xdc, 0x63, 0x64,
245 0x4f, 0x07, 0x13, 0x93, 0x8a, 0x7f, 0x51, 0x53, 0x5c, 0x3a,
247 guint8 result_sha512_test6[] = {
248 0xe3, 0x7b, 0x6a, 0x77, 0x5d, 0xc8, 0x7d, 0xba, 0xa4, 0xdf,
249 0xa9, 0xf9, 0x6e, 0x5e, 0x3f, 0xfd, 0xde, 0xbd, 0x71, 0xf8,
250 0x86, 0x72, 0x89, 0x86, 0x5d, 0xf5, 0xa3, 0x2d, 0x20, 0xcd,
251 0xc9, 0x44, 0xb6, 0x02, 0x2c, 0xac, 0x3c, 0x49, 0x82, 0xb1,
252 0x0d, 0x5e, 0xeb, 0x55, 0xc3, 0xe4, 0xde, 0x15, 0x13, 0x46,
253 0x76, 0xfb, 0x6d, 0xe0, 0x44, 0x60, 0x65, 0xc9, 0x74, 0x40,
254 0xfa, 0x8c, 0x6a, 0x58 };
258 GChecksumType digest_type;
263 gconstpointer result;
266 HmacCase hmac_md5_tests[] = {
267 { G_CHECKSUM_MD5, key_md5_test1, 16, "Hi There", 8, result_md5_test1 },
268 { G_CHECKSUM_MD5, "Jefe", 4, "what do ya want for nothing?", 28,
270 { G_CHECKSUM_MD5, key_md5_test3, 16, data_md5_test3, 50,
272 { G_CHECKSUM_MD5, key_md5_test4, 25, data_md5_test4, 50,
274 { G_CHECKSUM_MD5, key_md5_test5, 16, "Test With Truncation", 20,
276 { G_CHECKSUM_MD5, key_md5_test6, 80,
277 "Test Using Larger Than Block-Size Key - Hash Key First", 54,
279 { G_CHECKSUM_MD5, key_md5_test7, 80,
280 "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data",
281 73, result_md5_test7 },
282 { -1, NULL, 0, NULL, 0, NULL },
285 HmacCase hmac_sha1_tests[] = {
286 { G_CHECKSUM_SHA1, key_sha_test1, 20, "Hi There", 8, result_sha1_test1 },
287 { G_CHECKSUM_SHA1, "Jefe", 4, "what do ya want for nothing?", 28,
289 { G_CHECKSUM_SHA1, key_sha_test3, 20, data_sha_test3, 50,
291 { G_CHECKSUM_SHA1, key_sha_test4, 25, data_sha_test4, 50,
293 { G_CHECKSUM_SHA1, key_sha1_test5, 20, "Test With Truncation", 20,
295 { G_CHECKSUM_SHA1, key_sha1_test6_7, 80,
296 "Test Using Larger Than Block-Size Key - Hash Key First", 54,
298 { G_CHECKSUM_SHA1, key_sha1_test6_7, 80,
299 "Test Using Larger Than Block-Size Key and Larger" \
300 " Than One Block-Size Data", 73, result_sha1_test7, },
301 { -1, NULL, 0, NULL, 0, NULL },
304 HmacCase hmac_sha256_tests[] = {
305 { G_CHECKSUM_SHA256, key_sha_test1, 20, "Hi There", 8, result_sha256_test1 },
306 { G_CHECKSUM_SHA256, "Jefe", 4, "what do ya want for nothing?", 28,
307 result_sha256_test2 },
308 { G_CHECKSUM_SHA256, key_sha_test3, 20, data_sha_test3, 50,
309 result_sha256_test3 },
310 { G_CHECKSUM_SHA256, key_sha_test4, 25, data_sha_test4, 50,
311 result_sha256_test4 },
312 { G_CHECKSUM_SHA256, key_sha256_test5_6, 131,
313 "Test Using Larger Than Block-Size Key - Hash Key First", 54,
314 result_sha256_test5 },
315 { G_CHECKSUM_SHA256, key_sha256_test5_6, 131,
316 "This is a test using a larger than block-size key and a larger than "
317 "block-size data. The key needs to be hashed before being used by the "
318 "HMAC algorithm.", 152, result_sha256_test6, },
319 { -1, NULL, 0, NULL, 0, NULL },
322 HmacCase hmac_sha512_tests[] = {
323 { G_CHECKSUM_SHA512, key_sha_test1, 20, "Hi There", 8, result_sha512_test1 },
324 { G_CHECKSUM_SHA512, "Jefe", 4, "what do ya want for nothing?", 28,
325 result_sha512_test2 },
326 { G_CHECKSUM_SHA512, key_sha_test3, 20, data_sha_test3, 50,
327 result_sha512_test3 },
328 { G_CHECKSUM_SHA512, key_sha_test4, 25, data_sha_test4, 50,
329 result_sha512_test4 },
330 { G_CHECKSUM_SHA512, key_sha256_test5_6, 131,
331 "Test Using Larger Than Block-Size Key - Hash Key First", 54,
332 result_sha512_test5 },
333 { G_CHECKSUM_SHA512, key_sha256_test5_6, 131,
334 "This is a test using a larger than block-size key and a larger than "
335 "block-size data. The key needs to be hashed before being used by the "
336 "HMAC algorithm.", 152, result_sha512_test6, },
337 { -1, NULL, 0, NULL, 0, NULL },
342 test_hmac (HmacCase *t)
345 gsize digest_len, hmac_len;
348 hmac_len = digest_len = g_checksum_type_get_length (t->digest_type);
349 digest = g_malloc (hmac_len);
351 hmac = g_hmac_new (t->digest_type, t->key, t->key_len);
352 g_hmac_update (hmac, t->data, t->data_len);
353 g_hmac_get_digest (hmac, digest, &digest_len);
355 g_assert_cmpuint (digest_len, ==, hmac_len);
356 g_assert (memcmp (digest, t->result, digest_len) == 0);
363 test_hmac_ref_unref (void)
367 hmac = g_hmac_new (G_CHECKSUM_SHA1, (guchar*)"aaa", 3);
368 check = g_hmac_ref (hmac);
369 g_assert (check == hmac);
370 g_hmac_unref (check);
375 test_hmac_copy (void)
379 hmac = g_hmac_new (G_CHECKSUM_SHA256, (guchar*)"aaa", 3);
380 check = g_hmac_copy (hmac);
381 g_assert (check != hmac);
382 g_assert_cmpstr (g_hmac_get_string (hmac), ==, g_hmac_get_string (check));
383 g_hmac_unref (check);
388 test_hmac_for_data (void)
393 string = g_compute_hmac_for_data (G_CHECKSUM_SHA1,
395 (guchar*)"bcdef", 5);
397 hmac = g_hmac_new (G_CHECKSUM_SHA1, (guchar*)"aaa", 3);
398 g_hmac_update (hmac, (guchar*)"bcdef", 5);
399 g_assert_cmpstr (string, ==, g_hmac_get_string (hmac));
405 test_hmac_for_string (void)
410 string = g_compute_hmac_for_string (G_CHECKSUM_SHA1,
414 hmac = g_hmac_new (G_CHECKSUM_SHA1, (guchar*)"aaa", 3);
415 g_hmac_update (hmac, (guchar*)"bcdef", 5);
416 g_assert_cmpstr (string, ==, g_hmac_get_string (hmac));
426 g_test_init (&argc, &argv, NULL);
428 for (i = 0 ; hmac_sha1_tests[i].key_len > 0 ; i++)
430 gchar *name = g_strdup_printf ("/hmac/sha1-%d", i + 1);
431 g_test_add_data_func (name, hmac_sha1_tests + i,
432 (void (*)(const void *)) test_hmac);
436 for (i = 0 ; hmac_sha256_tests[i].key_len > 0 ; i++)
438 gchar *name = g_strdup_printf ("/hmac/sha256-%d", i + 1);
439 g_test_add_data_func (name, hmac_sha256_tests + i,
440 (void (*)(const void *)) test_hmac);
444 for (i = 0 ; hmac_sha512_tests[i].key_len > 0 ; i++)
446 gchar *name = g_strdup_printf ("/hmac/sha512-%d", i + 1);
447 g_test_add_data_func (name, hmac_sha512_tests + i,
448 (void (*)(const void *)) test_hmac);
452 for (i = 0 ; hmac_md5_tests[i].key_len > 0 ; i++)
454 gchar *name = g_strdup_printf ("/hmac/md5-%d", i + 1);
455 g_test_add_data_func (name, hmac_md5_tests + i,
456 (void (*)(const void *)) test_hmac);
460 g_test_add_func ("/hmac/ref-unref", test_hmac_ref_unref);
461 g_test_add_func ("/hmac/copy", test_hmac_copy);
462 g_test_add_func ("/hmac/for-data", test_hmac_for_data);
463 g_test_add_func ("/hmac/for-string", test_hmac_for_string);
465 return g_test_run ();