X-Git-Url: http://www.git.cypherpunks.ru/?p=pygost.git;a=blobdiff_plain;f=pygost%2Fgost28147.py;h=74f5e877add7e7945d824d73e2cf237d09a54bb1;hp=b7fc0f46634d5589cb41b3bdef10feff8d2e4c84;hb=31b08d5a78505f0ae1a144e58d023d84eda2cc6e;hpb=82af8726ef5d5e2752089a45750e56c9910398c7 diff --git a/pygost/gost28147.py b/pygost/gost28147.py index b7fc0f4..74f5e87 100644 --- a/pygost/gost28147.py +++ b/pygost/gost28147.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 28147-89 block cipher +"""GOST 28147-89 block cipher This is implementation of :rfc:`5830` ECB, CNT, CFB and :rfc:`4357` CBC modes of operation. N1, N2, K names are taken according to @@ -148,7 +148,7 @@ SBOXES["AppliedCryptography"] = SBOXES["id-GostR3411-94-TestParamSet"] def _K(s, _in): - """ S-box substitution + """S-box substitution :param s: S-box :param _in: 32-bit word @@ -167,7 +167,7 @@ def _K(s, _in): def block2ns(data): - """ Convert block to N1 and N2 integers + """Convert block to N1 and N2 integers """ data = bytearray(data) return ( @@ -177,7 +177,7 @@ def block2ns(data): def ns2block(ns): - """ Convert N1 and N2 integers to 8-byte block + """Convert N1 and N2 integers to 8-byte block """ n1, n2 = ns return bytes(bytearray(( @@ -187,7 +187,7 @@ def ns2block(ns): def _shift11(x): - """ 11-bit cyclic shift + """11-bit cyclic shift """ return ((x << 11) & (2 ** 32 - 1)) | ((x >> (32 - 11)) & (2 ** 32 - 1)) @@ -208,7 +208,7 @@ def validate_sbox(sbox): def xcrypt(seq, sbox, key, ns): - """ Perform full-round single-block operation + """Perform full-round single-block operation :param seq: sequence of K_i S-box applying (either encrypt or decrypt) :param sbox: S-box parameters to use @@ -234,19 +234,19 @@ def xcrypt(seq, sbox, key, ns): def encrypt(sbox, key, ns): - """ Encrypt single block + """Encrypt single block """ return xcrypt(SEQ_ENCRYPT, sbox, key, ns) def decrypt(sbox, key, ns): - """ Decrypt single block + """Decrypt single block """ return xcrypt(SEQ_DECRYPT, sbox, key, ns) def ecb(key, data, action, sbox=DEFAULT_SBOX): - """ ECB mode of operation + """ECB mode of operation :param bytes key: encryption key :param data: plaintext @@ -274,7 +274,7 @@ ecb_decrypt = partial(ecb, action=decrypt) def cbc_encrypt(key, data, iv=8 * b"\x00", pad=True, sbox=DEFAULT_SBOX, mesh=False): - """ CBC encryption mode of operation + """CBC encryption mode of operation :param bytes key: encryption key :param bytes data: plaintext @@ -309,7 +309,7 @@ def cbc_encrypt(key, data, iv=8 * b"\x00", pad=True, sbox=DEFAULT_SBOX, mesh=Fal def cbc_decrypt(key, data, pad=True, sbox=DEFAULT_SBOX, mesh=False): - """ CBC decryption mode of operation + """CBC decryption mode of operation :param bytes key: encryption key :param bytes data: ciphertext @@ -345,7 +345,7 @@ def cbc_decrypt(key, data, pad=True, sbox=DEFAULT_SBOX, mesh=False): def cnt(key, data, iv=8 * b"\x00", sbox=DEFAULT_SBOX): - """ Counter mode of operation + """Counter mode of operation :param bytes key: encryption key :param bytes data: plaintext @@ -385,7 +385,7 @@ def meshing(key, iv, sbox=DEFAULT_SBOX): def cfb_encrypt(key, data, iv=8 * b"\x00", sbox=DEFAULT_SBOX, mesh=False): - """ CFB encryption mode of operation + """CFB encryption mode of operation :param bytes key: encryption key :param bytes data: plaintext @@ -419,7 +419,7 @@ def cfb_encrypt(key, data, iv=8 * b"\x00", sbox=DEFAULT_SBOX, mesh=False): def cfb_decrypt(key, data, iv=8 * b"\x00", sbox=DEFAULT_SBOX, mesh=False): - """ CFB decryption mode of operation + """CFB decryption mode of operation :param bytes key: encryption key :param bytes data: plaintext