aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2015-04-28 15:51:12 -0500
committerPaul Kehrer <paul.l.kehrer@gmail.com>2015-04-28 15:51:12 -0500
commit9ef13b9e23396f56420ef2aa3334d8c8af50bc73 (patch)
treed2098bc4b7b158994f876459a5df7b8224a24571 /src
parent929807e87b8a96a2a87aefd0eeb38a207fe4d3bf (diff)
parentb7c6029766ed066a2616343d82027472881ab0a3 (diff)
downloadcryptography-9ef13b9e23396f56420ef2aa3334d8c8af50bc73.tar.gz
cryptography-9ef13b9e23396f56420ef2aa3334d8c8af50bc73.tar.bz2
cryptography-9ef13b9e23396f56420ef2aa3334d8c8af50bc73.zip
Merge pull request #1795 from public/dh-backend-interfaces-2015
DH backend interfaces
Diffstat (limited to 'src')
-rw-r--r--src/cryptography/hazmat/backends/interfaces.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/cryptography/hazmat/backends/interfaces.py b/src/cryptography/hazmat/backends/interfaces.py
index 5224f5c7..eca7ddf4 100644
--- a/src/cryptography/hazmat/backends/interfaces.py
+++ b/src/cryptography/hazmat/backends/interfaces.py
@@ -273,3 +273,55 @@ class X509Backend(object):
"""
Load an X.509 CSR from PEM encoded data.
"""
+
+
+@six.add_metaclass(abc.ABCMeta)
+class DHBackend(object):
+ @abc.abstractmethod
+ def generate_dh_parameters(self, key_size):
+ """
+ Generate a DHParameters instance with a modulus of key_size bits.
+ """
+
+ @abc.abstractmethod
+ def generate_dh_private_key(self, parameters):
+ """
+ Generate a DHPrivateKey instance with parameters as a DHParameters
+ object.
+ """
+
+ @abc.abstractmethod
+ def generate_dh_private_key_and_parameters(self, key_size):
+ """
+ Generate a DHPrivateKey instance using key size only.
+ """
+
+ @abc.abstractmethod
+ def load_dh_private_numbers(self, numbers):
+ """
+ Returns a DHPrivateKey provider.
+ """
+
+ @abc.abstractmethod
+ def load_dh_public_numbers(self, numbers):
+ """
+ Returns a DHPublicKey provider.
+ """
+
+ @abc.abstractmethod
+ def load_dh_parameter_numbers(self, numbers):
+ """
+ Returns a DHParameters provider.
+ """
+
+ @abc.abstractmethod
+ def dh_exchange_algorithm_supported(self, exchange_algorithm):
+ """
+ Returns whether the exchange algorithm is supported by this backend.
+ """
+
+ @abc.abstractmethod
+ def dh_parameters_supported(self, p, g):
+ """
+ Returns whether the backend supports DH with these parameter values.
+ """