Skip to content

Commit e08cbf1

Browse files
committed
Use separate input_keysize property
This allows to propery compute an octect key for algorithms like A256CBC-HS512 ha sa different input keysize than the putput key size. Signed-off-by: Simo Sorce <[email protected]>
1 parent 2fec703 commit e08cbf1

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

jwcrypto/jwa.py

+14
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@ def algorithm_usage_location(self):
5656
def algorithm_use(self):
5757
"""One of 'sig', 'kex', 'enc'"""
5858

59+
@property
60+
def input_keysize(self):
61+
"""The input key size"""
62+
try:
63+
return self.wrap_key_size
64+
except AttributeError:
65+
return self.keysize
66+
5967

6068
def _bitsize(x):
6169
return len(x) * 8
@@ -900,6 +908,9 @@ def encrypt(self, k, a, m):
900908
901909
Returns a dictionary with the computed data.
902910
"""
911+
if len(k) != _inbytes(self.wrap_key_size):
912+
raise ValueError("Invalid input key size")
913+
903914
hkey = k[:_inbytes(self.keysize)]
904915
ekey = k[_inbytes(self.keysize):]
905916

@@ -928,6 +939,9 @@ def decrypt(self, k, a, iv, e, t):
928939
929940
Returns plaintext or raises an error
930941
"""
942+
if len(k) != _inbytes(self.wrap_key_size):
943+
raise ValueError("Invalid input key size")
944+
931945
hkey = k[:_inbytes(self.keysize)]
932946
dkey = k[_inbytes(self.keysize):]
933947

jwcrypto/jwk.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,7 @@ def _get_gen_size(self, params, default_size=None):
377377
alg = JWA.instantiate_alg(params['alg'])
378378
except KeyError as e:
379379
raise ValueError("Invalid 'alg' parameter") from e
380-
size = alg.keysize
380+
size = alg.input_keysize
381381
return size
382382

383383
def _generate_oct(self, params):

0 commit comments

Comments
 (0)