diff options
-rw-r--r-- | src/cryptography/x509.py | 18 | ||||
-rw-r--r-- | tests/test_x509_ext.py | 15 |
2 files changed, 28 insertions, 5 deletions
diff --git a/src/cryptography/x509.py b/src/cryptography/x509.py index b22ac8be..a37e2d08 100644 --- a/src/cryptography/x509.py +++ b/src/cryptography/x509.py @@ -277,11 +277,10 @@ class Extension(object): class ExtendedKeyUsage(object): def __init__(self, usages): - for oid in usages: - if not isinstance(oid, ObjectIdentifier): - raise TypeError( - "Every item in the usages list must be an ObjectIdentifier" - ) + if not all(isinstance(x, ObjectIdentifier) for x in usages): + raise TypeError( + "Every item in the usages list must be an ObjectIdentifier" + ) self._usages = usages @@ -294,6 +293,15 @@ class ExtendedKeyUsage(object): def __repr__(self): return "<ExtendedKeyUsage({0})>".format(self._usages) + def __eq__(self, other): + if not isinstance(other, ExtendedKeyUsage): + return NotImplemented + + return self._usages == other._usages + + def __ne__(self, other): + return not self == other + class BasicConstraints(object): def __init__(self, ca, path_length): diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py index c1d51e5e..05734b42 100644 --- a/tests/test_x509_ext.py +++ b/tests/test_x509_ext.py @@ -325,6 +325,21 @@ class TestExtendedKeyUsage(object): "tAuth)>])>" ) + def test_eq(self): + eku = x509.ExtendedKeyUsage([ + x509.ObjectIdentifier("1.3.6"), x509.ObjectIdentifier("1.3.7") + ]) + eku2 = x509.ExtendedKeyUsage([ + x509.ObjectIdentifier("1.3.6"), x509.ObjectIdentifier("1.3.7") + ]) + assert eku == eku2 + + def test_ne(self): + eku = x509.ExtendedKeyUsage([x509.ObjectIdentifier("1.3.6")]) + eku2 = x509.ExtendedKeyUsage([x509.ObjectIdentifier("1.3.6.1")]) + assert eku != eku2 + assert eku != object() + @pytest.mark.requires_backend_interface(interface=RSABackend) @pytest.mark.requires_backend_interface(interface=X509Backend) |