|
8 | 8 |
|
9 | 9 | from cryptojwt.exception import IssuerNotFound, JWKESTException |
10 | 10 | from cryptojwt.jwe.jwenc import JWEnc |
| 11 | +from cryptojwt.jwk.okp import new_okp_key |
11 | 12 | from cryptojwt.jws.jws import JWS, factory |
12 | 13 | from cryptojwt.key_bundle import KeyBundle, keybundle_from_local_file, rsa_init |
13 | 14 | from cryptojwt.key_jar import KeyJar, build_keyjar, init_key_jar, rotate_keys |
@@ -1020,13 +1021,63 @@ def test_contains(): |
1020 | 1021 | assert "David" not in kj |
1021 | 1022 |
|
1022 | 1023 |
|
1023 | | -def test_similar(): |
1024 | | - ISSUER = "xyzzy" |
| 1024 | +def test_union(): |
| 1025 | + kj1 = KeyJar() |
| 1026 | + kj2 = KeyJar() |
| 1027 | + kj3 = KeyJar() |
1025 | 1028 |
|
1026 | | - kj = KeyJar() |
1027 | | - kb = KeyBundle(JWK2) |
1028 | | - kj.add_kb(issuer_id=ISSUER, kb=kb) |
| 1029 | + alice_keys1 = [ |
| 1030 | + new_okp_key(crv="Ed25519", kid="key1a").serialize(private=True), |
| 1031 | + new_okp_key(crv="Ed25519", kid="key1b").serialize(private=True), |
| 1032 | + ] |
| 1033 | + |
| 1034 | + alice_keys2 = [ |
| 1035 | + new_okp_key(crv="Ed25519", kid="key2a").serialize(private=True), |
| 1036 | + new_okp_key(crv="Ed25519", kid="key2b").serialize(private=True), |
| 1037 | + ] |
| 1038 | + |
| 1039 | + bob_keys1 = [ |
| 1040 | + new_okp_key(crv="Ed25519", kid="key1a").serialize(private=True), |
| 1041 | + new_okp_key(crv="Ed25519", kid="key1b").serialize(private=True), |
| 1042 | + new_okp_key(crv="Ed25519", kid="key2a").serialize(private=True), |
| 1043 | + new_okp_key(crv="Ed25519", kid="key2b").serialize(private=True), |
| 1044 | + ] |
| 1045 | + |
| 1046 | + kj1.add_kb("Alice", KeyBundle(keys=alice_keys1)) |
| 1047 | + kj2.add_kb("Alice", KeyBundle(keys=alice_keys2)) |
| 1048 | + kj3.add_kb("Bob", KeyBundle(keys=bob_keys1)) |
| 1049 | + |
| 1050 | + kj = kj1 | kj2 | kj3 |
| 1051 | + |
| 1052 | + assert len(kj["Alice"].all_keys()) == 4 |
| 1053 | + assert len(kj["Bob"].all_keys()) == 4 |
| 1054 | + |
| 1055 | + |
| 1056 | +def test_intersection(): |
| 1057 | + kj1 = KeyJar() |
| 1058 | + kj2 = KeyJar() |
| 1059 | + |
| 1060 | + alice_keys = [ |
| 1061 | + new_okp_key(crv="Ed25519", kid="key1").serialize(private=True), |
| 1062 | + new_okp_key(crv="Ed25519", kid="key2").serialize(private=True), |
| 1063 | + new_okp_key(crv="Ed25519", kid="key3").serialize(private=True), |
| 1064 | + new_okp_key(crv="Ed25519", kid="key4").serialize(private=True), |
| 1065 | + ] |
| 1066 | + |
| 1067 | + bob_keys = [ |
| 1068 | + new_okp_key(crv="Ed25519", kid="key1").serialize(private=True), |
| 1069 | + new_okp_key(crv="Ed25519", kid="key2").serialize(private=True), |
| 1070 | + new_okp_key(crv="Ed25519", kid="key3").serialize(private=True), |
| 1071 | + new_okp_key(crv="Ed25519", kid="key4").serialize(private=True), |
| 1072 | + ] |
| 1073 | + |
| 1074 | + kj1.add_kb("Alice", KeyBundle(keys=[alice_keys[0], alice_keys[1]])) |
| 1075 | + kj1.add_kb("Bob", KeyBundle(keys=[bob_keys[0], bob_keys[1]])) |
| 1076 | + |
| 1077 | + kj2.add_kb("Alice", KeyBundle(keys=[alice_keys[1], alice_keys[2], alice_keys[3]])) |
| 1078 | + kj2.add_kb("Bob", KeyBundle(keys=[bob_keys[0], bob_keys[1]])) |
| 1079 | + |
| 1080 | + kj = kj1 & kj2 |
1029 | 1081 |
|
1030 | | - keys1 = kj.get_issuer_keys(ISSUER) |
1031 | | - keys2 = kj[ISSUER].all_keys() |
1032 | | - assert keys1 == keys2 |
| 1082 | + assert len(kj["Alice"].all_keys()) == 1 |
| 1083 | + assert len(kj["Bob"].all_keys()) == 2 |
0 commit comments