~ubuntu-branches/ubuntu/utopic/nettle/utopic-proposed

« back to all changes in this revision

Viewing changes to testsuite/hmac-test.c

  • Committer: Package Import Robot
  • Author(s): Magnus Holmgren
  • Date: 2013-05-07 22:57:14 UTC
  • mfrom: (8.1.8 sid)
  • Revision ID: package-import@ubuntu.com-20130507225714-s331yr8ov53dtt17
Tags: 2.7-2
Tag some (ECC related) symbols that only exist on some architectures.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#include "testutils.h"
2
2
#include "hmac.h"
3
3
 
4
 
/* KEY and MSG are supposed to expand to length, data */ 
5
 
#define HMAC_TEST(alg, length, key, msg, mac) do {              \
6
 
  hmac_##alg##_set_key(&alg, key);                              \
7
 
  hmac_##alg##_update(&alg, msg);                               \
8
 
  digest[length] = 17;                                          \
9
 
  hmac_##alg##_digest(&alg, length, digest);                    \
10
 
  ASSERT(MEMEQ (length, digest, mac));                          \
11
 
  ASSERT(digest[length] == 17);                                 \
12
 
} while (0)
 
4
#define HMAC_TEST(alg, key, msg, mac)                   \
 
5
  do {                                                  \
 
6
    struct hmac_##alg##_ctx ctx;                        \
 
7
                                                        \
 
8
    hmac_##alg##_set_key(&ctx, key->length, key->data); \
 
9
    hmac_##alg##_update(&ctx, msg->length, msg->data);  \
 
10
    digest[mac->length] = 17;                           \
 
11
    hmac_##alg##_digest(&ctx, mac->length, digest);     \
 
12
    ASSERT(MEMEQ (mac->length, digest, mac->data));     \
 
13
    ASSERT(digest[mac->length] == 17);                  \
 
14
  } while (0)
13
15
 
14
 
int
 
16
void
15
17
test_main(void)
16
18
{
17
 
  struct hmac_md5_ctx md5;
18
 
  struct hmac_sha1_ctx sha1;
19
 
  struct hmac_ripemd160_ctx ripemd160;
20
 
  struct hmac_sha224_ctx sha224;
21
 
  struct hmac_sha256_ctx sha256;
22
 
  struct hmac_sha384_ctx sha384;
23
 
  struct hmac_sha512_ctx sha512;
24
 
 
25
19
  /* sha512's digests are longest */
26
20
  uint8_t digest[SHA512_DIGEST_SIZE+1];
27
21
 
30
24
  /* Test vectors for md5, from RFC-2202 */
31
25
 
32
26
  /* md5 - 1 */
33
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
34
 
            HL("0b0b0b0b0b0b0b0b 0b0b0b0b0b0b0b0b"),
35
 
            LDATA("Hi There"),
36
 
            H("9294727a3638bb1c 13f48ef8158bfc9d"));
 
27
  HMAC_TEST(md5,
 
28
            SHEX("0b0b0b0b0b0b0b0b 0b0b0b0b0b0b0b0b"),
 
29
            SDATA("Hi There"),
 
30
            SHEX("9294727a3638bb1c 13f48ef8158bfc9d"));
37
31
 
38
32
 
39
33
  /* md5 - 2 */
40
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
41
 
            LDATA("Jefe"),
42
 
            LDATA("what do ya want for nothing?"),
43
 
            H("750c783e6ab0b503 eaa86e310a5db738"));        
 
34
  HMAC_TEST(md5,
 
35
            SDATA("Jefe"),
 
36
            SDATA("what do ya want for nothing?"),
 
37
            SHEX("750c783e6ab0b503 eaa86e310a5db738"));     
44
38
 
45
39
  /* md5 - 3 */
46
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
47
 
            HL("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
48
 
            HL("dddddddddddddddd dddddddddddddddd"
49
 
               "dddddddddddddddd dddddddddddddddd"
50
 
               "dddddddddddddddd dddddddddddddddd"
51
 
               "dddd"),
52
 
            H("56be34521d144c88 dbb8c733f0e8b3f6"));
 
40
  HMAC_TEST(md5,
 
41
            SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
 
42
            SHEX("dddddddddddddddd dddddddddddddddd"
 
43
                 "dddddddddddddddd dddddddddddddddd"
 
44
                 "dddddddddddddddd dddddddddddddddd"
 
45
                 "dddd"),
 
46
            SHEX("56be34521d144c88 dbb8c733f0e8b3f6"));
53
47
  
54
48
  /* md5 - 4 */
55
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
56
 
            HL("0102030405060708 090a0b0c0d0e0f10" 
57
 
               "1112131415161718 19"),
58
 
            HL("cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
59
 
               "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
60
 
               "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
61
 
               "cdcd"),
62
 
            H("697eaf0aca3a3aea 3a75164746ffaa79"));
 
49
  HMAC_TEST(md5,
 
50
            SHEX("0102030405060708 090a0b0c0d0e0f10" 
 
51
                 "1112131415161718 19"),
 
52
            SHEX("cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
 
53
                 "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
 
54
                 "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
 
55
                 "cdcd"),
 
56
            SHEX("697eaf0aca3a3aea 3a75164746ffaa79"));
63
57
 
64
58
  /* md5 - 5 */
65
 
  HMAC_TEST(md5, 12,
66
 
            HL("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c"),
67
 
            LDATA("Test With Truncation"),
68
 
            H("56461ef2342edc00 f9bab995"));
 
59
  HMAC_TEST(md5,
 
60
            SHEX("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c"),
 
61
            SDATA("Test With Truncation"),
 
62
            SHEX("56461ef2342edc00 f9bab995"));
69
63
 
70
64
  /* md5 - 6 */
71
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
72
 
            HL("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
73
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
74
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
75
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
76
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
77
 
            LDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
78
 
            H("6b1ab7fe4bd7bf8f 0b62e6ce61b9d0cd"));
 
65
  HMAC_TEST(md5,
 
66
            SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
67
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
68
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
69
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
70
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
 
71
            SDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
 
72
            SHEX("6b1ab7fe4bd7bf8f 0b62e6ce61b9d0cd"));
79
73
 
80
74
  /* md5 - 7 */
81
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
82
 
            HL("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
83
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
84
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
85
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
86
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
87
 
            LDATA("Test Using Larger Than Block-Size Key and Larger "
 
75
  HMAC_TEST(md5,
 
76
            SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
77
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
78
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
79
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
80
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
 
81
            SDATA("Test Using Larger Than Block-Size Key and Larger "
88
82
                  "Than One Block-Size Data"),
89
 
            H("6f630fad67cda0ee 1fb1f562db3aa53e"));
 
83
            SHEX("6f630fad67cda0ee 1fb1f562db3aa53e"));
90
84
 
91
85
  /* Additional test vectors, from Daniel Kahn Gillmor */
92
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
93
 
            LDATA("monkey monkey monkey monkey"),
94
 
            LDATA(""),
95
 
            H("e84db42a188813f30a15e611d64c7869"));
96
 
  
97
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
98
 
            LDATA("monkey monkey monkey monkey"),
99
 
            LDATA("a"),
100
 
            H("123662062e67c2aab371cc49db0df134"));
101
 
  
102
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
103
 
            LDATA("monkey monkey monkey monkey"),
104
 
            LDATA("38"),
105
 
            H("0a46cc10a49d4b7025c040c597bf5d76"));
106
 
  
107
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
108
 
            LDATA("monkey monkey monkey monkey"),
109
 
            LDATA("abc"),
110
 
            H("d1f4d89f0e8b2b6ed0623c99ec298310"));
111
 
  
112
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
113
 
            LDATA("monkey monkey monkey monkey"),
114
 
            LDATA("message digest"),
115
 
            H("1627207b9bed5009a4f6e9ca8d2ca01e"));
116
 
  
117
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
118
 
            LDATA("monkey monkey monkey monkey"),
119
 
            LDATA("abcdefghijklmnopqrstuvwxyz"),
120
 
            H("922aae6ab3b3a29202e21ce5f916ae9a"));
121
 
 
122
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
123
 
            LDATA("monkey monkey monkey monkey"),
124
 
            LDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
125
 
            H("ede9cb83679ba82d88fbeae865b3f8fc"));
126
 
 
127
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
128
 
            LDATA("monkey monkey monkey monkey"),
129
 
            LDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
130
 
            H("939dd45512ee3a594b6654f6b8de27f7"));
 
86
  HMAC_TEST(md5,
 
87
            SDATA("monkey monkey monkey monkey"),
 
88
            SDATA(""),
 
89
            SHEX("e84db42a188813f30a15e611d64c7869"));
 
90
  
 
91
  HMAC_TEST(md5,
 
92
            SDATA("monkey monkey monkey monkey"),
 
93
            SDATA("a"),
 
94
            SHEX("123662062e67c2aab371cc49db0df134"));
 
95
  
 
96
  HMAC_TEST(md5,
 
97
            SDATA("monkey monkey monkey monkey"),
 
98
            SDATA("38"),
 
99
            SHEX("0a46cc10a49d4b7025c040c597bf5d76"));
 
100
  
 
101
  HMAC_TEST(md5,
 
102
            SDATA("monkey monkey monkey monkey"),
 
103
            SDATA("abc"),
 
104
            SHEX("d1f4d89f0e8b2b6ed0623c99ec298310"));
 
105
  
 
106
  HMAC_TEST(md5,
 
107
            SDATA("monkey monkey monkey monkey"),
 
108
            SDATA("message digest"),
 
109
            SHEX("1627207b9bed5009a4f6e9ca8d2ca01e"));
 
110
  
 
111
  HMAC_TEST(md5,
 
112
            SDATA("monkey monkey monkey monkey"),
 
113
            SDATA("abcdefghijklmnopqrstuvwxyz"),
 
114
            SHEX("922aae6ab3b3a29202e21ce5f916ae9a"));
 
