X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=pygost%2Fgost3410_vko.py;h=1c886080a2b86691a19b5452a29785194f7aae6b;hb=9af4461c6af50f9cf83030867e7054d1f6311b32;hp=4bc2d4e9df85410c7d21d6f7ab88999e1a95b25d;hpb=82af8726ef5d5e2752089a45750e56c9910398c7;p=pygost.git diff --git a/pygost/gost3410_vko.py b/pygost/gost3410_vko.py index 4bc2d4e..1c88608 100644 --- a/pygost/gost3410_vko.py +++ b/pygost/gost3410_vko.py @@ -1,6 +1,6 @@ # coding: utf-8 # PyGOST -- Pure Python GOST cryptographic functions library -# Copyright (C) 2015-2020 Sergey Matveev +# Copyright (C) 2015-2021 Sergey Matveev # # 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 @@ -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