From cb0e50c4cc725b9aec3d7fcbd0f5176204ef4eb5 Mon Sep 17 00:00:00 2001 From: Jakob Schlyter Date: Fri, 11 Jul 2025 17:41:40 +0200 Subject: [PATCH] Fix EC key compare (and test RSA eq) --- src/cryptojwt/jwk/ec.py | 14 ++++++++++++++ tests/test_02_jwk.py | 16 ++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/cryptojwt/jwk/ec.py b/src/cryptojwt/jwk/ec.py index 0b067c0..25b84cd 100644 --- a/src/cryptojwt/jwk/ec.py +++ b/src/cryptojwt/jwk/ec.py @@ -243,6 +243,20 @@ def __eq__(self, other): if self.__class__ != other.__class__: return False + if self.use and other.use: + if self.use != other.use: + return False + + if self.kid: + if other.kid: + if self.kid != other.kid: + return False + else: + return False + else: + if other.kid: + return False + if cmp_keys(self.pub_key, other.pub_key, ec.EllipticCurvePublicKey): if other.private_key(): if cmp_keys(self.priv_key, other.priv_key, ec.EllipticCurvePrivateKey): diff --git a/tests/test_02_jwk.py b/tests/test_02_jwk.py index 03ae60e..73c782e 100755 --- a/tests/test_02_jwk.py +++ b/tests/test_02_jwk.py @@ -216,6 +216,22 @@ def test_cmp_eq_ec(): assert _key1 == _key2 +def test_cmp_eq_ec_kid(): + ec_key = new_ec_key("P-256") + _key1 = ECKey(priv_key=ec_key.priv_key, kid="foo") + _key2 = ECKey(priv_key=ec_key.priv_key, kid="bar") + + assert _key1 != _key2 + + +def test_cmp_eq_rsa_kid(): + rsa_key = new_rsa_key() + _key1 = RSAKey(priv_key=rsa_key.priv_key, kid="foo") + _key2 = RSAKey(priv_key=rsa_key.priv_key, kid="bar") + + assert _key1 != _key2 + + def test_get_key(): ec_key = new_ec_key("P-256") asym_private_key = ECKey(priv_key=ec_key.priv_key)