mirror of
https://github.com/emmansun/gmsm.git
synced 2025-04-22 02:06:18 +08:00
38 lines
769 B
Go
38 lines
769 B
Go
// Package sm3 implements ShangMi(SM) sm3 hash algorithm.
|
|
package sm3
|
|
|
|
// [GM/T] SM3 GB/T 32905-2016
|
|
|
|
import (
|
|
"hash"
|
|
|
|
"github.com/emmansun/gmsm/internal/sm3"
|
|
)
|
|
|
|
// Size the size of a SM3 checksum in bytes.
|
|
const Size = 32
|
|
|
|
// BlockSize the blocksize of SM3 in bytes.
|
|
const BlockSize = 64
|
|
|
|
// New returns a new hash.Hash computing the SM3 checksum. The Hash
|
|
// also implements encoding.BinaryMarshaler and
|
|
// encoding.BinaryUnmarshaler to marshal and unmarshal the internal
|
|
// state of the hash.
|
|
func New() hash.Hash {
|
|
return sm3.New()
|
|
}
|
|
|
|
// Sum returns the SM3 checksum of the data.
|
|
func Sum(data []byte) [Size]byte {
|
|
h := New()
|
|
h.Write(data)
|
|
var sum [Size]byte
|
|
h.Sum(sum[:0])
|
|
return sum
|
|
}
|
|
|
|
func Kdf(z []byte, keyLen int) []byte {
|
|
return sm3.Kdf(z, keyLen)
|
|
}
|