OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgo/] [go/] [crypto/] [hmac/] [hmac_test.go] - Blame information for rev 858

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 747 jeremybenn
// Copyright 2009 The Go Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4
 
5
package hmac
6
 
7
import (
8
        "crypto/md5"
9
        "crypto/sha1"
10
        "crypto/sha256"
11
        "crypto/sha512"
12
        "fmt"
13
        "hash"
14
        "testing"
15
)
16
 
17
type hmacTest struct {
18
        hash func() hash.Hash
19
        key  []byte
20
        in   []byte
21
        out  string
22
}
23
 
24
var hmacTests = []hmacTest{
25
        // Tests from US FIPS 198
26
        // http://csrc.nist.gov/publications/fips/fips198/fips-198a.pdf
27
        {
28
                sha1.New,
29
                []byte{
30
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
31
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
32
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
33
                        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
34
                        0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
35
                        0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
36
                        0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
37
                        0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
38
                },
39
                []byte("Sample #1"),
40
                "4f4ca3d5d68ba7cc0a1208c9c61e9c5da0403c0a",
41
        },
42
        {
43
                sha1.New,
44
                []byte{
45
                        0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
46
                        0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
47
                        0x40, 0x41, 0x42, 0x43,
48
                },
49
                []byte("Sample #2"),
50
                "0922d3405faa3d194f82a45830737d5cc6c75d24",
51
        },
52
        {
53
                sha1.New,
54
                []byte{
55
                        0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
56
                        0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
57
                        0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
58
                        0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
59
                        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
60
                        0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
61
                        0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
62
                        0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
63
                        0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
64
                        0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
65
                        0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
66
                        0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
67
                        0xb0, 0xb1, 0xb2, 0xb3,
68
                },
69
                []byte("Sample #3"),
70
                "bcf41eab8bb2d802f3d05caf7cb092ecf8d1a3aa",
71
        },
72
 
73
        // Test from Plan 9.
74
        {
75
                md5.New,
76
                []byte("Jefe"),
77
                []byte("what do ya want for nothing?"),
78
                "750c783e6ab0b503eaa86e310a5db738",
79
        },
80
 
81
        // Tests from RFC 4231
82
        {
83
                sha256.New,
84
                []byte{
85
                        0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
86
                        0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
87
                        0x0b, 0x0b, 0x0b, 0x0b,
88
                },
89
                []byte("Hi There"),
90
                "b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7",
91
        },
92
        {
93
                sha256.New,
94
                []byte("Jefe"),
95
                []byte("what do ya want for nothing?"),
96
                "5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843",
97
        },
98
        {
99
                sha256.New,
100
                []byte{
101
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
102
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
103
                        0xaa, 0xaa, 0xaa, 0xaa,
104
                },
105
                []byte{
106
                        0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
107
                        0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
108
                        0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
109
                        0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
110
                        0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
111
                        0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
112
                        0xdd, 0xdd,
113
                },
114
                "773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe",
115
        },
116
        {
117
                sha256.New,
118
                []byte{
119
                        0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
120
                        0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
121
                        0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
122
                        0x19,
123
                },
124
                []byte{
125
                        0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
126
                        0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
127
                        0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
128
                        0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
129
                        0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
130
                        0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
131
                        0xcd, 0xcd,
132
                },
133
                "82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b",
134
        },
135
        {
136
                sha256.New,
137
                []byte{
138
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
139
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
140
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
141
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
142
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
143
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
144
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
145
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
146
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
147
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
148
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
149
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
150
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
151
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
152
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
153
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
154
                        0xaa, 0xaa, 0xaa,
155
                },
156
                []byte("Test Using Larger Than Block-Size Key - Hash Key First"),
157
                "60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54",
158
        },
159
        {
160
                sha256.New,
161
                []byte{
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, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
176
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
177
                        0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
178
                        0xaa, 0xaa, 0xaa,
179
                },
180
                []byte("This is a test using a larger than block-size key " +
181
                        "and a larger than block-size data. The key needs to " +
182
                        "be hashed before being used by the HMAC algorithm."),
183
                "9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2",
184
        },
185
 
186
        // Tests from http://csrc.nist.gov/groups/ST/toolkit/examples.html
187
        // (truncated tag tests are left out)
188
        {
189
                sha1.New,
190
                []byte{
191
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
192
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
193
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
194
                        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
195
                        0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
196
                        0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
197
                        0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
198
                        0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
199
                },
200
                []byte("Sample message for keylen=blocklen"),
201
                "5fd596ee78d5553c8ff4e72d266dfd192366da29",
202
        },
203
        {
204
                sha1.New,
205
                []byte{
206
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
207
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
208
                        0x10, 0x11, 0x12, 0x13,
209
                },
210
                []byte("Sample message for keylen
211
                "4c99ff0cb1b31bd33f8431dbaf4d17fcd356a807",
212
        },
213
        {
214
                sha1.New,
215
                []byte{
216
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
217
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
218
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
219
                        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
220
                        0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
221
                        0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
222
                        0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
223
                        0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
224
                        0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
225
                        0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
226
                        0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
227
                        0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
228
                        0x60, 0x61, 0x62, 0x63,
229
                },
230
                []byte("Sample message for keylen=blocklen"),
231
                "2d51b2f7750e410584662e38f133435f4c4fd42a",
232
        },
233
        {
234
                sha256.New224,
235
                []byte{
236
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
237
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
238
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
239
                        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
240
                        0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
241
                        0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
242
                        0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
243
                        0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
244
                },
245
                []byte("Sample message for keylen=blocklen"),
246
                "c7405e3ae058e8cd30b08b4140248581ed174cb34e1224bcc1efc81b",
247
        },
248
        {
249
                sha256.New224,
250
                []byte{
251
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
252
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
253
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
254
                        0x18, 0x19, 0x1a, 0x1b,
255
                },
256
                []byte("Sample message for keylen
257
                "e3d249a8cfb67ef8b7a169e9a0a599714a2cecba65999a51beb8fbbe",
258
        },
259
        {
260
                sha256.New224,
261
                []byte{
262
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
263
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
264
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
265
                        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
266
                        0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
267
                        0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
268
                        0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
269
                        0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
270
                        0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
271
                        0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
272
                        0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
273
                        0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
274
                        0x60, 0x61, 0x62, 0x63,
275
                },
276
                []byte("Sample message for keylen=blocklen"),
277
                "91c52509e5af8531601ae6230099d90bef88aaefb961f4080abc014d",
278
        },
279
        {
280
                sha256.New,
281
                []byte{
282
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
283
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
284
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
285
                        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
286
                        0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
287
                        0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
288
                        0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
289
                        0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
290
                },
291
                []byte("Sample message for keylen=blocklen"),
292
                "8bb9a1db9806f20df7f77b82138c7914d174d59e13dc4d0169c9057b133e1d62",
293
        },
294
        {
295
                sha256.New,
296
                []byte{
297
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
298
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
299
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
300
                        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
301
                },
302
                []byte("Sample message for keylen
303
                "a28cf43130ee696a98f14a37678b56bcfcbdd9e5cf69717fecf5480f0ebdf790",
304
        },
305
        {
306
                sha256.New,
307
                []byte{
308
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
309
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
310
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
311
                        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
312
                        0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
313
                        0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
314
                        0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
315
                        0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
316
                        0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
317
                        0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
318
                        0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
319
                        0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
320
                        0x60, 0x61, 0x62, 0x63,
321
                },
322
                []byte("Sample message for keylen=blocklen"),
323
                "bdccb6c72ddeadb500ae768386cb38cc41c63dbb0878ddb9c7a38a431b78378d",
324
        },
325
        {
326
                sha512.New384,
327
                []byte{
328
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
329
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
330
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
331
                        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
332
                        0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
333
                        0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
334
                        0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
335
                        0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
336
                        0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
337
                        0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
338
                        0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
339
                        0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
340
                        0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
341
                        0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
342
                        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
343
                        0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
344
                },
345
                []byte("Sample message for keylen=blocklen"),
346
                "63c5daa5e651847ca897c95814ab830bededc7d25e83eef9195cd45857a37f448947858f5af50cc2b1b730ddf29671a9",
347
        },
348
        {
349
                sha512.New384,
350
                []byte{
351
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
352
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
353
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
354
                        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
355
                        0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
356
                        0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
357
                },
358
                []byte("Sample message for keylen
359
                "6eb242bdbb582ca17bebfa481b1e23211464d2b7f8c20b9ff2201637b93646af5ae9ac316e98db45d9cae773675eeed0",
360
        },
361
        {
362
                sha512.New384,
363
                []byte{
364
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
365
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
366
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
367
                        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
368
                        0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
369
                        0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
370
                        0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
371
                        0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
372
                        0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
373
                        0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
374
                        0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
375
                        0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
376
                        0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
377
                        0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
378
                        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
379
                        0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
380
                        0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
381
                        0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
382
                        0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
383
                        0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
384
                        0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
385
                        0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
386
                        0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
387
                        0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
388
                        0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
389
                },
390
                []byte("Sample message for keylen=blocklen"),
391
                "5b664436df69b0ca22551231a3f0a3d5b4f97991713cfa84bff4d0792eff96c27dccbbb6f79b65d548b40e8564cef594",
392
        },
393
        {
394
                sha512.New,
395
                []byte{
396
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
397
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
398
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
399
                        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
400
                        0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
401
                        0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
402
                        0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
403
                        0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
404
                        0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
405
                        0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
406
                        0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
407
                        0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
408
                        0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
409
                        0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
410
                        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
411
                        0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
412
                },
413
                []byte("Sample message for keylen=blocklen"),
414
                "fc25e240658ca785b7a811a8d3f7b4ca" +
415
                        "48cfa26a8a366bf2cd1f836b05fcb024bd36853081811d6c" +
416
                        "ea4216ebad79da1cfcb95ea4586b8a0ce356596a55fb1347",
417
        },
418
        {
419
                sha512.New,
420
                []byte{
421
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
422
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
423
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
424
                        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
425
                        0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
426
                        0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
427
                        0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
428
                        0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
429
                },
430
                []byte("Sample message for keylen
431
                "fd44c18bda0bb0a6ce0e82b031bf2818" +
432
                        "f6539bd56ec00bdc10a8a2d730b3634de2545d639b0f2cf7" +
433
                        "10d0692c72a1896f1f211c2b922d1a96c392e07e7ea9fedc",
434
        },
435
        {
436
                sha512.New,
437
                []byte{
438
                        0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
439
                        0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
440
                        0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
441
                        0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
442
                        0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
443
                        0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
444
                        0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
445
                        0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
446
                        0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
447
                        0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
448
                        0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
449
                        0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
450
                        0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
451
                        0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
452
                        0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
453
                        0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
454
                        0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
455
                        0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
456
                        0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
457
                        0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
458
                        0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
459
                        0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
460
                        0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
461
                        0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
462
                        0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
463
                },
464
                []byte("Sample message for keylen=blocklen"),
465
                "d93ec8d2de1ad2a9957cb9b83f14e76a" +
466
                        "d6b5e0cce285079a127d3b14bccb7aa7286d4ac0d4ce6421" +
467
                        "5f2bc9e6870b33d97438be4aaa20cda5c5a912b48b8e27f3",
468
        },
469
}
470
 
471
func TestHMAC(t *testing.T) {
472
        for i, tt := range hmacTests {
473
                h := New(tt.hash, tt.key)
474
                for j := 0; j < 2; j++ {
475
                        n, err := h.Write(tt.in)
476
                        if n != len(tt.in) || err != nil {
477
                                t.Errorf("test %d.%d: Write(%d) = %d, %v", i, j, len(tt.in), n, err)
478
                                continue
479
                        }
480
 
481
                        // Repetitive Sum() calls should return the same value
482
                        for k := 0; k < 2; k++ {
483
                                sum := fmt.Sprintf("%x", h.Sum(nil))
484
                                if sum != tt.out {
485
                                        t.Errorf("test %d.%d.%d: have %s want %s\n", i, j, k, sum, tt.out)
486
                                }
487
                        }
488
 
489
                        // Second iteration: make sure reset works.
490
                        h.Reset()
491
                }
492
        }
493
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.