+++ /dev/null
-// Package sha3pool is a freelist for SHA3-256 hash objects.
-package sha3pool
-
-import (
- "sync"
-
- "golang.org/x/crypto/sha3"
-)
-
-var pool = &sync.Pool{New: func() interface{} { return sha3.New256() }}
-
-// Get256 returns an initialized SHA3-256 hash ready to use.
-// It is like sha3.New256 except it uses the freelist.
-// The caller should call Put256 when finished with the returned object.
-func Get256() sha3.ShakeHash {
- return pool.Get().(sha3.ShakeHash)
-}
-
-// Put256 resets h and puts it in the freelist.
-func Put256(h sha3.ShakeHash) {
- h.Reset()
- pool.Put(h)
-}
-
-// Sum256 uses a ShakeHash from the pool to sum into hash.
-func Sum256(hash, data []byte) {
- h := Get256()
- h.Write(data)
- h.Read(hash)
- Put256(h)
-}