115
 
 
116
  HMAC_TEST(md5,
 
117
            SDATA("monkey monkey monkey monkey"),
 
118
            SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
 
119
            SHEX("ede9cb83679ba82d88fbeae865b3f8fc"));
 
120
 
 
121
  HMAC_TEST(md5,
 
122
            SDATA("monkey monkey monkey monkey"),
 
123
            SDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
 
124
            SHEX("939dd45512ee3a594b6654f6b8de27f7"));
131
125
 
132
126
  /* Test vectors for ripemd160, from
133
127
     http://homes.esat.kuleuven.be/~bosselae/ripemd160.html */
134
 
  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
135
 
            HL("00112233445566778899aabbccddeeff01234567"),
136
 
            LDATA(""),
137
 
            H("cf387677bfda8483e63b57e06c3b5ecd8b7fc055"));
138
 
 
139
 
  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
140
 
            HL("00112233445566778899aabbccddeeff01234567"),
141
 
            LDATA("a"),
142
 
            H("0d351d71b78e36dbb7391c810a0d2b6240ddbafc"));
143
 
 
144
 
  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
145
 
            HL("00112233445566778899aabbccddeeff01234567"),
146
 
            LDATA("abc"),
147
 
            H("f7ef288cb1bbcc6160d76507e0a3bbf712fb67d6"));
148
 
 
149
 
  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
150
 
            HL("00112233445566778899aabbccddeeff01234567"),
151
 
            LDATA("message digest"),
152
 
            H("f83662cc8d339c227e600fcd636c57d2571b1c34"));
153
 
 
154
 
  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
155
 
            HL("00112233445566778899aabbccddeeff01234567"),
156
 
            LDATA("abcdefghijklmnopqrstuvwxyz"),
157
 
            H("843d1c4eb880ac8ac0c9c95696507957d0155ddb"));
158
 
 
159
 
  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
160
 
            HL("00112233445566778899aabbccddeeff01234567"),
161
 
            LDATA("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"),
162
 
            H("60f5ef198a2dd5745545c1f0c47aa3fb5776f881"));
163
 
 
164
 
  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
165
 
            HL("00112233445566778899aabbccddeeff01234567"),
166
 
            LDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
167
 
            H("e49c136a9e5627e0681b808a3b97e6a6e661ae79"));
 
128
  HMAC_TEST(ripemd160,
 
129
            SHEX("00112233445566778899aabbccddeeff01234567"),
 
130
            SDATA(""),
 
131
            SHEX("cf387677bfda8483e63b57e06c3b5ecd8b7fc055"));
 
132
 
 
133
  HMAC_TEST(ripemd160,
 
134
            SHEX("00112233445566778899aabbccddeeff01234567"),
 
135
            SDATA("a"),
 
136
            SHEX("0d351d71b78e36dbb7391c810a0d2b6240ddbafc"));
 
137
 
 
138
  HMAC_TEST(ripemd160,
 
139
            SHEX("00112233445566778899aabbccddeeff01234567"),
 
140
            SDATA("abc"),
 
141
            SHEX("f7ef288cb1bbcc6160d76507e0a3bbf712fb67d6"));
 
142
 
 
143
  HMAC_TEST(ripemd160,
 
144
            SHEX("00112233445566778899aabbccddeeff01234567"),
 
145
            SDATA("message digest"),
 
146
            SHEX("f83662cc8d339c227e600fcd636c57d2571b1c34"));
 
147
 
 
148
  HMAC_TEST(ripemd160,
 
149
            SHEX("00112233445566778899aabbccddeeff01234567"),
 
150
            SDATA("abcdefghijklmnopqrstuvwxyz"),
 
151
            SHEX("843d1c4eb880ac8ac0c9c95696507957d0155ddb"));
 
152
 
 
153
  HMAC_TEST(ripemd160,
 
154
            SHEX("00112233445566778899aabbccddeeff01234567"),
 
155
            SDATA("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"),
 
156
            SHEX("60f5ef198a2dd5745545c1f0c47aa3fb5776f881"));
 
157
 
 
158
  HMAC_TEST(ripemd160,
 
159
            SHEX("00112233445566778899aabbccddeeff01234567"),
 
160
            SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
 
161
            SHEX("e49c136a9e5627e0681b808a3b97e6a6e661ae79"));
168
162
 
169
163
  /* Other key */
170
 
  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
171
 
            HL("0123456789abcdeffedcba987654321000112233"),
172
 
            LDATA(""),
173
 
            H("fe69a66c7423eea9c8fa2eff8d9dafb4f17a62f5"));
174
 
 
175
 
  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
176
 
            HL("0123456789abcdeffedcba987654321000112233"),
177
 
            LDATA("a"),
178
 
            H("85743e899bc82dbfa36faaa7a25b7cfd372432cd"));
179
 
 
180
 
  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
181
 
            HL("0123456789abcdeffedcba987654321000112233"),
182
 
            LDATA("abc"),
183
 
            H("6e4afd501fa6b4a1823ca3b10bd9aa0ba97ba182"));
184
 
 
185
 
  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
186
 
            HL("0123456789abcdeffedcba987654321000112233"),
187
 
            LDATA("message digest"),
188
 
            H("2e066e624badb76a184c8f90fba053330e650e92"));
189
 
 
190
 
  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
191
 
            HL("0123456789abcdeffedcba987654321000112233"),
192
 
            LDATA("abcdefghijklmnopqrstuvwxyz"),
193
 
            H("07e942aa4e3cd7c04dedc1d46e2e8cc4c741b3d9"));
194
 
 
195
 
  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
196
 
            HL("0123456789abcdeffedcba987654321000112233"),
197
 
            LDATA("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"),
198
 
            H("b6582318ddcfb67a53a67d676b8ad869aded629a"));
199
 
 
200
 
  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
201
 
            HL("0123456789abcdeffedcba987654321000112233"),
202
 
            LDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
203
 
            H("f1be3ee877703140d34f97ea1ab3a07c141333e2"));
 
164
  HMAC_TEST(ripemd160,
 
165
            SHEX("0123456789abcdeffedcba987654321000112233"),
 
166
            SDATA(""),
 
167
            SHEX("fe69a66c7423eea9c8fa2eff8d9dafb4f17a62f5"));
 
168
 
 
169
  HMAC_TEST(ripemd160,
 
170
            SHEX("0123456789abcdeffedcba987654321000112233"),
 
171
            SDATA("a"),
 
172
            SHEX("85743e899bc82dbfa36faaa7a25b7cfd372432cd"));
 
173
 
 
174
  HMAC_TEST(ripemd160,
 
175
            SHEX("0123456789abcdeffedcba987654321000112233"),
 
176
            SDATA("abc"),
 
177
            SHEX("6e4afd501fa6b4a1823ca3b10bd9aa0ba97ba182"));
 
178
 
 
179
  HMAC_TEST(ripemd160,
 
180
            SHEX("0123456789abcdeffedcba987654321000112233"),
 
181
            SDATA("message digest"),
 
182
            SHEX("2e066e624badb76a184c8f90fba053330e650e92"));
 
183
 
 
184
  HMAC_TEST(ripemd160,
 
185
            SHEX("0123456789abcdeffedcba987654321000112233"),
 
186
            SDATA("abcdefghijklmnopqrstuvwxyz"),
 
187
            SHEX("07e942aa4e3cd7c04dedc1d46e2e8cc4c741b3d9"));
 
188
 
 
189
  HMAC_TEST(ripemd160,
 
190
            SHEX("0123456789abcdeffedcba987654321000112233"),
 
191
            SDATA("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"),
 
192
            SHEX("b6582318ddcfb67a53a67d676b8ad869aded629a"));
 
193
 
 
194
  HMAC_TEST(ripemd160,
 
195
            SHEX("0123456789abcdeffedcba987654321000112233"),
 
196
            SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
 
197
            SHEX("f1be3ee877703140d34f97ea1ab3a07c141333e2"));
204
198
 
205
199
  /* Test vectors for sha1, from RFC-2202 */
206
200
 
207
201
  /* sha1 - 1 */
208
 
  HMAC_TEST(sha1, SHA1_DIGEST_SIZE,
209
 
            HL("0b0b0b0b0b0b0b0b 0b0b0b0b0b0b0b0b 0b0b0b0b"),
210
 
            LDATA("Hi There"),
211
 
            H("b617318655057264 e28bc0b6fb378c8e f146be00"));
 
202
  HMAC_TEST(sha1,
 
203
            SHEX("0b0b0b0b0b0b0b0b 0b0b0b0b0b0b0b0b 0b0b0b0b"),
 
204
            SDATA("Hi There"),
 
205
            SHEX("b617318655057264 e28bc0b6fb378c8e f146be00"));
212
206
 
213
207
  /* sha1 - 2 */
214
 
  HMAC_TEST(sha1, SHA1_DIGEST_SIZE,
215
 
            LDATA("Jefe"),
216
 
            LDATA("what do ya want for nothing?"),
217
 
            H("effcdf6ae5eb2fa2 d27416d5f184df9c 259a7c79"));
 
208
  HMAC_TEST(sha1,
 
209
            SDATA("Jefe"),
 
210
            SDATA("what do ya want for nothing?"),
 
211
            SHEX("effcdf6ae5eb2fa2 d27416d5f184df9c 259a7c79"));
218
212
 
219
213
  /* sha1 - 3 */
220
 
  HMAC_TEST(sha1, SHA1_DIGEST_SIZE,
221
 
            HL("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaaa"),
222
 
            HL("dddddddddddddddd dddddddddddddddd"
223
 
               "dddddddddddddddd dddddddddddddddd"
224
 
               "dddddddddddddddd dddddddddddddddd"
225
 
               "dddd"),
226
 
            H("125d7342b9ac11cd 91a39af48aa17b4f 63f175d3"));
 
214
  HMAC_TEST(sha1,
 
215
            SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaaa"),
 
216
            SHEX("dddddddddddddddd dddddddddddddddd"
 
217
                 "dddddddddddddddd dddddddddddddddd"
 
218
                 "dddddddddddddddd dddddddddddddddd"
 
219
                 "dddd"),
 
220
            SHEX("125d7342b9ac11cd 91a39af48aa17b4f 63f175d3"));
