diff --git a/README.fuchsia b/README.fuchsia
index 98a2c5f..6f795cd 100644
--- a/README.fuchsia
+++ b/README.fuchsia
@@ -9,10 +9,11 @@
 A fork of OpenSSL, as described at https://www.imperialviolet.org/2014/06/20/boringssl.html
 
 To update:
-1. Execute "go run roll_boringssl.go"
-2. Build and test Fuchsia as normal.
-3. Update //zircon/third_party/ulib/uboringssl as documented there.
-4. Commit and push normally.  Note the resulting revision for the next step.
-5. Create and upload a CL that updates //garnet/manifest/boringssl
+1. Make sure you have the Rust bindgen tool installed (at least version 0.37, https://github.com/rust-lang-nursery/rust-bindgen).
+2. Execute "go run roll_boringssl.go"
+3. Build and test Fuchsia as normal.
+4. Update //zircon/third_party/ulib/uboringssl as documented there.
+5. Commit and push normally.  Note the resulting revision for the next step.
+6. Create and upload a CL that updates //garnet/manifest/boringssl
 
 TODO(aarongreen): Document testing steps.
diff --git a/roll_boringssl.go b/roll_boringssl.go
index 680b504..ba4af5f 100644
--- a/roll_boringssl.go
+++ b/roll_boringssl.go
@@ -34,6 +34,7 @@
 
 	skipFuchsia = flag.Bool("skip-fuchsia", false, "Don't run 'jiri update' first")
 	skipBoring  = flag.Bool("skip-boring", false, "Don't update upstream sources or build files")
+	skipRust    = flag.Bool("skip-rust", false, "Don't update Rust bindings")
 	skipZircon  = flag.Bool("skip-zircon", false, "Don't update Zircon's uboringssl library")
 	skipGarnet  = flag.Bool("skip-garnet", false, "Don't update Garnet's third_party manifest")
 
@@ -166,6 +167,10 @@
 	updateManifest("project", src, filepath.Join(*boring, "manifest"))
 }
 
+func updateRust() {
+	run("", filepath.Join(*boring, "rust/boringssl-sys/bindgen.sh"))
+}
+
 // To update Zircon's uboringssl library, we update the revision number in the README file and
 // copy any files present in uboringssl that do not match their counterpart in BoringSSL
 func updateZircon() {
@@ -293,6 +298,12 @@
 		infof("Done!")
 	}
 
+	if !*skipRust {
+		infof("Updating Rust bindings...")
+		updateRust()
+		infof("Done!")
+	}
+
 	if !*skipZircon {
 		infof("Updating Zircon's uboringssl library...")
 		updateZircon()
diff --git a/rust/boringssl-sys/.gitignore b/rust/boringssl-sys/.gitignore
new file mode 100644
index 0000000..90c2440
--- /dev/null
+++ b/rust/boringssl-sys/.gitignore
@@ -0,0 +1,6 @@
+# This should be removed by bindgen.sh, but just in case.
+bindgen.h
+# These may be used in development
+Cargo.toml
+Cargo.lock
+target
diff --git a/rust/boringssl-sys/BUILD.gn b/rust/boringssl-sys/BUILD.gn
new file mode 100644
index 0000000..ed9db61
--- /dev/null
+++ b/rust/boringssl-sys/BUILD.gn
@@ -0,0 +1,16 @@
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/rust/rustc_library.gni")
+
+rustc_library("boringssl-sys") {
+  name = "boringssl-sys"
+  version = "0.1.0"
+  with_unit_tests = true
+
+  non_rust_deps = [
+    # only depend on libcrypto until we actually use the SSL bits
+    "//third_party/boringssl:crypto",
+  ]
+}
diff --git a/rust/boringssl-sys/bindgen.sh b/rust/boringssl-sys/bindgen.sh
new file mode 100755
index 0000000..555924a
--- /dev/null
+++ b/rust/boringssl-sys/bindgen.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+
+# Copyright 2018 The Fuchsia Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+set -e
+
+# cd to the directory this script lives in
+readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
+cd "$SCRIPT_DIR"
+
+# Construct a header file which imports every BoringSSL header.
+for header in $(ls ../../src/include/openssl/); do
+    # Skip certain headers which contain platform-specific logic, and will not
+    # compile on all platforms.
+    if [[ "$header" != "arm_arch.h" && \
+          "$header" != "lhash_macros.h" ]]; then
+        echo "#include <openssl/${header}>" >> bindgen.h
+    fi
+done
+
+# TODO(joshlf):
+# - Use the --use-core flag once std isn't required (see
+#   https://github.com/rust-lang-nursery/rust-bindgen/issues/1015)
+
+# Whitelist BoringSSL-related symbols so we don't get non-BoringSSL symbols such
+# as platform-specific symbols (specific to the platform that is running
+# 'bindgen') and other C standard library symbols.
+WHITELIST="(ERR|BIO|CRYPTO|V_ASN1|ASN1|B_ASN1|CBS_ASN1|CAST|EVP|CBS|CBB|CIPHER|OPENSSL|SSLEAY|DH|DES|DIGEST|DSA|NID|EC|ECDSA|ECDH|SHA|SHA1|SHA224|SHA256|SHA384|SHA512)_.*"
+# NOTE(joshlf) on --target: Currently, we just pass x86_64 since none of the
+# symbols we're linking against are architecture-specific (they may be
+# word-size-specific, but Fuchsia only targets 64-bit platforms). If this ever
+# becomes a problem, then the thing to do is probably to generate different
+# files for different platforms (bindgen_x86_64.rs, bindgen_arm64.rs, etc) and
+# conditionally compile them depending on target.
+bindgen bindgen.h --whitelist-function "$WHITELIST" --whitelist-type "$WHITELIST" \
+    --whitelist-var "$WHITELIST" -o src/lib.rs -- -I ../../src/include --target=x86_64-fuchsia
+
+TMP="$(mktemp)"
+
+# Prepend copyright comment, #[allow] for various warnings we don't care about,
+# and a line telling Rust to link against libcrypto.
+cat >> "$TMP" <<EOF
+// Copyright 2018 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#![allow(non_camel_case_types)]
+#![allow(non_snake_case)]
+#![allow(non_upper_case_globals)]
+
+#[link(name = "crypto")] extern {}
+
+EOF
+
+cat src/lib.rs >> "$TMP"
+mv "$TMP" src/lib.rs
+
+rm bindgen.h
diff --git a/rust/boringssl-sys/src/lib.rs b/rust/boringssl-sys/src/lib.rs
new file mode 100644
index 0000000..83d5f80
--- /dev/null
+++ b/rust/boringssl-sys/src/lib.rs
@@ -0,0 +1,12690 @@
+// Copyright 2018 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#![allow(non_camel_case_types)]
+#![allow(non_snake_case)]
+#![allow(non_upper_case_globals)]
+
+#[link(name = "crypto")] extern {}
+
+/* automatically generated by rust-bindgen */
+
+#[repr(C)]
+#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
+pub struct __BindgenBitfieldUnit<Storage, Align>
+where
+    Storage: AsRef<[u8]> + AsMut<[u8]>,
+{
+    storage: Storage,
+    align: [Align; 0],
+}
+
+impl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>
+where
+    Storage: AsRef<[u8]> + AsMut<[u8]>,
+{
+    #[inline]
+    pub fn new(storage: Storage) -> Self {
+        Self { storage, align: [] }
+    }
+
+    #[inline]
+    pub fn get_bit(&self, index: usize) -> bool {
+        debug_assert!(index / 8 < self.storage.as_ref().len());
+
+        let byte_index = index / 8;
+        let byte = self.storage.as_ref()[byte_index];
+
+        let bit_index = if cfg!(target_endian = "big") {
+            7 - (index % 8)
+        } else {
+            index % 8
+        };
+
+        let mask = 1 << bit_index;
+
+        byte & mask == mask
+    }
+
+    #[inline]
+    pub fn set_bit(&mut self, index: usize, val: bool) {
+        debug_assert!(index / 8 < self.storage.as_ref().len());
+
+        let byte_index = index / 8;
+        let byte = &mut self.storage.as_mut()[byte_index];
+
+        let bit_index = if cfg!(target_endian = "big") {
+            7 - (index % 8)
+        } else {
+            index % 8
+        };
+
+        let mask = 1 << bit_index;
+        if val {
+            *byte |= mask;
+        } else {
+            *byte &= !mask;
+        }
+    }
+
+    #[inline]
+    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
+        debug_assert!(bit_width <= 64);
+        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
+        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
+
+        let mut val = 0;
+
+        for i in 0..(bit_width as usize) {
+            if self.get_bit(i + bit_offset) {
+                let index = if cfg!(target_endian = "big") {
+                    bit_width as usize - 1 - i
+                } else {
+                    i
+                };
+                val |= 1 << index;
+            }
+        }
+
+        val
+    }
+
+    #[inline]
+    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
+        debug_assert!(bit_width <= 64);
+        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
+        debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
+
+        for i in 0..(bit_width as usize) {
+            let mask = 1 << i;
+            let val_bit_is_set = val & mask == mask;
+            let index = if cfg!(target_endian = "big") {
+                bit_width as usize - 1 - i
+            } else {
+                i
+            };
+            self.set_bit(index + bit_offset, val_bit_is_set);
+        }
+    }
+}
+pub const OPENSSL_VERSION_NUMBER: u32 = 269484159;
+pub const SSLEAY_VERSION_NUMBER: u32 = 269484159;
+pub const EVP_AEAD_MAX_KEY_LENGTH: u32 = 80;
+pub const EVP_AEAD_MAX_NONCE_LENGTH: u32 = 16;
+pub const EVP_AEAD_MAX_OVERHEAD: u32 = 64;
+pub const EVP_AEAD_DEFAULT_TAG_LENGTH: u32 = 0;
+pub const ERR_FLAG_STRING: u32 = 1;
+pub const ERR_R_FATAL: u32 = 64;
+pub const ERR_R_MALLOC_FAILURE: u32 = 65;
+pub const ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED: u32 = 66;
+pub const ERR_R_PASSED_NULL_PARAMETER: u32 = 67;
+pub const ERR_R_INTERNAL_ERROR: u32 = 68;
+pub const ERR_R_OVERFLOW: u32 = 69;
+pub const ERR_ERROR_STRING_BUF_LEN: u32 = 120;
+pub const ERR_TXT_STRING: u32 = 1;
+pub const ERR_NUM_ERRORS: u32 = 16;
+pub const CRYPTO_LOCK: u32 = 1;
+pub const CRYPTO_UNLOCK: u32 = 2;
+pub const CRYPTO_READ: u32 = 4;
+pub const CRYPTO_WRITE: u32 = 8;
+pub const BIO_RR_CONNECT: u32 = 2;
+pub const BIO_RR_ACCEPT: u32 = 3;
+pub const BIO_CB_FREE: u32 = 1;
+pub const BIO_CB_READ: u32 = 2;
+pub const BIO_CB_WRITE: u32 = 3;
+pub const BIO_CB_PUTS: u32 = 4;
+pub const BIO_CB_GETS: u32 = 5;
+pub const BIO_CB_CTRL: u32 = 6;
+pub const BIO_CB_RETURN: u32 = 128;
+pub const BIO_NOCLOSE: u32 = 0;
+pub const BIO_CLOSE: u32 = 1;
+pub const BIO_CTRL_DGRAM_QUERY_MTU: u32 = 40;
+pub const BIO_CTRL_DGRAM_SET_MTU: u32 = 42;
+pub const BIO_CTRL_DGRAM_MTU_EXCEEDED: u32 = 43;
+pub const BIO_CTRL_DGRAM_GET_PEER: u32 = 46;
+pub const BIO_CTRL_DGRAM_GET_FALLBACK_MTU: u32 = 47;
+pub const BIO_CTRL_RESET: u32 = 1;
+pub const BIO_CTRL_EOF: u32 = 2;
+pub const BIO_CTRL_INFO: u32 = 3;
+pub const BIO_CTRL_SET: u32 = 4;
+pub const BIO_CTRL_GET: u32 = 5;
+pub const BIO_CTRL_PUSH: u32 = 6;
+pub const BIO_CTRL_POP: u32 = 7;
+pub const BIO_CTRL_GET_CLOSE: u32 = 8;
+pub const BIO_CTRL_SET_CLOSE: u32 = 9;
+pub const BIO_CTRL_PENDING: u32 = 10;
+pub const BIO_CTRL_FLUSH: u32 = 11;
+pub const BIO_CTRL_WPENDING: u32 = 13;
+pub const BIO_CTRL_SET_CALLBACK: u32 = 14;
+pub const BIO_CTRL_GET_CALLBACK: u32 = 15;
+pub const BIO_CTRL_SET_FILENAME: u32 = 30;
+pub const BIO_CTRL_DUP: u32 = 12;
+pub const BIO_FLAGS_READ: u32 = 1;
+pub const BIO_FLAGS_WRITE: u32 = 2;
+pub const BIO_FLAGS_IO_SPECIAL: u32 = 4;
+pub const BIO_FLAGS_RWS: u32 = 7;
+pub const BIO_FLAGS_SHOULD_RETRY: u32 = 8;
+pub const BIO_FLAGS_BASE64_NO_NL: u32 = 256;
+pub const BIO_FLAGS_MEM_RDONLY: u32 = 512;
+pub const BIO_TYPE_NONE: u32 = 0;
+pub const BIO_TYPE_MEM: u32 = 1025;
+pub const BIO_TYPE_FILE: u32 = 1026;
+pub const BIO_TYPE_FD: u32 = 1284;
+pub const BIO_TYPE_SOCKET: u32 = 1285;
+pub const BIO_TYPE_NULL: u32 = 1030;
+pub const BIO_TYPE_SSL: u32 = 519;
+pub const BIO_TYPE_MD: u32 = 520;
+pub const BIO_TYPE_BUFFER: u32 = 521;
+pub const BIO_TYPE_CIPHER: u32 = 522;
+pub const BIO_TYPE_BASE64: u32 = 523;
+pub const BIO_TYPE_CONNECT: u32 = 1292;
+pub const BIO_TYPE_ACCEPT: u32 = 1293;
+pub const BIO_TYPE_PROXY_CLIENT: u32 = 526;
+pub const BIO_TYPE_PROXY_SERVER: u32 = 527;
+pub const BIO_TYPE_NBIO_TEST: u32 = 528;
+pub const BIO_TYPE_NULL_FILTER: u32 = 529;
+pub const BIO_TYPE_BER: u32 = 530;
+pub const BIO_TYPE_BIO: u32 = 1043;
+pub const BIO_TYPE_LINEBUFFER: u32 = 532;
+pub const BIO_TYPE_DGRAM: u32 = 1301;
+pub const BIO_TYPE_ASN1: u32 = 534;
+pub const BIO_TYPE_COMP: u32 = 535;
+pub const BIO_TYPE_DESCRIPTOR: u32 = 256;
+pub const BIO_TYPE_FILTER: u32 = 512;
+pub const BIO_TYPE_SOURCE_SINK: u32 = 1024;
+pub const BIO_TYPE_START: u32 = 128;
+pub const BIO_C_SET_CONNECT: u32 = 100;
+pub const BIO_C_DO_STATE_MACHINE: u32 = 101;
+pub const BIO_C_SET_NBIO: u32 = 102;
+pub const BIO_C_SET_PROXY_PARAM: u32 = 103;
+pub const BIO_C_SET_FD: u32 = 104;
+pub const BIO_C_GET_FD: u32 = 105;
+pub const BIO_C_SET_FILE_PTR: u32 = 106;
+pub const BIO_C_GET_FILE_PTR: u32 = 107;
+pub const BIO_C_SET_FILENAME: u32 = 108;
+pub const BIO_C_SET_SSL: u32 = 109;
+pub const BIO_C_GET_SSL: u32 = 110;
+pub const BIO_C_SET_MD: u32 = 111;
+pub const BIO_C_GET_MD: u32 = 112;
+pub const BIO_C_GET_CIPHER_STATUS: u32 = 113;
+pub const BIO_C_SET_BUF_MEM: u32 = 114;
+pub const BIO_C_GET_BUF_MEM_PTR: u32 = 115;
+pub const BIO_C_GET_BUFF_NUM_LINES: u32 = 116;
+pub const BIO_C_SET_BUFF_SIZE: u32 = 117;
+pub const BIO_C_SET_ACCEPT: u32 = 118;
+pub const BIO_C_SSL_MODE: u32 = 119;
+pub const BIO_C_GET_MD_CTX: u32 = 120;
+pub const BIO_C_GET_PROXY_PARAM: u32 = 121;
+pub const BIO_C_SET_BUFF_READ_DATA: u32 = 122;
+pub const BIO_C_GET_ACCEPT: u32 = 124;
+pub const BIO_C_SET_SSL_RENEGOTIATE_BYTES: u32 = 125;
+pub const BIO_C_GET_SSL_NUM_RENEGOTIATES: u32 = 126;
+pub const BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT: u32 = 127;
+pub const BIO_C_FILE_SEEK: u32 = 128;
+pub const BIO_C_GET_CIPHER_CTX: u32 = 129;
+pub const BIO_C_SET_BUF_MEM_EOF_RETURN: u32 = 130;
+pub const BIO_C_SET_BIND_MODE: u32 = 131;
+pub const BIO_C_GET_BIND_MODE: u32 = 132;
+pub const BIO_C_FILE_TELL: u32 = 133;
+pub const BIO_C_GET_SOCKS: u32 = 134;
+pub const BIO_C_SET_SOCKS: u32 = 135;
+pub const BIO_C_SET_WRITE_BUF_SIZE: u32 = 136;
+pub const BIO_C_GET_WRITE_BUF_SIZE: u32 = 137;
+pub const BIO_C_GET_WRITE_GUARANTEE: u32 = 140;
+pub const BIO_C_GET_READ_REQUEST: u32 = 141;
+pub const BIO_C_SHUTDOWN_WR: u32 = 142;
+pub const BIO_C_NREAD0: u32 = 143;
+pub const BIO_C_NREAD: u32 = 144;
+pub const BIO_C_NWRITE0: u32 = 145;
+pub const BIO_C_NWRITE: u32 = 146;
+pub const BIO_C_RESET_READ_REQUEST: u32 = 147;
+pub const BIO_C_SET_MD_CTX: u32 = 148;
+pub const BIO_C_SET_PREFIX: u32 = 149;
+pub const BIO_C_GET_PREFIX: u32 = 150;
+pub const BIO_C_SET_SUFFIX: u32 = 151;
+pub const BIO_C_GET_SUFFIX: u32 = 152;
+pub const BIO_C_SET_EX_ARG: u32 = 153;
+pub const BIO_C_GET_EX_ARG: u32 = 154;
+pub const BIO_R_BAD_FOPEN_MODE: u32 = 100;
+pub const BIO_R_BROKEN_PIPE: u32 = 101;
+pub const BIO_R_CONNECT_ERROR: u32 = 102;
+pub const BIO_R_ERROR_SETTING_NBIO: u32 = 103;
+pub const BIO_R_INVALID_ARGUMENT: u32 = 104;
+pub const BIO_R_IN_USE: u32 = 105;
+pub const BIO_R_KEEPALIVE: u32 = 106;
+pub const BIO_R_NBIO_CONNECT_ERROR: u32 = 107;
+pub const BIO_R_NO_HOSTNAME_SPECIFIED: u32 = 108;
+pub const BIO_R_NO_PORT_SPECIFIED: u32 = 109;
+pub const BIO_R_NO_SUCH_FILE: u32 = 110;
+pub const BIO_R_NULL_PARAMETER: u32 = 111;
+pub const BIO_R_SYS_LIB: u32 = 112;
+pub const BIO_R_UNABLE_TO_CREATE_SOCKET: u32 = 113;
+pub const BIO_R_UNINITIALIZED: u32 = 114;
+pub const BIO_R_UNSUPPORTED_METHOD: u32 = 115;
+pub const BIO_R_WRITE_TO_READ_ONLY_BIO: u32 = 116;
+pub const V_ASN1_UNIVERSAL: u32 = 0;
+pub const V_ASN1_APPLICATION: u32 = 64;
+pub const V_ASN1_CONTEXT_SPECIFIC: u32 = 128;
+pub const V_ASN1_PRIVATE: u32 = 192;
+pub const V_ASN1_CONSTRUCTED: u32 = 32;
+pub const V_ASN1_PRIMITIVE_TAG: u32 = 31;
+pub const V_ASN1_APP_CHOOSE: i32 = -2;
+pub const V_ASN1_OTHER: i32 = -3;
+pub const V_ASN1_ANY: i32 = -4;
+pub const V_ASN1_NEG: u32 = 256;
+pub const V_ASN1_MAX_UNIVERSAL: u32 = 255;
+pub const V_ASN1_UNDEF: i32 = -1;
+pub const V_ASN1_EOC: u32 = 0;
+pub const V_ASN1_BOOLEAN: u32 = 1;
+pub const V_ASN1_INTEGER: u32 = 2;
+pub const V_ASN1_NEG_INTEGER: u32 = 258;
+pub const V_ASN1_BIT_STRING: u32 = 3;
+pub const V_ASN1_OCTET_STRING: u32 = 4;
+pub const V_ASN1_NULL: u32 = 5;
+pub const V_ASN1_OBJECT: u32 = 6;
+pub const V_ASN1_OBJECT_DESCRIPTOR: u32 = 7;
+pub const V_ASN1_EXTERNAL: u32 = 8;
+pub const V_ASN1_REAL: u32 = 9;
+pub const V_ASN1_ENUMERATED: u32 = 10;
+pub const V_ASN1_NEG_ENUMERATED: u32 = 266;
+pub const V_ASN1_UTF8STRING: u32 = 12;
+pub const V_ASN1_SEQUENCE: u32 = 16;
+pub const V_ASN1_SET: u32 = 17;
+pub const V_ASN1_NUMERICSTRING: u32 = 18;
+pub const V_ASN1_PRINTABLESTRING: u32 = 19;
+pub const V_ASN1_T61STRING: u32 = 20;
+pub const V_ASN1_TELETEXSTRING: u32 = 20;
+pub const V_ASN1_VIDEOTEXSTRING: u32 = 21;
+pub const V_ASN1_IA5STRING: u32 = 22;
+pub const V_ASN1_UTCTIME: u32 = 23;
+pub const V_ASN1_GENERALIZEDTIME: u32 = 24;
+pub const V_ASN1_GRAPHICSTRING: u32 = 25;
+pub const V_ASN1_ISO64STRING: u32 = 26;
+pub const V_ASN1_VISIBLESTRING: u32 = 26;
+pub const V_ASN1_GENERALSTRING: u32 = 27;
+pub const V_ASN1_UNIVERSALSTRING: u32 = 28;
+pub const V_ASN1_BMPSTRING: u32 = 30;
+pub const B_ASN1_NUMERICSTRING: u32 = 1;
+pub const B_ASN1_PRINTABLESTRING: u32 = 2;
+pub const B_ASN1_T61STRING: u32 = 4;
+pub const B_ASN1_TELETEXSTRING: u32 = 4;
+pub const B_ASN1_VIDEOTEXSTRING: u32 = 8;
+pub const B_ASN1_IA5STRING: u32 = 16;
+pub const B_ASN1_GRAPHICSTRING: u32 = 32;
+pub const B_ASN1_ISO64STRING: u32 = 64;
+pub const B_ASN1_VISIBLESTRING: u32 = 64;
+pub const B_ASN1_GENERALSTRING: u32 = 128;
+pub const B_ASN1_UNIVERSALSTRING: u32 = 256;
+pub const B_ASN1_OCTET_STRING: u32 = 512;
+pub const B_ASN1_BIT_STRING: u32 = 1024;
+pub const B_ASN1_BMPSTRING: u32 = 2048;
+pub const B_ASN1_UNKNOWN: u32 = 4096;
+pub const B_ASN1_UTF8STRING: u32 = 8192;
+pub const B_ASN1_UTCTIME: u32 = 16384;
+pub const B_ASN1_GENERALIZEDTIME: u32 = 32768;
+pub const B_ASN1_SEQUENCE: u32 = 65536;
+pub const ASN1_OBJECT_FLAG_DYNAMIC: u32 = 1;
+pub const ASN1_OBJECT_FLAG_DYNAMIC_STRINGS: u32 = 4;
+pub const ASN1_OBJECT_FLAG_DYNAMIC_DATA: u32 = 8;
+pub const ASN1_STRING_FLAG_BITS_LEFT: u32 = 8;
+pub const ASN1_STRING_FLAG_NDEF: u32 = 16;
+pub const ASN1_STRING_FLAG_MSTRING: u32 = 64;
+pub const ASN1_STRFLGS_ESC_2253: u32 = 1;
+pub const ASN1_STRFLGS_ESC_CTRL: u32 = 2;
+pub const ASN1_STRFLGS_ESC_MSB: u32 = 4;
+pub const ASN1_STRFLGS_ESC_QUOTE: u32 = 8;
+pub const ASN1_STRFLGS_UTF8_CONVERT: u32 = 16;
+pub const ASN1_STRFLGS_IGNORE_TYPE: u32 = 32;
+pub const ASN1_STRFLGS_SHOW_TYPE: u32 = 64;
+pub const ASN1_STRFLGS_DUMP_ALL: u32 = 128;
+pub const ASN1_STRFLGS_DUMP_UNKNOWN: u32 = 256;
+pub const ASN1_STRFLGS_DUMP_DER: u32 = 512;
+pub const ASN1_STRFLGS_RFC2253: u32 = 791;
+pub const B_ASN1_TIME: u32 = 49152;
+pub const B_ASN1_PRINTABLE: u32 = 81175;
+pub const B_ASN1_DIRECTORYSTRING: u32 = 10502;
+pub const B_ASN1_DISPLAYTEXT: u32 = 10320;
+pub const ASN1_R_ASN1_LENGTH_MISMATCH: u32 = 100;
+pub const ASN1_R_AUX_ERROR: u32 = 101;
+pub const ASN1_R_BAD_GET_ASN1_OBJECT_CALL: u32 = 102;
+pub const ASN1_R_BAD_OBJECT_HEADER: u32 = 103;
+pub const ASN1_R_BMPSTRING_IS_WRONG_LENGTH: u32 = 104;
+pub const ASN1_R_BN_LIB: u32 = 105;
+pub const ASN1_R_BOOLEAN_IS_WRONG_LENGTH: u32 = 106;
+pub const ASN1_R_BUFFER_TOO_SMALL: u32 = 107;
+pub const ASN1_R_CONTEXT_NOT_INITIALISED: u32 = 108;
+pub const ASN1_R_DECODE_ERROR: u32 = 109;
+pub const ASN1_R_DEPTH_EXCEEDED: u32 = 110;
+pub const ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED: u32 = 111;
+pub const ASN1_R_ENCODE_ERROR: u32 = 112;
+pub const ASN1_R_ERROR_GETTING_TIME: u32 = 113;
+pub const ASN1_R_EXPECTING_AN_ASN1_SEQUENCE: u32 = 114;
+pub const ASN1_R_EXPECTING_AN_INTEGER: u32 = 115;
+pub const ASN1_R_EXPECTING_AN_OBJECT: u32 = 116;
+pub const ASN1_R_EXPECTING_A_BOOLEAN: u32 = 117;
+pub const ASN1_R_EXPECTING_A_TIME: u32 = 118;
+pub const ASN1_R_EXPLICIT_LENGTH_MISMATCH: u32 = 119;
+pub const ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED: u32 = 120;
+pub const ASN1_R_FIELD_MISSING: u32 = 121;
+pub const ASN1_R_FIRST_NUM_TOO_LARGE: u32 = 122;
+pub const ASN1_R_HEADER_TOO_LONG: u32 = 123;
+pub const ASN1_R_ILLEGAL_BITSTRING_FORMAT: u32 = 124;
+pub const ASN1_R_ILLEGAL_BOOLEAN: u32 = 125;
+pub const ASN1_R_ILLEGAL_CHARACTERS: u32 = 126;
+pub const ASN1_R_ILLEGAL_FORMAT: u32 = 127;
+pub const ASN1_R_ILLEGAL_HEX: u32 = 128;
+pub const ASN1_R_ILLEGAL_IMPLICIT_TAG: u32 = 129;
+pub const ASN1_R_ILLEGAL_INTEGER: u32 = 130;
+pub const ASN1_R_ILLEGAL_NESTED_TAGGING: u32 = 131;
+pub const ASN1_R_ILLEGAL_NULL: u32 = 132;
+pub const ASN1_R_ILLEGAL_NULL_VALUE: u32 = 133;
+pub const ASN1_R_ILLEGAL_OBJECT: u32 = 134;
+pub const ASN1_R_ILLEGAL_OPTIONAL_ANY: u32 = 135;
+pub const ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE: u32 = 136;
+pub const ASN1_R_ILLEGAL_TAGGED_ANY: u32 = 137;
+pub const ASN1_R_ILLEGAL_TIME_VALUE: u32 = 138;
+pub const ASN1_R_INTEGER_NOT_ASCII_FORMAT: u32 = 139;
+pub const ASN1_R_INTEGER_TOO_LARGE_FOR_LONG: u32 = 140;
+pub const ASN1_R_INVALID_BIT_STRING_BITS_LEFT: u32 = 141;
+pub const ASN1_R_INVALID_BMPSTRING: u32 = 142;
+pub const ASN1_R_INVALID_DIGIT: u32 = 143;
+pub const ASN1_R_INVALID_MODIFIER: u32 = 144;
+pub const ASN1_R_INVALID_NUMBER: u32 = 145;
+pub const ASN1_R_INVALID_OBJECT_ENCODING: u32 = 146;
+pub const ASN1_R_INVALID_SEPARATOR: u32 = 147;
+pub const ASN1_R_INVALID_TIME_FORMAT: u32 = 148;
+pub const ASN1_R_INVALID_UNIVERSALSTRING: u32 = 149;
+pub const ASN1_R_INVALID_UTF8STRING: u32 = 150;
+pub const ASN1_R_LIST_ERROR: u32 = 151;
+pub const ASN1_R_MISSING_ASN1_EOS: u32 = 152;
+pub const ASN1_R_MISSING_EOC: u32 = 153;
+pub const ASN1_R_MISSING_SECOND_NUMBER: u32 = 154;
+pub const ASN1_R_MISSING_VALUE: u32 = 155;
+pub const ASN1_R_MSTRING_NOT_UNIVERSAL: u32 = 156;
+pub const ASN1_R_MSTRING_WRONG_TAG: u32 = 157;
+pub const ASN1_R_NESTED_ASN1_ERROR: u32 = 158;
+pub const ASN1_R_NESTED_ASN1_STRING: u32 = 159;
+pub const ASN1_R_NON_HEX_CHARACTERS: u32 = 160;
+pub const ASN1_R_NOT_ASCII_FORMAT: u32 = 161;
+pub const ASN1_R_NOT_ENOUGH_DATA: u32 = 162;
+pub const ASN1_R_NO_MATCHING_CHOICE_TYPE: u32 = 163;
+pub const ASN1_R_NULL_IS_WRONG_LENGTH: u32 = 164;
+pub const ASN1_R_OBJECT_NOT_ASCII_FORMAT: u32 = 165;
+pub const ASN1_R_ODD_NUMBER_OF_CHARS: u32 = 166;
+pub const ASN1_R_SECOND_NUMBER_TOO_LARGE: u32 = 167;
+pub const ASN1_R_SEQUENCE_LENGTH_MISMATCH: u32 = 168;
+pub const ASN1_R_SEQUENCE_NOT_CONSTRUCTED: u32 = 169;
+pub const ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG: u32 = 170;
+pub const ASN1_R_SHORT_LINE: u32 = 171;
+pub const ASN1_R_STREAMING_NOT_SUPPORTED: u32 = 172;
+pub const ASN1_R_STRING_TOO_LONG: u32 = 173;
+pub const ASN1_R_STRING_TOO_SHORT: u32 = 174;
+pub const ASN1_R_TAG_VALUE_TOO_HIGH: u32 = 175;
+pub const ASN1_R_TIME_NOT_ASCII_FORMAT: u32 = 176;
+pub const ASN1_R_TOO_LONG: u32 = 177;
+pub const ASN1_R_TYPE_NOT_CONSTRUCTED: u32 = 178;
+pub const ASN1_R_TYPE_NOT_PRIMITIVE: u32 = 179;
+pub const ASN1_R_UNEXPECTED_EOC: u32 = 180;
+pub const ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH: u32 = 181;
+pub const ASN1_R_UNKNOWN_FORMAT: u32 = 182;
+pub const ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM: u32 = 183;
+pub const ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM: u32 = 184;
+pub const ASN1_R_UNKNOWN_TAG: u32 = 185;
+pub const ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE: u32 = 186;
+pub const ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE: u32 = 187;
+pub const ASN1_R_UNSUPPORTED_TYPE: u32 = 188;
+pub const ASN1_R_WRONG_PUBLIC_KEY_TYPE: u32 = 189;
+pub const ASN1_R_WRONG_TAG: u32 = 190;
+pub const ASN1_R_WRONG_TYPE: u32 = 191;
+pub const ASN1_R_NESTED_TOO_DEEP: u32 = 192;
+pub const ASN1_TFLG_OPTIONAL: u32 = 1;
+pub const ASN1_TFLG_SET_OF: u32 = 2;
+pub const ASN1_TFLG_SEQUENCE_OF: u32 = 4;
+pub const ASN1_TFLG_SET_ORDER: u32 = 6;
+pub const ASN1_TFLG_SK_MASK: u32 = 6;
+pub const ASN1_TFLG_IMPTAG: u32 = 8;
+pub const ASN1_TFLG_EXPTAG: u32 = 16;
+pub const ASN1_TFLG_TAG_MASK: u32 = 24;
+pub const ASN1_TFLG_UNIVERSAL: u32 = 0;
+pub const ASN1_TFLG_APPLICATION: u32 = 64;
+pub const ASN1_TFLG_CONTEXT: u32 = 128;
+pub const ASN1_TFLG_PRIVATE: u32 = 192;
+pub const ASN1_TFLG_TAG_CLASS: u32 = 192;
+pub const ASN1_TFLG_ADB_MASK: u32 = 768;
+pub const ASN1_TFLG_ADB_OID: u32 = 256;
+pub const ASN1_TFLG_ADB_INT: u32 = 512;
+pub const ASN1_TFLG_COMBINE: u32 = 1024;
+pub const ASN1_TFLG_NDEF: u32 = 2048;
+pub const ASN1_ITYPE_PRIMITIVE: u32 = 0;
+pub const ASN1_ITYPE_SEQUENCE: u32 = 1;
+pub const ASN1_ITYPE_CHOICE: u32 = 2;
+pub const ASN1_ITYPE_COMPAT: u32 = 3;
+pub const ASN1_ITYPE_EXTERN: u32 = 4;
+pub const ASN1_ITYPE_MSTRING: u32 = 5;
+pub const ASN1_ITYPE_NDEF_SEQUENCE: u32 = 6;
+pub const ASN1_AFLG_REFCOUNT: u32 = 1;
+pub const ASN1_AFLG_ENCODING: u32 = 2;
+pub const ASN1_AFLG_BROKEN: u32 = 4;
+pub const ASN1_OP_NEW_PRE: u32 = 0;
+pub const ASN1_OP_NEW_POST: u32 = 1;
+pub const ASN1_OP_FREE_PRE: u32 = 2;
+pub const ASN1_OP_FREE_POST: u32 = 3;
+pub const ASN1_OP_D2I_PRE: u32 = 4;
+pub const ASN1_OP_D2I_POST: u32 = 5;
+pub const ASN1_OP_I2D_PRE: u32 = 6;
+pub const ASN1_OP_I2D_POST: u32 = 7;
+pub const ASN1_OP_PRINT_PRE: u32 = 8;
+pub const ASN1_OP_PRINT_POST: u32 = 9;
+pub const ASN1_OP_STREAM_PRE: u32 = 10;
+pub const ASN1_OP_STREAM_POST: u32 = 11;
+pub const ASN1_OP_DETACHED_PRE: u32 = 12;
+pub const ASN1_OP_DETACHED_POST: u32 = 13;
+pub const CBS_ASN1_BOOLEAN: u32 = 1;
+pub const CBS_ASN1_INTEGER: u32 = 2;
+pub const CBS_ASN1_BITSTRING: u32 = 3;
+pub const CBS_ASN1_OCTETSTRING: u32 = 4;
+pub const CBS_ASN1_NULL: u32 = 5;
+pub const CBS_ASN1_OBJECT: u32 = 6;
+pub const CBS_ASN1_ENUMERATED: u32 = 10;
+pub const CBS_ASN1_UTF8STRING: u32 = 12;
+pub const CBS_ASN1_NUMERICSTRING: u32 = 18;
+pub const CBS_ASN1_PRINTABLESTRING: u32 = 19;
+pub const CBS_ASN1_T61STRING: u32 = 20;
+pub const CBS_ASN1_VIDEOTEXSTRING: u32 = 21;
+pub const CBS_ASN1_IA5STRING: u32 = 22;
+pub const CBS_ASN1_UTCTIME: u32 = 23;
+pub const CBS_ASN1_GENERALIZEDTIME: u32 = 24;
+pub const CBS_ASN1_GRAPHICSTRING: u32 = 25;
+pub const CBS_ASN1_VISIBLESTRING: u32 = 26;
+pub const CBS_ASN1_GENERALSTRING: u32 = 27;
+pub const CBS_ASN1_UNIVERSALSTRING: u32 = 28;
+pub const CBS_ASN1_BMPSTRING: u32 = 30;
+pub const CBS_ASN1_TAG_SHIFT: u32 = 24;
+pub const CBS_ASN1_CONSTRUCTED: u32 = 536870912;
+pub const CBS_ASN1_UNIVERSAL: u32 = 0;
+pub const CBS_ASN1_APPLICATION: u32 = 1073741824;
+pub const CBS_ASN1_CONTEXT_SPECIFIC: u32 = 2147483648;
+pub const CBS_ASN1_PRIVATE: u32 = 3221225472;
+pub const CBS_ASN1_CLASS_MASK: u32 = 3221225472;
+pub const CBS_ASN1_TAG_NUMBER_MASK: u32 = 536870911;
+pub const CAST_ENCRYPT: u32 = 1;
+pub const CAST_DECRYPT: u32 = 0;
+pub const CAST_BLOCK: u32 = 8;
+pub const CAST_KEY_LENGTH: u32 = 16;
+pub const EVP_CIPH_STREAM_CIPHER: u32 = 0;
+pub const EVP_CIPH_ECB_MODE: u32 = 1;
+pub const EVP_CIPH_CBC_MODE: u32 = 2;
+pub const EVP_CIPH_CFB_MODE: u32 = 3;
+pub const EVP_CIPH_OFB_MODE: u32 = 4;
+pub const EVP_CIPH_CTR_MODE: u32 = 5;
+pub const EVP_CIPH_GCM_MODE: u32 = 6;
+pub const EVP_CIPH_XTS_MODE: u32 = 7;
+pub const EVP_CIPH_VARIABLE_LENGTH: u32 = 64;
+pub const EVP_CIPH_ALWAYS_CALL_INIT: u32 = 128;
+pub const EVP_CIPH_CUSTOM_IV: u32 = 256;
+pub const EVP_CIPH_CTRL_INIT: u32 = 512;
+pub const EVP_CIPH_FLAG_CUSTOM_CIPHER: u32 = 1024;
+pub const EVP_CIPH_FLAG_AEAD_CIPHER: u32 = 2048;
+pub const EVP_CIPH_CUSTOM_COPY: u32 = 4096;
+pub const EVP_CIPH_CCM_MODE: u32 = 0;
+pub const EVP_CIPH_WRAP_MODE: u32 = 0;
+pub const EVP_CIPHER_CTX_FLAG_WRAP_ALLOW: u32 = 0;
+pub const EVP_CIPH_NO_PADDING: u32 = 2048;
+pub const EVP_CTRL_INIT: u32 = 0;
+pub const EVP_CTRL_SET_KEY_LENGTH: u32 = 1;
+pub const EVP_CTRL_GET_RC2_KEY_BITS: u32 = 2;
+pub const EVP_CTRL_SET_RC2_KEY_BITS: u32 = 3;
+pub const EVP_CTRL_GET_RC5_ROUNDS: u32 = 4;
+pub const EVP_CTRL_SET_RC5_ROUNDS: u32 = 5;
+pub const EVP_CTRL_RAND_KEY: u32 = 6;
+pub const EVP_CTRL_PBE_PRF_NID: u32 = 7;
+pub const EVP_CTRL_COPY: u32 = 8;
+pub const EVP_CTRL_GCM_SET_IVLEN: u32 = 9;
+pub const EVP_CTRL_GCM_GET_TAG: u32 = 16;
+pub const EVP_CTRL_GCM_SET_TAG: u32 = 17;
+pub const EVP_CTRL_GCM_SET_IV_FIXED: u32 = 18;
+pub const EVP_CTRL_GCM_IV_GEN: u32 = 19;
+pub const EVP_CTRL_AEAD_SET_MAC_KEY: u32 = 23;
+pub const EVP_CTRL_GCM_SET_IV_INV: u32 = 24;
+pub const EVP_GCM_TLS_FIXED_IV_LEN: u32 = 4;
+pub const EVP_GCM_TLS_EXPLICIT_IV_LEN: u32 = 8;
+pub const EVP_GCM_TLS_TAG_LEN: u32 = 16;
+pub const EVP_MAX_KEY_LENGTH: u32 = 64;
+pub const EVP_MAX_IV_LENGTH: u32 = 16;
+pub const EVP_MAX_BLOCK_LENGTH: u32 = 32;
+pub const CIPHER_R_AES_KEY_SETUP_FAILED: u32 = 100;
+pub const CIPHER_R_BAD_DECRYPT: u32 = 101;
+pub const CIPHER_R_BAD_KEY_LENGTH: u32 = 102;
+pub const CIPHER_R_BUFFER_TOO_SMALL: u32 = 103;
+pub const CIPHER_R_CTRL_NOT_IMPLEMENTED: u32 = 104;
+pub const CIPHER_R_CTRL_OPERATION_NOT_IMPLEMENTED: u32 = 105;
+pub const CIPHER_R_DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH: u32 = 106;
+pub const CIPHER_R_INITIALIZATION_ERROR: u32 = 107;
+pub const CIPHER_R_INPUT_NOT_INITIALIZED: u32 = 108;
+pub const CIPHER_R_INVALID_AD_SIZE: u32 = 109;
+pub const CIPHER_R_INVALID_KEY_LENGTH: u32 = 110;
+pub const CIPHER_R_INVALID_NONCE_SIZE: u32 = 111;
+pub const CIPHER_R_INVALID_OPERATION: u32 = 112;
+pub const CIPHER_R_IV_TOO_LARGE: u32 = 113;
+pub const CIPHER_R_NO_CIPHER_SET: u32 = 114;
+pub const CIPHER_R_OUTPUT_ALIASES_INPUT: u32 = 115;
+pub const CIPHER_R_TAG_TOO_LARGE: u32 = 116;
+pub const CIPHER_R_TOO_LARGE: u32 = 117;
+pub const CIPHER_R_UNSUPPORTED_AD_SIZE: u32 = 118;
+pub const CIPHER_R_UNSUPPORTED_INPUT_SIZE: u32 = 119;
+pub const CIPHER_R_UNSUPPORTED_KEY_SIZE: u32 = 120;
+pub const CIPHER_R_UNSUPPORTED_NONCE_SIZE: u32 = 121;
+pub const CIPHER_R_UNSUPPORTED_TAG_SIZE: u32 = 122;
+pub const CIPHER_R_WRONG_FINAL_BLOCK_LENGTH: u32 = 123;
+pub const CIPHER_R_NO_DIRECTION_SET: u32 = 124;
+pub const CIPHER_R_INVALID_NONCE: u32 = 125;
+pub const OPENSSL_VERSION_TEXT: &'static [u8; 38usize] = b"OpenSSL 1.1.0 (compatible; BoringSSL)\0";
+pub const OPENSSL_VERSION: u32 = 0;
+pub const OPENSSL_CFLAGS: u32 = 1;
+pub const OPENSSL_BUILT_ON: u32 = 2;
+pub const OPENSSL_PLATFORM: u32 = 3;
+pub const OPENSSL_DIR: u32 = 4;
+pub const SSLEAY_VERSION: u32 = 0;
+pub const SSLEAY_CFLAGS: u32 = 1;
+pub const SSLEAY_BUILT_ON: u32 = 2;
+pub const SSLEAY_PLATFORM: u32 = 3;
+pub const SSLEAY_DIR: u32 = 4;
+pub const OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS: u32 = 0;
+pub const OPENSSL_INIT_LOAD_CRYPTO_STRINGS: u32 = 0;
+pub const OPENSSL_INIT_ADD_ALL_CIPHERS: u32 = 0;
+pub const OPENSSL_INIT_ADD_ALL_DIGESTS: u32 = 0;
+pub const OPENSSL_INIT_NO_ADD_ALL_CIPHERS: u32 = 0;
+pub const OPENSSL_INIT_NO_ADD_ALL_DIGESTS: u32 = 0;
+pub const OPENSSL_INIT_LOAD_CONFIG: u32 = 0;
+pub const OPENSSL_INIT_NO_LOAD_CONFIG: u32 = 0;
+pub const DES_ENCRYPT: u32 = 1;
+pub const DES_DECRYPT: u32 = 0;
+pub const DES_CBC_MODE: u32 = 0;
+pub const DES_PCBC_MODE: u32 = 1;
+pub const DH_GENERATOR_2: u32 = 2;
+pub const DH_GENERATOR_5: u32 = 5;
+pub const DH_CHECK_P_NOT_PRIME: u32 = 1;
+pub const DH_CHECK_P_NOT_SAFE_PRIME: u32 = 2;
+pub const DH_CHECK_UNABLE_TO_CHECK_GENERATOR: u32 = 4;
+pub const DH_CHECK_NOT_SUITABLE_GENERATOR: u32 = 8;
+pub const DH_CHECK_Q_NOT_PRIME: u32 = 16;
+pub const DH_CHECK_INVALID_Q_VALUE: u32 = 32;
+pub const DH_CHECK_INVALID_J_VALUE: u32 = 64;
+pub const DH_NOT_SUITABLE_GENERATOR: u32 = 8;
+pub const DH_UNABLE_TO_CHECK_GENERATOR: u32 = 4;
+pub const DH_CHECK_PUBKEY_TOO_SMALL: u32 = 1;
+pub const DH_CHECK_PUBKEY_TOO_LARGE: u32 = 2;
+pub const DH_CHECK_PUBKEY_INVALID: u32 = 4;
+pub const DH_R_BAD_GENERATOR: u32 = 100;
+pub const DH_R_INVALID_PUBKEY: u32 = 101;
+pub const DH_R_MODULUS_TOO_LARGE: u32 = 102;
+pub const DH_R_NO_PRIVATE_VALUE: u32 = 103;
+pub const DH_R_DECODE_ERROR: u32 = 104;
+pub const DH_R_ENCODE_ERROR: u32 = 105;
+pub const EVP_MAX_MD_SIZE: u32 = 64;
+pub const EVP_MAX_MD_BLOCK_SIZE: u32 = 128;
+pub const EVP_MD_FLAG_PKEY_DIGEST: u32 = 1;
+pub const EVP_MD_FLAG_DIGALGID_ABSENT: u32 = 2;
+pub const DIGEST_R_INPUT_NOT_INITIALIZED: u32 = 100;
+pub const DIGEST_R_DECODE_ERROR: u32 = 101;
+pub const DIGEST_R_UNKNOWN_HASH: u32 = 102;
+pub const DSA_R_BAD_Q_VALUE: u32 = 100;
+pub const DSA_R_MISSING_PARAMETERS: u32 = 101;
+pub const DSA_R_MODULUS_TOO_LARGE: u32 = 102;
+pub const DSA_R_NEED_NEW_SETUP_VALUES: u32 = 103;
+pub const DSA_R_BAD_VERSION: u32 = 104;
+pub const DSA_R_DECODE_ERROR: u32 = 105;
+pub const DSA_R_ENCODE_ERROR: u32 = 106;
+pub const OPENSSL_EC_NAMED_CURVE: u32 = 0;
+pub const EC_PKEY_NO_PARAMETERS: u32 = 1;
+pub const EC_PKEY_NO_PUBKEY: u32 = 2;
+pub const ECDSA_FLAG_OPAQUE: u32 = 1;
+pub const EC_R_BUFFER_TOO_SMALL: u32 = 100;
+pub const EC_R_COORDINATES_OUT_OF_RANGE: u32 = 101;
+pub const EC_R_D2I_ECPKPARAMETERS_FAILURE: u32 = 102;
+pub const EC_R_EC_GROUP_NEW_BY_NAME_FAILURE: u32 = 103;
+pub const EC_R_GROUP2PKPARAMETERS_FAILURE: u32 = 104;
+pub const EC_R_I2D_ECPKPARAMETERS_FAILURE: u32 = 105;
+pub const EC_R_INCOMPATIBLE_OBJECTS: u32 = 106;
+pub const EC_R_INVALID_COMPRESSED_POINT: u32 = 107;
+pub const EC_R_INVALID_COMPRESSION_BIT: u32 = 108;
+pub const EC_R_INVALID_ENCODING: u32 = 109;
+pub const EC_R_INVALID_FIELD: u32 = 110;
+pub const EC_R_INVALID_FORM: u32 = 111;
+pub const EC_R_INVALID_GROUP_ORDER: u32 = 112;
+pub const EC_R_INVALID_PRIVATE_KEY: u32 = 113;
+pub const EC_R_MISSING_PARAMETERS: u32 = 114;
+pub const EC_R_MISSING_PRIVATE_KEY: u32 = 115;
+pub const EC_R_NON_NAMED_CURVE: u32 = 116;
+pub const EC_R_NOT_INITIALIZED: u32 = 117;
+pub const EC_R_PKPARAMETERS2GROUP_FAILURE: u32 = 118;
+pub const EC_R_POINT_AT_INFINITY: u32 = 119;
+pub const EC_R_POINT_IS_NOT_ON_CURVE: u32 = 120;
+pub const EC_R_SLOT_FULL: u32 = 121;
+pub const EC_R_UNDEFINED_GENERATOR: u32 = 122;
+pub const EC_R_UNKNOWN_GROUP: u32 = 123;
+pub const EC_R_UNKNOWN_ORDER: u32 = 124;
+pub const EC_R_WRONG_ORDER: u32 = 125;
+pub const EC_R_BIGNUM_OUT_OF_RANGE: u32 = 126;
+pub const EC_R_WRONG_CURVE_PARAMETERS: u32 = 127;
+pub const EC_R_DECODE_ERROR: u32 = 128;
+pub const EC_R_ENCODE_ERROR: u32 = 129;
+pub const EC_R_GROUP_MISMATCH: u32 = 130;
+pub const EC_R_INVALID_COFACTOR: u32 = 131;
+pub const EC_R_PUBLIC_KEY_VALIDATION_FAILED: u32 = 132;
+pub const EC_R_INVALID_SCALAR: u32 = 133;
+pub const ECDH_R_KDF_FAILED: u32 = 100;
+pub const ECDH_R_NO_PRIVATE_VALUE: u32 = 101;
+pub const ECDH_R_POINT_ARITHMETIC_FAILURE: u32 = 102;
+pub const ECDSA_R_BAD_SIGNATURE: u32 = 100;
+pub const ECDSA_R_MISSING_PARAMETERS: u32 = 101;
+pub const ECDSA_R_NEED_NEW_SETUP_VALUES: u32 = 102;
+pub const ECDSA_R_NOT_IMPLEMENTED: u32 = 103;
+pub const ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED: u32 = 104;
+pub const ECDSA_R_ENCODE_ERROR: u32 = 105;
+pub const NID_undef: u32 = 0;
+pub const NID_rsadsi: u32 = 1;
+pub const NID_pkcs: u32 = 2;
+pub const NID_md2: u32 = 3;
+pub const NID_md5: u32 = 4;
+pub const NID_rc4: u32 = 5;
+pub const NID_rsaEncryption: u32 = 6;
+pub const NID_md2WithRSAEncryption: u32 = 7;
+pub const NID_md5WithRSAEncryption: u32 = 8;
+pub const NID_pbeWithMD2AndDES_CBC: u32 = 9;
+pub const NID_pbeWithMD5AndDES_CBC: u32 = 10;
+pub const NID_X500: u32 = 11;
+pub const NID_X509: u32 = 12;
+pub const NID_commonName: u32 = 13;
+pub const NID_countryName: u32 = 14;
+pub const NID_localityName: u32 = 15;
+pub const NID_stateOrProvinceName: u32 = 16;
+pub const NID_organizationName: u32 = 17;
+pub const NID_organizationalUnitName: u32 = 18;
+pub const NID_rsa: u32 = 19;
+pub const NID_pkcs7: u32 = 20;
+pub const NID_pkcs7_data: u32 = 21;
+pub const NID_pkcs7_signed: u32 = 22;
+pub const NID_pkcs7_enveloped: u32 = 23;
+pub const NID_pkcs7_signedAndEnveloped: u32 = 24;
+pub const NID_pkcs7_digest: u32 = 25;
+pub const NID_pkcs7_encrypted: u32 = 26;
+pub const NID_pkcs3: u32 = 27;
+pub const NID_dhKeyAgreement: u32 = 28;
+pub const NID_des_ecb: u32 = 29;
+pub const NID_des_cfb64: u32 = 30;
+pub const NID_des_cbc: u32 = 31;
+pub const NID_des_ede_ecb: u32 = 32;
+pub const NID_des_ede3_ecb: u32 = 33;
+pub const NID_idea_cbc: u32 = 34;
+pub const NID_idea_cfb64: u32 = 35;
+pub const NID_idea_ecb: u32 = 36;
+pub const NID_rc2_cbc: u32 = 37;
+pub const NID_rc2_ecb: u32 = 38;
+pub const NID_rc2_cfb64: u32 = 39;
+pub const NID_rc2_ofb64: u32 = 40;
+pub const NID_sha: u32 = 41;
+pub const NID_shaWithRSAEncryption: u32 = 42;
+pub const NID_des_ede_cbc: u32 = 43;
+pub const NID_des_ede3_cbc: u32 = 44;
+pub const NID_des_ofb64: u32 = 45;
+pub const NID_idea_ofb64: u32 = 46;
+pub const NID_pkcs9: u32 = 47;
+pub const NID_pkcs9_emailAddress: u32 = 48;
+pub const NID_pkcs9_unstructuredName: u32 = 49;
+pub const NID_pkcs9_contentType: u32 = 50;
+pub const NID_pkcs9_messageDigest: u32 = 51;
+pub const NID_pkcs9_signingTime: u32 = 52;
+pub const NID_pkcs9_countersignature: u32 = 53;
+pub const NID_pkcs9_challengePassword: u32 = 54;
+pub const NID_pkcs9_unstructuredAddress: u32 = 55;
+pub const NID_pkcs9_extCertAttributes: u32 = 56;
+pub const NID_netscape: u32 = 57;
+pub const NID_netscape_cert_extension: u32 = 58;
+pub const NID_netscape_data_type: u32 = 59;
+pub const NID_des_ede_cfb64: u32 = 60;
+pub const NID_des_ede3_cfb64: u32 = 61;
+pub const NID_des_ede_ofb64: u32 = 62;
+pub const NID_des_ede3_ofb64: u32 = 63;
+pub const NID_sha1: u32 = 64;
+pub const NID_sha1WithRSAEncryption: u32 = 65;
+pub const NID_dsaWithSHA: u32 = 66;
+pub const NID_dsa_2: u32 = 67;
+pub const NID_pbeWithSHA1AndRC2_CBC: u32 = 68;
+pub const NID_id_pbkdf2: u32 = 69;
+pub const NID_dsaWithSHA1_2: u32 = 70;
+pub const NID_netscape_cert_type: u32 = 71;
+pub const NID_netscape_base_url: u32 = 72;
+pub const NID_netscape_revocation_url: u32 = 73;
+pub const NID_netscape_ca_revocation_url: u32 = 74;
+pub const NID_netscape_renewal_url: u32 = 75;
+pub const NID_netscape_ca_policy_url: u32 = 76;
+pub const NID_netscape_ssl_server_name: u32 = 77;
+pub const NID_netscape_comment: u32 = 78;
+pub const NID_netscape_cert_sequence: u32 = 79;
+pub const NID_desx_cbc: u32 = 80;
+pub const NID_id_ce: u32 = 81;
+pub const NID_subject_key_identifier: u32 = 82;
+pub const NID_key_usage: u32 = 83;
+pub const NID_private_key_usage_period: u32 = 84;
+pub const NID_subject_alt_name: u32 = 85;
+pub const NID_issuer_alt_name: u32 = 86;
+pub const NID_basic_constraints: u32 = 87;
+pub const NID_crl_number: u32 = 88;
+pub const NID_certificate_policies: u32 = 89;
+pub const NID_authority_key_identifier: u32 = 90;
+pub const NID_bf_cbc: u32 = 91;
+pub const NID_bf_ecb: u32 = 92;
+pub const NID_bf_cfb64: u32 = 93;
+pub const NID_bf_ofb64: u32 = 94;
+pub const NID_mdc2: u32 = 95;
+pub const NID_mdc2WithRSA: u32 = 96;
+pub const NID_rc4_40: u32 = 97;
+pub const NID_rc2_40_cbc: u32 = 98;
+pub const NID_givenName: u32 = 99;
+pub const NID_surname: u32 = 100;
+pub const NID_initials: u32 = 101;
+pub const NID_crl_distribution_points: u32 = 103;
+pub const NID_md5WithRSA: u32 = 104;
+pub const NID_serialNumber: u32 = 105;
+pub const NID_title: u32 = 106;
+pub const NID_description: u32 = 107;
+pub const NID_cast5_cbc: u32 = 108;
+pub const NID_cast5_ecb: u32 = 109;
+pub const NID_cast5_cfb64: u32 = 110;
+pub const NID_cast5_ofb64: u32 = 111;
+pub const NID_pbeWithMD5AndCast5_CBC: u32 = 112;
+pub const NID_dsaWithSHA1: u32 = 113;
+pub const NID_md5_sha1: u32 = 114;
+pub const NID_sha1WithRSA: u32 = 115;
+pub const NID_dsa: u32 = 116;
+pub const NID_ripemd160: u32 = 117;
+pub const NID_ripemd160WithRSA: u32 = 119;
+pub const NID_rc5_cbc: u32 = 120;
+pub const NID_rc5_ecb: u32 = 121;
+pub const NID_rc5_cfb64: u32 = 122;
+pub const NID_rc5_ofb64: u32 = 123;
+pub const NID_zlib_compression: u32 = 125;
+pub const NID_ext_key_usage: u32 = 126;
+pub const NID_id_pkix: u32 = 127;
+pub const NID_id_kp: u32 = 128;
+pub const NID_server_auth: u32 = 129;
+pub const NID_client_auth: u32 = 130;
+pub const NID_code_sign: u32 = 131;
+pub const NID_email_protect: u32 = 132;
+pub const NID_time_stamp: u32 = 133;
+pub const NID_ms_code_ind: u32 = 134;
+pub const NID_ms_code_com: u32 = 135;
+pub const NID_ms_ctl_sign: u32 = 136;
+pub const NID_ms_sgc: u32 = 137;
+pub const NID_ms_efs: u32 = 138;
+pub const NID_ns_sgc: u32 = 139;
+pub const NID_delta_crl: u32 = 140;
+pub const NID_crl_reason: u32 = 141;
+pub const NID_invalidity_date: u32 = 142;
+pub const NID_sxnet: u32 = 143;
+pub const NID_pbe_WithSHA1And128BitRC4: u32 = 144;
+pub const NID_pbe_WithSHA1And40BitRC4: u32 = 145;
+pub const NID_pbe_WithSHA1And3_Key_TripleDES_CBC: u32 = 146;
+pub const NID_pbe_WithSHA1And2_Key_TripleDES_CBC: u32 = 147;
+pub const NID_pbe_WithSHA1And128BitRC2_CBC: u32 = 148;
+pub const NID_pbe_WithSHA1And40BitRC2_CBC: u32 = 149;
+pub const NID_keyBag: u32 = 150;
+pub const NID_pkcs8ShroudedKeyBag: u32 = 151;
+pub const NID_certBag: u32 = 152;
+pub const NID_crlBag: u32 = 153;
+pub const NID_secretBag: u32 = 154;
+pub const NID_safeContentsBag: u32 = 155;
+pub const NID_friendlyName: u32 = 156;
+pub const NID_localKeyID: u32 = 157;
+pub const NID_x509Certificate: u32 = 158;
+pub const NID_sdsiCertificate: u32 = 159;
+pub const NID_x509Crl: u32 = 160;
+pub const NID_pbes2: u32 = 161;
+pub const NID_pbmac1: u32 = 162;
+pub const NID_hmacWithSHA1: u32 = 163;
+pub const NID_id_qt_cps: u32 = 164;
+pub const NID_id_qt_unotice: u32 = 165;
+pub const NID_rc2_64_cbc: u32 = 166;
+pub const NID_SMIMECapabilities: u32 = 167;
+pub const NID_pbeWithMD2AndRC2_CBC: u32 = 168;
+pub const NID_pbeWithMD5AndRC2_CBC: u32 = 169;
+pub const NID_pbeWithSHA1AndDES_CBC: u32 = 170;
+pub const NID_ms_ext_req: u32 = 171;
+pub const NID_ext_req: u32 = 172;
+pub const NID_name: u32 = 173;
+pub const NID_dnQualifier: u32 = 174;
+pub const NID_id_pe: u32 = 175;
+pub const NID_id_ad: u32 = 176;
+pub const NID_info_access: u32 = 177;
+pub const NID_ad_OCSP: u32 = 178;
+pub const NID_ad_ca_issuers: u32 = 179;
+pub const NID_OCSP_sign: u32 = 180;
+pub const NID_iso: u32 = 181;
+pub const NID_member_body: u32 = 182;
+pub const NID_ISO_US: u32 = 183;
+pub const NID_X9_57: u32 = 184;
+pub const NID_X9cm: u32 = 185;
+pub const NID_pkcs1: u32 = 186;
+pub const NID_pkcs5: u32 = 187;
+pub const NID_SMIME: u32 = 188;
+pub const NID_id_smime_mod: u32 = 189;
+pub const NID_id_smime_ct: u32 = 190;
+pub const NID_id_smime_aa: u32 = 191;
+pub const NID_id_smime_alg: u32 = 192;
+pub const NID_id_smime_cd: u32 = 193;
+pub const NID_id_smime_spq: u32 = 194;
+pub const NID_id_smime_cti: u32 = 195;
+pub const NID_id_smime_mod_cms: u32 = 196;
+pub const NID_id_smime_mod_ess: u32 = 197;
+pub const NID_id_smime_mod_oid: u32 = 198;
+pub const NID_id_smime_mod_msg_v3: u32 = 199;
+pub const NID_id_smime_mod_ets_eSignature_88: u32 = 200;
+pub const NID_id_smime_mod_ets_eSignature_97: u32 = 201;
+pub const NID_id_smime_mod_ets_eSigPolicy_88: u32 = 202;
+pub const NID_id_smime_mod_ets_eSigPolicy_97: u32 = 203;
+pub const NID_id_smime_ct_receipt: u32 = 204;
+pub const NID_id_smime_ct_authData: u32 = 205;
+pub const NID_id_smime_ct_publishCert: u32 = 206;
+pub const NID_id_smime_ct_TSTInfo: u32 = 207;
+pub const NID_id_smime_ct_TDTInfo: u32 = 208;
+pub const NID_id_smime_ct_contentInfo: u32 = 209;
+pub const NID_id_smime_ct_DVCSRequestData: u32 = 210;
+pub const NID_id_smime_ct_DVCSResponseData: u32 = 211;
+pub const NID_id_smime_aa_receiptRequest: u32 = 212;
+pub const NID_id_smime_aa_securityLabel: u32 = 213;
+pub const NID_id_smime_aa_mlExpandHistory: u32 = 214;
+pub const NID_id_smime_aa_contentHint: u32 = 215;
+pub const NID_id_smime_aa_msgSigDigest: u32 = 216;
+pub const NID_id_smime_aa_encapContentType: u32 = 217;
+pub const NID_id_smime_aa_contentIdentifier: u32 = 218;
+pub const NID_id_smime_aa_macValue: u32 = 219;
+pub const NID_id_smime_aa_equivalentLabels: u32 = 220;
+pub const NID_id_smime_aa_contentReference: u32 = 221;
+pub const NID_id_smime_aa_encrypKeyPref: u32 = 222;
+pub const NID_id_smime_aa_signingCertificate: u32 = 223;
+pub const NID_id_smime_aa_smimeEncryptCerts: u32 = 224;
+pub const NID_id_smime_aa_timeStampToken: u32 = 225;
+pub const NID_id_smime_aa_ets_sigPolicyId: u32 = 226;
+pub const NID_id_smime_aa_ets_commitmentType: u32 = 227;
+pub const NID_id_smime_aa_ets_signerLocation: u32 = 228;
+pub const NID_id_smime_aa_ets_signerAttr: u32 = 229;
+pub const NID_id_smime_aa_ets_otherSigCert: u32 = 230;
+pub const NID_id_smime_aa_ets_contentTimestamp: u32 = 231;
+pub const NID_id_smime_aa_ets_CertificateRefs: u32 = 232;
+pub const NID_id_smime_aa_ets_RevocationRefs: u32 = 233;
+pub const NID_id_smime_aa_ets_certValues: u32 = 234;
+pub const NID_id_smime_aa_ets_revocationValues: u32 = 235;
+pub const NID_id_smime_aa_ets_escTimeStamp: u32 = 236;
+pub const NID_id_smime_aa_ets_certCRLTimestamp: u32 = 237;
+pub const NID_id_smime_aa_ets_archiveTimeStamp: u32 = 238;
+pub const NID_id_smime_aa_signatureType: u32 = 239;
+pub const NID_id_smime_aa_dvcs_dvc: u32 = 240;
+pub const NID_id_smime_alg_ESDHwith3DES: u32 = 241;
+pub const NID_id_smime_alg_ESDHwithRC2: u32 = 242;
+pub const NID_id_smime_alg_3DESwrap: u32 = 243;
+pub const NID_id_smime_alg_RC2wrap: u32 = 244;
+pub const NID_id_smime_alg_ESDH: u32 = 245;
+pub const NID_id_smime_alg_CMS3DESwrap: u32 = 246;
+pub const NID_id_smime_alg_CMSRC2wrap: u32 = 247;
+pub const NID_id_smime_cd_ldap: u32 = 248;
+pub const NID_id_smime_spq_ets_sqt_uri: u32 = 249;
+pub const NID_id_smime_spq_ets_sqt_unotice: u32 = 250;
+pub const NID_id_smime_cti_ets_proofOfOrigin: u32 = 251;
+pub const NID_id_smime_cti_ets_proofOfReceipt: u32 = 252;
+pub const NID_id_smime_cti_ets_proofOfDelivery: u32 = 253;
+pub const NID_id_smime_cti_ets_proofOfSender: u32 = 254;
+pub const NID_id_smime_cti_ets_proofOfApproval: u32 = 255;
+pub const NID_id_smime_cti_ets_proofOfCreation: u32 = 256;
+pub const NID_md4: u32 = 257;
+pub const NID_id_pkix_mod: u32 = 258;
+pub const NID_id_qt: u32 = 259;
+pub const NID_id_it: u32 = 260;
+pub const NID_id_pkip: u32 = 261;
+pub const NID_id_alg: u32 = 262;
+pub const NID_id_cmc: u32 = 263;
+pub const NID_id_on: u32 = 264;
+pub const NID_id_pda: u32 = 265;
+pub const NID_id_aca: u32 = 266;
+pub const NID_id_qcs: u32 = 267;
+pub const NID_id_cct: u32 = 268;
+pub const NID_id_pkix1_explicit_88: u32 = 269;
+pub const NID_id_pkix1_implicit_88: u32 = 270;
+pub const NID_id_pkix1_explicit_93: u32 = 271;
+pub const NID_id_pkix1_implicit_93: u32 = 272;
+pub const NID_id_mod_crmf: u32 = 273;
+pub const NID_id_mod_cmc: u32 = 274;
+pub const NID_id_mod_kea_profile_88: u32 = 275;
+pub const NID_id_mod_kea_profile_93: u32 = 276;
+pub const NID_id_mod_cmp: u32 = 277;
+pub const NID_id_mod_qualified_cert_88: u32 = 278;
+pub const NID_id_mod_qualified_cert_93: u32 = 279;
+pub const NID_id_mod_attribute_cert: u32 = 280;
+pub const NID_id_mod_timestamp_protocol: u32 = 281;
+pub const NID_id_mod_ocsp: u32 = 282;
+pub const NID_id_mod_dvcs: u32 = 283;
+pub const NID_id_mod_cmp2000: u32 = 284;
+pub const NID_biometricInfo: u32 = 285;
+pub const NID_qcStatements: u32 = 286;
+pub const NID_ac_auditEntity: u32 = 287;
+pub const NID_ac_targeting: u32 = 288;
+pub const NID_aaControls: u32 = 289;
+pub const NID_sbgp_ipAddrBlock: u32 = 290;
+pub const NID_sbgp_autonomousSysNum: u32 = 291;
+pub const NID_sbgp_routerIdentifier: u32 = 292;
+pub const NID_textNotice: u32 = 293;
+pub const NID_ipsecEndSystem: u32 = 294;
+pub const NID_ipsecTunnel: u32 = 295;
+pub const NID_ipsecUser: u32 = 296;
+pub const NID_dvcs: u32 = 297;
+pub const NID_id_it_caProtEncCert: u32 = 298;
+pub const NID_id_it_signKeyPairTypes: u32 = 299;
+pub const NID_id_it_encKeyPairTypes: u32 = 300;
+pub const NID_id_it_preferredSymmAlg: u32 = 301;
+pub const NID_id_it_caKeyUpdateInfo: u32 = 302;
+pub const NID_id_it_currentCRL: u32 = 303;
+pub const NID_id_it_unsupportedOIDs: u32 = 304;
+pub const NID_id_it_subscriptionRequest: u32 = 305;
+pub const NID_id_it_subscriptionResponse: u32 = 306;
+pub const NID_id_it_keyPairParamReq: u32 = 307;
+pub const NID_id_it_keyPairParamRep: u32 = 308;
+pub const NID_id_it_revPassphrase: u32 = 309;
+pub const NID_id_it_implicitConfirm: u32 = 310;
+pub const NID_id_it_confirmWaitTime: u32 = 311;
+pub const NID_id_it_origPKIMessage: u32 = 312;
+pub const NID_id_regCtrl: u32 = 313;
+pub const NID_id_regInfo: u32 = 314;
+pub const NID_id_regCtrl_regToken: u32 = 315;
+pub const NID_id_regCtrl_authenticator: u32 = 316;
+pub const NID_id_regCtrl_pkiPublicationInfo: u32 = 317;
+pub const NID_id_regCtrl_pkiArchiveOptions: u32 = 318;
+pub const NID_id_regCtrl_oldCertID: u32 = 319;
+pub const NID_id_regCtrl_protocolEncrKey: u32 = 320;
+pub const NID_id_regInfo_utf8Pairs: u32 = 321;
+pub const NID_id_regInfo_certReq: u32 = 322;
+pub const NID_id_alg_des40: u32 = 323;
+pub const NID_id_alg_noSignature: u32 = 324;
+pub const NID_id_alg_dh_sig_hmac_sha1: u32 = 325;
+pub const NID_id_alg_dh_pop: u32 = 326;
+pub const NID_id_cmc_statusInfo: u32 = 327;
+pub const NID_id_cmc_identification: u32 = 328;
+pub const NID_id_cmc_identityProof: u32 = 329;
+pub const NID_id_cmc_dataReturn: u32 = 330;
+pub const NID_id_cmc_transactionId: u32 = 331;
+pub const NID_id_cmc_senderNonce: u32 = 332;
+pub const NID_id_cmc_recipientNonce: u32 = 333;
+pub const NID_id_cmc_addExtensions: u32 = 334;
+pub const NID_id_cmc_encryptedPOP: u32 = 335;
+pub const NID_id_cmc_decryptedPOP: u32 = 336;
+pub const NID_id_cmc_lraPOPWitness: u32 = 337;
+pub const NID_id_cmc_getCert: u32 = 338;
+pub const NID_id_cmc_getCRL: u32 = 339;
+pub const NID_id_cmc_revokeRequest: u32 = 340;
+pub const NID_id_cmc_regInfo: u32 = 341;
+pub const NID_id_cmc_responseInfo: u32 = 342;
+pub const NID_id_cmc_queryPending: u32 = 343;
+pub const NID_id_cmc_popLinkRandom: u32 = 344;
+pub const NID_id_cmc_popLinkWitness: u32 = 345;
+pub const NID_id_cmc_confirmCertAcceptance: u32 = 346;
+pub const NID_id_on_personalData: u32 = 347;
+pub const NID_id_pda_dateOfBirth: u32 = 348;
+pub const NID_id_pda_placeOfBirth: u32 = 349;
+pub const NID_id_pda_gender: u32 = 351;
+pub const NID_id_pda_countryOfCitizenship: u32 = 352;
+pub const NID_id_pda_countryOfResidence: u32 = 353;
+pub const NID_id_aca_authenticationInfo: u32 = 354;
+pub const NID_id_aca_accessIdentity: u32 = 355;
+pub const NID_id_aca_chargingIdentity: u32 = 356;
+pub const NID_id_aca_group: u32 = 357;
+pub const NID_id_aca_role: u32 = 358;
+pub const NID_id_qcs_pkixQCSyntax_v1: u32 = 359;
+pub const NID_id_cct_crs: u32 = 360;
+pub const NID_id_cct_PKIData: u32 = 361;
+pub const NID_id_cct_PKIResponse: u32 = 362;
+pub const NID_ad_timeStamping: u32 = 363;
+pub const NID_ad_dvcs: u32 = 364;
+pub const NID_id_pkix_OCSP_basic: u32 = 365;
+pub const NID_id_pkix_OCSP_Nonce: u32 = 366;
+pub const NID_id_pkix_OCSP_CrlID: u32 = 367;
+pub const NID_id_pkix_OCSP_acceptableResponses: u32 = 368;
+pub const NID_id_pkix_OCSP_noCheck: u32 = 369;
+pub const NID_id_pkix_OCSP_archiveCutoff: u32 = 370;
+pub const NID_id_pkix_OCSP_serviceLocator: u32 = 371;
+pub const NID_id_pkix_OCSP_extendedStatus: u32 = 372;
+pub const NID_id_pkix_OCSP_valid: u32 = 373;
+pub const NID_id_pkix_OCSP_path: u32 = 374;
+pub const NID_id_pkix_OCSP_trustRoot: u32 = 375;
+pub const NID_algorithm: u32 = 376;
+pub const NID_rsaSignature: u32 = 377;
+pub const NID_X500algorithms: u32 = 378;
+pub const NID_org: u32 = 379;
+pub const NID_dod: u32 = 380;
+pub const NID_iana: u32 = 381;
+pub const NID_Directory: u32 = 382;
+pub const NID_Management: u32 = 383;
+pub const NID_Experimental: u32 = 384;
+pub const NID_Private: u32 = 385;
+pub const NID_Security: u32 = 386;
+pub const NID_SNMPv2: u32 = 387;
+pub const NID_Mail: u32 = 388;
+pub const NID_Enterprises: u32 = 389;
+pub const NID_dcObject: u32 = 390;
+pub const NID_domainComponent: u32 = 391;
+pub const NID_Domain: u32 = 392;
+pub const NID_selected_attribute_types: u32 = 394;
+pub const NID_clearance: u32 = 395;
+pub const NID_md4WithRSAEncryption: u32 = 396;
+pub const NID_ac_proxying: u32 = 397;
+pub const NID_sinfo_access: u32 = 398;
+pub const NID_id_aca_encAttrs: u32 = 399;
+pub const NID_role: u32 = 400;
+pub const NID_policy_constraints: u32 = 401;
+pub const NID_target_information: u32 = 402;
+pub const NID_no_rev_avail: u32 = 403;
+pub const NID_ansi_X9_62: u32 = 405;
+pub const NID_X9_62_prime_field: u32 = 406;
+pub const NID_X9_62_characteristic_two_field: u32 = 407;
+pub const NID_X9_62_id_ecPublicKey: u32 = 408;
+pub const NID_X9_62_prime192v1: u32 = 409;
+pub const NID_X9_62_prime192v2: u32 = 410;
+pub const NID_X9_62_prime192v3: u32 = 411;
+pub const NID_X9_62_prime239v1: u32 = 412;
+pub const NID_X9_62_prime239v2: u32 = 413;
+pub const NID_X9_62_prime239v3: u32 = 414;
+pub const NID_X9_62_prime256v1: u32 = 415;
+pub const NID_ecdsa_with_SHA1: u32 = 416;
+pub const NID_ms_csp_name: u32 = 417;
+pub const NID_aes_128_ecb: u32 = 418;
+pub const NID_aes_128_cbc: u32 = 419;
+pub const NID_aes_128_ofb128: u32 = 420;
+pub const NID_aes_128_cfb128: u32 = 421;
+pub const NID_aes_192_ecb: u32 = 422;
+pub const NID_aes_192_cbc: u32 = 423;
+pub const NID_aes_192_ofb128: u32 = 424;
+pub const NID_aes_192_cfb128: u32 = 425;
+pub const NID_aes_256_ecb: u32 = 426;
+pub const NID_aes_256_cbc: u32 = 427;
+pub const NID_aes_256_ofb128: u32 = 428;
+pub const NID_aes_256_cfb128: u32 = 429;
+pub const NID_hold_instruction_code: u32 = 430;
+pub const NID_hold_instruction_none: u32 = 431;
+pub const NID_hold_instruction_call_issuer: u32 = 432;
+pub const NID_hold_instruction_reject: u32 = 433;
+pub const NID_data: u32 = 434;
+pub const NID_pss: u32 = 435;
+pub const NID_ucl: u32 = 436;
+pub const NID_pilot: u32 = 437;
+pub const NID_pilotAttributeType: u32 = 438;
+pub const NID_pilotAttributeSyntax: u32 = 439;
+pub const NID_pilotObjectClass: u32 = 440;
+pub const NID_pilotGroups: u32 = 441;
+pub const NID_iA5StringSyntax: u32 = 442;
+pub const NID_caseIgnoreIA5StringSyntax: u32 = 443;
+pub const NID_pilotObject: u32 = 444;
+pub const NID_pilotPerson: u32 = 445;
+pub const NID_account: u32 = 446;
+pub const NID_document: u32 = 447;
+pub const NID_room: u32 = 448;
+pub const NID_documentSeries: u32 = 449;
+pub const NID_rFC822localPart: u32 = 450;
+pub const NID_dNSDomain: u32 = 451;
+pub const NID_domainRelatedObject: u32 = 452;
+pub const NID_friendlyCountry: u32 = 453;
+pub const NID_simpleSecurityObject: u32 = 454;
+pub const NID_pilotOrganization: u32 = 455;
+pub const NID_pilotDSA: u32 = 456;
+pub const NID_qualityLabelledData: u32 = 457;
+pub const NID_userId: u32 = 458;
+pub const NID_textEncodedORAddress: u32 = 459;
+pub const NID_rfc822Mailbox: u32 = 460;
+pub const NID_info: u32 = 461;
+pub const NID_favouriteDrink: u32 = 462;
+pub const NID_roomNumber: u32 = 463;
+pub const NID_photo: u32 = 464;
+pub const NID_userClass: u32 = 465;
+pub const NID_host: u32 = 466;
+pub const NID_manager: u32 = 467;
+pub const NID_documentIdentifier: u32 = 468;
+pub const NID_documentTitle: u32 = 469;
+pub const NID_documentVersion: u32 = 470;
+pub const NID_documentAuthor: u32 = 471;
+pub const NID_documentLocation: u32 = 472;
+pub const NID_homeTelephoneNumber: u32 = 473;
+pub const NID_secretary: u32 = 474;
+pub const NID_otherMailbox: u32 = 475;
+pub const NID_lastModifiedTime: u32 = 476;
+pub const NID_lastModifiedBy: u32 = 477;
+pub const NID_aRecord: u32 = 478;
+pub const NID_pilotAttributeType27: u32 = 479;
+pub const NID_mXRecord: u32 = 480;
+pub const NID_nSRecord: u32 = 481;
+pub const NID_sOARecord: u32 = 482;
+pub const NID_cNAMERecord: u32 = 483;
+pub const NID_associatedDomain: u32 = 484;
+pub const NID_associatedName: u32 = 485;
+pub const NID_homePostalAddress: u32 = 486;
+pub const NID_personalTitle: u32 = 487;
+pub const NID_mobileTelephoneNumber: u32 = 488;
+pub const NID_pagerTelephoneNumber: u32 = 489;
+pub const NID_friendlyCountryName: u32 = 490;
+pub const NID_organizationalStatus: u32 = 491;
+pub const NID_janetMailbox: u32 = 492;
+pub const NID_mailPreferenceOption: u32 = 493;
+pub const NID_buildingName: u32 = 494;
+pub const NID_dSAQuality: u32 = 495;
+pub const NID_singleLevelQuality: u32 = 496;
+pub const NID_subtreeMinimumQuality: u32 = 497;
+pub const NID_subtreeMaximumQuality: u32 = 498;
+pub const NID_personalSignature: u32 = 499;
+pub const NID_dITRedirect: u32 = 500;
+pub const NID_audio: u32 = 501;
+pub const NID_documentPublisher: u32 = 502;
+pub const NID_x500UniqueIdentifier: u32 = 503;
+pub const NID_mime_mhs: u32 = 504;
+pub const NID_mime_mhs_headings: u32 = 505;
+pub const NID_mime_mhs_bodies: u32 = 506;
+pub const NID_id_hex_partial_message: u32 = 507;
+pub const NID_id_hex_multipart_message: u32 = 508;
+pub const NID_generationQualifier: u32 = 509;
+pub const NID_pseudonym: u32 = 510;
+pub const NID_id_set: u32 = 512;
+pub const NID_set_ctype: u32 = 513;
+pub const NID_set_msgExt: u32 = 514;
+pub const NID_set_attr: u32 = 515;
+pub const NID_set_policy: u32 = 516;
+pub const NID_set_certExt: u32 = 517;
+pub const NID_set_brand: u32 = 518;
+pub const NID_setct_PANData: u32 = 519;
+pub const NID_setct_PANToken: u32 = 520;
+pub const NID_setct_PANOnly: u32 = 521;
+pub const NID_setct_OIData: u32 = 522;
+pub const NID_setct_PI: u32 = 523;
+pub const NID_setct_PIData: u32 = 524;
+pub const NID_setct_PIDataUnsigned: u32 = 525;
+pub const NID_setct_HODInput: u32 = 526;
+pub const NID_setct_AuthResBaggage: u32 = 527;
+pub const NID_setct_AuthRevReqBaggage: u32 = 528;
+pub const NID_setct_AuthRevResBaggage: u32 = 529;
+pub const NID_setct_CapTokenSeq: u32 = 530;
+pub const NID_setct_PInitResData: u32 = 531;
+pub const NID_setct_PI_TBS: u32 = 532;
+pub const NID_setct_PResData: u32 = 533;
+pub const NID_setct_AuthReqTBS: u32 = 534;
+pub const NID_setct_AuthResTBS: u32 = 535;
+pub const NID_setct_AuthResTBSX: u32 = 536;
+pub const NID_setct_AuthTokenTBS: u32 = 537;
+pub const NID_setct_CapTokenData: u32 = 538;
+pub const NID_setct_CapTokenTBS: u32 = 539;
+pub const NID_setct_AcqCardCodeMsg: u32 = 540;
+pub const NID_setct_AuthRevReqTBS: u32 = 541;
+pub const NID_setct_AuthRevResData: u32 = 542;
+pub const NID_setct_AuthRevResTBS: u32 = 543;
+pub const NID_setct_CapReqTBS: u32 = 544;
+pub const NID_setct_CapReqTBSX: u32 = 545;
+pub const NID_setct_CapResData: u32 = 546;
+pub const NID_setct_CapRevReqTBS: u32 = 547;
+pub const NID_setct_CapRevReqTBSX: u32 = 548;
+pub const NID_setct_CapRevResData: u32 = 549;
+pub const NID_setct_CredReqTBS: u32 = 550;
+pub const NID_setct_CredReqTBSX: u32 = 551;
+pub const NID_setct_CredResData: u32 = 552;
+pub const NID_setct_CredRevReqTBS: u32 = 553;
+pub const NID_setct_CredRevReqTBSX: u32 = 554;
+pub const NID_setct_CredRevResData: u32 = 555;
+pub const NID_setct_PCertReqData: u32 = 556;
+pub const NID_setct_PCertResTBS: u32 = 557;
+pub const NID_setct_BatchAdminReqData: u32 = 558;
+pub const NID_setct_BatchAdminResData: u32 = 559;
+pub const NID_setct_CardCInitResTBS: u32 = 560;
+pub const NID_setct_MeAqCInitResTBS: u32 = 561;
+pub const NID_setct_RegFormResTBS: u32 = 562;
+pub const NID_setct_CertReqData: u32 = 563;
+pub const NID_setct_CertReqTBS: u32 = 564;
+pub const NID_setct_CertResData: u32 = 565;
+pub const NID_setct_CertInqReqTBS: u32 = 566;
+pub const NID_setct_ErrorTBS: u32 = 567;
+pub const NID_setct_PIDualSignedTBE: u32 = 568;
+pub const NID_setct_PIUnsignedTBE: u32 = 569;
+pub const NID_setct_AuthReqTBE: u32 = 570;
+pub const NID_setct_AuthResTBE: u32 = 571;
+pub const NID_setct_AuthResTBEX: u32 = 572;
+pub const NID_setct_AuthTokenTBE: u32 = 573;
+pub const NID_setct_CapTokenTBE: u32 = 574;
+pub const NID_setct_CapTokenTBEX: u32 = 575;
+pub const NID_setct_AcqCardCodeMsgTBE: u32 = 576;
+pub const NID_setct_AuthRevReqTBE: u32 = 577;
+pub const NID_setct_AuthRevResTBE: u32 = 578;
+pub const NID_setct_AuthRevResTBEB: u32 = 579;
+pub const NID_setct_CapReqTBE: u32 = 580;
+pub const NID_setct_CapReqTBEX: u32 = 581;
+pub const NID_setct_CapResTBE: u32 = 582;
+pub const NID_setct_CapRevReqTBE: u32 = 583;
+pub const NID_setct_CapRevReqTBEX: u32 = 584;
+pub const NID_setct_CapRevResTBE: u32 = 585;
+pub const NID_setct_CredReqTBE: u32 = 586;
+pub const NID_setct_CredReqTBEX: u32 = 587;
+pub const NID_setct_CredResTBE: u32 = 588;
+pub const NID_setct_CredRevReqTBE: u32 = 589;
+pub const NID_setct_CredRevReqTBEX: u32 = 590;
+pub const NID_setct_CredRevResTBE: u32 = 591;
+pub const NID_setct_BatchAdminReqTBE: u32 = 592;
+pub const NID_setct_BatchAdminResTBE: u32 = 593;
+pub const NID_setct_RegFormReqTBE: u32 = 594;
+pub const NID_setct_CertReqTBE: u32 = 595;
+pub const NID_setct_CertReqTBEX: u32 = 596;
+pub const NID_setct_CertResTBE: u32 = 597;
+pub const NID_setct_CRLNotificationTBS: u32 = 598;
+pub const NID_setct_CRLNotificationResTBS: u32 = 599;
+pub const NID_setct_BCIDistributionTBS: u32 = 600;
+pub const NID_setext_genCrypt: u32 = 601;
+pub const NID_setext_miAuth: u32 = 602;
+pub const NID_setext_pinSecure: u32 = 603;
+pub const NID_setext_pinAny: u32 = 604;
+pub const NID_setext_track2: u32 = 605;
+pub const NID_setext_cv: u32 = 606;
+pub const NID_set_policy_root: u32 = 607;
+pub const NID_setCext_hashedRoot: u32 = 608;
+pub const NID_setCext_certType: u32 = 609;
+pub const NID_setCext_merchData: u32 = 610;
+pub const NID_setCext_cCertRequired: u32 = 611;
+pub const NID_setCext_tunneling: u32 = 612;
+pub const NID_setCext_setExt: u32 = 613;
+pub const NID_setCext_setQualf: u32 = 614;
+pub const NID_setCext_PGWYcapabilities: u32 = 615;
+pub const NID_setCext_TokenIdentifier: u32 = 616;
+pub const NID_setCext_Track2Data: u32 = 617;
+pub const NID_setCext_TokenType: u32 = 618;
+pub const NID_setCext_IssuerCapabilities: u32 = 619;
+pub const NID_setAttr_Cert: u32 = 620;
+pub const NID_setAttr_PGWYcap: u32 = 621;
+pub const NID_setAttr_TokenType: u32 = 622;
+pub const NID_setAttr_IssCap: u32 = 623;
+pub const NID_set_rootKeyThumb: u32 = 624;
+pub const NID_set_addPolicy: u32 = 625;
+pub const NID_setAttr_Token_EMV: u32 = 626;
+pub const NID_setAttr_Token_B0Prime: u32 = 627;
+pub const NID_setAttr_IssCap_CVM: u32 = 628;
+pub const NID_setAttr_IssCap_T2: u32 = 629;
+pub const NID_setAttr_IssCap_Sig: u32 = 630;
+pub const NID_setAttr_GenCryptgrm: u32 = 631;
+pub const NID_setAttr_T2Enc: u32 = 632;
+pub const NID_setAttr_T2cleartxt: u32 = 633;
+pub const NID_setAttr_TokICCsig: u32 = 634;
+pub const NID_setAttr_SecDevSig: u32 = 635;
+pub const NID_set_brand_IATA_ATA: u32 = 636;
+pub const NID_set_brand_Diners: u32 = 637;
+pub const NID_set_brand_AmericanExpress: u32 = 638;
+pub const NID_set_brand_JCB: u32 = 639;
+pub const NID_set_brand_Visa: u32 = 640;
+pub const NID_set_brand_MasterCard: u32 = 641;
+pub const NID_set_brand_Novus: u32 = 642;
+pub const NID_des_cdmf: u32 = 643;
+pub const NID_rsaOAEPEncryptionSET: u32 = 644;
+pub const NID_itu_t: u32 = 645;
+pub const NID_joint_iso_itu_t: u32 = 646;
+pub const NID_international_organizations: u32 = 647;
+pub const NID_ms_smartcard_login: u32 = 648;
+pub const NID_ms_upn: u32 = 649;
+pub const NID_aes_128_cfb1: u32 = 650;
+pub const NID_aes_192_cfb1: u32 = 651;
+pub const NID_aes_256_cfb1: u32 = 652;
+pub const NID_aes_128_cfb8: u32 = 653;
+pub const NID_aes_192_cfb8: u32 = 654;
+pub const NID_aes_256_cfb8: u32 = 655;
+pub const NID_des_cfb1: u32 = 656;
+pub const NID_des_cfb8: u32 = 657;
+pub const NID_des_ede3_cfb1: u32 = 658;
+pub const NID_des_ede3_cfb8: u32 = 659;
+pub const NID_streetAddress: u32 = 660;
+pub const NID_postalCode: u32 = 661;
+pub const NID_id_ppl: u32 = 662;
+pub const NID_proxyCertInfo: u32 = 663;
+pub const NID_id_ppl_anyLanguage: u32 = 664;
+pub const NID_id_ppl_inheritAll: u32 = 665;
+pub const NID_name_constraints: u32 = 666;
+pub const NID_Independent: u32 = 667;
+pub const NID_sha256WithRSAEncryption: u32 = 668;
+pub const NID_sha384WithRSAEncryption: u32 = 669;
+pub const NID_sha512WithRSAEncryption: u32 = 670;
+pub const NID_sha224WithRSAEncryption: u32 = 671;
+pub const NID_sha256: u32 = 672;
+pub const NID_sha384: u32 = 673;
+pub const NID_sha512: u32 = 674;
+pub const NID_sha224: u32 = 675;
+pub const NID_identified_organization: u32 = 676;
+pub const NID_certicom_arc: u32 = 677;
+pub const NID_wap: u32 = 678;
+pub const NID_wap_wsg: u32 = 679;
+pub const NID_X9_62_id_characteristic_two_basis: u32 = 680;
+pub const NID_X9_62_onBasis: u32 = 681;
+pub const NID_X9_62_tpBasis: u32 = 682;
+pub const NID_X9_62_ppBasis: u32 = 683;
+pub const NID_X9_62_c2pnb163v1: u32 = 684;
+pub const NID_X9_62_c2pnb163v2: u32 = 685;
+pub const NID_X9_62_c2pnb163v3: u32 = 686;
+pub const NID_X9_62_c2pnb176v1: u32 = 687;
+pub const NID_X9_62_c2tnb191v1: u32 = 688;
+pub const NID_X9_62_c2tnb191v2: u32 = 689;
+pub const NID_X9_62_c2tnb191v3: u32 = 690;
+pub const NID_X9_62_c2onb191v4: u32 = 691;
+pub const NID_X9_62_c2onb191v5: u32 = 692;
+pub const NID_X9_62_c2pnb208w1: u32 = 693;
+pub const NID_X9_62_c2tnb239v1: u32 = 694;
+pub const NID_X9_62_c2tnb239v2: u32 = 695;
+pub const NID_X9_62_c2tnb239v3: u32 = 696;
+pub const NID_X9_62_c2onb239v4: u32 = 697;
+pub const NID_X9_62_c2onb239v5: u32 = 698;
+pub const NID_X9_62_c2pnb272w1: u32 = 699;
+pub const NID_X9_62_c2pnb304w1: u32 = 700;
+pub const NID_X9_62_c2tnb359v1: u32 = 701;
+pub const NID_X9_62_c2pnb368w1: u32 = 702;
+pub const NID_X9_62_c2tnb431r1: u32 = 703;
+pub const NID_secp112r1: u32 = 704;
+pub const NID_secp112r2: u32 = 705;
+pub const NID_secp128r1: u32 = 706;
+pub const NID_secp128r2: u32 = 707;
+pub const NID_secp160k1: u32 = 708;
+pub const NID_secp160r1: u32 = 709;
+pub const NID_secp160r2: u32 = 710;
+pub const NID_secp192k1: u32 = 711;
+pub const NID_secp224k1: u32 = 712;
+pub const NID_secp224r1: u32 = 713;
+pub const NID_secp256k1: u32 = 714;
+pub const NID_secp384r1: u32 = 715;
+pub const NID_secp521r1: u32 = 716;
+pub const NID_sect113r1: u32 = 717;
+pub const NID_sect113r2: u32 = 718;
+pub const NID_sect131r1: u32 = 719;
+pub const NID_sect131r2: u32 = 720;
+pub const NID_sect163k1: u32 = 721;
+pub const NID_sect163r1: u32 = 722;
+pub const NID_sect163r2: u32 = 723;
+pub const NID_sect193r1: u32 = 724;
+pub const NID_sect193r2: u32 = 725;
+pub const NID_sect233k1: u32 = 726;
+pub const NID_sect233r1: u32 = 727;
+pub const NID_sect239k1: u32 = 728;
+pub const NID_sect283k1: u32 = 729;
+pub const NID_sect283r1: u32 = 730;
+pub const NID_sect409k1: u32 = 731;
+pub const NID_sect409r1: u32 = 732;
+pub const NID_sect571k1: u32 = 733;
+pub const NID_sect571r1: u32 = 734;
+pub const NID_wap_wsg_idm_ecid_wtls1: u32 = 735;
+pub const NID_wap_wsg_idm_ecid_wtls3: u32 = 736;
+pub const NID_wap_wsg_idm_ecid_wtls4: u32 = 737;
+pub const NID_wap_wsg_idm_ecid_wtls5: u32 = 738;
+pub const NID_wap_wsg_idm_ecid_wtls6: u32 = 739;
+pub const NID_wap_wsg_idm_ecid_wtls7: u32 = 740;
+pub const NID_wap_wsg_idm_ecid_wtls8: u32 = 741;
+pub const NID_wap_wsg_idm_ecid_wtls9: u32 = 742;
+pub const NID_wap_wsg_idm_ecid_wtls10: u32 = 743;
+pub const NID_wap_wsg_idm_ecid_wtls11: u32 = 744;
+pub const NID_wap_wsg_idm_ecid_wtls12: u32 = 745;
+pub const NID_any_policy: u32 = 746;
+pub const NID_policy_mappings: u32 = 747;
+pub const NID_inhibit_any_policy: u32 = 748;
+pub const NID_ipsec3: u32 = 749;
+pub const NID_ipsec4: u32 = 750;
+pub const NID_camellia_128_cbc: u32 = 751;
+pub const NID_camellia_192_cbc: u32 = 752;
+pub const NID_camellia_256_cbc: u32 = 753;
+pub const NID_camellia_128_ecb: u32 = 754;
+pub const NID_camellia_192_ecb: u32 = 755;
+pub const NID_camellia_256_ecb: u32 = 756;
+pub const NID_camellia_128_cfb128: u32 = 757;
+pub const NID_camellia_192_cfb128: u32 = 758;
+pub const NID_camellia_256_cfb128: u32 = 759;
+pub const NID_camellia_128_cfb1: u32 = 760;
+pub const NID_camellia_192_cfb1: u32 = 761;
+pub const NID_camellia_256_cfb1: u32 = 762;
+pub const NID_camellia_128_cfb8: u32 = 763;
+pub const NID_camellia_192_cfb8: u32 = 764;
+pub const NID_camellia_256_cfb8: u32 = 765;
+pub const NID_camellia_128_ofb128: u32 = 766;
+pub const NID_camellia_192_ofb128: u32 = 767;
+pub const NID_camellia_256_ofb128: u32 = 768;
+pub const NID_subject_directory_attributes: u32 = 769;
+pub const NID_issuing_distribution_point: u32 = 770;
+pub const NID_certificate_issuer: u32 = 771;
+pub const NID_kisa: u32 = 773;
+pub const NID_seed_ecb: u32 = 776;
+pub const NID_seed_cbc: u32 = 777;
+pub const NID_seed_ofb128: u32 = 778;
+pub const NID_seed_cfb128: u32 = 779;
+pub const NID_hmac_md5: u32 = 780;
+pub const NID_hmac_sha1: u32 = 781;
+pub const NID_id_PasswordBasedMAC: u32 = 782;
+pub const NID_id_DHBasedMac: u32 = 783;
+pub const NID_id_it_suppLangTags: u32 = 784;
+pub const NID_caRepository: u32 = 785;
+pub const NID_id_smime_ct_compressedData: u32 = 786;
+pub const NID_id_ct_asciiTextWithCRLF: u32 = 787;
+pub const NID_id_aes128_wrap: u32 = 788;
+pub const NID_id_aes192_wrap: u32 = 789;
+pub const NID_id_aes256_wrap: u32 = 790;
+pub const NID_ecdsa_with_Recommended: u32 = 791;
+pub const NID_ecdsa_with_Specified: u32 = 792;
+pub const NID_ecdsa_with_SHA224: u32 = 793;
+pub const NID_ecdsa_with_SHA256: u32 = 794;
+pub const NID_ecdsa_with_SHA384: u32 = 795;
+pub const NID_ecdsa_with_SHA512: u32 = 796;
+pub const NID_hmacWithMD5: u32 = 797;
+pub const NID_hmacWithSHA224: u32 = 798;
+pub const NID_hmacWithSHA256: u32 = 799;
+pub const NID_hmacWithSHA384: u32 = 800;
+pub const NID_hmacWithSHA512: u32 = 801;
+pub const NID_dsa_with_SHA224: u32 = 802;
+pub const NID_dsa_with_SHA256: u32 = 803;
+pub const NID_whirlpool: u32 = 804;
+pub const NID_cryptopro: u32 = 805;
+pub const NID_cryptocom: u32 = 806;
+pub const NID_id_GostR3411_94_with_GostR3410_2001: u32 = 807;
+pub const NID_id_GostR3411_94_with_GostR3410_94: u32 = 808;
+pub const NID_id_GostR3411_94: u32 = 809;
+pub const NID_id_HMACGostR3411_94: u32 = 810;
+pub const NID_id_GostR3410_2001: u32 = 811;
+pub const NID_id_GostR3410_94: u32 = 812;
+pub const NID_id_Gost28147_89: u32 = 813;
+pub const NID_gost89_cnt: u32 = 814;
+pub const NID_id_Gost28147_89_MAC: u32 = 815;
+pub const NID_id_GostR3411_94_prf: u32 = 816;
+pub const NID_id_GostR3410_2001DH: u32 = 817;
+pub const NID_id_GostR3410_94DH: u32 = 818;
+pub const NID_id_Gost28147_89_CryptoPro_KeyMeshing: u32 = 819;
+pub const NID_id_Gost28147_89_None_KeyMeshing: u32 = 820;
+pub const NID_id_GostR3411_94_TestParamSet: u32 = 821;
+pub const NID_id_GostR3411_94_CryptoProParamSet: u32 = 822;
+pub const NID_id_Gost28147_89_TestParamSet: u32 = 823;
+pub const NID_id_Gost28147_89_CryptoPro_A_ParamSet: u32 = 824;
+pub const NID_id_Gost28147_89_CryptoPro_B_ParamSet: u32 = 825;
+pub const NID_id_Gost28147_89_CryptoPro_C_ParamSet: u32 = 826;
+pub const NID_id_Gost28147_89_CryptoPro_D_ParamSet: u32 = 827;
+pub const NID_id_Gost28147_89_CryptoPro_Oscar_1_1_ParamSet: u32 = 828;
+pub const NID_id_Gost28147_89_CryptoPro_Oscar_1_0_ParamSet: u32 = 829;
+pub const NID_id_Gost28147_89_CryptoPro_RIC_1_ParamSet: u32 = 830;
+pub const NID_id_GostR3410_94_TestParamSet: u32 = 831;
+pub const NID_id_GostR3410_94_CryptoPro_A_ParamSet: u32 = 832;
+pub const NID_id_GostR3410_94_CryptoPro_B_ParamSet: u32 = 833;
+pub const NID_id_GostR3410_94_CryptoPro_C_ParamSet: u32 = 834;
+pub const NID_id_GostR3410_94_CryptoPro_D_ParamSet: u32 = 835;
+pub const NID_id_GostR3410_94_CryptoPro_XchA_ParamSet: u32 = 836;
+pub const NID_id_GostR3410_94_CryptoPro_XchB_ParamSet: u32 = 837;
+pub const NID_id_GostR3410_94_CryptoPro_XchC_ParamSet: u32 = 838;
+pub const NID_id_GostR3410_2001_TestParamSet: u32 = 839;
+pub const NID_id_GostR3410_2001_CryptoPro_A_ParamSet: u32 = 840;
+pub const NID_id_GostR3410_2001_CryptoPro_B_ParamSet: u32 = 841;
+pub const NID_id_GostR3410_2001_CryptoPro_C_ParamSet: u32 = 842;
+pub const NID_id_GostR3410_2001_CryptoPro_XchA_ParamSet: u32 = 843;
+pub const NID_id_GostR3410_2001_CryptoPro_XchB_ParamSet: u32 = 844;
+pub const NID_id_GostR3410_94_a: u32 = 845;
+pub const NID_id_GostR3410_94_aBis: u32 = 846;
+pub const NID_id_GostR3410_94_b: u32 = 847;
+pub const NID_id_GostR3410_94_bBis: u32 = 848;
+pub const NID_id_Gost28147_89_cc: u32 = 849;
+pub const NID_id_GostR3410_94_cc: u32 = 850;
+pub const NID_id_GostR3410_2001_cc: u32 = 851;
+pub const NID_id_GostR3411_94_with_GostR3410_94_cc: u32 = 852;
+pub const NID_id_GostR3411_94_with_GostR3410_2001_cc: u32 = 853;
+pub const NID_id_GostR3410_2001_ParamSet_cc: u32 = 854;
+pub const NID_hmac: u32 = 855;
+pub const NID_LocalKeySet: u32 = 856;
+pub const NID_freshest_crl: u32 = 857;
+pub const NID_id_on_permanentIdentifier: u32 = 858;
+pub const NID_searchGuide: u32 = 859;
+pub const NID_businessCategory: u32 = 860;
+pub const NID_postalAddress: u32 = 861;
+pub const NID_postOfficeBox: u32 = 862;
+pub const NID_physicalDeliveryOfficeName: u32 = 863;
+pub const NID_telephoneNumber: u32 = 864;
+pub const NID_telexNumber: u32 = 865;
+pub const NID_teletexTerminalIdentifier: u32 = 866;
+pub const NID_facsimileTelephoneNumber: u32 = 867;
+pub const NID_x121Address: u32 = 868;
+pub const NID_internationaliSDNNumber: u32 = 869;
+pub const NID_registeredAddress: u32 = 870;
+pub const NID_destinationIndicator: u32 = 871;
+pub const NID_preferredDeliveryMethod: u32 = 872;
+pub const NID_presentationAddress: u32 = 873;
+pub const NID_supportedApplicationContext: u32 = 874;
+pub const NID_member: u32 = 875;
+pub const NID_owner: u32 = 876;
+pub const NID_roleOccupant: u32 = 877;
+pub const NID_seeAlso: u32 = 878;
+pub const NID_userPassword: u32 = 879;
+pub const NID_userCertificate: u32 = 880;
+pub const NID_cACertificate: u32 = 881;
+pub const NID_authorityRevocationList: u32 = 882;
+pub const NID_certificateRevocationList: u32 = 883;
+pub const NID_crossCertificatePair: u32 = 884;
+pub const NID_enhancedSearchGuide: u32 = 885;
+pub const NID_protocolInformation: u32 = 886;
+pub const NID_distinguishedName: u32 = 887;
+pub const NID_uniqueMember: u32 = 888;
+pub const NID_houseIdentifier: u32 = 889;
+pub const NID_supportedAlgorithms: u32 = 890;
+pub const NID_deltaRevocationList: u32 = 891;
+pub const NID_dmdName: u32 = 892;
+pub const NID_id_alg_PWRI_KEK: u32 = 893;
+pub const NID_cmac: u32 = 894;
+pub const NID_aes_128_gcm: u32 = 895;
+pub const NID_aes_128_ccm: u32 = 896;
+pub const NID_id_aes128_wrap_pad: u32 = 897;
+pub const NID_aes_192_gcm: u32 = 898;
+pub const NID_aes_192_ccm: u32 = 899;
+pub const NID_id_aes192_wrap_pad: u32 = 900;
+pub const NID_aes_256_gcm: u32 = 901;
+pub const NID_aes_256_ccm: u32 = 902;
+pub const NID_id_aes256_wrap_pad: u32 = 903;
+pub const NID_aes_128_ctr: u32 = 904;
+pub const NID_aes_192_ctr: u32 = 905;
+pub const NID_aes_256_ctr: u32 = 906;
+pub const NID_id_camellia128_wrap: u32 = 907;
+pub const NID_id_camellia192_wrap: u32 = 908;
+pub const NID_id_camellia256_wrap: u32 = 909;
+pub const NID_anyExtendedKeyUsage: u32 = 910;
+pub const NID_mgf1: u32 = 911;
+pub const NID_rsassaPss: u32 = 912;
+pub const NID_aes_128_xts: u32 = 913;
+pub const NID_aes_256_xts: u32 = 914;
+pub const NID_rc4_hmac_md5: u32 = 915;
+pub const NID_aes_128_cbc_hmac_sha1: u32 = 916;
+pub const NID_aes_192_cbc_hmac_sha1: u32 = 917;
+pub const NID_aes_256_cbc_hmac_sha1: u32 = 918;
+pub const NID_rsaesOaep: u32 = 919;
+pub const NID_dhpublicnumber: u32 = 920;
+pub const NID_brainpoolP160r1: u32 = 921;
+pub const NID_brainpoolP160t1: u32 = 922;
+pub const NID_brainpoolP192r1: u32 = 923;
+pub const NID_brainpoolP192t1: u32 = 924;
+pub const NID_brainpoolP224r1: u32 = 925;
+pub const NID_brainpoolP224t1: u32 = 926;
+pub const NID_brainpoolP256r1: u32 = 927;
+pub const NID_brainpoolP256t1: u32 = 928;
+pub const NID_brainpoolP320r1: u32 = 929;
+pub const NID_brainpoolP320t1: u32 = 930;
+pub const NID_brainpoolP384r1: u32 = 931;
+pub const NID_brainpoolP384t1: u32 = 932;
+pub const NID_brainpoolP512r1: u32 = 933;
+pub const NID_brainpoolP512t1: u32 = 934;
+pub const NID_pSpecified: u32 = 935;
+pub const NID_dhSinglePass_stdDH_sha1kdf_scheme: u32 = 936;
+pub const NID_dhSinglePass_stdDH_sha224kdf_scheme: u32 = 937;
+pub const NID_dhSinglePass_stdDH_sha256kdf_scheme: u32 = 938;
+pub const NID_dhSinglePass_stdDH_sha384kdf_scheme: u32 = 939;
+pub const NID_dhSinglePass_stdDH_sha512kdf_scheme: u32 = 940;
+pub const NID_dhSinglePass_cofactorDH_sha1kdf_scheme: u32 = 941;
+pub const NID_dhSinglePass_cofactorDH_sha224kdf_scheme: u32 = 942;
+pub const NID_dhSinglePass_cofactorDH_sha256kdf_scheme: u32 = 943;
+pub const NID_dhSinglePass_cofactorDH_sha384kdf_scheme: u32 = 944;
+pub const NID_dhSinglePass_cofactorDH_sha512kdf_scheme: u32 = 945;
+pub const NID_dh_std_kdf: u32 = 946;
+pub const NID_dh_cofactor_kdf: u32 = 947;
+pub const NID_X25519: u32 = 948;
+pub const NID_ED25519: u32 = 949;
+pub const NID_chacha20_poly1305: u32 = 950;
+pub const NID_kx_rsa: u32 = 951;
+pub const NID_kx_ecdhe: u32 = 952;
+pub const NID_kx_psk: u32 = 953;
+pub const NID_auth_rsa: u32 = 954;
+pub const NID_auth_ecdsa: u32 = 955;
+pub const NID_auth_psk: u32 = 956;
+pub const NID_kx_any: u32 = 957;
+pub const NID_auth_any: u32 = 958;
+pub const EVP_PKEY_NONE: u32 = 0;
+pub const EVP_PKEY_RSA: u32 = 6;
+pub const EVP_PKEY_DSA: u32 = 116;
+pub const EVP_PKEY_EC: u32 = 408;
+pub const EVP_PKEY_ED25519: u32 = 949;
+pub const EVP_PKEY_DH: u32 = 28;
+pub const EVP_PKEY_RSA2: u32 = 19;
+pub const EVP_R_BUFFER_TOO_SMALL: u32 = 100;
+pub const EVP_R_COMMAND_NOT_SUPPORTED: u32 = 101;
+pub const EVP_R_DECODE_ERROR: u32 = 102;
+pub const EVP_R_DIFFERENT_KEY_TYPES: u32 = 103;
+pub const EVP_R_DIFFERENT_PARAMETERS: u32 = 104;
+pub const EVP_R_ENCODE_ERROR: u32 = 105;
+pub const EVP_R_EXPECTING_AN_EC_KEY_KEY: u32 = 106;
+pub const EVP_R_EXPECTING_AN_RSA_KEY: u32 = 107;
+pub const EVP_R_EXPECTING_A_DSA_KEY: u32 = 108;
+pub const EVP_R_ILLEGAL_OR_UNSUPPORTED_PADDING_MODE: u32 = 109;
+pub const EVP_R_INVALID_DIGEST_LENGTH: u32 = 110;
+pub const EVP_R_INVALID_DIGEST_TYPE: u32 = 111;
+pub const EVP_R_INVALID_KEYBITS: u32 = 112;
+pub const EVP_R_INVALID_MGF1_MD: u32 = 113;
+pub const EVP_R_INVALID_OPERATION: u32 = 114;
+pub const EVP_R_INVALID_PADDING_MODE: u32 = 115;
+pub const EVP_R_INVALID_PSS_SALTLEN: u32 = 116;
+pub const EVP_R_KEYS_NOT_SET: u32 = 117;
+pub const EVP_R_MISSING_PARAMETERS: u32 = 118;
+pub const EVP_R_NO_DEFAULT_DIGEST: u32 = 119;
+pub const EVP_R_NO_KEY_SET: u32 = 120;
+pub const EVP_R_NO_MDC2_SUPPORT: u32 = 121;
+pub const EVP_R_NO_NID_FOR_CURVE: u32 = 122;
+pub const EVP_R_NO_OPERATION_SET: u32 = 123;
+pub const EVP_R_NO_PARAMETERS_SET: u32 = 124;
+pub const EVP_R_OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE: u32 = 125;
+pub const EVP_R_OPERATON_NOT_INITIALIZED: u32 = 126;
+pub const EVP_R_UNKNOWN_PUBLIC_KEY_TYPE: u32 = 127;
+pub const EVP_R_UNSUPPORTED_ALGORITHM: u32 = 128;
+pub const EVP_R_UNSUPPORTED_PUBLIC_KEY_TYPE: u32 = 129;
+pub const EVP_R_NOT_A_PRIVATE_KEY: u32 = 130;
+pub const EVP_R_INVALID_SIGNATURE: u32 = 131;
+pub const EVP_R_MEMORY_LIMIT_EXCEEDED: u32 = 132;
+pub const EVP_R_INVALID_PARAMETERS: u32 = 133;
+pub const SHA_CBLOCK: u32 = 64;
+pub const SHA_DIGEST_LENGTH: u32 = 20;
+pub const SHA224_CBLOCK: u32 = 64;
+pub const SHA224_DIGEST_LENGTH: u32 = 28;
+pub const SHA256_CBLOCK: u32 = 64;
+pub const SHA256_DIGEST_LENGTH: u32 = 32;
+pub const SHA384_CBLOCK: u32 = 128;
+pub const SHA384_DIGEST_LENGTH: u32 = 48;
+pub const SHA512_CBLOCK: u32 = 128;
+pub const SHA512_DIGEST_LENGTH: u32 = 64;
+pub const OPENSSL_NPN_UNSUPPORTED: u32 = 0;
+pub const OPENSSL_NPN_NEGOTIATED: u32 = 1;
+pub const OPENSSL_NPN_NO_OVERLAP: u32 = 2;
+pub const OPENSSL_INIT_NO_LOAD_SSL_STRINGS: u32 = 0;
+pub const OPENSSL_INIT_LOAD_SSL_STRINGS: u32 = 0;
+pub const OPENSSL_INIT_SSL_DEFAULT: u32 = 0;
+pub type __int64_t = ::std::os::raw::c_longlong;
+pub type __darwin_va_list = __builtin_va_list;
+pub type __darwin_time_t = ::std::os::raw::c_long;
+pub type __darwin_off_t = __int64_t;
+pub type time_t = __darwin_time_t;
+pub type CRYPTO_THREADID = ::std::os::raw::c_int;
+pub type ASN1_BOOLEAN = ::std::os::raw::c_int;
+pub type ASN1_NULL = ::std::os::raw::c_int;
+pub type ASN1_ITEM = ASN1_ITEM_st;
+pub type ASN1_OBJECT = asn1_object_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct asn1_pctx_st {
+    _unused: [u8; 0],
+}
+pub type ASN1_PCTX = asn1_pctx_st;
+pub type ASN1_BIT_STRING = asn1_string_st;
+pub type ASN1_BMPSTRING = asn1_string_st;
+pub type ASN1_ENUMERATED = asn1_string_st;
+pub type ASN1_GENERALIZEDTIME = asn1_string_st;
+pub type ASN1_GENERALSTRING = asn1_string_st;
+pub type ASN1_IA5STRING = asn1_string_st;
+pub type ASN1_INTEGER = asn1_string_st;
+pub type ASN1_OCTET_STRING = asn1_string_st;
+pub type ASN1_PRINTABLESTRING = asn1_string_st;
+pub type ASN1_STRING = asn1_string_st;
+pub type ASN1_T61STRING = asn1_string_st;
+pub type ASN1_TIME = asn1_string_st;
+pub type ASN1_UNIVERSALSTRING = asn1_string_st;
+pub type ASN1_UTCTIME = asn1_string_st;
+pub type ASN1_UTF8STRING = asn1_string_st;
+pub type ASN1_VISIBLESTRING = asn1_string_st;
+pub type ASN1_TYPE = asn1_type_st;
+pub type AUTHORITY_KEYID = AUTHORITY_KEYID_st;
+pub type DSA_SIG = DSA_SIG_st;
+pub type ISSUING_DIST_POINT = ISSUING_DIST_POINT_st;
+pub type NAME_CONSTRAINTS = NAME_CONSTRAINTS_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct X509_POLICY_CACHE_st {
+    _unused: [u8; 0],
+}
+pub type X509_POLICY_CACHE = X509_POLICY_CACHE_st;
+pub type X509_ALGOR = X509_algor_st;
+pub type X509_CRL_INFO = X509_crl_info_st;
+pub type X509_CRL = X509_crl_st;
+pub type X509_NAME = X509_name_st;
+pub type X509_PUBKEY = X509_pubkey_st;
+pub type X509_REQ_INFO = X509_req_info_st;
+pub type X509_REQ = X509_req_st;
+pub type X509_VAL = X509_val_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct bignum_ctx {
+    _unused: [u8; 0],
+}
+pub type BN_CTX = bignum_ctx;
+pub type BIGNUM = bignum_st;
+pub type BIO_METHOD = bio_method_st;
+pub type BIO = bio_st;
+pub type BN_GENCB = bn_gencb_st;
+pub type BN_MONT_CTX = bn_mont_ctx_st;
+pub type BUF_MEM = buf_mem_st;
+pub type CBB = cbb_st;
+pub type CBS = cbs_st;
+pub type CONF = conf_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct crypto_buffer_pool_st {
+    _unused: [u8; 0],
+}
+pub type CRYPTO_BUFFER_POOL = crypto_buffer_pool_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct crypto_buffer_st {
+    _unused: [u8; 0],
+}
+pub type CRYPTO_BUFFER = crypto_buffer_st;
+pub type DH = dh_st;
+pub type DSA = dsa_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ec_group_st {
+    _unused: [u8; 0],
+}
+pub type EC_GROUP = ec_group_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ec_key_st {
+    _unused: [u8; 0],
+}
+pub type EC_KEY = ec_key_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ec_point_st {
+    _unused: [u8; 0],
+}
+pub type EC_POINT = ec_point_st;
+pub type ECDSA_METHOD = ecdsa_method_st;
+pub type ECDSA_SIG = ecdsa_sig_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct engine_st {
+    _unused: [u8; 0],
+}
+pub type ENGINE = engine_st;
+pub type EVP_MD_CTX = env_md_ctx_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct env_md_st {
+    _unused: [u8; 0],
+}
+pub type EVP_MD = env_md_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct evp_aead_st {
+    _unused: [u8; 0],
+}
+pub type EVP_AEAD = evp_aead_st;
+pub type EVP_CIPHER_CTX = evp_cipher_ctx_st;
+pub type EVP_CIPHER = evp_cipher_st;
+pub type EVP_ENCODE_CTX = evp_encode_ctx_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct evp_pkey_asn1_method_st {
+    _unused: [u8; 0],
+}
+pub type EVP_PKEY_ASN1_METHOD = evp_pkey_asn1_method_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct evp_pkey_ctx_st {
+    _unused: [u8; 0],
+}
+pub type EVP_PKEY_CTX = evp_pkey_ctx_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct evp_pkey_method_st {
+    _unused: [u8; 0],
+}
+pub type EVP_PKEY_METHOD = evp_pkey_method_st;
+pub type EVP_PKEY = evp_pkey_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ossl_init_settings_st {
+    _unused: [u8; 0],
+}
+pub type OPENSSL_INIT_SETTINGS = ossl_init_settings_st;
+pub type PKCS8_PRIV_KEY_INFO = pkcs8_priv_key_info_st;
+pub type RSA_METHOD = rsa_meth_st;
+pub type RSA = rsa_st;
+pub type SHA256_CTX = sha256_state_st;
+pub type SHA512_CTX = sha512_state_st;
+pub type SHA_CTX = sha_state_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ssl_st {
+    _unused: [u8; 0],
+}
+pub type SSL = ssl_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct st_ERR_FNS {
+    _unused: [u8; 0],
+}
+pub type ERR_FNS = st_ERR_FNS;
+pub type X509V3_CTX = v3_ext_ctx;
+pub type X509_CERT_AUX = x509_cert_aux_st;
+pub type X509_CINF = x509_cinf_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x509_crl_method_st {
+    _unused: [u8; 0],
+}
+pub type X509_CRL_METHOD = x509_crl_method_st;
+pub type X509 = x509_st;
+pub type OPENSSL_BLOCK = *mut ::std::os::raw::c_void;
+extern "C" {
+    pub fn EVP_aead_aes_128_gcm() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_256_gcm() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_chacha20_poly1305() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_128_ctr_hmac_sha256() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_256_ctr_hmac_sha256() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_128_gcm_siv() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_256_gcm_siv() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_128_ccm_bluetooth() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_128_ccm_bluetooth_8() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_has_aes_hardware() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_AEAD_key_length(aead: *const EVP_AEAD) -> usize;
+}
+extern "C" {
+    pub fn EVP_AEAD_nonce_length(aead: *const EVP_AEAD) -> usize;
+}
+extern "C" {
+    pub fn EVP_AEAD_max_overhead(aead: *const EVP_AEAD) -> usize;
+}
+extern "C" {
+    pub fn EVP_AEAD_max_tag_len(aead: *const EVP_AEAD) -> usize;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct evp_aead_ctx_st {
+    pub aead: *const EVP_AEAD,
+    pub aead_state: *mut ::std::os::raw::c_void,
+    pub tag_len: u8,
+}
+#[test]
+fn bindgen_test_layout_evp_aead_ctx_st() {
+    assert_eq!(
+        ::std::mem::size_of::<evp_aead_ctx_st>(),
+        24usize,
+        concat!("Size of: ", stringify!(evp_aead_ctx_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<evp_aead_ctx_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(evp_aead_ctx_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_aead_ctx_st>())).aead as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_aead_ctx_st),
+            "::",
+            stringify!(aead)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_aead_ctx_st>())).aead_state as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_aead_ctx_st),
+            "::",
+            stringify!(aead_state)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_aead_ctx_st>())).tag_len as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_aead_ctx_st),
+            "::",
+            stringify!(tag_len)
+        )
+    );
+}
+pub type EVP_AEAD_CTX = evp_aead_ctx_st;
+extern "C" {
+    pub fn EVP_AEAD_CTX_zero(ctx: *mut EVP_AEAD_CTX);
+}
+extern "C" {
+    pub fn EVP_AEAD_CTX_new(
+        aead: *const EVP_AEAD,
+        key: *const u8,
+        key_len: usize,
+        tag_len: usize,
+    ) -> *mut EVP_AEAD_CTX;
+}
+extern "C" {
+    pub fn EVP_AEAD_CTX_free(ctx: *mut EVP_AEAD_CTX);
+}
+extern "C" {
+    pub fn EVP_AEAD_CTX_init(
+        ctx: *mut EVP_AEAD_CTX,
+        aead: *const EVP_AEAD,
+        key: *const u8,
+        key_len: usize,
+        tag_len: usize,
+        impl_: *mut ENGINE,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_AEAD_CTX_cleanup(ctx: *mut EVP_AEAD_CTX);
+}
+extern "C" {
+    pub fn EVP_AEAD_CTX_seal(
+        ctx: *const EVP_AEAD_CTX,
+        out: *mut u8,
+        out_len: *mut usize,
+        max_out_len: usize,
+        nonce: *const u8,
+        nonce_len: usize,
+        in_: *const u8,
+        in_len: usize,
+        ad: *const u8,
+        ad_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_AEAD_CTX_open(
+        ctx: *const EVP_AEAD_CTX,
+        out: *mut u8,
+        out_len: *mut usize,
+        max_out_len: usize,
+        nonce: *const u8,
+        nonce_len: usize,
+        in_: *const u8,
+        in_len: usize,
+        ad: *const u8,
+        ad_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_AEAD_CTX_seal_scatter(
+        ctx: *const EVP_AEAD_CTX,
+        out: *mut u8,
+        out_tag: *mut u8,
+        out_tag_len: *mut usize,
+        max_out_tag_len: usize,
+        nonce: *const u8,
+        nonce_len: usize,
+        in_: *const u8,
+        in_len: usize,
+        extra_in: *const u8,
+        extra_in_len: usize,
+        ad: *const u8,
+        ad_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_AEAD_CTX_open_gather(
+        ctx: *const EVP_AEAD_CTX,
+        out: *mut u8,
+        nonce: *const u8,
+        nonce_len: usize,
+        in_: *const u8,
+        in_len: usize,
+        in_tag: *const u8,
+        in_tag_len: usize,
+        ad: *const u8,
+        ad_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_AEAD_CTX_aead(ctx: *const EVP_AEAD_CTX) -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_128_cbc_sha1_tls() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_128_cbc_sha1_tls_implicit_iv() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_128_cbc_sha256_tls() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_256_cbc_sha1_tls() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_256_cbc_sha1_tls_implicit_iv() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_256_cbc_sha256_tls() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_256_cbc_sha384_tls() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_des_ede3_cbc_sha1_tls() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_des_ede3_cbc_sha1_tls_implicit_iv() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_null_sha1_tls() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_128_gcm_tls12() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_256_gcm_tls12() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_128_gcm_tls13() -> *const EVP_AEAD;
+}
+extern "C" {
+    pub fn EVP_aead_aes_256_gcm_tls13() -> *const EVP_AEAD;
+}
+pub const evp_aead_direction_t_evp_aead_open: evp_aead_direction_t = 0;
+pub const evp_aead_direction_t_evp_aead_seal: evp_aead_direction_t = 1;
+pub type evp_aead_direction_t = u32;
+extern "C" {
+    pub fn EVP_AEAD_CTX_init_with_direction(
+        ctx: *mut EVP_AEAD_CTX,
+        aead: *const EVP_AEAD,
+        key: *const u8,
+        key_len: usize,
+        tag_len: usize,
+        dir: evp_aead_direction_t,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_AEAD_CTX_get_iv(
+        ctx: *const EVP_AEAD_CTX,
+        out_iv: *mut *const u8,
+        out_len: *mut usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_AEAD_CTX_tag_len(
+        ctx: *const EVP_AEAD_CTX,
+        out_tag_len: *mut usize,
+        in_len: usize,
+        extra_in_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+pub type va_list = __darwin_va_list;
+pub type fpos_t = __darwin_off_t;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct __sbuf {
+    pub _base: *mut ::std::os::raw::c_uchar,
+    pub _size: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout___sbuf() {
+    assert_eq!(
+        ::std::mem::size_of::<__sbuf>(),
+        16usize,
+        concat!("Size of: ", stringify!(__sbuf))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<__sbuf>(),
+        8usize,
+        concat!("Alignment of ", stringify!(__sbuf))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sbuf>()))._base as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sbuf),
+            "::",
+            stringify!(_base)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sbuf>()))._size as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sbuf),
+            "::",
+            stringify!(_size)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct __sFILEX {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct __sFILE {
+    pub _p: *mut ::std::os::raw::c_uchar,
+    pub _r: ::std::os::raw::c_int,
+    pub _w: ::std::os::raw::c_int,
+    pub _flags: ::std::os::raw::c_short,
+    pub _file: ::std::os::raw::c_short,
+    pub _bf: __sbuf,
+    pub _lbfsize: ::std::os::raw::c_int,
+    pub _cookie: *mut ::std::os::raw::c_void,
+    pub _close: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int,
+    >,
+    pub _read: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut ::std::os::raw::c_void,
+            arg2: *mut ::std::os::raw::c_char,
+            arg3: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub _seek: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut ::std::os::raw::c_void,
+            arg2: fpos_t,
+            arg3: ::std::os::raw::c_int,
+        ) -> fpos_t,
+    >,
+    pub _write: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut ::std::os::raw::c_void,
+            arg2: *const ::std::os::raw::c_char,
+            arg3: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub _ub: __sbuf,
+    pub _extra: *mut __sFILEX,
+    pub _ur: ::std::os::raw::c_int,
+    pub _ubuf: [::std::os::raw::c_uchar; 3usize],
+    pub _nbuf: [::std::os::raw::c_uchar; 1usize],
+    pub _lb: __sbuf,
+    pub _blksize: ::std::os::raw::c_int,
+    pub _offset: fpos_t,
+}
+#[test]
+fn bindgen_test_layout___sFILE() {
+    assert_eq!(
+        ::std::mem::size_of::<__sFILE>(),
+        152usize,
+        concat!("Size of: ", stringify!(__sFILE))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<__sFILE>(),
+        8usize,
+        concat!("Alignment of ", stringify!(__sFILE))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._p as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_p)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._r as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_r)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._w as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_w)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._flags as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_flags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._file as *const _ as usize },
+        18usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_file)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._bf as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_bf)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._lbfsize as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_lbfsize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._cookie as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_cookie)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._close as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_close)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._read as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_read)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._seek as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_seek)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._write as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_write)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._ub as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_ub)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._extra as *const _ as usize },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_extra)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._ur as *const _ as usize },
+        112usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_ur)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._ubuf as *const _ as usize },
+        116usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_ubuf)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._nbuf as *const _ as usize },
+        119usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_nbuf)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._lb as *const _ as usize },
+        120usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_lb)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._blksize as *const _ as usize },
+        136usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_blksize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__sFILE>()))._offset as *const _ as usize },
+        144usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__sFILE),
+            "::",
+            stringify!(_offset)
+        )
+    );
+}
+pub type FILE = __sFILE;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct buf_mem_st {
+    pub length: usize,
+    pub data: *mut ::std::os::raw::c_char,
+    pub max: usize,
+}
+#[test]
+fn bindgen_test_layout_buf_mem_st() {
+    assert_eq!(
+        ::std::mem::size_of::<buf_mem_st>(),
+        24usize,
+        concat!("Size of: ", stringify!(buf_mem_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<buf_mem_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(buf_mem_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<buf_mem_st>())).length as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(buf_mem_st),
+            "::",
+            stringify!(length)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<buf_mem_st>())).data as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(buf_mem_st),
+            "::",
+            stringify!(data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<buf_mem_st>())).max as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(buf_mem_st),
+            "::",
+            stringify!(max)
+        )
+    );
+}
+extern "C" {
+    pub fn ERR_load_BIO_strings();
+}
+extern "C" {
+    pub fn ERR_load_ERR_strings();
+}
+extern "C" {
+    pub fn ERR_load_crypto_strings();
+}
+extern "C" {
+    pub fn ERR_load_RAND_strings();
+}
+extern "C" {
+    pub fn ERR_free_strings();
+}
+extern "C" {
+    pub fn ERR_get_error() -> u32;
+}
+extern "C" {
+    pub fn ERR_get_error_line(
+        file: *mut *const ::std::os::raw::c_char,
+        line: *mut ::std::os::raw::c_int,
+    ) -> u32;
+}
+extern "C" {
+    pub fn ERR_get_error_line_data(
+        file: *mut *const ::std::os::raw::c_char,
+        line: *mut ::std::os::raw::c_int,
+        data: *mut *const ::std::os::raw::c_char,
+        flags: *mut ::std::os::raw::c_int,
+    ) -> u32;
+}
+extern "C" {
+    pub fn ERR_peek_error() -> u32;
+}
+extern "C" {
+    pub fn ERR_peek_error_line(
+        file: *mut *const ::std::os::raw::c_char,
+        line: *mut ::std::os::raw::c_int,
+    ) -> u32;
+}
+extern "C" {
+    pub fn ERR_peek_error_line_data(
+        file: *mut *const ::std::os::raw::c_char,
+        line: *mut ::std::os::raw::c_int,
+        data: *mut *const ::std::os::raw::c_char,
+        flags: *mut ::std::os::raw::c_int,
+    ) -> u32;
+}
+extern "C" {
+    pub fn ERR_peek_last_error() -> u32;
+}
+extern "C" {
+    pub fn ERR_peek_last_error_line(
+        file: *mut *const ::std::os::raw::c_char,
+        line: *mut ::std::os::raw::c_int,
+    ) -> u32;
+}
+extern "C" {
+    pub fn ERR_peek_last_error_line_data(
+        file: *mut *const ::std::os::raw::c_char,
+        line: *mut ::std::os::raw::c_int,
+        data: *mut *const ::std::os::raw::c_char,
+        flags: *mut ::std::os::raw::c_int,
+    ) -> u32;
+}
+extern "C" {
+    pub fn ERR_error_string_n(packed_error: u32, buf: *mut ::std::os::raw::c_char, len: usize);
+}
+extern "C" {
+    pub fn ERR_lib_error_string(packed_error: u32) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn ERR_reason_error_string(packed_error: u32) -> *const ::std::os::raw::c_char;
+}
+pub type ERR_print_errors_callback_t = ::std::option::Option<
+    unsafe extern "C" fn(
+        str: *const ::std::os::raw::c_char,
+        len: usize,
+        ctx: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int,
+>;
+extern "C" {
+    pub fn ERR_print_errors_cb(
+        callback: ERR_print_errors_callback_t,
+        ctx: *mut ::std::os::raw::c_void,
+    );
+}
+extern "C" {
+    pub fn ERR_print_errors_fp(file: *mut FILE);
+}
+extern "C" {
+    pub fn ERR_clear_error();
+}
+extern "C" {
+    pub fn ERR_set_mark() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ERR_pop_to_mark() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ERR_get_next_error_library() -> ::std::os::raw::c_int;
+}
+pub const ERR_LIB_NONE: _bindgen_ty_1 = 1;
+pub const ERR_LIB_SYS: _bindgen_ty_1 = 2;
+pub const ERR_LIB_BN: _bindgen_ty_1 = 3;
+pub const ERR_LIB_RSA: _bindgen_ty_1 = 4;
+pub const ERR_LIB_DH: _bindgen_ty_1 = 5;
+pub const ERR_LIB_EVP: _bindgen_ty_1 = 6;
+pub const ERR_LIB_BUF: _bindgen_ty_1 = 7;
+pub const ERR_LIB_OBJ: _bindgen_ty_1 = 8;
+pub const ERR_LIB_PEM: _bindgen_ty_1 = 9;
+pub const ERR_LIB_DSA: _bindgen_ty_1 = 10;
+pub const ERR_LIB_X509: _bindgen_ty_1 = 11;
+pub const ERR_LIB_ASN1: _bindgen_ty_1 = 12;
+pub const ERR_LIB_CONF: _bindgen_ty_1 = 13;
+pub const ERR_LIB_CRYPTO: _bindgen_ty_1 = 14;
+pub const ERR_LIB_EC: _bindgen_ty_1 = 15;
+pub const ERR_LIB_SSL: _bindgen_ty_1 = 16;
+pub const ERR_LIB_BIO: _bindgen_ty_1 = 17;
+pub const ERR_LIB_PKCS7: _bindgen_ty_1 = 18;
+pub const ERR_LIB_PKCS8: _bindgen_ty_1 = 19;
+pub const ERR_LIB_X509V3: _bindgen_ty_1 = 20;
+pub const ERR_LIB_RAND: _bindgen_ty_1 = 21;
+pub const ERR_LIB_ENGINE: _bindgen_ty_1 = 22;
+pub const ERR_LIB_OCSP: _bindgen_ty_1 = 23;
+pub const ERR_LIB_UI: _bindgen_ty_1 = 24;
+pub const ERR_LIB_COMP: _bindgen_ty_1 = 25;
+pub const ERR_LIB_ECDSA: _bindgen_ty_1 = 26;
+pub const ERR_LIB_ECDH: _bindgen_ty_1 = 27;
+pub const ERR_LIB_HMAC: _bindgen_ty_1 = 28;
+pub const ERR_LIB_DIGEST: _bindgen_ty_1 = 29;
+pub const ERR_LIB_CIPHER: _bindgen_ty_1 = 30;
+pub const ERR_LIB_HKDF: _bindgen_ty_1 = 31;
+pub const ERR_LIB_USER: _bindgen_ty_1 = 32;
+pub const ERR_NUM_LIBS: _bindgen_ty_1 = 33;
+pub type _bindgen_ty_1 = u32;
+extern "C" {
+    pub fn ERR_remove_state(pid: ::std::os::raw::c_ulong);
+}
+extern "C" {
+    pub fn ERR_remove_thread_state(tid: *const CRYPTO_THREADID);
+}
+extern "C" {
+    pub fn ERR_func_error_string(packed_error: u32) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn ERR_error_string(
+        packed_error: u32,
+        buf: *mut ::std::os::raw::c_char,
+    ) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn ERR_clear_system_error();
+}
+extern "C" {
+    pub fn ERR_put_error(
+        library: ::std::os::raw::c_int,
+        unused: ::std::os::raw::c_int,
+        reason: ::std::os::raw::c_int,
+        file: *const ::std::os::raw::c_char,
+        line: ::std::os::raw::c_uint,
+    );
+}
+extern "C" {
+    pub fn ERR_add_error_data(count: ::std::os::raw::c_uint, ...);
+}
+extern "C" {
+    pub fn ERR_add_error_dataf(format: *const ::std::os::raw::c_char, ...);
+}
+pub type OPENSSL_STRING = *mut ::std::os::raw::c_char;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct stack_st_void {
+    _unused: [u8; 0],
+}
+pub type CRYPTO_EX_DATA = crypto_ex_data_st;
+pub type CRYPTO_EX_free = ::std::option::Option<
+    unsafe extern "C" fn(
+        parent: *mut ::std::os::raw::c_void,
+        ptr: *mut ::std::os::raw::c_void,
+        ad: *mut CRYPTO_EX_DATA,
+        index: ::std::os::raw::c_int,
+        argl: ::std::os::raw::c_long,
+        argp: *mut ::std::os::raw::c_void,
+    ),
+>;
+extern "C" {
+    pub fn CRYPTO_cleanup_all_ex_data();
+}
+pub type CRYPTO_EX_dup = ::std::option::Option<
+    unsafe extern "C" fn(
+        to: *mut CRYPTO_EX_DATA,
+        from: *const CRYPTO_EX_DATA,
+        from_d: *mut *mut ::std::os::raw::c_void,
+        index: ::std::os::raw::c_int,
+        argl: ::std::os::raw::c_long,
+        argp: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int,
+>;
+pub type CRYPTO_EX_unused = ::std::os::raw::c_int;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct crypto_ex_data_st {
+    pub sk: *mut stack_st_void,
+}
+#[test]
+fn bindgen_test_layout_crypto_ex_data_st() {
+    assert_eq!(
+        ::std::mem::size_of::<crypto_ex_data_st>(),
+        8usize,
+        concat!("Size of: ", stringify!(crypto_ex_data_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<crypto_ex_data_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(crypto_ex_data_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<crypto_ex_data_st>())).sk as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(crypto_ex_data_st),
+            "::",
+            stringify!(sk)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union crypto_mutex_st {
+    pub alignment: f64,
+    pub padding: [u8; 56usize],
+    _bindgen_union_align: [u64; 7usize],
+}
+#[test]
+fn bindgen_test_layout_crypto_mutex_st() {
+    assert_eq!(
+        ::std::mem::size_of::<crypto_mutex_st>(),
+        56usize,
+        concat!("Size of: ", stringify!(crypto_mutex_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<crypto_mutex_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(crypto_mutex_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<crypto_mutex_st>())).alignment as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(crypto_mutex_st),
+            "::",
+            stringify!(alignment)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<crypto_mutex_st>())).padding as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(crypto_mutex_st),
+            "::",
+            stringify!(padding)
+        )
+    );
+}
+pub type CRYPTO_MUTEX = crypto_mutex_st;
+pub type CRYPTO_refcount_t = u32;
+extern "C" {
+    pub fn CRYPTO_num_locks() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CRYPTO_set_locking_callback(
+        func: ::std::option::Option<
+            unsafe extern "C" fn(
+                mode: ::std::os::raw::c_int,
+                lock_num: ::std::os::raw::c_int,
+                file: *const ::std::os::raw::c_char,
+                line: ::std::os::raw::c_int,
+            ),
+        >,
+    );
+}
+extern "C" {
+    pub fn CRYPTO_set_add_lock_callback(
+        func: ::std::option::Option<
+            unsafe extern "C" fn(
+                num: *mut ::std::os::raw::c_int,
+                amount: ::std::os::raw::c_int,
+                lock_num: ::std::os::raw::c_int,
+                file: *const ::std::os::raw::c_char,
+                line: ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+    );
+}
+extern "C" {
+    pub fn CRYPTO_get_locking_callback() -> ::std::option::Option<unsafe extern "C" fn()>;
+}
+extern "C" {
+    pub fn CRYPTO_get_lock_name(lock_num: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn CRYPTO_THREADID_set_callback(
+        threadid_func: ::std::option::Option<unsafe extern "C" fn(threadid: *mut CRYPTO_THREADID)>,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CRYPTO_THREADID_set_numeric(id: *mut CRYPTO_THREADID, val: ::std::os::raw::c_ulong);
+}
+extern "C" {
+    pub fn CRYPTO_THREADID_set_pointer(id: *mut CRYPTO_THREADID, ptr: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+    pub fn CRYPTO_THREADID_current(id: *mut CRYPTO_THREADID);
+}
+extern "C" {
+    pub fn CRYPTO_set_id_callback(
+        func: ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_ulong>,
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct CRYPTO_dynlock {
+    pub references: ::std::os::raw::c_int,
+    pub data: *mut CRYPTO_dynlock_value,
+}
+#[test]
+fn bindgen_test_layout_CRYPTO_dynlock() {
+    assert_eq!(
+        ::std::mem::size_of::<CRYPTO_dynlock>(),
+        16usize,
+        concat!("Size of: ", stringify!(CRYPTO_dynlock))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<CRYPTO_dynlock>(),
+        8usize,
+        concat!("Alignment of ", stringify!(CRYPTO_dynlock))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<CRYPTO_dynlock>())).references as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(CRYPTO_dynlock),
+            "::",
+            stringify!(references)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<CRYPTO_dynlock>())).data as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(CRYPTO_dynlock),
+            "::",
+            stringify!(data)
+        )
+    );
+}
+extern "C" {
+    pub fn CRYPTO_set_dynlock_create_callback(
+        dyn_create_function: ::std::option::Option<
+            unsafe extern "C" fn(file: *const ::std::os::raw::c_char, line: ::std::os::raw::c_int)
+                -> *mut CRYPTO_dynlock_value,
+        >,
+    );
+}
+extern "C" {
+    pub fn CRYPTO_set_dynlock_lock_callback(
+        dyn_lock_function: ::std::option::Option<
+            unsafe extern "C" fn(
+                mode: ::std::os::raw::c_int,
+                l: *mut CRYPTO_dynlock_value,
+                file: *const ::std::os::raw::c_char,
+                line: ::std::os::raw::c_int,
+            ),
+        >,
+    );
+}
+extern "C" {
+    pub fn CRYPTO_set_dynlock_destroy_callback(
+        dyn_destroy_function: ::std::option::Option<
+            unsafe extern "C" fn(
+                l: *mut CRYPTO_dynlock_value,
+                file: *const ::std::os::raw::c_char,
+                line: ::std::os::raw::c_int,
+            ),
+        >,
+    );
+}
+extern "C" {
+    pub fn CRYPTO_get_dynlock_create_callback(
+) -> ::std::option::Option<unsafe extern "C" fn() -> *mut CRYPTO_dynlock_value>;
+}
+extern "C" {
+    pub fn CRYPTO_get_dynlock_lock_callback() -> ::std::option::Option<unsafe extern "C" fn()>;
+}
+extern "C" {
+    pub fn CRYPTO_get_dynlock_destroy_callback() -> ::std::option::Option<unsafe extern "C" fn()>;
+}
+extern "C" {
+    pub fn BIO_new(method: *const BIO_METHOD) -> *mut BIO;
+}
+extern "C" {
+    pub fn BIO_free(bio: *mut BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_vfree(bio: *mut BIO);
+}
+extern "C" {
+    pub fn BIO_up_ref(bio: *mut BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_read(
+        bio: *mut BIO,
+        data: *mut ::std::os::raw::c_void,
+        len: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_gets(
+        bio: *mut BIO,
+        buf: *mut ::std::os::raw::c_char,
+        size: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_write(
+        bio: *mut BIO,
+        data: *const ::std::os::raw::c_void,
+        len: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_puts(bio: *mut BIO, buf: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_flush(bio: *mut BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_ctrl(
+        bio: *mut BIO,
+        cmd: ::std::os::raw::c_int,
+        larg: ::std::os::raw::c_long,
+        parg: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_long;
+}
+extern "C" {
+    pub fn BIO_ptr_ctrl(
+        bp: *mut BIO,
+        cmd: ::std::os::raw::c_int,
+        larg: ::std::os::raw::c_long,
+    ) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn BIO_int_ctrl(
+        bp: *mut BIO,
+        cmd: ::std::os::raw::c_int,
+        larg: ::std::os::raw::c_long,
+        iarg: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_long;
+}
+extern "C" {
+    pub fn BIO_reset(bio: *mut BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_eof(bio: *mut BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_set_flags(bio: *mut BIO, flags: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn BIO_test_flags(bio: *const BIO, flags: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_should_read(bio: *const BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_should_write(bio: *const BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_should_retry(bio: *const BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_should_io_special(bio: *const BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_get_retry_reason(bio: *const BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_clear_flags(bio: *mut BIO, flags: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn BIO_set_retry_read(bio: *mut BIO);
+}
+extern "C" {
+    pub fn BIO_set_retry_write(bio: *mut BIO);
+}
+extern "C" {
+    pub fn BIO_get_retry_flags(bio: *mut BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_clear_retry_flags(bio: *mut BIO);
+}
+extern "C" {
+    pub fn BIO_method_type(bio: *const BIO) -> ::std::os::raw::c_int;
+}
+pub type bio_info_cb = ::std::option::Option<
+    unsafe extern "C" fn(
+        bio: *mut BIO,
+        event: ::std::os::raw::c_int,
+        parg: *const ::std::os::raw::c_char,
+        cmd: ::std::os::raw::c_int,
+        larg: ::std::os::raw::c_long,
+        return_value: ::std::os::raw::c_long,
+    ) -> ::std::os::raw::c_long,
+>;
+extern "C" {
+    pub fn BIO_callback_ctrl(
+        bio: *mut BIO,
+        cmd: ::std::os::raw::c_int,
+        fp: bio_info_cb,
+    ) -> ::std::os::raw::c_long;
+}
+extern "C" {
+    pub fn BIO_pending(bio: *const BIO) -> usize;
+}
+extern "C" {
+    pub fn BIO_ctrl_pending(bio: *const BIO) -> usize;
+}
+extern "C" {
+    pub fn BIO_wpending(bio: *const BIO) -> usize;
+}
+extern "C" {
+    pub fn BIO_set_close(bio: *mut BIO, close_flag: ::std::os::raw::c_int)
+        -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_number_read(bio: *const BIO) -> usize;
+}
+extern "C" {
+    pub fn BIO_number_written(bio: *const BIO) -> usize;
+}
+extern "C" {
+    pub fn BIO_push(bio: *mut BIO, appended_bio: *mut BIO) -> *mut BIO;
+}
+extern "C" {
+    pub fn BIO_pop(bio: *mut BIO) -> *mut BIO;
+}
+extern "C" {
+    pub fn BIO_next(bio: *mut BIO) -> *mut BIO;
+}
+extern "C" {
+    pub fn BIO_free_all(bio: *mut BIO);
+}
+extern "C" {
+    pub fn BIO_find_type(bio: *mut BIO, type_: ::std::os::raw::c_int) -> *mut BIO;
+}
+extern "C" {
+    pub fn BIO_copy_next_retry(bio: *mut BIO);
+}
+extern "C" {
+    pub fn BIO_printf(
+        bio: *mut BIO,
+        format: *const ::std::os::raw::c_char,
+        ...
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_indent(
+        bio: *mut BIO,
+        indent: ::std::os::raw::c_uint,
+        max_indent: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_hexdump(
+        bio: *mut BIO,
+        data: *const u8,
+        len: usize,
+        indent: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ERR_print_errors(bio: *mut BIO);
+}
+extern "C" {
+    pub fn BIO_read_asn1(
+        bio: *mut BIO,
+        out: *mut *mut u8,
+        out_len: *mut usize,
+        max_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_s_mem() -> *const BIO_METHOD;
+}
+extern "C" {
+    pub fn BIO_new_mem_buf(
+        buf: *const ::std::os::raw::c_void,
+        len: ::std::os::raw::c_int,
+    ) -> *mut BIO;
+}
+extern "C" {
+    pub fn BIO_mem_contents(
+        bio: *const BIO,
+        out_contents: *mut *const u8,
+        out_len: *mut usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_get_mem_data(
+        bio: *mut BIO,
+        contents: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_long;
+}
+extern "C" {
+    pub fn BIO_get_mem_ptr(bio: *mut BIO, out: *mut *mut BUF_MEM) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_set_mem_buf(
+        bio: *mut BIO,
+        b: *mut BUF_MEM,
+        take_ownership: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_set_mem_eof_return(
+        bio: *mut BIO,
+        eof_value: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_s_fd() -> *const BIO_METHOD;
+}
+extern "C" {
+    pub fn BIO_new_fd(fd: ::std::os::raw::c_int, close_flag: ::std::os::raw::c_int) -> *mut BIO;
+}
+extern "C" {
+    pub fn BIO_set_fd(
+        bio: *mut BIO,
+        fd: ::std::os::raw::c_int,
+        close_flag: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_get_fd(bio: *mut BIO, out_fd: *mut ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_s_file() -> *const BIO_METHOD;
+}
+extern "C" {
+    pub fn BIO_new_file(
+        filename: *const ::std::os::raw::c_char,
+        mode: *const ::std::os::raw::c_char,
+    ) -> *mut BIO;
+}
+extern "C" {
+    pub fn BIO_new_fp(stream: *mut FILE, close_flag: ::std::os::raw::c_int) -> *mut BIO;
+}
+extern "C" {
+    pub fn BIO_get_fp(bio: *mut BIO, out_file: *mut *mut FILE) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_set_fp(
+        bio: *mut BIO,
+        file: *mut FILE,
+        close_flag: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_read_filename(
+        bio: *mut BIO,
+        filename: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_write_filename(
+        bio: *mut BIO,
+        filename: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_append_filename(
+        bio: *mut BIO,
+        filename: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_rw_filename(
+        bio: *mut BIO,
+        filename: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_s_socket() -> *const BIO_METHOD;
+}
+extern "C" {
+    pub fn BIO_new_socket(fd: ::std::os::raw::c_int, close_flag: ::std::os::raw::c_int)
+        -> *mut BIO;
+}
+extern "C" {
+    pub fn BIO_s_connect() -> *const BIO_METHOD;
+}
+extern "C" {
+    pub fn BIO_new_connect(host_and_optional_port: *const ::std::os::raw::c_char) -> *mut BIO;
+}
+extern "C" {
+    pub fn BIO_set_conn_hostname(
+        bio: *mut BIO,
+        host_and_optional_port: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_set_conn_port(
+        bio: *mut BIO,
+        port_str: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_set_conn_int_port(
+        bio: *mut BIO,
+        port: *const ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_set_nbio(bio: *mut BIO, on: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_do_connect(bio: *mut BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_new_bio_pair(
+        out1: *mut *mut BIO,
+        writebuf1: usize,
+        out2: *mut *mut BIO,
+        writebuf2: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_ctrl_get_read_request(bio: *mut BIO) -> usize;
+}
+extern "C" {
+    pub fn BIO_ctrl_get_write_guarantee(bio: *mut BIO) -> usize;
+}
+extern "C" {
+    pub fn BIO_shutdown_wr(bio: *mut BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_get_new_index() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_meth_new(
+        type_: ::std::os::raw::c_int,
+        name: *const ::std::os::raw::c_char,
+    ) -> *mut BIO_METHOD;
+}
+extern "C" {
+    pub fn BIO_meth_free(method: *mut BIO_METHOD);
+}
+extern "C" {
+    pub fn BIO_meth_set_create(
+        method: *mut BIO_METHOD,
+        create: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut BIO) -> ::std::os::raw::c_int,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_meth_set_destroy(
+        method: *mut BIO_METHOD,
+        destroy: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut BIO) -> ::std::os::raw::c_int,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_meth_set_write(
+        method: *mut BIO_METHOD,
+        write: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut BIO,
+                arg2: *const ::std::os::raw::c_char,
+                arg3: ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_meth_set_read(
+        method: *mut BIO_METHOD,
+        read: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut BIO,
+                arg2: *mut ::std::os::raw::c_char,
+                arg3: ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_meth_set_gets(
+        method: *mut BIO_METHOD,
+        gets: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut BIO,
+                arg2: *mut ::std::os::raw::c_char,
+                arg3: ::std::os::raw::c_int,
+            ) -> ::std::os::raw::c_int,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_meth_set_ctrl(
+        method: *mut BIO_METHOD,
+        ctrl: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: *mut BIO,
+                arg2: ::std::os::raw::c_int,
+                arg3: ::std::os::raw::c_long,
+                arg4: *mut ::std::os::raw::c_void,
+            ) -> ::std::os::raw::c_long,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_set_data(bio: *mut BIO, ptr: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+    pub fn BIO_get_data(bio: *mut BIO) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn BIO_set_init(bio: *mut BIO, init: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn BIO_get_init(bio: *mut BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_f_base64() -> *const BIO_METHOD;
+}
+extern "C" {
+    pub fn BIO_set_retry_special(bio: *mut BIO);
+}
+extern "C" {
+    pub fn BIO_set_write_buffer_size(
+        bio: *mut BIO,
+        buffer_size: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_set_shutdown(bio: *mut BIO, shutdown: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn BIO_get_shutdown(bio: *mut BIO) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_meth_set_puts(
+        method: *mut BIO_METHOD,
+        puts: ::std::option::Option<
+            unsafe extern "C" fn(arg1: *mut BIO, arg2: *const ::std::os::raw::c_char)
+                -> ::std::os::raw::c_int,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct bio_method_st {
+    pub type_: ::std::os::raw::c_int,
+    pub name: *const ::std::os::raw::c_char,
+    pub bwrite: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut BIO,
+            arg2: *const ::std::os::raw::c_char,
+            arg3: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub bread: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut BIO,
+            arg2: *mut ::std::os::raw::c_char,
+            arg3: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub bputs: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut BIO, arg2: *const ::std::os::raw::c_char)
+            -> ::std::os::raw::c_int,
+    >,
+    pub bgets: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut BIO,
+            arg2: *mut ::std::os::raw::c_char,
+            arg3: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub ctrl: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut BIO,
+            arg2: ::std::os::raw::c_int,
+            arg3: ::std::os::raw::c_long,
+            arg4: *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_long,
+    >,
+    pub create:
+        ::std::option::Option<unsafe extern "C" fn(arg1: *mut BIO) -> ::std::os::raw::c_int>,
+    pub destroy:
+        ::std::option::Option<unsafe extern "C" fn(arg1: *mut BIO) -> ::std::os::raw::c_int>,
+    pub callback_ctrl: ::std::option::Option<
+        unsafe extern "C" fn(arg1: *mut BIO, arg2: ::std::os::raw::c_int, arg3: bio_info_cb)
+            -> ::std::os::raw::c_long,
+    >,
+}
+#[test]
+fn bindgen_test_layout_bio_method_st() {
+    assert_eq!(
+        ::std::mem::size_of::<bio_method_st>(),
+        80usize,
+        concat!("Size of: ", stringify!(bio_method_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<bio_method_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(bio_method_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_method_st>())).type_ as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_method_st),
+            "::",
+            stringify!(type_)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_method_st>())).name as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_method_st),
+            "::",
+            stringify!(name)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_method_st>())).bwrite as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_method_st),
+            "::",
+            stringify!(bwrite)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_method_st>())).bread as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_method_st),
+            "::",
+            stringify!(bread)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_method_st>())).bputs as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_method_st),
+            "::",
+            stringify!(bputs)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_method_st>())).bgets as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_method_st),
+            "::",
+            stringify!(bgets)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_method_st>())).ctrl as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_method_st),
+            "::",
+            stringify!(ctrl)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_method_st>())).create as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_method_st),
+            "::",
+            stringify!(create)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_method_st>())).destroy as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_method_st),
+            "::",
+            stringify!(destroy)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_method_st>())).callback_ctrl as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_method_st),
+            "::",
+            stringify!(callback_ctrl)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct bio_st {
+    pub method: *const BIO_METHOD,
+    pub init: ::std::os::raw::c_int,
+    pub shutdown: ::std::os::raw::c_int,
+    pub flags: ::std::os::raw::c_int,
+    pub retry_reason: ::std::os::raw::c_int,
+    pub num: ::std::os::raw::c_int,
+    pub references: CRYPTO_refcount_t,
+    pub ptr: *mut ::std::os::raw::c_void,
+    pub next_bio: *mut BIO,
+    pub num_read: usize,
+    pub num_write: usize,
+}
+#[test]
+fn bindgen_test_layout_bio_st() {
+    assert_eq!(
+        ::std::mem::size_of::<bio_st>(),
+        64usize,
+        concat!("Size of: ", stringify!(bio_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<bio_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(bio_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_st>())).method as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_st),
+            "::",
+            stringify!(method)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_st>())).init as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_st),
+            "::",
+            stringify!(init)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_st>())).shutdown as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_st),
+            "::",
+            stringify!(shutdown)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_st>())).flags as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_st>())).retry_reason as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_st),
+            "::",
+            stringify!(retry_reason)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_st>())).num as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_st),
+            "::",
+            stringify!(num)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_st>())).references as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_st),
+            "::",
+            stringify!(references)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_st>())).ptr as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_st),
+            "::",
+            stringify!(ptr)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_st>())).next_bio as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_st),
+            "::",
+            stringify!(next_bio)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_st>())).num_read as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_st),
+            "::",
+            stringify!(num_read)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bio_st>())).num_write as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bio_st),
+            "::",
+            stringify!(num_write)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct bn_gencb_st {
+    pub arg: *mut ::std::os::raw::c_void,
+    pub callback: ::std::option::Option<
+        unsafe extern "C" fn(
+            event: ::std::os::raw::c_int,
+            n: ::std::os::raw::c_int,
+            arg1: *mut bn_gencb_st,
+        ) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_bn_gencb_st() {
+    assert_eq!(
+        ::std::mem::size_of::<bn_gencb_st>(),
+        16usize,
+        concat!("Size of: ", stringify!(bn_gencb_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<bn_gencb_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(bn_gencb_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bn_gencb_st>())).arg as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bn_gencb_st),
+            "::",
+            stringify!(arg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bn_gencb_st>())).callback as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bn_gencb_st),
+            "::",
+            stringify!(callback)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct bignum_st {
+    pub d: *mut u64,
+    pub width: ::std::os::raw::c_int,
+    pub dmax: ::std::os::raw::c_int,
+    pub neg: ::std::os::raw::c_int,
+    pub flags: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_bignum_st() {
+    assert_eq!(
+        ::std::mem::size_of::<bignum_st>(),
+        24usize,
+        concat!("Size of: ", stringify!(bignum_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<bignum_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(bignum_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bignum_st>())).d as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bignum_st),
+            "::",
+            stringify!(d)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bignum_st>())).width as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bignum_st),
+            "::",
+            stringify!(width)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bignum_st>())).dmax as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bignum_st),
+            "::",
+            stringify!(dmax)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bignum_st>())).neg as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bignum_st),
+            "::",
+            stringify!(neg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bignum_st>())).flags as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bignum_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct bn_mont_ctx_st {
+    pub RR: BIGNUM,
+    pub N: BIGNUM,
+    pub n0: [u64; 2usize],
+}
+#[test]
+fn bindgen_test_layout_bn_mont_ctx_st() {
+    assert_eq!(
+        ::std::mem::size_of::<bn_mont_ctx_st>(),
+        64usize,
+        concat!("Size of: ", stringify!(bn_mont_ctx_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<bn_mont_ctx_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(bn_mont_ctx_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bn_mont_ctx_st>())).RR as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bn_mont_ctx_st),
+            "::",
+            stringify!(RR)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bn_mont_ctx_st>())).N as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bn_mont_ctx_st),
+            "::",
+            stringify!(N)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<bn_mont_ctx_st>())).n0 as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(bn_mont_ctx_st),
+            "::",
+            stringify!(n0)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct asn1_object_st {
+    pub sn: *const ::std::os::raw::c_char,
+    pub ln: *const ::std::os::raw::c_char,
+    pub nid: ::std::os::raw::c_int,
+    pub length: ::std::os::raw::c_int,
+    pub data: *const ::std::os::raw::c_uchar,
+    pub flags: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_asn1_object_st() {
+    assert_eq!(
+        ::std::mem::size_of::<asn1_object_st>(),
+        40usize,
+        concat!("Size of: ", stringify!(asn1_object_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<asn1_object_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(asn1_object_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_object_st>())).sn as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_object_st),
+            "::",
+            stringify!(sn)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_object_st>())).ln as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_object_st),
+            "::",
+            stringify!(ln)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_object_st>())).nid as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_object_st),
+            "::",
+            stringify!(nid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_object_st>())).length as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_object_st),
+            "::",
+            stringify!(length)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_object_st>())).data as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_object_st),
+            "::",
+            stringify!(data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_object_st>())).flags as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_object_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct stack_st_ASN1_OBJECT {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct asn1_string_st {
+    pub length: ::std::os::raw::c_int,
+    pub type_: ::std::os::raw::c_int,
+    pub data: *mut ::std::os::raw::c_uchar,
+    pub flags: ::std::os::raw::c_long,
+}
+#[test]
+fn bindgen_test_layout_asn1_string_st() {
+    assert_eq!(
+        ::std::mem::size_of::<asn1_string_st>(),
+        24usize,
+        concat!("Size of: ", stringify!(asn1_string_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<asn1_string_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(asn1_string_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_string_st>())).length as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_string_st),
+            "::",
+            stringify!(length)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_string_st>())).type_ as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_string_st),
+            "::",
+            stringify!(type_)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_string_st>())).data as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_string_st),
+            "::",
+            stringify!(data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_string_st>())).flags as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_string_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ASN1_ENCODING_st {
+    pub enc: *mut ::std::os::raw::c_uchar,
+    pub len: ::std::os::raw::c_long,
+    pub modified: ::std::os::raw::c_int,
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>,
+    pub __bindgen_padding_0: [u8; 3usize],
+}
+#[test]
+fn bindgen_test_layout_ASN1_ENCODING_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ASN1_ENCODING_st>(),
+        24usize,
+        concat!("Size of: ", stringify!(ASN1_ENCODING_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ASN1_ENCODING_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ASN1_ENCODING_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ENCODING_st>())).enc as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ENCODING_st),
+            "::",
+            stringify!(enc)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ENCODING_st>())).len as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ENCODING_st),
+            "::",
+            stringify!(len)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ENCODING_st>())).modified as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ENCODING_st),
+            "::",
+            stringify!(modified)
+        )
+    );
+}
+impl ASN1_ENCODING_st {
+    #[inline]
+    pub fn alias_only(&self) -> ::std::os::raw::c_uint {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
+    }
+    #[inline]
+    pub fn set_alias_only(&mut self, val: ::std::os::raw::c_uint) {
+        unsafe {
+            let val: u32 = ::std::mem::transmute(val);
+            self._bitfield_1.set(0usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn alias_only_on_next_parse(&self) -> ::std::os::raw::c_uint {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u32) }
+    }
+    #[inline]
+    pub fn set_alias_only_on_next_parse(&mut self, val: ::std::os::raw::c_uint) {
+        unsafe {
+            let val: u32 = ::std::mem::transmute(val);
+            self._bitfield_1.set(1usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn new_bitfield_1(
+        alias_only: ::std::os::raw::c_uint,
+        alias_only_on_next_parse: ::std::os::raw::c_uint,
+    ) -> __BindgenBitfieldUnit<[u8; 1usize], u8> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> =
+            Default::default();
+        __bindgen_bitfield_unit.set(0usize, 1u8, {
+            let alias_only: u32 = unsafe { ::std::mem::transmute(alias_only) };
+            alias_only as u64
+        });
+        __bindgen_bitfield_unit.set(1usize, 1u8, {
+            let alias_only_on_next_parse: u32 =
+                unsafe { ::std::mem::transmute(alias_only_on_next_parse) };
+            alias_only_on_next_parse as u64
+        });
+        __bindgen_bitfield_unit
+    }
+}
+pub type ASN1_ENCODING = ASN1_ENCODING_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct asn1_string_table_st {
+    pub nid: ::std::os::raw::c_int,
+    pub minsize: ::std::os::raw::c_long,
+    pub maxsize: ::std::os::raw::c_long,
+    pub mask: ::std::os::raw::c_ulong,
+    pub flags: ::std::os::raw::c_ulong,
+}
+#[test]
+fn bindgen_test_layout_asn1_string_table_st() {
+    assert_eq!(
+        ::std::mem::size_of::<asn1_string_table_st>(),
+        40usize,
+        concat!("Size of: ", stringify!(asn1_string_table_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<asn1_string_table_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(asn1_string_table_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_string_table_st>())).nid as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_string_table_st),
+            "::",
+            stringify!(nid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_string_table_st>())).minsize as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_string_table_st),
+            "::",
+            stringify!(minsize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_string_table_st>())).maxsize as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_string_table_st),
+            "::",
+            stringify!(maxsize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_string_table_st>())).mask as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_string_table_st),
+            "::",
+            stringify!(mask)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_string_table_st>())).flags as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_string_table_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+}
+pub type ASN1_STRING_TABLE = asn1_string_table_st;
+pub type ASN1_TEMPLATE = ASN1_TEMPLATE_st;
+pub type ASN1_TLC = ASN1_TLC_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ASN1_VALUE_st {
+    _unused: [u8; 0],
+}
+pub type ASN1_VALUE = ASN1_VALUE_st;
+pub type d2i_of_void = ::std::option::Option<
+    unsafe extern "C" fn(
+        arg1: *mut *mut ::std::os::raw::c_void,
+        arg2: *mut *const ::std::os::raw::c_uchar,
+        arg3: ::std::os::raw::c_long,
+    ) -> *mut ::std::os::raw::c_void,
+>;
+pub type i2d_of_void = ::std::option::Option<
+    unsafe extern "C" fn(
+        arg1: *const ::std::os::raw::c_void,
+        arg2: *mut *mut ::std::os::raw::c_uchar,
+    ) -> ::std::os::raw::c_int,
+>;
+pub type ASN1_ITEM_EXP = ASN1_ITEM;
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct asn1_type_st {
+    pub type_: ::std::os::raw::c_int,
+    pub value: asn1_type_st__bindgen_ty_1,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union asn1_type_st__bindgen_ty_1 {
+    pub ptr: *mut ::std::os::raw::c_char,
+    pub boolean: ASN1_BOOLEAN,
+    pub asn1_string: *mut ASN1_STRING,
+    pub object: *mut ASN1_OBJECT,
+    pub integer: *mut ASN1_INTEGER,
+    pub enumerated: *mut ASN1_ENUMERATED,
+    pub bit_string: *mut ASN1_BIT_STRING,
+    pub octet_string: *mut ASN1_OCTET_STRING,
+    pub printablestring: *mut ASN1_PRINTABLESTRING,
+    pub t61string: *mut ASN1_T61STRING,
+    pub ia5string: *mut ASN1_IA5STRING,
+    pub generalstring: *mut ASN1_GENERALSTRING,
+    pub bmpstring: *mut ASN1_BMPSTRING,
+    pub universalstring: *mut ASN1_UNIVERSALSTRING,
+    pub utctime: *mut ASN1_UTCTIME,
+    pub generalizedtime: *mut ASN1_GENERALIZEDTIME,
+    pub visiblestring: *mut ASN1_VISIBLESTRING,
+    pub utf8string: *mut ASN1_UTF8STRING,
+    pub set: *mut ASN1_STRING,
+    pub sequence: *mut ASN1_STRING,
+    pub asn1_value: *mut ASN1_VALUE,
+    _bindgen_union_align: u64,
+}
+#[test]
+fn bindgen_test_layout_asn1_type_st__bindgen_ty_1() {
+    assert_eq!(
+        ::std::mem::size_of::<asn1_type_st__bindgen_ty_1>(),
+        8usize,
+        concat!("Size of: ", stringify!(asn1_type_st__bindgen_ty_1))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<asn1_type_st__bindgen_ty_1>(),
+        8usize,
+        concat!("Alignment of ", stringify!(asn1_type_st__bindgen_ty_1))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).ptr as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(ptr)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).boolean as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(boolean)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).asn1_string as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(asn1_string)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).object as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(object)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).integer as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(integer)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).enumerated as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(enumerated)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).bit_string as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(bit_string)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).octet_string as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(octet_string)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).printablestring as *const _
+                as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(printablestring)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).t61string as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(t61string)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).ia5string as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(ia5string)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).generalstring as *const _
+                as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(generalstring)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).bmpstring as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(bmpstring)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).universalstring as *const _
+                as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(universalstring)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).utctime as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(utctime)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).generalizedtime as *const _
+                as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(generalizedtime)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).visiblestring as *const _
+                as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(visiblestring)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).utf8string as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(utf8string)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).set as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(set)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).sequence as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(sequence)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<asn1_type_st__bindgen_ty_1>())).asn1_value as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st__bindgen_ty_1),
+            "::",
+            stringify!(asn1_value)
+        )
+    );
+}
+#[test]
+fn bindgen_test_layout_asn1_type_st() {
+    assert_eq!(
+        ::std::mem::size_of::<asn1_type_st>(),
+        16usize,
+        concat!("Size of: ", stringify!(asn1_type_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<asn1_type_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(asn1_type_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_type_st>())).type_ as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st),
+            "::",
+            stringify!(type_)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<asn1_type_st>())).value as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(asn1_type_st),
+            "::",
+            stringify!(value)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct stack_st_ASN1_TYPE {
+    _unused: [u8; 0],
+}
+pub type ASN1_SEQUENCE_ANY = stack_st_ASN1_TYPE;
+extern "C" {
+    #[link_name = "\u{1}ASN1_SEQUENCE_ANY_it"]
+    pub static mut ASN1_SEQUENCE_ANY_it: ASN1_ITEM;
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_SET_ANY_it"]
+    pub static mut ASN1_SET_ANY_it: ASN1_ITEM;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct X509_algor_st {
+    pub algorithm: *mut ASN1_OBJECT,
+    pub parameter: *mut ASN1_TYPE,
+}
+#[test]
+fn bindgen_test_layout_X509_algor_st() {
+    assert_eq!(
+        ::std::mem::size_of::<X509_algor_st>(),
+        16usize,
+        concat!("Size of: ", stringify!(X509_algor_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<X509_algor_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(X509_algor_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_algor_st>())).algorithm as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_algor_st),
+            "::",
+            stringify!(algorithm)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_algor_st>())).parameter as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_algor_st),
+            "::",
+            stringify!(parameter)
+        )
+    );
+}
+extern "C" {
+    pub fn ASN1_TYPE_new() -> *mut ASN1_TYPE;
+}
+extern "C" {
+    pub fn ASN1_TYPE_free(a: *mut ASN1_TYPE);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_ANY_it"]
+    pub static mut ASN1_ANY_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_TYPE_get(a: *mut ASN1_TYPE) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_TYPE_set(
+        a: *mut ASN1_TYPE,
+        type_: ::std::os::raw::c_int,
+        value: *mut ::std::os::raw::c_void,
+    );
+}
+extern "C" {
+    pub fn ASN1_TYPE_set1(
+        a: *mut ASN1_TYPE,
+        type_: ::std::os::raw::c_int,
+        value: *const ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_TYPE_cmp(a: *const ASN1_TYPE, b: *const ASN1_TYPE) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_OBJECT_new() -> *mut ASN1_OBJECT;
+}
+extern "C" {
+    pub fn ASN1_OBJECT_free(a: *mut ASN1_OBJECT);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_OBJECT_it"]
+    pub static mut ASN1_OBJECT_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_STRING_new() -> *mut ASN1_STRING;
+}
+extern "C" {
+    pub fn ASN1_STRING_free(a: *mut ASN1_STRING);
+}
+extern "C" {
+    pub fn ASN1_STRING_copy(
+        dst: *mut ASN1_STRING,
+        str: *const ASN1_STRING,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_STRING_dup(a: *const ASN1_STRING) -> *mut ASN1_STRING;
+}
+extern "C" {
+    pub fn ASN1_STRING_type_new(type_: ::std::os::raw::c_int) -> *mut ASN1_STRING;
+}
+extern "C" {
+    pub fn ASN1_STRING_cmp(a: *const ASN1_STRING, b: *const ASN1_STRING) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_STRING_set(
+        str: *mut ASN1_STRING,
+        data: *const ::std::os::raw::c_void,
+        len: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_STRING_set0(
+        str: *mut ASN1_STRING,
+        data: *mut ::std::os::raw::c_void,
+        len: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn ASN1_STRING_length(x: *const ASN1_STRING) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_STRING_length_set(x: *mut ASN1_STRING, n: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn ASN1_STRING_type(x: *mut ASN1_STRING) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_STRING_data(x: *mut ASN1_STRING) -> *mut ::std::os::raw::c_uchar;
+}
+extern "C" {
+    pub fn ASN1_STRING_get0_data(x: *const ASN1_STRING) -> *const ::std::os::raw::c_uchar;
+}
+extern "C" {
+    pub fn ASN1_BIT_STRING_new() -> *mut ASN1_BIT_STRING;
+}
+extern "C" {
+    pub fn ASN1_BIT_STRING_free(a: *mut ASN1_BIT_STRING);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_BIT_STRING_it"]
+    pub static mut ASN1_BIT_STRING_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_BIT_STRING_set(
+        a: *mut ASN1_BIT_STRING,
+        d: *mut ::std::os::raw::c_uchar,
+        length: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_BIT_STRING_set_bit(
+        a: *mut ASN1_BIT_STRING,
+        n: ::std::os::raw::c_int,
+        value: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_BIT_STRING_get_bit(
+        a: *mut ASN1_BIT_STRING,
+        n: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_BIT_STRING_check(
+        a: *mut ASN1_BIT_STRING,
+        flags: *mut ::std::os::raw::c_uchar,
+        flags_len: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_INTEGER_new() -> *mut ASN1_INTEGER;
+}
+extern "C" {
+    pub fn ASN1_INTEGER_free(a: *mut ASN1_INTEGER);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_INTEGER_it"]
+    pub static mut ASN1_INTEGER_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_INTEGER_dup(x: *const ASN1_INTEGER) -> *mut ASN1_INTEGER;
+}
+extern "C" {
+    pub fn ASN1_INTEGER_cmp(
+        x: *const ASN1_INTEGER,
+        y: *const ASN1_INTEGER,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_ENUMERATED_new() -> *mut ASN1_ENUMERATED;
+}
+extern "C" {
+    pub fn ASN1_ENUMERATED_free(a: *mut ASN1_ENUMERATED);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_ENUMERATED_it"]
+    pub static mut ASN1_ENUMERATED_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_UTCTIME_check(a: *const ASN1_UTCTIME) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_UTCTIME_set(s: *mut ASN1_UTCTIME, t: time_t) -> *mut ASN1_UTCTIME;
+}
+extern "C" {
+    pub fn ASN1_UTCTIME_adj(
+        s: *mut ASN1_UTCTIME,
+        t: time_t,
+        offset_day: ::std::os::raw::c_int,
+        offset_sec: ::std::os::raw::c_long,
+    ) -> *mut ASN1_UTCTIME;
+}
+extern "C" {
+    pub fn ASN1_UTCTIME_set_string(
+        s: *mut ASN1_UTCTIME,
+        str: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_UTCTIME_cmp_time_t(s: *const ASN1_UTCTIME, t: time_t) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_GENERALIZEDTIME_check(a: *const ASN1_GENERALIZEDTIME) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_GENERALIZEDTIME_set(
+        s: *mut ASN1_GENERALIZEDTIME,
+        t: time_t,
+    ) -> *mut ASN1_GENERALIZEDTIME;
+}
+extern "C" {
+    pub fn ASN1_GENERALIZEDTIME_adj(
+        s: *mut ASN1_GENERALIZEDTIME,
+        t: time_t,
+        offset_day: ::std::os::raw::c_int,
+        offset_sec: ::std::os::raw::c_long,
+    ) -> *mut ASN1_GENERALIZEDTIME;
+}
+extern "C" {
+    pub fn ASN1_GENERALIZEDTIME_set_string(
+        s: *mut ASN1_GENERALIZEDTIME,
+        str: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_TIME_diff(
+        pday: *mut ::std::os::raw::c_int,
+        psec: *mut ::std::os::raw::c_int,
+        from: *const ASN1_TIME,
+        to: *const ASN1_TIME,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_OCTET_STRING_new() -> *mut ASN1_OCTET_STRING;
+}
+extern "C" {
+    pub fn ASN1_OCTET_STRING_free(a: *mut ASN1_OCTET_STRING);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_OCTET_STRING_it"]
+    pub static mut ASN1_OCTET_STRING_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_OCTET_STRING_dup(a: *const ASN1_OCTET_STRING) -> *mut ASN1_OCTET_STRING;
+}
+extern "C" {
+    pub fn ASN1_OCTET_STRING_cmp(
+        a: *const ASN1_OCTET_STRING,
+        b: *const ASN1_OCTET_STRING,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_OCTET_STRING_set(
+        str: *mut ASN1_OCTET_STRING,
+        data: *const ::std::os::raw::c_uchar,
+        len: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_VISIBLESTRING_new() -> *mut ASN1_VISIBLESTRING;
+}
+extern "C" {
+    pub fn ASN1_VISIBLESTRING_free(a: *mut ASN1_VISIBLESTRING);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_VISIBLESTRING_it"]
+    pub static mut ASN1_VISIBLESTRING_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_UNIVERSALSTRING_new() -> *mut ASN1_UNIVERSALSTRING;
+}
+extern "C" {
+    pub fn ASN1_UNIVERSALSTRING_free(a: *mut ASN1_UNIVERSALSTRING);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_UNIVERSALSTRING_it"]
+    pub static mut ASN1_UNIVERSALSTRING_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_UTF8STRING_new() -> *mut ASN1_UTF8STRING;
+}
+extern "C" {
+    pub fn ASN1_UTF8STRING_free(a: *mut ASN1_UTF8STRING);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_UTF8STRING_it"]
+    pub static mut ASN1_UTF8STRING_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_NULL_new() -> *mut ASN1_NULL;
+}
+extern "C" {
+    pub fn ASN1_NULL_free(a: *mut ASN1_NULL);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_NULL_it"]
+    pub static mut ASN1_NULL_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_BMPSTRING_new() -> *mut ASN1_BMPSTRING;
+}
+extern "C" {
+    pub fn ASN1_BMPSTRING_free(a: *mut ASN1_BMPSTRING);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_BMPSTRING_it"]
+    pub static mut ASN1_BMPSTRING_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_PRINTABLE_new() -> *mut ASN1_STRING;
+}
+extern "C" {
+    pub fn ASN1_PRINTABLE_free(a: *mut ASN1_STRING);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_PRINTABLE_it"]
+    pub static mut ASN1_PRINTABLE_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_PRINTABLESTRING_new() -> *mut ASN1_PRINTABLESTRING;
+}
+extern "C" {
+    pub fn ASN1_PRINTABLESTRING_free(a: *mut ASN1_PRINTABLESTRING);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_PRINTABLESTRING_it"]
+    pub static mut ASN1_PRINTABLESTRING_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_T61STRING_new() -> *mut ASN1_T61STRING;
+}
+extern "C" {
+    pub fn ASN1_T61STRING_free(a: *mut ASN1_T61STRING);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_T61STRING_it"]
+    pub static mut ASN1_T61STRING_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_IA5STRING_new() -> *mut ASN1_IA5STRING;
+}
+extern "C" {
+    pub fn ASN1_IA5STRING_free(a: *mut ASN1_IA5STRING);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_IA5STRING_it"]
+    pub static mut ASN1_IA5STRING_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_GENERALSTRING_new() -> *mut ASN1_GENERALSTRING;
+}
+extern "C" {
+    pub fn ASN1_GENERALSTRING_free(a: *mut ASN1_GENERALSTRING);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_GENERALSTRING_it"]
+    pub static mut ASN1_GENERALSTRING_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_UTCTIME_new() -> *mut ASN1_UTCTIME;
+}
+extern "C" {
+    pub fn ASN1_UTCTIME_free(a: *mut ASN1_UTCTIME);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_UTCTIME_it"]
+    pub static mut ASN1_UTCTIME_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_GENERALIZEDTIME_new() -> *mut ASN1_GENERALIZEDTIME;
+}
+extern "C" {
+    pub fn ASN1_GENERALIZEDTIME_free(a: *mut ASN1_GENERALIZEDTIME);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_GENERALIZEDTIME_it"]
+    pub static mut ASN1_GENERALIZEDTIME_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_TIME_new() -> *mut ASN1_TIME;
+}
+extern "C" {
+    pub fn ASN1_TIME_free(a: *mut ASN1_TIME);
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_TIME_it"]
+    pub static mut ASN1_TIME_it: ASN1_ITEM;
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_OCTET_STRING_NDEF_it"]
+    pub static mut ASN1_OCTET_STRING_NDEF_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_TIME_set(s: *mut ASN1_TIME, t: time_t) -> *mut ASN1_TIME;
+}
+extern "C" {
+    pub fn ASN1_TIME_adj(
+        s: *mut ASN1_TIME,
+        t: time_t,
+        offset_day: ::std::os::raw::c_int,
+        offset_sec: ::std::os::raw::c_long,
+    ) -> *mut ASN1_TIME;
+}
+extern "C" {
+    pub fn ASN1_TIME_check(t: *mut ASN1_TIME) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_TIME_to_generalizedtime(
+        t: *mut ASN1_TIME,
+        out: *mut *mut ASN1_GENERALIZEDTIME,
+    ) -> *mut ASN1_GENERALIZEDTIME;
+}
+extern "C" {
+    pub fn ASN1_TIME_set_string(
+        s: *mut ASN1_TIME,
+        str: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_OBJECT_create(
+        nid: ::std::os::raw::c_int,
+        data: *mut ::std::os::raw::c_uchar,
+        len: ::std::os::raw::c_int,
+        sn: *const ::std::os::raw::c_char,
+        ln: *const ::std::os::raw::c_char,
+    ) -> *mut ASN1_OBJECT;
+}
+extern "C" {
+    pub fn ASN1_INTEGER_set(
+        a: *mut ASN1_INTEGER,
+        v: ::std::os::raw::c_long,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_INTEGER_set_uint64(out: *mut ASN1_INTEGER, v: u64) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_INTEGER_get(a: *const ASN1_INTEGER) -> ::std::os::raw::c_long;
+}
+extern "C" {
+    pub fn ASN1_INTEGER_to_BN(ai: *const ASN1_INTEGER, bn: *mut BIGNUM) -> *mut BIGNUM;
+}
+extern "C" {
+    pub fn ASN1_ENUMERATED_set(
+        a: *mut ASN1_ENUMERATED,
+        v: ::std::os::raw::c_long,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_ENUMERATED_get(a: *mut ASN1_ENUMERATED) -> ::std::os::raw::c_long;
+}
+extern "C" {
+    pub fn ASN1_ENUMERATED_to_BN(ai: *mut ASN1_ENUMERATED, bn: *mut BIGNUM) -> *mut BIGNUM;
+}
+extern "C" {
+    pub fn ASN1_PRINTABLE_type(
+        s: *const ::std::os::raw::c_uchar,
+        max: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_tag2bit(tag: ::std::os::raw::c_int) -> ::std::os::raw::c_ulong;
+}
+extern "C" {
+    pub fn ASN1_get_object(
+        pp: *mut *const ::std::os::raw::c_uchar,
+        plength: *mut ::std::os::raw::c_long,
+        ptag: *mut ::std::os::raw::c_int,
+        pclass: *mut ::std::os::raw::c_int,
+        omax: ::std::os::raw::c_long,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_put_object(
+        pp: *mut *mut ::std::os::raw::c_uchar,
+        constructed: ::std::os::raw::c_int,
+        length: ::std::os::raw::c_int,
+        tag: ::std::os::raw::c_int,
+        xclass: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn ASN1_put_eoc(pp: *mut *mut ::std::os::raw::c_uchar) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_object_size(
+        constructed: ::std::os::raw::c_int,
+        length: ::std::os::raw::c_int,
+        tag: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_dup(
+        i2d: i2d_of_void,
+        d2i: d2i_of_void,
+        x: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn ASN1_item_dup(
+        it: *const ASN1_ITEM,
+        x: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn ASN1_d2i_fp(
+        xnew: ::std::option::Option<unsafe extern "C" fn() -> *mut ::std::os::raw::c_void>,
+        d2i: d2i_of_void,
+        in_: *mut FILE,
+        x: *mut *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn ASN1_item_d2i_fp(
+        it: *const ASN1_ITEM,
+        in_: *mut FILE,
+        x: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn ASN1_i2d_fp(
+        i2d: i2d_of_void,
+        out: *mut FILE,
+        x: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_item_i2d_fp(
+        it: *const ASN1_ITEM,
+        out: *mut FILE,
+        x: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_STRING_print_ex_fp(
+        fp: *mut FILE,
+        str: *mut ASN1_STRING,
+        flags: ::std::os::raw::c_ulong,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_STRING_to_UTF8(
+        out: *mut *mut ::std::os::raw::c_uchar,
+        in_: *mut ASN1_STRING,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_d2i_bio(
+        xnew: ::std::option::Option<unsafe extern "C" fn() -> *mut ::std::os::raw::c_void>,
+        d2i: d2i_of_void,
+        in_: *mut BIO,
+        x: *mut *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn ASN1_item_d2i_bio(
+        it: *const ASN1_ITEM,
+        in_: *mut BIO,
+        x: *mut ::std::os::raw::c_void,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn ASN1_i2d_bio(
+        i2d: i2d_of_void,
+        out: *mut BIO,
+        x: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_item_i2d_bio(
+        it: *const ASN1_ITEM,
+        out: *mut BIO,
+        x: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_UTCTIME_print(fp: *mut BIO, a: *const ASN1_UTCTIME) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_GENERALIZEDTIME_print(
+        fp: *mut BIO,
+        a: *const ASN1_GENERALIZEDTIME,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_TIME_print(fp: *mut BIO, a: *const ASN1_TIME) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_STRING_print(bp: *mut BIO, v: *const ASN1_STRING) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_STRING_print_ex(
+        out: *mut BIO,
+        str: *mut ASN1_STRING,
+        flags: ::std::os::raw::c_ulong,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_tag2str(tag: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn ASN1_item_unpack(
+        oct: *mut ASN1_STRING,
+        it: *const ASN1_ITEM,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn ASN1_item_pack(
+        obj: *mut ::std::os::raw::c_void,
+        it: *const ASN1_ITEM,
+        oct: *mut *mut ASN1_OCTET_STRING,
+    ) -> *mut ASN1_STRING;
+}
+extern "C" {
+    pub fn ASN1_STRING_set_default_mask(mask: ::std::os::raw::c_ulong);
+}
+extern "C" {
+    pub fn ASN1_STRING_set_default_mask_asc(
+        p: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_STRING_get_default_mask() -> ::std::os::raw::c_ulong;
+}
+extern "C" {
+    pub fn ASN1_mbstring_copy(
+        out: *mut *mut ASN1_STRING,
+        in_: *const ::std::os::raw::c_uchar,
+        len: ::std::os::raw::c_int,
+        inform: ::std::os::raw::c_int,
+        mask: ::std::os::raw::c_ulong,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_mbstring_ncopy(
+        out: *mut *mut ASN1_STRING,
+        in_: *const ::std::os::raw::c_uchar,
+        len: ::std::os::raw::c_int,
+        inform: ::std::os::raw::c_int,
+        mask: ::std::os::raw::c_ulong,
+        minsize: ::std::os::raw::c_long,
+        maxsize: ::std::os::raw::c_long,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_STRING_set_by_NID(
+        out: *mut *mut ASN1_STRING,
+        in_: *const ::std::os::raw::c_uchar,
+        inlen: ::std::os::raw::c_int,
+        inform: ::std::os::raw::c_int,
+        nid: ::std::os::raw::c_int,
+    ) -> *mut ASN1_STRING;
+}
+extern "C" {
+    pub fn ASN1_STRING_TABLE_get(nid: ::std::os::raw::c_int) -> *mut ASN1_STRING_TABLE;
+}
+extern "C" {
+    pub fn ASN1_STRING_TABLE_add(
+        arg1: ::std::os::raw::c_int,
+        arg2: ::std::os::raw::c_long,
+        arg3: ::std::os::raw::c_long,
+        arg4: ::std::os::raw::c_ulong,
+        arg5: ::std::os::raw::c_ulong,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_STRING_TABLE_cleanup();
+}
+extern "C" {
+    pub fn ASN1_item_new(it: *const ASN1_ITEM) -> *mut ASN1_VALUE;
+}
+extern "C" {
+    pub fn ASN1_item_free(val: *mut ASN1_VALUE, it: *const ASN1_ITEM);
+}
+extern "C" {
+    pub fn ASN1_item_d2i(
+        val: *mut *mut ASN1_VALUE,
+        in_: *mut *const ::std::os::raw::c_uchar,
+        len: ::std::os::raw::c_long,
+        it: *const ASN1_ITEM,
+    ) -> *mut ASN1_VALUE;
+}
+extern "C" {
+    pub fn ASN1_item_i2d(
+        val: *mut ASN1_VALUE,
+        out: *mut *mut ::std::os::raw::c_uchar,
+        it: *const ASN1_ITEM,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_item_ndef_i2d(
+        val: *mut ASN1_VALUE,
+        out: *mut *mut ::std::os::raw::c_uchar,
+        it: *const ASN1_ITEM,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_generate_nconf(
+        str: *mut ::std::os::raw::c_char,
+        nconf: *mut CONF,
+    ) -> *mut ASN1_TYPE;
+}
+extern "C" {
+    pub fn ASN1_generate_v3(
+        str: *mut ::std::os::raw::c_char,
+        cnf: *mut X509V3_CTX,
+    ) -> *mut ASN1_TYPE;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ASN1_TEMPLATE_st {
+    pub flags: ::std::os::raw::c_ulong,
+    pub tag: ::std::os::raw::c_long,
+    pub offset: ::std::os::raw::c_ulong,
+    pub field_name: *const ::std::os::raw::c_char,
+    pub item: *mut ASN1_ITEM_EXP,
+}
+#[test]
+fn bindgen_test_layout_ASN1_TEMPLATE_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ASN1_TEMPLATE_st>(),
+        40usize,
+        concat!("Size of: ", stringify!(ASN1_TEMPLATE_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ASN1_TEMPLATE_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ASN1_TEMPLATE_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_TEMPLATE_st>())).flags as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_TEMPLATE_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_TEMPLATE_st>())).tag as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_TEMPLATE_st),
+            "::",
+            stringify!(tag)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_TEMPLATE_st>())).offset as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_TEMPLATE_st),
+            "::",
+            stringify!(offset)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_TEMPLATE_st>())).field_name as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_TEMPLATE_st),
+            "::",
+            stringify!(field_name)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_TEMPLATE_st>())).item as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_TEMPLATE_st),
+            "::",
+            stringify!(item)
+        )
+    );
+}
+pub type ASN1_ADB_TABLE = ASN1_ADB_TABLE_st;
+pub type ASN1_ADB = ASN1_ADB_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct asn1_must_be_null_st {
+    _unused: [u8; 0],
+}
+pub type ASN1_MUST_BE_NULL = asn1_must_be_null_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ASN1_ADB_st {
+    pub flags: ::std::os::raw::c_ulong,
+    pub offset: ::std::os::raw::c_ulong,
+    pub unused: *mut ASN1_MUST_BE_NULL,
+    pub tbl: *const ASN1_ADB_TABLE,
+    pub tblcount: ::std::os::raw::c_long,
+    pub default_tt: *const ASN1_TEMPLATE,
+    pub null_tt: *const ASN1_TEMPLATE,
+}
+#[test]
+fn bindgen_test_layout_ASN1_ADB_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ASN1_ADB_st>(),
+        56usize,
+        concat!("Size of: ", stringify!(ASN1_ADB_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ASN1_ADB_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ASN1_ADB_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ADB_st>())).flags as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ADB_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ADB_st>())).offset as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ADB_st),
+            "::",
+            stringify!(offset)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ADB_st>())).unused as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ADB_st),
+            "::",
+            stringify!(unused)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ADB_st>())).tbl as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ADB_st),
+            "::",
+            stringify!(tbl)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ADB_st>())).tblcount as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ADB_st),
+            "::",
+            stringify!(tblcount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ADB_st>())).default_tt as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ADB_st),
+            "::",
+            stringify!(default_tt)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ADB_st>())).null_tt as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ADB_st),
+            "::",
+            stringify!(null_tt)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ASN1_ADB_TABLE_st {
+    pub value: ::std::os::raw::c_long,
+    pub tt: ASN1_TEMPLATE,
+}
+#[test]
+fn bindgen_test_layout_ASN1_ADB_TABLE_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ASN1_ADB_TABLE_st>(),
+        48usize,
+        concat!("Size of: ", stringify!(ASN1_ADB_TABLE_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ASN1_ADB_TABLE_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ASN1_ADB_TABLE_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ADB_TABLE_st>())).value as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ADB_TABLE_st),
+            "::",
+            stringify!(value)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ADB_TABLE_st>())).tt as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ADB_TABLE_st),
+            "::",
+            stringify!(tt)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ASN1_ITEM_st {
+    pub itype: ::std::os::raw::c_char,
+    pub utype: ::std::os::raw::c_long,
+    pub templates: *const ASN1_TEMPLATE,
+    pub tcount: ::std::os::raw::c_long,
+    pub funcs: *const ::std::os::raw::c_void,
+    pub size: ::std::os::raw::c_long,
+    pub sname: *const ::std::os::raw::c_char,
+}
+#[test]
+fn bindgen_test_layout_ASN1_ITEM_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ASN1_ITEM_st>(),
+        56usize,
+        concat!("Size of: ", stringify!(ASN1_ITEM_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ASN1_ITEM_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ASN1_ITEM_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ITEM_st>())).itype as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ITEM_st),
+            "::",
+            stringify!(itype)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ITEM_st>())).utype as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ITEM_st),
+            "::",
+            stringify!(utype)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ITEM_st>())).templates as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ITEM_st),
+            "::",
+            stringify!(templates)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ITEM_st>())).tcount as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ITEM_st),
+            "::",
+            stringify!(tcount)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ITEM_st>())).funcs as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ITEM_st),
+            "::",
+            stringify!(funcs)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ITEM_st>())).size as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ITEM_st),
+            "::",
+            stringify!(size)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_ITEM_st>())).sname as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_ITEM_st),
+            "::",
+            stringify!(sname)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ASN1_TLC_st {
+    pub valid: ::std::os::raw::c_char,
+    pub ret: ::std::os::raw::c_int,
+    pub plen: ::std::os::raw::c_long,
+    pub ptag: ::std::os::raw::c_int,
+    pub pclass: ::std::os::raw::c_int,
+    pub hdrlen: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_ASN1_TLC_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ASN1_TLC_st>(),
+        32usize,
+        concat!("Size of: ", stringify!(ASN1_TLC_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ASN1_TLC_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ASN1_TLC_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_TLC_st>())).valid as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_TLC_st),
+            "::",
+            stringify!(valid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_TLC_st>())).ret as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_TLC_st),
+            "::",
+            stringify!(ret)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_TLC_st>())).plen as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_TLC_st),
+            "::",
+            stringify!(plen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_TLC_st>())).ptag as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_TLC_st),
+            "::",
+            stringify!(ptag)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_TLC_st>())).pclass as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_TLC_st),
+            "::",
+            stringify!(pclass)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_TLC_st>())).hdrlen as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_TLC_st),
+            "::",
+            stringify!(hdrlen)
+        )
+    );
+}
+pub type ASN1_new_func = ::std::option::Option<unsafe extern "C" fn() -> *mut ASN1_VALUE>;
+pub type ASN1_free_func = ::std::option::Option<unsafe extern "C" fn(a: *mut ASN1_VALUE)>;
+pub type ASN1_d2i_func = ::std::option::Option<
+    unsafe extern "C" fn(
+        a: *mut *mut ASN1_VALUE,
+        in_: *mut *const ::std::os::raw::c_uchar,
+        length: ::std::os::raw::c_long,
+    ) -> *mut ASN1_VALUE,
+>;
+pub type ASN1_i2d_func = ::std::option::Option<
+    unsafe extern "C" fn(a: *mut ASN1_VALUE, in_: *mut *mut ::std::os::raw::c_uchar)
+        -> ::std::os::raw::c_int,
+>;
+pub type ASN1_ex_d2i = ::std::option::Option<
+    unsafe extern "C" fn(
+        pval: *mut *mut ASN1_VALUE,
+        in_: *mut *const ::std::os::raw::c_uchar,
+        len: ::std::os::raw::c_long,
+        it: *const ASN1_ITEM,
+        tag: ::std::os::raw::c_int,
+        aclass: ::std::os::raw::c_int,
+        opt: ::std::os::raw::c_char,
+        ctx: *mut ASN1_TLC,
+    ) -> ::std::os::raw::c_int,
+>;
+pub type ASN1_ex_i2d = ::std::option::Option<
+    unsafe extern "C" fn(
+        pval: *mut *mut ASN1_VALUE,
+        out: *mut *mut ::std::os::raw::c_uchar,
+        it: *const ASN1_ITEM,
+        tag: ::std::os::raw::c_int,
+        aclass: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int,
+>;
+pub type ASN1_ex_new_func = ::std::option::Option<
+    unsafe extern "C" fn(pval: *mut *mut ASN1_VALUE, it: *const ASN1_ITEM) -> ::std::os::raw::c_int,
+>;
+pub type ASN1_ex_free_func =
+    ::std::option::Option<unsafe extern "C" fn(pval: *mut *mut ASN1_VALUE, it: *const ASN1_ITEM)>;
+pub type ASN1_ex_print_func = ::std::option::Option<
+    unsafe extern "C" fn(
+        out: *mut BIO,
+        pval: *mut *mut ASN1_VALUE,
+        indent: ::std::os::raw::c_int,
+        fname: *const ::std::os::raw::c_char,
+        pctx: *const ASN1_PCTX,
+    ) -> ::std::os::raw::c_int,
+>;
+pub type ASN1_primitive_i2c = ::std::option::Option<
+    unsafe extern "C" fn(
+        pval: *mut *mut ASN1_VALUE,
+        cont: *mut ::std::os::raw::c_uchar,
+        putype: *mut ::std::os::raw::c_int,
+        it: *const ASN1_ITEM,
+    ) -> ::std::os::raw::c_int,
+>;
+pub type ASN1_primitive_c2i = ::std::option::Option<
+    unsafe extern "C" fn(
+        pval: *mut *mut ASN1_VALUE,
+        cont: *const ::std::os::raw::c_uchar,
+        len: ::std::os::raw::c_int,
+        utype: ::std::os::raw::c_int,
+        free_cont: *mut ::std::os::raw::c_char,
+        it: *const ASN1_ITEM,
+    ) -> ::std::os::raw::c_int,
+>;
+pub type ASN1_primitive_print = ::std::option::Option<
+    unsafe extern "C" fn(
+        out: *mut BIO,
+        pval: *mut *mut ASN1_VALUE,
+        it: *const ASN1_ITEM,
+        indent: ::std::os::raw::c_int,
+        pctx: *const ASN1_PCTX,
+    ) -> ::std::os::raw::c_int,
+>;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ASN1_COMPAT_FUNCS_st {
+    pub asn1_new: ASN1_new_func,
+    pub asn1_free: ASN1_free_func,
+    pub asn1_d2i: ASN1_d2i_func,
+    pub asn1_i2d: ASN1_i2d_func,
+}
+#[test]
+fn bindgen_test_layout_ASN1_COMPAT_FUNCS_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ASN1_COMPAT_FUNCS_st>(),
+        32usize,
+        concat!("Size of: ", stringify!(ASN1_COMPAT_FUNCS_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ASN1_COMPAT_FUNCS_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ASN1_COMPAT_FUNCS_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_COMPAT_FUNCS_st>())).asn1_new as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_COMPAT_FUNCS_st),
+            "::",
+            stringify!(asn1_new)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_COMPAT_FUNCS_st>())).asn1_free as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_COMPAT_FUNCS_st),
+            "::",
+            stringify!(asn1_free)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_COMPAT_FUNCS_st>())).asn1_d2i as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_COMPAT_FUNCS_st),
+            "::",
+            stringify!(asn1_d2i)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_COMPAT_FUNCS_st>())).asn1_i2d as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_COMPAT_FUNCS_st),
+            "::",
+            stringify!(asn1_i2d)
+        )
+    );
+}
+pub type ASN1_COMPAT_FUNCS = ASN1_COMPAT_FUNCS_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ASN1_EXTERN_FUNCS_st {
+    pub app_data: *mut ::std::os::raw::c_void,
+    pub asn1_ex_new: ASN1_ex_new_func,
+    pub asn1_ex_free: ASN1_ex_free_func,
+    pub asn1_ex_clear: ASN1_ex_free_func,
+    pub asn1_ex_d2i: ASN1_ex_d2i,
+    pub asn1_ex_i2d: ASN1_ex_i2d,
+    pub asn1_ex_print: ASN1_ex_print_func,
+}
+#[test]
+fn bindgen_test_layout_ASN1_EXTERN_FUNCS_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ASN1_EXTERN_FUNCS_st>(),
+        56usize,
+        concat!("Size of: ", stringify!(ASN1_EXTERN_FUNCS_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ASN1_EXTERN_FUNCS_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ASN1_EXTERN_FUNCS_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_EXTERN_FUNCS_st>())).app_data as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_EXTERN_FUNCS_st),
+            "::",
+            stringify!(app_data)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ASN1_EXTERN_FUNCS_st>())).asn1_ex_new as *const _ as usize
+        },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_EXTERN_FUNCS_st),
+            "::",
+            stringify!(asn1_ex_new)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ASN1_EXTERN_FUNCS_st>())).asn1_ex_free as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_EXTERN_FUNCS_st),
+            "::",
+            stringify!(asn1_ex_free)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ASN1_EXTERN_FUNCS_st>())).asn1_ex_clear as *const _ as usize
+        },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_EXTERN_FUNCS_st),
+            "::",
+            stringify!(asn1_ex_clear)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ASN1_EXTERN_FUNCS_st>())).asn1_ex_d2i as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_EXTERN_FUNCS_st),
+            "::",
+            stringify!(asn1_ex_d2i)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ASN1_EXTERN_FUNCS_st>())).asn1_ex_i2d as *const _ as usize
+        },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_EXTERN_FUNCS_st),
+            "::",
+            stringify!(asn1_ex_i2d)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ASN1_EXTERN_FUNCS_st>())).asn1_ex_print as *const _ as usize
+        },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_EXTERN_FUNCS_st),
+            "::",
+            stringify!(asn1_ex_print)
+        )
+    );
+}
+pub type ASN1_EXTERN_FUNCS = ASN1_EXTERN_FUNCS_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ASN1_PRIMITIVE_FUNCS_st {
+    pub app_data: *mut ::std::os::raw::c_void,
+    pub flags: ::std::os::raw::c_ulong,
+    pub prim_new: ASN1_ex_new_func,
+    pub prim_free: ASN1_ex_free_func,
+    pub prim_clear: ASN1_ex_free_func,
+    pub prim_c2i: ASN1_primitive_c2i,
+    pub prim_i2c: ASN1_primitive_i2c,
+    pub prim_print: ASN1_primitive_print,
+}
+#[test]
+fn bindgen_test_layout_ASN1_PRIMITIVE_FUNCS_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ASN1_PRIMITIVE_FUNCS_st>(),
+        64usize,
+        concat!("Size of: ", stringify!(ASN1_PRIMITIVE_FUNCS_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ASN1_PRIMITIVE_FUNCS_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ASN1_PRIMITIVE_FUNCS_st))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ASN1_PRIMITIVE_FUNCS_st>())).app_data as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_PRIMITIVE_FUNCS_st),
+            "::",
+            stringify!(app_data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_PRIMITIVE_FUNCS_st>())).flags as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_PRIMITIVE_FUNCS_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ASN1_PRIMITIVE_FUNCS_st>())).prim_new as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_PRIMITIVE_FUNCS_st),
+            "::",
+            stringify!(prim_new)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ASN1_PRIMITIVE_FUNCS_st>())).prim_free as *const _ as usize
+        },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_PRIMITIVE_FUNCS_st),
+            "::",
+            stringify!(prim_free)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ASN1_PRIMITIVE_FUNCS_st>())).prim_clear as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_PRIMITIVE_FUNCS_st),
+            "::",
+            stringify!(prim_clear)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ASN1_PRIMITIVE_FUNCS_st>())).prim_c2i as *const _ as usize
+        },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_PRIMITIVE_FUNCS_st),
+            "::",
+            stringify!(prim_c2i)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ASN1_PRIMITIVE_FUNCS_st>())).prim_i2c as *const _ as usize
+        },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_PRIMITIVE_FUNCS_st),
+            "::",
+            stringify!(prim_i2c)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ASN1_PRIMITIVE_FUNCS_st>())).prim_print as *const _ as usize
+        },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_PRIMITIVE_FUNCS_st),
+            "::",
+            stringify!(prim_print)
+        )
+    );
+}
+pub type ASN1_PRIMITIVE_FUNCS = ASN1_PRIMITIVE_FUNCS_st;
+pub type ASN1_aux_cb = ::std::option::Option<
+    unsafe extern "C" fn(
+        operation: ::std::os::raw::c_int,
+        in_: *mut *mut ASN1_VALUE,
+        it: *const ASN1_ITEM,
+        exarg: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int,
+>;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ASN1_AUX_st {
+    pub app_data: *mut ::std::os::raw::c_void,
+    pub flags: ::std::os::raw::c_int,
+    pub ref_offset: ::std::os::raw::c_int,
+    pub asn1_cb: ASN1_aux_cb,
+    pub enc_offset: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_ASN1_AUX_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ASN1_AUX_st>(),
+        32usize,
+        concat!("Size of: ", stringify!(ASN1_AUX_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ASN1_AUX_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ASN1_AUX_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_AUX_st>())).app_data as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_AUX_st),
+            "::",
+            stringify!(app_data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_AUX_st>())).flags as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_AUX_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_AUX_st>())).ref_offset as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_AUX_st),
+            "::",
+            stringify!(ref_offset)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_AUX_st>())).asn1_cb as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_AUX_st),
+            "::",
+            stringify!(asn1_cb)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_AUX_st>())).enc_offset as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_AUX_st),
+            "::",
+            stringify!(enc_offset)
+        )
+    );
+}
+pub type ASN1_AUX = ASN1_AUX_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ASN1_PRINT_ARG_st {
+    pub out: *mut BIO,
+    pub indent: ::std::os::raw::c_int,
+    pub pctx: *const ASN1_PCTX,
+}
+#[test]
+fn bindgen_test_layout_ASN1_PRINT_ARG_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ASN1_PRINT_ARG_st>(),
+        24usize,
+        concat!("Size of: ", stringify!(ASN1_PRINT_ARG_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ASN1_PRINT_ARG_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ASN1_PRINT_ARG_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_PRINT_ARG_st>())).out as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_PRINT_ARG_st),
+            "::",
+            stringify!(out)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_PRINT_ARG_st>())).indent as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_PRINT_ARG_st),
+            "::",
+            stringify!(indent)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_PRINT_ARG_st>())).pctx as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_PRINT_ARG_st),
+            "::",
+            stringify!(pctx)
+        )
+    );
+}
+pub type ASN1_PRINT_ARG = ASN1_PRINT_ARG_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ASN1_STREAM_ARG_st {
+    pub out: *mut BIO,
+    pub ndef_bio: *mut BIO,
+    pub boundary: *mut *mut ::std::os::raw::c_uchar,
+}
+#[test]
+fn bindgen_test_layout_ASN1_STREAM_ARG_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ASN1_STREAM_ARG_st>(),
+        24usize,
+        concat!("Size of: ", stringify!(ASN1_STREAM_ARG_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ASN1_STREAM_ARG_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ASN1_STREAM_ARG_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_STREAM_ARG_st>())).out as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_STREAM_ARG_st),
+            "::",
+            stringify!(out)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_STREAM_ARG_st>())).ndef_bio as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_STREAM_ARG_st),
+            "::",
+            stringify!(ndef_bio)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ASN1_STREAM_ARG_st>())).boundary as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ASN1_STREAM_ARG_st),
+            "::",
+            stringify!(boundary)
+        )
+    );
+}
+pub type ASN1_STREAM_ARG = ASN1_STREAM_ARG_st;
+extern "C" {
+    #[link_name = "\u{1}ASN1_BOOLEAN_it"]
+    pub static mut ASN1_BOOLEAN_it: ASN1_ITEM;
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_TBOOLEAN_it"]
+    pub static mut ASN1_TBOOLEAN_it: ASN1_ITEM;
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_FBOOLEAN_it"]
+    pub static mut ASN1_FBOOLEAN_it: ASN1_ITEM;
+}
+extern "C" {
+    #[link_name = "\u{1}ASN1_SEQUENCE_it"]
+    pub static mut ASN1_SEQUENCE_it: ASN1_ITEM;
+}
+extern "C" {
+    pub fn ASN1_item_ex_new(
+        pval: *mut *mut ASN1_VALUE,
+        it: *const ASN1_ITEM,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_item_ex_free(pval: *mut *mut ASN1_VALUE, it: *const ASN1_ITEM);
+}
+extern "C" {
+    pub fn ASN1_template_new(
+        pval: *mut *mut ASN1_VALUE,
+        tt: *const ASN1_TEMPLATE,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_primitive_new(
+        pval: *mut *mut ASN1_VALUE,
+        it: *const ASN1_ITEM,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_template_free(pval: *mut *mut ASN1_VALUE, tt: *const ASN1_TEMPLATE);
+}
+extern "C" {
+    pub fn ASN1_item_ex_d2i(
+        pval: *mut *mut ASN1_VALUE,
+        in_: *mut *const ::std::os::raw::c_uchar,
+        len: ::std::os::raw::c_long,
+        it: *const ASN1_ITEM,
+        tag: ::std::os::raw::c_int,
+        aclass: ::std::os::raw::c_int,
+        opt: ::std::os::raw::c_char,
+        ctx: *mut ASN1_TLC,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_item_ex_i2d(
+        pval: *mut *mut ASN1_VALUE,
+        out: *mut *mut ::std::os::raw::c_uchar,
+        it: *const ASN1_ITEM,
+        tag: ::std::os::raw::c_int,
+        aclass: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_primitive_free(pval: *mut *mut ASN1_VALUE, it: *const ASN1_ITEM);
+}
+extern "C" {
+    pub fn EVP_EncodeBlock(dst: *mut u8, src: *const u8, src_len: usize) -> usize;
+}
+extern "C" {
+    pub fn EVP_EncodedLength(out_len: *mut usize, len: usize) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DecodedLength(out_len: *mut usize, len: usize) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DecodeBase64(
+        out: *mut u8,
+        out_len: *mut usize,
+        max_out: usize,
+        in_: *const u8,
+        in_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_EncodeInit(ctx: *mut EVP_ENCODE_CTX);
+}
+extern "C" {
+    pub fn EVP_EncodeUpdate(
+        ctx: *mut EVP_ENCODE_CTX,
+        out: *mut u8,
+        out_len: *mut ::std::os::raw::c_int,
+        in_: *const u8,
+        in_len: usize,
+    );
+}
+extern "C" {
+    pub fn EVP_EncodeFinal(
+        ctx: *mut EVP_ENCODE_CTX,
+        out: *mut u8,
+        out_len: *mut ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn EVP_DecodeInit(ctx: *mut EVP_ENCODE_CTX);
+}
+extern "C" {
+    pub fn EVP_DecodeUpdate(
+        ctx: *mut EVP_ENCODE_CTX,
+        out: *mut u8,
+        out_len: *mut ::std::os::raw::c_int,
+        in_: *const u8,
+        in_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DecodeFinal(
+        ctx: *mut EVP_ENCODE_CTX,
+        out: *mut u8,
+        out_len: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DecodeBlock(dst: *mut u8, src: *const u8, src_len: usize) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct evp_encode_ctx_st {
+    pub data_used: ::std::os::raw::c_uint,
+    pub data: [u8; 48usize],
+    pub eof_seen: ::std::os::raw::c_char,
+    pub error_encountered: ::std::os::raw::c_char,
+}
+#[test]
+fn bindgen_test_layout_evp_encode_ctx_st() {
+    assert_eq!(
+        ::std::mem::size_of::<evp_encode_ctx_st>(),
+        56usize,
+        concat!("Size of: ", stringify!(evp_encode_ctx_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<evp_encode_ctx_st>(),
+        4usize,
+        concat!("Alignment of ", stringify!(evp_encode_ctx_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_encode_ctx_st>())).data_used as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_encode_ctx_st),
+            "::",
+            stringify!(data_used)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_encode_ctx_st>())).data as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_encode_ctx_st),
+            "::",
+            stringify!(data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_encode_ctx_st>())).eof_seen as *const _ as usize },
+        52usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_encode_ctx_st),
+            "::",
+            stringify!(eof_seen)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<evp_encode_ctx_st>())).error_encountered as *const _ as usize
+        },
+        53usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_encode_ctx_st),
+            "::",
+            stringify!(error_encountered)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cbs_st {
+    pub data: *const u8,
+    pub len: usize,
+}
+#[test]
+fn bindgen_test_layout_cbs_st() {
+    assert_eq!(
+        ::std::mem::size_of::<cbs_st>(),
+        16usize,
+        concat!("Size of: ", stringify!(cbs_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<cbs_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(cbs_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cbs_st>())).data as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cbs_st),
+            "::",
+            stringify!(data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cbs_st>())).len as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cbs_st),
+            "::",
+            stringify!(len)
+        )
+    );
+}
+extern "C" {
+    pub fn CBS_init(cbs: *mut CBS, data: *const u8, len: usize);
+}
+extern "C" {
+    pub fn CBS_skip(cbs: *mut CBS, len: usize) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_data(cbs: *const CBS) -> *const u8;
+}
+extern "C" {
+    pub fn CBS_len(cbs: *const CBS) -> usize;
+}
+extern "C" {
+    pub fn CBS_stow(
+        cbs: *const CBS,
+        out_ptr: *mut *mut u8,
+        out_len: *mut usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_strdup(
+        cbs: *const CBS,
+        out_ptr: *mut *mut ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_contains_zero_byte(cbs: *const CBS) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_mem_equal(cbs: *const CBS, data: *const u8, len: usize) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_u8(cbs: *mut CBS, out: *mut u8) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_u16(cbs: *mut CBS, out: *mut u16) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_u24(cbs: *mut CBS, out: *mut u32) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_u32(cbs: *mut CBS, out: *mut u32) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_last_u8(cbs: *mut CBS, out: *mut u8) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_bytes(cbs: *mut CBS, out: *mut CBS, len: usize) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_copy_bytes(cbs: *mut CBS, out: *mut u8, len: usize) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_u8_length_prefixed(cbs: *mut CBS, out: *mut CBS) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_u16_length_prefixed(cbs: *mut CBS, out: *mut CBS) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_u24_length_prefixed(cbs: *mut CBS, out: *mut CBS) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_asn1(
+        cbs: *mut CBS,
+        out: *mut CBS,
+        tag_value: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_asn1_element(
+        cbs: *mut CBS,
+        out: *mut CBS,
+        tag_value: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_peek_asn1_tag(
+        cbs: *const CBS,
+        tag_value: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_any_asn1(
+        cbs: *mut CBS,
+        out: *mut CBS,
+        out_tag: *mut ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_any_asn1_element(
+        cbs: *mut CBS,
+        out: *mut CBS,
+        out_tag: *mut ::std::os::raw::c_uint,
+        out_header_len: *mut usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_any_ber_asn1_element(
+        cbs: *mut CBS,
+        out: *mut CBS,
+        out_tag: *mut ::std::os::raw::c_uint,
+        out_header_len: *mut usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_asn1_uint64(cbs: *mut CBS, out: *mut u64) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_asn1_bool(
+        cbs: *mut CBS,
+        out: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_optional_asn1(
+        cbs: *mut CBS,
+        out: *mut CBS,
+        out_present: *mut ::std::os::raw::c_int,
+        tag: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_optional_asn1_octet_string(
+        cbs: *mut CBS,
+        out: *mut CBS,
+        out_present: *mut ::std::os::raw::c_int,
+        tag: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_optional_asn1_uint64(
+        cbs: *mut CBS,
+        out: *mut u64,
+        tag: ::std::os::raw::c_uint,
+        default_value: u64,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_get_optional_asn1_bool(
+        cbs: *mut CBS,
+        out: *mut ::std::os::raw::c_int,
+        tag: ::std::os::raw::c_uint,
+        default_value: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_is_valid_asn1_bitstring(cbs: *const CBS) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_asn1_bitstring_has_bit(
+        cbs: *const CBS,
+        bit: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBS_asn1_oid_to_text(cbs: *const CBS) -> *mut ::std::os::raw::c_char;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cbb_buffer_st {
+    pub buf: *mut u8,
+    pub len: usize,
+    pub cap: usize,
+    pub can_resize: ::std::os::raw::c_char,
+    pub error: ::std::os::raw::c_char,
+}
+#[test]
+fn bindgen_test_layout_cbb_buffer_st() {
+    assert_eq!(
+        ::std::mem::size_of::<cbb_buffer_st>(),
+        32usize,
+        concat!("Size of: ", stringify!(cbb_buffer_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<cbb_buffer_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(cbb_buffer_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cbb_buffer_st>())).buf as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cbb_buffer_st),
+            "::",
+            stringify!(buf)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cbb_buffer_st>())).len as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cbb_buffer_st),
+            "::",
+            stringify!(len)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cbb_buffer_st>())).cap as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cbb_buffer_st),
+            "::",
+            stringify!(cap)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cbb_buffer_st>())).can_resize as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cbb_buffer_st),
+            "::",
+            stringify!(can_resize)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cbb_buffer_st>())).error as *const _ as usize },
+        25usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cbb_buffer_st),
+            "::",
+            stringify!(error)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cbb_st {
+    pub base: *mut cbb_buffer_st,
+    pub child: *mut CBB,
+    pub offset: usize,
+    pub pending_len_len: u8,
+    pub pending_is_asn1: ::std::os::raw::c_char,
+    pub is_top_level: ::std::os::raw::c_char,
+}
+#[test]
+fn bindgen_test_layout_cbb_st() {
+    assert_eq!(
+        ::std::mem::size_of::<cbb_st>(),
+        32usize,
+        concat!("Size of: ", stringify!(cbb_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<cbb_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(cbb_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cbb_st>())).base as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cbb_st),
+            "::",
+            stringify!(base)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cbb_st>())).child as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cbb_st),
+            "::",
+            stringify!(child)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cbb_st>())).offset as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cbb_st),
+            "::",
+            stringify!(offset)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cbb_st>())).pending_len_len as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cbb_st),
+            "::",
+            stringify!(pending_len_len)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cbb_st>())).pending_is_asn1 as *const _ as usize },
+        25usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cbb_st),
+            "::",
+            stringify!(pending_is_asn1)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cbb_st>())).is_top_level as *const _ as usize },
+        26usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cbb_st),
+            "::",
+            stringify!(is_top_level)
+        )
+    );
+}
+extern "C" {
+    pub fn CBB_zero(cbb: *mut CBB);
+}
+extern "C" {
+    pub fn CBB_init(cbb: *mut CBB, initial_capacity: usize) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_init_fixed(cbb: *mut CBB, buf: *mut u8, len: usize) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_cleanup(cbb: *mut CBB);
+}
+extern "C" {
+    pub fn CBB_finish(
+        cbb: *mut CBB,
+        out_data: *mut *mut u8,
+        out_len: *mut usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_flush(cbb: *mut CBB) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_data(cbb: *const CBB) -> *const u8;
+}
+extern "C" {
+    pub fn CBB_len(cbb: *const CBB) -> usize;
+}
+extern "C" {
+    pub fn CBB_add_u8_length_prefixed(
+        cbb: *mut CBB,
+        out_contents: *mut CBB,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_add_u16_length_prefixed(
+        cbb: *mut CBB,
+        out_contents: *mut CBB,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_add_u24_length_prefixed(
+        cbb: *mut CBB,
+        out_contents: *mut CBB,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_add_asn1(
+        cbb: *mut CBB,
+        out_contents: *mut CBB,
+        tag: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_add_bytes(cbb: *mut CBB, data: *const u8, len: usize) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_add_space(
+        cbb: *mut CBB,
+        out_data: *mut *mut u8,
+        len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_reserve(cbb: *mut CBB, out_data: *mut *mut u8, len: usize) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_did_write(cbb: *mut CBB, len: usize) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_add_u8(cbb: *mut CBB, value: u8) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_add_u16(cbb: *mut CBB, value: u16) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_add_u24(cbb: *mut CBB, value: u32) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_add_u32(cbb: *mut CBB, value: u32) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_discard_child(cbb: *mut CBB);
+}
+extern "C" {
+    pub fn CBB_add_asn1_uint64(cbb: *mut CBB, value: u64) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_add_asn1_octet_string(
+        cbb: *mut CBB,
+        data: *const u8,
+        data_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_add_asn1_bool(cbb: *mut CBB, value: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_add_asn1_oid_from_text(
+        cbb: *mut CBB,
+        text: *const ::std::os::raw::c_char,
+        len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CBB_flush_asn1_set_of(cbb: *mut CBB) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct cast_key_st {
+    pub data: [u32; 32usize],
+    pub short_key: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_cast_key_st() {
+    assert_eq!(
+        ::std::mem::size_of::<cast_key_st>(),
+        132usize,
+        concat!("Size of: ", stringify!(cast_key_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<cast_key_st>(),
+        4usize,
+        concat!("Alignment of ", stringify!(cast_key_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cast_key_st>())).data as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cast_key_st),
+            "::",
+            stringify!(data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<cast_key_st>())).short_key as *const _ as usize },
+        128usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(cast_key_st),
+            "::",
+            stringify!(short_key)
+        )
+    );
+}
+pub type CAST_KEY = cast_key_st;
+extern "C" {
+    pub fn CAST_set_key(key: *mut CAST_KEY, len: usize, data: *const u8);
+}
+extern "C" {
+    pub fn CAST_ecb_encrypt(
+        in_: *const u8,
+        out: *mut u8,
+        key: *const CAST_KEY,
+        enc: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn CAST_encrypt(data: *mut u32, key: *const CAST_KEY);
+}
+extern "C" {
+    pub fn CAST_decrypt(data: *mut u32, key: *const CAST_KEY);
+}
+extern "C" {
+    pub fn CAST_cbc_encrypt(
+        in_: *const u8,
+        out: *mut u8,
+        length: ::std::os::raw::c_long,
+        ks: *const CAST_KEY,
+        iv: *mut u8,
+        enc: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn CAST_cfb64_encrypt(
+        in_: *const u8,
+        out: *mut u8,
+        length: ::std::os::raw::c_long,
+        schedule: *const CAST_KEY,
+        ivec: *mut u8,
+        num: *mut ::std::os::raw::c_int,
+        enc: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn CRYPTO_chacha_20(
+        out: *mut u8,
+        in_: *const u8,
+        in_len: usize,
+        key: *const u8,
+        nonce: *const u8,
+        counter: u32,
+    );
+}
+extern "C" {
+    pub fn EVP_rc4() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_des_cbc() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_des_ecb() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_des_ede() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_des_ede3() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_des_ede_cbc() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_des_ede3_cbc() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_128_ecb() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_128_cbc() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_128_ctr() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_128_ofb() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_256_ecb() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_256_cbc() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_256_ctr() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_256_ofb() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_256_xts() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_enc_null() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_rc2_cbc() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_rc2_40_cbc() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_get_cipherbynid(nid: ::std::os::raw::c_int) -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_init(ctx: *mut EVP_CIPHER_CTX);
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_new() -> *mut EVP_CIPHER_CTX;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_cleanup(ctx: *mut EVP_CIPHER_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_free(ctx: *mut EVP_CIPHER_CTX);
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_copy(
+        out: *mut EVP_CIPHER_CTX,
+        in_: *const EVP_CIPHER_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_reset(ctx: *mut EVP_CIPHER_CTX);
+}
+extern "C" {
+    pub fn EVP_CipherInit_ex(
+        ctx: *mut EVP_CIPHER_CTX,
+        cipher: *const EVP_CIPHER,
+        engine: *mut ENGINE,
+        key: *const u8,
+        iv: *const u8,
+        enc: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_EncryptInit_ex(
+        ctx: *mut EVP_CIPHER_CTX,
+        cipher: *const EVP_CIPHER,
+        impl_: *mut ENGINE,
+        key: *const u8,
+        iv: *const u8,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DecryptInit_ex(
+        ctx: *mut EVP_CIPHER_CTX,
+        cipher: *const EVP_CIPHER,
+        impl_: *mut ENGINE,
+        key: *const u8,
+        iv: *const u8,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_EncryptUpdate(
+        ctx: *mut EVP_CIPHER_CTX,
+        out: *mut u8,
+        out_len: *mut ::std::os::raw::c_int,
+        in_: *const u8,
+        in_len: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_EncryptFinal_ex(
+        ctx: *mut EVP_CIPHER_CTX,
+        out: *mut u8,
+        out_len: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DecryptUpdate(
+        ctx: *mut EVP_CIPHER_CTX,
+        out: *mut u8,
+        out_len: *mut ::std::os::raw::c_int,
+        in_: *const u8,
+        in_len: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DecryptFinal_ex(
+        ctx: *mut EVP_CIPHER_CTX,
+        out: *mut ::std::os::raw::c_uchar,
+        out_len: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_Cipher(
+        ctx: *mut EVP_CIPHER_CTX,
+        out: *mut u8,
+        in_: *const u8,
+        in_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_CipherUpdate(
+        ctx: *mut EVP_CIPHER_CTX,
+        out: *mut u8,
+        out_len: *mut ::std::os::raw::c_int,
+        in_: *const u8,
+        in_len: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_CipherFinal_ex(
+        ctx: *mut EVP_CIPHER_CTX,
+        out: *mut u8,
+        out_len: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_cipher(ctx: *const EVP_CIPHER_CTX) -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_nid(ctx: *const EVP_CIPHER_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_encrypting(ctx: *const EVP_CIPHER_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_block_size(ctx: *const EVP_CIPHER_CTX) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_key_length(ctx: *const EVP_CIPHER_CTX) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_iv_length(ctx: *const EVP_CIPHER_CTX) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_get_app_data(ctx: *const EVP_CIPHER_CTX) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_set_app_data(ctx: *mut EVP_CIPHER_CTX, data: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_flags(ctx: *const EVP_CIPHER_CTX) -> u32;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_mode(ctx: *const EVP_CIPHER_CTX) -> u32;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_ctrl(
+        ctx: *mut EVP_CIPHER_CTX,
+        command: ::std::os::raw::c_int,
+        arg: ::std::os::raw::c_int,
+        ptr: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_set_padding(
+        ctx: *mut EVP_CIPHER_CTX,
+        pad: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_set_key_length(
+        ctx: *mut EVP_CIPHER_CTX,
+        key_len: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_CIPHER_nid(cipher: *const EVP_CIPHER) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_CIPHER_block_size(cipher: *const EVP_CIPHER) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+    pub fn EVP_CIPHER_key_length(cipher: *const EVP_CIPHER) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+    pub fn EVP_CIPHER_iv_length(cipher: *const EVP_CIPHER) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+    pub fn EVP_CIPHER_flags(cipher: *const EVP_CIPHER) -> u32;
+}
+extern "C" {
+    pub fn EVP_CIPHER_mode(cipher: *const EVP_CIPHER) -> u32;
+}
+extern "C" {
+    pub fn EVP_BytesToKey(
+        type_: *const EVP_CIPHER,
+        md: *const EVP_MD,
+        salt: *const u8,
+        data: *const u8,
+        data_len: usize,
+        count: ::std::os::raw::c_uint,
+        key: *mut u8,
+        iv: *mut u8,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_CipherInit(
+        ctx: *mut EVP_CIPHER_CTX,
+        cipher: *const EVP_CIPHER,
+        key: *const u8,
+        iv: *const u8,
+        enc: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_EncryptInit(
+        ctx: *mut EVP_CIPHER_CTX,
+        cipher: *const EVP_CIPHER,
+        key: *const u8,
+        iv: *const u8,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DecryptInit(
+        ctx: *mut EVP_CIPHER_CTX,
+        cipher: *const EVP_CIPHER,
+        key: *const u8,
+        iv: *const u8,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_add_cipher_alias(
+        a: *const ::std::os::raw::c_char,
+        b: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_get_cipherbyname(name: *const ::std::os::raw::c_char) -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_128_gcm() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_256_gcm() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_192_ecb() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_192_cbc() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_192_ctr() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_192_gcm() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_192_ofb() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_aes_128_cfb128() -> *const EVP_CIPHER;
+}
+extern "C" {
+    pub fn EVP_CIPHER_CTX_set_flags(ctx: *const EVP_CIPHER_CTX, flags: u32);
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct evp_cipher_ctx_st {
+    pub cipher: *const EVP_CIPHER,
+    pub app_data: *mut ::std::os::raw::c_void,
+    pub cipher_data: *mut ::std::os::raw::c_void,
+    pub key_len: ::std::os::raw::c_uint,
+    pub encrypt: ::std::os::raw::c_int,
+    pub flags: u32,
+    pub oiv: [u8; 16usize],
+    pub iv: [u8; 16usize],
+    pub buf: [u8; 32usize],
+    pub buf_len: ::std::os::raw::c_int,
+    pub num: ::std::os::raw::c_uint,
+    pub final_used: ::std::os::raw::c_int,
+    pub block_mask: ::std::os::raw::c_int,
+    pub final_: [u8; 32usize],
+}
+#[test]
+fn bindgen_test_layout_evp_cipher_ctx_st() {
+    assert_eq!(
+        ::std::mem::size_of::<evp_cipher_ctx_st>(),
+        152usize,
+        concat!("Size of: ", stringify!(evp_cipher_ctx_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<evp_cipher_ctx_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(evp_cipher_ctx_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_ctx_st>())).cipher as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_ctx_st),
+            "::",
+            stringify!(cipher)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_ctx_st>())).app_data as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_ctx_st),
+            "::",
+            stringify!(app_data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_ctx_st>())).cipher_data as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_ctx_st),
+            "::",
+            stringify!(cipher_data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_ctx_st>())).key_len as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_ctx_st),
+            "::",
+            stringify!(key_len)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_ctx_st>())).encrypt as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_ctx_st),
+            "::",
+            stringify!(encrypt)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_ctx_st>())).flags as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_ctx_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_ctx_st>())).oiv as *const _ as usize },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_ctx_st),
+            "::",
+            stringify!(oiv)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_ctx_st>())).iv as *const _ as usize },
+        52usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_ctx_st),
+            "::",
+            stringify!(iv)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_ctx_st>())).buf as *const _ as usize },
+        68usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_ctx_st),
+            "::",
+            stringify!(buf)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_ctx_st>())).buf_len as *const _ as usize },
+        100usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_ctx_st),
+            "::",
+            stringify!(buf_len)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_ctx_st>())).num as *const _ as usize },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_ctx_st),
+            "::",
+            stringify!(num)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_ctx_st>())).final_used as *const _ as usize },
+        108usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_ctx_st),
+            "::",
+            stringify!(final_used)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_ctx_st>())).block_mask as *const _ as usize },
+        112usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_ctx_st),
+            "::",
+            stringify!(block_mask)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_ctx_st>())).final_ as *const _ as usize },
+        116usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_ctx_st),
+            "::",
+            stringify!(final_)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct evp_cipher_info_st {
+    pub cipher: *const EVP_CIPHER,
+    pub iv: [::std::os::raw::c_uchar; 16usize],
+}
+#[test]
+fn bindgen_test_layout_evp_cipher_info_st() {
+    assert_eq!(
+        ::std::mem::size_of::<evp_cipher_info_st>(),
+        24usize,
+        concat!("Size of: ", stringify!(evp_cipher_info_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<evp_cipher_info_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(evp_cipher_info_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_info_st>())).cipher as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_info_st),
+            "::",
+            stringify!(cipher)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_info_st>())).iv as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_info_st),
+            "::",
+            stringify!(iv)
+        )
+    );
+}
+pub type EVP_CIPHER_INFO = evp_cipher_info_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct evp_cipher_st {
+    pub nid: ::std::os::raw::c_int,
+    pub block_size: ::std::os::raw::c_uint,
+    pub key_len: ::std::os::raw::c_uint,
+    pub iv_len: ::std::os::raw::c_uint,
+    pub ctx_size: ::std::os::raw::c_uint,
+    pub flags: u32,
+    pub app_data: *mut ::std::os::raw::c_void,
+    pub init: ::std::option::Option<
+        unsafe extern "C" fn(
+            ctx: *mut EVP_CIPHER_CTX,
+            key: *const u8,
+            iv: *const u8,
+            enc: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub cipher: ::std::option::Option<
+        unsafe extern "C" fn(ctx: *mut EVP_CIPHER_CTX, out: *mut u8, in_: *const u8, inl: usize)
+            -> ::std::os::raw::c_int,
+    >,
+    pub cleanup: ::std::option::Option<unsafe extern "C" fn(arg1: *mut EVP_CIPHER_CTX)>,
+    pub ctrl: ::std::option::Option<
+        unsafe extern "C" fn(
+            arg1: *mut EVP_CIPHER_CTX,
+            type_: ::std::os::raw::c_int,
+            arg: ::std::os::raw::c_int,
+            ptr: *mut ::std::os::raw::c_void,
+        ) -> ::std::os::raw::c_int,
+    >,
+}
+#[test]
+fn bindgen_test_layout_evp_cipher_st() {
+    assert_eq!(
+        ::std::mem::size_of::<evp_cipher_st>(),
+        64usize,
+        concat!("Size of: ", stringify!(evp_cipher_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<evp_cipher_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(evp_cipher_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_st>())).nid as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_st),
+            "::",
+            stringify!(nid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_st>())).block_size as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_st),
+            "::",
+            stringify!(block_size)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_st>())).key_len as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_st),
+            "::",
+            stringify!(key_len)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_st>())).iv_len as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_st),
+            "::",
+            stringify!(iv_len)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_st>())).ctx_size as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_st),
+            "::",
+            stringify!(ctx_size)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_st>())).flags as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_st>())).app_data as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_st),
+            "::",
+            stringify!(app_data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_st>())).init as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_st),
+            "::",
+            stringify!(init)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_st>())).cipher as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_st),
+            "::",
+            stringify!(cipher)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_st>())).cleanup as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_st),
+            "::",
+            stringify!(cleanup)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_cipher_st>())).ctrl as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_cipher_st),
+            "::",
+            stringify!(ctrl)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct conf_st {
+    pub data: *mut lhash_st_CONF_VALUE,
+}
+#[test]
+fn bindgen_test_layout_conf_st() {
+    assert_eq!(
+        ::std::mem::size_of::<conf_st>(),
+        8usize,
+        concat!("Size of: ", stringify!(conf_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<conf_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(conf_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<conf_st>())).data as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(conf_st),
+            "::",
+            stringify!(data)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct stack_st_CONF_VALUE {
+    _unused: [u8; 0],
+}
+extern "C" {
+    pub fn OPENSSL_config(config_name: *const ::std::os::raw::c_char);
+}
+extern "C" {
+    pub fn OPENSSL_no_config();
+}
+extern "C" {
+    #[link_name = "\u{1}OPENSSL_ia32cap_P"]
+    pub static mut OPENSSL_ia32cap_P: [u32; 4usize];
+}
+extern "C" {
+    pub fn OPENSSL_malloc(size: usize) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn OPENSSL_free(ptr: *mut ::std::os::raw::c_void);
+}
+extern "C" {
+    pub fn OPENSSL_realloc(
+        ptr: *mut ::std::os::raw::c_void,
+        new_size: usize,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn OPENSSL_cleanse(ptr: *mut ::std::os::raw::c_void, len: usize);
+}
+extern "C" {
+    pub fn CRYPTO_memcmp(
+        a: *const ::std::os::raw::c_void,
+        b: *const ::std::os::raw::c_void,
+        len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn OPENSSL_hash32(ptr: *const ::std::os::raw::c_void, len: usize) -> u32;
+}
+extern "C" {
+    pub fn OPENSSL_strdup(s: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn OPENSSL_strnlen(s: *const ::std::os::raw::c_char, len: usize) -> usize;
+}
+extern "C" {
+    pub fn OPENSSL_tolower(c: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn OPENSSL_strcasecmp(
+        a: *const ::std::os::raw::c_char,
+        b: *const ::std::os::raw::c_char,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn OPENSSL_strncasecmp(
+        a: *const ::std::os::raw::c_char,
+        b: *const ::std::os::raw::c_char,
+        n: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_snprintf(
+        buf: *mut ::std::os::raw::c_char,
+        n: usize,
+        format: *const ::std::os::raw::c_char,
+        ...
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn BIO_vsnprintf(
+        buf: *mut ::std::os::raw::c_char,
+        n: usize,
+        format: *const ::std::os::raw::c_char,
+        args: *mut __va_list_tag,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CRYPTO_library_init();
+}
+extern "C" {
+    pub fn CRYPTO_is_confidential_build() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CRYPTO_has_asm() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CRYPTO_malloc_init() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn OPENSSL_malloc_init() -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn OPENSSL_load_builtin_modules();
+}
+extern "C" {
+    pub fn OPENSSL_init_crypto(
+        opts: u64,
+        settings: *const OPENSSL_INIT_SETTINGS,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct DES_cblock_st {
+    pub bytes: [u8; 8usize],
+}
+#[test]
+fn bindgen_test_layout_DES_cblock_st() {
+    assert_eq!(
+        ::std::mem::size_of::<DES_cblock_st>(),
+        8usize,
+        concat!("Size of: ", stringify!(DES_cblock_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<DES_cblock_st>(),
+        1usize,
+        concat!("Alignment of ", stringify!(DES_cblock_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<DES_cblock_st>())).bytes as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(DES_cblock_st),
+            "::",
+            stringify!(bytes)
+        )
+    );
+}
+pub type DES_cblock = DES_cblock_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct DES_ks {
+    pub subkeys: [[u32; 2usize]; 16usize],
+}
+#[test]
+fn bindgen_test_layout_DES_ks() {
+    assert_eq!(
+        ::std::mem::size_of::<DES_ks>(),
+        128usize,
+        concat!("Size of: ", stringify!(DES_ks))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<DES_ks>(),
+        4usize,
+        concat!("Alignment of ", stringify!(DES_ks))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<DES_ks>())).subkeys as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(DES_ks),
+            "::",
+            stringify!(subkeys)
+        )
+    );
+}
+pub type DES_key_schedule = DES_ks;
+extern "C" {
+    pub fn DES_set_key(key: *const DES_cblock, schedule: *mut DES_key_schedule);
+}
+extern "C" {
+    pub fn DES_set_odd_parity(key: *mut DES_cblock);
+}
+extern "C" {
+    pub fn DES_ecb_encrypt(
+        in_: *const DES_cblock,
+        out: *mut DES_cblock,
+        schedule: *const DES_key_schedule,
+        is_encrypt: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn DES_ncbc_encrypt(
+        in_: *const u8,
+        out: *mut u8,
+        len: usize,
+        schedule: *const DES_key_schedule,
+        ivec: *mut DES_cblock,
+        enc: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn DES_ecb3_encrypt(
+        input: *const DES_cblock,
+        output: *mut DES_cblock,
+        ks1: *const DES_key_schedule,
+        ks2: *const DES_key_schedule,
+        ks3: *const DES_key_schedule,
+        enc: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn DES_ede3_cbc_encrypt(
+        in_: *const u8,
+        out: *mut u8,
+        len: usize,
+        ks1: *const DES_key_schedule,
+        ks2: *const DES_key_schedule,
+        ks3: *const DES_key_schedule,
+        ivec: *mut DES_cblock,
+        enc: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn DES_ede2_cbc_encrypt(
+        in_: *const u8,
+        out: *mut u8,
+        len: usize,
+        ks1: *const DES_key_schedule,
+        ks2: *const DES_key_schedule,
+        ivec: *mut DES_cblock,
+        enc: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn DES_set_key_unchecked(key: *const DES_cblock, schedule: *mut DES_key_schedule);
+}
+extern "C" {
+    pub fn DES_ede3_cfb64_encrypt(
+        in_: *const u8,
+        out: *mut u8,
+        length: ::std::os::raw::c_long,
+        ks1: *mut DES_key_schedule,
+        ks2: *mut DES_key_schedule,
+        ks3: *mut DES_key_schedule,
+        ivec: *mut DES_cblock,
+        num: *mut ::std::os::raw::c_int,
+        enc: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn DES_ede3_cfb_encrypt(
+        in_: *const u8,
+        out: *mut u8,
+        numbits: ::std::os::raw::c_int,
+        length: ::std::os::raw::c_long,
+        ks1: *mut DES_key_schedule,
+        ks2: *mut DES_key_schedule,
+        ks3: *mut DES_key_schedule,
+        ivec: *mut DES_cblock,
+        enc: ::std::os::raw::c_int,
+    );
+}
+extern "C" {
+    pub fn DES_decrypt3(
+        data: *mut u32,
+        ks1: *const DES_key_schedule,
+        ks2: *const DES_key_schedule,
+        ks3: *const DES_key_schedule,
+    );
+}
+extern "C" {
+    pub fn DES_encrypt3(
+        data: *mut u32,
+        ks1: *const DES_key_schedule,
+        ks2: *const DES_key_schedule,
+        ks3: *const DES_key_schedule,
+    );
+}
+extern "C" {
+    pub fn DH_new() -> *mut DH;
+}
+extern "C" {
+    pub fn DH_free(dh: *mut DH);
+}
+extern "C" {
+    pub fn DH_up_ref(dh: *mut DH) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DH_get0_key(
+        dh: *const DH,
+        out_pub_key: *mut *const BIGNUM,
+        out_priv_key: *mut *const BIGNUM,
+    );
+}
+extern "C" {
+    pub fn DH_set0_key(
+        dh: *mut DH,
+        pub_key: *mut BIGNUM,
+        priv_key: *mut BIGNUM,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DH_get0_pqg(
+        dh: *const DH,
+        out_p: *mut *const BIGNUM,
+        out_q: *mut *const BIGNUM,
+        out_g: *mut *const BIGNUM,
+    );
+}
+extern "C" {
+    pub fn DH_set0_pqg(
+        dh: *mut DH,
+        p: *mut BIGNUM,
+        q: *mut BIGNUM,
+        g: *mut BIGNUM,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DH_generate_parameters_ex(
+        dh: *mut DH,
+        prime_bits: ::std::os::raw::c_int,
+        generator: ::std::os::raw::c_int,
+        cb: *mut BN_GENCB,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DH_generate_key(dh: *mut DH) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DH_compute_key(
+        out: *mut u8,
+        peers_key: *const BIGNUM,
+        dh: *mut DH,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DH_size(dh: *const DH) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DH_num_bits(dh: *const DH) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+    pub fn DH_check(dh: *const DH, out_flags: *mut ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DH_check_pub_key(
+        dh: *const DH,
+        pub_key: *const BIGNUM,
+        out_flags: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DH_parse_parameters(cbs: *mut CBS) -> *mut DH;
+}
+extern "C" {
+    pub fn DH_marshal_parameters(cbb: *mut CBB, dh: *const DH) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DH_get_ex_new_index(
+        argl: ::std::os::raw::c_long,
+        argp: *mut ::std::os::raw::c_void,
+        unused: *mut CRYPTO_EX_unused,
+        dup_unused: CRYPTO_EX_dup,
+        free_func: CRYPTO_EX_free,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DH_set_ex_data(
+        d: *mut DH,
+        idx: ::std::os::raw::c_int,
+        arg: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DH_get_ex_data(d: *mut DH, idx: ::std::os::raw::c_int) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn DH_generate_parameters(
+        prime_len: ::std::os::raw::c_int,
+        generator: ::std::os::raw::c_int,
+        callback: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: ::std::os::raw::c_int,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut ::std::os::raw::c_void,
+            ),
+        >,
+        cb_arg: *mut ::std::os::raw::c_void,
+    ) -> *mut DH;
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct dh_st {
+    pub p: *mut BIGNUM,
+    pub g: *mut BIGNUM,
+    pub pub_key: *mut BIGNUM,
+    pub priv_key: *mut BIGNUM,
+    pub priv_length: ::std::os::raw::c_uint,
+    pub method_mont_p_lock: CRYPTO_MUTEX,
+    pub method_mont_p: *mut BN_MONT_CTX,
+    pub q: *mut BIGNUM,
+    pub j: *mut BIGNUM,
+    pub seed: *mut ::std::os::raw::c_uchar,
+    pub seedlen: ::std::os::raw::c_int,
+    pub counter: *mut BIGNUM,
+    pub flags: ::std::os::raw::c_int,
+    pub references: CRYPTO_refcount_t,
+    pub ex_data: CRYPTO_EX_DATA,
+}
+#[test]
+fn bindgen_test_layout_dh_st() {
+    assert_eq!(
+        ::std::mem::size_of::<dh_st>(),
+        160usize,
+        concat!("Size of: ", stringify!(dh_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<dh_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(dh_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).p as *const _ as usize },
+        0usize,
+        concat!("Offset of field: ", stringify!(dh_st), "::", stringify!(p))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).g as *const _ as usize },
+        8usize,
+        concat!("Offset of field: ", stringify!(dh_st), "::", stringify!(g))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).pub_key as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dh_st),
+            "::",
+            stringify!(pub_key)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).priv_key as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dh_st),
+            "::",
+            stringify!(priv_key)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).priv_length as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dh_st),
+            "::",
+            stringify!(priv_length)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).method_mont_p_lock as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dh_st),
+            "::",
+            stringify!(method_mont_p_lock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).method_mont_p as *const _ as usize },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dh_st),
+            "::",
+            stringify!(method_mont_p)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).q as *const _ as usize },
+        104usize,
+        concat!("Offset of field: ", stringify!(dh_st), "::", stringify!(q))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).j as *const _ as usize },
+        112usize,
+        concat!("Offset of field: ", stringify!(dh_st), "::", stringify!(j))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).seed as *const _ as usize },
+        120usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dh_st),
+            "::",
+            stringify!(seed)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).seedlen as *const _ as usize },
+        128usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dh_st),
+            "::",
+            stringify!(seedlen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).counter as *const _ as usize },
+        136usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dh_st),
+            "::",
+            stringify!(counter)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).flags as *const _ as usize },
+        144usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dh_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).references as *const _ as usize },
+        148usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dh_st),
+            "::",
+            stringify!(references)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dh_st>())).ex_data as *const _ as usize },
+        152usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dh_st),
+            "::",
+            stringify!(ex_data)
+        )
+    );
+}
+extern "C" {
+    pub fn EVP_md4() -> *const EVP_MD;
+}
+extern "C" {
+    pub fn EVP_md5() -> *const EVP_MD;
+}
+extern "C" {
+    pub fn EVP_sha1() -> *const EVP_MD;
+}
+extern "C" {
+    pub fn EVP_sha224() -> *const EVP_MD;
+}
+extern "C" {
+    pub fn EVP_sha256() -> *const EVP_MD;
+}
+extern "C" {
+    pub fn EVP_sha384() -> *const EVP_MD;
+}
+extern "C" {
+    pub fn EVP_sha512() -> *const EVP_MD;
+}
+extern "C" {
+    pub fn EVP_md5_sha1() -> *const EVP_MD;
+}
+extern "C" {
+    pub fn EVP_get_digestbynid(nid: ::std::os::raw::c_int) -> *const EVP_MD;
+}
+extern "C" {
+    pub fn EVP_get_digestbyobj(obj: *const ASN1_OBJECT) -> *const EVP_MD;
+}
+extern "C" {
+    pub fn EVP_MD_CTX_init(ctx: *mut EVP_MD_CTX);
+}
+extern "C" {
+    pub fn EVP_MD_CTX_new() -> *mut EVP_MD_CTX;
+}
+extern "C" {
+    pub fn EVP_MD_CTX_cleanup(ctx: *mut EVP_MD_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_MD_CTX_free(ctx: *mut EVP_MD_CTX);
+}
+extern "C" {
+    pub fn EVP_MD_CTX_copy_ex(
+        out: *mut EVP_MD_CTX,
+        in_: *const EVP_MD_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_MD_CTX_reset(ctx: *mut EVP_MD_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DigestInit_ex(
+        ctx: *mut EVP_MD_CTX,
+        type_: *const EVP_MD,
+        engine: *mut ENGINE,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DigestInit(ctx: *mut EVP_MD_CTX, type_: *const EVP_MD) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DigestUpdate(
+        ctx: *mut EVP_MD_CTX,
+        data: *const ::std::os::raw::c_void,
+        len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DigestFinal_ex(
+        ctx: *mut EVP_MD_CTX,
+        md_out: *mut u8,
+        out_size: *mut ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DigestFinal(
+        ctx: *mut EVP_MD_CTX,
+        md_out: *mut u8,
+        out_size: *mut ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_Digest(
+        data: *const ::std::os::raw::c_void,
+        len: usize,
+        md_out: *mut u8,
+        md_out_size: *mut ::std::os::raw::c_uint,
+        type_: *const EVP_MD,
+        impl_: *mut ENGINE,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_MD_type(md: *const EVP_MD) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_MD_flags(md: *const EVP_MD) -> u32;
+}
+extern "C" {
+    pub fn EVP_MD_size(md: *const EVP_MD) -> usize;
+}
+extern "C" {
+    pub fn EVP_MD_block_size(md: *const EVP_MD) -> usize;
+}
+extern "C" {
+    pub fn EVP_MD_CTX_md(ctx: *const EVP_MD_CTX) -> *const EVP_MD;
+}
+extern "C" {
+    pub fn EVP_MD_CTX_size(ctx: *const EVP_MD_CTX) -> usize;
+}
+extern "C" {
+    pub fn EVP_MD_CTX_block_size(ctx: *const EVP_MD_CTX) -> usize;
+}
+extern "C" {
+    pub fn EVP_MD_CTX_type(ctx: *const EVP_MD_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_parse_digest_algorithm(cbs: *mut CBS) -> *const EVP_MD;
+}
+extern "C" {
+    pub fn EVP_marshal_digest_algorithm(cbb: *mut CBB, md: *const EVP_MD) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_MD_CTX_copy(out: *mut EVP_MD_CTX, in_: *const EVP_MD_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_add_digest(digest: *const EVP_MD) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_get_digestbyname(arg1: *const ::std::os::raw::c_char) -> *const EVP_MD;
+}
+extern "C" {
+    pub fn EVP_dss1() -> *const EVP_MD;
+}
+extern "C" {
+    pub fn EVP_MD_CTX_create() -> *mut EVP_MD_CTX;
+}
+extern "C" {
+    pub fn EVP_MD_CTX_destroy(ctx: *mut EVP_MD_CTX);
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct evp_md_pctx_ops {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct env_md_ctx_st {
+    pub digest: *const EVP_MD,
+    pub md_data: *mut ::std::os::raw::c_void,
+    pub pctx: *mut EVP_PKEY_CTX,
+    pub pctx_ops: *const evp_md_pctx_ops,
+}
+#[test]
+fn bindgen_test_layout_env_md_ctx_st() {
+    assert_eq!(
+        ::std::mem::size_of::<env_md_ctx_st>(),
+        32usize,
+        concat!("Size of: ", stringify!(env_md_ctx_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<env_md_ctx_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(env_md_ctx_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<env_md_ctx_st>())).digest as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(env_md_ctx_st),
+            "::",
+            stringify!(digest)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<env_md_ctx_st>())).md_data as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(env_md_ctx_st),
+            "::",
+            stringify!(md_data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<env_md_ctx_st>())).pctx as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(env_md_ctx_st),
+            "::",
+            stringify!(pctx)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<env_md_ctx_st>())).pctx_ops as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(env_md_ctx_st),
+            "::",
+            stringify!(pctx_ops)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct openssl_method_common_st {
+    pub references: ::std::os::raw::c_int,
+    pub is_static: ::std::os::raw::c_char,
+}
+#[test]
+fn bindgen_test_layout_openssl_method_common_st() {
+    assert_eq!(
+        ::std::mem::size_of::<openssl_method_common_st>(),
+        8usize,
+        concat!("Size of: ", stringify!(openssl_method_common_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<openssl_method_common_st>(),
+        4usize,
+        concat!("Alignment of ", stringify!(openssl_method_common_st))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<openssl_method_common_st>())).references as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(openssl_method_common_st),
+            "::",
+            stringify!(references)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<openssl_method_common_st>())).is_static as *const _ as usize
+        },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(openssl_method_common_st),
+            "::",
+            stringify!(is_static)
+        )
+    );
+}
+extern "C" {
+    pub fn DSA_new() -> *mut DSA;
+}
+extern "C" {
+    pub fn DSA_free(dsa: *mut DSA);
+}
+extern "C" {
+    pub fn DSA_up_ref(dsa: *mut DSA) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_get0_key(
+        dsa: *const DSA,
+        out_pub_key: *mut *const BIGNUM,
+        out_priv_key: *mut *const BIGNUM,
+    );
+}
+extern "C" {
+    pub fn DSA_get0_pqg(
+        dsa: *const DSA,
+        out_p: *mut *const BIGNUM,
+        out_q: *mut *const BIGNUM,
+        out_g: *mut *const BIGNUM,
+    );
+}
+extern "C" {
+    pub fn DSA_set0_key(
+        dsa: *mut DSA,
+        pub_key: *mut BIGNUM,
+        priv_key: *mut BIGNUM,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_set0_pqg(
+        dsa: *mut DSA,
+        p: *mut BIGNUM,
+        q: *mut BIGNUM,
+        g: *mut BIGNUM,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_generate_parameters_ex(
+        dsa: *mut DSA,
+        bits: ::std::os::raw::c_uint,
+        seed: *const u8,
+        seed_len: usize,
+        out_counter: *mut ::std::os::raw::c_int,
+        out_h: *mut ::std::os::raw::c_ulong,
+        cb: *mut BN_GENCB,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_generate_key(dsa: *mut DSA) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct DSA_SIG_st {
+    pub r: *mut BIGNUM,
+    pub s: *mut BIGNUM,
+}
+#[test]
+fn bindgen_test_layout_DSA_SIG_st() {
+    assert_eq!(
+        ::std::mem::size_of::<DSA_SIG_st>(),
+        16usize,
+        concat!("Size of: ", stringify!(DSA_SIG_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<DSA_SIG_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(DSA_SIG_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<DSA_SIG_st>())).r as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(DSA_SIG_st),
+            "::",
+            stringify!(r)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<DSA_SIG_st>())).s as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(DSA_SIG_st),
+            "::",
+            stringify!(s)
+        )
+    );
+}
+extern "C" {
+    pub fn DSA_SIG_new() -> *mut DSA_SIG;
+}
+extern "C" {
+    pub fn DSA_SIG_free(sig: *mut DSA_SIG);
+}
+extern "C" {
+    pub fn DSA_do_sign(digest: *const u8, digest_len: usize, dsa: *const DSA) -> *mut DSA_SIG;
+}
+extern "C" {
+    pub fn DSA_do_verify(
+        digest: *const u8,
+        digest_len: usize,
+        sig: *mut DSA_SIG,
+        dsa: *const DSA,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_do_check_signature(
+        out_valid: *mut ::std::os::raw::c_int,
+        digest: *const u8,
+        digest_len: usize,
+        sig: *mut DSA_SIG,
+        dsa: *const DSA,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_sign(
+        type_: ::std::os::raw::c_int,
+        digest: *const u8,
+        digest_len: usize,
+        out_sig: *mut u8,
+        out_siglen: *mut ::std::os::raw::c_uint,
+        dsa: *const DSA,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_verify(
+        type_: ::std::os::raw::c_int,
+        digest: *const u8,
+        digest_len: usize,
+        sig: *const u8,
+        sig_len: usize,
+        dsa: *const DSA,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_check_signature(
+        out_valid: *mut ::std::os::raw::c_int,
+        digest: *const u8,
+        digest_len: usize,
+        sig: *const u8,
+        sig_len: usize,
+        dsa: *const DSA,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_size(dsa: *const DSA) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_SIG_parse(cbs: *mut CBS) -> *mut DSA_SIG;
+}
+extern "C" {
+    pub fn DSA_SIG_marshal(cbb: *mut CBB, sig: *const DSA_SIG) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_parse_public_key(cbs: *mut CBS) -> *mut DSA;
+}
+extern "C" {
+    pub fn DSA_marshal_public_key(cbb: *mut CBB, dsa: *const DSA) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_parse_private_key(cbs: *mut CBS) -> *mut DSA;
+}
+extern "C" {
+    pub fn DSA_marshal_private_key(cbb: *mut CBB, dsa: *const DSA) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_parse_parameters(cbs: *mut CBS) -> *mut DSA;
+}
+extern "C" {
+    pub fn DSA_marshal_parameters(cbb: *mut CBB, dsa: *const DSA) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_dup_DH(dsa: *const DSA) -> *mut DH;
+}
+extern "C" {
+    pub fn DSA_get_ex_new_index(
+        argl: ::std::os::raw::c_long,
+        argp: *mut ::std::os::raw::c_void,
+        unused: *mut CRYPTO_EX_unused,
+        dup_unused: CRYPTO_EX_dup,
+        free_func: CRYPTO_EX_free,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_set_ex_data(
+        dsa: *mut DSA,
+        idx: ::std::os::raw::c_int,
+        arg: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn DSA_get_ex_data(
+        dsa: *const DSA,
+        idx: ::std::os::raw::c_int,
+    ) -> *mut ::std::os::raw::c_void;
+}
+extern "C" {
+    pub fn DSA_generate_parameters(
+        bits: ::std::os::raw::c_int,
+        seed: *mut ::std::os::raw::c_uchar,
+        seed_len: ::std::os::raw::c_int,
+        counter_ret: *mut ::std::os::raw::c_int,
+        h_ret: *mut ::std::os::raw::c_ulong,
+        callback: ::std::option::Option<
+            unsafe extern "C" fn(
+                arg1: ::std::os::raw::c_int,
+                arg2: ::std::os::raw::c_int,
+                arg3: *mut ::std::os::raw::c_void,
+            ),
+        >,
+        cb_arg: *mut ::std::os::raw::c_void,
+    ) -> *mut DSA;
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct dsa_st {
+    pub version: ::std::os::raw::c_long,
+    pub p: *mut BIGNUM,
+    pub q: *mut BIGNUM,
+    pub g: *mut BIGNUM,
+    pub pub_key: *mut BIGNUM,
+    pub priv_key: *mut BIGNUM,
+    pub flags: ::std::os::raw::c_int,
+    pub method_mont_lock: CRYPTO_MUTEX,
+    pub method_mont_p: *mut BN_MONT_CTX,
+    pub method_mont_q: *mut BN_MONT_CTX,
+    pub references: CRYPTO_refcount_t,
+    pub ex_data: CRYPTO_EX_DATA,
+}
+#[test]
+fn bindgen_test_layout_dsa_st() {
+    assert_eq!(
+        ::std::mem::size_of::<dsa_st>(),
+        144usize,
+        concat!("Size of: ", stringify!(dsa_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<dsa_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(dsa_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dsa_st>())).version as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dsa_st),
+            "::",
+            stringify!(version)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dsa_st>())).p as *const _ as usize },
+        8usize,
+        concat!("Offset of field: ", stringify!(dsa_st), "::", stringify!(p))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dsa_st>())).q as *const _ as usize },
+        16usize,
+        concat!("Offset of field: ", stringify!(dsa_st), "::", stringify!(q))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dsa_st>())).g as *const _ as usize },
+        24usize,
+        concat!("Offset of field: ", stringify!(dsa_st), "::", stringify!(g))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dsa_st>())).pub_key as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dsa_st),
+            "::",
+            stringify!(pub_key)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dsa_st>())).priv_key as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dsa_st),
+            "::",
+            stringify!(priv_key)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dsa_st>())).flags as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dsa_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dsa_st>())).method_mont_lock as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dsa_st),
+            "::",
+            stringify!(method_mont_lock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dsa_st>())).method_mont_p as *const _ as usize },
+        112usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dsa_st),
+            "::",
+            stringify!(method_mont_p)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dsa_st>())).method_mont_q as *const _ as usize },
+        120usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dsa_st),
+            "::",
+            stringify!(method_mont_q)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dsa_st>())).references as *const _ as usize },
+        128usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dsa_st),
+            "::",
+            stringify!(references)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<dsa_st>())).ex_data as *const _ as usize },
+        136usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(dsa_st),
+            "::",
+            stringify!(ex_data)
+        )
+    );
+}
+pub const point_conversion_form_t_POINT_CONVERSION_COMPRESSED: point_conversion_form_t = 2;
+pub const point_conversion_form_t_POINT_CONVERSION_UNCOMPRESSED: point_conversion_form_t = 4;
+pub const point_conversion_form_t_POINT_CONVERSION_HYBRID: point_conversion_form_t = 6;
+pub type point_conversion_form_t = u32;
+extern "C" {
+    pub fn EC_GROUP_new_by_curve_name(nid: ::std::os::raw::c_int) -> *mut EC_GROUP;
+}
+extern "C" {
+    pub fn EC_GROUP_free(group: *mut EC_GROUP);
+}
+extern "C" {
+    pub fn EC_GROUP_dup(a: *const EC_GROUP) -> *mut EC_GROUP;
+}
+extern "C" {
+    pub fn EC_GROUP_cmp(
+        a: *const EC_GROUP,
+        b: *const EC_GROUP,
+        ignored: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_GROUP_get0_generator(group: *const EC_GROUP) -> *const EC_POINT;
+}
+extern "C" {
+    pub fn EC_GROUP_get0_order(group: *const EC_GROUP) -> *const BIGNUM;
+}
+extern "C" {
+    pub fn EC_GROUP_get_cofactor(
+        group: *const EC_GROUP,
+        cofactor: *mut BIGNUM,
+        ctx: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_GROUP_get_curve_GFp(
+        group: *const EC_GROUP,
+        out_p: *mut BIGNUM,
+        out_a: *mut BIGNUM,
+        out_b: *mut BIGNUM,
+        ctx: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_GROUP_get_curve_name(group: *const EC_GROUP) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_GROUP_get_degree(group: *const EC_GROUP) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+    pub fn EC_curve_nid2nist(nid: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char;
+}
+extern "C" {
+    pub fn EC_POINT_new(group: *const EC_GROUP) -> *mut EC_POINT;
+}
+extern "C" {
+    pub fn EC_POINT_free(point: *mut EC_POINT);
+}
+extern "C" {
+    pub fn EC_POINT_copy(dest: *mut EC_POINT, src: *const EC_POINT) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_POINT_dup(src: *const EC_POINT, group: *const EC_GROUP) -> *mut EC_POINT;
+}
+extern "C" {
+    pub fn EC_POINT_set_to_infinity(
+        group: *const EC_GROUP,
+        point: *mut EC_POINT,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_POINT_is_at_infinity(
+        group: *const EC_GROUP,
+        point: *const EC_POINT,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_POINT_is_on_curve(
+        group: *const EC_GROUP,
+        point: *const EC_POINT,
+        ctx: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_POINT_cmp(
+        group: *const EC_GROUP,
+        a: *const EC_POINT,
+        b: *const EC_POINT,
+        ctx: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_POINT_get_affine_coordinates_GFp(
+        group: *const EC_GROUP,
+        point: *const EC_POINT,
+        x: *mut BIGNUM,
+        y: *mut BIGNUM,
+        ctx: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_POINT_set_affine_coordinates_GFp(
+        group: *const EC_GROUP,
+        point: *mut EC_POINT,
+        x: *const BIGNUM,
+        y: *const BIGNUM,
+        ctx: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_POINT_point2oct(
+        group: *const EC_GROUP,
+        point: *const EC_POINT,
+        form: point_conversion_form_t,
+        buf: *mut u8,
+        len: usize,
+        ctx: *mut BN_CTX,
+    ) -> usize;
+}
+extern "C" {
+    pub fn EC_POINT_point2cbb(
+        out: *mut CBB,
+        group: *const EC_GROUP,
+        point: *const EC_POINT,
+        form: point_conversion_form_t,
+        ctx: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_POINT_oct2point(
+        group: *const EC_GROUP,
+        point: *mut EC_POINT,
+        buf: *const u8,
+        len: usize,
+        ctx: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_POINT_set_compressed_coordinates_GFp(
+        group: *const EC_GROUP,
+        point: *mut EC_POINT,
+        x: *const BIGNUM,
+        y_bit: ::std::os::raw::c_int,
+        ctx: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_POINT_add(
+        group: *const EC_GROUP,
+        r: *mut EC_POINT,
+        a: *const EC_POINT,
+        b: *const EC_POINT,
+        ctx: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_POINT_dbl(
+        group: *const EC_GROUP,
+        r: *mut EC_POINT,
+        a: *const EC_POINT,
+        ctx: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_POINT_invert(
+        group: *const EC_GROUP,
+        a: *mut EC_POINT,
+        ctx: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_POINT_mul(
+        group: *const EC_GROUP,
+        r: *mut EC_POINT,
+        n: *const BIGNUM,
+        q: *const EC_POINT,
+        m: *const BIGNUM,
+        ctx: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_GROUP_new_curve_GFp(
+        p: *const BIGNUM,
+        a: *const BIGNUM,
+        b: *const BIGNUM,
+        ctx: *mut BN_CTX,
+    ) -> *mut EC_GROUP;
+}
+extern "C" {
+    pub fn EC_GROUP_set_generator(
+        group: *mut EC_GROUP,
+        generator: *const EC_POINT,
+        order: *const BIGNUM,
+        cofactor: *const BIGNUM,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_GROUP_get_order(
+        group: *const EC_GROUP,
+        order: *mut BIGNUM,
+        ctx: *mut BN_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_GROUP_set_asn1_flag(group: *mut EC_GROUP, flag: ::std::os::raw::c_int);
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ec_method_st {
+    _unused: [u8; 0],
+}
+pub type EC_METHOD = ec_method_st;
+extern "C" {
+    pub fn EC_GROUP_method_of(group: *const EC_GROUP) -> *const EC_METHOD;
+}
+extern "C" {
+    pub fn EC_METHOD_get_field_type(meth: *const EC_METHOD) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_GROUP_set_point_conversion_form(group: *mut EC_GROUP, form: point_conversion_form_t);
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct EC_builtin_curve {
+    pub nid: ::std::os::raw::c_int,
+    pub comment: *const ::std::os::raw::c_char,
+}
+#[test]
+fn bindgen_test_layout_EC_builtin_curve() {
+    assert_eq!(
+        ::std::mem::size_of::<EC_builtin_curve>(),
+        16usize,
+        concat!("Size of: ", stringify!(EC_builtin_curve))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<EC_builtin_curve>(),
+        8usize,
+        concat!("Alignment of ", stringify!(EC_builtin_curve))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<EC_builtin_curve>())).nid as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(EC_builtin_curve),
+            "::",
+            stringify!(nid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<EC_builtin_curve>())).comment as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(EC_builtin_curve),
+            "::",
+            stringify!(comment)
+        )
+    );
+}
+extern "C" {
+    pub fn EC_get_builtin_curves(out_curves: *mut EC_builtin_curve, max_num_curves: usize)
+        -> usize;
+}
+extern "C" {
+    pub fn EC_POINT_clear_free(point: *mut EC_POINT);
+}
+extern "C" {
+    pub fn EC_KEY_new() -> *mut EC_KEY;
+}
+extern "C" {
+    pub fn EC_KEY_new_method(engine: *const ENGINE) -> *mut EC_KEY;
+}
+extern "C" {
+    pub fn EC_KEY_new_by_curve_name(nid: ::std::os::raw::c_int) -> *mut EC_KEY;
+}
+extern "C" {
+    pub fn EC_KEY_free(key: *mut EC_KEY);
+}
+extern "C" {
+    pub fn EC_KEY_dup(src: *const EC_KEY) -> *mut EC_KEY;
+}
+extern "C" {
+    pub fn EC_KEY_up_ref(key: *mut EC_KEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_KEY_is_opaque(key: *const EC_KEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_KEY_get0_group(key: *const EC_KEY) -> *const EC_GROUP;
+}
+extern "C" {
+    pub fn EC_KEY_set_group(key: *mut EC_KEY, group: *const EC_GROUP) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_KEY_get0_private_key(key: *const EC_KEY) -> *const BIGNUM;
+}
+extern "C" {
+    pub fn EC_KEY_set_private_key(key: *mut EC_KEY, prv: *const BIGNUM) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_KEY_get0_public_key(key: *const EC_KEY) -> *const EC_POINT;
+}
+extern "C" {
+    pub fn EC_KEY_set_public_key(key: *mut EC_KEY, pub_: *const EC_POINT) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_KEY_get_enc_flags(key: *const EC_KEY) -> ::std::os::raw::c_uint;
+}
+extern "C" {
+    pub fn EC_KEY_set_enc_flags(key: *mut EC_KEY, flags: ::std::os::raw::c_uint);
+}
+extern "C" {
+    pub fn EC_KEY_get_conv_form(key: *const EC_KEY) -> point_conversion_form_t;
+}
+extern "C" {
+    pub fn EC_KEY_set_conv_form(key: *mut EC_KEY, cform: point_conversion_form_t);
+}
+extern "C" {
+    pub fn EC_KEY_check_key(key: *const EC_KEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_KEY_check_fips(key: *const EC_KEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_KEY_set_public_key_affine_coordinates(
+        key: *mut EC_KEY,
+        x: *mut BIGNUM,
+        y: *mut BIGNUM,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_KEY_generate_key(key: *mut EC_KEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_KEY_generate_key_fips(key: *mut EC_KEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_KEY_parse_private_key(cbs: *mut CBS, group: *const EC_GROUP) -> *mut EC_KEY;
+}
+extern "C" {
+    pub fn EC_KEY_marshal_private_key(
+        cbb: *mut CBB,
+        key: *const EC_KEY,
+        enc_flags: ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_KEY_parse_curve_name(cbs: *mut CBS) -> *mut EC_GROUP;
+}
+extern "C" {
+    pub fn EC_KEY_marshal_curve_name(
+        cbb: *mut CBB,
+        group: *const EC_GROUP,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_KEY_parse_parameters(cbs: *mut CBS) -> *mut EC_GROUP;
+}
+extern "C" {
+    pub fn EC_KEY_get_ex_new_index(
+        argl: ::std::os::raw::c_long,
+        argp: *mut ::std::os::raw::c_void,
+        unused: *mut CRYPTO_EX_unused,
+        dup_unused: CRYPTO_EX_dup,
+        free_func: CRYPTO_EX_free,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_KEY_set_ex_data(
+        r: *mut EC_KEY,
+        idx: ::std::os::raw::c_int,
+        arg: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EC_KEY_get_ex_data(
+        r: *const EC_KEY,
+        idx: ::std::os::raw::c_int,
+    ) -> *mut ::std::os::raw::c_void;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ecdsa_method_st {
+    pub common: openssl_method_common_st,
+    pub app_data: *mut ::std::os::raw::c_void,
+    pub init:
+        ::std::option::Option<unsafe extern "C" fn(key: *mut EC_KEY) -> ::std::os::raw::c_int>,
+    pub finish:
+        ::std::option::Option<unsafe extern "C" fn(key: *mut EC_KEY) -> ::std::os::raw::c_int>,
+    pub group_order_size: ::std::option::Option<unsafe extern "C" fn(key: *const EC_KEY) -> usize>,
+    pub sign: ::std::option::Option<
+        unsafe extern "C" fn(
+            digest: *const u8,
+            digest_len: usize,
+            sig: *mut u8,
+            sig_len: *mut ::std::os::raw::c_uint,
+            eckey: *mut EC_KEY,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub flags: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_ecdsa_method_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ecdsa_method_st>(),
+        56usize,
+        concat!("Size of: ", stringify!(ecdsa_method_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ecdsa_method_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ecdsa_method_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ecdsa_method_st>())).common as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ecdsa_method_st),
+            "::",
+            stringify!(common)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ecdsa_method_st>())).app_data as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ecdsa_method_st),
+            "::",
+            stringify!(app_data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ecdsa_method_st>())).init as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ecdsa_method_st),
+            "::",
+            stringify!(init)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ecdsa_method_st>())).finish as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ecdsa_method_st),
+            "::",
+            stringify!(finish)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ecdsa_method_st>())).group_order_size as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ecdsa_method_st),
+            "::",
+            stringify!(group_order_size)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ecdsa_method_st>())).sign as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ecdsa_method_st),
+            "::",
+            stringify!(sign)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ecdsa_method_st>())).flags as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ecdsa_method_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+}
+extern "C" {
+    pub fn EC_KEY_set_asn1_flag(key: *mut EC_KEY, flag: ::std::os::raw::c_int);
+}
+extern "C" {
+    pub fn ECDH_compute_key(
+        out: *mut ::std::os::raw::c_void,
+        outlen: usize,
+        pub_key: *const EC_POINT,
+        priv_key: *const EC_KEY,
+        kdf: ::std::option::Option<
+            unsafe extern "C" fn(
+                in_: *const ::std::os::raw::c_void,
+                inlen: usize,
+                out: *mut ::std::os::raw::c_void,
+                outlen: *mut usize,
+            ) -> *mut ::std::os::raw::c_void,
+        >,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ECDSA_sign(
+        type_: ::std::os::raw::c_int,
+        digest: *const u8,
+        digest_len: usize,
+        sig: *mut u8,
+        sig_len: *mut ::std::os::raw::c_uint,
+        key: *const EC_KEY,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ECDSA_verify(
+        type_: ::std::os::raw::c_int,
+        digest: *const u8,
+        digest_len: usize,
+        sig: *const u8,
+        sig_len: usize,
+        key: *const EC_KEY,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ECDSA_size(key: *const EC_KEY) -> usize;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ecdsa_sig_st {
+    pub r: *mut BIGNUM,
+    pub s: *mut BIGNUM,
+}
+#[test]
+fn bindgen_test_layout_ecdsa_sig_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ecdsa_sig_st>(),
+        16usize,
+        concat!("Size of: ", stringify!(ecdsa_sig_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ecdsa_sig_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ecdsa_sig_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ecdsa_sig_st>())).r as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ecdsa_sig_st),
+            "::",
+            stringify!(r)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ecdsa_sig_st>())).s as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ecdsa_sig_st),
+            "::",
+            stringify!(s)
+        )
+    );
+}
+extern "C" {
+    pub fn ECDSA_SIG_new() -> *mut ECDSA_SIG;
+}
+extern "C" {
+    pub fn ECDSA_SIG_free(sig: *mut ECDSA_SIG);
+}
+extern "C" {
+    pub fn ECDSA_SIG_get0(
+        sig: *const ECDSA_SIG,
+        out_r: *mut *const BIGNUM,
+        out_s: *mut *const BIGNUM,
+    );
+}
+extern "C" {
+    pub fn ECDSA_SIG_set0(
+        sig: *mut ECDSA_SIG,
+        r: *mut BIGNUM,
+        s: *mut BIGNUM,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ECDSA_do_sign(
+        digest: *const u8,
+        digest_len: usize,
+        key: *const EC_KEY,
+    ) -> *mut ECDSA_SIG;
+}
+extern "C" {
+    pub fn ECDSA_do_verify(
+        digest: *const u8,
+        digest_len: usize,
+        sig: *const ECDSA_SIG,
+        key: *const EC_KEY,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ECDSA_SIG_parse(cbs: *mut CBS) -> *mut ECDSA_SIG;
+}
+extern "C" {
+    pub fn ECDSA_SIG_from_bytes(in_: *const u8, in_len: usize) -> *mut ECDSA_SIG;
+}
+extern "C" {
+    pub fn ECDSA_SIG_marshal(cbb: *mut CBB, sig: *const ECDSA_SIG) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ECDSA_SIG_to_bytes(
+        out_bytes: *mut *mut u8,
+        out_len: *mut usize,
+        sig: *const ECDSA_SIG,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ECDSA_SIG_max_len(order_len: usize) -> usize;
+}
+extern "C" {
+    pub fn EVP_PKEY_new() -> *mut EVP_PKEY;
+}
+extern "C" {
+    pub fn EVP_PKEY_free(pkey: *mut EVP_PKEY);
+}
+extern "C" {
+    pub fn EVP_PKEY_up_ref(pkey: *mut EVP_PKEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_is_opaque(pkey: *const EVP_PKEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_cmp(a: *const EVP_PKEY, b: *const EVP_PKEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_copy_parameters(
+        to: *mut EVP_PKEY,
+        from: *const EVP_PKEY,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_missing_parameters(pkey: *const EVP_PKEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_size(pkey: *const EVP_PKEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_bits(pkey: *mut EVP_PKEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_id(pkey: *const EVP_PKEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_type(nid: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_set1_RSA(pkey: *mut EVP_PKEY, key: *mut RSA) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_assign_RSA(pkey: *mut EVP_PKEY, key: *mut RSA) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_get0_RSA(pkey: *mut EVP_PKEY) -> *mut RSA;
+}
+extern "C" {
+    pub fn EVP_PKEY_get1_RSA(pkey: *mut EVP_PKEY) -> *mut RSA;
+}
+extern "C" {
+    pub fn EVP_PKEY_set1_DSA(pkey: *mut EVP_PKEY, key: *mut DSA) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_assign_DSA(pkey: *mut EVP_PKEY, key: *mut DSA) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_get0_DSA(pkey: *mut EVP_PKEY) -> *mut DSA;
+}
+extern "C" {
+    pub fn EVP_PKEY_get1_DSA(pkey: *mut EVP_PKEY) -> *mut DSA;
+}
+extern "C" {
+    pub fn EVP_PKEY_set1_EC_KEY(pkey: *mut EVP_PKEY, key: *mut EC_KEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_assign_EC_KEY(pkey: *mut EVP_PKEY, key: *mut EC_KEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_get0_EC_KEY(pkey: *mut EVP_PKEY) -> *mut EC_KEY;
+}
+extern "C" {
+    pub fn EVP_PKEY_get1_EC_KEY(pkey: *mut EVP_PKEY) -> *mut EC_KEY;
+}
+extern "C" {
+    pub fn EVP_PKEY_new_ed25519_public(public_key: *const u8) -> *mut EVP_PKEY;
+}
+extern "C" {
+    pub fn EVP_PKEY_new_ed25519_private(private_key: *const u8) -> *mut EVP_PKEY;
+}
+extern "C" {
+    pub fn EVP_PKEY_assign(
+        pkey: *mut EVP_PKEY,
+        type_: ::std::os::raw::c_int,
+        key: *mut ::std::os::raw::c_void,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_set_type(
+        pkey: *mut EVP_PKEY,
+        type_: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_cmp_parameters(a: *const EVP_PKEY, b: *const EVP_PKEY)
+        -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_parse_public_key(cbs: *mut CBS) -> *mut EVP_PKEY;
+}
+extern "C" {
+    pub fn EVP_marshal_public_key(cbb: *mut CBB, key: *const EVP_PKEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_parse_private_key(cbs: *mut CBS) -> *mut EVP_PKEY;
+}
+extern "C" {
+    pub fn EVP_marshal_private_key(cbb: *mut CBB, key: *const EVP_PKEY) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DigestSignInit(
+        ctx: *mut EVP_MD_CTX,
+        pctx: *mut *mut EVP_PKEY_CTX,
+        type_: *const EVP_MD,
+        e: *mut ENGINE,
+        pkey: *mut EVP_PKEY,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DigestSignUpdate(
+        ctx: *mut EVP_MD_CTX,
+        data: *const ::std::os::raw::c_void,
+        len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DigestSignFinal(
+        ctx: *mut EVP_MD_CTX,
+        out_sig: *mut u8,
+        out_sig_len: *mut usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DigestSign(
+        ctx: *mut EVP_MD_CTX,
+        out_sig: *mut u8,
+        out_sig_len: *mut usize,
+        data: *const u8,
+        data_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DigestVerifyInit(
+        ctx: *mut EVP_MD_CTX,
+        pctx: *mut *mut EVP_PKEY_CTX,
+        type_: *const EVP_MD,
+        e: *mut ENGINE,
+        pkey: *mut EVP_PKEY,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DigestVerifyUpdate(
+        ctx: *mut EVP_MD_CTX,
+        data: *const ::std::os::raw::c_void,
+        len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DigestVerifyFinal(
+        ctx: *mut EVP_MD_CTX,
+        sig: *const u8,
+        sig_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_DigestVerify(
+        ctx: *mut EVP_MD_CTX,
+        sig: *const u8,
+        sig_len: usize,
+        data: *const u8,
+        len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_SignInit_ex(
+        ctx: *mut EVP_MD_CTX,
+        type_: *const EVP_MD,
+        impl_: *mut ENGINE,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_SignInit(ctx: *mut EVP_MD_CTX, type_: *const EVP_MD) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_SignUpdate(
+        ctx: *mut EVP_MD_CTX,
+        data: *const ::std::os::raw::c_void,
+        len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_SignFinal(
+        ctx: *const EVP_MD_CTX,
+        sig: *mut u8,
+        out_sig_len: *mut ::std::os::raw::c_uint,
+        pkey: *mut EVP_PKEY,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_VerifyInit_ex(
+        ctx: *mut EVP_MD_CTX,
+        type_: *const EVP_MD,
+        impl_: *mut ENGINE,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_VerifyInit(ctx: *mut EVP_MD_CTX, type_: *const EVP_MD) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_VerifyUpdate(
+        ctx: *mut EVP_MD_CTX,
+        data: *const ::std::os::raw::c_void,
+        len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_VerifyFinal(
+        ctx: *mut EVP_MD_CTX,
+        sig: *const u8,
+        sig_len: usize,
+        pkey: *mut EVP_PKEY,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_print_public(
+        out: *mut BIO,
+        pkey: *const EVP_PKEY,
+        indent: ::std::os::raw::c_int,
+        pctx: *mut ASN1_PCTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_print_private(
+        out: *mut BIO,
+        pkey: *const EVP_PKEY,
+        indent: ::std::os::raw::c_int,
+        pctx: *mut ASN1_PCTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_print_params(
+        out: *mut BIO,
+        pkey: *const EVP_PKEY,
+        indent: ::std::os::raw::c_int,
+        pctx: *mut ASN1_PCTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PBE_scrypt(
+        password: *const ::std::os::raw::c_char,
+        password_len: usize,
+        salt: *const u8,
+        salt_len: usize,
+        N: u64,
+        r: u64,
+        p: u64,
+        max_mem: usize,
+        out_key: *mut u8,
+        key_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_new(pkey: *mut EVP_PKEY, e: *mut ENGINE) -> *mut EVP_PKEY_CTX;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_new_id(id: ::std::os::raw::c_int, e: *mut ENGINE) -> *mut EVP_PKEY_CTX;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_free(ctx: *mut EVP_PKEY_CTX);
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_dup(ctx: *mut EVP_PKEY_CTX) -> *mut EVP_PKEY_CTX;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_get0_pkey(ctx: *mut EVP_PKEY_CTX) -> *mut EVP_PKEY;
+}
+extern "C" {
+    pub fn EVP_PKEY_sign_init(ctx: *mut EVP_PKEY_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_sign(
+        ctx: *mut EVP_PKEY_CTX,
+        sig: *mut u8,
+        sig_len: *mut usize,
+        digest: *const u8,
+        digest_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_verify_init(ctx: *mut EVP_PKEY_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_verify(
+        ctx: *mut EVP_PKEY_CTX,
+        sig: *const u8,
+        sig_len: usize,
+        digest: *const u8,
+        digest_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_encrypt_init(ctx: *mut EVP_PKEY_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_encrypt(
+        ctx: *mut EVP_PKEY_CTX,
+        out: *mut u8,
+        out_len: *mut usize,
+        in_: *const u8,
+        in_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_decrypt_init(ctx: *mut EVP_PKEY_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_decrypt(
+        ctx: *mut EVP_PKEY_CTX,
+        out: *mut u8,
+        out_len: *mut usize,
+        in_: *const u8,
+        in_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_verify_recover_init(ctx: *mut EVP_PKEY_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_verify_recover(
+        ctx: *mut EVP_PKEY_CTX,
+        out: *mut u8,
+        out_len: *mut usize,
+        sig: *const u8,
+        siglen: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_derive_init(ctx: *mut EVP_PKEY_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_derive_set_peer(
+        ctx: *mut EVP_PKEY_CTX,
+        peer: *mut EVP_PKEY,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_derive(
+        ctx: *mut EVP_PKEY_CTX,
+        key: *mut u8,
+        out_key_len: *mut usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_keygen_init(ctx: *mut EVP_PKEY_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_keygen(
+        ctx: *mut EVP_PKEY_CTX,
+        ppkey: *mut *mut EVP_PKEY,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_set_signature_md(
+        ctx: *mut EVP_PKEY_CTX,
+        md: *const EVP_MD,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_get_signature_md(
+        ctx: *mut EVP_PKEY_CTX,
+        out_md: *mut *const EVP_MD,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_set_rsa_padding(
+        ctx: *mut EVP_PKEY_CTX,
+        padding: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_get_rsa_padding(
+        ctx: *mut EVP_PKEY_CTX,
+        out_padding: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_set_rsa_pss_saltlen(
+        ctx: *mut EVP_PKEY_CTX,
+        salt_len: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_get_rsa_pss_saltlen(
+        ctx: *mut EVP_PKEY_CTX,
+        out_salt_len: *mut ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_set_rsa_keygen_bits(
+        ctx: *mut EVP_PKEY_CTX,
+        bits: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_set_rsa_keygen_pubexp(
+        ctx: *mut EVP_PKEY_CTX,
+        e: *mut BIGNUM,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_set_rsa_oaep_md(
+        ctx: *mut EVP_PKEY_CTX,
+        md: *const EVP_MD,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_get_rsa_oaep_md(
+        ctx: *mut EVP_PKEY_CTX,
+        out_md: *mut *const EVP_MD,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_set_rsa_mgf1_md(
+        ctx: *mut EVP_PKEY_CTX,
+        md: *const EVP_MD,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_get_rsa_mgf1_md(
+        ctx: *mut EVP_PKEY_CTX,
+        out_md: *mut *const EVP_MD,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_set0_rsa_oaep_label(
+        ctx: *mut EVP_PKEY_CTX,
+        label: *mut u8,
+        label_len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKEY_CTX_get0_rsa_oaep_label(
+        ctx: *mut EVP_PKEY_CTX,
+        out_label: *mut *const u8,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn OPENSSL_add_all_algorithms_conf();
+}
+extern "C" {
+    pub fn EVP_cleanup();
+}
+extern "C" {
+    pub fn EVP_CIPHER_do_all_sorted(
+        callback: ::std::option::Option<
+            unsafe extern "C" fn(
+                cipher: *const EVP_CIPHER,
+                name: *const ::std::os::raw::c_char,
+                unused: *const ::std::os::raw::c_char,
+                arg: *mut ::std::os::raw::c_void,
+            ),
+        >,
+        arg: *mut ::std::os::raw::c_void,
+    );
+}
+extern "C" {
+    pub fn EVP_MD_do_all_sorted(
+        callback: ::std::option::Option<
+            unsafe extern "C" fn(
+                cipher: *const EVP_MD,
+                name: *const ::std::os::raw::c_char,
+                unused: *const ::std::os::raw::c_char,
+                arg: *mut ::std::os::raw::c_void,
+            ),
+        >,
+        arg: *mut ::std::os::raw::c_void,
+    );
+}
+extern "C" {
+    pub fn EVP_PKEY_get0_DH(pkey: *mut EVP_PKEY) -> *mut DH;
+}
+extern "C" {
+    pub fn EVP_PKEY_get1_DH(pkey: *mut EVP_PKEY) -> *mut DH;
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct evp_pkey_st {
+    pub references: CRYPTO_refcount_t,
+    pub type_: ::std::os::raw::c_int,
+    pub pkey: evp_pkey_st__bindgen_ty_1,
+    pub ameth: *const EVP_PKEY_ASN1_METHOD,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union evp_pkey_st__bindgen_ty_1 {
+    pub ptr: *mut ::std::os::raw::c_void,
+    pub rsa: *mut RSA,
+    pub dsa: *mut DSA,
+    pub dh: *mut DH,
+    pub ec: *mut EC_KEY,
+    _bindgen_union_align: u64,
+}
+#[test]
+fn bindgen_test_layout_evp_pkey_st__bindgen_ty_1() {
+    assert_eq!(
+        ::std::mem::size_of::<evp_pkey_st__bindgen_ty_1>(),
+        8usize,
+        concat!("Size of: ", stringify!(evp_pkey_st__bindgen_ty_1))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<evp_pkey_st__bindgen_ty_1>(),
+        8usize,
+        concat!("Alignment of ", stringify!(evp_pkey_st__bindgen_ty_1))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_pkey_st__bindgen_ty_1>())).ptr as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_pkey_st__bindgen_ty_1),
+            "::",
+            stringify!(ptr)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_pkey_st__bindgen_ty_1>())).rsa as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_pkey_st__bindgen_ty_1),
+            "::",
+            stringify!(rsa)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_pkey_st__bindgen_ty_1>())).dsa as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_pkey_st__bindgen_ty_1),
+            "::",
+            stringify!(dsa)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_pkey_st__bindgen_ty_1>())).dh as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_pkey_st__bindgen_ty_1),
+            "::",
+            stringify!(dh)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_pkey_st__bindgen_ty_1>())).ec as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_pkey_st__bindgen_ty_1),
+            "::",
+            stringify!(ec)
+        )
+    );
+}
+#[test]
+fn bindgen_test_layout_evp_pkey_st() {
+    assert_eq!(
+        ::std::mem::size_of::<evp_pkey_st>(),
+        24usize,
+        concat!("Size of: ", stringify!(evp_pkey_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<evp_pkey_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(evp_pkey_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_pkey_st>())).references as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_pkey_st),
+            "::",
+            stringify!(references)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_pkey_st>())).type_ as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_pkey_st),
+            "::",
+            stringify!(type_)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_pkey_st>())).pkey as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_pkey_st),
+            "::",
+            stringify!(pkey)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<evp_pkey_st>())).ameth as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(evp_pkey_st),
+            "::",
+            stringify!(ameth)
+        )
+    );
+}
+extern "C" {
+    pub fn CRYPTO_BUFFER_POOL_new() -> *mut CRYPTO_BUFFER_POOL;
+}
+extern "C" {
+    pub fn CRYPTO_BUFFER_POOL_free(pool: *mut CRYPTO_BUFFER_POOL);
+}
+extern "C" {
+    pub fn CRYPTO_BUFFER_new(
+        data: *const u8,
+        len: usize,
+        pool: *mut CRYPTO_BUFFER_POOL,
+    ) -> *mut CRYPTO_BUFFER;
+}
+extern "C" {
+    pub fn CRYPTO_BUFFER_alloc(out_data: *mut *mut u8, len: usize) -> *mut CRYPTO_BUFFER;
+}
+extern "C" {
+    pub fn CRYPTO_BUFFER_new_from_CBS(
+        cbs: *mut CBS,
+        pool: *mut CRYPTO_BUFFER_POOL,
+    ) -> *mut CRYPTO_BUFFER;
+}
+extern "C" {
+    pub fn CRYPTO_BUFFER_free(buf: *mut CRYPTO_BUFFER);
+}
+extern "C" {
+    pub fn CRYPTO_BUFFER_up_ref(buf: *mut CRYPTO_BUFFER) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn CRYPTO_BUFFER_data(buf: *const CRYPTO_BUFFER) -> *const u8;
+}
+extern "C" {
+    pub fn CRYPTO_BUFFER_len(buf: *const CRYPTO_BUFFER) -> usize;
+}
+extern "C" {
+    pub fn CRYPTO_BUFFER_init_CBS(buf: *const CRYPTO_BUFFER, out: *mut CBS);
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct rsa_meth_st {
+    pub common: openssl_method_common_st,
+    pub app_data: *mut ::std::os::raw::c_void,
+    pub init: ::std::option::Option<unsafe extern "C" fn(rsa: *mut RSA) -> ::std::os::raw::c_int>,
+    pub finish: ::std::option::Option<unsafe extern "C" fn(rsa: *mut RSA) -> ::std::os::raw::c_int>,
+    pub size: ::std::option::Option<unsafe extern "C" fn(rsa: *const RSA) -> usize>,
+    pub sign: ::std::option::Option<
+        unsafe extern "C" fn(
+            type_: ::std::os::raw::c_int,
+            m: *const u8,
+            m_length: ::std::os::raw::c_uint,
+            sigret: *mut u8,
+            siglen: *mut ::std::os::raw::c_uint,
+            rsa: *const RSA,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub sign_raw: ::std::option::Option<
+        unsafe extern "C" fn(
+            rsa: *mut RSA,
+            out_len: *mut usize,
+            out: *mut u8,
+            max_out: usize,
+            in_: *const u8,
+            in_len: usize,
+            padding: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub decrypt: ::std::option::Option<
+        unsafe extern "C" fn(
+            rsa: *mut RSA,
+            out_len: *mut usize,
+            out: *mut u8,
+            max_out: usize,
+            in_: *const u8,
+            in_len: usize,
+            padding: ::std::os::raw::c_int,
+        ) -> ::std::os::raw::c_int,
+    >,
+    pub private_transform: ::std::option::Option<
+        unsafe extern "C" fn(rsa: *mut RSA, out: *mut u8, in_: *const u8, len: usize)
+            -> ::std::os::raw::c_int,
+    >,
+    pub flags: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_rsa_meth_st() {
+    assert_eq!(
+        ::std::mem::size_of::<rsa_meth_st>(),
+        80usize,
+        concat!("Size of: ", stringify!(rsa_meth_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<rsa_meth_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(rsa_meth_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_meth_st>())).common as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_meth_st),
+            "::",
+            stringify!(common)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_meth_st>())).app_data as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_meth_st),
+            "::",
+            stringify!(app_data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_meth_st>())).init as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_meth_st),
+            "::",
+            stringify!(init)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_meth_st>())).finish as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_meth_st),
+            "::",
+            stringify!(finish)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_meth_st>())).size as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_meth_st),
+            "::",
+            stringify!(size)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_meth_st>())).sign as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_meth_st),
+            "::",
+            stringify!(sign)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_meth_st>())).sign_raw as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_meth_st),
+            "::",
+            stringify!(sign_raw)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_meth_st>())).decrypt as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_meth_st),
+            "::",
+            stringify!(decrypt)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_meth_st>())).private_transform as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_meth_st),
+            "::",
+            stringify!(private_transform)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_meth_st>())).flags as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_meth_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct bn_blinding_st {
+    _unused: [u8; 0],
+}
+pub type BN_BLINDING = bn_blinding_st;
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct rsa_st {
+    pub meth: *mut RSA_METHOD,
+    pub n: *mut BIGNUM,
+    pub e: *mut BIGNUM,
+    pub d: *mut BIGNUM,
+    pub p: *mut BIGNUM,
+    pub q: *mut BIGNUM,
+    pub dmp1: *mut BIGNUM,
+    pub dmq1: *mut BIGNUM,
+    pub iqmp: *mut BIGNUM,
+    pub ex_data: CRYPTO_EX_DATA,
+    pub references: CRYPTO_refcount_t,
+    pub flags: ::std::os::raw::c_int,
+    pub lock: CRYPTO_MUTEX,
+    pub mont_n: *mut BN_MONT_CTX,
+    pub mont_p: *mut BN_MONT_CTX,
+    pub mont_q: *mut BN_MONT_CTX,
+    pub d_fixed: *mut BIGNUM,
+    pub dmp1_fixed: *mut BIGNUM,
+    pub dmq1_fixed: *mut BIGNUM,
+    pub inv_small_mod_large_mont: *mut BIGNUM,
+    pub num_blindings: ::std::os::raw::c_uint,
+    pub blindings: *mut *mut BN_BLINDING,
+    pub blindings_inuse: *mut ::std::os::raw::c_uchar,
+    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>,
+    pub __bindgen_padding_0: [u8; 7usize],
+}
+#[test]
+fn bindgen_test_layout_rsa_st() {
+    assert_eq!(
+        ::std::mem::size_of::<rsa_st>(),
+        232usize,
+        concat!("Size of: ", stringify!(rsa_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<rsa_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(rsa_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).meth as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(meth)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).n as *const _ as usize },
+        8usize,
+        concat!("Offset of field: ", stringify!(rsa_st), "::", stringify!(n))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).e as *const _ as usize },
+        16usize,
+        concat!("Offset of field: ", stringify!(rsa_st), "::", stringify!(e))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).d as *const _ as usize },
+        24usize,
+        concat!("Offset of field: ", stringify!(rsa_st), "::", stringify!(d))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).p as *const _ as usize },
+        32usize,
+        concat!("Offset of field: ", stringify!(rsa_st), "::", stringify!(p))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).q as *const _ as usize },
+        40usize,
+        concat!("Offset of field: ", stringify!(rsa_st), "::", stringify!(q))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).dmp1 as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(dmp1)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).dmq1 as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(dmq1)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).iqmp as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(iqmp)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).ex_data as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(ex_data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).references as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(references)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).flags as *const _ as usize },
+        84usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).lock as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(lock)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).mont_n as *const _ as usize },
+        144usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(mont_n)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).mont_p as *const _ as usize },
+        152usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(mont_p)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).mont_q as *const _ as usize },
+        160usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(mont_q)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).d_fixed as *const _ as usize },
+        168usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(d_fixed)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).dmp1_fixed as *const _ as usize },
+        176usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(dmp1_fixed)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).dmq1_fixed as *const _ as usize },
+        184usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(dmq1_fixed)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).inv_small_mod_large_mont as *const _ as usize },
+        192usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(inv_small_mod_large_mont)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).num_blindings as *const _ as usize },
+        200usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(num_blindings)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).blindings as *const _ as usize },
+        208usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(blindings)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<rsa_st>())).blindings_inuse as *const _ as usize },
+        216usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(rsa_st),
+            "::",
+            stringify!(blindings_inuse)
+        )
+    );
+}
+impl rsa_st {
+    #[inline]
+    pub fn private_key_frozen(&self) -> ::std::os::raw::c_uint {
+        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u32) }
+    }
+    #[inline]
+    pub fn set_private_key_frozen(&mut self, val: ::std::os::raw::c_uint) {
+        unsafe {
+            let val: u32 = ::std::mem::transmute(val);
+            self._bitfield_1.set(0usize, 1u8, val as u64)
+        }
+    }
+    #[inline]
+    pub fn new_bitfield_1(
+        private_key_frozen: ::std::os::raw::c_uint,
+    ) -> __BindgenBitfieldUnit<[u8; 1usize], u8> {
+        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> =
+            Default::default();
+        __bindgen_bitfield_unit.set(0usize, 1u8, {
+            let private_key_frozen: u32 = unsafe { ::std::mem::transmute(private_key_frozen) };
+            private_key_frozen as u64
+        });
+        __bindgen_bitfield_unit
+    }
+}
+extern "C" {
+    pub fn SHA1_Init(sha: *mut SHA_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA1_Update(
+        sha: *mut SHA_CTX,
+        data: *const ::std::os::raw::c_void,
+        len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA1_Final(md: *mut u8, sha: *mut SHA_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA1_Transform(sha: *mut SHA_CTX, block: *const u8);
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct sha_state_st {
+    pub __bindgen_anon_1: sha_state_st__bindgen_ty_1,
+    pub Nl: u32,
+    pub Nh: u32,
+    pub data: [u8; 64usize],
+    pub num: ::std::os::raw::c_uint,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union sha_state_st__bindgen_ty_1 {
+    pub h: [u32; 5usize],
+    pub __bindgen_anon_1: sha_state_st__bindgen_ty_1__bindgen_ty_1,
+    _bindgen_union_align: [u32; 5usize],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct sha_state_st__bindgen_ty_1__bindgen_ty_1 {
+    pub h0: u32,
+    pub h1: u32,
+    pub h2: u32,
+    pub h3: u32,
+    pub h4: u32,
+}
+#[test]
+fn bindgen_test_layout_sha_state_st__bindgen_ty_1__bindgen_ty_1() {
+    assert_eq!(
+        ::std::mem::size_of::<sha_state_st__bindgen_ty_1__bindgen_ty_1>(),
+        20usize,
+        concat!(
+            "Size of: ",
+            stringify!(sha_state_st__bindgen_ty_1__bindgen_ty_1)
+        )
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sha_state_st__bindgen_ty_1__bindgen_ty_1>(),
+        4usize,
+        concat!(
+            "Alignment of ",
+            stringify!(sha_state_st__bindgen_ty_1__bindgen_ty_1)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sha_state_st__bindgen_ty_1__bindgen_ty_1>())).h0 as *const _
+                as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha_state_st__bindgen_ty_1__bindgen_ty_1),
+            "::",
+            stringify!(h0)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sha_state_st__bindgen_ty_1__bindgen_ty_1>())).h1 as *const _
+                as usize
+        },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha_state_st__bindgen_ty_1__bindgen_ty_1),
+            "::",
+            stringify!(h1)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sha_state_st__bindgen_ty_1__bindgen_ty_1>())).h2 as *const _
+                as usize
+        },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha_state_st__bindgen_ty_1__bindgen_ty_1),
+            "::",
+            stringify!(h2)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sha_state_st__bindgen_ty_1__bindgen_ty_1>())).h3 as *const _
+                as usize
+        },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha_state_st__bindgen_ty_1__bindgen_ty_1),
+            "::",
+            stringify!(h3)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<sha_state_st__bindgen_ty_1__bindgen_ty_1>())).h4 as *const _
+                as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha_state_st__bindgen_ty_1__bindgen_ty_1),
+            "::",
+            stringify!(h4)
+        )
+    );
+}
+#[test]
+fn bindgen_test_layout_sha_state_st__bindgen_ty_1() {
+    assert_eq!(
+        ::std::mem::size_of::<sha_state_st__bindgen_ty_1>(),
+        20usize,
+        concat!("Size of: ", stringify!(sha_state_st__bindgen_ty_1))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sha_state_st__bindgen_ty_1>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sha_state_st__bindgen_ty_1))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha_state_st__bindgen_ty_1>())).h as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha_state_st__bindgen_ty_1),
+            "::",
+            stringify!(h)
+        )
+    );
+}
+#[test]
+fn bindgen_test_layout_sha_state_st() {
+    assert_eq!(
+        ::std::mem::size_of::<sha_state_st>(),
+        96usize,
+        concat!("Size of: ", stringify!(sha_state_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sha_state_st>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sha_state_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha_state_st>())).Nl as *const _ as usize },
+        20usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha_state_st),
+            "::",
+            stringify!(Nl)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha_state_st>())).Nh as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha_state_st),
+            "::",
+            stringify!(Nh)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha_state_st>())).data as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha_state_st),
+            "::",
+            stringify!(data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha_state_st>())).num as *const _ as usize },
+        92usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha_state_st),
+            "::",
+            stringify!(num)
+        )
+    );
+}
+extern "C" {
+    pub fn SHA224_Init(sha: *mut SHA256_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA224_Update(
+        sha: *mut SHA256_CTX,
+        data: *const ::std::os::raw::c_void,
+        len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA224_Final(md: *mut u8, sha: *mut SHA256_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA256_Init(sha: *mut SHA256_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA256_Update(
+        sha: *mut SHA256_CTX,
+        data: *const ::std::os::raw::c_void,
+        len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA256_Final(md: *mut u8, sha: *mut SHA256_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA256_Transform(sha: *mut SHA256_CTX, block: *const u8);
+}
+extern "C" {
+    pub fn SHA256_TransformBlocks(state: *mut u32, data: *const u8, num_blocks: usize);
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct sha256_state_st {
+    pub h: [u32; 8usize],
+    pub Nl: u32,
+    pub Nh: u32,
+    pub data: [u8; 64usize],
+    pub num: ::std::os::raw::c_uint,
+    pub md_len: ::std::os::raw::c_uint,
+}
+#[test]
+fn bindgen_test_layout_sha256_state_st() {
+    assert_eq!(
+        ::std::mem::size_of::<sha256_state_st>(),
+        112usize,
+        concat!("Size of: ", stringify!(sha256_state_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sha256_state_st>(),
+        4usize,
+        concat!("Alignment of ", stringify!(sha256_state_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha256_state_st>())).h as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha256_state_st),
+            "::",
+            stringify!(h)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha256_state_st>())).Nl as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha256_state_st),
+            "::",
+            stringify!(Nl)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha256_state_st>())).Nh as *const _ as usize },
+        36usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha256_state_st),
+            "::",
+            stringify!(Nh)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha256_state_st>())).data as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha256_state_st),
+            "::",
+            stringify!(data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha256_state_st>())).num as *const _ as usize },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha256_state_st),
+            "::",
+            stringify!(num)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha256_state_st>())).md_len as *const _ as usize },
+        108usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha256_state_st),
+            "::",
+            stringify!(md_len)
+        )
+    );
+}
+extern "C" {
+    pub fn SHA384_Init(sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA384_Update(
+        sha: *mut SHA512_CTX,
+        data: *const ::std::os::raw::c_void,
+        len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA384_Final(md: *mut u8, sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA384_Transform(sha: *mut SHA512_CTX, block: *const u8);
+}
+extern "C" {
+    pub fn SHA512_Init(sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA512_Update(
+        sha: *mut SHA512_CTX,
+        data: *const ::std::os::raw::c_void,
+        len: usize,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA512_Final(md: *mut u8, sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn SHA512_Transform(sha: *mut SHA512_CTX, block: *const u8);
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct sha512_state_st {
+    pub h: [u64; 8usize],
+    pub Nl: u64,
+    pub Nh: u64,
+    pub u: sha512_state_st__bindgen_ty_1,
+    pub num: ::std::os::raw::c_uint,
+    pub md_len: ::std::os::raw::c_uint,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union sha512_state_st__bindgen_ty_1 {
+    pub d: [u64; 16usize],
+    pub p: [u8; 128usize],
+    _bindgen_union_align: [u64; 16usize],
+}
+#[test]
+fn bindgen_test_layout_sha512_state_st__bindgen_ty_1() {
+    assert_eq!(
+        ::std::mem::size_of::<sha512_state_st__bindgen_ty_1>(),
+        128usize,
+        concat!("Size of: ", stringify!(sha512_state_st__bindgen_ty_1))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sha512_state_st__bindgen_ty_1>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sha512_state_st__bindgen_ty_1))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha512_state_st__bindgen_ty_1>())).d as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha512_state_st__bindgen_ty_1),
+            "::",
+            stringify!(d)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha512_state_st__bindgen_ty_1>())).p as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha512_state_st__bindgen_ty_1),
+            "::",
+            stringify!(p)
+        )
+    );
+}
+#[test]
+fn bindgen_test_layout_sha512_state_st() {
+    assert_eq!(
+        ::std::mem::size_of::<sha512_state_st>(),
+        216usize,
+        concat!("Size of: ", stringify!(sha512_state_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<sha512_state_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(sha512_state_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha512_state_st>())).h as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha512_state_st),
+            "::",
+            stringify!(h)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha512_state_st>())).Nl as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha512_state_st),
+            "::",
+            stringify!(Nl)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha512_state_st>())).Nh as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha512_state_st),
+            "::",
+            stringify!(Nh)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha512_state_st>())).u as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha512_state_st),
+            "::",
+            stringify!(u)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha512_state_st>())).num as *const _ as usize },
+        208usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha512_state_st),
+            "::",
+            stringify!(num)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<sha512_state_st>())).md_len as *const _ as usize },
+        212usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(sha512_state_st),
+            "::",
+            stringify!(md_len)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct stack_st_X509_ALGOR {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct X509_val_st {
+    pub notBefore: *mut ASN1_TIME,
+    pub notAfter: *mut ASN1_TIME,
+}
+#[test]
+fn bindgen_test_layout_X509_val_st() {
+    assert_eq!(
+        ::std::mem::size_of::<X509_val_st>(),
+        16usize,
+        concat!("Size of: ", stringify!(X509_val_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<X509_val_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(X509_val_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_val_st>())).notBefore as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_val_st),
+            "::",
+            stringify!(notBefore)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_val_st>())).notAfter as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_val_st),
+            "::",
+            stringify!(notAfter)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct X509_pubkey_st {
+    pub algor: *mut X509_ALGOR,
+    pub public_key: *mut ASN1_BIT_STRING,
+    pub pkey: *mut EVP_PKEY,
+}
+#[test]
+fn bindgen_test_layout_X509_pubkey_st() {
+    assert_eq!(
+        ::std::mem::size_of::<X509_pubkey_st>(),
+        24usize,
+        concat!("Size of: ", stringify!(X509_pubkey_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<X509_pubkey_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(X509_pubkey_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_pubkey_st>())).algor as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_pubkey_st),
+            "::",
+            stringify!(algor)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_pubkey_st>())).public_key as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_pubkey_st),
+            "::",
+            stringify!(public_key)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_pubkey_st>())).pkey as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_pubkey_st),
+            "::",
+            stringify!(pkey)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct stack_st_X509_NAME_ENTRY {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct X509_name_st {
+    pub entries: *mut stack_st_X509_NAME_ENTRY,
+    pub modified: ::std::os::raw::c_int,
+    pub bytes: *mut BUF_MEM,
+    pub canon_enc: *mut ::std::os::raw::c_uchar,
+    pub canon_enclen: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_X509_name_st() {
+    assert_eq!(
+        ::std::mem::size_of::<X509_name_st>(),
+        40usize,
+        concat!("Size of: ", stringify!(X509_name_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<X509_name_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(X509_name_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_name_st>())).entries as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_name_st),
+            "::",
+            stringify!(entries)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_name_st>())).modified as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_name_st),
+            "::",
+            stringify!(modified)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_name_st>())).bytes as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_name_st),
+            "::",
+            stringify!(bytes)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_name_st>())).canon_enc as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_name_st),
+            "::",
+            stringify!(canon_enc)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_name_st>())).canon_enclen as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_name_st),
+            "::",
+            stringify!(canon_enclen)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct stack_st_X509_EXTENSION {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct stack_st_X509_ATTRIBUTE {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct X509_req_info_st {
+    pub enc: ASN1_ENCODING,
+    pub version: *mut ASN1_INTEGER,
+    pub subject: *mut X509_NAME,
+    pub pubkey: *mut X509_PUBKEY,
+    pub attributes: *mut stack_st_X509_ATTRIBUTE,
+}
+#[test]
+fn bindgen_test_layout_X509_req_info_st() {
+    assert_eq!(
+        ::std::mem::size_of::<X509_req_info_st>(),
+        56usize,
+        concat!("Size of: ", stringify!(X509_req_info_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<X509_req_info_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(X509_req_info_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_req_info_st>())).enc as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_req_info_st),
+            "::",
+            stringify!(enc)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_req_info_st>())).version as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_req_info_st),
+            "::",
+            stringify!(version)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_req_info_st>())).subject as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_req_info_st),
+            "::",
+            stringify!(subject)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_req_info_st>())).pubkey as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_req_info_st),
+            "::",
+            stringify!(pubkey)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_req_info_st>())).attributes as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_req_info_st),
+            "::",
+            stringify!(attributes)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct X509_req_st {
+    pub req_info: *mut X509_REQ_INFO,
+    pub sig_alg: *mut X509_ALGOR,
+    pub signature: *mut ASN1_BIT_STRING,
+    pub references: CRYPTO_refcount_t,
+}
+#[test]
+fn bindgen_test_layout_X509_req_st() {
+    assert_eq!(
+        ::std::mem::size_of::<X509_req_st>(),
+        32usize,
+        concat!("Size of: ", stringify!(X509_req_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<X509_req_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(X509_req_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_req_st>())).req_info as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_req_st),
+            "::",
+            stringify!(req_info)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_req_st>())).sig_alg as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_req_st),
+            "::",
+            stringify!(sig_alg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_req_st>())).signature as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_req_st),
+            "::",
+            stringify!(signature)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_req_st>())).references as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_req_st),
+            "::",
+            stringify!(references)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x509_cinf_st {
+    pub version: *mut ASN1_INTEGER,
+    pub serialNumber: *mut ASN1_INTEGER,
+    pub signature: *mut X509_ALGOR,
+    pub issuer: *mut X509_NAME,
+    pub validity: *mut X509_VAL,
+    pub subject: *mut X509_NAME,
+    pub key: *mut X509_PUBKEY,
+    pub issuerUID: *mut ASN1_BIT_STRING,
+    pub subjectUID: *mut ASN1_BIT_STRING,
+    pub extensions: *mut stack_st_X509_EXTENSION,
+    pub enc: ASN1_ENCODING,
+}
+#[test]
+fn bindgen_test_layout_x509_cinf_st() {
+    assert_eq!(
+        ::std::mem::size_of::<x509_cinf_st>(),
+        104usize,
+        concat!("Size of: ", stringify!(x509_cinf_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<x509_cinf_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(x509_cinf_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cinf_st>())).version as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cinf_st),
+            "::",
+            stringify!(version)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cinf_st>())).serialNumber as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cinf_st),
+            "::",
+            stringify!(serialNumber)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cinf_st>())).signature as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cinf_st),
+            "::",
+            stringify!(signature)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cinf_st>())).issuer as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cinf_st),
+            "::",
+            stringify!(issuer)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cinf_st>())).validity as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cinf_st),
+            "::",
+            stringify!(validity)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cinf_st>())).subject as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cinf_st),
+            "::",
+            stringify!(subject)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cinf_st>())).key as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cinf_st),
+            "::",
+            stringify!(key)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cinf_st>())).issuerUID as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cinf_st),
+            "::",
+            stringify!(issuerUID)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cinf_st>())).subjectUID as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cinf_st),
+            "::",
+            stringify!(subjectUID)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cinf_st>())).extensions as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cinf_st),
+            "::",
+            stringify!(extensions)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cinf_st>())).enc as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cinf_st),
+            "::",
+            stringify!(enc)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct x509_cert_aux_st {
+    pub trust: *mut stack_st_ASN1_OBJECT,
+    pub reject: *mut stack_st_ASN1_OBJECT,
+    pub alias: *mut ASN1_UTF8STRING,
+    pub keyid: *mut ASN1_OCTET_STRING,
+    pub other: *mut stack_st_X509_ALGOR,
+}
+#[test]
+fn bindgen_test_layout_x509_cert_aux_st() {
+    assert_eq!(
+        ::std::mem::size_of::<x509_cert_aux_st>(),
+        40usize,
+        concat!("Size of: ", stringify!(x509_cert_aux_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<x509_cert_aux_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(x509_cert_aux_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cert_aux_st>())).trust as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cert_aux_st),
+            "::",
+            stringify!(trust)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cert_aux_st>())).reject as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cert_aux_st),
+            "::",
+            stringify!(reject)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cert_aux_st>())).alias as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cert_aux_st),
+            "::",
+            stringify!(alias)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cert_aux_st>())).keyid as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cert_aux_st),
+            "::",
+            stringify!(keyid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_cert_aux_st>())).other as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_cert_aux_st),
+            "::",
+            stringify!(other)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct stack_st_DIST_POINT {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct stack_st_GENERAL_NAME {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct x509_st {
+    pub cert_info: *mut X509_CINF,
+    pub sig_alg: *mut X509_ALGOR,
+    pub signature: *mut ASN1_BIT_STRING,
+    pub references: CRYPTO_refcount_t,
+    pub name: *mut ::std::os::raw::c_char,
+    pub ex_data: CRYPTO_EX_DATA,
+    pub ex_pathlen: ::std::os::raw::c_long,
+    pub ex_pcpathlen: ::std::os::raw::c_long,
+    pub ex_flags: ::std::os::raw::c_ulong,
+    pub ex_kusage: ::std::os::raw::c_ulong,
+    pub ex_xkusage: ::std::os::raw::c_ulong,
+    pub ex_nscert: ::std::os::raw::c_ulong,
+    pub skid: *mut ASN1_OCTET_STRING,
+    pub akid: *mut AUTHORITY_KEYID,
+    pub policy_cache: *mut X509_POLICY_CACHE,
+    pub crldp: *mut stack_st_DIST_POINT,
+    pub altname: *mut stack_st_GENERAL_NAME,
+    pub nc: *mut NAME_CONSTRAINTS,
+    pub sha1_hash: [::std::os::raw::c_uchar; 20usize],
+    pub aux: *mut X509_CERT_AUX,
+    pub buf: *mut CRYPTO_BUFFER,
+    pub lock: CRYPTO_MUTEX,
+}
+#[test]
+fn bindgen_test_layout_x509_st() {
+    assert_eq!(
+        ::std::mem::size_of::<x509_st>(),
+        240usize,
+        concat!("Size of: ", stringify!(x509_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<x509_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(x509_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).cert_info as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(cert_info)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).sig_alg as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(sig_alg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).signature as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(signature)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).references as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(references)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).name as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(name)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).ex_data as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(ex_data)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).ex_pathlen as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(ex_pathlen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).ex_pcpathlen as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(ex_pcpathlen)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).ex_flags as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(ex_flags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).ex_kusage as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(ex_kusage)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).ex_xkusage as *const _ as usize },
+        80usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(ex_xkusage)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).ex_nscert as *const _ as usize },
+        88usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(ex_nscert)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).skid as *const _ as usize },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(skid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).akid as *const _ as usize },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(akid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).policy_cache as *const _ as usize },
+        112usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(policy_cache)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).crldp as *const _ as usize },
+        120usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(crldp)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).altname as *const _ as usize },
+        128usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(altname)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).nc as *const _ as usize },
+        136usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(nc)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).sha1_hash as *const _ as usize },
+        144usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(sha1_hash)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).aux as *const _ as usize },
+        168usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(aux)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).buf as *const _ as usize },
+        176usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(buf)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<x509_st>())).lock as *const _ as usize },
+        184usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(x509_st),
+            "::",
+            stringify!(lock)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct stack_st_X509_REVOKED {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct X509_crl_info_st {
+    pub version: *mut ASN1_INTEGER,
+    pub sig_alg: *mut X509_ALGOR,
+    pub issuer: *mut X509_NAME,
+    pub lastUpdate: *mut ASN1_TIME,
+    pub nextUpdate: *mut ASN1_TIME,
+    pub revoked: *mut stack_st_X509_REVOKED,
+    pub extensions: *mut stack_st_X509_EXTENSION,
+    pub enc: ASN1_ENCODING,
+}
+#[test]
+fn bindgen_test_layout_X509_crl_info_st() {
+    assert_eq!(
+        ::std::mem::size_of::<X509_crl_info_st>(),
+        80usize,
+        concat!("Size of: ", stringify!(X509_crl_info_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<X509_crl_info_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(X509_crl_info_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_info_st>())).version as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_info_st),
+            "::",
+            stringify!(version)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_info_st>())).sig_alg as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_info_st),
+            "::",
+            stringify!(sig_alg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_info_st>())).issuer as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_info_st),
+            "::",
+            stringify!(issuer)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_info_st>())).lastUpdate as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_info_st),
+            "::",
+            stringify!(lastUpdate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_info_st>())).nextUpdate as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_info_st),
+            "::",
+            stringify!(nextUpdate)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_info_st>())).revoked as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_info_st),
+            "::",
+            stringify!(revoked)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_info_st>())).extensions as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_info_st),
+            "::",
+            stringify!(extensions)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_info_st>())).enc as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_info_st),
+            "::",
+            stringify!(enc)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct stack_st_GENERAL_NAMES {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct X509_crl_st {
+    pub crl: *mut X509_CRL_INFO,
+    pub sig_alg: *mut X509_ALGOR,
+    pub signature: *mut ASN1_BIT_STRING,
+    pub references: CRYPTO_refcount_t,
+    pub flags: ::std::os::raw::c_int,
+    pub akid: *mut AUTHORITY_KEYID,
+    pub idp: *mut ISSUING_DIST_POINT,
+    pub idp_flags: ::std::os::raw::c_int,
+    pub idp_reasons: ::std::os::raw::c_int,
+    pub crl_number: *mut ASN1_INTEGER,
+    pub base_crl_number: *mut ASN1_INTEGER,
+    pub sha1_hash: [::std::os::raw::c_uchar; 20usize],
+    pub issuers: *mut stack_st_GENERAL_NAMES,
+    pub meth: *const X509_CRL_METHOD,
+    pub meth_data: *mut ::std::os::raw::c_void,
+}
+#[test]
+fn bindgen_test_layout_X509_crl_st() {
+    assert_eq!(
+        ::std::mem::size_of::<X509_crl_st>(),
+        120usize,
+        concat!("Size of: ", stringify!(X509_crl_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<X509_crl_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(X509_crl_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).crl as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(crl)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).sig_alg as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(sig_alg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).signature as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(signature)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).references as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(references)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).flags as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(flags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).akid as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(akid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).idp as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(idp)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).idp_flags as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(idp_flags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).idp_reasons as *const _ as usize },
+        52usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(idp_reasons)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).crl_number as *const _ as usize },
+        56usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(crl_number)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).base_crl_number as *const _ as usize },
+        64usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(base_crl_number)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).sha1_hash as *const _ as usize },
+        72usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(sha1_hash)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).issuers as *const _ as usize },
+        96usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(issuers)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).meth as *const _ as usize },
+        104usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(meth)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<X509_crl_st>())).meth_data as *const _ as usize },
+        112usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509_crl_st),
+            "::",
+            stringify!(meth_data)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct pkcs8_priv_key_info_st {
+    pub broken: ::std::os::raw::c_int,
+    pub version: *mut ASN1_INTEGER,
+    pub pkeyalg: *mut X509_ALGOR,
+    pub pkey: *mut ASN1_TYPE,
+    pub attributes: *mut stack_st_X509_ATTRIBUTE,
+}
+#[test]
+fn bindgen_test_layout_pkcs8_priv_key_info_st() {
+    assert_eq!(
+        ::std::mem::size_of::<pkcs8_priv_key_info_st>(),
+        40usize,
+        concat!("Size of: ", stringify!(pkcs8_priv_key_info_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<pkcs8_priv_key_info_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(pkcs8_priv_key_info_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<pkcs8_priv_key_info_st>())).broken as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(pkcs8_priv_key_info_st),
+            "::",
+            stringify!(broken)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<pkcs8_priv_key_info_st>())).version as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(pkcs8_priv_key_info_st),
+            "::",
+            stringify!(version)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<pkcs8_priv_key_info_st>())).pkeyalg as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(pkcs8_priv_key_info_st),
+            "::",
+            stringify!(pkeyalg)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<pkcs8_priv_key_info_st>())).pkey as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(pkcs8_priv_key_info_st),
+            "::",
+            stringify!(pkey)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<pkcs8_priv_key_info_st>())).attributes as *const _ as usize
+        },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(pkcs8_priv_key_info_st),
+            "::",
+            stringify!(attributes)
+        )
+    );
+}
+extern "C" {
+    pub fn ASN1_digest(
+        i2d: i2d_of_void,
+        type_: *const EVP_MD,
+        data: *mut ::std::os::raw::c_char,
+        md: *mut ::std::os::raw::c_uchar,
+        len: *mut ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_item_digest(
+        it: *const ASN1_ITEM,
+        type_: *const EVP_MD,
+        data: *mut ::std::os::raw::c_void,
+        md: *mut ::std::os::raw::c_uchar,
+        len: *mut ::std::os::raw::c_uint,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_item_verify(
+        it: *const ASN1_ITEM,
+        algor1: *mut X509_ALGOR,
+        signature: *mut ASN1_BIT_STRING,
+        data: *mut ::std::os::raw::c_void,
+        pkey: *mut EVP_PKEY,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_item_sign(
+        it: *const ASN1_ITEM,
+        algor1: *mut X509_ALGOR,
+        algor2: *mut X509_ALGOR,
+        signature: *mut ASN1_BIT_STRING,
+        data: *mut ::std::os::raw::c_void,
+        pkey: *mut EVP_PKEY,
+        type_: *const EVP_MD,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn ASN1_item_sign_ctx(
+        it: *const ASN1_ITEM,
+        algor1: *mut X509_ALGOR,
+        algor2: *mut X509_ALGOR,
+        signature: *mut ASN1_BIT_STRING,
+        asn: *mut ::std::os::raw::c_void,
+        ctx: *mut EVP_MD_CTX,
+    ) -> ::std::os::raw::c_int;
+}
+extern "C" {
+    pub fn EVP_PKCS82PKEY(p8: *mut PKCS8_PRIV_KEY_INFO) -> *mut EVP_PKEY;
+}
+extern "C" {
+    pub fn EVP_PKEY2PKCS8(pkey: *mut EVP_PKEY) -> *mut PKCS8_PRIV_KEY_INFO;
+}
+extern "C" {
+    pub fn EVP_PKEY2PKCS8_broken(
+        pkey: *mut EVP_PKEY,
+        broken: ::std::os::raw::c_int,
+    ) -> *mut PKCS8_PRIV_KEY_INFO;
+}
+pub type poly1305_state = [u8; 512usize];
+extern "C" {
+    pub fn CRYPTO_poly1305_init(state: *mut poly1305_state, key: *const u8);
+}
+extern "C" {
+    pub fn CRYPTO_poly1305_update(state: *mut poly1305_state, in_: *const u8, in_len: usize);
+}
+extern "C" {
+    pub fn CRYPTO_poly1305_finish(state: *mut poly1305_state, mac: *mut u8);
+}
+extern "C" {
+    pub fn ERR_load_SSL_strings();
+}
+extern "C" {
+    pub fn BIO_f_ssl() -> *const BIO_METHOD;
+}
+extern "C" {
+    pub fn BIO_set_ssl(
+        bio: *mut BIO,
+        ssl: *mut SSL,
+        take_owership: ::std::os::raw::c_int,
+    ) -> ::std::os::raw::c_long;
+}
+extern "C" {
+    pub fn OPENSSL_init_ssl(
+        opts: u64,
+        settings: *const OPENSSL_INIT_SETTINGS,
+    ) -> ::std::os::raw::c_int;
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct X509V3_CONF_METHOD_st {
+    pub get_string: ::std::option::Option<
+        unsafe extern "C" fn(
+            db: *mut ::std::os::raw::c_void,
+            section: *mut ::std::os::raw::c_char,
+            value: *mut ::std::os::raw::c_char,
+        ) -> *mut ::std::os::raw::c_char,
+    >,
+    pub get_section: ::std::option::Option<
+        unsafe extern "C" fn(db: *mut ::std::os::raw::c_void, section: *mut ::std::os::raw::c_char)
+            -> *mut stack_st_CONF_VALUE,
+    >,
+    pub free_string: ::std::option::Option<
+        unsafe extern "C" fn(db: *mut ::std::os::raw::c_void, string: *mut ::std::os::raw::c_char),
+    >,
+    pub free_section: ::std::option::Option<
+        unsafe extern "C" fn(db: *mut ::std::os::raw::c_void, section: *mut stack_st_CONF_VALUE),
+    >,
+}
+#[test]
+fn bindgen_test_layout_X509V3_CONF_METHOD_st() {
+    assert_eq!(
+        ::std::mem::size_of::<X509V3_CONF_METHOD_st>(),
+        32usize,
+        concat!("Size of: ", stringify!(X509V3_CONF_METHOD_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<X509V3_CONF_METHOD_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(X509V3_CONF_METHOD_st))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<X509V3_CONF_METHOD_st>())).get_string as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509V3_CONF_METHOD_st),
+            "::",
+            stringify!(get_string)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<X509V3_CONF_METHOD_st>())).get_section as *const _ as usize
+        },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509V3_CONF_METHOD_st),
+            "::",
+            stringify!(get_section)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<X509V3_CONF_METHOD_st>())).free_string as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509V3_CONF_METHOD_st),
+            "::",
+            stringify!(free_string)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<X509V3_CONF_METHOD_st>())).free_section as *const _ as usize
+        },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(X509V3_CONF_METHOD_st),
+            "::",
+            stringify!(free_section)
+        )
+    );
+}
+pub type X509V3_CONF_METHOD = X509V3_CONF_METHOD_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct v3_ext_ctx {
+    pub flags: ::std::os::raw::c_int,
+    pub issuer_cert: *mut X509,
+    pub subject_cert: *mut X509,
+    pub subject_req: *mut X509_REQ,
+    pub crl: *mut X509_CRL,
+    pub db_meth: *const X509V3_CONF_METHOD,
+    pub db: *mut ::std::os::raw::c_void,
+}
+#[test]
+fn bindgen_test_layout_v3_ext_ctx() {
+    assert_eq!(
+        ::std::mem::size_of::<v3_ext_ctx>(),
+        56usize,
+        concat!("Size of: ", stringify!(v3_ext_ctx))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<v3_ext_ctx>(),
+        8usize,
+        concat!("Alignment of ", stringify!(v3_ext_ctx))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<v3_ext_ctx>())).flags as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(v3_ext_ctx),
+            "::",
+            stringify!(flags)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<v3_ext_ctx>())).issuer_cert as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(v3_ext_ctx),
+            "::",
+            stringify!(issuer_cert)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<v3_ext_ctx>())).subject_cert as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(v3_ext_ctx),
+            "::",
+            stringify!(subject_cert)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<v3_ext_ctx>())).subject_req as *const _ as usize },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(v3_ext_ctx),
+            "::",
+            stringify!(subject_req)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<v3_ext_ctx>())).crl as *const _ as usize },
+        32usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(v3_ext_ctx),
+            "::",
+            stringify!(crl)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<v3_ext_ctx>())).db_meth as *const _ as usize },
+        40usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(v3_ext_ctx),
+            "::",
+            stringify!(db_meth)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<v3_ext_ctx>())).db as *const _ as usize },
+        48usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(v3_ext_ctx),
+            "::",
+            stringify!(db)
+        )
+    );
+}
+pub type GENERAL_NAMES = stack_st_GENERAL_NAME;
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct DIST_POINT_NAME_st {
+    pub type_: ::std::os::raw::c_int,
+    pub name: DIST_POINT_NAME_st__bindgen_ty_1,
+    pub dpname: *mut X509_NAME,
+}
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub union DIST_POINT_NAME_st__bindgen_ty_1 {
+    pub fullname: *mut GENERAL_NAMES,
+    pub relativename: *mut stack_st_X509_NAME_ENTRY,
+    _bindgen_union_align: u64,
+}
+#[test]
+fn bindgen_test_layout_DIST_POINT_NAME_st__bindgen_ty_1() {
+    assert_eq!(
+        ::std::mem::size_of::<DIST_POINT_NAME_st__bindgen_ty_1>(),
+        8usize,
+        concat!("Size of: ", stringify!(DIST_POINT_NAME_st__bindgen_ty_1))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<DIST_POINT_NAME_st__bindgen_ty_1>(),
+        8usize,
+        concat!(
+            "Alignment of ",
+            stringify!(DIST_POINT_NAME_st__bindgen_ty_1)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<DIST_POINT_NAME_st__bindgen_ty_1>())).fullname as *const _
+                as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(DIST_POINT_NAME_st__bindgen_ty_1),
+            "::",
+            stringify!(fullname)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<DIST_POINT_NAME_st__bindgen_ty_1>())).relativename as *const _
+                as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(DIST_POINT_NAME_st__bindgen_ty_1),
+            "::",
+            stringify!(relativename)
+        )
+    );
+}
+#[test]
+fn bindgen_test_layout_DIST_POINT_NAME_st() {
+    assert_eq!(
+        ::std::mem::size_of::<DIST_POINT_NAME_st>(),
+        24usize,
+        concat!("Size of: ", stringify!(DIST_POINT_NAME_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<DIST_POINT_NAME_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(DIST_POINT_NAME_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<DIST_POINT_NAME_st>())).type_ as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(DIST_POINT_NAME_st),
+            "::",
+            stringify!(type_)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<DIST_POINT_NAME_st>())).name as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(DIST_POINT_NAME_st),
+            "::",
+            stringify!(name)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<DIST_POINT_NAME_st>())).dpname as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(DIST_POINT_NAME_st),
+            "::",
+            stringify!(dpname)
+        )
+    );
+}
+pub type DIST_POINT_NAME = DIST_POINT_NAME_st;
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct AUTHORITY_KEYID_st {
+    pub keyid: *mut ASN1_OCTET_STRING,
+    pub issuer: *mut GENERAL_NAMES,
+    pub serial: *mut ASN1_INTEGER,
+}
+#[test]
+fn bindgen_test_layout_AUTHORITY_KEYID_st() {
+    assert_eq!(
+        ::std::mem::size_of::<AUTHORITY_KEYID_st>(),
+        24usize,
+        concat!("Size of: ", stringify!(AUTHORITY_KEYID_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<AUTHORITY_KEYID_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(AUTHORITY_KEYID_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<AUTHORITY_KEYID_st>())).keyid as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(AUTHORITY_KEYID_st),
+            "::",
+            stringify!(keyid)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<AUTHORITY_KEYID_st>())).issuer as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(AUTHORITY_KEYID_st),
+            "::",
+            stringify!(issuer)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<AUTHORITY_KEYID_st>())).serial as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(AUTHORITY_KEYID_st),
+            "::",
+            stringify!(serial)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct stack_st_GENERAL_SUBTREE {
+    _unused: [u8; 0],
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct NAME_CONSTRAINTS_st {
+    pub permittedSubtrees: *mut stack_st_GENERAL_SUBTREE,
+    pub excludedSubtrees: *mut stack_st_GENERAL_SUBTREE,
+}
+#[test]
+fn bindgen_test_layout_NAME_CONSTRAINTS_st() {
+    assert_eq!(
+        ::std::mem::size_of::<NAME_CONSTRAINTS_st>(),
+        16usize,
+        concat!("Size of: ", stringify!(NAME_CONSTRAINTS_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<NAME_CONSTRAINTS_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(NAME_CONSTRAINTS_st))
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<NAME_CONSTRAINTS_st>())).permittedSubtrees as *const _ as usize
+        },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(NAME_CONSTRAINTS_st),
+            "::",
+            stringify!(permittedSubtrees)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<NAME_CONSTRAINTS_st>())).excludedSubtrees as *const _ as usize
+        },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(NAME_CONSTRAINTS_st),
+            "::",
+            stringify!(excludedSubtrees)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct ISSUING_DIST_POINT_st {
+    pub distpoint: *mut DIST_POINT_NAME,
+    pub onlyuser: ::std::os::raw::c_int,
+    pub onlyCA: ::std::os::raw::c_int,
+    pub onlysomereasons: *mut ASN1_BIT_STRING,
+    pub indirectCRL: ::std::os::raw::c_int,
+    pub onlyattr: ::std::os::raw::c_int,
+}
+#[test]
+fn bindgen_test_layout_ISSUING_DIST_POINT_st() {
+    assert_eq!(
+        ::std::mem::size_of::<ISSUING_DIST_POINT_st>(),
+        32usize,
+        concat!("Size of: ", stringify!(ISSUING_DIST_POINT_st))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<ISSUING_DIST_POINT_st>(),
+        8usize,
+        concat!("Alignment of ", stringify!(ISSUING_DIST_POINT_st))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ISSUING_DIST_POINT_st>())).distpoint as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ISSUING_DIST_POINT_st),
+            "::",
+            stringify!(distpoint)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ISSUING_DIST_POINT_st>())).onlyuser as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ISSUING_DIST_POINT_st),
+            "::",
+            stringify!(onlyuser)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ISSUING_DIST_POINT_st>())).onlyCA as *const _ as usize },
+        12usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ISSUING_DIST_POINT_st),
+            "::",
+            stringify!(onlyCA)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ISSUING_DIST_POINT_st>())).onlysomereasons as *const _ as usize
+        },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ISSUING_DIST_POINT_st),
+            "::",
+            stringify!(onlysomereasons)
+        )
+    );
+    assert_eq!(
+        unsafe {
+            &(*(::std::ptr::null::<ISSUING_DIST_POINT_st>())).indirectCRL as *const _ as usize
+        },
+        24usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ISSUING_DIST_POINT_st),
+            "::",
+            stringify!(indirectCRL)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<ISSUING_DIST_POINT_st>())).onlyattr as *const _ as usize },
+        28usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(ISSUING_DIST_POINT_st),
+            "::",
+            stringify!(onlyattr)
+        )
+    );
+}
+pub type __builtin_va_list = [__va_list_tag; 1usize];
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct __va_list_tag {
+    pub gp_offset: ::std::os::raw::c_uint,
+    pub fp_offset: ::std::os::raw::c_uint,
+    pub overflow_arg_area: *mut ::std::os::raw::c_void,
+    pub reg_save_area: *mut ::std::os::raw::c_void,
+}
+#[test]
+fn bindgen_test_layout___va_list_tag() {
+    assert_eq!(
+        ::std::mem::size_of::<__va_list_tag>(),
+        24usize,
+        concat!("Size of: ", stringify!(__va_list_tag))
+    );
+    assert_eq!(
+        ::std::mem::align_of::<__va_list_tag>(),
+        8usize,
+        concat!("Alignment of ", stringify!(__va_list_tag))
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__va_list_tag>())).gp_offset as *const _ as usize },
+        0usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__va_list_tag),
+            "::",
+            stringify!(gp_offset)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__va_list_tag>())).fp_offset as *const _ as usize },
+        4usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__va_list_tag),
+            "::",
+            stringify!(fp_offset)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__va_list_tag>())).overflow_arg_area as *const _ as usize },
+        8usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__va_list_tag),
+            "::",
+            stringify!(overflow_arg_area)
+        )
+    );
+    assert_eq!(
+        unsafe { &(*(::std::ptr::null::<__va_list_tag>())).reg_save_area as *const _ as usize },
+        16usize,
+        concat!(
+            "Offset of field: ",
+            stringify!(__va_list_tag),
+            "::",
+            stringify!(reg_save_area)
+        )
+    );
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct CRYPTO_dynlock_value {
+    pub _address: u8,
+}
+#[repr(C)]
+#[derive(Debug, Copy, Clone)]
+pub struct lhash_st_CONF_VALUE {
+    pub _address: u8,
+}
