Exemple #1
0
def jwks():
    from authlib.jose import JsonWebKey
    from authlib.jose import JWK_ALGORITHMS
    jwk = JsonWebKey(algorithms=JWK_ALGORITHMS)
    key = jwk.dumps(config['PUBLIC_KEY'], kty='RSA')
    key['kid'] = '1'
    return {"keys": [key]}
Exemple #2
0
 def test_dumps_okp_private_key(self):
     key = read_file_path('ed25519-pkcs8.pem')
     jwk = JsonWebKey(RFC8037_ALGORITHMS)
     self.assertRaises(ValueError, jwk.dumps, key)
     obj = jwk.dumps(key, 'OKP')
     self.assertEqual(obj['kty'], 'OKP')
     self.assertEqual(obj['crv'], 'Ed25519')
     self.assertIn('d', obj)
Exemple #3
0
def jwks_schema() -> dict:
    from authlib.jose import JsonWebKey
    from authlib.jose import JWK_ALGORITHMS

    jwk = JsonWebKey(algorithms=JWK_ALGORITHMS)
    key = jwk.dumps(current_app.config['PUBLIC_KEY'], kty='RSA')
    key['kid'] = '1'

    return {'keys': [key]}
Exemple #4
0
 def test_loads_okp_public_key(self):
     obj = {
         "x": "AD9E0JYnpV-OxZbd8aN1t4z71Vtf6JcJC7TYHT0HDbg",
         "crv": "Ed25519",
         "kty": "OKP"
     }
     jwk = JsonWebKey(RFC8037_ALGORITHMS)
     key = jwk.loads(obj)
     new_obj = jwk.dumps(key)
     self.assertEqual(obj['x'], new_obj['x'])
Exemple #5
0
 def test_loads_okp_private_key(self):
     obj = {
         'x': '11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo',
         'd': 'nWGxne_9WmC6hEr0kuwsxERJxWl7MmkZcDusAxyuf2A',
         'crv': 'Ed25519',
         'kty': 'OKP'
     }
     jwk = JsonWebKey(RFC8037_ALGORITHMS)
     key = jwk.loads(obj)
     new_obj = jwk.dumps(key)
     self.assertEqual(obj['d'], new_obj['d'])
Exemple #6
0
def get_jwk():
    LOGGER.debug('Loading jwk from public key...')
    key_data = None
    with open(app_context().config['jwk_public_key_path'], 'rb') as _key_file:
        key_data = _key_file.read()
    _jwk = JsonWebKey(JWK_ALGORITHMS)
    _key_dict = _jwk.dumps(key_data,
                           kty='RSA',
                           use='sig',
                           alg='RS256',
                           kid="demo_key")
    return {'keys': [_key_dict]}
Exemple #7
0
    def test_dumps_okp_public_key(self):
        key = read_file_path('ed25519-ssh.pub')
        jwk = JsonWebKey(RFC8037_ALGORITHMS)
        self.assertRaises(ValueError, jwk.dumps, key)

        obj = jwk.dumps(key, 'OKP')
        self.assertEqual(obj['kty'], 'OKP')
        self.assertEqual(obj['crv'], 'Ed25519')

        key = read_file_path('ed25519-pub.pem')
        obj = jwk.dumps(key, 'OKP')
        self.assertEqual(obj['kty'], 'OKP')
        self.assertEqual(obj['crv'], 'Ed25519')
Exemple #8
0
    def test_03_keyid(self):
        print("\n-----", sys._getframe().f_code.co_name, "-----")
        pem1 = "-----BEGIN EC PRIVATE KEY-----\nMHcCAQEEIDSt1IOhS5ZmY6nkX/Wh7pT+Y45TmYxrwoc1pG72v387oAoGCCqGSM49\nAwEHoUQDQgAEdEsjD2i2LytHOjNxxc9PbFeqQ89aMLOfmdBbEoSOhZBukJ52EqQM\nhOdgHqyqD4hEyYxgDu3uIbKat+lEZEhb3Q==\n-----END EC PRIVATE KEY-----"
        keypair1 = bbclib.KeyPair()
        keypair1.mk_keyobj_from_private_key_pem(pem1)
        keyid1 = keypair1.get_key_id()

        pubkey = keypair1.get_public_key_in_pem()
        jwk = JsonWebKey(algorithms=JWK_ALGORITHMS)
        obj = jwk.dumps(pubkey, kty='EC')
        json_obj = json.dumps(obj, separators=(',', ':'), sort_keys=True)
        keyid2 = hashlib.sha256(json_obj.encode()).digest()
        assert keyid1 == keyid2
Exemple #9
0
def get_jwk():
    r = requests.get('{}/.well-known/jwks.json'.format(
        current_app.config['JWKS_URL']))
    key = r.json()['keys'][0]
    jwk = JsonWebKey(algorithms=JWK_ALGORITHMS)
    return jwk.loads(key)