File: multibackend.rst

package info (click to toggle)
python-cryptography 0.6.1-1%2Bdeb8u1
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 1,896 kB
  • ctags: 2,183
  • sloc: python: 20,385; makefile: 137; ansic: 17; sh: 12
file content (45 lines) | stat: -rw-r--r-- 1,510 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
.. 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.