X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=pygost%2Fgost3410.py;h=58a20e0fe7c6a06020dc90c34e80c76ca78b0150;hb=9ab3b1d03f734f4aae28364f7a6c7c7c223b30a9;hp=3a47187258d7f78964c6f55783033e4e3ec7a14a;hpb=03de94212cd7c039e6a7f4f947fbd2d7d6c9b70e;p=pygost.git diff --git a/pygost/gost3410.py b/pygost/gost3410.py index 3a47187..58a20e0 100644 --- a/pygost/gost3410.py +++ b/pygost/gost3410.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 @@ -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