From edd431beb779e95ccff14114367e2fe7bf5d4f7a Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Fri, 26 Jul 2019 11:38:03 +0300 Subject: [PATCH] Do not overwrite IVs slice memory --- src/cypherpunks.ru/gogost/gost28147/cfb.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/cypherpunks.ru/gogost/gost28147/cfb.go b/src/cypherpunks.ru/gogost/gost28147/cfb.go index b7b6050..902d12d 100644 --- a/src/cypherpunks.ru/gogost/gost28147/cfb.go +++ b/src/cypherpunks.ru/gogost/gost28147/cfb.go @@ -25,6 +25,9 @@ func (c *Cipher) NewCFBEncrypter(iv []byte) *CFBEncrypter { if len(iv) != BlockSize { panic("iv length is not equal to blocksize") } + encrypter := CFBEncrypter{c: c, iv: make([]byte, BlockSize)} + copy(encrypter.iv, iv) + return &encrypter } func (c *CFBEncrypter) XORKeyStream(dst, src []byte) { @@ -54,6 +57,9 @@ func (c *Cipher) NewCFBDecrypter(iv []byte) *CFBDecrypter { if len(iv) != BlockSize { panic("iv length is not equal to blocksize") } + decrypter := CFBDecrypter{c: c, iv: make([]byte, BlockSize)} + copy(decrypter.iv, iv) + return &decrypter } func (c *CFBDecrypter) XORKeyStream(dst, src []byte) { -- 2.44.0