46 lines
1.5 KiB
ReStructuredText
46 lines
1.5 KiB
ReStructuredText
.. hazmat::
|
|
|
|
MultiBackend
|
|
============
|
|
|
|
.. currentmodule:: cryptography.hazmat.backends.multibackend
|
|
|
|
.. class:: MultiBackend(backends)
|
|
|
|
.. versionadded:: 0.2
|
|
|
|
This class allows you to combine multiple backends into a single backend
|
|
that offers the combined features of all of its constituents.
|
|
|
|
.. testsetup::
|
|
|
|
from cryptography import utils
|
|
from cryptography.exceptions import UnsupportedAlgorithm, _Reasons
|
|
from cryptography.hazmat.backends.interfaces import HashBackend
|
|
from cryptography.hazmat.backends.openssl.backend import backend as backend2
|
|
|
|
@utils.register_interface(HashBackend)
|
|
class DummyHashBackend(object):
|
|
def hash_supported(self, algorithm):
|
|
return False
|
|
|
|
def create_hash_ctx(self, algorithm):
|
|
raise UnsupportedAlgorithm("", _Reasons.UNSUPPORTED_HASH)
|
|
|
|
backend1 = DummyHashBackend()
|
|
|
|
.. doctest::
|
|
|
|
>>> from cryptography.hazmat.backends.multibackend import MultiBackend
|
|
>>> from cryptography.hazmat.primitives import hashes
|
|
>>> backend1.hash_supported(hashes.SHA256())
|
|
False
|
|
>>> backend2.hash_supported(hashes.SHA256())
|
|
True
|
|
>>> multi_backend = MultiBackend([backend1, backend2])
|
|
>>> multi_backend.hash_supported(hashes.SHA256())
|
|
True
|
|
|
|
:param backends: A ``list`` of backend objects. Backends are checked for
|
|
feature support in the order they appear in this list.
|