X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcypherpunks.ru%2Fgogost%2Fmgm%2Fmode.go;h=20f77c71fd580ddafad97b4aa1a76fd0957379a2;hb=9be6f384bae8ebeabc129ede9f8a597de12835d3;hp=f8db79604954fdc2d8ac1d66542d0af32ebab6ff;hpb=8d16c661d91aab1db9341fd1e41216b4fc4af50f;p=gogost.git diff --git a/src/cypherpunks.ru/gogost/mgm/mode.go b/src/cypherpunks.ru/gogost/mgm/mode.go index f8db796..20f77c7 100644 --- a/src/cypherpunks.ru/gogost/mgm/mode.go +++ b/src/cypherpunks.ru/gogost/mgm/mode.go @@ -64,7 +64,7 @@ func NewMGM(cipher cipher.Block, tagSize int) (cipher.AEAD, error) { if !(blockSize == 8 || blockSize == 16) { return nil, errors.New("MGM supports only 64/128 blocksizes") } - if tagSize < 4 || tagSize > 16 || tagSize > blockSize { + if tagSize < 4 || tagSize > blockSize { return nil, errors.New("invalid tag size") } mgm := MGM{ @@ -101,10 +101,11 @@ func (mgm *MGM) Overhead() int { } func incr(data []byte) { - if len(data) == 4 { - binary.BigEndian.PutUint32(data, binary.BigEndian.Uint32(data)+1) - } else { - binary.BigEndian.PutUint64(data, binary.BigEndian.Uint64(data)+1) + for i := len(data) - 1; i >= 0; i-- { + data[i]++ + if data[i] != 0 { + return + } } }