diff options
| author | David Reid <dreid@dreid.org> | 2014-05-30 14:15:29 -0700 | 
|---|---|---|
| committer | David Reid <dreid@dreid.org> | 2014-06-03 10:05:38 -0700 | 
| commit | a674afef93a23d5cf85e6c86e8c007cc338c37d5 (patch) | |
| tree | 86fb270fbf8b01377cdb31b2baf9a9b3e11c9ed3 /cryptography | |
| parent | 85936b2fbf496b8a93b71557573583985276bc29 (diff) | |
| download | cryptography-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.py | 9 | ||||
| -rw-r--r-- | cryptography/hazmat/backends/multibackend.py | 11 | ||||
| -rw-r--r-- | cryptography/hazmat/backends/openssl/backend.py | 34 | 
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() | 
