diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-08-01 12:19:57 +0100 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-08-01 12:19:57 +0100 |
commit | 3f8cf63bf19f6b3ed666621d04511c485a7ef40a (patch) | |
tree | 96c6f620caa0402d8a032c08e73621287f06a2ed /src/cryptography/hazmat/bindings/openssl/binding.py | |
parent | 172d6846d78e34c005d2c679cf53dd79a3e54d8e (diff) | |
download | cryptography-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.py | 18 |
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() |