227
221
 
228
222
  /* sha1 - 4 */
229
 
  HMAC_TEST(sha1, SHA1_DIGEST_SIZE,
230
 
            HL("0102030405060708 090a0b0c0d0e0f10" 
231
 
               "1112131415161718 19"),
232
 
            HL("cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
233
 
               "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
234
 
               "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
235
 
               "cdcd"),
236
 
            H("4c9007f4026250c6 bc8414f9bf50c86c 2d7235da"));
 
223
  HMAC_TEST(sha1,
 
224
            SHEX("0102030405060708 090a0b0c0d0e0f10" 
 
225
                 "1112131415161718 19"),
 
226
            SHEX("cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
 
227
                 "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
 
228
                 "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
 
229
                 "cdcd"),
 
230
            SHEX("4c9007f4026250c6 bc8414f9bf50c86c 2d7235da"));
237
231
 
238
232
  /* sha1 - 5 */
239
 
  HMAC_TEST(sha1, 12,
240
 
            HL("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
241
 
            LDATA("Test With Truncation"),
242
 
            H("4c1a03424b55e07f e7f27be1"));
 
233
  HMAC_TEST(sha1,
 
234
            SHEX("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
 
235
            SDATA("Test With Truncation"),
 
236
            SHEX("4c1a03424b55e07f e7f27be1"));
243
237
 
244
238
  /* sha1 - 6 */
245
 
  HMAC_TEST(sha1, SHA1_DIGEST_SIZE,
246
 
            HL("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
247
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
248
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
249
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
250
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
251
 
            LDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
252
 
            H("aa4ae5e15272d00e 95705637ce8a3b55 ed402112"));
 
239
  HMAC_TEST(sha1,
 
240
            SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
241
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
242
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
243
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
244
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
 
245
            SDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
 
246
            SHEX("aa4ae5e15272d00e 95705637ce8a3b55 ed402112"));
253
247
 
254
248
  /* sha1 - 7 */
255
 
  HMAC_TEST(sha1, SHA1_DIGEST_SIZE,
256
 
            HL("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
257
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
258
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
259
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
260
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
261
 
            LDATA("Test Using Larger Than Block-Size Key and Larger "
 
249
  HMAC_TEST(sha1,
 
250
            SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
251
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
252
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
253
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
254
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
 
255
            SDATA("Test Using Larger Than Block-Size Key and Larger "
262
256
                  "Than One Block-Size Data"),
263
 
            H("e8e99d0f45237d78 6d6bbaa7965c7808 bbff1a91"));
 
257
            SHEX("e8e99d0f45237d78 6d6bbaa7965c7808 bbff1a91"));
264
258
 
265
259
  /* Additional test vectors, from Daniel Kahn Gillmor */
266
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
267
 
            LDATA("monkey monkey monkey monkey"),
268
 
            LDATA(""),
269
 
            H("e84db42a188813f30a15e611d64c7869"));
270
 
  
271
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
272
 
            LDATA("monkey monkey monkey monkey"),
273
 
            LDATA("a"),
274
 
            H("123662062e67c2aab371cc49db0df134"));
275
 
  
276
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
277
 
            LDATA("monkey monkey monkey monkey"),
278
 
            LDATA("38"),
279
 
            H("0a46cc10a49d4b7025c040c597bf5d76"));
280
 
  
281
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
282
 
            LDATA("monkey monkey monkey monkey"),
283
 
            LDATA("abc"),
284
 
            H("d1f4d89f0e8b2b6ed0623c99ec298310"));
285
 
  
286
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
287
 
            LDATA("monkey monkey monkey monkey"),
288
 
            LDATA("message digest"),
289
 
            H("1627207b9bed5009a4f6e9ca8d2ca01e"));
290
 
  
291
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
292
 
            LDATA("monkey monkey monkey monkey"),
293
 
            LDATA("abcdefghijklmnopqrstuvwxyz"),
294
 
            H("922aae6ab3b3a29202e21ce5f916ae9a"));
295
 
 
296
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
297
 
            LDATA("monkey monkey monkey monkey"),
298
 
            LDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
299
 
            H("ede9cb83679ba82d88fbeae865b3f8fc"));
300
 
 
301
 
  HMAC_TEST(md5, MD5_DIGEST_SIZE,
302
 
            LDATA("monkey monkey monkey monkey"),
303
 
            LDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
304
 
            H("939dd45512ee3a594b6654f6b8de27f7"));
 
260
  HMAC_TEST(md5,
 
261
            SDATA("monkey monkey monkey monkey"),
 
262
            SDATA(""),
 
263
            SHEX("e84db42a188813f30a15e611d64c7869"));
 
264
  
 
265
  HMAC_TEST(md5,
 
266
            SDATA("monkey monkey monkey monkey"),
 
267
            SDATA("a"),
 
268
            SHEX("123662062e67c2aab371cc49db0df134"));
 
269
  
 
270
  HMAC_TEST(md5,
 
271
            SDATA("monkey monkey monkey monkey"),
 
272
            SDATA("38"),
 
273
            SHEX("0a46cc10a49d4b7025c040c597bf5d76"));
 
274
  
 
275
  HMAC_TEST(md5,
 
276
            SDATA("monkey monkey monkey monkey"),
 
277
            SDATA("abc"),
 
278
            SHEX("d1f4d89f0e8b2b6ed0623c99ec298310"));
 
279
  
 
280
  HMAC_TEST(md5,
 
281
            SDATA("monkey monkey monkey monkey"),
 
282
            SDATA("message digest"),
 
283
            SHEX("1627207b9bed5009a4f6e9ca8d2ca01e"));
 
284
  
 
285
  HMAC_TEST(md5,
 
286
            SDATA("monkey monkey monkey monkey"),
 
287
            SDATA("abcdefghijklmnopqrstuvwxyz"),
 
288
            SHEX("922aae6ab3b3a29202e21ce5f916ae9a"));
 
289
 
 
290
  HMAC_TEST(md5,
 
291
            SDATA("monkey monkey monkey monkey"),
 
292
            SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
 
293
            SHEX("ede9cb83679ba82d88fbeae865b3f8fc"));
 
294
 
 
295
  HMAC_TEST(md5,
 
296
            SDATA("monkey monkey monkey monkey"),
 
297
            SDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
 
298
            SHEX("939dd45512ee3a594b6654f6b8de27f7"));
305
299
 
306
300
  /* Test vectors for sha224, from RFC 4231 */
307
 
  HMAC_TEST(sha224, SHA224_DIGEST_SIZE,
308
 
            HL("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
309
 
               "0b0b0b0b"),
310
 
            LDATA("Hi There"),
311
 
            H("896fb1128abbdf196832107cd49df33f"
312
 
              "47b4b1169912ba4f53684b22"));
313
 
 
314
 
  HMAC_TEST(sha224, SHA224_DIGEST_SIZE,
315
 
            LDATA("Jefe"),
316
 
            LDATA("what do ya want for nothing?"),
317
 
            H("a30e01098bc6dbbf45690f3a7e9e6d0f"
318
 
              "8bbea2a39e6148008fd05e44"));
319
 
 
320
 
  HMAC_TEST(sha224, SHA224_DIGEST_SIZE,
321
 
            HL("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
322
 
               "aaaaaaaa"),
323
 
            HL("dddddddddddddddddddddddddddddddd"
324
 
               "dddddddddddddddddddddddddddddddd"
325
 
               "dddddddddddddddddddddddddddddddd"
326
 
               "dddd"),
327
 
            H("7fb3cb3588c6c1f6ffa9694d7d6ad264"
328
 
              "9365b0c1f65d69d1ec8333ea"));
329
 
 
330
 
  HMAC_TEST(sha224, SHA224_DIGEST_SIZE,
331
 
            HL("0102030405060708090a0b0c0d0e0f10"
332
 
               "111213141516171819"),
333
 
            HL("cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
334
 
               "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
335
 
               "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
336
 
               "cdcd"),
337
 
            H("6c11506874013cac6a2abc1bb382627c"
338
 
              "ec6a90d86efc012de7afec5a"));
