diff options
author | slush0 <info@bitcoin.cz> | 2013-09-11 19:13:51 +0200 |
---|---|---|
committer | slush0 <info@bitcoin.cz> | 2013-09-11 19:13:51 +0200 |
commit | da7f5d6c7571be42a09901459c87be28de530d1a (patch) | |
tree | 189846e4fbbd3dcb3d9b1a95f597f12c01124156 | |
parent | b12db3976cef68a58536f7c7c3de33c68c4e6105 (diff) | |
download | ecdsa-da7f5d6c7571be42a09901459c87be28de530d1a.tar.gz |
sign_deterministic() refactored into sign_deterministic() and sign_digest_deterministic()
-rw-r--r-- | ecdsa/keys.py | 12 |
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): """ |