Skip to content

Commit 2bd3924

Browse files
committed
Moved from 'OCT' to 'oct'.
1 parent 8f70dc5 commit 2bd3924

File tree

6 files changed

+43
-17
lines changed

6 files changed

+43
-17
lines changed

src/cryptojwt/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
except ImportError:
2222
pass
2323

24-
__version__ = '0.8.0'
24+
__version__ = '0.8.1'
2525

2626
logger = logging.getLogger(__name__)
2727

src/cryptojwt/jws/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ def alg2keytype(alg):
4545
elif alg.startswith("RS") or alg.startswith("PS"):
4646
return "RSA"
4747
elif alg.startswith("HS") or alg.startswith("A"):
48-
return "OCT"
48+
return "oct"
4949
elif alg.startswith("ES") or alg.startswith("ECDH-ES"):
5050
return "EC"
5151
else:

src/cryptojwt/key_bundle.py

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
K2C = {
4343
"RSA": RSAKey,
4444
"EC": ECKey,
45-
"OCT": SYMKey,
45+
"oct": SYMKey,
4646
}
4747

4848
MAP = {'dec': 'enc', 'enc': 'enc', 'ver': 'sig', 'sig': 'sig'}
@@ -116,7 +116,7 @@ def sym_init(spec):
116116
except KeyError:
117117
size = 24
118118

