aboutsummaryrefslogtreecommitdiffstats
path: root/cryptography
diff options
context:
space:
mode:
authorAlex Stapleton <alexs@prol.etari.at>2014-03-16 16:32:50 +0000
committerAlex Stapleton <alexs@prol.etari.at>2014-03-16 16:32:50 +0000
commit24dc98c7fdafad5c8a81a079dd5b369a92793a01 (patch)
treeca88936933be6ee92cf908aa38dda04f9488fe42 /cryptography
parente171c5fcf47263d4aee35c555844e4c4d7aec5f0 (diff)
downloadcryptography-24dc98c7fdafad5c8a81a079dd5b369a92793a01.tar.gz
cryptography-24dc98c7fdafad5c8a81a079dd5b369a92793a01.tar.bz2
cryptography-24dc98c7fdafad5c8a81a079dd5b369a92793a01.zip
Fix circular imports with available_backends()
Diffstat (limited to 'cryptography')
-rw-r--r--cryptography/hazmat/backends/__init__.py33
1 files changed, 26 insertions, 7 deletions
diff --git a/cryptography/hazmat/backends/__init__.py b/cryptography/hazmat/backends/__init__.py
index 59d1bc6c..ffb03391 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 = None
+
-_ALL_BACKENDS = []
+def available_backends():
+ global _available_backends
-if CommonCryptoBinding.is_available():
- from cryptography.hazmat.backends import commoncrypto
- _ALL_BACKENDS.append(commoncrypto.backend)
+ if _available_backends is None:
+ _available_backends = []
-_ALL_BACKENDS.append(openssl.backend)
+ if CommonCryptoBinding.is_available():
+ from cryptography.hazmat.backends import commoncrypto
+ _available_backends.append(commoncrypto.backend)
+ if OpenSSLBinding.is_available():
+ from cryptography.hazmat.backends import openssl
+ _available_backends.append(openssl.backend)
-_default_backend = MultiBackend(_ALL_BACKENDS)
+ return _available_backends
+
+
+_default_backend = None
def default_backend():
+ global _default_backend
+
+ if _default_backend is None:
+ _default_backend = MultiBackend(available_backends())
+
return _default_backend