]> Cypherpunks.ru repositories - pygost.git/commitdiff
Human readable curve name 5.8
authorSergey Matveev <stargrave@stargrave.org>
Mon, 6 Dec 2021 11:56:01 +0000 (14:56 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Mon, 6 Dec 2021 11:56:01 +0000 (14:56 +0300)
news.texi
pygost/__init__.py
pygost/gost3410.py
pygost/stubs/pygost/gost3410.pyi

index f5752e6b14e3d39f16e465afc4022d5e24be6485..6ad35a0ab3b95cf193894f8dd7bdedfba5fb3142 100644 (file)
--- a/news.texi
+++ b/news.texi
@@ -3,6 +3,10 @@
 
 @table @strong
 
+@anchor{Release 5.8}
+@item 5.8
+Added human-readable name of the curve in @code{GOST3410Curve.name}.
+
 @anchor{Release 5.7}
 @item 5.7
 Fixed MGM ignoring of the set tag size.
index 12d2bade5befab7ad4d3cb580e73d923ea13883e..497345c3ee28758121943e5066a60554008d24bd 100644 (file)
@@ -3,4 +3,4 @@
 PyGOST is free software: see the file COPYING for copying conditions.
 """
 
-__version__ = "5.7"
+__version__ = "5.8"
index f4c0538476265e44194cb816cc8727b9ac2a4083..96520cb48d7bce6919a19365d25d459d4288ef0f 100644 (file)
@@ -53,8 +53,9 @@ class GOST3410Curve(object):
                       the canonical form
     :param long e, d: coefficients of the equation of the elliptic curve in
                       the twisted Edwards form
+    :param str name: human-readable curve name
     """
-    def __init__(self, p, q, a, b, x, y, cofactor=1, e=None, d=None):
+    def __init__(self, p, q, a, b, x, y, cofactor=1, e=None, d=None, name=None):
         self.p = p
         self.q = q
         self.a = a
@@ -67,11 +68,15 @@ class GOST3410Curve(object):
         if not self.contains((x, y)):
             raise ValueError("Invalid parameters")
         self._st = None
+        self.name = name
 
     @property
     def point_size(self):
         return point_size(self.p)
 
+    def __repr__(self):
+        return "<%s: %s>" % (self.__class__.__name__, self.name)
+
     def pos(self, v):
         """Make positive number
         """
@@ -231,6 +236,8 @@ CURVES["id-tc26-gost-3410-2012-512-paramSetTest"] = CURVES["id-tc26-gost-3410-12
 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 name, curve in CURVES.items():
+    curve.name = name
 DEFAULT_CURVE = CURVES["id-tc26-gost-3410-12-256-paramSetB"]
 
 
index 345a3e69f1d401c375796f60e4f4e34ae12f38c0..8f0dcb8e881d50089eb2029c7bdad2f62510f79f 100644 (file)
@@ -17,6 +17,7 @@ class GOST3410Curve(object):
     cofactor = ...  # type: int
     e = ...  # type: int
     d = ...  # type: int
+    name = ...  # type: str
 
     def __init__(
             self,
@@ -29,6 +30,7 @@ class GOST3410Curve(object):
             cofactor: int = 1,
             e: int = None,
             d: int = None,
+            name: str = None,
     ) -> None: ...
 
     def pos(self, v: int) -> int: ...