|
42 | 42 | K2C = { |
43 | 43 | "RSA": RSAKey, |
44 | 44 | "EC": ECKey, |
45 | | - "OCT": SYMKey, |
| 45 | + "oct": SYMKey, |
46 | 46 | } |
47 | 47 |
|
48 | 48 | MAP = {'dec': 'enc', 'enc': 'enc', 'ver': 'sig', 'sig': 'sig'} |
@@ -116,7 +116,7 @@ def sym_init(spec): |
116 | 116 | except KeyError: |
117 | 117 | size = 24 |
118 | 118 |
|
119 | | - _kb = KeyBundle(keytype="OCT") |
| 119 | + _kb = KeyBundle(keytype="oct") |
120 | 120 | if 'use' in spec: |
121 | 121 | for use in harmonize_usage(spec["use"]): |
122 | 122 | _key = new_sym_key(use=use, bytes=size) |
@@ -244,7 +244,14 @@ def do_keys(self, keys): |
244 | 244 | :return: |
245 | 245 | """ |
246 | 246 | 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 | + |
248 | 255 | _typ = inst['kty'] |
249 | 256 | try: |
250 | 257 | _usage = harmonize_usage(inst['use']) |
@@ -668,19 +675,24 @@ def keybundle_from_local_file(filename, typ, usage, keytype="RSA"): |
668 | 675 | return _bundle |
669 | 676 |
|
670 | 677 |
|
671 | | -def dump_jwks(kbl, target, private=False): |
| 678 | +def dump_jwks(kbl, target, private=False, symmetric_too=False): |
672 | 679 | """ |
673 | | - Write a JWK to a file. Will ignore symmetric keys !! |
| 680 | + Write a JWK to a file. |
674 | 681 |
|
675 | 682 | :param kbl: List of KeyBundles |
676 | 683 | :param target: Name of the file to which everything should be written |
677 | 684 | :param private: Should also the private parts be exported |
| 685 | + :param symmetric_too: Include symmetric keys or not |
678 | 686 | """ |
679 | 687 |
|
680 | 688 | keys = [] |
681 | 689 | 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 | + |
684 | 696 | res = {"keys": keys} |
685 | 697 |
|
686 | 698 | try: |
@@ -719,7 +731,7 @@ def build_key_bundle(key_conf, kid_template=""): |
719 | 731 | {"type": "RSA", "key": "cp_keys/key.pem", "use": ["enc", "sig"], 'size': 2048}, |
720 | 732 | {"type": "EC", "crv": "P-256", "use": ["sig"], "kid": "ec.1"}, |
721 | 733 | {"type": "EC", "crv": "P-256", "use": ["enc"], "kid": "ec.2"}, |
722 | | - {"type": "OCT", "bytes":} |
| 734 | + {"type": "oct", "bytes":} |
723 | 735 | ] |
724 | 736 |
|
725 | 737 | Keys in this specification are: |
@@ -778,7 +790,7 @@ def build_key_bundle(key_conf, kid_template=""): |
778 | 790 | _bundle = ec_init(spec) |
779 | 791 | else: |
780 | 792 | _bundle = ec_init(spec) |
781 | | - elif typ.upper() == "OCT": |
| 793 | + elif typ.lower() == "oct": |
782 | 794 | _bundle = sym_init(spec) |
783 | 795 | else: |
784 | 796 | continue |
@@ -1052,7 +1064,7 @@ def key_gen(type, **kwargs): |
1052 | 1064 | logging.error("Unknown curve: %s", crv) |
1053 | 1065 | raise ValueError("Unknown curve: {}".format(crv)) |
1054 | 1066 | _key = new_ec_key(crv=crv, **kargs) |
1055 | | - elif type.upper() in ["SYM", "OCT"]: |
| 1067 | + elif type.lower() in ["sym", "oct"]: |
1056 | 1068 | keysize = kwargs.get("bytes", 24) |
1057 | 1069 | randomkey = os.urandom(keysize) |
1058 | 1070 | _key = SYMKey(key=randomkey, **kargs) |
|
0 commit comments