aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Stapleton <alexs@prol.etari.at>2014-07-09 19:13:52 +0100
committerAlex Stapleton <alexs@prol.etari.at>2014-07-09 19:13:52 +0100
commite08548d1c3f2ab03c0859af315bb8048191b79b8 (patch)
tree4d795af767f27949ef071dc1c9a032c4bc65801a
parent728b7e4c77c5075a36308781355adc0bc68bde94 (diff)
parent3a333048451b99d71dcba92d024a4a3841e68acc (diff)
downloadcryptography-e08548d1c3f2ab03c0859af315bb8048191b79b8.tar.gz
cryptography-e08548d1c3f2ab03c0859af315bb8048191b79b8.tar.bz2
cryptography-e08548d1c3f2ab03c0859af315bb8048191b79b8.zip
Merge pull request #1236 from reaperhulk/fix-1234
add TraditionalOpenSSLSerializationBackend to MultiBackend
-rw-r--r--cryptography/hazmat/backends/multibackend.py15
-rw-r--r--tests/hazmat/backends/test_multibackend.py18
2 files changed, 31 insertions, 2 deletions
diff --git a/cryptography/hazmat/backends/multibackend.py b/cryptography/hazmat/backends/multibackend.py
index 6741f045..35e2a093 100644
--- a/cryptography/hazmat/backends/multibackend.py
+++ b/cryptography/hazmat/backends/multibackend.py
@@ -17,7 +17,8 @@ from cryptography import utils
from cryptography.exceptions import UnsupportedAlgorithm, _Reasons
from cryptography.hazmat.backends.interfaces import (
CMACBackend, CipherBackend, DSABackend, EllipticCurveBackend, HMACBackend,
- HashBackend, PBKDF2HMACBackend, PKCS8SerializationBackend, RSABackend
+ HashBackend, PBKDF2HMACBackend, PKCS8SerializationBackend,
+ RSABackend, TraditionalOpenSSLSerializationBackend
)
@@ -28,6 +29,7 @@ from cryptography.hazmat.backends.interfaces import (
@utils.register_interface(PBKDF2HMACBackend)
@utils.register_interface(PKCS8SerializationBackend)
@utils.register_interface(RSABackend)
+@utils.register_interface(TraditionalOpenSSLSerializationBackend)
@utils.register_interface(DSABackend)
@utils.register_interface(EllipticCurveBackend)
class MultiBackend(object):
@@ -312,3 +314,14 @@ class MultiBackend(object):
"This backend does not support this key serialization.",
_Reasons.UNSUPPORTED_SERIALIZATION
)
+
+ def load_traditional_openssl_pem_private_key(self, data, password):
+ for b in self._filtered_backends(
+ TraditionalOpenSSLSerializationBackend
+ ):
+ return b.load_traditional_openssl_pem_private_key(data, password)
+
+ raise UnsupportedAlgorithm(
+ "This backend does not support this key serialization.",
+ _Reasons.UNSUPPORTED_SERIALIZATION
+ )
diff --git a/tests/hazmat/backends/test_multibackend.py b/tests/hazmat/backends/test_multibackend.py
index 3be8371f..de5f1fde 100644
--- a/tests/hazmat/backends/test_multibackend.py
+++ b/tests/hazmat/backends/test_multibackend.py
@@ -19,7 +19,8 @@ from cryptography.exceptions import (
)
from cryptography.hazmat.backends.interfaces import (
CMACBackend, CipherBackend, DSABackend, EllipticCurveBackend, HMACBackend,
- HashBackend, PBKDF2HMACBackend, PKCS8SerializationBackend, RSABackend
+ HashBackend, PBKDF2HMACBackend, PKCS8SerializationBackend, RSABackend,
+ TraditionalOpenSSLSerializationBackend
)
from cryptography.hazmat.backends.multibackend import MultiBackend
from cryptography.hazmat.primitives import cmac, hashes, hmac
@@ -198,6 +199,12 @@ class DummyPKCS8SerializationBackend(object):
pass
+@utils.register_interface(TraditionalOpenSSLSerializationBackend)
+class DummyTraditionalOpenSSLSerializationBackend(object):
+ def load_traditional_openssl_pem_private_key(self, data, password):
+ pass
+
+
class TestMultiBackend(object):
def test_ciphers(self):
backend = MultiBackend([
@@ -486,3 +493,12 @@ class TestMultiBackend(object):
backend = MultiBackend([])
with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_SERIALIZATION):
backend.load_pkcs8_pem_private_key(b"keydata", None)
+
+ def test_traditional_openssl_serialization_backend(self):
+ backend = MultiBackend([DummyTraditionalOpenSSLSerializationBackend()])
+
+ backend.load_traditional_openssl_pem_private_key(b"keydata", None)
+
+ backend = MultiBackend([])
+ with raises_unsupported_algorithm(_Reasons.UNSUPPORTED_SERIALIZATION):
+ backend.load_traditional_openssl_pem_private_key(b"keydata", None)