X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcypherpunks.ru%2Fgogost%2Fgost28147%2Fcipher.go;h=e926faaf78c797c0ef09b181dbe956a74a363ed6;hb=91562b3cf4aad503c493aa7b69abfbb07b46e63a;hp=8814f4f618651ace5528590690363af4456bb7c1;hpb=d1cbfa307ebcb72b61f926dfdbc21175a3eec1a8;p=gogost.git diff --git a/src/cypherpunks.ru/gogost/gost28147/cipher.go b/src/cypherpunks.ru/gogost/gost28147/cipher.go index 8814f4f..e926faa 100644 --- a/src/cypherpunks.ru/gogost/gost28147/cipher.go +++ b/src/cypherpunks.ru/gogost/gost28147/cipher.go @@ -1,10 +1,9 @@ // GoGOST -- Pure Go GOST cryptographic functions library -// Copyright (C) 2015-2018 Sergey Matveev +// Copyright (C) 2015-2019 Sergey Matveev // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. +// the Free Software Foundation, version 3 of the License. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -53,15 +52,17 @@ var ( ) type Cipher struct { - key *[KeySize]byte + key [KeySize]byte sbox *Sbox x [8]nv } -func NewCipher(key [KeySize]byte, sbox *Sbox) *Cipher { - c := Cipher{} - c.key = &key - c.sbox = sbox +func NewCipher(key []byte, sbox *Sbox) *Cipher { + if len(key) != KeySize { + panic("invalid key size") + } + c := Cipher{sbox: sbox} + copy(c.key[:], key) c.x = [8]nv{ nv(key[0]) | nv(key[1])<<8 | nv(key[2])<<16 | nv(key[3])<<24, nv(key[4]) | nv(key[5])<<8 | nv(key[6])<<16 | nv(key[7])<<24,