]> Cypherpunks.ru repositories - pygost.git/blobdiff - pygost/gost34112012.py
Raised copyright years
[pygost.git] / pygost / gost34112012.py
index 2e43fe1cb6c04e3c2d80189948b55aea400b67f9..f680eeeac0d83cd69fc1564f2ef655302a655212 100644 (file)
@@ -1,6 +1,6 @@
 # coding: utf-8
 # PyGOST -- Pure Python GOST cryptographic functions library
-# Copyright (C) 2015-2021 Sergey Matveev <stargrave@stargrave.org>
+# Copyright (C) 2015-2022 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
@@ -162,14 +162,8 @@ C = [hexdec("".join(s))[::-1] for s in (
     ),
 )]
 
-# Trade memory for CPU for part of L() calculations
-_Cache = None
-
 
-def _cache_ensure():
-    global _Cache
-    if _Cache is not None:
-        return
+def _lcache():
     cache = []
     for byteN in xrange(8):
         cache.append([0 for _ in xrange(256)])
@@ -182,7 +176,11 @@ def _cache_ensure():
                     res64 ^= A[(7 - byteN) * 8 + bitN]
                 val <<= 1
             cache[byteN][byteVal] = res64
-    _Cache = cache
+    return cache
+
+
+# Trade memory for CPU for part of L() calculations
+LCache = _lcache()
 
 
 def add512bit(a, b):
@@ -222,12 +220,11 @@ def PS(data):
 
 
 def L(data):
-    _cache_ensure()
     res = []
     for i in range(8):
         res64 = 0
         for j in range(8):
-            res64 ^= _Cache[j][data[8 * i + j]]
+            res64 ^= LCache[j][data[8 * i + j]]
         res.append(pack("<Q", res64))
     return b"".join(res)