// 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 "C" {}

/* automatically generated by rust-bindgen 0.56.0 */

#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align> {
    storage: Storage,
    align: [Align; 0],
}
impl<Storage, Align> __BindgenBitfieldUnit<Storage, Align> {
    #[inline]
    pub const fn new(storage: Storage) -> Self {
        Self { storage, align: [] }
    }
}
impl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>
where
    Storage: AsRef<[u8]> + AsMut<[u8]>,
{
    #[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 = 269488255;
pub const SSLEAY_VERSION_NUMBER: u32 = 269488255;
pub const EVP_AEAD_MAX_KEY_LENGTH: u32 = 80;
pub const EVP_AEAD_MAX_NONCE_LENGTH: u32 = 24;
pub const EVP_AEAD_MAX_OVERHEAD: u32 = 64;
pub const EVP_AEAD_DEFAULT_TAG_LENGTH: u32 = 0;
pub const AES_ENCRYPT: u32 = 1;
pub const AES_DECRYPT: u32 = 0;
pub const AES_MAXNR: u32 = 14;
pub const AES_BLOCK_SIZE: u32 = 16;
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_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: 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_DUP: u32 = 12;
pub const BIO_CTRL_SET_FILENAME: u32 = 30;
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 BN_BITS2: u32 = 64;
pub const BN_DEC_FMT1: &'static [u8; 2usize] = b"%\0";
pub const BN_DEC_FMT2: &'static [u8; 5usize] = b"%019\0";
pub const BN_HEX_FMT1: &'static [u8; 2usize] = b"%\0";
pub const BN_HEX_FMT2: &'static [u8; 5usize] = b"%016\0";
pub const BN_RAND_TOP_ANY: i32 = -1;
pub const BN_RAND_TOP_ONE: u32 = 0;
pub const BN_RAND_TOP_TWO: u32 = 1;
pub const BN_RAND_BOTTOM_ANY: u32 = 0;
pub const BN_RAND_BOTTOM_ODD: u32 = 1;
pub const BN_GENCB_GENERATED: u32 = 0;
pub const BN_GENCB_PRIME_TEST: u32 = 1;
pub const BN_prime_checks_for_validation: u32 = 32;
pub const BN_prime_checks_for_generation: u32 = 0;
pub const BN_prime_checks: u32 = 32;
pub const BN_FLG_MALLOCED: u32 = 1;
pub const BN_FLG_STATIC_DATA: u32 = 2;
pub const BN_R_ARG2_LT_ARG3: u32 = 100;
pub const BN_R_BAD_RECIPROCAL: u32 = 101;
pub const BN_R_BIGNUM_TOO_LONG: u32 = 102;
pub const BN_R_BITS_TOO_SMALL: u32 = 103;
pub const BN_R_CALLED_WITH_EVEN_MODULUS: u32 = 104;
pub const BN_R_DIV_BY_ZERO: u32 = 105;
pub const BN_R_EXPAND_ON_STATIC_BIGNUM_DATA: u32 = 106;
pub const BN_R_INPUT_NOT_REDUCED: u32 = 107;
pub const BN_R_INVALID_RANGE: u32 = 108;
pub const BN_R_NEGATIVE_NUMBER: u32 = 109;
pub const BN_R_NOT_A_SQUARE: u32 = 110;
pub const BN_R_NOT_INITIALIZED: u32 = 111;
pub const BN_R_NO_INVERSE: u32 = 112;
pub const BN_R_PRIVATE_KEY_TOO_LARGE: u32 = 113;
pub const BN_R_P_IS_NOT_PRIME: u32 = 114;
pub const BN_R_TOO_MANY_ITERATIONS: u32 = 115;
pub const BN_R_TOO_MANY_TEMPORARY_VARIABLES: u32 = 116;
pub const BN_R_BAD_ENCODING: u32 = 117;
pub const BN_R_ENCODE_ERROR: u32 = 118;
pub const BN_R_INVALID_INPUT: u32 = 119;
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_MAX_UNIVERSAL: u32 = 255;
pub const V_ASN1_UNDEF: i32 = -1;
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_EOC: u32 = 0;
pub const V_ASN1_BOOLEAN: u32 = 1;
pub const V_ASN1_INTEGER: u32 = 2;
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_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 V_ASN1_NEG: u32 = 256;
pub const V_ASN1_NEG_INTEGER: u32 = 258;
pub const V_ASN1_NEG_ENUMERATED: u32 = 266;
pub const ASN1_STRING_FLAG_BITS_LEFT: u32 = 8;
pub const ASN1_STRING_FLAG_MSTRING: u32 = 64;
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_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_R_BAD_TEMPLATE: u32 = 193;
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_ITYPE_PRIMITIVE: u32 = 0;
pub const ASN1_ITYPE_SEQUENCE: u32 = 1;
pub const ASN1_ITYPE_CHOICE: u32 = 2;
pub const ASN1_ITYPE_EXTERN: u32 = 4;
pub const ASN1_ITYPE_MSTRING: u32 = 5;
pub const ASN1_AFLG_REFCOUNT: u32 = 1;
pub const ASN1_AFLG_ENCODING: u32 = 2;
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_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 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_SEQUENCE: u32 = 536870928;
pub const CBS_ASN1_SET: u32 = 536870929;
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 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_FLAG_NON_FIPS_ALLOW: u32 = 0;
pub const EVP_CIPH_CCM_MODE: i32 = -1;
pub const EVP_CIPH_OCB_MODE: i32 = -2;
pub const EVP_CIPH_WRAP_MODE: i32 = -3;
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_AEAD_SET_IVLEN: u32 = 9;
pub const EVP_CTRL_AEAD_GET_TAG: u32 = 16;
pub const EVP_CTRL_AEAD_SET_TAG: u32 = 17;
pub const EVP_CTRL_AEAD_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_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_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 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 SHA512_256_DIGEST_LENGTH: u32 = 32;
pub const RAND_MAX: u32 = 2147483647;
pub const OPENSSL_VERSION_TEXT: &'static [u8; 38usize] = b"OpenSSL 1.1.1 (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 X25519_PRIVATE_KEY_LEN: u32 = 32;
pub const X25519_PUBLIC_VALUE_LEN: u32 = 32;
pub const X25519_SHARED_KEY_LEN: u32 = 32;
pub const ED25519_PRIVATE_KEY_LEN: u32 = 64;
pub const ED25519_PUBLIC_KEY_LEN: u32 = 32;
pub const ED25519_SIGNATURE_LEN: u32 = 64;
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 EVP_MD_FLAG_XOF: u32 = 4;
pub const EVP_MD_CTX_FLAG_NON_FIPS_ALLOW: u32 = 0;
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 DSA_R_INVALID_PARAMETERS: u32 = 107;
pub const OPENSSL_EC_NAMED_CURVE: u32 = 0;
pub const OPENSSL_EC_EXPLICIT_CURVE: 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 EC_PKEY_NO_PARAMETERS: u32 = 1;
pub const EC_PKEY_NO_PUBKEY: u32 = 2;
pub const ECDSA_FLAG_OPAQUE: u32 = 1;
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 ECDH_R_UNKNOWN_DIGEST_LENGTH: u32 = 103;
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 SN_pbe_WithSHA1And128BitRC4: &'static [u8; 17usize] = b"PBE-SHA1-RC4-128\0";
pub const LN_pbe_WithSHA1And128BitRC4: &'static [u8; 24usize] = b"pbeWithSHA1And128BitRC4\0";
pub const NID_pbe_WithSHA1And128BitRC4: u32 = 144;
pub const SN_pbe_WithSHA1And40BitRC4: &'static [u8; 16usize] = b"PBE-SHA1-RC4-40\0";
pub const LN_pbe_WithSHA1And40BitRC4: &'static [u8; 23usize] = b"pbeWithSHA1And40BitRC4\0";
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 NID_CECPQ2: u32 = 959;
pub const NID_ED448: u32 = 960;
pub const NID_X448: u32 = 961;
pub const NID_sha512_256: u32 = 962;
pub const EVP_PKEY_NONE: u32 = 0;
pub const EVP_PKEY_RSA: u32 = 6;
pub const EVP_PKEY_RSA_PSS: u32 = 912;
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_X25519: u32 = 948;
pub const EVP_PKEY_DH: u32 = 28;
pub const EVP_PKEY_RSA2: u32 = 19;
pub const EVP_PKEY_X448: u32 = 961;
pub const EVP_PKEY_ED448: u32 = 960;
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 EVP_R_INVALID_PEER_KEY: u32 = 134;
pub const EVP_R_NOT_XOF_OR_INVALID_LENGTH: u32 = 135;
pub const EVP_R_EMPTY_PSK: u32 = 136;
pub const MD5_CBLOCK: u32 = 64;
pub const MD5_DIGEST_LENGTH: u32 = 16;
pub const RSA_PKCS1_PADDING: u32 = 1;
pub const RSA_NO_PADDING: u32 = 3;
pub const RSA_PKCS1_OAEP_PADDING: u32 = 4;
pub const RSA_PKCS1_PSS_PADDING: u32 = 6;
pub const RSA_FLAG_OPAQUE: u32 = 1;
pub const RSA_FLAG_NO_BLINDING: u32 = 8;
pub const RSA_FLAG_EXT_PKEY: u32 = 32;
pub const RSA_3: u32 = 3;
pub const RSA_F4: u32 = 65537;
pub const RSA_METHOD_FLAG_NO_CHECK: u32 = 1;
pub const RSA_R_BAD_ENCODING: u32 = 100;
pub const RSA_R_BAD_E_VALUE: u32 = 101;
pub const RSA_R_BAD_FIXED_HEADER_DECRYPT: u32 = 102;
pub const RSA_R_BAD_PAD_BYTE_COUNT: u32 = 103;
pub const RSA_R_BAD_RSA_PARAMETERS: u32 = 104;
pub const RSA_R_BAD_SIGNATURE: u32 = 105;
pub const RSA_R_BAD_VERSION: u32 = 106;
pub const RSA_R_BLOCK_TYPE_IS_NOT_01: u32 = 107;
pub const RSA_R_BN_NOT_INITIALIZED: u32 = 108;
pub const RSA_R_CANNOT_RECOVER_MULTI_PRIME_KEY: u32 = 109;
pub const RSA_R_CRT_PARAMS_ALREADY_GIVEN: u32 = 110;
pub const RSA_R_CRT_VALUES_INCORRECT: u32 = 111;
pub const RSA_R_DATA_LEN_NOT_EQUAL_TO_MOD_LEN: u32 = 112;
pub const RSA_R_DATA_TOO_LARGE: u32 = 113;
pub const RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE: u32 = 114;
pub const RSA_R_DATA_TOO_LARGE_FOR_MODULUS: u32 = 115;
pub const RSA_R_DATA_TOO_SMALL: u32 = 116;
pub const RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE: u32 = 117;
pub const RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY: u32 = 118;
pub const RSA_R_D_E_NOT_CONGRUENT_TO_1: u32 = 119;
pub const RSA_R_EMPTY_PUBLIC_KEY: u32 = 120;
pub const RSA_R_ENCODE_ERROR: u32 = 121;
pub const RSA_R_FIRST_OCTET_INVALID: u32 = 122;
pub const RSA_R_INCONSISTENT_SET_OF_CRT_VALUES: u32 = 123;
pub const RSA_R_INTERNAL_ERROR: u32 = 124;
pub const RSA_R_INVALID_MESSAGE_LENGTH: u32 = 125;
pub const RSA_R_KEY_SIZE_TOO_SMALL: u32 = 126;
pub const RSA_R_LAST_OCTET_INVALID: u32 = 127;
pub const RSA_R_MODULUS_TOO_LARGE: u32 = 128;
pub const RSA_R_MUST_HAVE_AT_LEAST_TWO_PRIMES: u32 = 129;
pub const RSA_R_NO_PUBLIC_EXPONENT: u32 = 130;
pub const RSA_R_NULL_BEFORE_BLOCK_MISSING: u32 = 131;
pub const RSA_R_N_NOT_EQUAL_P_Q: u32 = 132;
pub const RSA_R_OAEP_DECODING_ERROR: u32 = 133;
pub const RSA_R_ONLY_ONE_OF_P_Q_GIVEN: u32 = 134;
pub const RSA_R_OUTPUT_BUFFER_TOO_SMALL: u32 = 135;
pub const RSA_R_PADDING_CHECK_FAILED: u32 = 136;
pub const RSA_R_PKCS_DECODING_ERROR: u32 = 137;
pub const RSA_R_SLEN_CHECK_FAILED: u32 = 138;
pub const RSA_R_SLEN_RECOVERY_FAILED: u32 = 139;
pub const RSA_R_TOO_LONG: u32 = 140;
pub const RSA_R_TOO_MANY_ITERATIONS: u32 = 141;
pub const RSA_R_UNKNOWN_ALGORITHM_TYPE: u32 = 142;
pub const RSA_R_UNKNOWN_PADDING_TYPE: u32 = 143;
pub const RSA_R_VALUE_MISSING: u32 = 144;
pub const RSA_R_WRONG_SIGNATURE_LENGTH: u32 = 145;
pub const RSA_R_PUBLIC_KEY_VALIDATION_FAILED: u32 = 146;
pub const RSA_R_D_OUT_OF_RANGE: u32 = 147;
pub const RSA_R_BLOCK_TYPE_IS_NOT_02: u32 = 148;
pub const OPENSSL_NPN_UNSUPPORTED: u32 = 0;
pub const OPENSSL_NPN_NEGOTIATED: u32 = 1;
pub const OPENSSL_NPN_NO_OVERLAP: u32 = 2;
pub const SSL_TXT_RC4: &'static [u8; 4usize] = b"RC4\0";
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 size_t = ::std::os::raw::c_ulong;
pub type time_t = ::std::os::raw::c_long;
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;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct conf_st {
    _unused: [u8; 0],
}
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;
pub type HMAC_CTX = hmac_ctx_st;
pub type MD5_CTX = md5_state_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;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct pkcs8_priv_key_info_st {
    _unused: [u8; 0],
}
pub type PKCS8_PRIV_KEY_INFO = pkcs8_priv_key_info_st;
pub type RAND_METHOD = rand_meth_st;
pub type RC4_KEY = rc4_key_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_192_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_xchacha20_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_gcm_randnonce() -> *const EVP_AEAD;
}
extern "C" {
    pub fn EVP_aead_aes_256_gcm_randnonce() -> *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) -> size_t;
}
extern "C" {
    pub fn EVP_AEAD_nonce_length(aead: *const EVP_AEAD) -> size_t;
}
extern "C" {
    pub fn EVP_AEAD_max_overhead(aead: *const EVP_AEAD) -> size_t;
}
extern "C" {
    pub fn EVP_AEAD_max_tag_len(aead: *const EVP_AEAD) -> size_t;
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union evp_aead_ctx_st_state {
    pub opaque: [u8; 580usize],
    pub alignment: u64,
    _bindgen_union_align: [u64; 73usize],
}
#[test]
fn bindgen_test_layout_evp_aead_ctx_st_state() {
    assert_eq!(
        ::std::mem::size_of::<evp_aead_ctx_st_state>(),
        584usize,
        concat!("Size of: ", stringify!(evp_aead_ctx_st_state))
    );
    assert_eq!(
        ::std::mem::align_of::<evp_aead_ctx_st_state>(),
        8usize,
        concat!("Alignment of ", stringify!(evp_aead_ctx_st_state))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<evp_aead_ctx_st_state>())).opaque as *const _ as usize },
        0usize,
        concat!("Offset of field: ", stringify!(evp_aead_ctx_st_state), "::", stringify!(opaque))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<evp_aead_ctx_st_state>())).alignment as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(evp_aead_ctx_st_state),
            "::",
            stringify!(alignment)
        )
    );
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct evp_aead_ctx_st {
    pub aead: *const EVP_AEAD,
    pub state: evp_aead_ctx_st_state,
    pub tag_len: u8,
}
#[test]
fn bindgen_test_layout_evp_aead_ctx_st() {
    assert_eq!(
        ::std::mem::size_of::<evp_aead_ctx_st>(),
        600usize,
        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>())).state as *const _ as usize },
        8usize,
        concat!("Offset of field: ", stringify!(evp_aead_ctx_st), "::", stringify!(state))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<evp_aead_ctx_st>())).tag_len as *const _ as usize },
        592usize,
        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: size_t,
        tag_len: size_t,
    ) -> *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: size_t,
        tag_len: size_t,
        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 size_t,
        max_out_len: size_t,
        nonce: *const u8,
        nonce_len: size_t,
        in_: *const u8,
        in_len: size_t,
        ad: *const u8,
        ad_len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_AEAD_CTX_open(
        ctx: *const EVP_AEAD_CTX,
        out: *mut u8,
        out_len: *mut size_t,
        max_out_len: size_t,
        nonce: *const u8,
        nonce_len: size_t,
        in_: *const u8,
        in_len: size_t,
        ad: *const u8,
        ad_len: size_t,
    ) -> ::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 size_t,
        max_out_tag_len: size_t,
        nonce: *const u8,
        nonce_len: size_t,
        in_: *const u8,
        in_len: size_t,
        extra_in: *const u8,
        extra_in_len: size_t,
        ad: *const u8,
        ad_len: size_t,
    ) -> ::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: size_t,
        in_: *const u8,
        in_len: size_t,
        in_tag: *const u8,
        in_tag_len: size_t,
        ad: *const u8,
        ad_len: size_t,
    ) -> ::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 = ::std::os::raw::c_uint;
