diff --git a/jose/exceptions.py b/jose/exceptions.py index 45b24e36..22334d65 100644 --- a/jose/exceptions.py +++ b/jose/exceptions.py @@ -8,6 +8,10 @@ class JWSError(JOSEError): pass +class JWSSignatureError(JWSError): + pass + + class JWSAlgorithmError(JWSError): pass diff --git a/jose/jws.py b/jose/jws.py index 8d61231e..b7ed81d7 100644 --- a/jose/jws.py +++ b/jose/jws.py @@ -8,6 +8,7 @@ from jose.jwk import get_algorithm_object from jose.constants import ALGORITHMS from jose.exceptions import JWSError +from jose.exceptions import JWSSignatureError from jose.utils import base64url_encode from jose.utils import base64url_decode @@ -203,7 +204,9 @@ def _verify_signature(payload, signing_input, header, signature, key='', algorit key = alg_obj.prepare_key(key) if not alg_obj.verify(signing_input, key, signature): - raise JWSError('Signature verification failed') + raise JWSSignatureError() + except JWSSignatureError: + raise JWSError('Signature verification failed.') except JWSError: raise JWSError('Invalid or unsupported algorithm: %s' % alg)