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]}
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)
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]}
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'])
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'])
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]}
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')
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
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)