aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2015-05-13 10:00:41 -0500
committerPaul Kehrer <paul.l.kehrer@gmail.com>2015-05-13 10:00:41 -0500
commit58cc3973cf3c3e83d5cb9e1d29e1a4fd9b88eff7 (patch)
tree40ff2be75b7d52054f4df4f19d1f8f9ef43b3199
parent91ea3a91fe67ecf2577b3f88955c4baad4d4f131 (diff)
downloadcryptography-58cc3973cf3c3e83d5cb9e1d29e1a4fd9b88eff7.tar.gz
cryptography-58cc3973cf3c3e83d5cb9e1d29e1a4fd9b88eff7.tar.bz2
cryptography-58cc3973cf3c3e83d5cb9e1d29e1a4fd9b88eff7.zip
add eq/ne support to SubjectAlternativeName
-rw-r--r--src/cryptography/x509.py9
-rw-r--r--tests/test_x509_ext.py19
2 files changed, 28 insertions, 0 deletions
diff --git a/src/cryptography/x509.py b/src/cryptography/x509.py
index b0a4a352..8e9c1aca 100644
--- a/src/cryptography/x509.py
+++ b/src/cryptography/x509.py
@@ -914,6 +914,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 2852776b..5d54da1e 100644
--- a/tests/test_x509_ext.py
+++ b/tests/test_x509_ext.py
@@ -1077,6 +1077,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)