X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=pygost%2Fgost3410_vko.py;h=f72a136fe94b41c8a28ee9555f9058687b1d3c89;hb=fbaa1fc82dbec2c3ebaf8d272600ef4f91649e08;hp=1c886080a2b86691a19b5452a29785194f7aae6b;hpb=9af4461c6af50f9cf83030867e7054d1f6311b32;p=pygost.git diff --git a/pygost/gost3410_vko.py b/pygost/gost3410_vko.py index 1c88608..f72a136 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-2021 Sergey Matveev +# Copyright (C) 2015-2024 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 @@ -32,11 +32,13 @@ def ukm_unmarshal(ukm): return bytes2long(ukm[::-1]) -def kek(curve, prv, pub, ukm): +def kek(curve, prv, pub, ukm, mask=None): 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]) + if mask is not None: + key = curve.exp(mask, key[0], key[1]) return pub_marshal(key)