X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=pygost%2Fgost3410_vko.py;h=6c52f6d11b451eb9bc4e9186589bc0ebbe812cc3;hb=03de94212cd7c039e6a7f4f947fbd2d7d6c9b70e;hp=4bc2d4e9df85410c7d21d6f7ab88999e1a95b25d;hpb=82af8726ef5d5e2752089a45750e56c9910398c7;p=pygost.git diff --git a/pygost/gost3410_vko.py b/pygost/gost3410_vko.py index 4bc2d4e..6c52f6d 100644 --- a/pygost/gost3410_vko.py +++ b/pygost/gost3410_vko.py @@ -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