339
 
 
340
 
  HMAC_TEST(sha224, 16,
341
 
            HL("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
342
 
            LDATA("Test With Truncation"),
343
 
            H("0e2aea68a90c8d37c988bcdb9fca6fa8"));
344
 
 
345
 
  HMAC_TEST(sha224, SHA224_DIGEST_SIZE,
346
 
            HL("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
347
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
348
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
349
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
350
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
351
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
352
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
353
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
354
 
               "aaaaaa"),
355
 
            LDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
356
 
            H("95e9a0db962095adaebe9b2d6f0dbce2"
357
 
              "d499f112f2d2b7273fa6870e"));
358
 
 
359
 
  HMAC_TEST(sha224, SHA224_DIGEST_SIZE,
360
 
            HL("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
361
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
362
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
363
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
364
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
365
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
366
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
367
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
368
 
               "aaaaaa"),
369
 
            LDATA("This is a test using a larger than block-size ke"
 
301
  HMAC_TEST(sha224,
 
302
            SHEX("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
 
303
                 "0b0b0b0b"),
 
304
            SDATA("Hi There"),
 
305
            SHEX("896fb1128abbdf196832107cd49df33f"
 
306
                 "47b4b1169912ba4f53684b22"));
 
307
 
 
308
  HMAC_TEST(sha224,
 
309
            SDATA("Jefe"),
 
310
            SDATA("what do ya want for nothing?"),
 
311
            SHEX("a30e01098bc6dbbf45690f3a7e9e6d0f"
 
312
                 "8bbea2a39e6148008fd05e44"));
 
313
 
 
314
  HMAC_TEST(sha224,
 
315
            SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
316
                 "aaaaaaaa"),
 
317
            SHEX("dddddddddddddddddddddddddddddddd"
 
318
                 "dddddddddddddddddddddddddddddddd"
 
319
                 "dddddddddddddddddddddddddddddddd"
 
320
                 "dddd"),
 
321
            SHEX("7fb3cb3588c6c1f6ffa9694d7d6ad264"
 
322
                 "9365b0c1f65d69d1ec8333ea"));
 
323
 
 
324
  HMAC_TEST(sha224,
 
325
            SHEX("0102030405060708090a0b0c0d0e0f10"
 
326
                 "111213141516171819"),
 
327
            SHEX("cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
 
328
                 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
 
329
                 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
 
330
                 "cdcd"),
 
331
            SHEX("6c11506874013cac6a2abc1bb382627c"
 
332
                 "ec6a90d86efc012de7afec5a"));
 
333
 
 
334
  HMAC_TEST(sha224,
 
335
            SHEX("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
 
336
            SDATA("Test With Truncation"),
 
337
            SHEX("0e2aea68a90c8d37c988bcdb9fca6fa8"));
 
338
 
 
339
  HMAC_TEST(sha224,
 
340
            SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
341
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
342
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
343
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
344
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
345
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
346
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
347
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
348
                 "aaaaaa"),
 
349
            SDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
 
350
            SHEX("95e9a0db962095adaebe9b2d6f0dbce2"
 
351
                 "d499f112f2d2b7273fa6870e"));
 
352
 
 
353
  HMAC_TEST(sha224,
 
354
            SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
355
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
356
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
357
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
358
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
359
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
360
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
361
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
362
                 "aaaaaa"),
 
363
            SDATA("This is a test using a larger than block-size ke"
370
364
                  "y and a larger than block-size data. The key nee"
371
365
                  "ds to be hashed before being used by the HMAC al"
372
366
                  "gorithm."),
373
 
            H("3a854166ac5d9f023f54d517d0b39dbd"
374
 
              "946770db9c2b95c9f6f565d1"));
 
367
            SHEX("3a854166ac5d9f023f54d517d0b39dbd"
 
368
                 "946770db9c2b95c9f6f565d1"));
375
369
 
376
370
  /* Additional test vectors, from Daniel Kahn Gillmor */
377
 
  HMAC_TEST(sha224, SHA224_DIGEST_SIZE,
378
 
            LDATA("monkey monkey monkey monkey"),
379
 
            LDATA(""),
380
 
            H("d12a49ae38177ffeaa548b2148bb5238"
381
 
              "60849772d9391e675b103d89"));
382
 
  
383
 
  HMAC_TEST(sha224, SHA224_DIGEST_SIZE,
384
 
            LDATA("monkey monkey monkey monkey"),
385
 
            LDATA("a"),
386
 
            H("b04ff8522f904f553970bfa8ad3f0086"
387
 
              "bce1e8580affd8a12c94e31a"));
388
 
  
389
 
  HMAC_TEST(sha224, SHA224_DIGEST_SIZE,
390
 
            LDATA("monkey monkey monkey monkey"),
391
 
            LDATA("38"),
392
 
            H("afcfb5511f710334f9350f57faec3c08"
393
 
              "764b4bd126a6840f4347f116"));
394
 
  
395
 
  HMAC_TEST(sha224, SHA224_DIGEST_SIZE,
396
 
            LDATA("monkey monkey monkey monkey"),
397
 
            LDATA("abc"),
398
 
            H("9df9907af127900c909376893565c6cf"
399
 
              "2d7db244fdc4277da1e0b679"));
400
 
  
401
 
  HMAC_TEST(sha224, SHA224_DIGEST_SIZE,
402
 
            LDATA("monkey monkey monkey monkey"),
403
 
            LDATA("message digest"),
404
 
            H("254ebf6b8ddd7a3271b3d9aca1699b0c"
405
 
              "0bfb7df61e8a114922c88d27"));
406
 
  
407
 
  HMAC_TEST(sha224, SHA224_DIGEST_SIZE,
408
 
            LDATA("monkey monkey monkey monkey"),
409
 
            LDATA("abcdefghijklmnopqrstuvwxyz"),
410
 
            H("6ec5bffba5880c3234a6cf257816e4d5"
411
 
              "35ab178a7f12929769e378fb"));
412
 
 
413
 
  HMAC_TEST(sha224, SHA224_DIGEST_SIZE,
414
 
            LDATA("monkey monkey monkey monkey"),
415
 
            LDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
416
 
            H("5f768179dbb29ca722875d0f461a2e2f"
417
 
              "597d0210340a84df1a8e9c63"));
418
 
 
419
 
  HMAC_TEST(sha224, SHA224_DIGEST_SIZE,
420
 
            LDATA("monkey monkey monkey monkey"),
421
 
            LDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
422
 
            H("c7667b0d7e56b2b4f6fcc1d8da9e22da"
423
 
              "a1556f44c47132a87303c6a2"));
 
371
  HMAC_TEST(sha224,
 
372
            SDATA("monkey monkey monkey monkey"),
 
373
            SDATA(""),
 
374
            SHEX("d12a49ae38177ffeaa548b2148bb5238"
 
375
                 "60849772d9391e675b103d89"));
 
376
  
 
377
  HMAC_TEST(sha224,
 
378
            SDATA("monkey monkey monkey monkey"),
 
379
            SDATA("a"),
 
380
            SHEX("b04ff8522f904f553970bfa8ad3f0086"
 
381
                 "bce1e8580affd8a12c94e31a"));
 
382
  
 
383
  HMAC_TEST(sha224,
 
384
            SDATA("monkey monkey monkey monkey"),
 
385
            SDATA("38"),
 
386
            SHEX("afcfb5511f710334f9350f57faec3c08"
 
387
                 "764b4bd126a6840f4347f116"));
 
388
  
 
389
  HMAC_TEST(sha224,
 
390
            SDATA("monkey monkey monkey monkey"),
 
391
            SDATA("abc"),
 
392
            SHEX("9df9907af127900c909376893565c6cf"
 
393
                 "2d7db244fdc4277da1e0b679"));
 
394
  
 
395
  HMAC_TEST(sha224,
 
396
            SDATA("monkey monkey monkey monkey"),
 
397
            SDATA("message digest"),
 
398
            SHEX("254ebf6b8ddd7a3271b3d9aca1699b0c"
 
399
                 "0bfb7df61e8a114922c88d27"));
 
400
  
 
401
  HMAC_TEST(sha224,
 
402
            SDATA("monkey monkey monkey monkey"),
 
403
            SDATA("abcdefghijklmnopqrstuvwxyz"),
 
404
            SHEX("6ec5bffba5880c3234a6cf257816e4d5"
 
405
                 "35ab178a7f12929769e378fb"));
 
406
 
 
407
  HMAC_TEST(sha224,
 
408
            SDATA("monkey monkey monkey monkey"),
 
409
            SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
 
410
            SHEX("5f768179dbb29ca722875d0f461a2e2f"
 
411
                 "597d0210340a84df1a8e9c63"));
 
412
 
 
413
  HMAC_TEST(sha224,
 
414
            SDATA("monkey monkey monkey monkey"),
 
415
            SDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
 
416
            SHEX("c7667b0d7e56b2b4f6fcc1d8da9e22da"
 
417
                 "a1556f44c47132a87303c6a2"));
424
418
 
425
419
  /* Test vectors for sha256, from RFC 4231 */
426
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
427
 
            HL("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
428
 
               "0b0b0b0b"),
429
 
            LDATA("Hi There"),
430
 
            H("b0344c61d8db38535ca8afceaf0bf12b"
431
 
              "881dc200c9833da726e9376c2e32cff7"));
432
 
 
433
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
434
 
            LDATA("Jefe"),
435
 
            LDATA("what do ya want for nothing?"),
436
 
            H("5bdcc146bf60754e6a042426089575c7"
437
 
              "5a003f089d2739839dec58b964ec3843"));
438
 
 
439
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
440
 
            HL("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
441
 
               "aaaaaaaa"),
442
 
            HL("dddddddddddddddddddddddddddddddd"
443
 
               "dddddddddddddddddddddddddddddddd"
444
 
               "dddddddddddddddddddddddddddddddd"
445
 
               "dddd"),
446
 
            H("773ea91e36800e46854db8ebd09181a7"
447
 
              "2959098b3ef8c122d9635514ced565fe"));
448
 
 
449
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
450
 
            HL("0102030405060708090a0b0c0d0e0f10"
451
 
               "111213141516171819"),
452
 
            HL("cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
453
 
               "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
454
 
               "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
455
 
               "cdcd"),
456
 
            H("82558a389a443c0ea4cc819899f2083a"
457
 
              "85f0faa3e578f8077a2e3ff46729665b"));
458
 
 
459
 
  HMAC_TEST(sha256, 16,
460
 
            HL("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
461
 
            LDATA("Test With Truncation"),
462
 
            H("a3b6167473100ee06e0c796c2955552b"));
463
 
 
464
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
465
 
            HL("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
466
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
467
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
468
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
469
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
470
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
471
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
472
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
473
 
               "aaaaaa"),
474
 
            LDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
475
 
            H("60e431591ee0b67f0d8a26aacbf5b77f"
476
 
              "8e0bc6213728c5140546040f0ee37f54"));
477
 
 
478
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
479
 
            HL("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
480
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
481
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
482
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
483
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
484
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
485
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
486
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
487
 
               "aaaaaa"),
488
 
            LDATA("This is a test using a larger than block-size ke"
 
420
  HMAC_TEST(sha256,
 
421
            SHEX("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
 
422
                 "0b0b0b0b"),
 
423
            SDATA("Hi There"),
 
424
            SHEX("b0344c61d8db38535ca8afceaf0bf12b"
 
425
                 "881dc200c9833da726e9376c2e32cff7"));
 
426
 
 
427
  HMAC_TEST(sha256,
 
428
            SDATA("Jefe"),
 
429
            SDATA("what do ya want for nothing?"),
 
430
            SHEX("5bdcc146bf60754e6a042426089575c7"
 
431
                 "5a003f089d2739839dec58b964ec3843"));
 
432
 
 
433
  HMAC_TEST(sha256,
 
434
            SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
435
                 "aaaaaaaa"),
 
436
            SHEX("dddddddddddddddddddddddddddddddd"
 
437
                 "dddddddddddddddddddddddddddddddd"
 
438
                 "dddddddddddddddddddddddddddddddd"
 
439
                 "dddd"),
 
440
            SHEX("773ea91e36800e46854db8ebd09181a7"
 
441
                 "2959098b3ef8c122d9635514ced565fe"));
 
