X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=pygost%2Fgost3413.py;h=32be5a33f33f6a628bf2aac239f15e160f6e1df7;hb=31b08d5a78505f0ae1a144e58d023d84eda2cc6e;hp=495a3f9e343826ed430616f88b63c4ead6ca5b60;hpb=4277661e11e63906d923827e5c124877f1dc0c8d;p=pygost.git diff --git a/pygost/gost3413.py b/pygost/gost3413.py index 495a3f9..32be5a3 100644 --- a/pygost/gost3413.py +++ b/pygost/gost3413.py @@ -13,7 +13,7 @@ # # You should have received a copy of the GNU General Public License # along with this program. If not, see . -""" GOST R 34.13-2015: Modes of operation for block ciphers +"""GOST R 34.13-2015: Modes of operation for block ciphers This module currently includes only padding methods. """ @@ -24,7 +24,7 @@ from pygost.utils import strxor from pygost.utils import xrange -KEY_SIZE = 32 +KEYSIZE = 32 def pad_size(data_size, blocksize): @@ -112,7 +112,7 @@ def acpkm(encrypter, bs): """ return b"".join([ encrypter(bytes(bytearray(range(d, d + bs)))) - for d in range(0x80, 0x80 + bs * (KEY_SIZE // bs), bs) + for d in range(0x80, 0x80 + bs * (KEYSIZE // bs), bs) ]) @@ -274,7 +274,7 @@ Rb128 = 0b10000111 def _mac_ks(encrypter, bs): Rb = Rb128 if bs == 16 else Rb64 - _l = encrypter(bs * b'\x00') + _l = encrypter(bs * b"\x00") k1 = _mac_shift(bs, _l, Rb) if bytearray(_l)[0] & 0x80 > 0 else _mac_shift(bs, _l) k2 = _mac_shift(bs, k1, Rb) if bytearray(k1)[0] & 0x80 > 0 else _mac_shift(bs, k1) return k1, k2 @@ -294,7 +294,7 @@ def mac(encrypter, bs, data): tail_offset = len(data) - bs else: tail_offset = len(data) - (len(data) % bs) - prev = bs * b'\x00' + prev = bs * b"\x00" for i in xrange(0, tail_offset, bs): prev = encrypter(strxor(data[i:i + bs], prev)) tail = data[tail_offset:] @@ -337,7 +337,7 @@ def mac_acpkm_master(algo_class, encrypter, key_section_size, section_size, bs, tail_offset = len(data) - bs else: tail_offset = len(data) - (len(data) % bs) - prev = bs * b'\x00' + prev = bs * b"\x00" sections = len(data) // section_size if len(data) % section_size != 0: sections += 1 @@ -346,17 +346,17 @@ def mac_acpkm_master(algo_class, encrypter, key_section_size, section_size, bs, encrypter, key_section_size, bs, - (KEY_SIZE + bs) * sections, + (KEYSIZE + bs) * sections, ) for i in xrange(0, tail_offset, bs): if i % section_size == 0: - keymat, keymats = keymats[:KEY_SIZE + bs], keymats[KEY_SIZE + bs:] - key, k1 = keymat[:KEY_SIZE], keymat[KEY_SIZE:] + keymat, keymats = keymats[:KEYSIZE + bs], keymats[KEYSIZE + bs:] + key, k1 = keymat[:KEYSIZE], keymat[KEYSIZE:] encrypter = algo_class(key).encrypt prev = encrypter(strxor(data[i:i + bs], prev)) tail = data[tail_offset:] if len(tail) == bs: - key, k1 = keymats[:KEY_SIZE], keymats[KEY_SIZE:] + key, k1 = keymats[:KEYSIZE], keymats[KEYSIZE:] encrypter = algo_class(key).encrypt k2 = long2bytes(bytes2long(k1) << 1, size=bs) if bytearray(k1)[0] & 0x80 != 0: