Add DSA interfaces
diff --git a/cryptography/hazmat/primitives/interfaces.py b/cryptography/hazmat/primitives/interfaces.py
index 1169616..663f965 100644
--- a/cryptography/hazmat/primitives/interfaces.py
+++ b/cryptography/hazmat/primitives/interfaces.py
@@ -287,6 +287,194 @@
         """
 
 
+class DSAParams(six.with_metaclass(abc.ABCMeta)):
+    @abc.abstractproperty
+    def modulus(self):
+        """
+        The prime modulus that's used in generating the DSA keypair.
+        """
+
+    @abc.abstractproperty
+    def divisor(self):
+        """
+        The prime divisor of (p-1) that's used in generating the DSA keypair.
+        """
+
+    @abc.abstractproperty
+    def generator(self):
+        """
+        The generator that is used in generating the DSA keypair.
+        """
+
+    @abc.abstractmethod
+    def generate(self):
+        """
+        Generate DSAPrivateKey from the object's parameters
+        """
+
+    @abc.abstractproperty
+    def p(self):
+        """
+        The prime modulus that's used in generating the DSA keypair.
+        Alias for modulus.
+        """
+
+    @abc.abstractproperty
+    def q(self):
+        """
+        The prime divisor of (p-1) that's used in generating the DSA keypair.
+        Alias for divisor.
+        """
+
+    @abc.abstractproperty
+    def g(self):
+        """
+        The generator that is used in generating the DSA keypair.
+        Alias for generator.
+        """
+
+
+class DSAPrivateKey(six.with_metaclass(abc.ABCMeta)):
+    @abc.abstractproperty
+    def modulus(self):
+        """
+        The prime modulus that's used in generating the DSA keypair.
+        """
+
+    @abc.abstractproperty
+    def divisor(self):
+        """
+        The prime divisor of (p-1) that's used in generating the DSA keypair.
+        """
+
+    @abc.abstractproperty
+    def generator(self):
+        """
+        The generator that is used in generating the DSA keypair.
+        """
+
+    @abc.abstractproperty
+    def modulus_length(self):
+        """
+        The bit length of the prime modulus.
+        """
+
+    @abc.abstractproperty
+    def divisor_length(self):
+        """
+        The bit length of the divisor.
+        """
+
+    @abc.abstractproperty
+    def priv_key(self):
+        """
+        The private key in the DSA structure.
+        """
+
+    @abc.abstractproperty
+    def public_key(self):
+        """
+        The DSAPublicKey associated with this private key.
+        """
+
+    @abc.abstractproperty
+    def p(self):
+        """
+        The prime modulus that's used in generating the DSA keypair.
+        Alias for modulus.
+        """
+
+    @abc.abstractproperty
+    def q(self):
+        """
+        The prime divisor of (p-1) that's used in generating the DSA keypair.
+        Alias for divisor.
+        """
+
+    @abc.abstractproperty
+    def g(self):
+        """
+        The generator that is used in generating the DSA keypair.
+        Alias for generator.
+        """
+
+    @abc.abstractproperty
+    def L(self):
+        """
+        The bit length of the prime modulus. Alias for modulus_length.
+        """
+
+    @abc.abstractproperty
+    def N(self):
+        """
+        The bit length of the divisor. Alias for divisor_length.
+        """
+
+    @abc.abstractproperty
+    def y(self):
+        """
+        The DSAPublicKey associated with this private key.
+        Alias for public_key.
+        """
+
+    @abc.abstractproperty
+    def params(self):
+        """
+        The params associated with a DSA keypair
+        """
+
+
+class DSAPublicKey(six.with_metaclass(abc.ABCMeta)):
+    @abc.abstractproperty
+    def modulus(self):
+        """
+        The prime modulus that's used in generating the DSA keypair.
+        """
+
+    @abc.abstractproperty
+    def divisor(self):
+        """
+        The prime divisor of (p-1) that's used in generating the DSA keypair.
+        """
+
+    @abc.abstractproperty
+    def generator(self):
+        """
+        The generator that is used in generating the DSA keypair.
+        """
+
+    @abc.abstractproperty
+    def pub_key(self):
+        """
+        The pub_key that's in the DSA structure, also known as y.
+        """
+    @abc.abstractproperty
+    def p(self):
+        """
+        The prime modulus that's used in generating the DSA keypair.
+        Alias for modulus.
+        """
+
+    @abc.abstractproperty
+    def q(self):
+        """
+        The prime divisor of (p-1) that's used in generating the DSA keypair.
+        Alias for divisor.
+        """
+
+    @abc.abstractproperty
+    def g(self):
+        """
+        The generator that is used in generating the DSA keypair.
+        Alias for generator.
+        """
+
+    @abc.abstractproperty
+    def params(self):
+        """
+        The params associated with a DSA keypair
+        """
+
 class AsymmetricSignatureContext(six.with_metaclass(abc.ABCMeta)):
     @abc.abstractmethod
     def update(self, data):