X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=pygost%2Fgost3410_vko.py;h=ec6f5e240da2949c4d5b094c4ec0ef8fb8924b54;hb=b8b853ca49a9dca40f446880fa809af51c611fe0;hp=4bc2d4e9df85410c7d21d6f7ab88999e1a95b25d;hpb=82af8726ef5d5e2752089a45750e56c9910398c7;p=pygost.git diff --git a/pygost/gost3410_vko.py b/pygost/gost3410_vko.py index 4bc2d4e..ec6f5e2 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-2022 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