Refs #2578 -- implement __hash__ on SubjectKeyIdentifier
diff --git a/src/cryptography/x509/extensions.py b/src/cryptography/x509/extensions.py
index 2363d2b..5ef7a28 100644
--- a/src/cryptography/x509/extensions.py
+++ b/src/cryptography/x509/extensions.py
@@ -234,6 +234,9 @@
def __ne__(self, other):
return not self == other
+ def __hash__(self):
+ return hash(self.digest)
+
@utils.register_interface(ExtensionType)
class AuthorityInformationAccess(object):
diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py
index 49a3433..0f5d782 100644
--- a/tests/test_x509_ext.py
+++ b/tests/test_x509_ext.py
@@ -656,6 +656,20 @@
assert ski != ski2
assert ski != object()
+ def test_hash(self):
+ ski1 = x509.SubjectKeyIdentifier(
+ binascii.unhexlify(b"092384932230498bc980aa8098456f6ff7ff3ac9")
+ )
+ ski2 = x509.SubjectKeyIdentifier(
+ binascii.unhexlify(b"092384932230498bc980aa8098456f6ff7ff3ac9")
+ )
+ ski3 = x509.SubjectKeyIdentifier(
+ binascii.unhexlify(b"aa8098456f6ff7ff3ac9092384932230498bc980")
+ )
+
+ assert hash(ski1) == hash(ski2)
+ assert hash(ski1) != hash(ski3)
+
class TestAuthorityKeyIdentifier(object):
def test_authority_cert_issuer_not_generalname(self):