aboutsummaryrefslogtreecommitdiffstats
path: root/src/cryptography/hazmat/bindings/openssl/binding.py
diff options
context:
space:
mode:
authorPaul Kehrer <paul.l.kehrer@gmail.com>2015-08-01 12:19:57 +0100
committerPaul Kehrer <paul.l.kehrer@gmail.com>2015-08-01 12:19:57 +0100
commit3f8cf63bf19f6b3ed666621d04511c485a7ef40a (patch)
tree96c6f620caa0402d8a032c08e73621287f06a2ed /src/cryptography/hazmat/bindings/openssl/binding.py
parent172d6846d78e34c005d2c679cf53dd79a3e54d8e (diff)
downloadcryptography-3f8cf63bf19f6b3ed666621d04511c485a7ef40a.tar.gz
cryptography-3f8cf63bf19f6b3ed666621d04511c485a7ef40a.tar.bz2
cryptography-3f8cf63bf19f6b3ed666621d04511c485a7ef40a.zip
create a ConditionalLibrary and remove unsupported items
Diffstat (limited to 'src/cryptography/hazmat/bindings/openssl/binding.py')
-rw-r--r--src/cryptography/hazmat/bindings/openssl/binding.py18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/cryptography/hazmat/bindings/openssl/binding.py b/src/cryptography/hazmat/bindings/openssl/binding.py
index 86fac5ce..e509988f 100644
--- a/src/cryptography/hazmat/bindings/openssl/binding.py
+++ b/src/cryptography/hazmat/bindings/openssl/binding.py
@@ -8,6 +8,7 @@ import os
import threading
from cryptography.hazmat.bindings._openssl import ffi, lib
+from cryptography.hazmat.bindings.openssl._conditional import CONDITIONAL_NAMES
@ffi.callback("int (*)(unsigned char *, int)", error=-1)
@@ -23,11 +24,15 @@ def _osrandom_rand_status():
return 1
+class _ConditionalLibrary(object):
+ pass
+
+
class Binding(object):
"""
OpenSSL API wrapper.
"""
- lib = lib
+ lib = None
ffi = ffi
_lib_loaded = False
_locks = None
@@ -74,6 +79,17 @@ class Binding(object):
def _ensure_ffi_initialized(cls):
with cls._init_lock:
if not cls._lib_loaded:
+ conditional_lib = _ConditionalLibrary()
+ for attr in dir(lib):
+ attrval = getattr(lib, attr)
+ setattr(conditional_lib, attr, attrval)
+
+ for condition, names in CONDITIONAL_NAMES.items():
+ if not getattr(conditional_lib, condition):
+ for name in names:
+ delattr(conditional_lib, name)
+
+ cls.lib = conditional_lib
cls._lib_loaded = True
cls._register_osrandom_engine()