diff options
| author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2014-07-07 13:56:48 -0500 |
|---|---|---|
| committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2014-07-07 13:56:48 -0500 |
| commit | cc5d1bf129c7e1a41906101fd1cb142b74765303 (patch) | |
| tree | b8e749384daac7c551b375266ffa1f83ad3e05e4 /cryptography | |
| parent | e4b1e854e0482ae4bc363f7938ad5b214c124d9f (diff) | |
| download | cryptography-cc5d1bf129c7e1a41906101fd1cb142b74765303.tar.gz cryptography-cc5d1bf129c7e1a41906101fd1cb142b74765303.tar.bz2 cryptography-cc5d1bf129c7e1a41906101fd1cb142b74765303.zip | |
add PKCS8SerializationBackend support to MultiBackend
Diffstat (limited to 'cryptography')
| -rw-r--r-- | cryptography/exceptions.py | 1 | ||||
| -rw-r--r-- | cryptography/hazmat/backends/multibackend.py | 15 |
2 files changed, 15 insertions, 1 deletions
diff --git a/cryptography/exceptions.py b/cryptography/exceptions.py index c64b67f4..3ccfaf51 100644 --- a/cryptography/exceptions.py +++ b/cryptography/exceptions.py @@ -22,6 +22,7 @@ class _Reasons(object): UNSUPPORTED_MGF = object() UNSUPPORTED_PUBLIC_KEY_ALGORITHM = object() UNSUPPORTED_ELLIPTIC_CURVE = object() + UNSUPPORTED_KEY_FORMAT = object() class UnsupportedAlgorithm(Exception): diff --git a/cryptography/hazmat/backends/multibackend.py b/cryptography/hazmat/backends/multibackend.py index 800c3503..c06d2431 100644 --- a/cryptography/hazmat/backends/multibackend.py +++ b/cryptography/hazmat/backends/multibackend.py @@ -17,7 +17,7 @@ from cryptography import utils from cryptography.exceptions import UnsupportedAlgorithm, _Reasons from cryptography.hazmat.backends.interfaces import ( CMACBackend, CipherBackend, DSABackend, EllipticCurveBackend, HMACBackend, - HashBackend, PBKDF2HMACBackend, RSABackend + HashBackend, PBKDF2HMACBackend, PKCS8SerializationBackend, RSABackend ) @@ -26,6 +26,7 @@ from cryptography.hazmat.backends.interfaces import ( @utils.register_interface(HashBackend) @utils.register_interface(HMACBackend) @utils.register_interface(PBKDF2HMACBackend) +@utils.register_interface(PKCS8SerializationBackend) @utils.register_interface(RSABackend) @utils.register_interface(DSABackend) @utils.register_interface(EllipticCurveBackend) @@ -302,3 +303,15 @@ class MultiBackend(object): "This backend does not support this elliptic curve.", _Reasons.UNSUPPORTED_ELLIPTIC_CURVE ) + + def load_pkcs8_pem_private_key(self, data, password): + for b in self._filtered_backends(PKCS8SerializationBackend): + try: + return b.load_pkcs8_pem_private_key(data, password) + except UnsupportedAlgorithm: + continue + + raise UnsupportedAlgorithm( + "This backend does not support this key format.", + _Reasons.UNSUPPORTED_KEY_FORMAT + ) |