extern "C" {
    pub fn EVP_AEAD_CTX_init_with_direction(
        ctx: *mut EVP_AEAD_CTX,
        aead: *const EVP_AEAD,
        key: *const u8,
        key_len: size_t,
        tag_len: size_t,
        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 size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_AEAD_CTX_tag_len(
        ctx: *const EVP_AEAD_CTX,
        out_tag_len: *mut size_t,
        in_len: size_t,
        extra_in_len: size_t,
    ) -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct aes_key_st {
    pub rd_key: [u32; 60usize],
    pub rounds: ::std::os::raw::c_uint,
}
#[test]
fn bindgen_test_layout_aes_key_st() {
    assert_eq!(
        ::std::mem::size_of::<aes_key_st>(),
        244usize,
        concat!("Size of: ", stringify!(aes_key_st))
    );
    assert_eq!(
        ::std::mem::align_of::<aes_key_st>(),
        4usize,
        concat!("Alignment of ", stringify!(aes_key_st))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<aes_key_st>())).rd_key as *const _ as usize },
        0usize,
        concat!("Offset of field: ", stringify!(aes_key_st), "::", stringify!(rd_key))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<aes_key_st>())).rounds as *const _ as usize },
        240usize,
        concat!("Offset of field: ", stringify!(aes_key_st), "::", stringify!(rounds))
    );
}
pub type AES_KEY = aes_key_st;
extern "C" {
    pub fn AES_set_encrypt_key(
        key: *const u8,
        bits: ::std::os::raw::c_uint,
        aeskey: *mut AES_KEY,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn AES_set_decrypt_key(
        key: *const u8,
        bits: ::std::os::raw::c_uint,
        aeskey: *mut AES_KEY,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn AES_encrypt(in_: *const u8, out: *mut u8, key: *const AES_KEY);
}
extern "C" {
    pub fn AES_decrypt(in_: *const u8, out: *mut u8, key: *const AES_KEY);
}
extern "C" {
    pub fn AES_ctr128_encrypt(
        in_: *const u8,
        out: *mut u8,
        len: size_t,
        key: *const AES_KEY,
        ivec: *mut u8,
        ecount_buf: *mut u8,
        num: *mut ::std::os::raw::c_uint,
    );
}
extern "C" {
    pub fn AES_ecb_encrypt(
        in_: *const u8,
        out: *mut u8,
        key: *const AES_KEY,
        enc: ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn AES_cbc_encrypt(
        in_: *const u8,
        out: *mut u8,
        len: size_t,
        key: *const AES_KEY,
        ivec: *mut u8,
        enc: ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn AES_ofb128_encrypt(
        in_: *const u8,
        out: *mut u8,
        len: size_t,
        key: *const AES_KEY,
        ivec: *mut u8,
        num: *mut ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn AES_cfb128_encrypt(
        in_: *const u8,
        out: *mut u8,
        len: size_t,
        key: *const AES_KEY,
        ivec: *mut u8,
        num: *mut ::std::os::raw::c_int,
        enc: ::std::os::raw::c_int,
    );
}
extern "C" {
    pub fn AES_wrap_key(
        key: *const AES_KEY,
        iv: *const u8,
        out: *mut u8,
        in_: *const u8,
        in_len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn AES_unwrap_key(
        key: *const AES_KEY,
        iv: *const u8,
        out: *mut u8,
        in_: *const u8,
        in_len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn AES_wrap_key_padded(
        key: *const AES_KEY,
        out: *mut u8,
        out_len: *mut size_t,
        max_out: size_t,
        in_: *const u8,
        in_len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn AES_unwrap_key_padded(
        key: *const AES_KEY,
        out: *mut u8,
        out_len: *mut size_t,
        max_out: size_t,
        in_: *const u8,
        in_len: size_t,
    ) -> ::std::os::raw::c_int;
}
pub type va_list = __builtin_va_list;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct _IO_FILE {
    _unused: [u8; 0],
}
pub type FILE = _IO_FILE;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct buf_mem_st {
    pub length: size_t,
    pub data: *mut ::std::os::raw::c_char,
    pub max: size_t,
}
#[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: size_t,
    ) -> *mut ::std::os::raw::c_char;
}
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: size_t,
        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: ::std::os::raw::c_uint = 1;
pub const ERR_LIB_SYS: ::std::os::raw::c_uint = 2;
pub const ERR_LIB_BN: ::std::os::raw::c_uint = 3;
pub const ERR_LIB_RSA: ::std::os::raw::c_uint = 4;
pub const ERR_LIB_DH: ::std::os::raw::c_uint = 5;
pub const ERR_LIB_EVP: ::std::os::raw::c_uint = 6;
pub const ERR_LIB_BUF: ::std::os::raw::c_uint = 7;
pub const ERR_LIB_OBJ: ::std::os::raw::c_uint = 8;
pub const ERR_LIB_PEM: ::std::os::raw::c_uint = 9;
pub const ERR_LIB_DSA: ::std::os::raw::c_uint = 10;
pub const ERR_LIB_X509: ::std::os::raw::c_uint = 11;
pub const ERR_LIB_ASN1: ::std::os::raw::c_uint = 12;
pub const ERR_LIB_CONF: ::std::os::raw::c_uint = 13;
pub const ERR_LIB_CRYPTO: ::std::os::raw::c_uint = 14;
pub const ERR_LIB_EC: ::std::os::raw::c_uint = 15;
pub const ERR_LIB_SSL: ::std::os::raw::c_uint = 16;
pub const ERR_LIB_BIO: ::std::os::raw::c_uint = 17;
pub const ERR_LIB_PKCS7: ::std::os::raw::c_uint = 18;
pub const ERR_LIB_PKCS8: ::std::os::raw::c_uint = 19;
pub const ERR_LIB_X509V3: ::std::os::raw::c_uint = 20;
pub const ERR_LIB_RAND: ::std::os::raw::c_uint = 21;
pub const ERR_LIB_ENGINE: ::std::os::raw::c_uint = 22;
pub const ERR_LIB_OCSP: ::std::os::raw::c_uint = 23;
pub const ERR_LIB_UI: ::std::os::raw::c_uint = 24;
pub const ERR_LIB_COMP: ::std::os::raw::c_uint = 25;
pub const ERR_LIB_ECDSA: ::std::os::raw::c_uint = 26;
pub const ERR_LIB_ECDH: ::std::os::raw::c_uint = 27;
pub const ERR_LIB_HMAC: ::std::os::raw::c_uint = 28;
pub const ERR_LIB_DIGEST: ::std::os::raw::c_uint = 29;
pub const ERR_LIB_CIPHER: ::std::os::raw::c_uint = 30;
pub const ERR_LIB_HKDF: ::std::os::raw::c_uint = 31;
pub const ERR_LIB_TRUST_TOKEN: ::std::os::raw::c_uint = 32;
pub const ERR_LIB_USER: ::std::os::raw::c_uint = 33;
pub const ERR_NUM_LIBS: ::std::os::raw::c_uint = 34;
pub type _bindgen_ty_1 = ::std::os::raw::c_uint;
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(
            arg1: ::std::os::raw::c_int,
            arg2: ::std::os::raw::c_int,
            arg3: *const ::std::os::raw::c_char,
            arg4: ::std::os::raw::c_int,
        ),
    >;
}
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(
            arg1: *const ::std::os::raw::c_char,
            arg2: ::std::os::raw::c_int,
        ) -> *mut CRYPTO_dynlock_value,
    >;
}
extern "C" {
    pub fn CRYPTO_get_dynlock_lock_callback() -> ::std::option::Option<
        unsafe extern "C" fn(
            arg1: ::std::os::raw::c_int,
            arg2: *mut CRYPTO_dynlock_value,
            arg3: *const ::std::os::raw::c_char,
            arg4: ::std::os::raw::c_int,
        ),
    >;
}
extern "C" {
    pub fn CRYPTO_get_dynlock_destroy_callback() -> ::std::option::Option<
        unsafe extern "C" fn(
            arg1: *mut CRYPTO_dynlock_value,
            arg2: *const ::std::os::raw::c_char,
            arg3: ::std::os::raw::c_int,
        ),
    >;
}
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_write_all(
        bio: *mut BIO,
        data: *const ::std::os::raw::c_void,
        len: size_t,
    ) -> ::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_set_retry_reason(bio: *mut BIO, reason: ::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) -> size_t;
}
extern "C" {
    pub fn BIO_ctrl_pending(bio: *const BIO) -> size_t;
}
extern "C" {
    pub fn BIO_wpending(bio: *const BIO) -> size_t;
}
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) -> size_t;
}
extern "C" {
    pub fn BIO_number_written(bio: *const BIO) -> size_t;
}
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: size_t,
        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 size_t,
        max_len: size_t,
    ) -> ::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 size_t,
    ) -> ::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: size_t,
        out2: *mut *mut BIO,
        writebuf2: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BIO_ctrl_get_read_request(bio: *mut BIO) -> size_t;
}
extern "C" {
    pub fn BIO_ctrl_get_write_guarantee(bio: *mut BIO) -> size_t;
}
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: size_t,
    pub num_write: size_t,
}
#[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))
    );
}
extern "C" {
    pub fn BN_new() -> *mut BIGNUM;
}
extern "C" {
    pub fn BN_init(bn: *mut BIGNUM);
}
extern "C" {
    pub fn BN_free(bn: *mut BIGNUM);
}
extern "C" {
    pub fn BN_clear_free(bn: *mut BIGNUM);
}
extern "C" {
    pub fn BN_dup(src: *const BIGNUM) -> *mut BIGNUM;
}
extern "C" {
    pub fn BN_copy(dest: *mut BIGNUM, src: *const BIGNUM) -> *mut BIGNUM;
}
extern "C" {
    pub fn BN_clear(bn: *mut BIGNUM);
}
extern "C" {
    pub fn BN_value_one() -> *const BIGNUM;
}
extern "C" {
    pub fn BN_num_bits(bn: *const BIGNUM) -> ::std::os::raw::c_uint;
}
extern "C" {
    pub fn BN_num_bytes(bn: *const BIGNUM) -> ::std::os::raw::c_uint;
}
extern "C" {
    pub fn BN_zero(bn: *mut BIGNUM);
}
extern "C" {
    pub fn BN_one(bn: *mut BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_set_word(bn: *mut BIGNUM, value: u64) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_set_u64(bn: *mut BIGNUM, value: u64) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_set_negative(bn: *mut BIGNUM, sign: ::std::os::raw::c_int);
}
extern "C" {
    pub fn BN_is_negative(bn: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_bin2bn(in_: *const u8, len: size_t, ret: *mut BIGNUM) -> *mut BIGNUM;
}
extern "C" {
    pub fn BN_bn2bin(in_: *const BIGNUM, out: *mut u8) -> size_t;
}
extern "C" {
    pub fn BN_le2bn(in_: *const u8, len: size_t, ret: *mut BIGNUM) -> *mut BIGNUM;
}
extern "C" {
    pub fn BN_bn2le_padded(out: *mut u8, len: size_t, in_: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_bn2bin_padded(out: *mut u8, len: size_t, in_: *const BIGNUM)
        -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_bn2cbb_padded(
        out: *mut CBB,
        len: size_t,
        in_: *const BIGNUM,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_bn2hex(bn: *const BIGNUM) -> *mut ::std::os::raw::c_char;
}
extern "C" {
    pub fn BN_hex2bn(
        outp: *mut *mut BIGNUM,
        in_: *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_bn2dec(a: *const BIGNUM) -> *mut ::std::os::raw::c_char;
}
extern "C" {
    pub fn BN_dec2bn(
        outp: *mut *mut BIGNUM,
        in_: *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_asc2bn(
        outp: *mut *mut BIGNUM,
        in_: *const ::std::os::raw::c_char,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_print(bio: *mut BIO, a: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_print_fp(fp: *mut FILE, a: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_get_word(bn: *const BIGNUM) -> u64;
}
extern "C" {
    pub fn BN_get_u64(bn: *const BIGNUM, out: *mut u64) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_parse_asn1_unsigned(cbs: *mut CBS, ret: *mut BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_marshal_asn1(cbb: *mut CBB, bn: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_CTX_new() -> *mut BN_CTX;
}
extern "C" {
    pub fn BN_CTX_free(ctx: *mut BN_CTX);
}
extern "C" {
    pub fn BN_CTX_start(ctx: *mut BN_CTX);
}
extern "C" {
    pub fn BN_CTX_get(ctx: *mut BN_CTX) -> *mut BIGNUM;
}
extern "C" {
    pub fn BN_CTX_end(ctx: *mut BN_CTX);
}
extern "C" {
    pub fn BN_add(r: *mut BIGNUM, a: *const BIGNUM, b: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_uadd(r: *mut BIGNUM, a: *const BIGNUM, b: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_add_word(a: *mut BIGNUM, w: u64) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_sub(r: *mut BIGNUM, a: *const BIGNUM, b: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_usub(r: *mut BIGNUM, a: *const BIGNUM, b: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_sub_word(a: *mut BIGNUM, w: u64) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mul(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        b: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mul_word(bn: *mut BIGNUM, w: u64) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_sqr(r: *mut BIGNUM, a: *const BIGNUM, ctx: *mut BN_CTX) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_div(
        quotient: *mut BIGNUM,
        rem: *mut BIGNUM,
        numerator: *const BIGNUM,
        divisor: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_div_word(numerator: *mut BIGNUM, divisor: u64) -> u64;
}
extern "C" {
    pub fn BN_sqrt(
        out_sqrt: *mut BIGNUM,
        in_: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_cmp(a: *const BIGNUM, b: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_cmp_word(a: *const BIGNUM, b: u64) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_ucmp(a: *const BIGNUM, b: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_equal_consttime(a: *const BIGNUM, b: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_abs_is_word(bn: *const BIGNUM, w: u64) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_is_zero(bn: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_is_one(bn: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_is_word(bn: *const BIGNUM, w: u64) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_is_odd(bn: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_is_pow2(a: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_lshift(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        n: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_lshift1(r: *mut BIGNUM, a: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_rshift(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        n: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_rshift1(r: *mut BIGNUM, a: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_set_bit(a: *mut BIGNUM, n: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_clear_bit(a: *mut BIGNUM, n: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_is_bit_set(a: *const BIGNUM, n: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mask_bits(a: *mut BIGNUM, n: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_count_low_zero_bits(bn: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_word(a: *const BIGNUM, w: u64) -> u64;
}
extern "C" {
    pub fn BN_mod_pow2(r: *mut BIGNUM, a: *const BIGNUM, e: size_t) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_nnmod_pow2(r: *mut BIGNUM, a: *const BIGNUM, e: size_t) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_nnmod(
        rem: *mut BIGNUM,
        numerator: *const BIGNUM,
        divisor: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_add(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        b: *const BIGNUM,
        m: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_add_quick(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        b: *const BIGNUM,
        m: *const BIGNUM,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_sub(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        b: *const BIGNUM,
        m: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_sub_quick(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        b: *const BIGNUM,
        m: *const BIGNUM,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_mul(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        b: *const BIGNUM,
        m: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_sqr(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        m: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_lshift(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        n: ::std::os::raw::c_int,
        m: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_lshift_quick(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        n: ::std::os::raw::c_int,
        m: *const BIGNUM,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_lshift1(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        m: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_lshift1_quick(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        m: *const BIGNUM,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_sqrt(
        in_: *mut BIGNUM,
        a: *const BIGNUM,
        p: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> *mut BIGNUM;
}
extern "C" {
    pub fn BN_rand(
        rnd: *mut BIGNUM,
        bits: ::std::os::raw::c_int,
        top: ::std::os::raw::c_int,
        bottom: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_pseudo_rand(
        rnd: *mut BIGNUM,
        bits: ::std::os::raw::c_int,
        top: ::std::os::raw::c_int,
        bottom: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_rand_range(rnd: *mut BIGNUM, range: *const BIGNUM) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_rand_range_ex(
        r: *mut BIGNUM,
        min_inclusive: u64,
        max_exclusive: *const BIGNUM,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_pseudo_rand_range(rnd: *mut BIGNUM, range: *const BIGNUM) -> ::std::os::raw::c_int;
}
#[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))
    );
}
extern "C" {
    pub fn BN_GENCB_set(
        callback: *mut BN_GENCB,
        f: ::std::option::Option<
            unsafe extern "C" fn(
                event: ::std::os::raw::c_int,
                n: ::std::os::raw::c_int,
                arg1: *mut BN_GENCB,
            ) -> ::std::os::raw::c_int,
        >,
        arg: *mut ::std::os::raw::c_void,
    );
}
extern "C" {
    pub fn BN_GENCB_call(
        callback: *mut BN_GENCB,
        event: ::std::os::raw::c_int,
        n: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_generate_prime_ex(
        ret: *mut BIGNUM,
        bits: ::std::os::raw::c_int,
        safe: ::std::os::raw::c_int,
        add: *const BIGNUM,
        rem: *const BIGNUM,
        cb: *mut BN_GENCB,
    ) -> ::std::os::raw::c_int;
}
pub const bn_primality_result_t_bn_probably_prime: bn_primality_result_t = 0;
pub const bn_primality_result_t_bn_composite: bn_primality_result_t = 1;
pub const bn_primality_result_t_bn_non_prime_power_composite: bn_primality_result_t = 2;
pub type bn_primality_result_t = ::std::os::raw::c_uint;
extern "C" {
    pub fn BN_enhanced_miller_rabin_primality_test(
        out_result: *mut bn_primality_result_t,
        w: *const BIGNUM,
        checks: ::std::os::raw::c_int,
        ctx: *mut BN_CTX,
        cb: *mut BN_GENCB,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_primality_test(
        is_probably_prime: *mut ::std::os::raw::c_int,
        candidate: *const BIGNUM,
        checks: ::std::os::raw::c_int,
        ctx: *mut BN_CTX,
        do_trial_division: ::std::os::raw::c_int,
        cb: *mut BN_GENCB,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_is_prime_fasttest_ex(
        candidate: *const BIGNUM,
        checks: ::std::os::raw::c_int,
        ctx: *mut BN_CTX,
        do_trial_division: ::std::os::raw::c_int,
        cb: *mut BN_GENCB,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_is_prime_ex(
        candidate: *const BIGNUM,
        checks: ::std::os::raw::c_int,
        ctx: *mut BN_CTX,
        cb: *mut BN_GENCB,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_gcd(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        b: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_inverse(
        out: *mut BIGNUM,
        a: *const BIGNUM,
        n: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> *mut BIGNUM;
}
extern "C" {
    pub fn BN_mod_inverse_blinded(
        out: *mut BIGNUM,
        out_no_inverse: *mut ::std::os::raw::c_int,
        a: *const BIGNUM,
        mont: *const BN_MONT_CTX,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_inverse_odd(
        out: *mut BIGNUM,
        out_no_inverse: *mut ::std::os::raw::c_int,
        a: *const BIGNUM,
        n: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_MONT_CTX_new_for_modulus(mod_: *const BIGNUM, ctx: *mut BN_CTX) -> *mut BN_MONT_CTX;
}
extern "C" {
    pub fn BN_MONT_CTX_new_consttime(mod_: *const BIGNUM, ctx: *mut BN_CTX) -> *mut BN_MONT_CTX;
}
extern "C" {
    pub fn BN_MONT_CTX_free(mont: *mut BN_MONT_CTX);
}
extern "C" {
    pub fn BN_MONT_CTX_copy(to: *mut BN_MONT_CTX, from: *const BN_MONT_CTX) -> *mut BN_MONT_CTX;
}
extern "C" {
    pub fn BN_MONT_CTX_set_locked(
        pmont: *mut *mut BN_MONT_CTX,
        lock: *mut CRYPTO_MUTEX,
        mod_: *const BIGNUM,
        bn_ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_to_montgomery(
        ret: *mut BIGNUM,
        a: *const BIGNUM,
        mont: *const BN_MONT_CTX,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_from_montgomery(
        ret: *mut BIGNUM,
        a: *const BIGNUM,
        mont: *const BN_MONT_CTX,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_mul_montgomery(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        b: *const BIGNUM,
        mont: *const BN_MONT_CTX,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_exp(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        p: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_exp(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        p: *const BIGNUM,
        m: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_exp_mont(
        r: *mut BIGNUM,
        a: *const BIGNUM,
        p: *const BIGNUM,
        m: *const BIGNUM,
        ctx: *mut BN_CTX,
        mont: *const BN_MONT_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_exp_mont_consttime(
        rr: *mut BIGNUM,
        a: *const BIGNUM,
        p: *const BIGNUM,
        m: *const BIGNUM,
        ctx: *mut BN_CTX,
        mont: *const BN_MONT_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_bn2mpi(in_: *const BIGNUM, out: *mut u8) -> size_t;
}
extern "C" {
    pub fn BN_mpi2bn(in_: *const u8, len: size_t, out: *mut BIGNUM) -> *mut BIGNUM;
}
extern "C" {
    pub fn BN_mod_exp_mont_word(
        r: *mut BIGNUM,
        a: u64,
        p: *const BIGNUM,
        m: *const BIGNUM,
        ctx: *mut BN_CTX,
        mont: *const BN_MONT_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_mod_exp2_mont(
        r: *mut BIGNUM,
        a1: *const BIGNUM,
        p1: *const BIGNUM,
        a2: *const BIGNUM,
        p2: *const BIGNUM,
        m: *const BIGNUM,
        ctx: *mut BN_CTX,
        mont: *const BN_MONT_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_MONT_CTX_new() -> *mut BN_MONT_CTX;
}
extern "C" {
    pub fn BN_MONT_CTX_set(
        mont: *mut BN_MONT_CTX,
        mod_: *const BIGNUM,
        ctx: *mut BN_CTX,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_bn2binpad(
        in_: *const BIGNUM,
        out: *mut u8,
        len: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
#[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))
    );
}
extern "C" {
    pub fn BN_num_bits_word(l: u64) -> ::std::os::raw::c_uint;
}
#[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))
    );
}
extern "C" {
    pub fn ASN1_STRING_type_new(type_: ::std::os::raw::c_int) -> *mut ASN1_STRING;
}
extern "C" {
    pub fn ASN1_STRING_new() -> *mut ASN1_STRING;
}
extern "C" {
    pub fn ASN1_STRING_free(str_: *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(str_: *const ASN1_STRING) -> *mut ASN1_STRING;
}
extern "C" {
    pub fn ASN1_STRING_type(str_: *const ASN1_STRING) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn ASN1_STRING_get0_data(str_: *const ASN1_STRING) -> *const ::std::os::raw::c_uchar;
}
extern "C" {
    pub fn ASN1_STRING_data(str_: *mut ASN1_STRING) -> *mut ::std::os::raw::c_uchar;
}
extern "C" {
    pub fn ASN1_STRING_length(str_: *const ASN1_STRING) -> ::std::os::raw::c_int;
}
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,
    );
}
#[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_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 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" {
    pub static ASN1_SEQUENCE_ANY_it: ASN1_ITEM;
}
extern "C" {
    pub static 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" {
    pub static ASN1_ANY_it: ASN1_ITEM;
}
extern "C" {
    pub fn ASN1_TYPE_get(a: *const 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" {
    pub static ASN1_OBJECT_it: ASN1_ITEM;
}
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" {
    pub static 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: *const ASN1_BIT_STRING,
        n: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn ASN1_BIT_STRING_check(
        a: *const 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" {
    pub static 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" {
    pub static 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" {
    pub static 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" {
    pub static 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" {
    pub static 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" {
    pub static 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" {
    pub static 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" {
    pub static 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" {
    pub static 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" {
    pub static 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" {
    pub static 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" {
    pub static 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" {
    pub static 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" {
    pub static 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" {
    pub static 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" {
    pub static ASN1_TIME_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: *const ASN1_TIME) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn ASN1_TIME_to_generalizedtime(
        t: *const 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 BN_to_ASN1_INTEGER(bn: *const BIGNUM, ai: *mut ASN1_INTEGER) -> *mut ASN1_INTEGER;
}
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: *const ASN1_ENUMERATED) -> ::std::os::raw::c_long;
}
extern "C" {
    pub fn BN_to_ASN1_ENUMERATED(
        bn: *const BIGNUM,
        ai: *mut ASN1_ENUMERATED,
    ) -> *mut ASN1_ENUMERATED;
}
extern "C" {
    pub fn ASN1_ENUMERATED_to_BN(ai: *const 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_item_dup(
        it: *const ASN1_ITEM,
        x: *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_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_: *const 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_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_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_: *const 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: *const 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_generate_nconf(
        str_: *const ::std::os::raw::c_char,
        nconf: *mut CONF,
    ) -> *mut ASN1_TYPE;
}
extern "C" {
    pub fn ASN1_generate_v3(
        str_: *const ::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,
>;
#[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;
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;
extern "C" {
    pub static ASN1_BOOLEAN_it: ASN1_ITEM;
}
extern "C" {
    pub static ASN1_TBOOLEAN_it: ASN1_ITEM;
}
extern "C" {
    pub static ASN1_FBOOLEAN_it: ASN1_ITEM;
}
extern "C" {
    pub static ASN1_SEQUENCE_it: ASN1_ITEM;
}
extern "C" {
    pub fn EVP_EncodeBlock(dst: *mut u8, src: *const u8, src_len: size_t) -> size_t;
}
extern "C" {
    pub fn EVP_EncodedLength(out_len: *mut size_t, len: size_t) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_DecodedLength(out_len: *mut size_t, len: size_t) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_DecodeBase64(
        out: *mut u8,
        out_len: *mut size_t,
        max_out: size_t,
        in_: *const u8,
        in_len: size_t,
    ) -> ::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: size_t,
    );
}
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: size_t,
    ) -> ::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: size_t) -> ::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: size_t,
}
#[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: size_t);
}
extern "C" {
    pub fn CBS_skip(cbs: *mut CBS, len: size_t) -> ::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) -> size_t;
}
extern "C" {
    pub fn CBS_stow(
        cbs: *const CBS,
        out_ptr: *mut *mut u8,
        out_len: *mut size_t,
    ) -> ::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: size_t) -> ::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_u16le(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_u32le(cbs: *mut CBS, out: *mut u32) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn CBS_get_u64(cbs: *mut CBS, out: *mut u64) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn CBS_get_u64le(cbs: *mut CBS, out: *mut u64) -> ::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: size_t) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn CBS_copy_bytes(cbs: *mut CBS, out: *mut u8, len: size_t) -> ::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 size_t,
    ) -> ::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 size_t,
        out_ber_found: *mut ::std::os::raw::c_int,
    ) -> ::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_int64(cbs: *mut CBS, out: *mut i64) -> ::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_is_valid_asn1_integer(
        cbs: *const CBS,
        out_is_negative: *mut ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn CBS_is_unsigned_asn1_integer(cbs: *const CBS) -> ::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: size_t,
    pub cap: size_t,
    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: size_t,
    pub pending_len_len: u8,
    pub pending_is_asn1: ::std::os::raw::c_char,
    pub is_child: ::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_child as *const _ as usize },
        26usize,
        concat!("Offset of field: ", stringify!(cbb_st), "::", stringify!(is_child))
    );
}
extern "C" {
    pub fn CBB_zero(cbb: *mut CBB);
}
extern "C" {
    pub fn CBB_init(cbb: *mut CBB, initial_capacity: size_t) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn CBB_init_fixed(cbb: *mut CBB, buf: *mut u8, len: size_t) -> ::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 size_t,
    ) -> ::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) -> size_t;
}
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: size_t) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn CBB_add_space(
        cbb: *mut CBB,
        out_data: *mut *mut u8,
        len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn CBB_reserve(cbb: *mut CBB, out_data: *mut *mut u8, len: size_t)
        -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn CBB_did_write(cbb: *mut CBB, len: size_t) -> ::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_u16le(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_add_u32le(cbb: *mut CBB, value: u32) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn CBB_add_u64(cbb: *mut CBB, value: u64) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn CBB_add_u64le(cbb: *mut CBB, value: u64) -> ::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_int64(cbb: *mut CBB, value: i64) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn CBB_add_asn1_octet_string(
        cbb: *mut CBB,
        data: *const u8,
        data_len: size_t,
    ) -> ::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: size_t,
    ) -> ::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: size_t, 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: size_t,
        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: size_t,
        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: size_t,
        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) -> ::std::os::raw::c_int;
}
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: size_t,
    ) -> ::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: size_t,
        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_des_ede3_ecb() -> *const EVP_CIPHER;
}
extern "C" {
    pub fn EVP_aes_128_cfb128() -> *const EVP_CIPHER;
}
extern "C" {
    pub fn EVP_aes_128_cfb() -> *const EVP_CIPHER;
}
extern "C" {
    pub fn EVP_aes_192_cfb128() -> *const EVP_CIPHER;
}
extern "C" {
    pub fn EVP_aes_192_cfb() -> *const EVP_CIPHER;
}
extern "C" {
    pub fn EVP_aes_256_cfb128() -> *const EVP_CIPHER;
}
extern "C" {
    pub fn EVP_aes_256_cfb() -> *const EVP_CIPHER;
}
extern "C" {
    pub fn EVP_bf_ecb() -> *const EVP_CIPHER;
}
extern "C" {
    pub fn EVP_bf_cbc() -> *const EVP_CIPHER;
}
extern "C" {
    pub fn EVP_bf_cfb() -> *const EVP_CIPHER;
}
extern "C" {
    pub fn EVP_cast5_ecb() -> *const EVP_CIPHER;
}
extern "C" {
    pub fn EVP_cast5_cbc() -> *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: size_t,
        ) -> ::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))
    );
}
extern "C" {
    pub fn AES_CMAC(
        out: *mut u8,
        key: *const u8,
        key_len: size_t,
        in_: *const u8,
        in_len: size_t,
    ) -> ::std::os::raw::c_int;
}
#[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" {
    pub static mut OPENSSL_ia32cap_P: [u32; 4usize];
}
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: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn SHA1_Final(out: *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: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn SHA224_Final(out: *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: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn SHA256_Final(out: *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: size_t);
}
#[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: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn SHA384_Final(out: *mut u8, sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
}
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: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn SHA512_Final(out: *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 p: [u8; 128usize],
    pub num: ::std::os::raw::c_uint,
    pub md_len: ::std::os::raw::c_uint,
}
#[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>())).p as *const _ as usize },
        80usize,
        concat!("Offset of field: ", stringify!(sha512_state_st), "::", stringify!(p))
    );
    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))
    );
}
extern "C" {
    pub fn SHA512_256_Init(sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn SHA512_256_Update(
        sha: *mut SHA512_CTX,
        data: *const ::std::os::raw::c_void,
        len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn SHA512_256_Final(out: *mut u8, sha: *mut SHA512_CTX) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn SHA512_256(data: *const u8, len: size_t, out: *mut u8) -> *mut u8;
}
extern "C" {
    pub fn OPENSSL_malloc(size: size_t) -> *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: size_t,
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    pub fn OPENSSL_cleanse(ptr: *mut ::std::os::raw::c_void, len: size_t);
}
extern "C" {
    pub fn CRYPTO_memcmp(
        a: *const ::std::os::raw::c_void,
        b: *const ::std::os::raw::c_void,
        len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn OPENSSL_hash32(ptr: *const ::std::os::raw::c_void, len: size_t) -> 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: size_t) -> size_t;
}
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: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BIO_snprintf(
        buf: *mut ::std::os::raw::c_char,
        n: size_t,
        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: size_t,
        format: *const ::std::os::raw::c_char,
        args: *mut __va_list_tag,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn OPENSSL_strndup(
        str_: *const ::std::os::raw::c_char,
        size: size_t,
    ) -> *mut ::std::os::raw::c_char;
}
extern "C" {
    pub fn OPENSSL_memdup(
        data: *const ::std::os::raw::c_void,
        size: size_t,
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    pub fn OPENSSL_strlcpy(
        dst: *mut ::std::os::raw::c_char,
        src: *const ::std::os::raw::c_char,
        dst_size: size_t,
    ) -> size_t;
}
extern "C" {
    pub fn OPENSSL_strlcat(
        dst: *mut ::std::os::raw::c_char,
        src: *const ::std::os::raw::c_char,
        dst_size: size_t,
    ) -> size_t;
}
extern "C" {
    pub fn OPENSSL_clear_free(ptr: *mut ::std::os::raw::c_void, len: size_t);
}
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_pre_sandbox_init();
}
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;
}
extern "C" {
    pub fn OPENSSL_cleanup();
}
extern "C" {
    pub fn X25519_keypair(out_public_value: *mut u8, out_private_key: *mut u8);
}
extern "C" {
    pub fn X25519_public_from_private(out_public_value: *mut u8, private_key: *const u8);
}
extern "C" {
    pub fn ED25519_keypair(out_public_key: *mut u8, out_private_key: *mut u8);
}
extern "C" {
    pub fn ED25519_sign(
        out_sig: *mut u8,
        message: *const u8,
        message_len: size_t,
        private_key: *const u8,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn ED25519_verify(
        message: *const u8,
        message_len: size_t,
        signature: *const u8,
        public_key: *const u8,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn ED25519_keypair_from_seed(
        out_public_key: *mut u8,
        out_private_key: *mut u8,
        seed: *const u8,
    );
}
#[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: size_t,
        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: size_t,
        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: size_t,
        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_pub_key(dh: *const DH) -> *const BIGNUM;
}
extern "C" {
    pub fn DH_get0_priv_key(dh: *const DH) -> *const BIGNUM;
}
extern "C" {
    pub fn DH_get0_p(dh: *const DH) -> *const BIGNUM;
}
extern "C" {
    pub fn DH_get0_q(dh: *const DH) -> *const BIGNUM;
}
extern "C" {
    pub fn DH_get0_g(dh: *const DH) -> *const BIGNUM;
}
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_set_length(dh: *mut DH, priv_length: ::std::os::raw::c_uint)
        -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn BN_get_rfc3526_prime_1536(ret: *mut BIGNUM) -> *mut BIGNUM;
}
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_compute_key_hashed(
        dh: *mut DH,
        out: *mut u8,
        out_len: *mut size_t,
        max_out_len: size_t,
        peers_key: *const BIGNUM,
        digest: *const EVP_MD,
    ) -> ::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_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,
}
#[test]
fn bindgen_test_layout_dh_st() {
    assert_eq!(::std::mem::size_of::<dh_st>(), 152usize, 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))
    );
}
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_sha512_256() -> *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: size_t,
    ) -> ::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: size_t,
        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) -> size_t;
}
extern "C" {
    pub fn EVP_MD_block_size(md: *const EVP_MD) -> size_t;
}
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) -> size_t;
}
extern "C" {
    pub fn EVP_MD_CTX_block_size(ctx: *const EVP_MD_CTX) -> size_t;
}
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);
}
extern "C" {
    pub fn EVP_DigestFinalXOF(
        ctx: *mut EVP_MD_CTX,
        out: *mut u8,
        len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_MD_meth_get_flags(md: *const EVP_MD) -> u32;
}
extern "C" {
    pub fn EVP_MD_CTX_set_flags(ctx: *mut EVP_MD_CTX, flags: ::std::os::raw::c_int);
}
#[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_pub_key(dsa: *const DSA) -> *const BIGNUM;
}
extern "C" {
    pub fn DSA_get0_priv_key(dsa: *const DSA) -> *const BIGNUM;
}
extern "C" {
    pub fn DSA_get0_p(dsa: *const DSA) -> *const BIGNUM;
}
extern "C" {
    pub fn DSA_get0_q(dsa: *const DSA) -> *const BIGNUM;
}
extern "C" {
    pub fn DSA_get0_g(dsa: *const DSA) -> *const BIGNUM;
}
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: size_t,
        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: size_t, dsa: *const DSA) -> *mut DSA_SIG;
}
extern "C" {
    pub fn DSA_do_verify(
        digest: *const u8,
        digest_len: size_t,
        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: size_t,
        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: size_t,
        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: size_t,
        sig: *const u8,
        sig_len: size_t,
        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: size_t,
        sig: *const u8,
        sig_len: size_t,
        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 = ::std::os::raw::c_uint;
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_order_bits(group: *const EC_GROUP) -> ::std::os::raw::c_int;
}
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_curve_nist2nid(name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
}
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_get_affine_coordinates(
        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_set_affine_coordinates(
        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: size_t,
        ctx: *mut BN_CTX,
    ) -> size_t;
}
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: size_t,
        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: size_t,
    ) -> size_t;
}
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, priv_: *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: *const BIGNUM,
        y: *const BIGNUM,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EC_KEY_key2buf(
        key: *const EC_KEY,
        form: point_conversion_form_t,
        out_buf: *mut *mut ::std::os::raw::c_uchar,
        ctx: *mut BN_CTX,
    ) -> size_t;
}
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_derive_from_secret(
        group: *const EC_GROUP,
        secret: *const u8,
        secret_len: size_t,
    ) -> *mut EC_KEY;
}
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) -> size_t>,
    pub sign: ::std::option::Option<
        unsafe extern "C" fn(
            digest: *const u8,
            digest_len: size_t,
            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: size_t,
        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: size_t,
                out: *mut ::std::os::raw::c_void,
                outlen: *mut size_t,
            ) -> *mut ::std::os::raw::c_void,
        >,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn ECDH_compute_key_fips(
        out: *mut u8,
        out_len: size_t,
        pub_key: *const EC_POINT,
        priv_key: *const EC_KEY,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn ECDSA_sign(
        type_: ::std::os::raw::c_int,
        digest: *const u8,
        digest_len: size_t,
        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: size_t,
        sig: *const u8,
        sig_len: size_t,
        key: *const EC_KEY,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn ECDSA_size(key: *const EC_KEY) -> size_t;
}
#[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_r(sig: *const ECDSA_SIG) -> *const BIGNUM;
}
extern "C" {
    pub fn ECDSA_SIG_get0_s(sig: *const ECDSA_SIG) -> *const BIGNUM;
}
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: size_t,
        key: *const EC_KEY,
    ) -> *mut ECDSA_SIG;
}
extern "C" {
    pub fn ECDSA_do_verify(
        digest: *const u8,
        digest_len: size_t,
        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: size_t) -> *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 size_t,
        sig: *const ECDSA_SIG,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn ECDSA_SIG_max_len(order_len: size_t) -> size_t;
}
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: *const 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: *const EVP_PKEY) -> *mut RSA;
}
extern "C" {
    pub fn EVP_PKEY_get1_RSA(pkey: *const 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: *const EVP_PKEY) -> *mut DSA;
}
extern "C" {
    pub fn EVP_PKEY_get1_DSA(pkey: *const 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: *const EVP_PKEY) -> *mut EC_KEY;
}
extern "C" {
    pub fn EVP_PKEY_get1_EC_KEY(pkey: *const EVP_PKEY) -> *mut EC_KEY;
}
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_PKEY_new_raw_private_key(
        type_: ::std::os::raw::c_int,
        unused: *mut ENGINE,
        in_: *const u8,
        len: size_t,
    ) -> *mut EVP_PKEY;
}
extern "C" {
    pub fn EVP_PKEY_new_raw_public_key(
        type_: ::std::os::raw::c_int,
        unused: *mut ENGINE,
        in_: *const u8,
        len: size_t,
    ) -> *mut EVP_PKEY;
}
extern "C" {
    pub fn EVP_PKEY_get_raw_private_key(
        pkey: *const EVP_PKEY,
        out: *mut u8,
        out_len: *mut size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_PKEY_get_raw_public_key(
        pkey: *const EVP_PKEY,
        out: *mut u8,
        out_len: *mut size_t,
    ) -> ::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: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_DigestSignFinal(
        ctx: *mut EVP_MD_CTX,
        out_sig: *mut u8,
        out_sig_len: *mut size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_DigestSign(
        ctx: *mut EVP_MD_CTX,
        out_sig: *mut u8,
        out_sig_len: *mut size_t,
        data: *const u8,
        data_len: size_t,
    ) -> ::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: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_DigestVerifyFinal(
        ctx: *mut EVP_MD_CTX,
        sig: *const u8,
        sig_len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_DigestVerify(
        ctx: *mut EVP_MD_CTX,
        sig: *const u8,
        sig_len: size_t,
        data: *const u8,
        len: size_t,
    ) -> ::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: size_t,
    ) -> ::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: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_VerifyFinal(
        ctx: *mut EVP_MD_CTX,
        sig: *const u8,
        sig_len: size_t,
        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 PKCS5_PBKDF2_HMAC(
        password: *const ::std::os::raw::c_char,
        password_len: size_t,
        salt: *const u8,
        salt_len: size_t,
        iterations: ::std::os::raw::c_uint,
        digest: *const EVP_MD,
        key_len: size_t,
        out_key: *mut u8,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn PKCS5_PBKDF2_HMAC_SHA1(
        password: *const ::std::os::raw::c_char,
        password_len: size_t,
        salt: *const u8,
        salt_len: size_t,
        iterations: ::std::os::raw::c_uint,
        key_len: size_t,
        out_key: *mut u8,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_PBE_scrypt(
        password: *const ::std::os::raw::c_char,
        password_len: size_t,
        salt: *const u8,
        salt_len: size_t,
        N: u64,
        r: u64,
        p: u64,
        max_mem: size_t,
        out_key: *mut u8,
        key_len: size_t,
    ) -> ::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 size_t,
        digest: *const u8,
        digest_len: size_t,
    ) -> ::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: size_t,
        digest: *const u8,
        digest_len: size_t,
    ) -> ::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 size_t,
        in_: *const u8,
        in_len: size_t,
    ) -> ::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 size_t,
        in_: *const u8,
        in_len: size_t,
    ) -> ::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 size_t,
        sig: *const u8,
        siglen: size_t,
    ) -> ::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 size_t,
    ) -> ::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,
        out_pkey: *mut *mut EVP_PKEY,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_PKEY_paramgen_init(ctx: *mut EVP_PKEY_CTX) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_PKEY_paramgen(
        ctx: *mut EVP_PKEY_CTX,
        out_pkey: *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: size_t,
    ) -> ::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 EVP_PKEY_CTX_set_ec_paramgen_curve_nid(
        ctx: *mut EVP_PKEY_CTX,
        nid: ::std::os::raw::c_int,
    ) -> ::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: *const EVP_PKEY) -> *mut DH;
}
extern "C" {
    pub fn EVP_PKEY_get1_DH(pkey: *const EVP_PKEY) -> *mut DH;
}
extern "C" {
    pub fn EVP_PKEY_CTX_set_ec_param_enc(
        ctx: *mut EVP_PKEY_CTX,
        encoding: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_PKEY_set1_tls_encodedpoint(
        pkey: *mut EVP_PKEY,
        in_: *const u8,
        len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_PKEY_get1_tls_encodedpoint(pkey: *const EVP_PKEY, out_ptr: *mut *mut u8) -> size_t;
}
extern "C" {
    pub fn EVP_PKEY_base_id(pkey: *const EVP_PKEY) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_PKEY_CTX_set_rsa_pss_keygen_md(
        ctx: *mut EVP_PKEY_CTX,
        md: *const EVP_MD,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn EVP_PKEY_CTX_set_rsa_pss_keygen_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_set_rsa_pss_keygen_mgf1_md(
        ctx: *mut EVP_PKEY_CTX,
        md: *const EVP_MD,
    ) -> ::std::os::raw::c_int;
}
#[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 HMAC_CTX_init(ctx: *mut HMAC_CTX);
}
extern "C" {
    pub fn HMAC_CTX_new() -> *mut HMAC_CTX;
}
extern "C" {
    pub fn HMAC_CTX_cleanup(ctx: *mut HMAC_CTX);
}
extern "C" {
    pub fn HMAC_CTX_free(ctx: *mut HMAC_CTX);
}
extern "C" {
    pub fn HMAC_Init_ex(
        ctx: *mut HMAC_CTX,
        key: *const ::std::os::raw::c_void,
        key_len: size_t,
        md: *const EVP_MD,
        impl_: *mut ENGINE,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn HMAC_Update(
        ctx: *mut HMAC_CTX,
        data: *const u8,
        data_len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn HMAC_Final(
        ctx: *mut HMAC_CTX,
        out: *mut u8,
        out_len: *mut ::std::os::raw::c_uint,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn HMAC_size(ctx: *const HMAC_CTX) -> size_t;
}
extern "C" {
    pub fn HMAC_CTX_copy_ex(dest: *mut HMAC_CTX, src: *const HMAC_CTX) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn HMAC_CTX_reset(ctx: *mut HMAC_CTX);
}
extern "C" {
    pub fn HMAC_Init(
        ctx: *mut HMAC_CTX,
        key: *const ::std::os::raw::c_void,
        key_len: ::std::os::raw::c_int,
        md: *const EVP_MD,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn HMAC_CTX_copy(dest: *mut HMAC_CTX, src: *const HMAC_CTX) -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct hmac_ctx_st {
    pub md: *const EVP_MD,
    pub md_ctx: EVP_MD_CTX,
    pub i_ctx: EVP_MD_CTX,
    pub o_ctx: EVP_MD_CTX,
}
#[test]
fn bindgen_test_layout_hmac_ctx_st() {
    assert_eq!(
        ::std::mem::size_of::<hmac_ctx_st>(),
        104usize,
        concat!("Size of: ", stringify!(hmac_ctx_st))
    );
    assert_eq!(
        ::std::mem::align_of::<hmac_ctx_st>(),
        8usize,
        concat!("Alignment of ", stringify!(hmac_ctx_st))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<hmac_ctx_st>())).md as *const _ as usize },
        0usize,
        concat!("Offset of field: ", stringify!(hmac_ctx_st), "::", stringify!(md))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<hmac_ctx_st>())).md_ctx as *const _ as usize },
        8usize,
        concat!("Offset of field: ", stringify!(hmac_ctx_st), "::", stringify!(md_ctx))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<hmac_ctx_st>())).i_ctx as *const _ as usize },
        40usize,
        concat!("Offset of field: ", stringify!(hmac_ctx_st), "::", stringify!(i_ctx))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<hmac_ctx_st>())).o_ctx as *const _ as usize },
        72usize,
        concat!("Offset of field: ", stringify!(hmac_ctx_st), "::", stringify!(o_ctx))
    );
}
extern "C" {
    pub fn MD5_Init(md5: *mut MD5_CTX) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn MD5_Update(
        md5: *mut MD5_CTX,
        data: *const ::std::os::raw::c_void,
        len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn MD5_Final(out: *mut u8, md5: *mut MD5_CTX) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn MD5_Transform(md5: *mut MD5_CTX, block: *const u8);
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct md5_state_st {
    pub h: [u32; 4usize],
    pub Nl: u32,
    pub Nh: u32,
    pub data: [u8; 64usize],
    pub num: ::std::os::raw::c_uint,
}
#[test]
fn bindgen_test_layout_md5_state_st() {
    assert_eq!(
        ::std::mem::size_of::<md5_state_st>(),
        92usize,
        concat!("Size of: ", stringify!(md5_state_st))
    );
    assert_eq!(
        ::std::mem::align_of::<md5_state_st>(),
        4usize,
        concat!("Alignment of ", stringify!(md5_state_st))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<md5_state_st>())).h as *const _ as usize },
        0usize,
        concat!("Offset of field: ", stringify!(md5_state_st), "::", stringify!(h))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<md5_state_st>())).Nl as *const _ as usize },
        16usize,
        concat!("Offset of field: ", stringify!(md5_state_st), "::", stringify!(Nl))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<md5_state_st>())).Nh as *const _ as usize },
        20usize,
        concat!("Offset of field: ", stringify!(md5_state_st), "::", stringify!(Nh))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<md5_state_st>())).data as *const _ as usize },
        24usize,
        concat!("Offset of field: ", stringify!(md5_state_st), "::", stringify!(data))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<md5_state_st>())).num as *const _ as usize },
        88usize,
        concat!("Offset of field: ", stringify!(md5_state_st), "::", stringify!(num))
    );
}
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: size_t,
        pool: *mut CRYPTO_BUFFER_POOL,
    ) -> *mut CRYPTO_BUFFER;
}
extern "C" {
    pub fn CRYPTO_BUFFER_alloc(out_data: *mut *mut u8, len: size_t) -> *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) -> size_t;
}
extern "C" {
    pub fn CRYPTO_BUFFER_init_CBS(buf: *const CRYPTO_BUFFER, out: *mut CBS);
}
extern "C" {
    pub fn RSA_new() -> *mut RSA;
}
extern "C" {
    pub fn RSA_new_method(engine: *const ENGINE) -> *mut RSA;
}
extern "C" {
    pub fn RSA_free(rsa: *mut RSA);
}
extern "C" {
    pub fn RSA_up_ref(rsa: *mut RSA) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_bits(rsa: *const RSA) -> ::std::os::raw::c_uint;
}
extern "C" {
    pub fn RSA_get0_n(rsa: *const RSA) -> *const BIGNUM;
}
extern "C" {
    pub fn RSA_get0_e(rsa: *const RSA) -> *const BIGNUM;
}
extern "C" {
    pub fn RSA_get0_d(rsa: *const RSA) -> *const BIGNUM;
}
extern "C" {
    pub fn RSA_get0_p(rsa: *const RSA) -> *const BIGNUM;
}
extern "C" {
    pub fn RSA_get0_q(rsa: *const RSA) -> *const BIGNUM;
}
extern "C" {
    pub fn RSA_get0_dmp1(rsa: *const RSA) -> *const BIGNUM;
}
extern "C" {
    pub fn RSA_get0_dmq1(rsa: *const RSA) -> *const BIGNUM;
}
extern "C" {
    pub fn RSA_get0_iqmp(rsa: *const RSA) -> *const BIGNUM;
}
extern "C" {
    pub fn RSA_get0_key(
        rsa: *const RSA,
        out_n: *mut *const BIGNUM,
        out_e: *mut *const BIGNUM,
        out_d: *mut *const BIGNUM,
    );
}
extern "C" {
    pub fn RSA_get0_factors(rsa: *const RSA, out_p: *mut *const BIGNUM, out_q: *mut *const BIGNUM);
}
extern "C" {
    pub fn RSA_get0_crt_params(
        rsa: *const RSA,
        out_dmp1: *mut *const BIGNUM,
        out_dmq1: *mut *const BIGNUM,
        out_iqmp: *mut *const BIGNUM,
    );
}
extern "C" {
    pub fn RSA_set0_key(
        rsa: *mut RSA,
        n: *mut BIGNUM,
        e: *mut BIGNUM,
        d: *mut BIGNUM,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_set0_factors(rsa: *mut RSA, p: *mut BIGNUM, q: *mut BIGNUM)
        -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_set0_crt_params(
        rsa: *mut RSA,
        dmp1: *mut BIGNUM,
        dmq1: *mut BIGNUM,
        iqmp: *mut BIGNUM,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_generate_key_ex(
        rsa: *mut RSA,
        bits: ::std::os::raw::c_int,
        e: *const BIGNUM,
        cb: *mut BN_GENCB,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_generate_key_fips(
        rsa: *mut RSA,
        bits: ::std::os::raw::c_int,
        cb: *mut BN_GENCB,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_encrypt(
        rsa: *mut RSA,
        out_len: *mut size_t,
        out: *mut u8,
        max_out: size_t,
        in_: *const u8,
        in_len: size_t,
        padding: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_decrypt(
        rsa: *mut RSA,
        out_len: *mut size_t,
        out: *mut u8,
        max_out: size_t,
        in_: *const u8,
        in_len: size_t,
        padding: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_public_encrypt(
        flen: size_t,
        from: *const u8,
        to: *mut u8,
        rsa: *mut RSA,
        padding: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_private_decrypt(
        flen: size_t,
        from: *const u8,
        to: *mut u8,
        rsa: *mut RSA,
        padding: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_sign(
        hash_nid: ::std::os::raw::c_int,
        in_: *const u8,
        in_len: ::std::os::raw::c_uint,
        out: *mut u8,
        out_len: *mut ::std::os::raw::c_uint,
        rsa: *mut RSA,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_sign_pss_mgf1(
        rsa: *mut RSA,
        out_len: *mut size_t,
        out: *mut u8,
        max_out: size_t,
        in_: *const u8,
        in_len: size_t,
        md: *const EVP_MD,
        mgf1_md: *const EVP_MD,
        salt_len: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_sign_raw(
        rsa: *mut RSA,
        out_len: *mut size_t,
        out: *mut u8,
        max_out: size_t,
        in_: *const u8,
        in_len: size_t,
        padding: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_verify(
        hash_nid: ::std::os::raw::c_int,
        msg: *const u8,
        msg_len: size_t,
        sig: *const u8,
        sig_len: size_t,
        rsa: *mut RSA,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_verify_pss_mgf1(
        rsa: *mut RSA,
        msg: *const u8,
        msg_len: size_t,
        md: *const EVP_MD,
        mgf1_md: *const EVP_MD,
        salt_len: ::std::os::raw::c_int,
        sig: *const u8,
        sig_len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_verify_raw(
        rsa: *mut RSA,
        out_len: *mut size_t,
        out: *mut u8,
        max_out: size_t,
        in_: *const u8,
        in_len: size_t,
        padding: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_private_encrypt(
        flen: size_t,
        from: *const u8,
        to: *mut u8,
        rsa: *mut RSA,
        padding: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_public_decrypt(
        flen: size_t,
        from: *const u8,
        to: *mut u8,
        rsa: *mut RSA,
        padding: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_size(rsa: *const RSA) -> ::std::os::raw::c_uint;
}
extern "C" {
    pub fn RSA_is_opaque(rsa: *const RSA) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_check_key(rsa: *const RSA) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_check_fips(key: *mut RSA) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_verify_PKCS1_PSS_mgf1(
        rsa: *const RSA,
        mHash: *const u8,
        Hash: *const EVP_MD,
        mgf1Hash: *const EVP_MD,
        EM: *const u8,
        sLen: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_padding_add_PKCS1_PSS_mgf1(
        rsa: *const RSA,
        EM: *mut u8,
        mHash: *const u8,
        Hash: *const EVP_MD,
        mgf1Hash: *const EVP_MD,
        sLen: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_padding_add_PKCS1_OAEP_mgf1(
        to: *mut u8,
        to_len: size_t,
        from: *const u8,
        from_len: size_t,
        param: *const u8,
        param_len: size_t,
        md: *const EVP_MD,
        mgf1md: *const EVP_MD,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_add_pkcs1_prefix(
        out_msg: *mut *mut u8,
        out_msg_len: *mut size_t,
        is_alloced: *mut ::std::os::raw::c_int,
        hash_nid: ::std::os::raw::c_int,
        msg: *const u8,
        msg_len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_parse_public_key(cbs: *mut CBS) -> *mut RSA;
}
extern "C" {
    pub fn RSA_public_key_from_bytes(in_: *const u8, in_len: size_t) -> *mut RSA;
}
extern "C" {
    pub fn RSA_marshal_public_key(cbb: *mut CBB, rsa: *const RSA) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_public_key_to_bytes(
        out_bytes: *mut *mut u8,
        out_len: *mut size_t,
        rsa: *const RSA,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_parse_private_key(cbs: *mut CBS) -> *mut RSA;
}
extern "C" {
    pub fn RSA_private_key_from_bytes(in_: *const u8, in_len: size_t) -> *mut RSA;
}
extern "C" {
    pub fn RSA_marshal_private_key(cbb: *mut CBB, rsa: *const RSA) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_private_key_to_bytes(
        out_bytes: *mut *mut u8,
        out_len: *mut size_t,
        rsa: *const RSA,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_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 RSA_set_ex_data(
        rsa: *mut RSA,
        idx: ::std::os::raw::c_int,
        arg: *mut ::std::os::raw::c_void,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_get_ex_data(
        rsa: *const RSA,
        idx: ::std::os::raw::c_int,
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    pub fn RSA_flags(rsa: *const RSA) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_blinding_on(rsa: *mut RSA, ctx: *mut BN_CTX) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_generate_key(
        bits: ::std::os::raw::c_int,
        e: ::std::os::raw::c_ulong,
        callback: *mut ::std::os::raw::c_void,
        cb_arg: *mut ::std::os::raw::c_void,
    ) -> *mut RSA;
}
extern "C" {
    pub fn RSA_padding_add_PKCS1_PSS(
        rsa: *const RSA,
        EM: *mut u8,
        mHash: *const u8,
        Hash: *const EVP_MD,
        sLen: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_verify_PKCS1_PSS(
        rsa: *const RSA,
        mHash: *const u8,
        Hash: *const EVP_MD,
        EM: *const u8,
        sLen: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_padding_add_PKCS1_OAEP(
        to: *mut u8,
        to_len: size_t,
        from: *const u8,
        from_len: size_t,
        param: *const u8,
        param_len: size_t,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RSA_print(
        bio: *mut BIO,
        rsa: *const RSA,
        indent: ::std::os::raw::c_int,
    ) -> ::std::os::raw::c_int;
}
#[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) -> size_t>,
    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 size_t,
            out: *mut u8,
            max_out: size_t,
            in_: *const u8,
            in_len: size_t,
            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 size_t,
            out: *mut u8,
            max_out: size_t,
            in_: *const u8,
            in_len: size_t,
            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: size_t,
        ) -> ::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 blinding_fork_generation: u64,
    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>(), 240usize, 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))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<rsa_st>())).blinding_fork_generation as *const _ as usize },
        224usize,
        concat!(
            "Offset of field: ",
            stringify!(rsa_st),
            "::",
            stringify!(blinding_fork_generation)
        )
    );
}
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
    }
}
#[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 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>(),
        232usize,
        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>())).ex_data as *const _ as usize },
        32usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(ex_data))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).ex_pathlen as *const _ as usize },
        40usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(ex_pathlen))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).ex_pcpathlen as *const _ as usize },
        48usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(ex_pcpathlen))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).ex_flags as *const _ as usize },
        56usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(ex_flags))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).ex_kusage as *const _ as usize },
        64usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(ex_kusage))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).ex_xkusage as *const _ as usize },
        72usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(ex_xkusage))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).ex_nscert as *const _ as usize },
        80usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(ex_nscert))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).skid as *const _ as usize },
        88usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(skid))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).akid as *const _ as usize },
        96usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(akid))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).policy_cache as *const _ as usize },
        104usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(policy_cache))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).crldp as *const _ as usize },
        112usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(crldp))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).altname as *const _ as usize },
        120usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(altname))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).nc as *const _ as usize },
        128usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(nc))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).sha1_hash as *const _ as usize },
        136usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(sha1_hash))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).aux as *const _ as usize },
        160usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(aux))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).buf as *const _ as usize },
        168usize,
        concat!("Offset of field: ", stringify!(x509_st), "::", stringify!(buf))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<x509_st>())).lock as *const _ as usize },
        176usize,
        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))
    );
}
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;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct rsa_pss_params_st {
    pub hashAlgorithm: *mut X509_ALGOR,
    pub maskGenAlgorithm: *mut X509_ALGOR,
    pub saltLength: *mut ASN1_INTEGER,
    pub trailerField: *mut ASN1_INTEGER,
}
#[test]
fn bindgen_test_layout_rsa_pss_params_st() {
    assert_eq!(
        ::std::mem::size_of::<rsa_pss_params_st>(),
        32usize,
        concat!("Size of: ", stringify!(rsa_pss_params_st))
    );
    assert_eq!(
        ::std::mem::align_of::<rsa_pss_params_st>(),
        8usize,
        concat!("Alignment of ", stringify!(rsa_pss_params_st))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<rsa_pss_params_st>())).hashAlgorithm as *const _ as usize },
        0usize,
        concat!(
            "Offset of field: ",
            stringify!(rsa_pss_params_st),
            "::",
            stringify!(hashAlgorithm)
        )
    );
    assert_eq!(
        unsafe {
            &(*(::std::ptr::null::<rsa_pss_params_st>())).maskGenAlgorithm as *const _ as usize
        },
        8usize,
        concat!(
            "Offset of field: ",
            stringify!(rsa_pss_params_st),
            "::",
            stringify!(maskGenAlgorithm)
        )
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<rsa_pss_params_st>())).saltLength as *const _ as usize },
        16usize,
        concat!("Offset of field: ", stringify!(rsa_pss_params_st), "::", stringify!(saltLength))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<rsa_pss_params_st>())).trailerField as *const _ as usize },
        24usize,
        concat!("Offset of field: ", stringify!(rsa_pss_params_st), "::", stringify!(trailerField))
    );
}
pub type RSA_PSS_PARAMS = rsa_pss_params_st;
extern "C" {
    pub fn RSA_PSS_PARAMS_new() -> *mut RSA_PSS_PARAMS;
}
extern "C" {
    pub fn RSA_PSS_PARAMS_free(a: *mut RSA_PSS_PARAMS);
}
extern "C" {
    pub static RSA_PSS_PARAMS_it: ASN1_ITEM;
}
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: size_t);
}
extern "C" {
    pub fn CRYPTO_poly1305_finish(state: *mut poly1305_state, mac: *mut u8);
}
extern "C" {
    pub fn RAND_bytes(buf: *mut u8, len: size_t) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RAND_cleanup();
}
extern "C" {
    pub fn RAND_enable_fork_unsafe_buffering(fd: ::std::os::raw::c_int);
}
extern "C" {
    pub fn RAND_pseudo_bytes(buf: *mut u8, len: size_t) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RAND_seed(buf: *const ::std::os::raw::c_void, num: ::std::os::raw::c_int);
}
extern "C" {
    pub fn RAND_load_file(
        path: *const ::std::os::raw::c_char,
        num: ::std::os::raw::c_long,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RAND_file_name(
        buf: *mut ::std::os::raw::c_char,
        num: size_t,
    ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    pub fn RAND_add(buf: *const ::std::os::raw::c_void, num: ::std::os::raw::c_int, entropy: f64);
}
extern "C" {
    pub fn RAND_egd(arg1: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RAND_poll() -> ::std::os::raw::c_int;
}
extern "C" {
    pub fn RAND_status() -> ::std::os::raw::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct rand_meth_st {
    pub seed: ::std::option::Option<
        unsafe extern "C" fn(buf: *const ::std::os::raw::c_void, num: ::std::os::raw::c_int),
    >,
    pub bytes: ::std::option::Option<
        unsafe extern "C" fn(buf: *mut u8, num: size_t) -> ::std::os::raw::c_int,
    >,
    pub cleanup: ::std::option::Option<unsafe extern "C" fn()>,
    pub add: ::std::option::Option<
        unsafe extern "C" fn(
            buf: *const ::std::os::raw::c_void,
            num: ::std::os::raw::c_int,
            entropy: f64,
        ),
    >,
    pub pseudorand: ::std::option::Option<
        unsafe extern "C" fn(buf: *mut u8, num: size_t) -> ::std::os::raw::c_int,
    >,
    pub status: ::std::option::Option<unsafe extern "C" fn() -> ::std::os::raw::c_int>,
}
#[test]
fn bindgen_test_layout_rand_meth_st() {
    assert_eq!(
        ::std::mem::size_of::<rand_meth_st>(),
        48usize,
        concat!("Size of: ", stringify!(rand_meth_st))
    );
    assert_eq!(
        ::std::mem::align_of::<rand_meth_st>(),
        8usize,
        concat!("Alignment of ", stringify!(rand_meth_st))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<rand_meth_st>())).seed as *const _ as usize },
        0usize,
        concat!("Offset of field: ", stringify!(rand_meth_st), "::", stringify!(seed))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<rand_meth_st>())).bytes as *const _ as usize },
        8usize,
        concat!("Offset of field: ", stringify!(rand_meth_st), "::", stringify!(bytes))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<rand_meth_st>())).cleanup as *const _ as usize },
        16usize,
        concat!("Offset of field: ", stringify!(rand_meth_st), "::", stringify!(cleanup))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<rand_meth_st>())).add as *const _ as usize },
        24usize,
        concat!("Offset of field: ", stringify!(rand_meth_st), "::", stringify!(add))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<rand_meth_st>())).pseudorand as *const _ as usize },
        32usize,
        concat!("Offset of field: ", stringify!(rand_meth_st), "::", stringify!(pseudorand))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<rand_meth_st>())).status as *const _ as usize },
        40usize,
        concat!("Offset of field: ", stringify!(rand_meth_st), "::", stringify!(status))
    );
}
extern "C" {
    pub fn RAND_SSLeay() -> *mut RAND_METHOD;
}
extern "C" {
    pub fn RAND_OpenSSL() -> *mut RAND_METHOD;
}
extern "C" {
    pub fn RAND_get_rand_method() -> *const RAND_METHOD;
}
extern "C" {
    pub fn RAND_set_rand_method(arg1: *const RAND_METHOD);
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct rc4_key_st {
    pub x: u32,
    pub y: u32,
    pub data: [u32; 256usize],
}
#[test]
fn bindgen_test_layout_rc4_key_st() {
    assert_eq!(
        ::std::mem::size_of::<rc4_key_st>(),
        1032usize,
        concat!("Size of: ", stringify!(rc4_key_st))
    );
    assert_eq!(
        ::std::mem::align_of::<rc4_key_st>(),
        4usize,
        concat!("Alignment of ", stringify!(rc4_key_st))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<rc4_key_st>())).x as *const _ as usize },
        0usize,
        concat!("Offset of field: ", stringify!(rc4_key_st), "::", stringify!(x))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<rc4_key_st>())).y as *const _ as usize },
        4usize,
        concat!("Offset of field: ", stringify!(rc4_key_st), "::", stringify!(y))
    );
    assert_eq!(
        unsafe { &(*(::std::ptr::null::<rc4_key_st>())).data as *const _ as usize },
        8usize,
        concat!("Offset of field: ", stringify!(rc4_key_st), "::", stringify!(data))
    );
}
extern "C" {
    pub fn RC4_set_key(rc4key: *mut RC4_KEY, len: ::std::os::raw::c_uint, key: *const u8);
}
extern "C" {
    pub fn RC4(key: *mut RC4_KEY, len: size_t, in_: *const u8, out: *mut u8);
}
extern "C" {
    pub fn RC4_options() -> *const ::std::os::raw::c_char;
}
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: *const ::std::os::raw::c_char,
            value: *const ::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: *const ::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,
}
