Skip to content

Commit eb916bf

Browse files
committed
Merge branch 'master' of github.com:IdentityPython/cryptojwt
2 parents 03687c7 + f7ac208 commit eb916bf

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

src/cryptojwt/jwk.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -396,17 +396,23 @@ def serialize(self, private=False):
396396
"""
397397
pass
398398

399-
def get_key(self, **kwargs):
399+
def get_key(self, private=False):
400400
"""
401401
Get a keys useful for signing and/or encrypting information.
402402
403-
:param kwargs:
403+
:param private: Private key requested
404404
:return: A key instance. This can be an RSA, EC or other
405405
type of key.
406406
"""
407407
if not self.key:
408408
self.deserialize()
409409

410+
if not private and hasattr(self.key, 'public_key'):
411+
return self.key.public_key()
412+
413+
if private and not hasattr(self.key, 'private_bytes'):
414+
raise ValueError("Not a private key")
415+
410416
return self.key
411417

412418
def verify(self):
@@ -1026,6 +1032,11 @@ def serialize(self, private=True):
10261032
res["k"] = as_unicode(b64e(bytes(self.key)))
10271033
return res
10281034

1035+
def get_key(self, **kwargs):
1036+
if not self.key:
1037+
self.deserialize()
1038+
return self.key
1039+
10291040
def encryption_key(self, alg, **kwargs):
10301041
"""
10311042
Return an encryption key as per

tests/test_2_jwk.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,23 @@ def test_keys():
294294
assert len(keyl['ec']) == 1
295295

296296

297+
def test_get_key():
298+
ec_key = generate_private_key(NIST2SEC['P-256'], default_backend())
299+
asym_private_key = ECKey(key=ec_key)
300+
asym_public_key = ECKey(key=asym_private_key.key.public_key())
301+
sym_key = SYMKey(key='mekmitasdigoat', kid='xyzzy')
302+
303+
asym_private_key.get_key(private=True)
304+
asym_private_key.get_key(private=False)
305+
306+
with pytest.raises(ValueError):
307+
asym_public_key.get_key(private=True)
308+
asym_public_key.get_key(private=False)
309+
310+
sym_key.get_key(private=True)
311+
sym_key.get_key(private=False)
312+
313+
297314
def test_private_key_from_jwk():
298315
keys = []
299316

0 commit comments

Comments
 (0)