diff options
author | esneider <dariosn@gmail.com> | 2015-05-13 03:15:56 -0300 |
---|---|---|
committer | esneider <dariosn@gmail.com> | 2015-05-13 03:15:56 -0300 |
commit | 01b7fb0e65c8a6de5c67c1b0c9df0a4c27805ba8 (patch) | |
tree | 35f4bac54c9a3db5ac60dd1b0b199d2e7cca1b0e /jwt/algorithms.py | |
parent | b8771db171187a83a69257221cd441e013e1041a (diff) | |
download | pyjwt-01b7fb0e65c8a6de5c67c1b0c9df0a4c27805ba8.tar.gz |
Fix the ECDSA signature serialization format when using cryptography
Diffstat (limited to 'jwt/algorithms.py')
-rw-r--r-- | jwt/algorithms.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/jwt/algorithms.py b/jwt/algorithms.py index 05fd194..fa4f4d3 100644 --- a/jwt/algorithms.py +++ b/jwt/algorithms.py @@ -3,6 +3,7 @@ import hmac from .compat import constant_time_compare, string_types, text_type from .exceptions import InvalidKeyError +from .utils import raw_to_der_signature, der_to_raw_signature try: from cryptography.hazmat.primitives import hashes @@ -233,10 +234,17 @@ if has_crypto: signer = key.signer(ec.ECDSA(self.hash_alg())) signer.update(msg) - return signer.finalize() + der_sig = signer.finalize() + + return der_to_raw_signature(der_sig, key.curve) def verify(self, msg, key, sig): - verifier = key.verifier(sig, ec.ECDSA(self.hash_alg())) + try: + der_sig = raw_to_der_signature(sig, key.curve) + except ValueError: + return False + + verifier = key.verifier(der_sig, ec.ECDSA(self.hash_alg())) verifier.update(msg) |