Open cemysf opened 1 month ago
Getting this error TypeError: ECPublicKey.verify() takes 3 positional arguments but 4 were given while trying to decode a token with RS256 algorithm.
TypeError: ECPublicKey.verify() takes 3 positional arguments but 4 were given
Decode some token via jwt.decode
... (omitted) ... File /opt/venv/lib/python3.12/site-packages/jwt/api_jwt.py:210, in PyJWT.decode(self, jwt, key, algorithms, options, verify, detached_payload, audience, issuer, leeway, **kwargs) 203 if kwargs: 204 warnings.warn( 205 "passing additional kwargs to decode() is deprecated " 206 "and will be removed in pyjwt version 3. " 207 f"Unsupported kwargs: {tuple(kwargs.keys())}", 208 RemovedInPyjwt3Warning, 209 ) --> 210 decoded = self.decode_complete( 211 jwt, 212 key, 213 algorithms, 214 options, 215 verify=verify, 216 detached_payload=detached_payload, 217 audience=audience, 218 issuer=issuer, 219 leeway=leeway, 220 ) 221 return decoded["payload"] File /opt/venv/lib/python3.12/site-packages/jwt/api_jwt.py:151, in PyJWT.decode_complete(self, jwt, key, algorithms, options, verify, detached_payload, audience, issuer, leeway, **kwargs) 146 if options["verify_signature"] and not algorithms: 147 raise DecodeError( 148 'It is required that you pass in a value for the "algorithms" argument when calling decode().' 149 ) --> 151 decoded = api_jws.decode_complete( 152 jwt, 153 key=key, 154 algorithms=algorithms, 155 options=options, 156 detached_payload=detached_payload, 157 ) 159 payload = self._decode_payload(decoded) 161 merged_options = {**self.options, **options} File /opt/venv/lib/python3.12/site-packages/jwt/api_jws.py:209, in PyJWS.decode_complete(self, jwt, key, algorithms, options, detached_payload, **kwargs) 206 signing_input = b".".join([signing_input.rsplit(b".", 1)[0], payload]) 208 if verify_signature: --> 209 self._verify_signature(signing_input, header, signature, key, algorithms) 211 return { 212 "payload": payload, 213 "header": header, 214 "signature": signature, 215 } File /opt/venv/lib/python3.12/site-packages/jwt/api_jws.py:309, in PyJWS._verify_signature(self, signing_input, header, signature, key, algorithms) 306 raise InvalidAlgorithmError("Algorithm not supported") from e 307 prepared_key = alg_obj.prepare_key(key) --> 309 if not alg_obj.verify(signing_input, prepared_key, signature): 310 raise InvalidSignatureError("Signature verification failed") File /opt/venv/lib/python3.12/site-packages/jwt/algorithms.py:483, in RSAAlgorithm.verify(self, msg, key, sig) 481 def verify(self, msg: bytes, key: RSAPublicKey, sig: bytes) -> bool: 482 try: --> 483 key.verify(sig, msg, padding.PKCS1v15(), self.hash_alg()) 484 return True 485 except InvalidSignature: TypeError: ECPublicKey.verify() takes 3 positional arguments but 4 were given
import jwt token = "..." key = "..." jwt.decode( jwt=token, key=key algorithms=["RS256",] )
$ python -m jwt.help
{ "cryptography": { "version": "42.0.5" }, "implementation": { "name": "CPython", "version": "3.12.4" }, "platform": { "release": "5.15.0-113-generic", "system": "Linux" }, "pyjwt": { "version": "2.8.0" } }
Getting this error
TypeError: ECPublicKey.verify() takes 3 positional arguments but 4 were given
while trying to decode a token with RS256 algorithm.Expected Result
Decode some token via jwt.decode
Actual Result
Reproduction Steps
System Information