# coding: utf-8
# PyGOST -- Pure Python GOST cryptographic functions library
-# Copyright (C) 2015-2016 Sergey Matveev <stargrave@stargrave.org>
+# Copyright (C) 2015-2018 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
y = y or self.y
tx = x
ty = y
- degree -= 1
if degree == 0:
raise ValueError("Bad degree value")
+ degree -= 1
while degree != 0:
if degree & 1 == 1:
tx, ty = self._add(tx, ty, x, y)
return tx, ty
-def public_key(curve, private_key):
+def public_key(curve, prv):
""" Generate public key from the private one
:param GOST3410Curve curve: curve to use
- :param long private_key: private key
- :return: public key's parts, X and Y
+ :param long prv: private key
+ :returns: public key's parts, X and Y
:rtype: (long, long)
"""
- return curve.exp(private_key)
+ return curve.exp(prv)
-def sign(curve, private_key, digest, mode=2001):
+def sign(curve, prv, digest, mode=2001):
""" Calculate signature for provided digest
:param GOST3410Curve curve: curve to use
- :param long private_key: private key
+ :param long prv: private key
:param digest: digest for signing
:type digest: bytes, 32 or 64 bytes
- :return: signature
+ :returns: signature
:rtype: bytes, 64 or 128 bytes
"""
size = MODE2SIZE[mode]
r %= q
if r == 0:
continue
- d = private_key * r
+ d = prv * r
k *= e
s = (d + k) % q
if s == 0:
return lm == r
-def prv_unmarshal(private_key):
+def prv_unmarshal(prv):
"""Unmarshal private key
- :param bytes private_key: serialized private key
+ :param bytes prv: serialized private key
:rtype: long
"""
- return bytes2long(private_key[::-1])
+ return bytes2long(prv[::-1])
def pub_marshal(pub, mode=2001):