Ejemplo n.º 1
0
    def test_signed_compact_create_split_with_kid(self):
        raw_jwt = _raw_jwt.raw_jwt_from_json(None, '{"iss":"joe"}')
        signature = _jwt_format.decode_signature(
            b'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk')
        unsigned_compact = _jwt_format.create_unsigned_compact(
            'RS256', 'AZxkm2U', raw_jwt)
        signed_compact = _jwt_format.create_signed_compact(
            unsigned_compact, signature)
        un_comp, hdr, pay, sig = _jwt_format.split_signed_compact(
            signed_compact)

        self.assertEqual(
            unsigned_compact,
            b'eyJraWQiOiJBWnhrbTJVIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJqb2UifQ')
        self.assertEqual(
            signed_compact,
            'eyJraWQiOiJBWnhrbTJVIiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJqb2UifQ'
            '.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk')
        self.assertEqual(un_comp, unsigned_compact)
        self.assertEqual(sig, signature)
        self.assertEqual(hdr, '{"kid":"AZxkm2U","alg":"RS256"}')
        header = _json_util.json_loads(hdr)
        _jwt_format.validate_header(header, 'RS256')
        self.assertEqual(pay, '{"iss":"joe"}')
        self.assertIsNone(_jwt_format.get_type_header(header))
Ejemplo n.º 2
0
 def test_create_signed_compact(self):
     unsigned_compact = b'eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJqb2UifQ'
     signature = _jwt_format.decode_signature(
         b'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk')
     self.assertEqual(
         _jwt_format.create_signed_compact(unsigned_compact, signature),
         'eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJqb2UifQ.'
         'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk')
Ejemplo n.º 3
0
 def test_encode_decode_signature_success(self):
   signature = bytes([
       116, 24, 223, 180, 151, 153, 224, 37, 79, 250, 96, 125, 216, 173, 187,
       186, 22, 212, 37, 77, 105, 214, 191, 240, 91, 88, 5, 88, 83, 132, 141,
       121
   ])
   encoded = _jwt_format.encode_signature(signature)
   self.assertEqual(encoded, b'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk')
   self.assertEqual(_jwt_format.decode_signature(encoded), signature)
Ejemplo n.º 4
0
    def test_signed_compact_create_split(self):
        payload = '{"iss":"joe"}'
        signature = _jwt_format.decode_signature(
            b'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk')
        unsigned_compact = _jwt_format.create_unsigned_compact(
            'RS256', payload)
        signed_compact = _jwt_format.create_signed_compact(
            unsigned_compact, signature)
        un_comp, hdr, pay, sig = _jwt_format.split_signed_compact(
            signed_compact)

        self.assertEqual(unsigned_compact,
                         b'eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJqb2UifQ')
        self.assertEqual(
            signed_compact, 'eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJqb2UifQ.'
            'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk')
        self.assertEqual(un_comp, unsigned_compact)
        self.assertEqual(sig, signature)
        self.assertEqual(hdr, '{"alg":"RS256"}')
        _jwt_format.validate_header(hdr, 'RS256')
        self.assertEqual(pay, payload)
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
  def test_signed_compact_create_split(self):
    payload = '{"iss":"joe"}'
    signature = _jwt_format.decode_signature(
        b'dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk')
    unsigned_compact = _jwt_format.create_unsigned_compact(
        'RS256', 'JWT', None, payload)
    signed_compact = _jwt_format.create_signed_compact(unsigned_compact,
                                                       signature)
    un_comp, hdr, pay, sig = _jwt_format.split_signed_compact(signed_compact)

    self.assertEqual(
        unsigned_compact,
        b'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJqb2UifQ')
    self.assertEqual(
        signed_compact, 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.'
        'eyJpc3MiOiJqb2UifQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk')
    self.assertEqual(un_comp, unsigned_compact)
    self.assertEqual(sig, signature)
    self.assertEqual(hdr, '{"alg":"RS256","typ":"JWT"}')
    header = _jwt_format.json_loads(hdr)
    _jwt_format.validate_header(header, 'RS256')
    self.assertEqual(pay, payload)
    self.assertEqual(_jwt_format.get_type_header(header), 'JWT')