add a few more test vectors for SHA-256
these test some boundary conditions for an optimization i'm about to do. computed using https://emn178.github.io/online-tools/sha3_256.htmlshake^2
parent
883cbd827a
commit
79b27a1530
|
@ -40,6 +40,31 @@ var tests = []struct {
|
||||||
text: "The quick brown fox jumps over the lazy dog",
|
text: "The quick brown fox jumps over the lazy dog",
|
||||||
hash: "69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04",
|
hash: "69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
f: New256,
|
||||||
|
name: "SHA3-256",
|
||||||
|
text: "a",
|
||||||
|
hash: "80084bf2fba02475726feb2cab2d8215eab14bc6bdd8bfb2c8151257032ecd8b",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
f: New256,
|
||||||
|
name: "SHA3-256",
|
||||||
|
text: "abcdefg",
|
||||||
|
hash: "7d55114476dfc6a2fbeaa10e221a8d0f32fc8f2efb69a6e878f4633366917a62",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
f: New256,
|
||||||
|
name: "SHA3-256",
|
||||||
|
text: "abcdefgh",
|
||||||
|
hash: "3e2020725a38a48eb3bbf75767f03a22c6b3f41f459c831309b06433ec649779",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
f: New256,
|
||||||
|
name: "SHA3-256",
|
||||||
|
text: "abcdefghi",
|
||||||
|
hash: "f74eb337992307c22bc59eb43e59583a683f3b93077e7f2472508e8c464d2657",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHash(t *testing.T) {
|
func TestHash(t *testing.T) {
|
||||||
|
@ -58,6 +83,24 @@ func TestHash(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestHashSmallWrites(t *testing.T) {
|
||||||
|
for _, tt := range tests {
|
||||||
|
want, err := hex.DecodeString(tt.hash)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("%s(%q): %s", tt.name, tt.text, err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
h := tt.f()
|
||||||
|
for i := range []byte(tt.text) {
|
||||||
|
io.WriteString(h, tt.text[i:i+1])
|
||||||
|
}
|
||||||
|
got := h.Sum(nil)
|
||||||
|
if !bytes.Equal(got, want) {
|
||||||
|
t.Errorf("%s(%q) = %x, want %x", tt.name, tt.text, got, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func benchmark(b *testing.B, f func() hash.Hash, size int64) {
|
func benchmark(b *testing.B, f func() hash.Hash, size int64) {
|
||||||
var tmp [Size * 2]byte
|
var tmp [Size * 2]byte
|
||||||
var msg [8192]byte
|
var msg [8192]byte
|
||||||
|
|
Loading…
Reference in New Issue