diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2014-04-22 11:35:12 -0500 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2014-04-22 11:35:12 -0500 |
commit | 14df7ca79e9c86349ca5035c0f3b3fda65b6b256 (patch) | |
tree | 80e8da7e2bd28c892745fca091a7189452f3d17f /cryptography | |
parent | 8a312c2ccc99351f1a05dc607a574669944ea4cd (diff) | |
parent | 9bea9373efcddd390aa2d2f63d8690d6d3ceca14 (diff) | |
download | cryptography-14df7ca79e9c86349ca5035c0f3b3fda65b6b256.tar.gz cryptography-14df7ca79e9c86349ca5035c0f3b3fda65b6b256.tar.bz2 cryptography-14df7ca79e9c86349ca5035c0f3b3fda65b6b256.zip |
Merge pull request #950 from Ayrx/cmac-multibackend
CMAC multibackend
Diffstat (limited to 'cryptography')
-rw-r--r-- | cryptography/hazmat/backends/multibackend.py | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/cryptography/hazmat/backends/multibackend.py b/cryptography/hazmat/backends/multibackend.py index 86cded85..981a60bd 100644 --- a/cryptography/hazmat/backends/multibackend.py +++ b/cryptography/hazmat/backends/multibackend.py @@ -16,11 +16,12 @@ from __future__ import absolute_import, division, print_function from cryptography import utils from cryptography.exceptions import UnsupportedAlgorithm, _Reasons from cryptography.hazmat.backends.interfaces import ( - CipherBackend, DSABackend, HMACBackend, HashBackend, PBKDF2HMACBackend, - RSABackend + CMACBackend, CipherBackend, DSABackend, HMACBackend, HashBackend, + PBKDF2HMACBackend, RSABackend ) +@utils.register_interface(CMACBackend) @utils.register_interface(CipherBackend) @utils.register_interface(HashBackend) @utils.register_interface(HMACBackend) @@ -156,3 +157,18 @@ class MultiBackend(object): return b.generate_dsa_private_key(parameters) raise UnsupportedAlgorithm("DSA is not supported by the backend", _Reasons.UNSUPPORTED_PUBLIC_KEY_ALGORITHM) + + def cmac_algorithm_supported(self, algorithm): + return any( + b.cmac_algorithm_supported(algorithm) + for b in self._filtered_backends(CMACBackend) + ) + + def create_cmac_ctx(self, algorithm): + for b in self._filtered_backends(CMACBackend): + try: + return b.create_cmac_ctx(algorithm) + except UnsupportedAlgorithm: + pass + raise UnsupportedAlgorithm("This backend does not support CMAC", + _Reasons.UNSUPPORTED_CIPHER) |