aboutsummaryrefslogtreecommitdiffstats
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
parent3319c95bf861f806a1b237c99661b30379389063 (diff)
downloadcryptography-da5dca8a92dfe8e01c5f88c67fd78d37cd6a7d22.tar.gz
cryptography-da5dca8a92dfe8e01c5f88c67fd78d37cd6a7d22.tar.bz2
cryptography-da5dca8a92dfe8e01c5f88c67fd78d37cd6a7d22.zip
Added entry_points.
-rw-r--r--cryptography/hazmat/backends/__init__.py29
-rw-r--r--setup.py16
2 files changed, 31 insertions, 14 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
diff --git a/setup.py b/setup.py
index f73394ee..30146b71 100644
--- a/setup.py
+++ b/setup.py
@@ -32,13 +32,15 @@ with open(os.path.join(base_dir, "cryptography", "__about__.py")) as f:
exec(f.read(), about)
+SETUPTOOLS_DEPENDENCY = "setuptools"
CFFI_DEPENDENCY = "cffi>=0.8"
SIX_DEPENDENCY = "six>=1.4.1"
VECTORS_DEPENDENCY = "cryptography_vectors=={0}".format(about['__version__'])
requirements = [
CFFI_DEPENDENCY,
- SIX_DEPENDENCY
+ SIX_DEPENDENCY,
+ SETUPTOOLS_DEPENDENCY
]
# If you add a new dep here you probably need to add it in the tox.ini as well
@@ -173,5 +175,17 @@ setup(
"build": CFFIBuild,
"install": CFFIInstall,
"test": PyTest,
+ },
+
+ entry_points={
+ "cryptography.hazmat.backends": [
+ "commoncrypto = cryptography.hazmat.backends.commoncrypto:backend",
+ "openssl = cryptography.hazmat.backends.openssl:backend"
+ ],
+
+ "cryptography.hazmat.is_backend_available": [
+ "commoncrypto = cryptography.hazmat.bindings.commoncrypto."
+ "binding:Binding.is_available"
+ ]
}
)