add DSAWithNumbers subinterfaces
diff --git a/cryptography/hazmat/primitives/interfaces.py b/cryptography/hazmat/primitives/interfaces.py
index dd901aa..c375ce9 100644
--- a/cryptography/hazmat/primitives/interfaces.py
+++ b/cryptography/hazmat/primitives/interfaces.py
@@ -297,6 +297,15 @@
 
 
 @six.add_metaclass(abc.ABCMeta)
+class DSAParametersWithNumbers(DSAParameters):
+    @abc.abstractmethod
+    def parameter_numbers(self):
+        """
+        Returns a DSAParameterNumbers.
+        """
+
+
+@six.add_metaclass(abc.ABCMeta)
 class DSAPrivateKey(object):
     @abc.abstractproperty
     def key_size(self):
@@ -330,6 +339,15 @@
 
 
 @six.add_metaclass(abc.ABCMeta)
+class DSAPrivateKeyWithNumbers(DSAPrivateKey):
+    @abc.abstractmethod
+    def private_numbers(self):
+        """
+        Returns a DSAPrivateNumbers.
+        """
+
+
+@six.add_metaclass(abc.ABCMeta)
 class DSAPublicKey(object):
     @abc.abstractproperty
     def key_size(self):
@@ -351,6 +369,15 @@
 
 
 @six.add_metaclass(abc.ABCMeta)
+class DSAPublicKeyWithNumbers(DSAPublicKey):
+    @abc.abstractmethod
+    def public_numbers(self):
+        """
+        Returns a DSAPublicNumbers.
+        """
+
+
+@six.add_metaclass(abc.ABCMeta)
 class AsymmetricSignatureContext(object):
     @abc.abstractmethod
     def update(self, data):
diff --git a/docs/hazmat/primitives/interfaces.rst b/docs/hazmat/primitives/interfaces.rst
index 029c4c1..b8aca0c 100644
--- a/docs/hazmat/primitives/interfaces.rst
+++ b/docs/hazmat/primitives/interfaces.rst
@@ -287,6 +287,23 @@
         in the DSA signing and verification processes. Alias for :attr:`generator`.
 
 
+.. class:: DSAParametersWithNumbers
+
+    .. versionadded:: 0.5
+
+    Extends :class:`DSAParameters`.
+
+    .. method:: parameter_numbers()
+
+        Create a
+        :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParameterNumbers`
+        object.
+
+        :returns: A
+            :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParameterNumbers`
+            instance.
+
+
 .. class:: DSAPrivateKey
 
     .. versionadded:: 0.3
@@ -341,6 +358,23 @@
         The public key.
 
 
+.. class:: DSAPrivateKeyWithNumbers
+
+    .. versionadded:: 0.5
+
+    Extends :class:`DSAPrivateKey`.
+
+    .. method:: private_numbers()
+
+        Create a
+        :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateNumbers`
+        object.
+
+        :returns: A
+            :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateNumbers`
+            instance.
+
+
 .. class:: DSAPublicKey
 
     .. versionadded:: 0.3
@@ -387,6 +421,23 @@
             :class:`~cryptography.hazmat.primitives.interfaces.AsymmetricVerificationContext`
 
 
+.. class:: DSAPublicKeyWithNumbers
+
+    .. versionadded:: 0.5
+
+    Extends :class:`DSAPublicKey`.
+
+    .. method:: private_numbers()
+
+        Create a
+        :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicNumbers`
+        object.
+
+        :returns: A
+            :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicNumbers`
+            instance.
+
+
 .. class:: EllipticCurve
 
     .. versionadded:: 0.5