You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
415 B
30 lines
415 B
3 years ago
|
package crypto
|
||
|
|
||
|
import (
|
||
|
"crypto/sha256"
|
||
|
"hash"
|
||
|
"sync"
|
||
|
)
|
||
|
|
||
|
// SHA256 returns SHA256 hash.
|
||
|
func SHA256(from ...[]byte) []byte {
|
||
|
h := getSHA256()
|
||
|
defer sha256Pool.Put(h)
|
||
|
for _, b := range from {
|
||
|
_, _ = h.Write(b)
|
||
|
}
|
||
|
return h.Sum(nil)
|
||
|
}
|
||
|
|
||
|
var sha256Pool = &sync.Pool{
|
||
|
New: func() interface{} {
|
||
|
return sha256.New()
|
||
|
},
|
||
|
}
|
||
|
|
||
|
func getSHA256() hash.Hash {
|
||
|
h := sha256Pool.Get().(hash.Hash)
|
||
|
h.Reset()
|
||
|
return h
|
||
|
}
|