summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorslush0 <info@bitcoin.cz>2013-09-11 19:13:51 +0200
committerslush0 <info@bitcoin.cz>2013-09-11 19:13:51 +0200
commitda7f5d6c7571be42a09901459c87be28de530d1a (patch)
tree189846e4fbbd3dcb3d9b1a95f597f12c01124156
parentb12db3976cef68a58536f7c7c3de33c68c4e6105 (diff)
downloadecdsa-da7f5d6c7571be42a09901459c87be28de530d1a.tar.gz
sign_deterministic() refactored into sign_deterministic() and sign_digest_deterministic()
-rw-r--r--ecdsa/keys.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/ecdsa/keys.py b/ecdsa/keys.py
index f462700..3ea97c1 100644
--- a/ecdsa/keys.py
+++ b/ecdsa/keys.py
@@ -215,17 +215,21 @@ class SigningKey:
return self.verifying_key
def sign_deterministic(self, data, hashfunc=None, sigencode=sigencode_string):
+ hashfunc = hashfunc or self.default_hashfunc
+ digest = hashfunc(data).digest()
+
+ return self.sign_digest_deterministic(digest, hashfunc=hashfunc, sigencode=sigencode)
+
+ def sign_digest_deterministic(self, digest, hashfunc=None, sigencode=sigencode_string):
"""
Calculates 'k' from data itself, removing the need for strong
random generator and producing deterministic (reproducible) signatures.
See RFC 6979 for more details.
"""
- hashfunc = hashfunc or self.default_hashfunc
secexp = self.privkey.secret_multiplier
- h = hashfunc(data).digest()
- k = rfc6979.generate_k(self.curve.generator, secexp, hashfunc, h)
+ k = rfc6979.generate_k(self.curve.generator, secexp, hashfunc, digest)
- return self.sign(data, hashfunc=hashfunc, sigencode=sigencode, k=k)
+ return self.sign_digest(digest, sigencode=sigencode, k=k)
def sign(self, data, entropy=None, hashfunc=None, sigencode=sigencode_string, k=None):
"""