summaryrefslogtreecommitdiff
path: root/lib/crypto/test/sha1.myr
blob: 0cd3bd8b5198b8b40a373e0d043e046c728eb2c3 (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.sha1("")[:], \
		"da39a3ee5e6b4b0d3255bfef60951890d8af0709")
	hasheq(crypto.sha1("h")[:], \
		"27d5482eebd075de44389774e2fc8c695cf48a75")
	/* 64 byte block */
	hasheq(crypto.sha1("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")[:], \
		"0098ba824b5c16427bd7a1125a2a442aec25644d")
	/* tail spanning */
	hasheq(crypto.sha1("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbb")[:], \
		"4eb17e52bb55910b037869438f69d9c87643d75a")
}

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.eq(str, expected))
		std.fatal("mismatched hashes:\n\tgot:\t{}\n\texpected:\t{}\n", str, expected)
	;;
	std.slfree(str)
}