# coding: utf-8
# PyGOST -- Pure Python GOST cryptographic functions library
-# Copyright (C) 2015-2019 Sergey Matveev <stargrave@stargrave.org>
+# Copyright (C) 2015-2021 Sergey Matveev <stargrave@stargrave.org>
#
# 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
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
+KEYSIZE = 32
+
LC = bytearray((
148, 32, 133, 16, 194, 192, 1, 251, 1, 192, 194, 16, 133, 32, 148, 1,
))
class GOST3412Kuznechik(object):
"""GOST 34.12-2015 128-bit block cipher Кузнечик (Kuznechik)
"""
+ blocksize = 16
+
def __init__(self, key):
"""
:param key: encryption/decryption key
class GOST3412Magma(object):
"""GOST 34.12-2015 64-bit block cipher Магма (Magma)
"""
+ blocksize = 8
+
def __init__(self, key):
"""
:param key: encryption/decryption key
"""
# 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(