@@ -7,10 +7,11 @@ import (
77 "errors"
88 "fmt"
99
10- keccak "github.com/ethereum/go-ethereum/crypto/sha3 "
10+ "github.com/spaolacci/murmur3 "
1111 blake2b "golang.org/x/crypto/blake2b"
1212 blake2s "golang.org/x/crypto/blake2s"
1313 sha3 "golang.org/x/crypto/sha3"
14+ keccak "leb.io/hashland/keccakpg"
1415)
1516
1617var ErrSumNotSupported = errors .New ("Function not implemented. Complain to lib maintainer." )
@@ -64,12 +65,20 @@ func Sum(data []byte, code uint64, length int) (Multihash, error) {
6465 d = sumSHA256 (data )
6566 case SHA2_512 :
6667 d = sumSHA512 (data )
68+ case KECCAK_224 :
69+ d = sumKeccak224 (data )
6770 case KECCAK_256 :
6871 d = sumKeccak256 (data )
72+ case KECCAK_384 :
73+ d = sumKeccak384 (data )
74+ case KECCAK_512 :
75+ d = sumKeccak512 (data )
6976 case SHA3 :
7077 d , err = sumSHA3 (data )
7178 case DBL_SHA2_256 :
7279 d = sumSHA256 (sumSHA256 (data ))
80+ case MURMUR3 :
81+ d , err = sumMURMUR3 (data )
7382 default :
7483 return m , ErrSumNotSupported
7584 }
@@ -102,8 +111,26 @@ func sumSHA512(data []byte) []byte {
102111 return a [0 :64 ]
103112}
104113
114+ func sumKeccak224 (data []byte ) []byte {
115+ h := keccak .New224 ()
116+ h .Write (data )
117+ return h .Sum (nil )
118+ }
119+
105120func sumKeccak256 (data []byte ) []byte {
106- h := keccak .NewKeccak256 ()
121+ h := keccak .New256 ()
122+ h .Write (data )
123+ return h .Sum (nil )
124+ }
125+
126+ func sumKeccak384 (data []byte ) []byte {
127+ h := keccak .New384 ()
128+ h .Write (data )
129+ return h .Sum (nil )
130+ }
131+
132+ func sumKeccak512 (data []byte ) []byte {
133+ h := keccak .New512 ()
107134 h .Write (data )
108135 return h .Sum (nil )
109136}
@@ -115,3 +142,13 @@ func sumSHA3(data []byte) ([]byte, error) {
115142 }
116143 return h .Sum (nil ), nil
117144}
145+
146+ func sumMURMUR3 (data []byte ) ([]byte , error ) {
147+ number := murmur3 .Sum32 (data )
148+ bytes := make ([]byte , 4 )
149+ for i := range bytes {
150+ bytes [i ] = byte (number & 0xff )
151+ number >>= 8
152+ }
153+ return bytes , nil
154+ }
0 commit comments