doc/INSTALL | 2 +- doc/NEWS | 4 ++++ pygost/__init__.py | 2 +- pygost/gost3410.py | 30 +++++++++++++++++------------- pygost/test_gost3410.py | 6 ++++++ setup.py | 2 +- diff --git a/doc/INSTALL b/doc/INSTALL index d8bf8e9b34366cf9a09cf8611df8154199fe95f4dcf5b5e71830f8b01ad5553a..abd491ba2b16b028ac3ab091273b5d11c42a05a6cce65b879f1bb97bc9901876 100644 --- a/doc/INSTALL +++ b/doc/INSTALL @@ -2,7 +2,7 @@ No additional dependencies except Python 3.x interpreter are required. Preferable way is to [Download] tarball with the signature: - $ v=6.2 + $ v=6.3 $ fetch http://www.pygost.stargrave.org/pygost-$v.tar.zst $ fetch http://www.pygost.stargrave.org/pygost-$v.tar.zst.sig [Integrity] verify diff --git a/doc/NEWS b/doc/NEWS index 5b6d52cbb1ae0d8d151d7ea051c615b555574dfa57946c0f47884475f14e6f36..50ed2de634a28391f37c13c3e3b0569dd12908ac3c8089106c4c2a1053c30164 100644 --- a/doc/NEWS +++ b/doc/NEWS @@ -1,3 +1,7 @@ +A 6.3 +6.3 + * Fixed curve names. Previously they may contain aliases names. + A 6.2 6.2 * Fixed library's version number. diff --git a/pygost/__init__.py b/pygost/__init__.py index 3840e57f8a0d9ac381bb91a7bfdec3a96d27a101f0581083c22c24ec23e55ee4..782b2d5b2b5e72a89eff4940c2207339e91130816b9a80b945507e8db58f865d 100644 --- a/pygost/__init__.py +++ b/pygost/__init__.py @@ -3,4 +3,4 @@ PyGOST is free software: see the file COPYING for copying conditions. """ -__version__ = "6.2" +__version__ = "6.3" diff --git a/pygost/gost3410.py b/pygost/gost3410.py index 601c91d1d41463f6b0ab0c975d553896fd6c6b9cc282bb06b7dfd17fce0cd561..b0a7873c835d59a3e45e6db614e436ceb527bdf640c7042e84fbde551e1d762f 100644 --- a/pygost/gost3410.py +++ b/pygost/gost3410.py @@ -20,6 +20,7 @@ 34.10-2012 (:rfc:`7091`). The difference between 2001 and 2012 is the key, digest and signature lengths. """ +from copy import copy as _copy from os import urandom from typing import Tuple @@ -235,19 +236,22 @@ e=0x01, d=int.from_bytes(bytes.fromhex("9E4F5D8C017D8D9F13A5CF3CDF5BFE4DAB402D54198E31EBDE28A0621050439CA6B39E0A515C06B304E2CE43E79E369E91A0CFC2BC2A22B4CA302DBB33EE7550"), "big"), ), } -CURVES["id-GostR3410-2001-CryptoPro-A-ParamSet"] = CURVES["id-tc26-gost-3410-12-256-paramSetB"] -CURVES["id-GostR3410-2001-CryptoPro-B-ParamSet"] = CURVES["id-tc26-gost-3410-12-256-paramSetC"] -CURVES["id-GostR3410-2001-CryptoPro-C-ParamSet"] = CURVES["id-tc26-gost-3410-12-256-paramSetD"] -CURVES["id-GostR3410-2001-CryptoPro-XchA-ParamSet"] = CURVES["id-GostR3410-2001-CryptoPro-A-ParamSet"] -CURVES["id-GostR3410-2001-CryptoPro-XchB-ParamSet"] = CURVES["id-GostR3410-2001-CryptoPro-C-ParamSet"] -CURVES["id-tc26-gost-3410-2012-256-paramSetA"] = CURVES["id-tc26-gost-3410-12-256-paramSetA"] -CURVES["id-tc26-gost-3410-2012-256-paramSetB"] = CURVES["id-tc26-gost-3410-12-256-paramSetB"] -CURVES["id-tc26-gost-3410-2012-256-paramSetC"] = CURVES["id-tc26-gost-3410-12-256-paramSetC"] -CURVES["id-tc26-gost-3410-2012-256-paramSetD"] = CURVES["id-tc26-gost-3410-12-256-paramSetD"] -CURVES["id-tc26-gost-3410-2012-512-paramSetTest"] = CURVES["id-tc26-gost-3410-12-512-paramSetTest"] -CURVES["id-tc26-gost-3410-2012-512-paramSetA"] = CURVES["id-tc26-gost-3410-12-512-paramSetA"] -CURVES["id-tc26-gost-3410-2012-512-paramSetB"] = CURVES["id-tc26-gost-3410-12-512-paramSetB"] -CURVES["id-tc26-gost-3410-2012-512-paramSetC"] = CURVES["id-tc26-gost-3410-12-512-paramSetC"] +for alias, target in ( + ("id-GostR3410-2001-CryptoPro-A-ParamSet", "id-tc26-gost-3410-12-256-paramSetB"), + ("id-GostR3410-2001-CryptoPro-B-ParamSet", "id-tc26-gost-3410-12-256-paramSetC"), + ("id-GostR3410-2001-CryptoPro-C-ParamSet", "id-tc26-gost-3410-12-256-paramSetD"), + ("id-GostR3410-2001-CryptoPro-XchA-ParamSet", "id-GostR3410-2001-CryptoPro-A-ParamSet"), + ("id-GostR3410-2001-CryptoPro-XchB-ParamSet", "id-GostR3410-2001-CryptoPro-C-ParamSet"), + ("id-tc26-gost-3410-2012-256-paramSetA", "id-tc26-gost-3410-12-256-paramSetA"), + ("id-tc26-gost-3410-2012-256-paramSetB", "id-tc26-gost-3410-12-256-paramSetB"), + ("id-tc26-gost-3410-2012-256-paramSetC", "id-tc26-gost-3410-12-256-paramSetC"), + ("id-tc26-gost-3410-2012-256-paramSetD", "id-tc26-gost-3410-12-256-paramSetD"), + ("id-tc26-gost-3410-2012-512-paramSetTest", "id-tc26-gost-3410-12-512-paramSetTest"), + ("id-tc26-gost-3410-2012-512-paramSetA", "id-tc26-gost-3410-12-512-paramSetA"), + ("id-tc26-gost-3410-2012-512-paramSetB", "id-tc26-gost-3410-12-512-paramSetB"), + ("id-tc26-gost-3410-2012-512-paramSetC", "id-tc26-gost-3410-12-512-paramSetC"), +): + CURVES[alias] = _copy(CURVES[target]) for _name, _curve in CURVES.items(): _curve.name = _name DEFAULT_CURVE = CURVES["id-tc26-gost-3410-12-256-paramSetB"] diff --git a/pygost/test_gost3410.py b/pygost/test_gost3410.py index af78418c3d510eba4db5271db37c04136f0f0b6075fef43aeec20102e8a68037..bde4427501ffc7e533b109085e0d532b747a4963eb528f6a65027b0d5143e9fa 100644 --- a/pygost/test_gost3410.py +++ b/pygost/test_gost3410.py @@ -489,3 +489,9 @@ 0xB7C5818687083433BC1AFF61CB5CA79E38232025E0C1F123B8651E62173CE6873F3E6FFE7281C2E45F4F524F66B0C263616ED08FD210AC4355CA3292B51D71C3, 0x497F14205DBDC89BDDAF50520ED3B1429AD30777310186BE5E68070F016A44E0C766DB08E8AC23FBDFDE6D675AA4DF591EB18BA0D348DF7AA40973A2F1DCFA55, ), ) + + +class TestNames(TestCase): + def runTest(self): + for name, curve in CURVES.items(): + self.assertEqual(name, curve.name) diff --git a/setup.py b/setup.py index 01249df9e9072c94c9f3b6fec1f1b253f3254acf24b2012d8ceb7122163012f7..70ae1c86d1e882fd658273a4ad3c06b7dd8d4b3c7c923f0ae94a740eae071ca8 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup setup( name="pygost", - version="6.2", + version="6.3", description="Pure Python GOST cryptographic functions library", long_description=open("README", "rb").read().decode("utf-8"), author="Sergey Matveev",