implement hash on basicconstraints
diff --git a/src/cryptography/x509/extensions.py b/src/cryptography/x509/extensions.py
index 4dee72f..ca323a3 100644
--- a/src/cryptography/x509/extensions.py
+++ b/src/cryptography/x509/extensions.py
@@ -342,6 +342,9 @@
     def __ne__(self, other):
         return not self == other
 
+    def __hash__(self):
+        return hash((self.ca, self.path_length))
+
 
 @utils.register_interface(ExtensionType)
 class CRLDistributionPoints(object):
diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py
index 67081b2..20d44c5 100644
--- a/tests/test_x509_ext.py
+++ b/tests/test_x509_ext.py
@@ -837,6 +837,11 @@
             "<BasicConstraints(ca=True, path_length=None)>"
         )
 
+    def test_hash(self):
+        na = x509.BasicConstraints(ca=True, path_length=None)
+        na2 = x509.BasicConstraints(ca=True, path_length=None)
+        assert hash(na) == hash(na2)
+
     def test_eq(self):
         na = x509.BasicConstraints(ca=True, path_length=None)
         na2 = x509.BasicConstraints(ca=True, path_length=None)