INNER CODE UNIT · Go

func

emmansun/gmsm · cbcmac/cbcmac.go:466

func (t *trCBCMAC) Size() int {
	return t.size
}

// MAC calculates the MAC of the given data.
// // See [github.com/emmansun/gmsm/cbcmac.BlockCipherMAC.MAC].
func (t *trCBCMAC) MAC(src []byte) []byte {
	blockSize := t.b.BlockSize()
	tag := make([]byte, blockSize)
	padded := false
	if len(src) == 0 || len(src)%blockSize != 0 {
		pad := padding.NewISO9797M2Padding(uint(blockSize))
		src = pad.Pad(src)
		padded = true
	}
	for len(src) > 0 {
		subtle.XORBytes(tag, tag, src[:blockSize])
		t.b.Encrypt(tag, tag)

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…