diff --git a/docs/x509/reference.rst b/docs/x509/reference.rst
index 29b8268..2f997ae 100644
--- a/docs/x509/reference.rst
+++ b/docs/x509/reference.rst
@@ -909,6 +909,13 @@
 
         Returns an instance of the extension type corresponding to the OID.
 
+.. class:: ExtensionType
+
+    .. versionadded:: 1.0
+
+    This is the interface against which all the following extension types are
+    registered.
+
 .. class:: KeyUsage
 
     .. versionadded:: 0.9
diff --git a/src/cryptography/x509.py b/src/cryptography/x509.py
index c8380b1..b8c6d4e 100644
--- a/src/cryptography/x509.py
+++ b/src/cryptography/x509.py
@@ -313,6 +313,16 @@
         return not self == other
 
 
+@six.add_metaclass(abc.ABCMeta)
+class ExtensionType(object):
+    @abc.abstractproperty
+    def oid(self):
+        """
+        Returns the oid associated with the given extension type.
+        """
+
+
+@utils.register_interface(ExtensionType)
 class ExtendedKeyUsage(object):
     oid = OID_EXTENDED_KEY_USAGE
 
@@ -343,10 +353,12 @@
         return not self == other
 
 
+@utils.register_interface(ExtensionType)
 class OCSPNoCheck(object):
     oid = OID_OCSP_NO_CHECK
 
 
+@utils.register_interface(ExtensionType)
 class BasicConstraints(object):
     oid = OID_BASIC_CONSTRAINTS
 
@@ -385,6 +397,7 @@
         return not self == other
 
 
+@utils.register_interface(ExtensionType)
 class KeyUsage(object):
     oid = OID_KEY_USAGE
 
@@ -470,6 +483,7 @@
         return not self == other
 
 
+@utils.register_interface(ExtensionType)
 class AuthorityInformationAccess(object):
     oid = OID_AUTHORITY_INFORMATION_ACCESS
 
@@ -536,6 +550,7 @@
     access_location = utils.read_only_property("_access_location")
 
 
+@utils.register_interface(ExtensionType)
 class CertificatePolicies(object):
     oid = OID_CERTIFICATE_POLICIES
 
@@ -675,6 +690,7 @@
     notice_numbers = utils.read_only_property("_notice_numbers")
 
 
+@utils.register_interface(ExtensionType)
 class SubjectKeyIdentifier(object):
     oid = OID_SUBJECT_KEY_IDENTIFIER
 
@@ -698,6 +714,7 @@
         return not self == other
 
 
+@utils.register_interface(ExtensionType)
 class NameConstraints(object):
     oid = OID_NAME_CONSTRAINTS
 
@@ -764,6 +781,7 @@
     excluded_subtrees = utils.read_only_property("_excluded_subtrees")
 
 
+@utils.register_interface(ExtensionType)
 class CRLDistributionPoints(object):
     oid = OID_CRL_DISTRIBUTION_POINTS
 
@@ -886,6 +904,7 @@
     remove_from_crl = "removeFromCRL"
 
 
+@utils.register_interface(ExtensionType)
 class InhibitAnyPolicy(object):
     oid = OID_INHIBIT_ANY_POLICY
 
@@ -1178,6 +1197,7 @@
         return not self == other
 
 
+@utils.register_interface(ExtensionType)
 class SubjectAlternativeName(object):
     oid = OID_SUBJECT_ALTERNATIVE_NAME
 
@@ -1206,6 +1226,7 @@
         return not self == other
 
 
+@utils.register_interface(ExtensionType)
 class IssuerAlternativeName(object):
     oid = OID_ISSUER_ALTERNATIVE_NAME
 
@@ -1234,6 +1255,7 @@
         return not self == other
 
 
+@utils.register_interface(ExtensionType)
 class AuthorityKeyIdentifier(object):
     oid = OID_AUTHORITY_KEY_IDENTIFIER
 
