diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2014-03-16 13:12:18 -0430 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2014-03-16 13:12:18 -0430 |
commit | 563896ff3544c99c13596f46897e16c0b58fc9ab (patch) | |
tree | a1c05dbf8c35713a7752278b664f6a63d0854451 /cryptography | |
parent | e171c5fcf47263d4aee35c555844e4c4d7aec5f0 (diff) | |
parent | 01de3ef02b63f158b7f3718472b0f13036c584c8 (diff) | |
download | cryptography-563896ff3544c99c13596f46897e16c0b58fc9ab.tar.gz cryptography-563896ff3544c99c13596f46897e16c0b58fc9ab.tar.bz2 cryptography-563896ff3544c99c13596f46897e16c0b58fc9ab.zip |
Merge pull request #812 from public/circular-fix
Fix circular imports with available_backends()
Diffstat (limited to 'cryptography')
-rw-r--r-- | cryptography/hazmat/backends/__init__.py | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/cryptography/hazmat/backends/__init__.py b/cryptography/hazmat/backends/__init__.py index 59d1bc6c..ae78822c 100644 --- a/cryptography/hazmat/backends/__init__.py +++ b/cryptography/hazmat/backends/__init__.py @@ -13,23 +13,42 @@ from __future__ import absolute_import, division, print_function -from cryptography.hazmat.backends import openssl from cryptography.hazmat.backends.multibackend import MultiBackend from cryptography.hazmat.bindings.commoncrypto.binding import ( Binding as CommonCryptoBinding ) +from cryptography.hazmat.bindings.openssl.binding import ( + Binding as OpenSSLBinding +) + + +_available_backends_list = None + -_ALL_BACKENDS = [] +def _available_backends(): + global _available_backends_list -if CommonCryptoBinding.is_available(): - from cryptography.hazmat.backends import commoncrypto - _ALL_BACKENDS.append(commoncrypto.backend) + if _available_backends_list is None: + _available_backends_list = [] -_ALL_BACKENDS.append(openssl.backend) + if CommonCryptoBinding.is_available(): + from cryptography.hazmat.backends import commoncrypto + _available_backends_list.append(commoncrypto.backend) + if OpenSSLBinding.is_available(): + from cryptography.hazmat.backends import openssl + _available_backends_list.append(openssl.backend) -_default_backend = MultiBackend(_ALL_BACKENDS) + return _available_backends_list + + +_default_backend = None def default_backend(): + global _default_backend + + if _default_backend is None: + _default_backend = MultiBackend(_available_backends()) + return _default_backend |