Skip to content

Commit 0edf66d

Browse files
committed
Turn JWK into a dict-like object
Signed-off-by: Simo Sorce <[email protected]>
1 parent 787f69a commit 0edf66d

File tree

5 files changed

+194
-103
lines changed

5 files changed

+194
-103
lines changed

jwcrypto/jwa.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ def sign(self, key, payload):
161161
return ''
162162

163163
def verify(self, key, payload, signature):
164-
if key.key_type != 'oct' or key.get_op_key() != '':
164+
if key['kty'] != 'oct' or key.get_op_key() != '':
165165
raise InvalidSignature('The "none" signature cannot be verified')
166166

167167

@@ -353,8 +353,8 @@ def __init__(self, padfn):
353353
def _check_key(self, key):
354354
if not isinstance(key, JWK):
355355
raise ValueError('key is not a JWK object')
356-
if key.key_type != 'RSA':
357-
raise InvalidJWEKeyType('RSA', key.key_type)
356+
if key['kty'] != 'RSA':
357+
raise InvalidJWEKeyType('RSA', key['kty'])
358358

359359
# FIXME: get key size and insure > 2048 bits
360360
def wrap(self, key, bitsize, cek, headers):
@@ -441,8 +441,8 @@ def __init__(self):
441441
def _get_key(self, key, op):
442442
if not isinstance(key, JWK):
443443
raise ValueError('key is not a JWK object')
444-
if key.key_type != 'oct':
445-
raise InvalidJWEKeyType('oct', key.key_type)
444+
if key['kty'] != 'oct':
445+
raise InvalidJWEKeyType('oct', key['kty'])
446446
rk = base64url_decode(key.get_op_key(op))
447447
if _bitsize(rk) != self.keysize:
448448
raise InvalidJWEKeyLength(self.keysize, _bitsize(rk))
@@ -503,8 +503,8 @@ def __init__(self):
503503
def _get_key(self, key, op):
504504
if not isinstance(key, JWK):
505505
raise ValueError('key is not a JWK object')
506-
if key.key_type != 'oct':
507-
raise InvalidJWEKeyType('oct', key.key_type)
506+
if key['kty'] != 'oct':
507+
raise InvalidJWEKeyType('oct', key['kty'])
508508
rk = base64url_decode(key.get_op_key(op))
509509
if _bitsize(rk) != self.keysize:
510510
raise InvalidJWEKeyLength(self.keysize, _bitsize(rk))
@@ -669,8 +669,8 @@ class _Direct(_RawKeyMgmt, JWAAlgorithm):
669669
def _check_key(self, key):
670670
if not isinstance(key, JWK):
671671
raise ValueError('key is not a JWK object')
672-
if key.key_type != 'oct':
673-
raise InvalidJWEKeyType('oct', key.key_type)
672+
if key['kty'] != 'oct':
673+
raise InvalidJWEKeyType('oct', key['kty'])
674674

675675
def wrap(self, key, bitsize, cek, headers):
676676
self._check_key(key)
@@ -706,12 +706,12 @@ def __init__(self):
706706
def _check_key(self, key):
707707
if not isinstance(key, JWK):
708708
raise ValueError('key is not a JWK object')
709-
if key.key_type not in ['EC', 'OKP']:
710-
raise InvalidJWEKeyType('EC or OKP', key.key_type)
711-
if key.key_type == 'OKP':
712-
if key.key_curve not in ['X25519', 'X448']:
709+
if key['kty'] not in ['EC', 'OKP']:
710+
raise InvalidJWEKeyType('EC or OKP', key['kty'])
711+
if key['kty'] == 'OKP':
712+
if key['crv'] not in ['X25519', 'X448']:
713713
raise InvalidJWEKeyType('X25519 or X448',
714-
key.key_curve)
714+
key['crv'])
715715

716716
def _derive(self, privkey, pubkey, alg, bitsize, headers):
717717
# OtherInfo is defined in NIST SP 56A 5.8.1.2.1
@@ -759,7 +759,7 @@ def wrap(self, key, bitsize, cek, headers):
759759
else:
760760
alg = headers['alg']
761761

762-
epk = JWK.generate(kty=key.key_type, crv=key.key_curve)
762+
epk = JWK.generate(kty=key['kty'], crv=key['crv'])
763763
dk = self._derive(epk.get_op_key('unwrapKey'),
764764
key.get_op_key('wrapKey'),
765765
alg, dk_size, headers)
@@ -835,13 +835,13 @@ class _EdDsa(_RawJWS, JWAAlgorithm):
835835

836836
def sign(self, key, payload):
837837

838-
if key.key_curve in ['Ed25519', 'Ed448']:
838+
if key['crv'] in ['Ed25519', 'Ed448']:
839839
skey = key.get_op_key('sign')
840840
return skey.sign(payload)
841841
raise NotImplementedError
842842

843843
def verify(self, key, payload, signature):
844-
if key.key_curve in ['Ed25519', 'Ed448']:
844+
if key['crv'] in ['Ed25519', 'Ed448']:
845845
pkey = key.get_op_key('verify')
846846
return pkey.verify(signature, payload)
847847
raise NotImplementedError

0 commit comments

Comments
 (0)