INNER CODE UNIT · Go
func
emmansun/gmsm · cbcmac/cbcmac.go:509
func (c *cbcrMAC) Size() int {
return c.size
}
// MAC calculates the MAC of the given data.
// See [github.com/emmansun/gmsm/cbcmac.BlockCipherMAC.MAC].
func (c *cbcrMAC) MAC(src []byte) []byte {
blockSize := c.b.BlockSize()
tag := make([]byte, blockSize)
c.b.Encrypt(tag, tag)
padded := false
if len(src) == 0 || len(src)%blockSize != 0 {
pad := padding.NewISO9797M2Padding(uint(blockSize))
src = pad.Pad(src)
padded = true
}
for len(src) > blockSize {