]> Cypherpunks.ru repositories - gogost.git/blobdiff - src/cypherpunks.ru/gogost/mgm/mode.go
Simplify mgm/incr
[gogost.git] / src / cypherpunks.ru / gogost / mgm / mode.go
index f8db79604954fdc2d8ac1d66542d0af32ebab6ff..20f77c71fd580ddafad97b4aa1a76fd0957379a2 100644 (file)
@@ -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
+               }
        }
 }