summaryrefslogtreecommitdiff
path: root/jwt/algorithms.py
diff options
context:
space:
mode:
authoresneider <dariosn@gmail.com>2015-05-13 03:15:56 -0300
committeresneider <dariosn@gmail.com>2015-05-13 03:15:56 -0300
commit01b7fb0e65c8a6de5c67c1b0c9df0a4c27805ba8 (patch)
tree35f4bac54c9a3db5ac60dd1b0b199d2e7cca1b0e /jwt/algorithms.py
parentb8771db171187a83a69257221cd441e013e1041a (diff)
downloadpyjwt-01b7fb0e65c8a6de5c67c1b0c9df0a4c27805ba8.tar.gz
Fix the ECDSA signature serialization format when using cryptography
Diffstat (limited to 'jwt/algorithms.py')
-rw-r--r--jwt/algorithms.py12
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)