|
9 | 9 | import pytest |
10 | 10 | from cryptography.hazmat.primitives.asymmetric import ec, ed25519, rsa |
11 | 11 |
|
12 | | -from cryptojwt.exception import DeSerializationNotPossible, UnsupportedAlgorithm, WrongUsage |
| 12 | +from cryptojwt.exception import ( |
| 13 | + DeSerializationNotPossible, |
| 14 | + UnsupportedAlgorithm, |
| 15 | + WrongUsage, |
| 16 | +) |
13 | 17 | from cryptojwt.jwk import JWK, certificate_fingerprint, pem_hash, pems_to_x5c |
14 | 18 | from cryptojwt.jwk.ec import ECKey, new_ec_key |
15 | 19 | from cryptojwt.jwk.hmac import SYMKey, new_sym_key, sha256_digest |
@@ -735,7 +739,11 @@ def test_import_public_key_from_pem_file(filename, key_type): |
735 | 739 | assert isinstance(pub_key, key_type) |
736 | 740 |
|
737 | 741 |
|
738 | | -OKPKEY = {"crv": "Ed25519", "kty": "OKP", "x": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo"} |
| 742 | +OKPKEY = { |
| 743 | + "crv": "Ed25519", |
| 744 | + "kty": "OKP", |
| 745 | + "x": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo", |
| 746 | +} |
739 | 747 | OKPKEY_SHA256 = "kPrK_qmxVWaYVA9wwBF6Iuo3vVzz7TxHCTwXBygrS4k" |
740 | 748 |
|
741 | 749 |
|
@@ -809,3 +817,30 @@ def test_key_from_jwk_dict_okp_ed448(): |
809 | 817 | _key = key_from_jwk_dict(jwk) |
810 | 818 | assert isinstance(_key, OKPKey) |
811 | 819 | assert _key.has_private_key() |
| 820 | + |
| 821 | + |
| 822 | +def test_jwk_set(): |
| 823 | + keyset: set[JWK] = set() |
| 824 | + |
| 825 | + key_a = new_ec_key("P-256", kid="key_a") |
| 826 | + key_b = new_ec_key("P-256", kid="key_b") |
| 827 | + key_c = new_ec_key("P-256", kid="key_b") |
| 828 | + |
| 829 | + key1 = ECKey(**key_a.serialize()) |
| 830 | + key2 = ECKey(**key_b.serialize()) |
| 831 | + key3 = ECKey(**key_a.serialize()) |
| 832 | + key4 = ECKey(**key_c.serialize()) |
| 833 | + |
| 834 | + keyset.add(key1) |
| 835 | + keyset.add(key1) |
| 836 | + keyset.add(key2) |
| 837 | + keyset.add(key2) |
| 838 | + assert len(keyset) == 2 |
| 839 | + |
| 840 | + keyset.add(key3) # should not add a new item since key1 == key3 |
| 841 | + assert len(keyset) == 2 |
| 842 | + |
| 843 | + assert key1 in keyset |
| 844 | + assert key2 in keyset |
| 845 | + assert key3 in keyset |
| 846 | + assert key4 not in keyset |
0 commit comments