442
 
 
443
  HMAC_TEST(sha256,
 
444
            SHEX("0102030405060708090a0b0c0d0e0f10"
 
445
                 "111213141516171819"),
 
446
            SHEX("cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
 
447
                 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
 
448
                 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
 
449
                 "cdcd"),
 
450
            SHEX("82558a389a443c0ea4cc819899f2083a"
 
451
                 "85f0faa3e578f8077a2e3ff46729665b"));
 
452
 
 
453
  HMAC_TEST(sha256,
 
454
            SHEX("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
 
455
            SDATA("Test With Truncation"),
 
456
            SHEX("a3b6167473100ee06e0c796c2955552b"));
 
457
 
 
458
  HMAC_TEST(sha256,
 
459
            SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
460
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
461
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
462
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
463
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
464
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
465
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
466
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
467
                 "aaaaaa"),
 
468
            SDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
 
469
            SHEX("60e431591ee0b67f0d8a26aacbf5b77f"
 
470
                 "8e0bc6213728c5140546040f0ee37f54"));
 
471
 
 
472
  HMAC_TEST(sha256,
 
473
            SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
474
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
475
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
476
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
477
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
478
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
479
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
480
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
481
                 "aaaaaa"),
 
482
            SDATA("This is a test using a larger than block-size ke"
489
483
                  "y and a larger than block-size data. The key nee"
490
484
                  "ds to be hashed before being used by the HMAC al"
491
485
                  "gorithm."),
492
 
            H("9b09ffa71b942fcb27635fbcd5b0e944"
493
 
              "bfdc63644f0713938a7f51535c3a35e2"));
 
486
            SHEX("9b09ffa71b942fcb27635fbcd5b0e944"
 
487
                 "bfdc63644f0713938a7f51535c3a35e2"));
494
488
 
495
489
  /* Additional test vectors for sha256, from
496
490
     draft-ietf-ipsec-ciph-sha-256-01.txt */
497
491
 
498
492
  /* Test Case #1: HMAC-SHA-256 with 3-byte input and 32-byte key */
499
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
500
 
            HL("0102030405060708 090a0b0c0d0e0f10"
501
 
               "1112131415161718 191a1b1c1d1e1f20"),
502
 
            LDATA("abc"),
503
 
            H("a21b1f5d4cf4f73a 4dd939750f7a066a"
 
493
  HMAC_TEST(sha256,
 
494
            SHEX("0102030405060708 090a0b0c0d0e0f10"
 
495
                 "1112131415161718 191a1b1c1d1e1f20"),
 
496
            SDATA("abc"),
 
497
            SHEX("a21b1f5d4cf4f73a 4dd939750f7a066a"
504
498
                 "7f98cc131cb16a66 92759021cfab8181"));
505
499
 
506
500
  /* Test Case #2: HMAC-SHA-256 with 56-byte input and 32-byte key */
507
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
508
 
            HL("0102030405060708 090a0b0c0d0e0f10"
509
 
               "1112131415161718 191a1b1c1d1e1f20"),
510
 
            LDATA("abcdbcdecdefdefgefghfghighijhijk"
 
501
  HMAC_TEST(sha256,
 
502
            SHEX("0102030405060708 090a0b0c0d0e0f10"
 
503
                 "1112131415161718 191a1b1c1d1e1f20"),
 
504
            SDATA("abcdbcdecdefdefgefghfghighijhijk"
511
505
                  "ijkljklmklmnlmnomnopnopq"),
512
 
            H("104fdc1257328f08 184ba73131c53cae"
 
506
            SHEX("104fdc1257328f08 184ba73131c53cae"
513
507
                 "e698e36119421149 ea8c712456697d30"));
514
508
 
515
509
  /* Test Case #3: HMAC-SHA-256 with 112-byte (multi-block) input
516
510
     and 32-byte key */
517
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
518
 
            HL("0102030405060708 090a0b0c0d0e0f10"
519
 
               "1112131415161718 191a1b1c1d1e1f20"),
520
 
            LDATA("abcdbcdecdefdefgefghfghighijhijk"
 
511
  HMAC_TEST(sha256,
 
512
            SHEX("0102030405060708 090a0b0c0d0e0f10"
 
513
                 "1112131415161718 191a1b1c1d1e1f20"),
 
514
            SDATA("abcdbcdecdefdefgefghfghighijhijk"
521
515
                  "ijkljklmklmnlmnomnopnopqabcdbcde"
522
516
                  "cdefdefgefghfghighijhijkijkljklm"
523
517
                  "klmnlmnomnopnopq"),
524
 
            H("470305fc7e40fe34 d3eeb3e773d95aab"
525
 
              "73acf0fd060447a5 eb4595bf33a9d1a3"));
 
518
            SHEX("470305fc7e40fe34 d3eeb3e773d95aab"
 
519
                 "73acf0fd060447a5 eb4595bf33a9d1a3"));
526
520
 
527
521
  /* Test Case #4:  HMAC-SHA-256 with 8-byte input and 32-byte key */
528
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
529
 
            HL("0b0b0b0b0b0b0b0b 0b0b0b0b0b0b0b0b"
530
 
               "0b0b0b0b0b0b0b0b 0b0b0b0b0b0b0b0b"),
531
 
            LDATA("Hi There"),
532
 
            H("198a607eb44bfbc6 9903a0f1cf2bbdc5"
533
 
              "ba0aa3f3d9ae3c1c 7a3b1696a0b68cf7"));
 
522
  HMAC_TEST(sha256,
 
523
            SHEX("0b0b0b0b0b0b0b0b 0b0b0b0b0b0b0b0b"
 
524
                 "0b0b0b0b0b0b0b0b 0b0b0b0b0b0b0b0b"),
 
525
            SDATA("Hi There"),
 
526
            SHEX("198a607eb44bfbc6 9903a0f1cf2bbdc5"
 
527
                 "ba0aa3f3d9ae3c1c 7a3b1696a0b68cf7"));
534
528
 
535
529
  /* Test Case #6: HMAC-SHA-256 with 50-byte input and 32-byte key */
536
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
537
 
            HL("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
538
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
539
 
            HL("dddddddddddddddd dddddddddddddddd"
540
 
               "dddddddddddddddd dddddddddddddddd"
541
 
               "dddddddddddddddd dddddddddddddddd"
542
 
               "dddd"),
543
 
            H("cdcb1220d1ecccea 91e53aba3092f962"
544
 
              "e549fe6ce9ed7fdc 43191fbde45c30b0"));
 
530
  HMAC_TEST(sha256,
 
531
            SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
532
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
 
533
            SHEX("dddddddddddddddd dddddddddddddddd"
 
534
                 "dddddddddddddddd dddddddddddddddd"
 
535
                 "dddddddddddddddd dddddddddddddddd"
 
536
                 "dddd"),
 
537
            SHEX("cdcb1220d1ecccea 91e53aba3092f962"
 
538
                 "e549fe6ce9ed7fdc 43191fbde45c30b0"));
545
539
 
546
540
  /* Test Case #7: HMAC-SHA-256 with 50-byte input and 37-byte key */
547
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
548
 
            HL("0102030405060708 090a0b0c0d0e0f10"
549
 
               "1112131415161718 191a1b1c1d1e1f20"
550
 
               "2122232425"),
551
 
            HL("cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
552
 
               "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
553
 
               "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
554
 
               "cdcd"),
555
 
            H("d4633c17f6fb8d74 4c66dee0f8f07455"
556
 
              "6ec4af55ef079985 41468eb49bd2e917"));
 
541
  HMAC_TEST(sha256,
 
542
            SHEX("0102030405060708 090a0b0c0d0e0f10"
 
543
                 "1112131415161718 191a1b1c1d1e1f20"
 
544
                 "2122232425"),
 
545
            SHEX("cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
 
546
                 "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
 
547
                 "cdcdcdcdcdcdcdcd cdcdcdcdcdcdcdcd"
 
548
                 "cdcd"),
 
549
            SHEX("d4633c17f6fb8d74 4c66dee0f8f07455"
 
550
                 "6ec4af55ef079985 41468eb49bd2e917"));
557
551
 
558
552
  /* Test Case #8: HMAC-SHA-256 with 20-byte input and 32-byte key */
559
 
  HMAC_TEST(sha256, 16,
560
 
            HL("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c"
561
 
               "0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c"),
562
 
            LDATA("Test With Truncation"),
563
 
            H("7546af01841fc09b 1ab9c3749a5f1c17"));
 
553
  HMAC_TEST(sha256,
 
554
            SHEX("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c"
 
555
                 "0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c"),
 
556
            SDATA("Test With Truncation"),
 
557
            SHEX("7546af01841fc09b 1ab9c3749a5f1c17"));
564
558
 
565
559
  /* Test Case #9: HMAC-SHA-256 with 54-byte input and 80-byte key */
566
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
567
 
            HL("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
568
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
569
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
570
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
571
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
572
 
            LDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
573
 
            H("6953025ed96f0c09 f80a96f78e6538db"
574
 
              "e2e7b820e3dd970e 7ddd39091b32352f"));
 
560
  HMAC_TEST(sha256,
 
561
            SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
562
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
563
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
564
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
565
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
 
566
            SDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
 
567
            SHEX("6953025ed96f0c09 f80a96f78e6538db"
 
568
                 "e2e7b820e3dd970e 7ddd39091b32352f"));
575
569
 
576
570
  /* Test Case #10: HMAC-SHA-256 with 73-byte (multi-block) input
577
571
     and 80-byte key */
578
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
579
 
            HL("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
580
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
581
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
582
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
583
 
               "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
584
 
            LDATA("Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data"),
585
 
            H("6355ac22e890d0a3 c8481a5ca4825bc8"
586
 
              "84d3e7a1ff98a2fc 2ac7d8e064c3b2e6"));
 
572
  HMAC_TEST(sha256,
 
573
            SHEX("aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
574
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
575
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
576
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"
 
577
                 "aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa"),
 
578
            SDATA("Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data"),
 
579
            SHEX("6355ac22e890d0a3 c8481a5ca4825bc8"
 
580
                 "84d3e7a1ff98a2fc 2ac7d8e064c3b2e6"));
587
581
 
588
582
  /* Additional test vectors, from Daniel Kahn Gillmor */
589
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
590
 
            LDATA("monkey monkey monkey monkey"),
591
 
            LDATA(""),
592
 
            H("5c780648c90d121c50091c3a0c3afc1f"
593
 
              "4ab847528005d99d9821ad3f341b651a"));
