aboutsummaryrefslogtreecommitdiffstats
path: root/cryptography
diff options
context:
space:
mode:
authorTerry Chia <terrycwk1994@gmail.com>2014-07-27 12:27:52 +0800
committerTerry Chia <terrycwk1994@gmail.com>2014-07-27 12:27:52 +0800
commitda5dca8a92dfe8e01c5f88c67fd78d37cd6a7d22 (patch)
tree4623c3f938868ec54a12bd7e16eda71ad71869da /cryptography
parent3319c95bf861f806a1b237c99661b30379389063 (diff)
downloadcryptography-da5dca8a92dfe8e01c5f88c67fd78d37cd6a7d22.tar.gz
cryptography-da5dca8a92dfe8e01c5f88c67fd78d37cd6a7d22.tar.bz2
cryptography-da5dca8a92dfe8e01c5f88c67fd78d37cd6a7d22.zip
Added entry_points.
Diffstat (limited to 'cryptography')
-rw-r--r--cryptography/hazmat/backends/__init__.py29
1 files changed, 16 insertions, 13 deletions
diff --git a/cryptography/hazmat/backends/__init__.py b/cryptography/hazmat/backends/__init__.py
index ae78822c..663d1f55 100644
--- a/cryptography/hazmat/backends/__init__.py
+++ b/cryptography/hazmat/backends/__init__.py
@@ -13,13 +13,9 @@
from __future__ import absolute_import, division, print_function
+import pkg_resources
+
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
@@ -31,16 +27,23 @@ def _available_backends():
if _available_backends_list is None:
_available_backends_list = []
- if CommonCryptoBinding.is_available():
- from cryptography.hazmat.backends import commoncrypto
- _available_backends_list.append(commoncrypto.backend)
+ for backend in pkg_resources.iter_entry_points(
+ "cryptography.hazmat.backends"
+ ):
+ is_backend_available = pkg_resources.get_entry_info(
+ backend.dist,
+ "cryptography.hazmat.is_backend_available",
+ backend.name
+ )
- if OpenSSLBinding.is_available():
- from cryptography.hazmat.backends import openssl
- _available_backends_list.append(openssl.backend)
+ if is_backend_available is not None:
+ is_backend_available = is_backend_available.load(require=False)
+ if not is_backend_available():
+ continue
- return _available_backends_list
+ _available_backends_list.append(backend.load(require=False))
+ return _available_backends_list
_default_backend = None