diff --git a/src/cryptography/x509/extensions.py b/src/cryptography/x509/extensions.py
index f6957b9..0bfe6f9 100644
--- a/src/cryptography/x509/extensions.py
+++ b/src/cryptography/x509/extensions.py
@@ -554,6 +554,11 @@
     def __ne__(self, other):
         return not self == other
 
+    def __hash__(self):
+        return hash(
+            (self.require_explicit_policy, self.inhibit_policy_mapping)
+        )
+
     require_explicit_policy = utils.read_only_property(
         "_require_explicit_policy"
     )
@@ -1063,6 +1068,9 @@
     def __ne__(self, other):
         return not self == other
 
+    def __hash__(self):
+        return hash((self.oid, self.critical, self.value))
+
 
 class GeneralNames(object):
     def __init__(self, general_names):
diff --git a/tests/x509/test_x509_ext.py b/tests/x509/test_x509_ext.py
index 62ce905..db805aa 100644
--- a/tests/x509/test_x509_ext.py
+++ b/tests/x509/test_x509_ext.py
@@ -91,6 +91,25 @@
         assert ext1 != ext4
         assert ext1 != object()
 
+    def test_hash(self):
+        ext1 = x509.Extension(
+            ExtensionOID.BASIC_CONSTRAINTS,
+            False,
+            x509.BasicConstraints(ca=False, path_length=None)
+        )
+        ext2 = x509.Extension(
+            ExtensionOID.BASIC_CONSTRAINTS,
+            False,
+            x509.BasicConstraints(ca=False, path_length=None)
+        )
+        ext3 = x509.Extension(
+            ExtensionOID.BASIC_CONSTRAINTS,
+            False,
+            x509.BasicConstraints(ca=True, path_length=None)
+        )
+        assert hash(ext1) == hash(ext2)
+        assert hash(ext1) != hash(ext3)
+
 
 class TestTLSFeature(object):
     def test_not_enum_type(self):
@@ -2677,6 +2696,13 @@
         assert pc != pc3
         assert pc != object()
 
+    def test_hash(self):
+        pc = x509.PolicyConstraints(2, 1)
+        pc2 = x509.PolicyConstraints(2, 1)
+        pc3 = x509.PolicyConstraints(2, None)
+        assert hash(pc) == hash(pc2)
+        assert hash(pc) != hash(pc3)
+
 
 @pytest.mark.requires_backend_interface(interface=RSABackend)
 @pytest.mark.requires_backend_interface(interface=X509Backend)
