X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=pygost%2Fgost3412.py;h=296e4fbea72a794ca625c71663ce38b223b0d9e6;hb=4277661e11e63906d923827e5c124877f1dc0c8d;hp=6482a4e18b6eeeac3c0d1609840c30716631b5cc;hpb=4ff0adf8cb4b497daa634e2430a4fd015a2bb427;p=pygost.git diff --git a/pygost/gost3412.py b/pygost/gost3412.py index 6482a4e..296e4fb 100644 --- a/pygost/gost3412.py +++ b/pygost/gost3412.py @@ -1,11 +1,10 @@ # coding: utf-8 # PyGOST -- Pure Python GOST cryptographic functions library -# Copyright (C) 2015-2018 Sergey Matveev +# Copyright (C) 2015-2020 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 @@ -24,9 +23,11 @@ from pygost.gost28147 import decrypt as gost28147_decrypt from pygost.gost28147 import encrypt as gost28147_encrypt from pygost.gost28147 import ns2block as gost28147_ns2block from pygost.utils import strxor -from pygost.utils import xrange # pylint: disable=redefined-builtin +from pygost.utils import xrange +KEY_SIZE = 32 + LC = bytearray(( 148, 32, 133, 16, 194, 192, 1, 251, 1, 192, 194, 16, 133, 32, 148, 1, )) @@ -124,6 +125,8 @@ def lp(blk): class GOST3412Kuznechik(object): """GOST 34.12-2015 128-bit block cipher Кузнечик (Kuznechik) """ + blocksize = 16 + def __init__(self, key): """ :param key: encryption/decryption key @@ -157,6 +160,8 @@ class GOST3412Kuznechik(object): class GOST3412Magma(object): """GOST 34.12-2015 64-bit block cipher Магма (Magma) """ + blocksize = 8 + def __init__(self, key): """ :param key: encryption/decryption key @@ -164,7 +169,7 @@ class GOST3412Magma(object): """ # Backward compatibility key preparation for 28147-89 key schedule self.key = b"".join(key[i * 4:i * 4 + 4][::-1] for i in range(8)) - self.sbox = "Gost28147_tc26_ParamZ" + self.sbox = "id-tc26-gost-28147-param-Z" def encrypt(self, blk): return gost28147_ns2block(gost28147_encrypt(