119-
_kb = KeyBundle(keytype="OCT")
119+
_kb = KeyBundle(keytype="oct")
120120
if 'use' in spec:
121121
for use in harmonize_usage(spec["use"]):
122122
_key = new_sym_key(use=use, bytes=size)
@@ -244,7 +244,14 @@ def do_keys(self, keys):
244244
:return:
245245
"""
246246
for inst in keys:
247-
inst['kty'] = inst["kty"].upper()
247+
if inst["kty"].lower() in K2C:
248+
inst["kty"] = inst["kty"].lower()
249+
elif inst["kty"].upper() in K2C:
250+
inst["kty"] = inst["kty"].upper()
251+
else:
252+
LOGGER.warning('While loading keys, unknown key type: %s', inst['kty'])
253+
continue
254+
248255
_typ = inst['kty']
249256
try:
250257
_usage = harmonize_usage(inst['use'])
@@ -668,19 +675,24 @@ def keybundle_from_local_file(filename, typ, usage, keytype="RSA"):
668675
return _bundle
669676

670677

671-
def dump_jwks(kbl, target, private=False):
678+
def dump_jwks(kbl, target, private=False, symmetric_too=False):
672679
"""
673-
Write a JWK to a file. Will ignore symmetric keys !!
680+
Write a JWK to a file.
674681
675682
:param kbl: List of KeyBundles
676683
:param target: Name of the file to which everything should be written
677684
:param private: Should also the private parts be exported
685+
:param symmetric_too: Include symmetric keys or not
678686
"""
679687

680688
keys = []
681689
for _bundle in kbl:
682-
keys.extend([k.serialize(private) for k in _bundle.keys() if
683-
k.kty != 'oct' and not k.inactive_since])
690+
if symmetric_too:
691+
keys.extend([k.serialize(private) for k in _bundle.keys() if not k.inactive_since])
692+
else:
693+
keys.extend([k.serialize(private) for k in _bundle.keys() if
694+
k.kty != 'oct' and not k.inactive_since])
695+
684696
res = {"keys": keys}
685697

686698
try:
@@ -719,7 +731,7 @@ def build_key_bundle(key_conf, kid_template=""):
719731
{"type": "RSA", "key": "cp_keys/key.pem", "use": ["enc", "sig"], 'size': 2048},
720732
{"type": "EC", "crv": "P-256", "use": ["sig"], "kid": "ec.1"},
721733
{"type": "EC", "crv": "P-256", "use": ["enc"], "kid": "ec.2"},
722-
{"type": "OCT", "bytes":}
734+
{"type": "oct", "bytes":}
723735
]
724736
725737
Keys in this specification are:
@@ -778,7 +790,7 @@ def build_key_bundle(key_conf, kid_template=""):
778790
_bundle = ec_init(spec)
779791
else:
780792
_bundle = ec_init(spec)
781-
elif typ.upper() == "OCT":
793+
elif typ.lower() == "oct":
782794
_bundle = sym_init(spec)
783795
else:
784796
continue
@@ -1052,7 +1064,7 @@ def key_gen(type, **kwargs):
10521064
logging.error("Unknown curve: %s", crv)
10531065
raise ValueError("Unknown curve: {}".format(crv))
10541066
_key = new_ec_key(crv=crv, **kargs)
1055-
elif type.upper() in ["SYM", "OCT"]:
1067+
elif type.lower() in ["sym", "oct"]:
10561068
keysize = kwargs.get("bytes", 24)
10571069
randomkey = os.urandom(keysize)
10581070
_key = SYMKey(key=randomkey, **kargs)

src/cryptojwt/key_jar.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -653,7 +653,7 @@ def build_keyjar(key_conf, kid_template="", keyjar=None, owner=''):
653653
{"type": "RSA", "key": "cp_keys/key.pem", "use": ["enc", "sig"]},
654654
{"type": "EC", "crv": "P-256", "use": ["sig"], "kid": "ec.1"},
655655
{"type": "EC", "crv": "P-256", "use": ["enc"], "kid": "ec.2"}
656-
{"type": "OCT", "bytes": 32, "use":["sig"]}
656+
{"type": "oct", "bytes": 32, "use":["sig"]}
657657
]
658658
659659
Keys in this specification are:

tests/test_03_key_bundle.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -435,16 +435,30 @@ def test_dump_jwks():
435435
kb2 = KeyBundle([a, b])
436436

437437
kb1 = rsa_init({'use': ['enc', 'sig'], 'size': 1024, 'name': 'rsa', 'path': 'keys'})
438+
439+
# Will not dump symmetric keys
438440
dump_jwks([kb1, kb2], 'jwks_combo')
439441

440442
# Now read it
441443

442444
nkb = KeyBundle(source='file://jwks_combo', fileformat='jwks')
443445

444-
assert len(nkb) == 4
446+
assert len(nkb) == 2
445447
# both RSA keys
446448
assert len(nkb.get('rsa')) == 2
447449

450+
# Will dump symmetric keys
451+
dump_jwks([kb1, kb2], 'jwks_combo',symmetric_too=True)
452+
453+
# Now read it
454+
nkb = KeyBundle(source='file://jwks_combo', fileformat='jwks')
455+
456+
assert len(nkb) == 4
457+
# two RSA keys
458+
assert len(nkb.get('rsa')) == 2
459+
# two symmetric keys
460+
assert len(nkb.get('oct')) == 2
461+
448462

449463
def test_mark_as_inactive():
450464
desc = {"kty": "oct", "key": "highestsupersecret", "use": "sig"}
@@ -657,7 +671,7 @@ def test_keys():
657671
EXPECTED = [
658672
b'iA7PvG_DfJIeeqQcuXFmvUGjqBkda8In_uMpZrcodVA',
659673
b'akXzyGlXg8yLhsCczKb_r8VERLx7-iZBUMIVgg2K7p4',
660-
b'Rdy8n5h0fo2q9USHJ6HQKnNZFynN1pWN_X6Bc_Tx-lE'
674+
b'kLsuyGef1kfw5-t-N9CJLIHx_dpZ79-KemwqjwdrvTI'
661675
]
662676

663677

@@ -829,7 +843,7 @@ def test_build_key_bundle_sym():
829843

830844
assert len(_kb.get('RSA')) == 0
831845
assert len(_kb.get('EC')) == 0
832-
assert len(_kb.get('OCT')) == 3
846+
assert len(_kb.get('oct')) == 3
833847

834848

835849
def test_key_bundle_difference_none():

tests/test_06_jws.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ def test_hmac_512():
225225

226226
def test_hmac_from_keyrep():
227227
payload = "Please take a moment to register today"
228-
symkeys = [k for k in SIGJWKS if k.kty == "OCT"]
228+
symkeys = [k for k in SIGJWKS if k.kty == "oct"]
229229
_jws = JWS(payload, alg="HS512")
230230
_jwt = _jws.sign_compact(symkeys)
231231

0 commit comments

Comments
 (0)