594
 
  
595
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
596
 
            LDATA("monkey monkey monkey monkey"),
597
 
            LDATA("a"),
598
 
            H("6142364c0646b0cfe426866f21d613e0"
599
 
              "55a136a7d9b45d85685e080a09cec463"));
600
 
  
601
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
602
 
            LDATA("monkey monkey monkey monkey"),
603
 
            LDATA("38"),
604
 
            H("e49aa7839977e130ad87b63da9d4eb7b"
605
 
              "263cd5a27c54a7604b6044eb35901171"));
606
 
  
607
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
608
 
            LDATA("monkey monkey monkey monkey"),
609
 
            LDATA("abc"),
610
 
            H("e5ef49f545c7af933a9d18c7c562bc91"
611
 
              "08583fd5cf00d9e0db351d6d8f8e41bc"));
612
 
  
613
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
614
 
            LDATA("monkey monkey monkey monkey"),
615
 
            LDATA("message digest"),
616
 
            H("373b04877180fea27a41a8fb8f88201c"
617
 
              "a6268411ee3c80b01a424483eb9156e1"));
618
 
  
619
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
620
 
            LDATA("monkey monkey monkey monkey"),
621
 
            LDATA("abcdefghijklmnopqrstuvwxyz"),
622
 
            H("eb5945d56eefbdb41602946ea6448d53"
623
 
              "86b08d7d801a87f439fab52f8bb9736e"));
624
 
 
625
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
626
 
            LDATA("monkey monkey monkey monkey"),
627
 
            LDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
628
 
            H("3798f363c57afa6edaffe39016ca7bad"
629
 
              "efd1e670afb0e3987194307dec3197db"));
630
 
 
631
 
  HMAC_TEST(sha256, SHA256_DIGEST_SIZE,
632
 
            LDATA("monkey monkey monkey monkey"),
633
 
            LDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
634
 
            H("c89a7039a62985ff813fe4509b918a43"
635
 
              "6d7b1ffd8778e2c24dec464849fb6128"));
 
583
  HMAC_TEST(sha256,
 
584
            SDATA("monkey monkey monkey monkey"),
 
585
            SDATA(""),
 
586
            SHEX("5c780648c90d121c50091c3a0c3afc1f"
 
587
                 "4ab847528005d99d9821ad3f341b651a"));
 
588
  
 
589
  HMAC_TEST(sha256,
 
590
            SDATA("monkey monkey monkey monkey"),
 
591
            SDATA("a"),
 
592
            SHEX("6142364c0646b0cfe426866f21d613e0"
 
593
                 "55a136a7d9b45d85685e080a09cec463"));
 
594
  
 
595
  HMAC_TEST(sha256,
 
596
            SDATA("monkey monkey monkey monkey"),
 
597
            SDATA("38"),
 
598
            SHEX("e49aa7839977e130ad87b63da9d4eb7b"
 
599
                 "263cd5a27c54a7604b6044eb35901171"));
 
600
  
 
601
  HMAC_TEST(sha256,
 
602
            SDATA("monkey monkey monkey monkey"),
 
603
            SDATA("abc"),
 
604
            SHEX("e5ef49f545c7af933a9d18c7c562bc91"
 
605
                 "08583fd5cf00d9e0db351d6d8f8e41bc"));
 
606
  
 
607
  HMAC_TEST(sha256,
 
608
            SDATA("monkey monkey monkey monkey"),
 
609
            SDATA("message digest"),
 
610
            SHEX("373b04877180fea27a41a8fb8f88201c"
 
611
                 "a6268411ee3c80b01a424483eb9156e1"));
 
612
  
 
613
  HMAC_TEST(sha256,
 
614
            SDATA("monkey monkey monkey monkey"),
 
615
            SDATA("abcdefghijklmnopqrstuvwxyz"),
 
616
            SHEX("eb5945d56eefbdb41602946ea6448d53"
 
617
                 "86b08d7d801a87f439fab52f8bb9736e"));
 
618
 
 
619
  HMAC_TEST(sha256,
 
620
            SDATA("monkey monkey monkey monkey"),
 
621
            SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
 
622
            SHEX("3798f363c57afa6edaffe39016ca7bad"
 
623
                 "efd1e670afb0e3987194307dec3197db"));
 
624
 
 
625
  HMAC_TEST(sha256,
 
626
            SDATA("monkey monkey monkey monkey"),
 
627
            SDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
 
628
            SHEX("c89a7039a62985ff813fe4509b918a43"
 
629
                 "6d7b1ffd8778e2c24dec464849fb6128"));
636
630
 
637
631
  /* Test vectors for sha384, from RFC 4231 */
638
 
  HMAC_TEST(sha384, SHA384_DIGEST_SIZE,
639
 
            HL("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
640
 
               "0b0b0b0b"),
641
 
            LDATA("Hi There"),
642
 
            H("afd03944d84895626b0825f4ab46907f"
643
 
              "15f9dadbe4101ec682aa034c7cebc59c"
644
 
              "faea9ea9076ede7f4af152e8b2fa9cb6"));
645
 
 
646
 
  HMAC_TEST(sha384, SHA384_DIGEST_SIZE,
647
 
            LDATA("Jefe"),
648
 
            LDATA("what do ya want for nothing?"),
649
 
            H("af45d2e376484031617f78d2b58a6b1b"
650
 
              "9c7ef464f5a01b47e42ec3736322445e"
651
 
              "8e2240ca5e69e2c78b3239ecfab21649"));
652
 
 
653
 
  HMAC_TEST(sha384, SHA384_DIGEST_SIZE,
654
 
            HL("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
655
 
               "aaaaaaaa"),
656
 
            HL("dddddddddddddddddddddddddddddddd"
657
 
               "dddddddddddddddddddddddddddddddd"
658
 
               "dddddddddddddddddddddddddddddddd"
659
 
               "dddd"),
660
 
            H("88062608d3e6ad8a0aa2ace014c8a86f"
661
 
              "0aa635d947ac9febe83ef4e55966144b"
662
 
              "2a5ab39dc13814b94e3ab6e101a34f27"));
663
 
 
664
 
  HMAC_TEST(sha384, SHA384_DIGEST_SIZE,
665
 
            HL("0102030405060708090a0b0c0d0e0f10"
666
 
               "111213141516171819"),
667
 
            HL("cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
668
 
               "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
669
 
               "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
670
 
               "cdcd"),
671
 
            H("3e8a69b7783c25851933ab6290af6ca7"
672
 
              "7a9981480850009cc5577c6e1f573b4e"
673
 
              "6801dd23c4a7d679ccf8a386c674cffb"));
674
 
 
675
 
  HMAC_TEST(sha384, 16,
676
 
            HL("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
677
 
            LDATA("Test With Truncation"),
678
 
            H("3abf34c3503b2a23a46efc619baef897"));
679
 
 
680
 
  HMAC_TEST(sha384, SHA384_DIGEST_SIZE,
681
 
            HL("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
682
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
683
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
684
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
685
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
686
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
687
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
688
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
689
 
               "aaaaaa"),
690
 
            LDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
691
 
            H("4ece084485813e9088d2c63a041bc5b4"
692
 
              "4f9ef1012a2b588f3cd11f05033ac4c6"
693
 
              "0c2ef6ab4030fe8296248df163f44952"));
694
 
 
695
 
  HMAC_TEST(sha384, SHA384_DIGEST_SIZE,
696
 
            HL("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
697
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
698
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
699
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
700
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
701
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
702
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
703
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
704
 
               "aaaaaa"),
705
 
            LDATA("This is a test using a larger than block-size ke"
 
632
  HMAC_TEST(sha384,
 
633
            SHEX("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
 
634
                 "0b0b0b0b"),
 
635
            SDATA("Hi There"),
 
636
            SHEX("afd03944d84895626b0825f4ab46907f"
 
637
                 "15f9dadbe4101ec682aa034c7cebc59c"
 
638
                 "faea9ea9076ede7f4af152e8b2fa9cb6"));
 
639
 
 
640
  HMAC_TEST(sha384,
 
641
            SDATA("Jefe"),
 
642
            SDATA("what do ya want for nothing?"),
 
643
            SHEX("af45d2e376484031617f78d2b58a6b1b"
 
644
                 "9c7ef464f5a01b47e42ec3736322445e"
 
645
                 "8e2240ca5e69e2c78b3239ecfab21649"));
 
646
 
 
647
  HMAC_TEST(sha384,
 
648
            SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
649
                 "aaaaaaaa"),
 
650
            SHEX("dddddddddddddddddddddddddddddddd"
 
651
                 "dddddddddddddddddddddddddddddddd"
 
652
                 "dddddddddddddddddddddddddddddddd"
 
653
                 "dddd"),
 
654
            SHEX("88062608d3e6ad8a0aa2ace014c8a86f"
 
655
                 "0aa635d947ac9febe83ef4e55966144b"
 
656
                 "2a5ab39dc13814b94e3ab6e101a34f27"));
 
657
 
 
658
  HMAC_TEST(sha384,
 
659
            SHEX("0102030405060708090a0b0c0d0e0f10"
 
660
                 "111213141516171819"),
 
661
            SHEX("cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
 
662
                 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
 
663
                 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
 
664
                 "cdcd"),
 
665
            SHEX("3e8a69b7783c25851933ab6290af6ca7"
 
666
                 "7a9981480850009cc5577c6e1f573b4e"
 
667
                 "6801dd23c4a7d679ccf8a386c674cffb"));
 
668
 
 
669
  HMAC_TEST(sha384,
 
670
            SHEX("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
 
671
            SDATA("Test With Truncation"),
 
672
            SHEX("3abf34c3503b2a23a46efc619baef897"));
 
673
 
 
674
  HMAC_TEST(sha384,
 
675
            SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
676
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
677
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
678
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
679
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
680
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
681
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
682
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
683
                 "aaaaaa"),
 
684
            SDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
 
685
            SHEX("4ece084485813e9088d2c63a041bc5b4"
 
686
                 "4f9ef1012a2b588f3cd11f05033ac4c6"
 
687
                 "0c2ef6ab4030fe8296248df163f44952"));
 
688
 
 
689
  HMAC_TEST(sha384,
 
690
            SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
691
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
692
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
693
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
694
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
695
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
696
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
697
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
698
                 "aaaaaa"),
 
699
            SDATA("This is a test using a larger than block-size ke"
706
700
                  "y and a larger than block-size data. The key nee"
707
701
                  "ds to be hashed before being used by the HMAC al"
708
702
                  "gorithm."),
709
 
            H("6617178e941f020d351e2f254e8fd32c"
710
 
              "602420feb0b8fb9adccebb82461e99c5"
711
 
              "a678cc31e799176d3860e6110c46523e"));
 
703
            SHEX("6617178e941f020d351e2f254e8fd32c"
 
704
                 "602420feb0b8fb9adccebb82461e99c5"
 
705
                 "a678cc31e799176d3860e6110c46523e"));
