Skip to content

Commit 2425793

Browse files
committed
fix(jwk): improve generate_private_key on binding class
1 parent c7921da commit 2425793

2 files changed

Lines changed: 15 additions & 12 deletions

File tree

‎src/joserfc/_rfc7518/rsa_key.py‎

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,14 @@ class RSABinding(CryptographyBinding):
4343
ssh_type=b"ssh-rsa"
4444
_cryptography_key_types= (RSAPrivateKey, RSAPublicKey)
4545

46+
@staticmethod
47+
defgenerate_private_key(size: int) ->RSAPrivateKey:
48+
returngenerate_private_key(
49+
public_exponent=65537,
50+
key_size=size,
51+
backend=default_backend(),
52+
)
53+
4654
@staticmethod
4755
defimport_private_key(obj: RSADictKey) ->RSAPrivateKey:
4856
if"oth"inobj: # pragma: no cover
@@ -170,17 +178,13 @@ def generate_key(
170178
key_size=2048
171179

172180
ifkey_size%8!=0:
173-
raiseValueError("Invalid key_size for RSAKey")
181+
raiseValueError("A bit size must be a multiple of 8")
174182

175183
ifkey_size<2048:
176184
# https://csrc.nist.gov/publications/detail/sp/800-131a/rev-2/final
177185
warnings.warn("Key size should be >= 2048 bits", SecurityWarning)
178186

179-
raw_key=generate_private_key(
180-
public_exponent=65537,
181-
key_size=key_size,
182-
backend=default_backend(),
183-
)
187+
raw_key=cls.binding.generate_private_key(key_size)
184188
ifprivate:
185189
key=cls(raw_key, raw_key, parameters)
186190
else:

‎src/joserfc/_rfc8037/okp_key.py‎

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ class OKPBinding(CryptographyBinding):
6363

6464
@staticmethod
6565
defgenerate_private_key(crv: LiteralCurves) ->PrivateOKPKey:
66+
ifcrvnotinPRIVATE_KEYS_MAP:
67+
raiseInvalidKeyCurveError(f"Invalid curve value: '{crv}'")
6668
crv_key: t.Type[PrivateOKPKey] =PRIVATE_KEYS_MAP[crv]
6769
returncrv_key.generate()
6870

@@ -190,12 +192,9 @@ def generate_key(
190192
:param auto_kid: add ``kid`` automatically
191193
"""
192194
ifcrvisNone:
193-
crv="Ed25519"
194-
195-
ifcrvnotinPRIVATE_KEYS_MAP:
196-
raiseInvalidKeyCurveError(f"Invalid curve value: '{crv}'")
197-
198-
raw_key=cls.binding.generate_private_key(crv)
195+
raw_key=cls.binding.generate_private_key("Ed25519")
196+
else:
197+
raw_key=cls.binding.generate_private_key(crv)
199198
ifprivate:
200199
key=cls(raw_key, raw_key, parameters)
201200
else:

0 commit comments

Comments
 (0)