# coding: utf-8
# PyGOST -- Pure Python GOST cryptographic functions library
-# Copyright (C) 2015-2016 Sergey Matveev <stargrave@stargrave.org>
+# Copyright (C) 2015-2020 Sergey Matveev <stargrave@stargrave.org>
#
# 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
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# the Free Software Foundation, version 3 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
""" Deserialize big-endian bytes into long number
:param bytes raw: binary string
- :return: deserialized long number
+ :returns: deserialized long number
:rtype: int
"""
return int(hexenc(raw), 16)
""" Serialize long number into big-endian bytestring
:param long n: long number
- :return: serialized bytestring
+ :returns: serialized bytestring
:rtype: bytes
"""
res = hex(int(n))[2:].rstrip("L")
def modinvert(a, n):
""" Modular multiplicative inverse
- :return: inverse number. -1 if it does not exist
+ :returns: inverse number. -1 if it does not exist
Realization is taken from:
https://en.wikipedia.org/wiki/Extended_Euclidean_algorithm