diff options
| author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2014-06-27 09:15:07 -0600 |
|---|---|---|
| committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2014-06-27 09:15:07 -0600 |
| commit | dacb5f9951064d19ac69c1198985af136f71a6db (patch) | |
| tree | f40e491487856a46a2fd93167ab24fdaf07412c8 /cryptography | |
| parent | a44338b355a628ba7d732063551650cd9f8b2cb8 (diff) | |
| download | cryptography-dacb5f9951064d19ac69c1198985af136f71a6db.tar.gz cryptography-dacb5f9951064d19ac69c1198985af136f71a6db.tar.bz2 cryptography-dacb5f9951064d19ac69c1198985af136f71a6db.zip | |
add generate_private_key to DSAParameters + add a new function to dsa
dsa.generate_private_key(key_size, backend) will allow you to generate a
new DSA key and implicitly generate new parameters. This streamlines the
common case and will be an avenue to support future backends that don't
allow independent generation of DSAParameters (e.g. CommonCrypto)
Diffstat (limited to 'cryptography')
| -rw-r--r-- | cryptography/hazmat/backends/interfaces.py | 6 | ||||
| -rw-r--r-- | cryptography/hazmat/backends/openssl/backend.py | 4 | ||||
| -rw-r--r-- | cryptography/hazmat/backends/openssl/dsa.py | 3 | ||||
| -rw-r--r-- | cryptography/hazmat/primitives/asymmetric/dsa.py | 4 | ||||
| -rw-r--r-- | cryptography/hazmat/primitives/interfaces.py | 6 |
5 files changed, 20 insertions, 3 deletions
diff --git a/cryptography/hazmat/backends/interfaces.py b/cryptography/hazmat/backends/interfaces.py index e4faf32c..70168a01 100644 --- a/cryptography/hazmat/backends/interfaces.py +++ b/cryptography/hazmat/backends/interfaces.py @@ -171,6 +171,12 @@ class DSABackend(object): """ @abc.abstractmethod + def generate_dsa_private_key_with_key_size(self, key_size): + """ + Generate an DSAPrivateKey instance using key size only. + """ + + @abc.abstractmethod def create_dsa_signature_ctx(self, private_key, algorithm): """ Returns an object conforming to the AsymmetricSignatureContext diff --git a/cryptography/hazmat/backends/openssl/backend.py b/cryptography/hazmat/backends/openssl/backend.py index 6245e8e4..82bdd7cd 100644 --- a/cryptography/hazmat/backends/openssl/backend.py +++ b/cryptography/hazmat/backends/openssl/backend.py @@ -626,6 +626,10 @@ class Backend(object): return _DSAPrivateKey(self, ctx) + def generate_dsa_private_key_with_key_size(self, key_size): + parameters = self.generate_dsa_parameters(key_size) + return self.generate_dsa_private_key(parameters) + def create_dsa_signature_ctx(self, private_key, algorithm): dsa_cdata = self._dsa_cdata_from_private_key(private_key) key = _DSAPrivateKey(self, dsa_cdata) diff --git a/cryptography/hazmat/backends/openssl/dsa.py b/cryptography/hazmat/backends/openssl/dsa.py index d492372f..5e7a26ff 100644 --- a/cryptography/hazmat/backends/openssl/dsa.py +++ b/cryptography/hazmat/backends/openssl/dsa.py @@ -97,6 +97,9 @@ class _DSAParameters(object): g=self._backend._bn_to_int(self._dsa_cdata.g) ) + def generate_private_key(self): + return self._backend.generate_dsa_private_key(self) + @utils.register_interface(DSAPrivateKeyWithNumbers) class _DSAPrivateKey(object): diff --git a/cryptography/hazmat/primitives/asymmetric/dsa.py b/cryptography/hazmat/primitives/asymmetric/dsa.py index 527b6bbc..08bdad3e 100644 --- a/cryptography/hazmat/primitives/asymmetric/dsa.py +++ b/cryptography/hazmat/primitives/asymmetric/dsa.py @@ -25,8 +25,8 @@ def generate_parameters(key_size, backend): return backend.generate_dsa_parameters(key_size) -def generate_private_key(parameters): - return parameters._backend.generate_dsa_private_key(parameters) +def generate_private_key(key_size, backend): + return backend.generate_dsa_private_key_with_key_size(key_size) def _check_dsa_parameters(parameters): diff --git a/cryptography/hazmat/primitives/interfaces.py b/cryptography/hazmat/primitives/interfaces.py index ef8640c2..d60f9e0e 100644 --- a/cryptography/hazmat/primitives/interfaces.py +++ b/cryptography/hazmat/primitives/interfaces.py @@ -251,7 +251,11 @@ class RSAPublicKeyWithNumbers(RSAPublicKey): @six.add_metaclass(abc.ABCMeta) class DSAParameters(object): - pass + @abc.abstractmethod + def generate_private_key(self): + """ + Generates and returns a DSAPrivateKey. + """ @six.add_metaclass(abc.ABCMeta) |
