Merge remote-tracking branch 'upstream/master'
diff --git a/cryptography/hazmat/primitives/interfaces.py b/cryptography/hazmat/primitives/interfaces.py
index 1169616..4d9e787 100644
--- a/cryptography/hazmat/primitives/interfaces.py
+++ b/cryptography/hazmat/primitives/interfaces.py
@@ -287,6 +287,99 @@
         """
 
 
+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 key_size(self):
+        """
+        The bit length of the prime modulus.
+        """
+
+    @abc.abstractmethod
+    def public_key(self):
+        """
+        The DSAPublicKey associated with this private key.
+        """
+
+    @abc.abstractproperty
+    def x(self):
+        """
+        The private key "x" in the DSA structure.
+        """
+
+    @abc.abstractproperty
+    def y(self):
+        """
+        The integer value of y.
+        """
+
+    @abc.abstractproperty
+    def params(self):
+        """
+        The DSAParams object associated with this private key.
+        """
+
+
+class DSAPublicKey(six.with_metaclass(abc.ABCMeta)):
+    @abc.abstractproperty
+    def y(self):
+        """
+        The integer value of y.
+        """
+
+    @abc.abstractproperty
+    def params(self):
+        """
+        The DSAParams object associated with this public key.
+        """
+
+
 class AsymmetricSignatureContext(six.with_metaclass(abc.ABCMeta)):
     @abc.abstractmethod
     def update(self, data):