}
func (mgm *MGM) auth(out, text, ad []byte) {
- for i := 0; i < mgm.BlockSize; i++ {
- mgm.sum[i] = 0
- }
+ clear(mgm.sum)
adLen := len(ad) * 8
textLen := len(text) * 8
mgm.icn[0] |= 0x80
}
if len(ad) > 0 {
copy(mgm.padded, ad)
- for i := len(ad); i < mgm.BlockSize; i++ {
- mgm.padded[i] = 0
- }
+ clear(mgm.padded[len(ad):])
mgm.cipher.Encrypt(mgm.bufC, mgm.bufP)
subtle.XORBytes(mgm.sum, mgm.sum, mgm.mul.Mul(mgm.bufC, mgm.padded))
incr(mgm.bufP[:mgm.BlockSize/2])
}
zBytes := mul.z.Bytes()
rem := len(x) - len(zBytes)
- for i := 0; i < rem; i++ {
- mul.buf[i] = 0
- }
+ clear(mul.buf[:rem])
copy(mul.buf[rem:], zBytes)
return mul.buf[:]
}