x509 extension equality
diff --git a/src/cryptography/x509.py b/src/cryptography/x509.py
index ec2092b..325d6d6 100644
--- a/src/cryptography/x509.py
+++ b/src/cryptography/x509.py
@@ -278,6 +278,19 @@
         return ("<Extension(oid={0.oid}, critical={0.critical}, "
                 "value={0.value})>").format(self)
 
+    def __eq__(self, other):
+        if not isinstance(other, Extension):
+            return NotImplemented
+
+        return (
+            self.oid == other.oid and
+            self.critical == other.critical and
+            self.value == other.value
+        )
+
+    def __ne__(self, other):
+        return not self == other
+
 
 class ExtendedKeyUsage(object):
     def __init__(self, usages):
diff --git a/tests/test_x509_ext.py b/tests/test_x509_ext.py
index 72f2f9e..572aa30 100644
--- a/tests/test_x509_ext.py
+++ b/tests/test_x509_ext.py
@@ -38,6 +38,33 @@
             "_length=None)>)>"
         )
 
+    def test_eq(self):
+        ext1 = x509.Extension(
+            x509.ObjectIdentifier('1.2.3.4'), False, 'value'
+        )
+        ext2 = x509.Extension(
+            x509.ObjectIdentifier('1.2.3.4'), False, 'value'
+        )
+        assert ext1 == ext2
+
+    def test_ne(self):
+        ext1 = x509.Extension(
+            x509.ObjectIdentifier('1.2.3.4'), False, 'value'
+        )
+        ext2 = x509.Extension(
+            x509.ObjectIdentifier('1.2.3.5'), False, 'value'
+        )
+        ext3 = x509.Extension(
+            x509.ObjectIdentifier('1.2.3.4'), True, 'value'
+        )
+        ext4 = x509.Extension(
+            x509.ObjectIdentifier('1.2.3.4'), False, 'value4'
+        )
+        assert ext1 != ext2
+        assert ext1 != ext3
+        assert ext1 != ext4
+        assert ext1 != object()
+
 
 class TestNoticeReference(object):
     def test_notice_numbers_not_all_int(self):