712
706
 
713
707
  /* Test vectors for sha512, from RFC 4231 */
714
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
715
 
            HL("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
716
 
               "0b0b0b0b"),
717
 
            LDATA("Hi There"),
718
 
            H("87aa7cdea5ef619d4ff0b4241a1d6cb0"
719
 
              "2379f4e2ce4ec2787ad0b30545e17cde"
720
 
              "daa833b7d6b8a702038b274eaea3f4e4"
721
 
              "be9d914eeb61f1702e696c203a126854"));
722
 
 
723
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
724
 
            LDATA("Jefe"),
725
 
            LDATA("what do ya want for nothing?"),
726
 
            H("164b7a7bfcf819e2e395fbe73b56e0a3"
727
 
              "87bd64222e831fd610270cd7ea250554"
728
 
              "9758bf75c05a994a6d034f65f8f0e6fd"
729
 
              "caeab1a34d4a6b4b636e070a38bce737"));
730
 
 
731
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
732
 
            HL("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
733
 
               "aaaaaaaa"),
734
 
            HL("dddddddddddddddddddddddddddddddd"
735
 
               "dddddddddddddddddddddddddddddddd"
736
 
               "dddddddddddddddddddddddddddddddd"
737
 
               "dddd"),
738
 
            H("fa73b0089d56a284efb0f0756c890be9"
739
 
              "b1b5dbdd8ee81a3655f83e33b2279d39"
740
 
              "bf3e848279a722c806b485a47e67c807"
741
 
              "b946a337bee8942674278859e13292fb"));
742
 
 
743
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
744
 
            HL("0102030405060708090a0b0c0d0e0f10"
745
 
               "111213141516171819"),
746
 
            HL("cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
747
 
               "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
748
 
               "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
749
 
               "cdcd"),
750
 
            H("b0ba465637458c6990e5a8c5f61d4af7"
751
 
              "e576d97ff94b872de76f8050361ee3db"
752
 
              "a91ca5c11aa25eb4d679275cc5788063"
753
 
              "a5f19741120c4f2de2adebeb10a298dd"));
754
 
 
755
 
  HMAC_TEST(sha512, 16,
756
 
            HL("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
757
 
            LDATA("Test With Truncation"),
758
 
            H("415fad6271580a531d4179bc891d87a6"));
759
 
 
760
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
761
 
            HL("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
762
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
763
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
764
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
765
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
766
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
767
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
768
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
769
 
               "aaaaaa"),
770
 
            LDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
771
 
            H("80b24263c7c1a3ebb71493c1dd7be8b4"
772
 
              "9b46d1f41b4aeec1121b013783f8f352"
773
 
              "6b56d037e05f2598bd0fd2215d6a1e52"
774
 
              "95e64f73f63f0aec8b915a985d786598"));
775
 
 
776
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
777
 
            HL("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
778
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
779
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
780
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
781
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
782
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
783
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
784
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
785
 
               "aaaaaa"),
786
 
            LDATA("This is a test using a larger than block-size ke"
 
708
  HMAC_TEST(sha512,
 
709
            SHEX("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
 
710
                 "0b0b0b0b"),
 
711
            SDATA("Hi There"),
 
712
            SHEX("87aa7cdea5ef619d4ff0b4241a1d6cb0"
 
713
                 "2379f4e2ce4ec2787ad0b30545e17cde"
 
714
                 "daa833b7d6b8a702038b274eaea3f4e4"
 
715
                 "be9d914eeb61f1702e696c203a126854"));
 
716
 
 
717
  HMAC_TEST(sha512,
 
718
            SDATA("Jefe"),
 
719
            SDATA("what do ya want for nothing?"),
 
720
            SHEX("164b7a7bfcf819e2e395fbe73b56e0a3"
 
721
                 "87bd64222e831fd610270cd7ea250554"
 
722
                 "9758bf75c05a994a6d034f65f8f0e6fd"
 
723
                 "caeab1a34d4a6b4b636e070a38bce737"));
 
724
 
 
725
  HMAC_TEST(sha512,
 
726
            SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
727
                 "aaaaaaaa"),
 
728
            SHEX("dddddddddddddddddddddddddddddddd"
 
729
                 "dddddddddddddddddddddddddddddddd"
 
730
                 "dddddddddddddddddddddddddddddddd"
 
731
                 "dddd"),
 
732
            SHEX("fa73b0089d56a284efb0f0756c890be9"
 
733
                 "b1b5dbdd8ee81a3655f83e33b2279d39"
 
734
                 "bf3e848279a722c806b485a47e67c807"
 
735
                 "b946a337bee8942674278859e13292fb"));
 
736
 
 
737
  HMAC_TEST(sha512,
 
738
            SHEX("0102030405060708090a0b0c0d0e0f10"
 
739
                 "111213141516171819"),
 
740
            SHEX("cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
 
741
                 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
 
742
                 "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
 
743
                 "cdcd"),
 
744
            SHEX("b0ba465637458c6990e5a8c5f61d4af7"
 
745
                 "e576d97ff94b872de76f8050361ee3db"
 
746
                 "a91ca5c11aa25eb4d679275cc5788063"
 
747
                 "a5f19741120c4f2de2adebeb10a298dd"));
 
748
 
 
749
  HMAC_TEST(sha512,
 
750
            SHEX("0c0c0c0c0c0c0c0c 0c0c0c0c0c0c0c0c 0c0c0c0c"),
 
751
            SDATA("Test With Truncation"),
 
752
            SHEX("415fad6271580a531d4179bc891d87a6"));
 
753
 
 
754
  HMAC_TEST(sha512,
 
755
            SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
756
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
757
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
758
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
759
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
760
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
761
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
762
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
763
                 "aaaaaa"),
 
764
            SDATA("Test Using Larger Than Block-Size Key - Hash Key First"),
 
765
            SHEX("80b24263c7c1a3ebb71493c1dd7be8b4"
 
766
                 "9b46d1f41b4aeec1121b013783f8f352"
 
767
                 "6b56d037e05f2598bd0fd2215d6a1e52"
 
768
                 "95e64f73f63f0aec8b915a985d786598"));
 
769
 
 
770
  HMAC_TEST(sha512,
 
771
            SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
772
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
773
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
774
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
775
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
776
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
777
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
778
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
779
                 "aaaaaa"),
 
780
            SDATA("This is a test using a larger than block-size ke"
787
781
                  "y and a larger than block-size data. The key nee"
788
782
                  "ds to be hashed before being used by the HMAC al"
789
783
                  "gorithm."),
790
 
            H("e37b6a775dc87dbaa4dfa9f96e5e3ffd"
791
 
              "debd71f8867289865df5a32d20cdc944"
792
 
              "b6022cac3c4982b10d5eeb55c3e4de15"
793
 
              "134676fb6de0446065c97440fa8c6a58"));
 
784
            SHEX("e37b6a775dc87dbaa4dfa9f96e5e3ffd"
 
785
                 "debd71f8867289865df5a32d20cdc944"
 
786
                 "b6022cac3c4982b10d5eeb55c3e4de15"
 
787
                 "134676fb6de0446065c97440fa8c6a58"));
794
788
 
795
789
  /* Additional test vectors, from Daniel Kahn Gillmor */
796
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
797
 
            LDATA("monkey monkey monkey monkey"),
798
 
            LDATA(""),
799
 
            H("34316413c2d6940572d0bbbf099d529d"
800
 
              "148b424533cf562bc1b365f530e21a31"
801
 
              "799fc51cef78060cc6f448a8e5d780c2"
802
 
              "6cdf20d4c3e6f27fe5ef576bbd05e855"));
803
 
  
804
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
805
 
            LDATA("monkey monkey monkey monkey"),
806
 
            LDATA("a"),
807
 
            H("cf1948507378bc3ab58cb6ec87f4d456"
808
 
              "b90d3298395c29873f1ded1e111b50fe"
809
 
              "c336ed24684bf19716efc309212f37aa"
810
 
              "715cfb9ecccf3af13691ded167b4b336"));
811
 
  
812
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
813
 
            LDATA("monkey monkey monkey monkey"),
