Skip to content

Commit a5549af

Browse files
authored
Merge pull request #71 from jschlyter/jwk_from_dict
Implement key_from_jwk_dict()
2 parents 954362c + 6028e01 commit a5549af

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

src/jwkest/jwk.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from jwkest import JWKESTException
2323
from jwkest import b64d
2424
from jwkest import b64e
25+
from jwkest import UnknownAlgorithm
2526
from jwkest.ecc import NISTEllipticCurve
2627
from jwkest.jwt import b2s_conv
2728

@@ -189,6 +190,39 @@ def x509_rsa_load(txt):
189190
return [("rsa", import_rsa_key(txt))]
190191

191192

193+
def key_from_jwk_dict(jwk_dict, private=True):
194+
"""Load JWK from dictionary"""
195+
if jwk_dict['kty'] == 'EC':
196+
if private:
197+
return ECKey(kid=jwk_dict['kid'],
198+
crv=jwk_dict['crv'],
199+
x=jwk_dict['x'],
200+
y=jwk_dict['y'],
201+
d=jwk_dict['d'])
202+
else:
203+
return ECKey(kid=jwk_dict['kid'],
204+
crv=jwk_dict['crv'],
205+
x=jwk_dict['x'],
206+
y=jwk_dict['y'])
207+
elif jwk_dict['kty'] == 'RSA':
208+
if private:
209+
return RSAKey(kid=jwk_dict['kid'],
210+
n=jwk_dict['n'],
211+
e=jwk_dict['e'],
212+
d=jwk_dict['d'],
213+
p=jwk_dict['p'],
214+
q=jwk_dict['q'])
215+
else:
216+
return RSAKey(kid=jwk_dict['kid'],
217+
n=jwk_dict['n'],
218+
e=jwk_dict['e'])
219+
elif jwk_dict['kty'] == 'oct':
220+
return SYMKey(kid=jwk_dict['kid'],
221+
k=jwk_dict['k'])
222+
else:
223+
raise UnknownAlgorithm
224+
225+
192226
class Key(object):
193227
"""
194228
Basic JSON Web key class

0 commit comments

Comments
 (0)