X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=pygost%2Fgost3410.py;h=58a20e0fe7c6a06020dc90c34e80c76ca78b0150;hb=9ab3b1d03f734f4aae28364f7a6c7c7c223b30a9;hp=88cbfbe3493742e003cc6d9149c93739909207db;hpb=9af4461c6af50f9cf83030867e7054d1f6311b32;p=pygost.git diff --git a/pygost/gost3410.py b/pygost/gost3410.py index 88cbfbe..58a20e0 100644 --- a/pygost/gost3410.py +++ b/pygost/gost3410.py @@ -324,10 +324,26 @@ def prv_unmarshal(prv): :param bytes prv: serialized private key :rtype: long + + It is advisable to use :py:func:`pygost.gost3410.prv_marshal` to + assure that key i in curve's Q field for better compatibility with + some implementations. """ return bytes2long(prv[::-1]) +def prv_marshal(curve, prv): + """Marshal little-endian private key + + :param GOST3410Curve curve: curve to use + :param long prv: serialized private key + :rtype: bytes + + Key is in curve's Q field. + """ + return long2bytes(prv % curve.q, point_size(prv))[::-1] + + def pub_marshal(pub): """Marshal public key