814
 
            LDATA("38"),
815
 
            H("b8201784216ce01b83cdd282616c6e89"
816
 
              "644c6dfd1269ed8580bbc39b92add364"
817
 
              "c2b2a2018cffb1915e8625e473b67d0f"
818
 
              "e54a50e475dfa0e2b1a97bac1383792c"));
819
 
  
820
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
821
 
            LDATA("monkey monkey monkey monkey"),
822
 
            LDATA("abc"),
823
 
            H("f097ee08b8c44e847a384f9fd645e35e"
824
 
              "4816baa9791ba39d3dc611210500b044"
825
 
              "873ee296bf1047dc06daa201a5767192"
826
 
              "5b73b4ea59c60114881c8287d0699c83"));
827
 
  
828
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
829
 
            LDATA("monkey monkey monkey monkey"),
830
 
            LDATA("message digest"),
831
 
            H("921a441a884b83c76a8526da8e60d60d"
832
 
              "17ded4eee5c29375e0d93717669a4c3e"
833
 
              "eba7473e95f7c1a2a85afc24a0adbc4d"
834
 
              "6c2bdd6ca6cab8b18d19f82d4a6c51bc"));
835
 
  
836
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
837
 
            LDATA("monkey monkey monkey monkey"),
838
 
            LDATA("abcdefghijklmnopqrstuvwxyz"),
839
 
            H("640054c96f35815095617d0a8c956066"
840
 
              "1a6ff46bfb39110333b2c52c8866abfb"
841
 
              "59d9152c9b0948c1ed65c3fd72a8fb82"
842
 
              "190acc8830770afe5b0c5b6414c75a77"));
843
 
 
844
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
845
 
            LDATA("monkey monkey monkey monkey"),
846
 
            LDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
847
 
            H("835a4f5b3750b4c1fccfa88da2f746a4"
848
 
              "900160c9f18964309bb736c13b59491b"
849
 
              "8e32d37b724cc5aebb0f554c6338a3b5"
850
 
              "94c4ba26862b2dadb59b7ede1d08d53e"));
851
 
 
852
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
853
 
            LDATA("monkey monkey monkey monkey"),
854
 
            LDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
855
 
            H("fdf83dc879e3476c8e8aceff2bf6fece"
856
 
              "2e4f39c7e1a167845465bb549dfa5ffe"
857
 
              "997e6c7cf3720eae51ed2b00ad2a8225"
858
 
              "375092290edfa9d48ec7e4bc8e276088"));
 
790
  HMAC_TEST(sha512,
 
791
            SDATA("monkey monkey monkey monkey"),
 
792
            SDATA(""),
 
793
            SHEX("34316413c2d6940572d0bbbf099d529d"
 
794
                 "148b424533cf562bc1b365f530e21a31"
 
795
                 "799fc51cef78060cc6f448a8e5d780c2"
 
796
                 "6cdf20d4c3e6f27fe5ef576bbd05e855"));
 
797
  
 
798
  HMAC_TEST(sha512,
 
799
            SDATA("monkey monkey monkey monkey"),
 
800
            SDATA("a"),
 
801
            SHEX("cf1948507378bc3ab58cb6ec87f4d456"
 
802
                 "b90d3298395c29873f1ded1e111b50fe"
 
803
                 "c336ed24684bf19716efc309212f37aa"
 
804
                 "715cfb9ecccf3af13691ded167b4b336"));
 
805
  
 
806
  HMAC_TEST(sha512,
 
807
            SDATA("monkey monkey monkey monkey"),
 
808
            SDATA("38"),
 
809
            SHEX("b8201784216ce01b83cdd282616c6e89"
 
810
                 "644c6dfd1269ed8580bbc39b92add364"
 
811
                 "c2b2a2018cffb1915e8625e473b67d0f"
 
812
                 "e54a50e475dfa0e2b1a97bac1383792c"));
 
813
  
 
814
  HMAC_TEST(sha512,
 
815
            SDATA("monkey monkey monkey monkey"),
 
816
            SDATA("abc"),
 
817
            SHEX("f097ee08b8c44e847a384f9fd645e35e"
 
818
                 "4816baa9791ba39d3dc611210500b044"
 
819
                 "873ee296bf1047dc06daa201a5767192"
 
820
                 "5b73b4ea59c60114881c8287d0699c83"));
 
821
  
 
822
  HMAC_TEST(sha512,
 
823
            SDATA("monkey monkey monkey monkey"),
 
824
            SDATA("message digest"),
 
825
            SHEX("921a441a884b83c76a8526da8e60d60d"
 
826
                 "17ded4eee5c29375e0d93717669a4c3e"
 
827
                 "eba7473e95f7c1a2a85afc24a0adbc4d"
 
828
                 "6c2bdd6ca6cab8b18d19f82d4a6c51bc"));
 
829
  
 
830
  HMAC_TEST(sha512,
 
831
            SDATA("monkey monkey monkey monkey"),
 
832
            SDATA("abcdefghijklmnopqrstuvwxyz"),
 
833
            SHEX("640054c96f35815095617d0a8c956066"
 
834
                 "1a6ff46bfb39110333b2c52c8866abfb"
 
835
                 "59d9152c9b0948c1ed65c3fd72a8fb82"
 
836
                 "190acc8830770afe5b0c5b6414c75a77"));
 
837
 
 
838
  HMAC_TEST(sha512,
 
839
            SDATA("monkey monkey monkey monkey"),
 
840
            SDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
 
841
            SHEX("835a4f5b3750b4c1fccfa88da2f746a4"
 
842
                 "900160c9f18964309bb736c13b59491b"
 
843
                 "8e32d37b724cc5aebb0f554c6338a3b5"
 
844
                 "94c4ba26862b2dadb59b7ede1d08d53e"));
 
845
 
 
846
  HMAC_TEST(sha512,
 
847
            SDATA("monkey monkey monkey monkey"),
 
848
            SDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
 
849
            SHEX("fdf83dc879e3476c8e8aceff2bf6fece"
 
850
                 "2e4f39c7e1a167845465bb549dfa5ffe"
 
851
                 "997e6c7cf3720eae51ed2b00ad2a8225"
 
852
                 "375092290edfa9d48ec7e4bc8e276088"));
859
853
 
860
854
  /* Additional test vectors, from
861
855
     draft-kelly-ipsec-ciph-sha2-01.txt */
862
856
 
863
857
  /* Test case AUTH512-1: */
864
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
865
 
            HL("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
866
 
               "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
867
 
               "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
868
 
               "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"),
869
 
            LDATA("Hi There"),
870
 
            H("637edc6e01dce7e6742a99451aae82df"
871
 
              "23da3e92439e590e43e761b33e910fb8"
872
 
              "ac2878ebd5803f6f0b61dbce5e251ff8"
873
 
              "789a4722c1be65aea45fd464e89f8f5b"));
 
858
  HMAC_TEST(sha512,
 
859
            SHEX("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
 
860
                 "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
 
861
                 "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"
 
862
                 "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b"),
 
863
            SDATA("Hi There"),
 
864
            SHEX("637edc6e01dce7e6742a99451aae82df"
 
865
                 "23da3e92439e590e43e761b33e910fb8"
 
866
                 "ac2878ebd5803f6f0b61dbce5e251ff8"
 
867
                 "789a4722c1be65aea45fd464e89f8f5b"));
874
868
 
875
869
  /* Test case AUTH512-2: */
876
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
877
 
            LDATA("JefeJefeJefeJefe"
 
870
  HMAC_TEST(sha512,
 
871
            SDATA("JefeJefeJefeJefe"
878
872
                  "JefeJefeJefeJefe"
879
873
                  "JefeJefeJefeJefe"
880
874
                  "JefeJefeJefeJefe"),      
881
 
            LDATA("what do ya want for nothing?"),
882
 
            H("cb370917ae8a7ce28cfd1d8f4705d614"
883
 
              "1c173b2a9362c15df235dfb251b15454"
884
 
              "6aa334ae9fb9afc2184932d8695e397b"
885
 
              "fa0ffb93466cfcceaae38c833b7dba38"));
 
875
            SDATA("what do ya want for nothing?"),
 
876
            SHEX("cb370917ae8a7ce28cfd1d8f4705d614"
 
877
                 "1c173b2a9362c15df235dfb251b15454"
 
878
                 "6aa334ae9fb9afc2184932d8695e397b"
 
879
                 "fa0ffb93466cfcceaae38c833b7dba38"));
886
880
 
887
881
  /* Test case AUTH512-3: */
888
 
  HMAC_TEST(sha512, SHA512_DIGEST_SIZE,
889
 
            HL("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
890
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
891
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
892
 
               "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
893
 
            HL("dddddddddddddddddddddddddddddddd"
894
 
               "dddddddddddddddddddddddddddddddd"
895
 
               "dddddddddddddddddddddddddddddddd"
896
 
               "dddd"),
897
 
            H("2ee7acd783624ca9398710f3ee05ae41"
898
 
              "b9f9b0510c87e49e586cc9bf961733d8"
899
 
              "623c7b55cebefccf02d5581acc1c9d5f"
900
 
              "b1ff68a1de45509fbe4da9a433922655"));
 
882
  HMAC_TEST(sha512,
 
883
            SHEX("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
884
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
885
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
 
886
                 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"),
 
887
            SHEX("dddddddddddddddddddddddddddddddd"
 
888
                 "dddddddddddddddddddddddddddddddd"
 
889
                 "dddddddddddddddddddddddddddddddd"
 
890
                 "dddd"),
 
891
            SHEX("2ee7acd783624ca9398710f3ee05ae41"
 
892
                 "b9f9b0510c87e49e586cc9bf961733d8"
 
893
                 "623c7b55cebefccf02d5581acc1c9d5f"
 
894
                 "b1ff68a1de45509fbe4da9a433922655"));
901
895
 
902
896
  /* Test case AUTH512-3 from same document seems broken. */
903
 
  
904
 
  SUCCESS();
905
897
}