github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/crypto/ripemd160/ripemd160_test.go (about) 1 // Copyright 2010 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package ripemd160 6 7 // Test vectors are from: 8 // http://homes.esat.kuleuven.be/~bosselae/ripemd160.html 9 10 import ( 11 "fmt" 12 "io" 13 "testing" 14 ) 15 16 type mdTest struct { 17 out string 18 in string 19 } 20 21 var vectors = [...]mdTest{ 22 {"9c1185a5c5e9fc54612808977ee8f548b2258d31", ""}, 23 {"0bdc9d2d256b3ee9daae347be6f4dc835a467ffe", "a"}, 24 {"8eb208f7e05d987a9b044a8e98c6b087f15a0bfc", "abc"}, 25 {"5d0689ef49d2fae572b881b123a85ffa21595f36", "message digest"}, 26 {"f71c27109c692c1b56bbdceb5b9d2865b3708dbc", "abcdefghijklmnopqrstuvwxyz"}, 27 {"12a053384a9c0c88e405a06c27dcf49ada62eb2b", "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"}, 28 {"b0e20b6e3116640286ed3a87a5713079b21f5189", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"}, 29 {"9b752e45573d4b39f4dbd3323cab82bf63326bfb", "12345678901234567890123456789012345678901234567890123456789012345678901234567890"}, 30 } 31 32 func TestVectors(t *testing.T) { 33 for i := 0; i < len(vectors); i++ { 34 tv := vectors[i] 35 md := New() 36 for j := 0; j < 3; j++ { 37 if j < 2 { 38 io.WriteString(md, tv.in) 39 } else { 40 io.WriteString(md, tv.in[0:len(tv.in)/2]) 41 md.Sum(nil) 42 io.WriteString(md, tv.in[len(tv.in)/2:]) 43 } 44 s := fmt.Sprintf("%x", md.Sum(nil)) 45 if s != tv.out { 46 t.Fatalf("RIPEMD-160[%d](%s) = %s, expected %s", j, tv.in, s, tv.out) 47 } 48 md.Reset() 49 } 50 } 51 } 52 53 func TestMillionA(t *testing.T) { 54 md := New() 55 for i := 0; i < 100000; i++ { 56 io.WriteString(md, "aaaaaaaaaa") 57 } 58 out := "52783243c1697bdbe16d37f97f68f08325dc1528" 59 s := fmt.Sprintf("%x", md.Sum(nil)) 60 if s != out { 61 t.Fatalf("RIPEMD-160 (1 million 'a') = %s, expected %s", s, out) 62 } 63 md.Reset() 64 }