shithub: mc

ref: bd96cb6a0a361a62871f70c07fc350bc2264b087
dir: /lib/crypto/test/sha1.myr/

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