Skip to content

Commit badbbac

Browse files
committed
FIX: fixed crash with CHECKSUM/key with /method using SHA384 and SHA512
Added also a few quick tests for it.
1 parent e2d866b commit badbbac

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

src/core/n-strings.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -220,8 +220,8 @@ static struct digest {
220220
LABEL_SERIES(digest, "checksum digest");
221221

222222
if (D_REF(ARG_CHECKSUM_KEY)) {
223-
REBYTE tmpdigest[20]; // Size must be max of all digest[].len;
224-
REBYTE ipad[64],opad[64]; // Size must be max of all digest[].hmacblock;
223+
REBYTE tmpdigest[64]; // Size must be max of all digest[].len;
224+
REBYTE ipad[128],opad[128]; // Size must be max of all digest[].hmacblock;
225225
void *ctx = Make_Mem(digests[i].ctxsize());
226226
REBVAL *key = D_ARG(ARG_CHECKSUM_KEY_VALUE);
227227
REBYTE *keycp = VAL_BIN_DATA(key);

src/tests/units/checksum-test.r3

+32-2
Original file line numberDiff line numberDiff line change
@@ -149,9 +149,39 @@ D2079D59D6984814DAC71CDEB38097DB52F77810391FD7B6F92FFBD64EA93DF8
149149
;opening already opened port restarts computation
150150
--assert sum1 = read write/seek/part open port #{cafe0bad} 2 2
151151
--assert sum1 = read write/seek/part open port tail #{cafe0bad} -2 2
152+
===end-group===
152153

153-
154-
154+
===start-group=== "Checksum HMAC SHA"
155+
;@@ https://tools.ietf.org/html/rfc4231
156+
--test-- "test case 1"
157+
key: #{0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b}
158+
data: #{4869205468657265}
159+
--assert (checksum/method/key data 'sha256 key) = #{
160+
B0344C61D8DB38535CA8AFCEAF0BF12B881DC200C9833DA726E9376C2E32CFF7}
161+
162+
--assert (checksum/method/key data 'sha384 key) = #{
163+
AFD03944D84895626B0825F4AB46907F15F9DADBE4101EC682AA034C7CEBC59C
164+
FAEA9EA9076EDE7F4AF152E8B2FA9CB6}
165+
166+
--assert (checksum/method/key data 'sha512 key) = #{
167+
87AA7CDEA5EF619D4FF0B4241A1D6CB02379F4E2CE4EC2787AD0B30545E17CDE
168+
DAA833B7D6B8A702038B274EAEA3F4E4BE9D914EEB61F1702E696C203A126854
169+
}
170+
171+
--test-- "test case 2"
172+
key: #{4a656665}
173+
data: #{7768617420646f2079612077616e7420 666f72206e6f7468696e673f}
174+
--assert (checksum/method/key data 'sha256 key) = #{
175+
5BDCC146BF60754E6A042426089575C75A003F089D2739839DEC58B964EC3843}
176+
177+
--assert (checksum/method/key data 'sha384 key) = #{
178+
AF45D2E376484031617F78D2B58A6B1B9C7EF464F5A01B47E42EC3736322445E
179+
8E2240CA5E69E2C78B3239ECFAB21649}
180+
181+
--assert (checksum/method/key data 'sha512 key) = #{
182+
164B7A7BFCF819E2E395FBE73B56E0A387BD64222E831FD610270CD7EA250554
183+
9758BF75C05A994A6D034F65F8F0E6FDCAEAB1A34D4A6B4B636E070A38BCE737
184+
}
155185

156186
===end-group===
157187

0 commit comments

Comments
 (0)