gmsm/sm3/sm3.go
2025-03-11 14:02:47 +08:00

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)
}