aboutsummaryrefslogtreecommitdiffstats
path: root/cryptography
diff options
context:
space:
mode:
authorDavid Reid <dreid@dreid.org>2014-05-30 14:15:29 -0700
committerDavid Reid <dreid@dreid.org>2014-06-03 10:05:38 -0700
commita674afef93a23d5cf85e6c86e8c007cc338c37d5 (patch)
tree86fb270fbf8b01377cdb31b2baf9a9b3e11c9ed3 /cryptography
parent85936b2fbf496b8a93b71557573583985276bc29 (diff)
downloadcryptography-a674afef93a23d5cf85e6c86e8c007cc338c37d5.tar.gz
cryptography-a674afef93a23d5cf85e6c86e8c007cc338c37d5.tar.bz2
cryptography-a674afef93a23d5cf85e6c86e8c007cc338c37d5.zip
Split load_rsa_numbers into load_rsa_private_numbers and load_rsa_public_numbers.
Diffstat (limited to 'cryptography')
-rw-r--r--cryptography/hazmat/backends/interfaces.py9
-rw-r--r--cryptography/hazmat/backends/multibackend.py11
-rw-r--r--cryptography/hazmat/backends/openssl/backend.py34
3 files changed, 34 insertions, 20 deletions
diff --git a/cryptography/hazmat/backends/interfaces.py b/cryptography/hazmat/backends/interfaces.py
index 19d6fb70..524e0a5b 100644
--- a/cryptography/hazmat/backends/interfaces.py
+++ b/cryptography/hazmat/backends/interfaces.py
@@ -142,11 +142,18 @@ class RSABackend(object):
generation.
"""
- def load_rsa_numbers(self, numbers):
+ @abc.abstractmethod
+ def load_rsa_private_numbers(self, numbers):
"""
Returns an RSAPrivateKey provider.
"""
+ @abc.abstractmethod
+ def load_rsa_public_numbers(self, numbers):
+ """
+ Returns an RSAPublicKey provider.
+ """
+
@six.add_metaclass(abc.ABCMeta)
class DSABackend(object):
diff --git a/cryptography/hazmat/backends/multibackend.py b/cryptography/hazmat/backends/multibackend.py
index 5acec333..f3c79376 100644
--- a/cryptography/hazmat/backends/multibackend.py
+++ b/cryptography/hazmat/backends/multibackend.py
@@ -178,9 +178,16 @@ class MultiBackend(object):
raise UnsupportedAlgorithm("RSA is not supported by the backend.",
_Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM)
- def load_rsa_numbers(self, numbers):
+ def load_rsa_private_numbers(self, numbers):
for b in self._filtered_backends(RSABackend):
- return b.load_rsa_numbers(numbers)
+ return b.load_rsa_private_numbers(numbers)
+
+ raise UnsupportedAlgorithm("RSA is not supported by the backend",
+ _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM)
+
+ def load_rsa_public_numbers(self, numbers):
+ for b in self._filtered_backends(RSABackend):
+ return b.load_rsa_public_numbers(numbers)
raise UnsupportedAlgorithm("RSA is not supported by the backend",
_Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM)
diff --git a/cryptography/hazmat/backends/openssl/backend.py b/cryptography/hazmat/backends/openssl/backend.py
index e5870f3e..ffe09663 100644
--- a/cryptography/hazmat/backends/openssl/backend.py
+++ b/cryptography/hazmat/backends/openssl/backend.py
@@ -377,23 +377,23 @@ class Backend(object):
return (public_exponent >= 3 and public_exponent & 1 != 0 and
key_size >= 512)
- def load_rsa_numbers(self, numbers):
- if isinstance(numbers, rsa.RSAPublicNumbers):
- return rsa.RSAPublicKey(
- public_exponent=numbers.e,
- modulus=numbers.n
- )
- elif isinstance(numbers, rsa.RSAPrivateNumbers):
- return rsa.RSAPrivateKey(
- p=numbers.p,
- q=numbers.q,
- private_exponent=numbers.d,
- dmp1=numbers.dmp1,
- dmq1=numbers.dmq1,
- iqmp=numbers.iqmp,
- public_exponent=numbers.public_numbers.e,
- modulus=numbers.public_numbers.n
- )
+ def load_rsa_private_numbers(self, numbers):
+ return rsa.RSAPrivateKey(
+ p=numbers.p,
+ q=numbers.q,
+ private_exponent=numbers.d,
+ dmp1=numbers.dmp1,
+ dmq1=numbers.dmq1,
+ iqmp=numbers.iqmp,
+ public_exponent=numbers.public_numbers.e,
+ modulus=numbers.public_numbers.n
+ )
+
+ def load_rsa_public_numbers(self, numbers):
+ return rsa.RSAPublicKey(
+ public_exponent=numbers.e,
+ modulus=numbers.n
+ )
def _new_evp_pkey(self):
evp_pkey = self._lib.EVP_PKEY_new()