This is a “Hazardous Materials” module. You should ONLY use it if you’re 100% absolutely sure that you know what you’re doing because this module is full of land mines, dragons, and dinosaurs with laser guns.

OpenSSL binding

These are CFFI bindings to the OpenSSL C library. Cryptography supports OpenSSL version 1.0.2 and greater.

class cryptography.hazmat.bindings.openssl.binding.Binding

This is the exposed API for the OpenSSL bindings. It has two public attributes:


This is a cffi.FFI instance. It can be used to allocate and otherwise manipulate OpenSSL structures.


This is a cffi library. It can be used to call OpenSSL functions, and access constants.

classmethod init_static_locks()

Enables the best available locking callback for OpenSSL. See Threading.


cryptography enables OpenSSLs thread safety facilities in several different ways depending on the configuration of your system. For users on OpenSSL 1.1.0 or newer (including anyone who uses a binary wheel) the OpenSSL internal locking callbacks are automatically used. Otherwise, we first attempt to use the callbacks provided by your Python implementation specifically for OpenSSL. This will work in every case except where cryptography is linked against a different version of OpenSSL than the one used by your Python implementation. For this final case we have a C-based locking callback.