def test_decode_encode_payload(self): # Example from https://tools.ietf.org/html/rfc7519#section-3.1 encoded_payload = (b'eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0' b'dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ') json_payload = _jwt_format.decode_payload(encoded_payload) payload = _jwt_format.json_loads(json_payload) self.assertEqual(payload['iss'], 'joe') self.assertEqual(payload['exp'], 1300819380) self.assertEqual(payload['http://example.com/is_root'], True) self.assertEqual( _jwt_format.decode_payload(_jwt_format.encode_payload(json_payload)), json_payload)
def verify_mac_and_decode( self, compact: Text, validator: _jwt_validator.JwtValidator ) -> _verified_jwt.VerifiedJwt: """Verifies, validates and decodes a MACed compact JWT token.""" encoded = compact.encode('utf8') try: unsigned_compact, encoded_signature = encoded.rsplit(b'.', 1) except ValueError: raise _jwt_error.JwtInvalidError('invalid token') signature = _jwt_format.decode_signature(encoded_signature) self._verify_mac(signature, unsigned_compact) try: encoded_header, encoded_payload = unsigned_compact.split(b'.') except ValueError: raise _jwt_error.JwtInvalidError('invalid token') _jwt_format.validate_header(encoded_header, self._algorithm) json_payload = _jwt_format.decode_payload(encoded_payload) raw_jwt = _raw_jwt.RawJwt.from_json_payload(json_payload) _jwt_validator.validate(validator, raw_jwt) return _verified_jwt.VerifiedJwt._create(raw_jwt) # pylint: disable=protected-access