summaryrefslogtreecommitdiff
path: root/lib/crypto/test/md5.myr
blob: 380c531094ccb2dcf54afe1c3d215889b6cae85e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
use std
use crypto

const main = {
	hasheq(crypto.md5("")[:], \
		"d41d8cd98f00b204e9800998ecf8427e")
	hasheq(crypto.md5("h")[:], \
		"2510c39011c5be704182423e3a695e91")
	/* 64 byte block */
	hasheq(crypto.md5("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")[:], \
		"014842d480b571495a4a0363793f7367")
	/* tail spanning */
	hasheq(crypto.md5("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbb")[:], \
		"3b0bb4c5ece4a6568caa7266e740a140")
}

const hasheq = {got, expected
	var sb, str

	sb = std.mksb()
	for x : got
		std.sbfmt(sb, "{p=0,w=2,x}", x)
	;;
	str = std.sbfin(sb)
	if (!std.sleq(str, expected))
		std.fatal("mismatched hashes:\n\tgot:\t{}\n\texpected:\t{}\n", str, expected)
	;;
	std.slfree(str)
}