INNER CODE UNIT · Go

d0

emmansun/gmsm · cbcmac/cbcmac.go:341

	d0 := *d
	// use slices.Clone() later
	d0.tag = make([]byte, d.blockSize)
	copy(d0.tag, d.tag)
	hash := d0.checkSum()
	return append(in, hash...)
}

func (c *cmac) checkSum() []byte {
	tag := make([]byte, c.size)
	switch c.nx {
	case 0:
		// Special-cased as a single empty partial final block.
		copy(c.tag, c.k2)
		c.tag[0] ^= 0b10000000
	case c.blockSize:
		subtle.XORBytes(c.tag, c.x, c.tag)
		subtle.XORBytes(c.tag, c.k1, c.tag)

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…