]> Cypherpunks.ru repositories - pygost.git/blobdiff - pygost/gost3410_vko.py
gost3410_vko checks if pub is on the curve
[pygost.git] / pygost / gost3410_vko.py
index 4bc2d4e9df85410c7d21d6f7ab88999e1a95b25d..6c52f6d11b451eb9bc4e9186589bc0ebbe812cc3 100644 (file)
@@ -33,13 +33,15 @@ def ukm_unmarshal(ukm):
 
 
 def kek(curve, prv, pub, ukm):
+    if not curve.contains(pub):
+        raise ValueError("pub is not on the curve")
     key = curve.exp(prv, pub[0], pub[1])
     key = curve.exp(curve.cofactor * ukm, key[0], key[1])
     return pub_marshal(key)
 
 
 def kek_34102001(curve, prv, pub, ukm):
-    """ Key agreement (34.10-2001, 34.11-94)
+    """Key agreement (34.10-2001, 34.11-94)
 
     :param GOST3410Curve curve: curve to use
     :param long prv: private key
@@ -60,7 +62,7 @@ def kek_34102001(curve, prv, pub, ukm):
 
 
 def kek_34102012256(curve, prv, pub, ukm=1):
-    """ Key agreement (34.10-2012, 34.11-2012 256 bit)
+    """Key agreement (34.10-2012, 34.11-2012 256 bit)
 
     :param GOST3410Curve curve: curve to use
     :param long prv: private key
@@ -77,7 +79,7 @@ def kek_34102012256(curve, prv, pub, ukm=1):
 
 
 def kek_34102012512(curve, prv, pub, ukm=1):
-    """ Key agreement (34.10-2012, 34.11-2012 512 bit)
+    """Key agreement (34.10-2012, 34.11-2012 512 bit)
 
     :param GOST3410Curve curve: curve to use
     :param long prv: private key