]> Cypherpunks.ru repositories - gogost.git/commitdiff
Do not overwrite IVs slice memory
authorSergey Matveev <stargrave@stargrave.org>
Fri, 26 Jul 2019 08:38:03 +0000 (11:38 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Fri, 26 Jul 2019 08:38:03 +0000 (11:38 +0300)
src/cypherpunks.ru/gogost/gost28147/cfb.go

index b7b605007c7e19f7176e9629ad177b18b468f8a5..902d12dc85713332b9fbb90a656b976c88cd8658 100644 (file)
@@ -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) {