diff options
-rw-r--r-- | src/cryptography/x509.py | 9 | ||||
-rw-r--r-- | tests/test_x509_ext.py | 19 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/cryptography/x509.py b/src/cryptography/x509.py index 5eca5d64..2b7ec317 100644 --- a/src/cryptography/x509.py +++ b/src/cryptography/x509.py @@ -933,6 +933,15 @@ class SubjectAlternativeName(object): def __repr__(self): return "<SubjectAlternativeName({0})>".format(self._general_names) + def __eq__(self, other): + if not isinstance(other, SubjectAlternativeName): + return NotImplemented + + return self._general_names == other._general_names + + def __ne__(self, other): + return not self == other + class AuthorityKeyIdentifier(object): def __init__(self, key_identifier, authority_cert_issuer, diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py index e1312b6c..15f06664 100644 --- a/tests/test_x509_ext.py +++ b/tests/test_x509_ext.py @@ -1128,6 +1128,25 @@ class TestSubjectAlternativeName(object): "<SubjectAlternativeName([<DNSName(value=cryptography.io)>])>" ) + def test_eq(self): + san = x509.SubjectAlternativeName( + [x509.DNSName(u"cryptography.io")] + ) + san2 = x509.SubjectAlternativeName( + [x509.DNSName(u"cryptography.io")] + ) + assert san == san2 + + def test_ne(self): + san = x509.SubjectAlternativeName( + [x509.DNSName(u"cryptography.io")] + ) + san2 = x509.SubjectAlternativeName( + [x509.RFC822Name(u"admin@cryptography.io")] + ) + assert san != san2 + assert san != object() + @pytest.mark.requires_backend_interface(interface=RSABackend) @pytest.mark.requires_backend_interface(interface=X509Backend) |