unit
  IdSSLOpenSSLHeaders;

interface

const
  OPENSSL_ASN1_F_A2D_ASN1_OBJECT = 100;
  OPENSSL_ASN1_F_A2I_ASN1_ENUMERATED = 236;
  OPENSSL_ASN1_F_A2I_ASN1_INTEGER = 101;
  OPENSSL_ASN1_F_A2I_ASN1_STRING = 102;
  OPENSSL_ASN1_F_ASN1_COLLATE_PRIMITIVE = 103;
  OPENSSL_ASN1_F_ASN1_D2I_BIO = 104;
  OPENSSL_ASN1_F_ASN1_D2I_FP = 105;
  OPENSSL_ASN1_F_ASN1_DUP = 106;
  OPENSSL_ASN1_F_ASN1_ENUMERATED_SET = 232;
  OPENSSL_ASN1_F_ASN1_ENUMERATED_TO_BN = 233;
  OPENSSL_ASN1_F_ASN1_GENERALIZEDTIME_NEW = 222;
  OPENSSL_ASN1_F_ASN1_GET_OBJECT = 107;
  OPENSSL_ASN1_F_ASN1_HEADER_NEW = 108;
  OPENSSL_ASN1_F_ASN1_I2D_BIO = 109;
  OPENSSL_ASN1_F_ASN1_I2D_FP = 110;
  OPENSSL_ASN1_F_ASN1_INTEGER_SET = 111;
  OPENSSL_ASN1_F_ASN1_INTEGER_TO_BN = 112;
  OPENSSL_ASN1_F_ASN1_OBJECT_NEW = 113;
  OPENSSL_ASN1_F_ASN1_PACK_STRING = 245;
  OPENSSL_ASN1_F_ASN1_PBE_SET = 253;
  OPENSSL_ASN1_F_ASN1_SEQ_PACK = 246;
  OPENSSL_ASN1_F_ASN1_SEQ_UNPACK = 247;
  OPENSSL_ASN1_F_ASN1_SIGN = 114;
  OPENSSL_ASN1_F_ASN1_STRING_NEW = 115;
  OPENSSL_ASN1_F_ASN1_STRING_TYPE_NEW = 116;
  OPENSSL_ASN1_F_ASN1_TYPE_GET_INT_OCTETSTRING = 117;
  OPENSSL_ASN1_F_ASN1_TYPE_GET_OCTETSTRING = 118;
  OPENSSL_ASN1_F_ASN1_TYPE_NEW = 119;
  OPENSSL_ASN1_F_ASN1_UNPACK_STRING = 248;
  OPENSSL_ASN1_F_ASN1_UTCTIME_NEW = 120;
  OPENSSL_ASN1_F_ASN1_VERIFY = 121;
  OPENSSL_ASN1_F_AUTHORITY_KEYID_NEW = 237;
  OPENSSL_ASN1_F_BASIC_CONSTRAINTS_NEW = 226;
  OPENSSL_ASN1_F_BN_TO_ASN1_ENUMERATED = 234;
  OPENSSL_ASN1_F_BN_TO_ASN1_INTEGER = 122;
  OPENSSL_ASN1_F_D2I_ASN1_BIT_STRING = 123;
  OPENSSL_ASN1_F_D2I_ASN1_BMPSTRING = 124;
  OPENSSL_ASN1_F_D2I_ASN1_BOOLEAN = 125;
  OPENSSL_ASN1_F_D2I_ASN1_BYTES = 126;
  OPENSSL_ASN1_F_D2I_ASN1_ENUMERATED = 235;
  OPENSSL_ASN1_F_D2I_ASN1_GENERALIZEDTIME = 223;
  OPENSSL_ASN1_F_D2I_ASN1_HEADER = 127;
  OPENSSL_ASN1_F_D2I_ASN1_INTEGER = 128;
  OPENSSL_ASN1_F_D2I_ASN1_OBJECT = 129;
  OPENSSL_ASN1_F_D2I_ASN1_OCTET_STRING = 130;
  OPENSSL_ASN1_F_D2I_ASN1_PRINT_TYPE = 131;
  OPENSSL_ASN1_F_D2I_ASN1_SET = 132;
  OPENSSL_ASN1_F_D2I_ASN1_TIME = 224;
  OPENSSL_ASN1_F_D2I_ASN1_TYPE = 133;
  OPENSSL_ASN1_F_D2I_ASN1_TYPE_BYTES = 134;
  OPENSSL_ASN1_F_D2I_ASN1_UINTEGER = 280;
  OPENSSL_ASN1_F_D2I_ASN1_UTCTIME = 135;
  OPENSSL_ASN1_F_D2I_ASN1_UTF8STRING = 266;
  OPENSSL_ASN1_F_D2I_ASN1_VISIBLESTRING = 267;
  OPENSSL_ASN1_F_D2I_AUTHORITY_KEYID = 238;
  OPENSSL_ASN1_F_D2I_BASIC_CONSTRAINTS = 227;
  OPENSSL_ASN1_F_D2I_DHPARAMS = 136;
  OPENSSL_ASN1_F_D2I_DIST_POINT = 276;
  OPENSSL_ASN1_F_D2I_DIST_POINT_NAME = 277;
  OPENSSL_ASN1_F_D2I_DSAPARAMS = 137;
  OPENSSL_ASN1_F_D2I_DSAPRIVATEKEY = 138;
  OPENSSL_ASN1_F_D2I_DSAPUBLICKEY = 139;
  OPENSSL_ASN1_F_D2I_GENERAL_NAME = 230;
  OPENSSL_ASN1_F_D2I_NETSCAPE_CERT_SEQUENCE = 228;
  OPENSSL_ASN1_F_D2I_NETSCAPE_PKEY = 140;
  OPENSSL_ASN1_F_D2I_NETSCAPE_RSA = 141;
  OPENSSL_ASN1_F_D2I_NETSCAPE_RSA_2 = 142;
  OPENSSL_ASN1_F_D2I_NETSCAPE_SPKAC = 143;
  OPENSSL_ASN1_F_D2I_NETSCAPE_SPKI = 144;
  OPENSSL_ASN1_F_D2I_NOTICEREF = 268;
  OPENSSL_ASN1_F_D2I_PBE2PARAM = 262;
  OPENSSL_ASN1_F_D2I_PBEPARAM = 249;
  OPENSSL_ASN1_F_D2I_PBKDF2PARAM = 263;
  OPENSSL_ASN1_F_D2I_PKCS12 = 254;
  OPENSSL_ASN1_F_D2I_PKCS12_BAGS = 255;
  OPENSSL_ASN1_F_D2I_PKCS12_MAC_DATA = 256;
  OPENSSL_ASN1_F_D2I_PKCS12_SAFEBAG = 257;
  OPENSSL_ASN1_F_D2I_PKCS7 = 145;
  OPENSSL_ASN1_F_D2I_PKCS7_DIGEST = 146;
  OPENSSL_ASN1_F_D2I_PKCS7_ENCRYPT = 147;
  OPENSSL_ASN1_F_D2I_PKCS7_ENC_CONTENT = 148;
  OPENSSL_ASN1_F_D2I_PKCS7_ENVELOPE = 149;
  OPENSSL_ASN1_F_D2I_PKCS7_ISSUER_AND_SERIAL = 150;
  OPENSSL_ASN1_F_D2I_PKCS7_RECIP_INFO = 151;
  OPENSSL_ASN1_F_D2I_PKCS7_SIGNED = 152;
  OPENSSL_ASN1_F_D2I_PKCS7_SIGNER_INFO = 153;
  OPENSSL_ASN1_F_D2I_PKCS7_SIGN_ENVELOPE = 154;
  OPENSSL_ASN1_F_D2I_PKCS8_PRIV_KEY_INFO = 250;
  OPENSSL_ASN1_F_D2I_PKEY_USAGE_PERIOD = 239;
  OPENSSL_ASN1_F_D2I_POLICYINFO = 269;
  OPENSSL_ASN1_F_D2I_POLICYQUALINFO = 270;
  OPENSSL_ASN1_F_D2I_PRIVATEKEY = 155;
  OPENSSL_ASN1_F_D2I_PUBLICKEY = 156;
  OPENSSL_ASN1_F_D2I_RSAPRIVATEKEY = 157;
  OPENSSL_ASN1_F_D2I_RSAPUBLICKEY = 158;
  OPENSSL_ASN1_F_D2I_SXNET = 241;
  OPENSSL_ASN1_F_D2I_SXNETID = 243;
  OPENSSL_ASN1_F_D2I_USERNOTICE = 271;
  OPENSSL_ASN1_F_D2I_X509 = 159;
  OPENSSL_ASN1_F_D2I_X509_ALGOR = 160;
  OPENSSL_ASN1_F_D2I_X509_ATTRIBUTE = 161;
  OPENSSL_ASN1_F_D2I_X509_CINF = 162;
  OPENSSL_ASN1_F_D2I_X509_CRL = 163;
  OPENSSL_ASN1_F_D2I_X509_CRL_INFO = 164;
  OPENSSL_ASN1_F_D2I_X509_EXTENSION = 165;
  OPENSSL_ASN1_F_D2I_X509_KEY = 166;
  OPENSSL_ASN1_F_D2I_X509_NAME = 167;
  OPENSSL_ASN1_F_D2I_X509_NAME_ENTRY = 168;
  OPENSSL_ASN1_F_D2I_X509_PKEY = 169;
  OPENSSL_ASN1_F_D2I_X509_PUBKEY = 170;
  OPENSSL_ASN1_F_D2I_X509_REQ = 171;
  OPENSSL_ASN1_F_D2I_X509_REQ_INFO = 172;
  OPENSSL_ASN1_F_D2I_X509_REVOKED = 173;
  OPENSSL_ASN1_F_D2I_X509_SIG = 174;
  OPENSSL_ASN1_F_D2I_X509_VAL = 175;
  OPENSSL_ASN1_F_DIST_POINT_NAME_NEW = 278;
  OPENSSL_ASN1_F_DIST_POINT_NEW = 279;
  OPENSSL_ASN1_F_GENERAL_NAME_NEW = 231;
  OPENSSL_ASN1_F_I2D_ASN1_HEADER = 176;
  OPENSSL_ASN1_F_I2D_ASN1_TIME = 225;
  OPENSSL_ASN1_F_I2D_DHPARAMS = 177;
  OPENSSL_ASN1_F_I2D_DSAPARAMS = 178;
  OPENSSL_ASN1_F_I2D_DSAPRIVATEKEY = 179;
  OPENSSL_ASN1_F_I2D_DSAPUBLICKEY = 180;
  OPENSSL_ASN1_F_I2D_NETSCAPE_RSA = 181;
  OPENSSL_ASN1_F_I2D_PKCS7 = 182;
  OPENSSL_ASN1_F_I2D_PRIVATEKEY = 183;
  OPENSSL_ASN1_F_I2D_PUBLICKEY = 184;
  OPENSSL_ASN1_F_I2D_RSAPRIVATEKEY = 185;
  OPENSSL_ASN1_F_I2D_RSAPUBLICKEY = 186;
  OPENSSL_ASN1_F_I2D_X509_ATTRIBUTE = 187;
  OPENSSL_ASN1_F_I2T_ASN1_OBJECT = 188;
  OPENSSL_ASN1_F_NETSCAPE_CERT_SEQUENCE_NEW = 229;
  OPENSSL_ASN1_F_NETSCAPE_PKEY_NEW = 189;
  OPENSSL_ASN1_F_NETSCAPE_SPKAC_NEW = 190;
  OPENSSL_ASN1_F_NETSCAPE_SPKI_NEW = 191;
  OPENSSL_ASN1_F_NOTICEREF_NEW = 272;
  OPENSSL_ASN1_F_PBE2PARAM_NEW = 264;
  OPENSSL_ASN1_F_PBEPARAM_NEW = 251;
  OPENSSL_ASN1_F_PBKDF2PARAM_NEW = 265;
  OPENSSL_ASN1_F_PKCS12_BAGS_NEW = 258;
  OPENSSL_ASN1_F_PKCS12_MAC_DATA_NEW = 259;
  OPENSSL_ASN1_F_PKCS12_NEW = 260;
  OPENSSL_ASN1_F_PKCS12_SAFEBAG_NEW = 261;
  OPENSSL_ASN1_F_PKCS5_PBE2_SET = 281;
  OPENSSL_ASN1_F_PKCS7_DIGEST_NEW = 192;
  OPENSSL_ASN1_F_PKCS7_ENCRYPT_NEW = 193;
  OPENSSL_ASN1_F_PKCS7_ENC_CONTENT_NEW = 194;
  OPENSSL_ASN1_F_PKCS7_ENVELOPE_NEW = 195;
  OPENSSL_ASN1_F_PKCS7_ISSUER_AND_SERIAL_NEW = 196;
  OPENSSL_ASN1_F_PKCS7_NEW = 197;
  OPENSSL_ASN1_F_PKCS7_RECIP_INFO_NEW = 198;
  OPENSSL_ASN1_F_PKCS7_SIGNED_NEW = 199;
  OPENSSL_ASN1_F_PKCS7_SIGNER_INFO_NEW = 200;
  OPENSSL_ASN1_F_PKCS7_SIGN_ENVELOPE_NEW = 201;
  OPENSSL_ASN1_F_PKCS8_PRIV_KEY_INFO_NEW = 252;
  OPENSSL_ASN1_F_PKEY_USAGE_PERIOD_NEW = 240;
  OPENSSL_ASN1_F_POLICYINFO_NEW = 273;
  OPENSSL_ASN1_F_POLICYQUALINFO_NEW = 274;
  OPENSSL_ASN1_F_SXNETID_NEW = 244;
  OPENSSL_ASN1_F_SXNET_NEW = 242;
  OPENSSL_ASN1_F_USERNOTICE_NEW = 275;
  OPENSSL_ASN1_F_X509_ALGOR_NEW = 202;
  OPENSSL_ASN1_F_X509_ATTRIBUTE_NEW = 203;
  OPENSSL_ASN1_F_X509_CINF_NEW = 204;
  OPENSSL_ASN1_F_X509_CRL_INFO_NEW = 205;
  OPENSSL_ASN1_F_X509_CRL_NEW = 206;
  OPENSSL_ASN1_F_X509_DHPARAMS_NEW = 207;
  OPENSSL_ASN1_F_X509_EXTENSION_NEW = 208;
  OPENSSL_ASN1_F_X509_INFO_NEW = 209;
  OPENSSL_ASN1_F_X509_KEY_NEW = 210;
  OPENSSL_ASN1_F_X509_NAME_ENTRY_NEW = 211;
  OPENSSL_ASN1_F_X509_NAME_NEW = 212;
  OPENSSL_ASN1_F_X509_NEW = 213;
  OPENSSL_ASN1_F_X509_PKEY_NEW = 214;
  OPENSSL_ASN1_F_X509_PUBKEY_NEW = 215;
  OPENSSL_ASN1_F_X509_REQ_INFO_NEW = 216;
  OPENSSL_ASN1_F_X509_REQ_NEW = 217;
  OPENSSL_ASN1_F_X509_REVOKED_NEW = 218;
  OPENSSL_ASN1_F_X509_SIG_NEW = 219;
  OPENSSL_ASN1_F_X509_VAL_FREE = 220;
  OPENSSL_ASN1_F_X509_VAL_NEW = 221;
  OPENSSL_ASN1_OBJECT_FLAG_CRITICAL = $02;
  OPENSSL_ASN1_OBJECT_FLAG_DYNAMIC = $01;
  OPENSSL_ASN1_OBJECT_FLAG_DYNAMIC_DATA = $08;
  OPENSSL_ASN1_OBJECT_FLAG_DYNAMIC_STRINGS = $04;
  OPENSSL_ASN1_R_BAD_CLASS = 100;
  OPENSSL_ASN1_R_BAD_OBJECT_HEADER = 101;
  OPENSSL_ASN1_R_BAD_PASSWORD_READ = 102;
  OPENSSL_ASN1_R_BAD_PKCS7_CONTENT = 103;
  OPENSSL_ASN1_R_BAD_PKCS7_TYPE = 104;
  OPENSSL_ASN1_R_BAD_TAG = 105;
  OPENSSL_ASN1_R_BAD_TYPE = 106;
  OPENSSL_ASN1_R_BN_LIB = 107;
  OPENSSL_ASN1_R_BOOLEAN_IS_WRONG_LENGTH = 108;
  OPENSSL_ASN1_R_BUFFER_TOO_SMALL = 109;
  OPENSSL_ASN1_R_DATA_IS_WRONG = 110;
  OPENSSL_ASN1_R_DECODE_ERROR = 155;
  OPENSSL_ASN1_R_DECODING_ERROR = 111;
  OPENSSL_ASN1_R_ENCODE_ERROR = 156;
  OPENSSL_ASN1_R_ERROR_PARSING_SET_ELEMENT = 112;
  OPENSSL_ASN1_R_ERROR_SETTING_CIPHER_PARAMS = 157;
  OPENSSL_ASN1_R_EXPECTING_AN_ENUMERATED = 154;
  OPENSSL_ASN1_R_EXPECTING_AN_INTEGER = 113;
  OPENSSL_ASN1_R_EXPECTING_AN_OBJECT = 114;
  OPENSSL_ASN1_R_EXPECTING_AN_OCTET_STRING = 115;
  OPENSSL_ASN1_R_EXPECTING_A_BIT_STRING = 116;
  OPENSSL_ASN1_R_EXPECTING_A_BOOLEAN = 117;
  OPENSSL_ASN1_R_EXPECTING_A_GENERALIZEDTIME = 151;
  OPENSSL_ASN1_R_EXPECTING_A_TIME = 152;
  OPENSSL_ASN1_R_EXPECTING_A_UTCTIME = 118;
  OPENSSL_ASN1_R_FIRST_NUM_TOO_LARGE = 119;
  OPENSSL_ASN1_R_GENERALIZEDTIME_TOO_LONG = 153;
  OPENSSL_ASN1_R_HEADER_TOO_LONG = 120;
  OPENSSL_ASN1_R_INVALID_DIGIT = 121;
  OPENSSL_ASN1_R_INVALID_SEPARATOR = 122;
  OPENSSL_ASN1_R_INVALID_TIME_FORMAT = 123;
  OPENSSL_ASN1_R_IV_TOO_LARGE = 124;
  OPENSSL_ASN1_R_LENGTH_ERROR = 125;
  OPENSSL_ASN1_R_MISSING_SECOND_NUMBER = 126;
  OPENSSL_ASN1_R_NON_HEX_CHARACTERS = 127;
  OPENSSL_ASN1_R_NOT_ENOUGH_DATA = 128;
  OPENSSL_ASN1_R_ODD_NUMBER_OF_CHARS = 129;
  OPENSSL_ASN1_R_PARSING = 130;
  OPENSSL_ASN1_R_PRIVATE_KEY_HEADER_MISSING = 131;
  OPENSSL_ASN1_R_SECOND_NUMBER_TOO_LARGE = 132;
  OPENSSL_ASN1_R_SHORT_LINE = 133;
  OPENSSL_ASN1_R_STRING_TOO_SHORT = 134;
  OPENSSL_ASN1_R_TAG_VALUE_TOO_HIGH = 135;
  OPENSSL_ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD = 136;
  OPENSSL_ASN1_R_TOO_LONG = 137;
  OPENSSL_ASN1_R_UNABLE_TO_DECODE_RSA_KEY = 138;
  OPENSSL_ASN1_R_UNABLE_TO_DECODE_RSA_PRIVATE_KEY = 139;
  OPENSSL_ASN1_R_UNKNOWN_ATTRIBUTE_TYPE = 140;
  OPENSSL_ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM = 141;
  OPENSSL_ASN1_R_UNKNOWN_OBJECT_TYPE = 142;
  OPENSSL_ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE = 143;
  OPENSSL_ASN1_R_UNSUPPORTED_CIPHER = 144;
  OPENSSL_ASN1_R_UNSUPPORTED_ENCRYPTION_ALGORITHM = 145;
  OPENSSL_ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE = 146;
  OPENSSL_ASN1_R_UTCTIME_TOO_LONG = 147;
  OPENSSL_ASN1_R_WRONG_PRINTABLE_TYPE = 148;
  OPENSSL_ASN1_R_WRONG_TAG = 149;
  OPENSSL_ASN1_R_WRONG_TYPE = 150;
  OPENSSL_ASN1_STRING_FLAG_BITS_LEFT = $08;
  OPENSSL_BF_BLOCK = 8;
  OPENSSL_BF_DECRYPT = 0;
  OPENSSL_BF_ENCRYPT = 1;
  OPENSSL_BF_ROUNDS = 16;
  OPENSSL_BIO_BIND_NORMAL = 0;
  OPENSSL_BIO_BIND_REUSEADDR = 2;
  OPENSSL_BIO_BIND_REUSEADDR_IF_UNUSED = 1;
  OPENSSL_BIO_CB_CTRL = $06;
  OPENSSL_BIO_CB_FREE = $01;
  OPENSSL_BIO_CB_GETS = $05;
  OPENSSL_BIO_CB_PUTS = $04;
  OPENSSL_BIO_CB_READ = $02;
  OPENSSL_BIO_CB_RETURN = $80;
  OPENSSL_BIO_CB_WRITE = $03;
  OPENSSL_BIO_CLOSE = $01;
  OPENSSL_BIO_CONN_S_BEFORE = 1;
  OPENSSL_BIO_CONN_S_BLOCKED_CONNECT = 7;
  OPENSSL_BIO_CONN_S_CONNECT = 5;
  OPENSSL_BIO_CONN_S_CREATE_SOCKET = 4;
  OPENSSL_BIO_CONN_S_GET_IP = 2;
  OPENSSL_BIO_CONN_S_GET_PORT = 3;
  OPENSSL_BIO_CONN_S_NBIO = 8;
  OPENSSL_BIO_CONN_S_OK = 6;
  OPENSSL_BIO_CTRL_DUP = 12;
  OPENSSL_BIO_CTRL_EOF = 2;
  OPENSSL_BIO_CTRL_FLUSH = 11;
  OPENSSL_BIO_CTRL_GET = 5;
  OPENSSL_BIO_CTRL_GET_CALLBACK = 15;
  OPENSSL_BIO_CTRL_GET_CLOSE = 8;
  OPENSSL_BIO_CTRL_INFO = 3;
  OPENSSL_BIO_CTRL_PENDING = 10;
  OPENSSL_BIO_CTRL_POP = 7;
  OPENSSL_BIO_CTRL_PUSH = 6;
  OPENSSL_BIO_CTRL_RESET = 1;
  OPENSSL_BIO_CTRL_SET = 4;
  OPENSSL_BIO_CTRL_SET_CALLBACK = 14;
  OPENSSL_BIO_CTRL_SET_CLOSE = 9;
  OPENSSL_BIO_CTRL_SET_FILENAME = 30;
  OPENSSL_BIO_CTRL_WPENDING = 13;
  OPENSSL_BIO_C_DESTROY_BIO_PAIR = 139;
  OPENSSL_BIO_C_DO_STATE_MACHINE = 101;
  OPENSSL_BIO_C_FILE_SEEK = 128;
  OPENSSL_BIO_C_FILE_TELL = 133;
  OPENSSL_BIO_C_GET_ACCEPT = 124;
  OPENSSL_BIO_C_GET_BIND_MODE = 132;
  OPENSSL_BIO_C_GET_BUFF_NUM_LINES = 116;
  OPENSSL_BIO_C_GET_BUF_MEM_PTR = 115;
  OPENSSL_BIO_C_GET_CIPHER_CTX = 129;
  OPENSSL_BIO_C_GET_CIPHER_STATUS = 113;
  OPENSSL_BIO_C_GET_CONNECT = 123;
  OPENSSL_BIO_C_GET_FD = 105;
  OPENSSL_BIO_C_GET_FILE_PTR = 107;
  OPENSSL_BIO_C_GET_MD = 112;
  OPENSSL_BIO_C_GET_MD_CTX = 120;
  OPENSSL_BIO_C_GET_PROXY_PARAM = 121;
  OPENSSL_BIO_C_GET_READ_REQUEST = 141;
  OPENSSL_BIO_C_GET_SOCKS = 134;
  OPENSSL_BIO_C_GET_SSL = 110;
  OPENSSL_BIO_C_GET_SSL_NUM_RENEGOTIATES = 126;
  OPENSSL_BIO_C_GET_WRITE_BUF_SIZE = 137;
  OPENSSL_BIO_C_GET_WRITE_GUARANTEE = 140;
  OPENSSL_BIO_C_MAKE_BIO_PAIR = 138;
  OPENSSL_BIO_C_SET_ACCEPT = 118;
  OPENSSL_BIO_C_SET_BIND_MODE = 131;
  OPENSSL_BIO_C_SET_BUFF_READ_DATA = 122;
  OPENSSL_BIO_C_SET_BUFF_SIZE = 117;
  OPENSSL_BIO_C_SET_BUF_MEM = 114;
  OPENSSL_BIO_C_SET_BUF_MEM_EOF_RETURN = 130;
  OPENSSL_BIO_C_SET_CONNECT = 100;
  OPENSSL_BIO_C_SET_FD = 104;
  OPENSSL_BIO_C_SET_FILENAME = 108;
  OPENSSL_BIO_C_SET_FILE_PTR = 106;
  OPENSSL_BIO_C_SET_MD = 111;
  OPENSSL_BIO_C_SET_NBIO = 102;
  OPENSSL_BIO_C_SET_PROXY_PARAM = 103;
  OPENSSL_BIO_C_SET_SOCKS = 135;
  OPENSSL_BIO_C_SET_SSL = 109;
  OPENSSL_BIO_C_SET_SSL_RENEGOTIATE_BYTES = 125;
  OPENSSL_BIO_C_SET_SSL_RENEGOTIATE_TIMEOUT = 127;
  OPENSSL_BIO_C_SET_WRITE_BUF_SIZE = 136;
  OPENSSL_BIO_C_SHUTDOWN_WR = 142;
  OPENSSL_BIO_C_SSL_MODE = 119;
  OPENSSL_BIO_FLAGS_BASE64_NO_NL = $100;
  OPENSSL_BIO_FLAGS_IO_SPECIAL = $04;
  OPENSSL_BIO_FLAGS_READ = $01;
  OPENSSL_BIO_FLAGS_WRITE = $02;
  OPENSSL_BIO_FLAGS_RWS = OPENSSL_BIO_FLAGS_READ or OPENSSL_BIO_FLAGS_WRITE or
    OPENSSL_BIO_FLAGS_IO_SPECIAL;
  OPENSSL_BIO_FLAGS_SHOULD_RETRY = $08;
  OPENSSL_BIO_FP_APPEND = $08;
  OPENSSL_BIO_FP_READ = $02;
  OPENSSL_BIO_FP_TEXT = $10;
  OPENSSL_BIO_FP_WRITE = $04;
  OPENSSL_BIO_F_ACPT_STATE = 100;
  OPENSSL_BIO_F_BIO_ACCEPT = 101;
  OPENSSL_BIO_F_BIO_BER_GET_HEADER = 102;
  OPENSSL_BIO_F_BIO_CTRL = 103;
  OPENSSL_BIO_F_BIO_GETHOSTBYNAME = 120;
  OPENSSL_BIO_F_BIO_GETS = 104;
  OPENSSL_BIO_F_BIO_GET_ACCEPT_SOCKET = 105;
  OPENSSL_BIO_F_BIO_GET_HOST_IP = 106;
  OPENSSL_BIO_F_BIO_GET_PORT = 107;
  OPENSSL_BIO_F_BIO_MAKE_PAIR = 121;
  OPENSSL_BIO_F_BIO_NEW = 108;
  OPENSSL_BIO_F_BIO_NEW_FILE = 109;
  OPENSSL_BIO_F_BIO_PUTS = 110;
  OPENSSL_BIO_F_BIO_READ = 111;
  OPENSSL_BIO_F_BIO_SOCK_INIT = 112;
  OPENSSL_BIO_F_BIO_WRITE = 113;
  OPENSSL_BIO_F_BUFFER_CTRL = 114;
  OPENSSL_BIO_F_CONN_STATE = 115;
  OPENSSL_BIO_F_FILE_CTRL = 116;
  OPENSSL_BIO_F_MEM_WRITE = 117;
  OPENSSL_BIO_F_SSL_NEW = 118;
  OPENSSL_BIO_F_WSASTARTUP = 119;
  OPENSSL_BIO_GHBN_CTRL_CACHE_SIZE = 3;
  OPENSSL_BIO_GHBN_CTRL_FLUSH = 5;
  OPENSSL_BIO_GHBN_CTRL_GET_ENTRY = 4;
  OPENSSL_BIO_GHBN_CTRL_HITS = 1;
  OPENSSL_BIO_GHBN_CTRL_MISSES = 2;
  OPENSSL_BIO_NOCLOSE = $00;
  OPENSSL_BIO_RR_CONNECT = $02;
  OPENSSL_BIO_RR_SSL_X509_LOOKUP = $01;
  OPENSSL_BIO_R_ACCEPT_ERROR = 100;
  OPENSSL_BIO_R_BAD_FOPEN_MODE = 101;
  OPENSSL_BIO_R_BAD_HOSTNAME_LOOKUP = 102;
  OPENSSL_BIO_R_BROKEN_PIPE = 124;
  OPENSSL_BIO_R_CONNECT_ERROR = 103;
  OPENSSL_BIO_R_ERROR_SETTING_NBIO = 104;
  OPENSSL_BIO_R_ERROR_SETTING_NBIO_ON_ACCEPTED_SOCKET = 105;
  OPENSSL_BIO_R_ERROR_SETTING_NBIO_ON_ACCEPT_SOCKET = 106;
  OPENSSL_BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET = 107;
  OPENSSL_BIO_R_INVALID_ARGUMENT = 125;
  OPENSSL_BIO_R_INVALID_IP_ADDRESS = 108;
  OPENSSL_BIO_R_IN_USE = 123;
  OPENSSL_BIO_R_KEEPALIVE = 109;
  OPENSSL_BIO_R_NBIO_CONNECT_ERROR = 110;
  OPENSSL_BIO_R_NO_ACCEPT_PORT_SPECIFIED = 111;
  OPENSSL_BIO_R_NO_HOSTNAME_SPECIFIED = 112;
  OPENSSL_BIO_R_NO_PORT_DEFINED = 113;
  OPENSSL_BIO_R_NO_PORT_SPECIFIED = 114;
  OPENSSL_BIO_R_NULL_PARAMETER = 115;
  OPENSSL_BIO_R_TAG_MISMATCH = 116;
  OPENSSL_BIO_R_UNABLE_TO_BIND_SOCKET = 117;
  OPENSSL_BIO_R_UNABLE_TO_CREATE_SOCKET = 118;
  OPENSSL_BIO_R_UNABLE_TO_LISTEN_SOCKET = 119;
  OPENSSL_BIO_R_UNINITIALIZED = 120;
  OPENSSL_BIO_R_UNSUPPORTED_METHOD = 121;
  OPENSSL_BIO_R_WSASTARTUP = 122;
  OPENSSL_BIO_TYPE_ACCEPT = 13 or $0400 or $0100;
  OPENSSL_BIO_TYPE_BASE64 = 11 or $0200;
  OPENSSL_BIO_TYPE_BER = 18 or $0200;
  OPENSSL_BIO_TYPE_BIO = 19 or $0400;
  OPENSSL_BIO_TYPE_BUFFER = 9 or $0200;
  OPENSSL_BIO_TYPE_CIPHER = 10 or $0200;
  OPENSSL_BIO_TYPE_CONNECT = 12 or $0400 or $0100;
  OPENSSL_BIO_TYPE_DESCRIPTOR = $0100;
  OPENSSL_BIO_TYPE_FD = 4 or $0400 or $0100;
  OPENSSL_BIO_TYPE_FILE = 2 or $0400;
  OPENSSL_BIO_TYPE_FILTER = $0200;
  OPENSSL_BIO_TYPE_MD = 8 or $0200;
  OPENSSL_BIO_TYPE_MEM = 1 or $0400;
  OPENSSL_BIO_TYPE_NBIO_TEST = 16 or $0200;
  OPENSSL_BIO_TYPE_NONE = 0;
  OPENSSL_BIO_TYPE_NULL = 6 or $0400;
  OPENSSL_BIO_TYPE_NULL_FILTER = 17 or $0200;
  OPENSSL_BIO_TYPE_PROXY_CLIENT = 14 or $0200;
  OPENSSL_BIO_TYPE_PROXY_SERVER = 15 or $0200;
  OPENSSL_BIO_TYPE_SOCKET = 5 or $0400 or $0100;
  OPENSSL_BIO_TYPE_SOURCE_SINK = $0400;
  OPENSSL_BIO_TYPE_SSL = 7 or $0200;
  OPENSSL_BN_BITS = 64;
  OPENSSL_BN_BITS2 = 32;
  OPENSSL_BN_BITS4 = 16;
  OPENSSL_BN_BYTES = 4;
  OPENSSL_BN_CTX_NUM = 12;
  OPENSSL_BN_DEC_FMT1 = '%lu';
  OPENSSL_BN_DEC_FMT2 = '%09lu';
  OPENSSL_BN_DEC_NUM = 9;
  OPENSSL_BN_DEFAULT_BITS = 1280;
  OPENSSL_BN_FLG_FREE = $8000;
  OPENSSL_BN_FLG_MALLOCED = $01;
  OPENSSL_BN_FLG_STATIC_DATA = $02;
  OPENSSL_BN_F_BN_BLINDING_CONVERT = 100;
  OPENSSL_BN_F_BN_BLINDING_INVERT = 101;
  OPENSSL_BN_F_BN_BLINDING_NEW = 102;
  OPENSSL_BN_F_BN_BLINDING_UPDATE = 103;
  OPENSSL_BN_F_BN_BN2DEC = 104;
  OPENSSL_BN_F_BN_BN2HEX = 105;
  OPENSSL_BN_F_BN_CTX_NEW = 106;
  OPENSSL_BN_F_BN_DIV = 107;
  OPENSSL_BN_F_BN_EXPAND2 = 108;
  OPENSSL_BN_F_BN_MOD_EXP_MONT = 109;
  OPENSSL_BN_F_BN_MOD_INVERSE = 110;
  OPENSSL_BN_F_BN_MOD_MUL_RECIPROCAL = 111;
  OPENSSL_BN_F_BN_MPI2BN = 112;
  OPENSSL_BN_F_BN_NEW = 113;
  OPENSSL_BN_F_BN_RAND = 114;
  OPENSSL_BN_F_BN_USUB = 115;
  OPENSSL_BN_MASK2 = $FFFFFFFF;
  OPENSSL_BN_MASK2h = $FFFF0000;
  OPENSSL_BN_MASK2h1 = $FFFF8000;
  OPENSSL_BN_MASK2l = $FFFF;
  OPENSSL_BN_R_ARG2_LT_ARG3 = 100;
  OPENSSL_BN_R_BAD_RECIPROCAL = 101;
  OPENSSL_BN_R_CALLED_WITH_EVEN_MODULUS = 102;
  OPENSSL_BN_R_DIV_BY_ZERO = 103;
  OPENSSL_BN_R_ENCODING_ERROR = 104;
  OPENSSL_BN_R_EXPAND_ON_STATIC_BIGNUM_DATA = 105;
  OPENSSL_BN_R_INVALID_LENGTH = 106;
  OPENSSL_BN_R_NOT_INITIALIZED = 107;
  OPENSSL_BN_R_NO_INVERSE = 108;
  OPENSSL_BN_TBIT = $80000000;
  OPENSSL_BUFSIZ = 1024;
  OPENSSL_BUF_F_BUF_MEM_GROW = 100;
  OPENSSL_BUF_F_BUF_MEM_NEW = 101;
  OPENSSL_BUF_F_BUF_STRDUP = 102;
  OPENSSL_B_ASN1_BIT_STRING = $0400;
  OPENSSL_B_ASN1_BMPSTRING = $0800;
  OPENSSL_B_ASN1_GENERALSTRING = $0080;
  OPENSSL_B_ASN1_GRAPHICSTRING = $0020;
  OPENSSL_B_ASN1_IA5STRING = $0010;
  OPENSSL_B_ASN1_ISO64STRING = $0040;
  OPENSSL_B_ASN1_NUMERICSTRING = $0001;
  OPENSSL_B_ASN1_OCTET_STRING = $0200;
  OPENSSL_B_ASN1_PRINTABLESTRING = $0002;
  OPENSSL_B_ASN1_T61STRING = $0004;
  OPENSSL_B_ASN1_TELETEXSTRING = $0008;
  OPENSSL_B_ASN1_UNIVERSALSTRING = $0100;
  OPENSSL_B_ASN1_UNKNOWN = $1000;
  OPENSSL_B_ASN1_UTF8STRING = $2000;
  OPENSSL_B_ASN1_VIDEOTEXSTRING = $0008;
  OPENSSL_B_ASN1_VISIBLESTRING = $0040;
  OPENSSL_CAST_BLOCK = 8;
  OPENSSL_CAST_DECRYPT = 0;
  OPENSSL_CAST_ENCRYPT = 1;
  OPENSSL_CAST_KEY_LENGTH = 16;
  OPENSSL__CLOCKS_PER_SEC_ = 1000;
  OPENSSL_CLOCKS_PER_SEC = OPENSSL__CLOCKS_PER_SEC_;
  OPENSSL_CLK_TCK = OPENSSL_CLOCKS_PER_SEC;
  OPENSSL_CRYPTO_EX_INDEX_BIO = 0;
  OPENSSL_CRYPTO_EX_INDEX_SSL = 1;
  OPENSSL_CRYPTO_EX_INDEX_SSL_CTX = 2;
  OPENSSL_CRYPTO_EX_INDEX_SSL_SESSION = 3;
  OPENSSL_CRYPTO_EX_INDEX_X509_STORE = 4;
  OPENSSL_CRYPTO_EX_INDEX_X509_STORE_CTX = 5;
  OPENSSL_CRYPTO_F_CRYPTO_GET_EX_NEW_INDEX = 100;
  OPENSSL_CRYPTO_F_CRYPTO_GET_NEW_LOCKID = 101;
  OPENSSL_CRYPTO_F_CRYPTO_SET_EX_DATA = 102;
  OPENSSL_CRYPTO_LOCK = 1;
  OPENSSL_CRYPTO_LOCK_BIO = 19;
  OPENSSL_CRYPTO_LOCK_DSA = 8;
  OPENSSL_CRYPTO_LOCK_ERR = 1;
  OPENSSL_CRYPTO_LOCK_ERR_HASH = 2;
  OPENSSL_CRYPTO_LOCK_EVP_PKEY = 10;
  OPENSSL_CRYPTO_LOCK_GETHOSTBYNAME = 20;
  OPENSSL_CRYPTO_LOCK_GETSERVBYNAME = 21;
  OPENSSL_CRYPTO_LOCK_MALLOC = 18;
  OPENSSL_CRYPTO_LOCK_RAND = 17;
  OPENSSL_CRYPTO_LOCK_READDIR = 22;
  OPENSSL_CRYPTO_LOCK_RSA = 9;
  OPENSSL_CRYPTO_LOCK_RSA_BLINDING = 23;
  OPENSSL_CRYPTO_LOCK_SSL = 16;
  OPENSSL_CRYPTO_LOCK_SSL_CERT = 13;
  OPENSSL_CRYPTO_LOCK_SSL_CTX = 12;
  OPENSSL_CRYPTO_LOCK_SSL_SESSION = 14;
  OPENSSL_CRYPTO_LOCK_SSL_SESS_CERT = 15;
  OPENSSL_CRYPTO_LOCK_X509 = 3;
  OPENSSL_CRYPTO_LOCK_X509_CRL = 6;
  OPENSSL_CRYPTO_LOCK_X509_INFO = 4;
  OPENSSL_CRYPTO_LOCK_X509_PKEY = 5;
  OPENSSL_CRYPTO_LOCK_X509_REQ = 7;
  OPENSSL_CRYPTO_LOCK_X509_STORE = 11;
  OPENSSL_CRYPTO_MEM_CHECK_DISABLE = $3;
  OPENSSL_CRYPTO_MEM_CHECK_ENABLE = $2;
  OPENSSL_CRYPTO_MEM_CHECK_OFF = $0;
  OPENSSL_CRYPTO_MEM_CHECK_ON = $1;
  OPENSSL_CRYPTO_NUM_LOCKS = 24;
  OPENSSL_CRYPTO_READ = 4;
  OPENSSL_CRYPTO_UNLOCK = 2;
  OPENSSL_CRYPTO_WRITE = 8;
  OPENSSL_DES_CBC_MODE = 0;
  OPENSSL_DES_DECRYPT = 0;
  OPENSSL_DES_ENCRYPT = 1;
  OPENSSL_DES_PCBC_MODE = 1;
  OPENSSL_DH_CHECK_P_NOT_PRIME = $01;
  OPENSSL_DH_CHECK_P_NOT_STRONG_PRIME = $02;
  OPENSSL_DH_FLAG_CACHE_MONT_P = $01;
  OPENSSL_DH_F_DHPARAMS_PRINT = 100;
  OPENSSL_DH_F_DHPARAMS_PRINT_FP = 101;
  OPENSSL_DH_F_DH_COMPUTE_KEY = 102;
  OPENSSL_DH_F_DH_GENERATE_KEY = 103;
  OPENSSL_DH_F_DH_GENERATE_PARAMETERS = 104;
  OPENSSL_DH_F_DH_NEW = 105;
  OPENSSL_DH_GENERATOR_2 = 2;
  OPENSSL_DH_GENERATOR_5 = 5;
  OPENSSL_DH_NOT_SUITABLE_GENERATOR = $08;
  OPENSSL_DH_R_NO_PRIVATE_VALUE = 100;
  OPENSSL_DH_UNABLE_TO_CHECK_GENERATOR = $04;
  OPENSSL_DSA_FLAG_CACHE_MONT_P = $01;
  OPENSSL_DSA_F_D2I_DSA_SIG = 110;
  OPENSSL_DSA_F_DSAPARAMS_PRINT = 100;
  OPENSSL_DSA_F_DSAPARAMS_PRINT_FP = 101;
  OPENSSL_DSA_F_DSA_DO_SIGN = 112;
  OPENSSL_DSA_F_DSA_DO_VERIFY = 113;
  OPENSSL_DSA_F_DSA_IS_PRIME = 102;
  OPENSSL_DSA_F_DSA_NEW = 103;
  OPENSSL_DSA_F_DSA_PRINT = 104;
  OPENSSL_DSA_F_DSA_PRINT_FP = 105;
  OPENSSL_DSA_F_DSA_SIGN = 106;
  OPENSSL_DSA_F_DSA_SIGN_SETUP = 107;
  OPENSSL_DSA_F_DSA_SIG_NEW = 109;
  OPENSSL_DSA_F_DSA_VERIFY = 108;
  OPENSSL_DSA_F_I2D_DSA_SIG = 111;
  OPENSSL_DSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE = 100;
  OPENSSL_EVP_BLOWFISH_KEY_SIZE = 16;
  OPENSSL_EVP_CAST5_KEY_SIZE = 16;
  OPENSSL_EVP_F_D2I_PKEY = 100;
  OPENSSL_EVP_F_EVP_DECRYPTFINAL = 101;
  OPENSSL_EVP_F_EVP_MD_CTX_COPY = 110;
  OPENSSL_EVP_F_EVP_OPENINIT = 102;
  OPENSSL_EVP_F_EVP_PBE_ALG_ADD = 115;
  OPENSSL_EVP_F_EVP_PBE_CIPHERINIT = 116;
  OPENSSL_EVP_F_EVP_PKCS82PKEY = 111;
  OPENSSL_EVP_F_EVP_PKCS8_SET_BROKEN = 112;
  OPENSSL_EVP_F_EVP_PKEY2PKCS8 = 113;
  OPENSSL_EVP_F_EVP_PKEY_COPY_PARAMETERS = 103;
  OPENSSL_EVP_F_EVP_PKEY_DECRYPT = 104;
  OPENSSL_EVP_F_EVP_PKEY_ENCRYPT = 105;
  OPENSSL_EVP_F_EVP_PKEY_NEW = 106;
  OPENSSL_EVP_F_EVP_SIGNFINAL = 107;
  OPENSSL_EVP_F_EVP_VERIFYFINAL = 108;
  OPENSSL_EVP_F_PKCS5_PBE_KEYIVGEN = 117;
  OPENSSL_EVP_F_PKCS5_V2_PBE_KEYIVGEN = 118;
  OPENSSL_EVP_F_RC2_MAGIC_TO_METH = 109;
  OPENSSL_EVP_MAX_IV_LENGTH = 8;
  OPENSSL_EVP_MAX_KEY_LENGTH = 24;
  OPENSSL_EVP_MAX_MD_SIZE = 16 + 20;
  OPENSSL_NID_dhKeyAgreement = 28;
  OPENSSL_EVP_PKEY_DH = OPENSSL_NID_dhKeyAgreement;
  OPENSSL_NID_dsa = 116;
  OPENSSL_EVP_PKEY_DSA = OPENSSL_NID_dsa;
  OPENSSL_NID_dsa_2 = 67;
  OPENSSL_EVP_PKEY_DSA1 = OPENSSL_NID_dsa_2;
  OPENSSL_NID_dsaWithSHA = 66;
  OPENSSL_EVP_PKEY_DSA2 = OPENSSL_NID_dsaWithSHA;
  OPENSSL_NID_dsaWithSHA1 = 113;
  OPENSSL_EVP_PKEY_DSA3 = OPENSSL_NID_dsaWithSHA1;
  OPENSSL_NID_dsaWithSHA1_2 = 70;
  OPENSSL_EVP_PKEY_DSA4 = OPENSSL_NID_dsaWithSHA1_2;
  OPENSSL_EVP_PKEY_MO_DECRYPT = $0008;
  OPENSSL_EVP_PKEY_MO_ENCRYPT = $0004;
  OPENSSL_EVP_PKEY_MO_SIGN = $0001;
  OPENSSL_EVP_PKEY_MO_VERIFY = $0002;
  OPENSSL_NID_undef = 0;
  OPENSSL_EVP_PKEY_NONE = OPENSSL_NID_undef;
  OPENSSL_NID_rsaEncryption = 6;
  OPENSSL_EVP_PKEY_RSA = OPENSSL_NID_rsaEncryption;
  OPENSSL_NID_rsa = 19;
  OPENSSL_EVP_PKEY_RSA2 = OPENSSL_NID_rsa;
  OPENSSL_EVP_PKS_DSA = $0200;
  OPENSSL_EVP_PKS_RSA = $0100;
  OPENSSL_EVP_PKT_ENC = $0020;
  OPENSSL_EVP_PKT_EXCH = $0040;
  OPENSSL_EVP_PKT_EXP = $1000;
  OPENSSL_EVP_PKT_SIGN = $0010;
  OPENSSL_EVP_PK_DH = $0004;
  OPENSSL_EVP_PK_DSA = $0002;
  OPENSSL_EVP_PK_RSA = $0001;
  OPENSSL_EVP_RC2_KEY_SIZE = 16;
  OPENSSL_EVP_RC4_KEY_SIZE = 16;
  OPENSSL_EVP_RC5_32_12_16_KEY_SIZE = 16;
  OPENSSL_EVP_R_BAD_DECRYPT = 100;
  OPENSSL_EVP_R_BN_DECODE_ERROR = 112;
  OPENSSL_EVP_R_BN_PUBKEY_ERROR = 113;
  OPENSSL_EVP_R_CIPHER_PARAMETER_ERROR = 122;
  OPENSSL_EVP_R_DECODE_ERROR = 114;
  OPENSSL_EVP_R_DIFFERENT_KEY_TYPES = 101;
  OPENSSL_EVP_R_ENCODE_ERROR = 115;
  OPENSSL_EVP_R_EVP_PBE_CIPHERINIT_ERROR = 119;
  OPENSSL_EVP_R_INPUT_NOT_INITIALIZED = 111;
  OPENSSL_EVP_R_IV_TOO_LARGE = 102;
  OPENSSL_EVP_R_KEYGEN_FAILURE = 120;
  OPENSSL_EVP_R_MISSING_PARMATERS = 103;
  OPENSSL_EVP_R_NO_DSA_PARAMETERS = 116;
  OPENSSL_EVP_R_NO_SIGN_FUNCTION_CONFIGURED = 104;
  OPENSSL_EVP_R_NO_VERIFY_FUNCTION_CONFIGURED = 105;
  OPENSSL_EVP_R_PKCS8_UNKNOWN_BROKEN_TYPE = 117;
  OPENSSL_EVP_R_PUBLIC_KEY_NOT_RSA = 106;
  OPENSSL_EVP_R_UNKNOWN_PBE_ALGORITHM = 121;
  OPENSSL_EVP_R_UNSUPPORTED_CIPHER = 107;
  OPENSSL_EVP_R_UNSUPPORTED_KEYLENGTH = 123;
  OPENSSL_EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION = 124;
  OPENSSL_EVP_R_UNSUPPORTED_KEY_SIZE = 108;
  OPENSSL_EVP_R_UNSUPPORTED_PRF = 125;
  OPENSSL_EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM = 118;
  OPENSSL_EVP_R_UNSUPPORTED_SALT_TYPE = 126;
  OPENSSL_EVP_R_WRONG_FINAL_BLOCK_LENGTH = 109;
  OPENSSL_EVP_R_WRONG_PUBLIC_KEY_TYPE = 110;
  OPENSSL_MSS_EXIT_FAILURE = 1;
  OPENSSL_MSS_EXIT_SUCCESS = 0;
  OPENSSL_FILENAME_MAX = 1024;
  OPENSSL_FOPEN_MAX = 20;
  OPENSSL_IDEA_BLOCK = 8;
  OPENSSL_IDEA_DECRYPT = 0;
  OPENSSL_IDEA_ENCRYPT = 1;
  OPENSSL_IDEA_KEY_LENGTH = 16;
  OPENSSL_IS_SEQUENCE = 0;
  OPENSSL_IS_SET = 1;
  OPENSSL_KRBDES_DECRYPT = OPENSSL_DES_DECRYPT;
  OPENSSL_KRBDES_ENCRYPT = OPENSSL_DES_ENCRYPT;
  OPENSSL_LH_LOAD_MULT = 256;
  OPENSSL_LN_SMIMECapabilities = 'S/MIME Capabilities';
  OPENSSL_LN_X500 = 'X500';
  OPENSSL_LN_X509 = 'X509';
  OPENSSL_LN_algorithm = 'algorithm';
  OPENSSL_LN_authority_key_identifier = 'X509v3 Authority Key Identifier';
  OPENSSL_LN_basic_constraints = 'X509v3 Basic Constraints';
  OPENSSL_LN_bf_cbc = 'bf-cbc';
  OPENSSL_LN_bf_cfb64 = 'bf-cfb';
  OPENSSL_LN_bf_ecb = 'bf-ecb';
  OPENSSL_LN_bf_ofb64 = 'bf-ofb';
  OPENSSL_LN_cast5_cbc = 'cast5-cbc';
  OPENSSL_LN_cast5_cfb64 = 'cast5-cfb';
  OPENSSL_LN_cast5_ecb = 'cast5-ecb';
  OPENSSL_LN_cast5_ofb64 = 'cast5-ofb';
  OPENSSL_LN_certBag = 'certBag';
  OPENSSL_LN_certificate_policies = 'X509v3 Certificate Policies';
  OPENSSL_LN_client_auth = 'TLS Web Client Authentication';
  OPENSSL_LN_code_sign = 'Code Signing';
  OPENSSL_LN_commonName = 'commonName';
  OPENSSL_LN_countryName = 'countryName';
  OPENSSL_LN_crlBag = 'crlBag';
  OPENSSL_LN_crl_distribution_points = 'X509v3 CRL Distribution Points';
  OPENSSL_LN_crl_number = 'X509v3 CRL Number';
  OPENSSL_LN_crl_reason = 'CRL Reason Code';
  OPENSSL_LN_delta_crl = 'X509v3 Delta CRL Indicator';
  OPENSSL_LN_des_cbc = 'des-cbc';
  OPENSSL_LN_des_cfb64 = 'des-cfb';
  OPENSSL_LN_des_ecb = 'des-ecb';
  OPENSSL_LN_des_ede = 'des-ede';
  OPENSSL_LN_des_ede3 = 'des-ede3';
  OPENSSL_LN_des_ede3_cbc = 'des-ede3-cbc';
  OPENSSL_LN_des_ede3_cfb64 = 'des-ede3-cfb';
  OPENSSL_LN_des_ede3_ofb64 = 'des-ede3-ofb';
  OPENSSL_LN_des_ede_cbc = 'des-ede-cbc';
  OPENSSL_LN_des_ede_cfb64 = 'des-ede-cfb';
  OPENSSL_LN_des_ede_ofb64 = 'des-ede-ofb';
  OPENSSL_LN_des_ofb64 = 'des-ofb';
  OPENSSL_LN_description = 'description';
  OPENSSL_LN_desx_cbc = 'desx-cbc';
  OPENSSL_LN_dhKeyAgreement = 'dhKeyAgreement';
  OPENSSL_LN_dsa = 'dsaEncryption';
  OPENSSL_LN_dsaWithSHA = 'dsaWithSHA';
  OPENSSL_LN_dsaWithSHA1 = 'dsaWithSHA1';
  OPENSSL_LN_dsaWithSHA1_2 = 'dsaWithSHA1-old';
  OPENSSL_LN_dsa_2 = 'dsaEncryption-old';
  OPENSSL_LN_email_protect = 'E-mail Protection';
  OPENSSL_LN_ext_key_usage = 'X509v3 Extended Key Usage';
  OPENSSL_LN_friendlyName = 'friendlyName';
  OPENSSL_LN_givenName = 'givenName';
  OPENSSL_LN_hmacWithSHA1 = 'hmacWithSHA1';
  OPENSSL_LN_id_pbkdf2 = 'PBKDF2';
  OPENSSL_LN_id_qt_cps = 'Policy Qualifier CPS';
  OPENSSL_LN_id_qt_unotice = 'Policy Qualifier User Notice';
  OPENSSL_LN_idea_cbc = 'idea-cbc';
  OPENSSL_LN_idea_cfb64 = 'idea-cfb';
  OPENSSL_LN_idea_ecb = 'idea-ecb';
  OPENSSL_LN_idea_ofb64 = 'idea-ofb';
  OPENSSL_LN_initials = 'initials';
  OPENSSL_LN_invalidity_date = 'Invalidity Date';
  OPENSSL_LN_issuer_alt_name = 'X509v3 Issuer Alternative Name';
  OPENSSL_LN_keyBag = 'keyBag';
  OPENSSL_LN_key_usage = 'X509v3 Key Usage';
  OPENSSL_LN_localKeyID = 'localKeyID';
  OPENSSL_LN_localityName = 'localityName';
  OPENSSL_LN_md2 = 'md2';
  OPENSSL_LN_md2WithRSAEncryption = 'md2WithRSAEncryption';
  OPENSSL_LN_md5 = 'md5';
  OPENSSL_LN_md5WithRSA = 'md5WithRSA';
  OPENSSL_LN_md5WithRSAEncryption = 'md5WithRSAEncryption';
  OPENSSL_LN_md5_sha1 = 'md5-sha1';
  OPENSSL_LN_mdc2 = 'mdc2';
  OPENSSL_LN_mdc2WithRSA = 'mdc2withRSA';
  OPENSSL_LN_ms_code_com = 'Microsoft Commercial Code Signing';
  OPENSSL_LN_ms_code_ind = 'Microsoft Individual Code Signing';
  OPENSSL_LN_ms_ctl_sign = 'Microsoft Trust List Signing';
  OPENSSL_LN_ms_efs = 'Microsoft Encrypted File System';
  OPENSSL_LN_ms_sgc = 'Microsoft Server Gated Crypto';
  OPENSSL_LN_netscape = 'Netscape Communications Corp.';
  OPENSSL_LN_netscape_base_url = 'Netscape Base Url';
  OPENSSL_LN_netscape_ca_policy_url = 'Netscape CA Policy Url';
  OPENSSL_LN_netscape_ca_revocation_url = 'Netscape CA Revocation Url';
  OPENSSL_LN_netscape_cert_extension = 'Netscape Certificate Extension';
  OPENSSL_LN_netscape_cert_sequence = 'Netscape Certificate Sequence';
  OPENSSL_LN_netscape_cert_type = 'Netscape Cert Type';
  OPENSSL_LN_netscape_comment = 'Netscape Comment';
  OPENSSL_LN_netscape_data_type = 'Netscape Data Type';
  OPENSSL_LN_netscape_renewal_url = 'Netscape Renewal Url';
  OPENSSL_LN_netscape_revocation_url = 'Netscape Revocation Url';
  OPENSSL_LN_netscape_ssl_server_name = 'Netscape SSL Server Name';
  OPENSSL_LN_ns_sgc = 'Netscape Server Gated Crypto';
  OPENSSL_LN_organizationName = 'organizationName';
  OPENSSL_LN_organizationalUnitName = 'organizationalUnitName';
  OPENSSL_LN_pbeWithMD2AndDES_CBC = 'pbeWithMD2AndDES-CBC';
  OPENSSL_LN_pbeWithMD2AndRC2_CBC = 'pbeWithMD2AndRC2-CBC';
  OPENSSL_LN_pbeWithMD5AndCast5_CBC = 'pbeWithMD5AndCast5CBC';
  OPENSSL_LN_pbeWithMD5AndDES_CBC = 'pbeWithMD5AndDES-CBC';
  OPENSSL_LN_pbeWithMD5AndRC2_CBC = 'pbeWithMD5AndRC2-CBC';
  OPENSSL_LN_pbeWithSHA1AndDES_CBC = 'pbeWithSHA1AndDES-CBC';
  OPENSSL_LN_pbeWithSHA1AndRC2_CBC = 'pbeWithSHA1AndRC2-CBC';
  OPENSSL_LN_pbe_WithSHA1And128BitRC2_CBC = 'pbeWithSHA1And128BitRC2-CBC';
  OPENSSL_LN_pbe_WithSHA1And128BitRC4 = 'pbeWithSHA1And128BitRC4';
  OPENSSL_LN_pbe_WithSHA1And2_Key_TripleDES_CBC =
    'pbeWithSHA1And2-KeyTripleDES-CBC';
  OPENSSL_LN_pbe_WithSHA1And3_Key_TripleDES_CBC =
    'pbeWithSHA1And3-KeyTripleDES-CBC';
  OPENSSL_LN_pbe_WithSHA1And40BitRC2_CBC = 'pbeWithSHA1And40BitRC2-CBC';
  OPENSSL_LN_pbe_WithSHA1And40BitRC4 = 'pbeWithSHA1And40BitRC4';
  OPENSSL_LN_pbes2 = 'PBES2';
  OPENSSL_LN_pbmac1 = 'PBMAC1';
  OPENSSL_LN_pkcs = 'pkcs';
  OPENSSL_LN_pkcs3 = 'pkcs3';
  OPENSSL_LN_pkcs7 = 'pkcs7';
  OPENSSL_LN_pkcs7_data = 'pkcs7-data';
  OPENSSL_LN_pkcs7_digest = 'pkcs7-digestData';
  OPENSSL_LN_pkcs7_encrypted = 'pkcs7-encryptedData';
  OPENSSL_LN_pkcs7_enveloped = 'pkcs7-envelopedData';
  OPENSSL_LN_pkcs7_signed = 'pkcs7-signedData';
  OPENSSL_LN_pkcs7_signedAndEnveloped = 'pkcs7-signedAndEnvelopedData';
  OPENSSL_LN_pkcs8ShroudedKeyBag = 'pkcs8ShroudedKeyBag';
  OPENSSL_LN_pkcs9 = 'pkcs9';
  OPENSSL_LN_pkcs9_challengePassword = 'challengePassword';
  OPENSSL_LN_pkcs9_contentType = 'contentType';
  OPENSSL_LN_pkcs9_countersignature = 'countersignature';
  OPENSSL_LN_pkcs9_emailAddress = 'emailAddress';
  OPENSSL_LN_pkcs9_extCertAttributes = 'extendedCertificateAttributes';
  OPENSSL_LN_pkcs9_messageDigest = 'messageDigest';
  OPENSSL_LN_pkcs9_signingTime = 'signingTime';
  OPENSSL_LN_pkcs9_unstructuredAddress = 'unstructuredAddress';
  OPENSSL_LN_pkcs9_unstructuredName = 'unstructuredName';
  OPENSSL_LN_private_key_usage_period = 'X509v3 Private Key Usage Period';
  OPENSSL_LN_rc2_40_cbc = 'rc2-40-cbc';
  OPENSSL_LN_rc2_64_cbc = 'rc2-64-cbc';
  OPENSSL_LN_rc2_cbc = 'rc2-cbc';
  OPENSSL_LN_rc2_cfb64 = 'rc2-cfb';
  OPENSSL_LN_rc2_ecb = 'rc2-ecb';
  OPENSSL_LN_rc2_ofb64 = 'rc2-ofb';
  OPENSSL_LN_rc4 = 'rc4';
  OPENSSL_LN_rc4_40 = 'rc4-40';
  OPENSSL_LN_rc5_cbc = 'rc5-cbc';
  OPENSSL_LN_rc5_cfb64 = 'rc5-cfb';
  OPENSSL_LN_rc5_ecb = 'rc5-ecb';
  OPENSSL_LN_rc5_ofb64 = 'rc5-ofb';
  OPENSSL_LN_ripemd160 = 'ripemd160';
  OPENSSL_LN_ripemd160WithRSA = 'ripemd160WithRSA';
  OPENSSL_LN_rle_compression = 'run length compression';
  OPENSSL_LN_rsa = 'rsa';
  OPENSSL_LN_rsaEncryption = 'rsaEncryption';
  OPENSSL_LN_rsadsi = 'rsadsi';
  OPENSSL_LN_safeContentsBag = 'safeContentsBag';
  OPENSSL_LN_sdsiCertificate = 'sdsiCertificate';
  OPENSSL_LN_secretBag = 'secretBag';
  OPENSSL_LN_serialNumber = 'serialNumber';
  OPENSSL_LN_server_auth = 'TLS Web Server Authentication';
  OPENSSL_LN_sha = 'sha';
  OPENSSL_LN_sha1 = 'sha1';
  OPENSSL_LN_sha1WithRSA = 'sha1WithRSA';
  OPENSSL_LN_sha1WithRSAEncryption = 'sha1WithRSAEncryption';
  OPENSSL_LN_shaWithRSAEncryption = 'shaWithRSAEncryption';
  OPENSSL_LN_stateOrProvinceName = 'stateOrProvinceName';
  OPENSSL_LN_subject_alt_name = 'X509v3 Subject Alternative Name';
  OPENSSL_LN_subject_key_identifier = 'X509v3 Subject Key Identifier';
  OPENSSL_LN_surname = 'surname';
  OPENSSL_LN_sxnet = 'Strong Extranet ID';
  OPENSSL_LN_time_stamp = 'Time Stamping';
  OPENSSL_LN_title = 'title';
  OPENSSL_LN_undef = 'undefined';
  OPENSSL_LN_uniqueIdentifier = 'uniqueIdentifier';
  OPENSSL_LN_x509Certificate = 'x509Certificate';
  OPENSSL_LN_x509Crl = 'x509Crl';
  OPENSSL_LN_zlib_compression = 'zlib compression';
  OPENSSL_L_ctermid = 16;
  OPENSSL_L_cuserid = 9;
  OPENSSL_L_tmpnam = 1024;
  OPENSSL_MD2_BLOCK = 16;
  OPENSSL_MD2_DIGEST_LENGTH = 16;
  OPENSSL_MD5_CBLOCK = 64;
  OPENSSL_MD5_DIGEST_LENGTH = 16;
  OPENSSL_MDC2_BLOCK = 8;
  OPENSSL_MDC2_DIGEST_LENGTH = 16;
  OPENSSL_NID_SMIMECapabilities = 167;
  OPENSSL_NID_X500 = 11;
  OPENSSL_NID_X509 = 12;
  OPENSSL_NID_algorithm = 38;
  OPENSSL_NID_authority_key_identifier = 90;
  OPENSSL_NID_basic_constraints = 87;
  OPENSSL_NID_bf_cbc = 91;
  OPENSSL_NID_bf_cfb64 = 93;
  OPENSSL_NID_bf_ecb = 92;
  OPENSSL_NID_bf_ofb64 = 94;
  OPENSSL_NID_cast5_cbc = 108;
  OPENSSL_NID_cast5_cfb64 = 110;
  OPENSSL_NID_cast5_ecb = 109;
  OPENSSL_NID_cast5_ofb64 = 111;
  OPENSSL_NID_certBag = 152;
  OPENSSL_NID_certificate_policies = 89;
  OPENSSL_NID_client_auth = 130;
  OPENSSL_NID_code_sign = 131;
  OPENSSL_NID_commonName = 13;
  OPENSSL_NID_countryName = 14;
  OPENSSL_NID_crlBag = 153;
  OPENSSL_NID_crl_distribution_points = 103;
  OPENSSL_NID_crl_number = 88;
  OPENSSL_NID_crl_reason = 141;
  OPENSSL_NID_delta_crl = 140;
  OPENSSL_NID_des_cbc = 31;
  OPENSSL_NID_des_cfb64 = 30;
  OPENSSL_NID_des_ecb = 29;
  OPENSSL_NID_des_ede = 32;
  OPENSSL_NID_des_ede3 = 33;
  OPENSSL_NID_des_ede3_cbc = 44;
  OPENSSL_NID_des_ede3_cfb64 = 61;
  OPENSSL_NID_des_ede3_ofb64 = 63;
  OPENSSL_NID_des_ede_cbc = 43;
  OPENSSL_NID_des_ede_cfb64 = 60;
  OPENSSL_NID_des_ede_ofb64 = 62;
  OPENSSL_NID_des_ofb64 = 45;
  OPENSSL_NID_description = 107;
  OPENSSL_NID_desx_cbc = 80;
  OPENSSL_NID_email_protect = 132;
  OPENSSL_NID_ext_key_usage = 126;
  OPENSSL_NID_friendlyName = 156;
  OPENSSL_NID_givenName = 99;
  OPENSSL_NID_hmacWithSHA1 = 163;
  OPENSSL_NID_id_kp = 128;
  OPENSSL_NID_id_pbkdf2 = 69;
  OPENSSL_NID_id_pkix = 127;
  OPENSSL_NID_id_qt_cps = 164;
  OPENSSL_NID_id_qt_unotice = 165;
  OPENSSL_NID_idea_cbc = 34;
  OPENSSL_NID_idea_cfb64 = 35;
  OPENSSL_NID_idea_ecb = 36;
  OPENSSL_NID_idea_ofb64 = 46;
  OPENSSL_NID_initials = 101;
  OPENSSL_NID_invalidity_date = 142;
  OPENSSL_NID_issuer_alt_name = 86;
  OPENSSL_NID_keyBag = 150;
  OPENSSL_NID_key_usage = 83;
  OPENSSL_NID_ld_ce = 81;
  OPENSSL_NID_localKeyID = 157;
  OPENSSL_NID_localityName = 15;
  OPENSSL_NID_md2 = 3;
  OPENSSL_NID_md2WithRSAEncryption = 7;
  OPENSSL_NID_md5 = 4;
  OPENSSL_NID_md5WithRSA = 104;
  OPENSSL_NID_md5WithRSAEncryption = 8;
  OPENSSL_NID_md5_sha1 = 114;
  OPENSSL_NID_mdc2 = 95;
  OPENSSL_NID_mdc2WithRSA = 96;
  OPENSSL_NID_ms_code_com = 135;
  OPENSSL_NID_ms_code_ind = 134;
  OPENSSL_NID_ms_ctl_sign = 136;
  OPENSSL_NID_ms_efs = 138;
  OPENSSL_NID_ms_sgc = 137;
  OPENSSL_NID_netscape = 57;
  OPENSSL_NID_netscape_base_url = 72;
  OPENSSL_NID_netscape_ca_policy_url = 76;
  OPENSSL_NID_netscape_ca_revocation_url = 74;
  OPENSSL_NID_netscape_cert_extension = 58;
  OPENSSL_NID_netscape_cert_sequence = 79;
  OPENSSL_NID_netscape_cert_type = 71;
  OPENSSL_NID_netscape_comment = 78;
  OPENSSL_NID_netscape_data_type = 59;
  OPENSSL_NID_netscape_renewal_url = 75;
  OPENSSL_NID_netscape_revocation_url = 73;
  OPENSSL_NID_netscape_ssl_server_name = 77;
  OPENSSL_NID_ns_sgc = 139;
  OPENSSL_NID_organizationName = 17;
  OPENSSL_NID_organizationalUnitName = 18;
  OPENSSL_NID_pbeWithMD2AndDES_CBC = 9;
  OPENSSL_NID_pbeWithMD2AndRC2_CBC = 168;
  OPENSSL_NID_pbeWithMD5AndCast5_CBC = 112;
  OPENSSL_NID_pbeWithMD5AndDES_CBC = 10;
  OPENSSL_NID_pbeWithMD5AndRC2_CBC = 169;
  OPENSSL_NID_pbeWithSHA1AndDES_CBC = 170;
  OPENSSL_NID_pbeWithSHA1AndRC2_CBC = 68;
  OPENSSL_NID_pbe_WithSHA1And128BitRC2_CBC = 148;
  OPENSSL_NID_pbe_WithSHA1And128BitRC4 = 144;
  OPENSSL_NID_pbe_WithSHA1And2_Key_TripleDES_CBC = 147;
  OPENSSL_NID_pbe_WithSHA1And3_Key_TripleDES_CBC = 146;
  OPENSSL_NID_pbe_WithSHA1And40BitRC2_CBC = 149;
  OPENSSL_NID_pbe_WithSHA1And40BitRC4 = 145;
  OPENSSL_NID_pbes2 = 161;
  OPENSSL_NID_pbmac1 = 162;
  OPENSSL_NID_pkcs = 2;
  OPENSSL_NID_pkcs3 = 27;
  OPENSSL_NID_pkcs7 = 20;
  OPENSSL_NID_pkcs7_data = 21;
  OPENSSL_NID_pkcs7_digest = 25;
  OPENSSL_NID_pkcs7_encrypted = 26;
  OPENSSL_NID_pkcs7_enveloped = 23;
  OPENSSL_NID_pkcs7_signed = 22;
  OPENSSL_NID_pkcs7_signedAndEnveloped = 24;
  OPENSSL_NID_pkcs8ShroudedKeyBag = 151;
  OPENSSL_NID_pkcs9 = 47;
  OPENSSL_NID_pkcs9_challengePassword = 54;
  OPENSSL_NID_pkcs9_contentType = 50;
  OPENSSL_NID_pkcs9_countersignature = 53;
  OPENSSL_NID_pkcs9_emailAddress = 48;
  OPENSSL_NID_pkcs9_extCertAttributes = 56;
  OPENSSL_NID_pkcs9_messageDigest = 51;
  OPENSSL_NID_pkcs9_signingTime = 52;
  OPENSSL_NID_pkcs9_unstructuredAddress = 55;
  OPENSSL_NID_pkcs9_unstructuredName = 49;
  OPENSSL_NID_private_key_usage_period = 84;
  OPENSSL_NID_rc2_40_cbc = 98;
  OPENSSL_NID_rc2_64_cbc = 166;
  OPENSSL_NID_rc2_cbc = 37;
  OPENSSL_NID_rc2_cfb64 = 39;
  OPENSSL_NID_rc2_ecb = 38;
  OPENSSL_NID_rc2_ofb64 = 40;
  OPENSSL_NID_rc4 = 5;
  OPENSSL_NID_rc4_40 = 97;
  OPENSSL_NID_rc5_cbc = 120;
  OPENSSL_NID_rc5_cfb64 = 122;
  OPENSSL_NID_rc5_ecb = 121;
  OPENSSL_NID_rc5_ofb64 = 123;
  OPENSSL_NID_ripemd160 = 117;
  OPENSSL_NID_ripemd160WithRSA = 119;
  OPENSSL_NID_rle_compression = 124;
  OPENSSL_NID_rsadsi = 1;
  OPENSSL_NID_safeContentsBag = 155;
  OPENSSL_NID_sdsiCertificate = 159;
  OPENSSL_NID_secretBag = 154;
  OPENSSL_NID_serialNumber = 105;
  OPENSSL_NID_server_auth = 129;
  OPENSSL_NID_sha = 41;
  OPENSSL_NID_sha1 = 64;
  OPENSSL_NID_sha1WithRSA = 115;
  OPENSSL_NID_sha1WithRSAEncryption = 65;
  OPENSSL_NID_shaWithRSAEncryption = 42;
  OPENSSL_NID_stateOrProvinceName = 16;
  OPENSSL_NID_subject_alt_name = 85;
  OPENSSL_NID_subject_key_identifier = 82;
  OPENSSL_NID_surname = 100;
  OPENSSL_NID_sxnet = 143;
  OPENSSL_NID_time_stamp = 133;
  OPENSSL_NID_title = 106;
  OPENSSL_NID_uniqueIdentifier = 102;
  OPENSSL_NID_x509Certificate = 158;
  OPENSSL_NID_x509Crl = 160;
  OPENSSL_NID_zlib_compression = 125;
  OPENSSL_OBJ_F_OBJ_CREATE = 100;
  OPENSSL_OBJ_F_OBJ_DUP = 101;
  OPENSSL_OBJ_F_OBJ_NID2LN = 102;
  OPENSSL_OBJ_F_OBJ_NID2OBJ = 103;
  OPENSSL_OBJ_F_OBJ_NID2SN = 104;
  OPENSSL_OBJ_NAME_ALIAS = $8000;
  OPENSSL_OBJ_NAME_TYPE_CIPHER_METH = $02;
  OPENSSL_OBJ_NAME_TYPE_COMP_METH = $04;
  OPENSSL_OBJ_NAME_TYPE_MD_METH = $01;
  OPENSSL_OBJ_NAME_TYPE_NUM = $05;
  OPENSSL_OBJ_NAME_TYPE_PKEY_METH = $03;
  OPENSSL_OBJ_NAME_TYPE_UNDEF = $00;
  OPENSSL_OBJ_R_MALLOC_FAILURE = 100;
  OPENSSL_OBJ_R_UNKNOWN_NID = 101;
  OPENSSL_OPENSSL_VERSION_NUMBER = $00904100;
  OPENSSL_OPENSSL_VERSION_TEXT = 'OpenSSL 0.9.4 09 Aug 1999';
  OPENSSL_PEM_BUFSIZE = 1024;
  OPENSSL_PEM_DEK_DES_CBC = 40;
  OPENSSL_PEM_DEK_DES_ECB = 60;
  OPENSSL_PEM_DEK_DES_EDE = 50;
  OPENSSL_PEM_DEK_IDEA_CBC = 45;
  OPENSSL_PEM_DEK_RSA = 70;
  OPENSSL_PEM_DEK_RSA_MD2 = 80;
  OPENSSL_PEM_DEK_RSA_MD5 = 90;
  OPENSSL_PEM_ERROR = 30;
  OPENSSL_PEM_F_DEF_CALLBACK = 100;
  OPENSSL_PEM_F_LOAD_IV = 101;
  OPENSSL_PEM_F_PEM_ASN1_READ = 102;
  OPENSSL_PEM_F_PEM_ASN1_READ_BIO = 103;
  OPENSSL_PEM_F_PEM_ASN1_WRITE = 104;
  OPENSSL_PEM_F_PEM_ASN1_WRITE_BIO = 105;
  OPENSSL_PEM_F_PEM_DO_HEADER = 106;
  OPENSSL_PEM_F_PEM_F_PEM_WRITE_PKCS8PRIVATEKEY = 118;
  OPENSSL_PEM_F_PEM_GET_EVP_CIPHER_INFO = 107;
  OPENSSL_PEM_F_PEM_READ = 108;
  OPENSSL_PEM_F_PEM_READ_BIO = 109;
  OPENSSL_PEM_F_PEM_SEALFINAL = 110;
  OPENSSL_PEM_F_PEM_SEALINIT = 111;
  OPENSSL_PEM_F_PEM_SIGNFINAL = 112;
  OPENSSL_PEM_F_PEM_WRITE = 113;
  OPENSSL_PEM_F_PEM_WRITE_BIO = 114;
  OPENSSL_PEM_F_PEM_WRITE_BIO_PKCS8PRIVATEKEY = 119;
  OPENSSL_PEM_F_PEM_X509_INFO_READ = 115;
  OPENSSL_PEM_F_PEM_X509_INFO_READ_BIO = 116;
  OPENSSL_PEM_F_PEM_X509_INFO_WRITE_BIO = 117;
  OPENSSL_PEM_MD_MD2 = OPENSSL_NID_md2;
  OPENSSL_PEM_MD_MD2_RSA = OPENSSL_NID_md2WithRSAEncryption;
  OPENSSL_PEM_MD_MD5 = OPENSSL_NID_md5;
  OPENSSL_PEM_MD_MD5_RSA = OPENSSL_NID_md5WithRSAEncryption;
  OPENSSL_PEM_MD_SHA = OPENSSL_NID_sha;
  OPENSSL_PEM_MD_SHA_RSA = OPENSSL_NID_sha1WithRSAEncryption;
  OPENSSL_PEM_OBJ_CRL = 3;
  OPENSSL_PEM_OBJ_DHPARAMS = 17;
  OPENSSL_PEM_OBJ_DSAPARAMS = 18;
  OPENSSL_PEM_OBJ_PRIV_DH = 13;
  OPENSSL_PEM_OBJ_PRIV_DSA = 12;
  OPENSSL_PEM_OBJ_PRIV_KEY = 10;
  OPENSSL_PEM_OBJ_PRIV_RSA = 11;
  OPENSSL_PEM_OBJ_PRIV_RSA_PUBLIC = 19;
  OPENSSL_PEM_OBJ_PUB_DH = 16;
  OPENSSL_PEM_OBJ_PUB_DSA = 15;
  OPENSSL_PEM_OBJ_PUB_RSA = 14;
  OPENSSL_PEM_OBJ_SSL_SESSION = 4;
  OPENSSL_PEM_OBJ_UNDEF = 0;
  OPENSSL_PEM_OBJ_X509 = 1;
  OPENSSL_PEM_OBJ_X509_REQ = 2;
  OPENSSL_PEM_R_BAD_BASE64_DECODE = 100;
  OPENSSL_PEM_R_BAD_DECRYPT = 101;
  OPENSSL_PEM_R_BAD_END_LINE = 102;
  OPENSSL_PEM_R_BAD_IV_CHARS = 103;
  OPENSSL_PEM_R_BAD_PASSWORD_READ = 104;
  OPENSSL_PEM_R_ERROR_CONVERTING_PRIVATE_KEY = 115;
  OPENSSL_PEM_R_NOT_DEK_INFO = 105;
  OPENSSL_PEM_R_NOT_ENCRYPTED = 106;
  OPENSSL_PEM_R_NOT_PROC_TYPE = 107;
  OPENSSL_PEM_R_NO_START_LINE = 108;
  OPENSSL_PEM_R_PROBLEMS_GETTING_PASSWORD = 109;
  OPENSSL_PEM_R_PUBLIC_KEY_NO_RSA = 110;
  OPENSSL_PEM_R_READ_KEY = 111;
  OPENSSL_PEM_R_SHORT_HEADER = 112;
  OPENSSL_PEM_R_UNSUPPORTED_CIPHER = 113;
  OPENSSL_PEM_R_UNSUPPORTED_ENCRYPTION = 114;
  OPENSSL_PEM_STRING_DHPARAMS = 'DH PARAMETERS';
  OPENSSL_PEM_STRING_DSA = 'DSA PRIVATE KEY';
  OPENSSL_PEM_STRING_DSAPARAMS = 'DSA PARAMETERS';
  OPENSSL_PEM_STRING_EVP_PKEY = 'ANY PRIVATE KEY';
  OPENSSL_PEM_STRING_PKCS7 = 'PKCS7';
  OPENSSL_PEM_STRING_PKCS8 = 'ENCRYPTED PRIVATE KEY';
  OPENSSL_PEM_STRING_PKCS8INF = 'PRIVATE KEY';
  OPENSSL_PEM_STRING_RSA = 'RSA PRIVATE KEY';
  OPENSSL_PEM_STRING_RSA_PUBLIC = 'RSA PUBLIC KEY';
  OPENSSL_PEM_STRING_SSL_SESSION = 'SSL SESSION PARAMETERS';
  OPENSSL_PEM_STRING_X509 = 'CERTIFICATE';
  OPENSSL_PEM_STRING_X509_CRL = 'X509 CRL';
  OPENSSL_PEM_STRING_X509_OLD = 'X509 CERTIFICATE';
  OPENSSL_PEM_STRING_X509_REQ = 'CERTIFICATE REQUEST';
  OPENSSL_PEM_STRING_X509_REQ_OLD = 'NEW CERTIFICATE REQUEST';
  OPENSSL_PEM_TYPE_CLEAR = 40;
  OPENSSL_PEM_TYPE_ENCRYPTED = 10;
  OPENSSL_PEM_TYPE_MIC_CLEAR = 30;
  OPENSSL_PEM_TYPE_MIC_ONLY = 20;
  OPENSSL_PKCS5_DEFAULT_ITER = 2048;
  OPENSSL_PKCS5_SALT_LEN = 8;
  OPENSSL_PKCS7_F_PKCS7_ADD_CERTIFICATE = 100;
  OPENSSL_PKCS7_F_PKCS7_ADD_CRL = 101;
  OPENSSL_PKCS7_F_PKCS7_ADD_RECIPIENT_INFO = 102;
  OPENSSL_PKCS7_F_PKCS7_ADD_SIGNER = 103;
  OPENSSL_PKCS7_F_PKCS7_CTRL = 104;
  OPENSSL_PKCS7_F_PKCS7_DATADECODE = 112;
  OPENSSL_PKCS7_F_PKCS7_DATAINIT = 105;
  OPENSSL_PKCS7_F_PKCS7_DATASIGN = 106;
  OPENSSL_PKCS7_F_PKCS7_DATAVERIFY = 107;
  OPENSSL_PKCS7_F_PKCS7_SET_CIPHER = 108;
  OPENSSL_PKCS7_F_PKCS7_SET_CONTENT = 109;
  OPENSSL_PKCS7_F_PKCS7_SET_TYPE = 110;
  OPENSSL_PKCS7_F_PKCS7_SIGNATUREVERIFY = 113;
  OPENSSL_PKCS7_OP_GET_DETACHED_SIGNATURE = 2;
  OPENSSL_PKCS7_OP_SET_DETACHED_SIGNATURE = 1;
  OPENSSL_PKCS7_R_CIPHER_NOT_INITIALIZED = 116;
  OPENSSL_PKCS7_R_DECRYPTED_KEY_IS_WRONG_LENGTH = 100;
  OPENSSL_PKCS7_R_DIGEST_FAILURE = 101;
  OPENSSL_PKCS7_R_INTERNAL_ERROR = 102;
  OPENSSL_PKCS7_R_MISSING_CERIPEND_INFO = 103;
  OPENSSL_PKCS7_R_NO_RECIPIENT_MATCHES_CERTIFICATE = 115;
  OPENSSL_PKCS7_R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE = 104;
  OPENSSL_PKCS7_R_SIGNATURE_FAILURE = 105;
  OPENSSL_PKCS7_R_UNABLE_TO_FIND_CERTIFICATE = 106;
  OPENSSL_PKCS7_R_UNABLE_TO_FIND_MEM_BIO = 107;
  OPENSSL_PKCS7_R_UNABLE_TO_FIND_MESSAGE_DIGEST = 108;
  OPENSSL_PKCS7_R_UNKNOWN_DIGEST_TYPE = 109;
  OPENSSL_PKCS7_R_UNKNOWN_OPERATION = 110;
  OPENSSL_PKCS7_R_UNSUPPORTED_CIPHER_TYPE = 111;
  OPENSSL_PKCS7_R_UNSUPPORTED_CONTENT_TYPE = 112;
  OPENSSL_PKCS7_R_WRONG_CONTENT_TYPE = 113;
  OPENSSL_PKCS7_R_WRONG_PKCS7_TYPE = 114;
  OPENSSL_PKCS7_S_BODY = 1;
  OPENSSL_PKCS7_S_HEADER = 0;
  OPENSSL_PKCS7_S_TAIL = 2;
  OPENSSL_PKCS8_NO_OCTET = 1;
  OPENSSL_PKCS8_OK = 0;
  OPENSSL_P_tmpdir = '/tmp';
  OPENSSL_MSS_RAND_MAX = $7FFFFFFF;
  OPENSSL_RC2_BLOCK = 8;
  OPENSSL_RC2_DECRYPT = 0;
  OPENSSL_RC2_ENCRYPT = 1;
  OPENSSL_RC2_KEY_LENGTH = 16;
  OPENSSL_RC5_12_ROUNDS = 12;
  OPENSSL_RC5_16_ROUNDS = 16;
  OPENSSL_RC5_32_BLOCK = 8;
  OPENSSL_RC5_32_KEY_LENGTH = 16;
  OPENSSL_RC5_8_ROUNDS = 8;
  OPENSSL_RC5_DECRYPT = 0;
  OPENSSL_RC5_ENCRYPT = 1;
  OPENSSL_RIPEMD160_BLOCK = 16;
  OPENSSL_RIPEMD160_CBLOCK = 64;
  OPENSSL_RIPEMD160_DIGEST_LENGTH = 20;
  OPENSSL_RIPEMD160_LAST_BLOCK = 56;
  OPENSSL_RIPEMD160_LBLOCK = 16;
  OPENSSL_RIPEMD160_LENGTH_BLOCK = 8;
  OPENSSL_RSA_3 = $3;
  OPENSSL_RSA_F4 = $10001;
  OPENSSL_RSA_FLAG_BLINDING = $08;
  OPENSSL_RSA_FLAG_CACHE_PRIVATE = $04;
  OPENSSL_RSA_FLAG_CACHE_PUBLIC = $02;
  OPENSSL_RSA_FLAG_EXT_PKEY = $20;
  OPENSSL_RSA_FLAG_THREAD_SAFE = $10;
  OPENSSL_RSA_F_MEMORY_LOCK = 100;
  OPENSSL_RSA_F_RSA_CHECK_KEY = 123;
  OPENSSL_RSA_F_RSA_EAY_PRIVATE_DECRYPT = 101;
  OPENSSL_RSA_F_RSA_EAY_PRIVATE_ENCRYPT = 102;
  OPENSSL_RSA_F_RSA_EAY_PUBLIC_DECRYPT = 103;
  OPENSSL_RSA_F_RSA_EAY_PUBLIC_ENCRYPT = 104;
  OPENSSL_RSA_F_RSA_GENERATE_KEY = 105;
  OPENSSL_RSA_F_RSA_NEW_METHOD = 106;
  OPENSSL_RSA_F_RSA_PADDING_ADD_NONE = 107;
  OPENSSL_RSA_F_RSA_PADDING_ADD_PKCS1_OAEP = 121;
  OPENSSL_RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_1 = 108;
  OPENSSL_RSA_F_RSA_PADDING_ADD_PKCS1_TYPE_2 = 109;
  OPENSSL_RSA_F_RSA_PADDING_ADD_SSLV23 = 110;
  OPENSSL_RSA_F_RSA_PADDING_CHECK_NONE = 111;
  OPENSSL_RSA_F_RSA_PADDING_CHECK_PKCS1_OAEP = 122;
  OPENSSL_RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_1 = 112;
  OPENSSL_RSA_F_RSA_PADDING_CHECK_PKCS1_TYPE_2 = 113;
  OPENSSL_RSA_F_RSA_PADDING_CHECK_SSLV23 = 114;
  OPENSSL_RSA_F_RSA_PRINT = 115;
  OPENSSL_RSA_F_RSA_PRINT_FP = 116;
  OPENSSL_RSA_F_RSA_SIGN = 117;
  OPENSSL_RSA_F_RSA_SIGN_ASN1_OCTET_STRING = 118;
  OPENSSL_RSA_F_RSA_VERIFY = 119;
  OPENSSL_RSA_F_RSA_VERIFY_ASN1_OCTET_STRING = 120;
  OPENSSL_RSA_METHOD_FLAG_NO_CHECK = $01;
  OPENSSL_RSA_NO_PADDING = 3;
  OPENSSL_RSA_PKCS1_OAEP_PADDING = 4;
  OPENSSL_RSA_PKCS1_PADDING = 1;
  OPENSSL_RSA_R_ALGORITHM_MISMATCH = 100;
  OPENSSL_RSA_R_BAD_E_VALUE = 101;
  OPENSSL_RSA_R_BAD_FIXED_HEADER_DECRYPT = 102;
  OPENSSL_RSA_R_BAD_PAD_BYTE_COUNT = 103;
  OPENSSL_RSA_R_BAD_SIGNATURE = 104;
  OPENSSL_RSA_R_BLOCK_TYPE_IS_NOT_01 = 106;
  OPENSSL_RSA_R_BLOCK_TYPE_IS_NOT_02 = 107;
  OPENSSL_RSA_R_DATA_GREATER_THAN_MOD_LEN = 108;
  OPENSSL_RSA_R_DATA_TOO_LARGE = 109;
  OPENSSL_RSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE = 110;
  OPENSSL_RSA_R_DATA_TOO_SMALL = 111;
  OPENSSL_RSA_R_DATA_TOO_SMALL_FOR_KEY_SIZE = 122;
  OPENSSL_RSA_R_DIGEST_TOO_BIG_FOR_RSA_KEY = 112;
  OPENSSL_RSA_R_DMP1_NOT_CONGRUENT_TO_D = 124;
  OPENSSL_RSA_R_DMQ1_NOT_CONGRUENT_TO_D = 125;
  OPENSSL_RSA_R_D_E_NOT_CONGRUENT_TO_1 = 123;
  OPENSSL_RSA_R_IQMP_NOT_INVERSE_OF_Q = 126;
  OPENSSL_RSA_R_KEY_SIZE_TOO_SMALL = 120;
  OPENSSL_RSA_R_NULL_BEFORE_BLOCK_MISSING = 113;
  OPENSSL_RSA_R_N_DOES_NOT_EQUAL_P_Q = 127;
  OPENSSL_RSA_R_OAEP_DECODING_ERROR = 121;
  OPENSSL_RSA_R_PADDING_CHECK_FAILED = 114;
  OPENSSL_RSA_R_P_NOT_PRIME = 128;
  OPENSSL_RSA_R_Q_NOT_PRIME = 129;
  OPENSSL_RSA_R_SSLV3_ROLLBACK_ATTACK = 115;
  OPENSSL_RSA_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD = 116;
  OPENSSL_RSA_R_UNKNOWN_ALGORITHM_TYPE = 117;
  OPENSSL_RSA_R_UNKNOWN_PADDING_TYPE = 118;
  OPENSSL_RSA_R_WRONG_SIGNATURE_LENGTH = 119;
  OPENSSL_RSA_SSLV23_PADDING = 2;
  OPENSSL_SEEK_CUR = 1;
  OPENSSL_SEEK_END = 2;
  OPENSSL_SEEK_SET = 0;
  OPENSSL_SHA_DIGEST_LENGTH = 20;
  OPENSSL_SHA_LBLOCK = 16;
  OPENSSL_SN_Algorithm = 'Algorithm';
  OPENSSL_SN_SMIMECapabilities = 'SMIME-CAPS';
  OPENSSL_SN_authority_key_identifier = 'authorityKeyIdentifier';
  OPENSSL_SN_basic_constraints = 'basicConstraints';
  OPENSSL_SN_bf_cbc = 'BF-CBC';
  OPENSSL_SN_bf_cfb64 = 'BF-CFB';
  OPENSSL_SN_bf_ecb = 'BF-ECB';
  OPENSSL_SN_bf_ofb64 = 'BF-OFB';
  OPENSSL_SN_cast5_cbc = 'CAST5-CBC';
  OPENSSL_SN_cast5_cfb64 = 'CAST5-CFB';
  OPENSSL_SN_cast5_ecb = 'CAST5-ECB';
  OPENSSL_SN_cast5_ofb64 = 'CAST5-OFB';
  OPENSSL_SN_certificate_policies = 'certificatePolicies';
  OPENSSL_SN_client_auth = 'clientAuth';
  OPENSSL_SN_code_sign = 'codeSigning';
  OPENSSL_SN_commonName = 'CN';
  OPENSSL_SN_countryName = 'C';
  OPENSSL_SN_crl_distribution_points = 'crlDistributionPoints';
  OPENSSL_SN_crl_number = 'crlNumber';
  OPENSSL_SN_crl_reason = 'CRLReason';
  OPENSSL_SN_delta_crl = 'deltaCRL';
  OPENSSL_SN_des_cbc = 'DES-CBC';
  OPENSSL_SN_des_cfb64 = 'DES-CFB';
  OPENSSL_SN_des_ecb = 'DES-ECB';
  OPENSSL_SN_des_ede = 'DES-EDE';
  OPENSSL_SN_des_ede3 = 'DES-EDE3';
  OPENSSL_SN_des_ede3_cbc = 'DES-EDE3-CBC';
  OPENSSL_SN_des_ede3_cfb64 = 'DES-EDE3-CFB';
  OPENSSL_SN_des_ede3_ofb64 = 'DES-EDE3-OFB';
  OPENSSL_SN_des_ede_cbc = 'DES-EDE-CBC';
  OPENSSL_SN_des_ede_cfb64 = 'DES-EDE-CFB';
  OPENSSL_SN_des_ede_ofb64 = 'DES-EDE-OFB';
  OPENSSL_SN_des_ofb64 = 'DES-OFB';
  OPENSSL_SN_description = 'D';
  OPENSSL_SN_desx_cbc = 'DESX-CBC';
  OPENSSL_SN_dsa = 'DSA';
  OPENSSL_SN_dsaWithSHA = 'DSA-SHA';
  OPENSSL_SN_dsaWithSHA1 = 'DSA-SHA1';
  OPENSSL_SN_dsaWithSHA1_2 = 'DSA-SHA1-old';
  OPENSSL_SN_dsa_2 = 'DSA-old';
  OPENSSL_SN_email_protect = 'emailProtection';
  OPENSSL_SN_ext_key_usage = 'extendedKeyUsage';
  OPENSSL_SN_givenName = 'G';
  OPENSSL_SN_id_kp = 'id-kp';
  OPENSSL_SN_id_pkix = 'PKIX';
  OPENSSL_SN_id_qt_cps = 'id-qt-cps';
  OPENSSL_SN_id_qt_unotice = 'id-qt-unotice';
  OPENSSL_SN_idea_cbc = 'IDEA-CBC';
  OPENSSL_SN_idea_cfb64 = 'IDEA-CFB';
  OPENSSL_SN_idea_ecb = 'IDEA-ECB';
  OPENSSL_SN_idea_ofb64 = 'IDEA-OFB';
  OPENSSL_SN_initials = 'I';
  OPENSSL_SN_invalidity_date = 'invalidityDate';
  OPENSSL_SN_issuer_alt_name = 'issuerAltName';
  OPENSSL_SN_key_usage = 'keyUsage';
  OPENSSL_SN_ld_ce = 'ld-ce';
  OPENSSL_SN_localityName = 'L';
  OPENSSL_SN_md2 = 'MD2';
  OPENSSL_SN_md2WithRSAEncryption = 'RSA-MD2';
  OPENSSL_SN_md5 = 'MD5';
  OPENSSL_SN_md5WithRSA = 'RSA-NP-MD5';
  OPENSSL_SN_md5WithRSAEncryption = 'RSA-MD5';
  OPENSSL_SN_md5_sha1 = 'MD5-SHA1';
  OPENSSL_SN_mdc2 = 'MDC2';
  OPENSSL_SN_mdc2WithRSA = 'RSA-MDC2';
  OPENSSL_SN_ms_code_com = 'msCodeCom';
  OPENSSL_SN_ms_code_ind = 'msCodeInd';
  OPENSSL_SN_ms_ctl_sign = 'msCTLSign';
  OPENSSL_SN_ms_efs = 'msEFS';
  OPENSSL_SN_ms_sgc = 'msSGC';
  OPENSSL_SN_netscape = 'Netscape';
  OPENSSL_SN_netscape_base_url = 'nsBaseUrl';
  OPENSSL_SN_netscape_ca_policy_url = 'nsCaPolicyUrl';
  OPENSSL_SN_netscape_ca_revocation_url = 'nsCaRevocationUrl';
  OPENSSL_SN_netscape_cert_extension = 'nsCertExt';
  OPENSSL_SN_netscape_cert_sequence = 'nsCertSequence';
  OPENSSL_SN_netscape_cert_type = 'nsCertType';
  OPENSSL_SN_netscape_comment = 'nsComment';
  OPENSSL_SN_netscape_data_type = 'nsDataType';
  OPENSSL_SN_netscape_renewal_url = 'nsRenewalUrl';
  OPENSSL_SN_netscape_revocation_url = 'nsRevocationUrl';
  OPENSSL_SN_netscape_ssl_server_name = 'nsSslServerName';
  OPENSSL_SN_ns_sgc = 'nsSGC';
  OPENSSL_SN_organizationName = 'O';
  OPENSSL_SN_organizationalUnitName = 'OU';
  OPENSSL_SN_pkcs9_emailAddress = 'Email';
  OPENSSL_SN_private_key_usage_period = 'privateKeyUsagePeriod';
  OPENSSL_SN_rc2_40_cbc = 'RC2-40-CBC';
  OPENSSL_SN_rc2_64_cbc = 'RC2-64-CBC';
  OPENSSL_SN_rc2_cbc = 'RC2-CBC';
  OPENSSL_SN_rc2_cfb64 = 'RC2-CFB';
  OPENSSL_SN_rc2_ecb = 'RC2-ECB';
  OPENSSL_SN_rc2_ofb64 = 'RC2-OFB';
  OPENSSL_SN_rc4 = 'RC4';
  OPENSSL_SN_rc4_40 = 'RC4-40';
  OPENSSL_SN_rc5_cbc = 'RC5-CBC';
  OPENSSL_SN_rc5_cfb64 = 'RC5-CFB';
  OPENSSL_SN_rc5_ecb = 'RC5-ECB';
  OPENSSL_SN_rc5_ofb64 = 'RC5-OFB';
  OPENSSL_SN_ripemd160 = 'RIPEMD160';
  OPENSSL_SN_ripemd160WithRSA = 'RSA-RIPEMD160';
  OPENSSL_SN_rle_compression = 'RLE';
  OPENSSL_SN_rsa = 'RSA';
  OPENSSL_SN_serialNumber = 'SN';
  OPENSSL_SN_server_auth = 'serverAuth';
  OPENSSL_SN_sha = 'SHA';
  OPENSSL_SN_sha1 = 'SHA1';
  OPENSSL_SN_sha1WithRSA = 'RSA-SHA1-2';
  OPENSSL_SN_sha1WithRSAEncryption = 'RSA-SHA1';
  OPENSSL_SN_shaWithRSAEncryption = 'RSA-SHA';
  OPENSSL_SN_stateOrProvinceName = 'ST';
  OPENSSL_SN_subject_alt_name = 'subjectAltName';
  OPENSSL_SN_subject_key_identifier = 'subjectKeyIdentifier';
  OPENSSL_SN_surname = 'S';
  OPENSSL_SN_sxnet = 'SXNetID';
  OPENSSL_SN_time_stamp = 'timeStamping';
  OPENSSL_SN_title = 'T';
  OPENSSL_SN_undef = 'UNDEF';
  OPENSSL_SN_uniqueIdentifier = 'UID';
  OPENSSL_SN_zlib_compression = 'ZLIB';
  OPENSSL_SSL_ST_CONNECT = $1000;
  OPENSSL_SSL23_ST_CR_SRVR_HELLO_A = $220 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL23_ST_CR_SRVR_HELLO_B = $221 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL23_ST_CW_CLNT_HELLO_A = $210 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL23_ST_CW_CLNT_HELLO_B = $211 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL_ST_ACCEPT = $2000;
  OPENSSL_SSL23_ST_SR_CLNT_HELLO_A = $210 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL23_ST_SR_CLNT_HELLO_B = $211 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_AT_MD5_WITH_RSA_ENCRYPTION = $01;
  OPENSSL_SSL2_CF_5_BYTE_ENC = $01;
  OPENSSL_SSL2_CF_8_BYTE_ENC = $02;
  OPENSSL_SSL2_CHALLENGE_LENGTH = 16;
  OPENSSL_SSL2_CK_DES_192_EDE3_CBC_WITH_MD5 = $020700C0;
  OPENSSL_SSL2_CK_DES_192_EDE3_CBC_WITH_SHA = $020701C0;
  OPENSSL_SSL2_CK_DES_64_CBC_WITH_MD5 = $02060040;
  OPENSSL_SSL2_CK_DES_64_CBC_WITH_SHA = $02060140;
  OPENSSL_SSL2_CK_DES_64_CFB64_WITH_MD5_1 = $02FF0800;
  OPENSSL_SSL2_CK_IDEA_128_CBC_WITH_MD5 = $02050080;
  OPENSSL_SSL2_CK_NULL = $02FF0810;
  OPENSSL_SSL2_CK_NULL_WITH_MD5 = $02000000;
  OPENSSL_SSL2_CK_RC2_128_CBC_EXPORT40_WITH_MD5 = $02040080;
  OPENSSL_SSL2_CK_RC2_128_CBC_WITH_MD5 = $02030080;
  OPENSSL_SSL2_CK_RC4_128_EXPORT40_WITH_MD5 = $02020080;
  OPENSSL_SSL2_CK_RC4_128_WITH_MD5 = $02010080;
  OPENSSL_SSL2_CK_RC4_64_WITH_MD5 = $02080080;
  OPENSSL_SSL2_CONNECTION_ID_LENGTH = 16;
  OPENSSL_SSL2_CT_X509_CERTIFICATE = $01;
  OPENSSL_SSL2_MAX_CERT_CHALLENGE_LENGTH = 32;
  OPENSSL_SSL2_MAX_CHALLENGE_LENGTH = 32;
  OPENSSL_SSL2_MAX_CONNECTION_ID_LENGTH = 16;
  OPENSSL_SSL2_MAX_KEY_MATERIAL_LENGTH = 24;
  OPENSSL_SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS = 256;
  OPENSSL_SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER = 16383;
  OPENSSL_SSL2_MAX_SSL_SESSION_ID_LENGTH = 32;
  OPENSSL_SSL2_MIN_CERT_CHALLENGE_LENGTH = 16;
  OPENSSL_SSL2_MIN_CHALLENGE_LENGTH = 16;
  OPENSSL_SSL2_MT_CLIENT_CERTIFICATE = 8;
  OPENSSL_SSL2_MT_CLIENT_FINISHED = 3;
  OPENSSL_SSL2_MT_CLIENT_HELLO = 1;
  OPENSSL_SSL2_MT_CLIENT_MASTER_KEY = 2;
  OPENSSL_SSL2_MT_ERROR = 0;
  OPENSSL_SSL2_MT_REQUEST_CERTIFICATE = 7;
  OPENSSL_SSL2_MT_SERVER_FINISHED = 6;
  OPENSSL_SSL2_MT_SERVER_HELLO = 4;
  OPENSSL_SSL2_MT_SERVER_VERIFY = 5;
  OPENSSL_SSL2_PE_BAD_CERTIFICATE = $0004;
  OPENSSL_SSL2_PE_NO_CERTIFICATE = $0002;
  OPENSSL_SSL2_PE_NO_CIPHER = $0001;
  OPENSSL_SSL2_PE_UNDEFINED_ERROR = $0000;
  OPENSSL_SSL2_PE_UNSUPPORTED_CERTIFICATE_TYPE = $0006;
  OPENSSL_SSL2_SSL_SESSION_ID_LENGTH = 16;
  OPENSSL_SSL2_ST_CLIENT_START_ENCRYPTION = $80 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_GET_CLIENT_FINISHED_A = $50 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_GET_CLIENT_FINISHED_B = $51 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_GET_CLIENT_HELLO_A = $10 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_GET_CLIENT_HELLO_B = $11 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_GET_CLIENT_HELLO_C = $12 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_GET_CLIENT_MASTER_KEY_A = $30 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_GET_CLIENT_MASTER_KEY_B = $31 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_GET_SERVER_FINISHED_A = $70 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_GET_SERVER_FINISHED_B = $71 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_GET_SERVER_HELLO_A = $20 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_GET_SERVER_HELLO_B = $21 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_GET_SERVER_VERIFY_A = $60 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_GET_SERVER_VERIFY_B = $61 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_SEND_CLIENT_CERTIFICATE_A = $50 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_SEND_CLIENT_CERTIFICATE_B = $51 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_SEND_CLIENT_CERTIFICATE_C = $52 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_SEND_CLIENT_CERTIFICATE_D = $53 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_SEND_CLIENT_FINISHED_A = $40 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_SEND_CLIENT_FINISHED_B = $41 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_SEND_CLIENT_HELLO_A = $10 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_SEND_CLIENT_HELLO_B = $11 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_SEND_CLIENT_MASTER_KEY_A = $30 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_SEND_CLIENT_MASTER_KEY_B = $31 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_SEND_REQUEST_CERTIFICATE_A = $70 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_SEND_REQUEST_CERTIFICATE_B = $71 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_SEND_REQUEST_CERTIFICATE_C = $72 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_SEND_REQUEST_CERTIFICATE_D = $73 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_SEND_SERVER_FINISHED_A = $60 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_SEND_SERVER_FINISHED_B = $61 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_SEND_SERVER_HELLO_A = $20 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_SEND_SERVER_HELLO_B = $21 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_SEND_SERVER_VERIFY_A = $40 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_SEND_SERVER_VERIFY_B = $41 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_SEND_SERVER_VERIFY_C = $42 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_SERVER_START_ENCRYPTION = $80 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_ST_X509_GET_CLIENT_CERTIFICATE = $90 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL2_ST_X509_GET_SERVER_CERTIFICATE = $90 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5 = 'DES-CBC3-MD5';
  OPENSSL_SSL2_TXT_DES_192_EDE3_CBC_WITH_SHA = 'DES-CBC3-SHA';
  OPENSSL_SSL2_TXT_DES_64_CBC_WITH_MD5 = 'DES-CBC-MD5';
  OPENSSL_SSL2_TXT_DES_64_CBC_WITH_SHA = 'DES-CBC-SHA';
  OPENSSL_SSL2_TXT_DES_64_CFB64_WITH_MD5_1 = 'DES-CFB-M1';
  OPENSSL_SSL2_TXT_IDEA_128_CBC_WITH_MD5 = 'IDEA-CBC-MD5';
  OPENSSL_SSL2_TXT_NULL = 'NULL';
  OPENSSL_SSL2_TXT_NULL_WITH_MD5 = 'NULL-MD5';
  OPENSSL_SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 = 'EXP-RC2-CBC-MD5';
  OPENSSL_SSL2_TXT_RC2_128_CBC_WITH_MD5 = 'RC2-CBC-MD5';
  OPENSSL_SSL2_TXT_RC4_128_EXPORT40_WITH_MD5 = 'EXP-RC4-MD5';
  OPENSSL_SSL2_TXT_RC4_128_WITH_MD5 = 'RC4-MD5';
  OPENSSL_SSL2_TXT_RC4_64_WITH_MD5 = 'RC4-64-MD5';
  OPENSSL_SSL2_VERSION = $0002;
  OPENSSL_SSL2_VERSION_MAJOR = $00;
  OPENSSL_SSL2_VERSION_MINOR = $02;
  OPENSSL_SSL3_AD_BAD_CERTIFICATE = 42;
  OPENSSL_SSL3_AD_BAD_RECORD_MAC = 20;
  OPENSSL_SSL3_AD_CERTIFICATE_EXPIRED = 45;
  OPENSSL_SSL3_AD_CERTIFICATE_REVOKED = 44;
  OPENSSL_SSL3_AD_CERTIFICATE_UNKNOWN = 46;
  OPENSSL_SSL3_AD_CLOSE_NOTIFY = 0;
  OPENSSL_SSL3_AD_DECOMPRESSION_FAILURE = 30;
  OPENSSL_SSL3_AD_HANDSHAKE_FAILURE = 40;
  OPENSSL_SSL3_AD_ILLEGAL_PARAMETER = 47;
  OPENSSL_SSL3_AD_NO_CERTIFICATE = 41;
  OPENSSL_SSL3_AD_UNEXPECTED_MESSAGE = 10;
  OPENSSL_SSL3_AD_UNSUPPORTED_CERTIFICATE = 43;
  OPENSSL_SSL3_AL_FATAL = 2;
  OPENSSL_SSL3_AL_WARNING = 1;
  OPENSSL_SSL3_CC_CLIENT = $10;
  OPENSSL_SSL3_CC_READ = $01;
  OPENSSL_SSL3_CC_SERVER = $20;
  OPENSSL_SSL3_CC_WRITE = $02;
  OPENSSL_SSL3_CHANGE_CIPHER_CLIENT_READ = OPENSSL_SSL3_CC_CLIENT or
    OPENSSL_SSL3_CC_READ;
  OPENSSL_SSL3_CHANGE_CIPHER_CLIENT_WRITE = OPENSSL_SSL3_CC_CLIENT or
    OPENSSL_SSL3_CC_WRITE;
  OPENSSL_SSL3_CHANGE_CIPHER_SERVER_READ = OPENSSL_SSL3_CC_SERVER or
    OPENSSL_SSL3_CC_READ;
  OPENSSL_SSL3_CHANGE_CIPHER_SERVER_WRITE = OPENSSL_SSL3_CC_SERVER or
    OPENSSL_SSL3_CC_WRITE;
  OPENSSL_SSL3_CK_ADH_DES_192_CBC_SHA = $0300001B;
  OPENSSL_SSL3_CK_ADH_DES_40_CBC_SHA = $03000019;
  OPENSSL_SSL3_CK_ADH_DES_64_CBC_SHA = $0300001A;
  OPENSSL_SSL3_CK_ADH_RC4_128_MD5 = $03000018;
  OPENSSL_SSL3_CK_ADH_RC4_40_MD5 = $03000017;
  OPENSSL_SSL3_CK_DH_DSS_DES_192_CBC3_SHA = $0300000D;
  OPENSSL_SSL3_CK_DH_DSS_DES_40_CBC_SHA = $0300000B;
  OPENSSL_SSL3_CK_DH_DSS_DES_64_CBC_SHA = $0300000C;
  OPENSSL_SSL3_CK_DH_RSA_DES_192_CBC3_SHA = $03000010;
  OPENSSL_SSL3_CK_DH_RSA_DES_40_CBC_SHA = $0300000E;
  OPENSSL_SSL3_CK_DH_RSA_DES_64_CBC_SHA = $0300000F;
  OPENSSL_SSL3_CK_EDH_DSS_DES_192_CBC3_SHA = $03000013;
  OPENSSL_SSL3_CK_EDH_DSS_DES_40_CBC_SHA = $03000011;
  OPENSSL_SSL3_CK_EDH_DSS_DES_64_CBC_SHA = $03000012;
  OPENSSL_SSL3_CK_EDH_RSA_DES_192_CBC3_SHA = $03000016;
  OPENSSL_SSL3_CK_EDH_RSA_DES_40_CBC_SHA = $03000014;
  OPENSSL_SSL3_CK_EDH_RSA_DES_64_CBC_SHA = $03000015;
  OPENSSL_SSL3_CK_FZA_DMS_FZA_SHA = $0300001D;
  OPENSSL_SSL3_CK_FZA_DMS_NULL_SHA = $0300001C;
  OPENSSL_SSL3_CK_FZA_DMS_RC4_SHA = $0300001E;
  OPENSSL_SSL3_CK_RSA_DES_192_CBC3_SHA = $0300000A;
  OPENSSL_SSL3_CK_RSA_DES_40_CBC_SHA = $03000008;
  OPENSSL_SSL3_CK_RSA_DES_64_CBC_SHA = $03000009;
  OPENSSL_SSL3_CK_RSA_IDEA_128_SHA = $03000007;
  OPENSSL_SSL3_CK_RSA_NULL_MD5 = $03000001;
  OPENSSL_SSL3_CK_RSA_NULL_SHA = $03000002;
  OPENSSL_SSL3_CK_RSA_RC2_40_MD5 = $03000006;
  OPENSSL_SSL3_CK_RSA_RC4_128_MD5 = $03000004;
  OPENSSL_SSL3_CK_RSA_RC4_128_SHA = $03000005;
  OPENSSL_SSL3_CK_RSA_RC4_40_MD5 = $03000003;
  OPENSSL_SSL3_CT_DSS_EPHEMERAL_DH = 6;
  OPENSSL_SSL3_CT_DSS_FIXED_DH = 4;
  OPENSSL_SSL3_CT_DSS_SIGN = 2;
  OPENSSL_SSL3_CT_FORTEZZA_DMS = 20;
  OPENSSL_SSL3_CT_NUMBER = 7;
  OPENSSL_SSL3_CT_RSA_EPHEMERAL_DH = 5;
  OPENSSL_SSL3_CT_RSA_FIXED_DH = 3;
  OPENSSL_SSL3_CT_RSA_SIGN = 1;
  OPENSSL_SSL3_FLAGS_DELAY_CLIENT_FINISHED = $0002;
  OPENSSL_SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS = $0001;
  OPENSSL_SSL3_FLAGS_POP_BUFFER = $0004;
  OPENSSL_SSL3_MASTER_SECRET_SIZE = 48;
  OPENSSL_SSL3_MAX_SSL_SESSION_ID_LENGTH = 32;
  OPENSSL_SSL3_MT_CCS = 1;
  OPENSSL_SSL3_MT_CERTIFICATE = 11;
  OPENSSL_SSL3_MT_CERTIFICATE_REQUEST = 13;
  OPENSSL_SSL3_MT_CERTIFICATE_VERIFY = 15;
  OPENSSL_SSL3_MT_CLIENT_HELLO = 1;
  OPENSSL_SSL3_MT_CLIENT_KEY_EXCHANGE = 16;
  OPENSSL_SSL3_MT_CLIENT_REQUEST = 0;
  OPENSSL_SSL3_MT_FINISHED = 20;
  OPENSSL_SSL3_MT_SERVER_DONE = 14;
  OPENSSL_SSL3_MT_SERVER_HELLO = 2;
  OPENSSL_SSL3_MT_SERVER_KEY_EXCHANGE = 12;
  OPENSSL_SSL3_RANDOM_SIZE = 32;
  OPENSSL_SSL3_RS_BLANK = 1;
  OPENSSL_SSL3_RS_ENCODED = 2;
  OPENSSL_SSL3_RS_PART_READ = 4;
  OPENSSL_SSL3_RS_PART_WRITE = 5;
  OPENSSL_SSL3_RS_PLAIN = 3;
  OPENSSL_SSL3_RS_READ_MORE = 3;
  OPENSSL_SSL3_RT_ALERT = 21;
  OPENSSL_SSL3_RT_APPLICATION_DATA = 23;
  OPENSSL_SSL3_RT_CHANGE_CIPHER_SPEC = 20;
  OPENSSL_SSL3_RT_HANDSHAKE = 22;
  OPENSSL_SSL3_RT_HEADER_LENGTH = 5;
  OPENSSL_SSL3_RT_MAX_PLAIN_LENGTH = 16384;
  OPENSSL_SSL3_RT_MAX_COMPRESSED_LENGTH = 1024 +
    OPENSSL_SSL3_RT_MAX_PLAIN_LENGTH;
  OPENSSL_SSL3_RT_MAX_DATA_SIZE = 1024 * 1024;
  OPENSSL_SSL3_RT_MAX_ENCRYPTED_LENGTH = 1024 +
    OPENSSL_SSL3_RT_MAX_COMPRESSED_LENGTH;
  OPENSSL_SSL3_RT_MAX_EXTRA = 16384;
  OPENSSL_SSL3_RT_MAX_PACKET_SIZE = OPENSSL_SSL3_RT_MAX_ENCRYPTED_LENGTH +
    OPENSSL_SSL3_RT_HEADER_LENGTH;
  OPENSSL_SSL3_SESSION_ID_SIZE = 32;
  OPENSSL_SSL3_SSL_SESSION_ID_LENGTH = 32;
  OPENSSL_SSL3_ST_CR_CERT_A = $130 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CR_CERT_B = $131 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CR_CERT_REQ_A = $150 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CR_CERT_REQ_B = $151 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CR_CHANGE_A = $1C0 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CR_CHANGE_B = $1C1 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CR_FINISHED_A = $1D0 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CR_FINISHED_B = $1D1 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CR_KEY_EXCH_A = $140 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CR_KEY_EXCH_B = $141 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CR_SRVR_DONE_A = $160 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CR_SRVR_DONE_B = $161 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CR_SRVR_HELLO_A = $120 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CR_SRVR_HELLO_B = $121 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_CERT_A = $170 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_CERT_B = $171 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_CERT_C = $172 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_CERT_D = $173 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_CERT_VRFY_A = $190 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_CERT_VRFY_B = $191 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_CHANGE_A = $1A0 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_CHANGE_B = $1A1 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_CLNT_HELLO_A = $110 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_CLNT_HELLO_B = $111 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_FINISHED_A = $1B0 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_FINISHED_B = $1B1 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_FLUSH = $100 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_KEY_EXCH_A = $180 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_CW_KEY_EXCH_B = $181 or OPENSSL_SSL_ST_CONNECT;
  OPENSSL_SSL3_ST_SR_CERT_A = $180 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SR_CERT_B = $181 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SR_CERT_VRFY_A = $1A0 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SR_CERT_VRFY_B = $1A1 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SR_CHANGE_A = $1B0 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SR_CHANGE_B = $1B1 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SR_CLNT_HELLO_A = $110 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SR_CLNT_HELLO_B = $111 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SR_CLNT_HELLO_C = $112 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SR_FINISHED_A = $1C0 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SR_FINISHED_B = $1C1 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SR_KEY_EXCH_A = $190 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SR_KEY_EXCH_B = $191 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_CERT_A = $140 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_CERT_B = $141 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_CERT_REQ_A = $160 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_CERT_REQ_B = $161 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_CHANGE_A = $1D0 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_CHANGE_B = $1D1 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_FINISHED_A = $1E0 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_FINISHED_B = $1E1 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_FLUSH = $100 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_HELLO_REQ_A = $120 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_HELLO_REQ_B = $121 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_HELLO_REQ_C = $122 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_KEY_EXCH_A = $150 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_KEY_EXCH_B = $151 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_SRVR_DONE_A = $170 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_SRVR_DONE_B = $171 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_SRVR_HELLO_A = $130 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_ST_SW_SRVR_HELLO_B = $131 or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL3_TXT_ADH_DES_192_CBC_SHA = 'ADH-DES-CBC3-SHA';
  OPENSSL_SSL3_TXT_ADH_DES_40_CBC_SHA = 'EXP-ADH-DES-CBC-SHA';
  OPENSSL_SSL3_TXT_ADH_DES_64_CBC_SHA = 'ADH-DES-CBC-SHA';
  OPENSSL_SSL3_TXT_ADH_RC4_128_MD5 = 'ADH-RC4-MD5';
  OPENSSL_SSL3_TXT_ADH_RC4_40_MD5 = 'EXP-ADH-RC4-MD5';
  OPENSSL_SSL3_TXT_DH_DSS_DES_192_CBC3_SHA = 'DH-DSS-DES-CBC3-SHA';
  OPENSSL_SSL3_TXT_DH_DSS_DES_40_CBC_SHA = 'EXP-DH-DSS-DES-CBC-SHA';
  OPENSSL_SSL3_TXT_DH_DSS_DES_64_CBC_SHA = 'DH-DSS-DES-CBC-SHA';
  OPENSSL_SSL3_TXT_DH_RSA_DES_192_CBC3_SHA = 'DH-RSA-DES-CBC3-SHA';
  OPENSSL_SSL3_TXT_DH_RSA_DES_40_CBC_SHA = 'EXP-DH-RSA-DES-CBC-SHA';
  OPENSSL_SSL3_TXT_DH_RSA_DES_64_CBC_SHA = 'DH-RSA-DES-CBC-SHA';
  OPENSSL_SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA = 'EDH-DSS-DES-CBC3-SHA';
  OPENSSL_SSL3_TXT_EDH_DSS_DES_40_CBC_SHA = 'EXP-EDH-DSS-DES-CBC-SHA';
  OPENSSL_SSL3_TXT_EDH_DSS_DES_64_CBC_SHA = 'EDH-DSS-DES-CBC-SHA';
  OPENSSL_SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA = 'EDH-RSA-DES-CBC3-SHA';
  OPENSSL_SSL3_TXT_EDH_RSA_DES_40_CBC_SHA = 'EXP-EDH-RSA-DES-CBC-SHA';
  OPENSSL_SSL3_TXT_EDH_RSA_DES_64_CBC_SHA = 'EDH-RSA-DES-CBC-SHA';
  OPENSSL_SSL3_TXT_FZA_DMS_FZA_SHA = 'FZA-FZA-CBC-SHA';
  OPENSSL_SSL3_TXT_FZA_DMS_NULL_SHA = 'FZA-NULL-SHA';
  OPENSSL_SSL3_TXT_FZA_DMS_RC4_SHA = 'FZA-RC4-SHA';
  OPENSSL_SSL3_TXT_RSA_DES_192_CBC3_SHA = 'DES-CBC3-SHA';
  OPENSSL_SSL3_TXT_RSA_DES_40_CBC_SHA = 'EXP-DES-CBC-SHA';
  OPENSSL_SSL3_TXT_RSA_DES_64_CBC_SHA = 'DES-CBC-SHA';
  OPENSSL_SSL3_TXT_RSA_IDEA_128_SHA = 'IDEA-CBC-SHA';
  OPENSSL_SSL3_TXT_RSA_NULL_MD5 = 'NULL-MD5';
  OPENSSL_SSL3_TXT_RSA_NULL_SHA = 'NULL-SHA';
  OPENSSL_SSL3_TXT_RSA_RC2_40_MD5 = 'EXP-RC2-CBC-MD5';
  OPENSSL_SSL3_TXT_RSA_RC4_128_MD5 = 'RC4-MD5';
  OPENSSL_SSL3_TXT_RSA_RC4_128_SHA = 'RC4-SHA';
  OPENSSL_SSL3_TXT_RSA_RC4_40_MD5 = 'EXP-RC4-MD5';
  OPENSSL_SSL3_VERSION = $0300;
  OPENSSL_SSL3_VERSION_MAJOR = $03;
  OPENSSL_SSL3_VERSION_MINOR = $00;
  OPENSSL_SSLEAY_BUILT_ON = 3;
  OPENSSL_SSLEAY_CFLAGS = 2;
  OPENSSL_SSLEAY_PLATFORM = 4;
  OPENSSL_SSLEAY_VERSION = 0;
  OPENSSL_SSLEAY_VERSION_NUMBER = OPENSSL_OPENSSL_VERSION_NUMBER;
  OPENSSL_TLS1_AD_ACCESS_DENIED = 49;
  OPENSSL_SSL_AD_ACCESS_DENIED = OPENSSL_TLS1_AD_ACCESS_DENIED;
  OPENSSL_SSL_AD_BAD_CERTIFICATE = OPENSSL_SSL3_AD_BAD_CERTIFICATE;
  OPENSSL_SSL_AD_BAD_RECORD_MAC = OPENSSL_SSL3_AD_BAD_RECORD_MAC;
  OPENSSL_SSL_AD_CERTIFICATE_EXPIRED = OPENSSL_SSL3_AD_CERTIFICATE_EXPIRED;
  OPENSSL_SSL_AD_CERTIFICATE_REVOKED = OPENSSL_SSL3_AD_CERTIFICATE_REVOKED;
  OPENSSL_SSL_AD_CERTIFICATE_UNKNOWN = OPENSSL_SSL3_AD_CERTIFICATE_UNKNOWN;
  OPENSSL_SSL_AD_CLOSE_NOTIFY = OPENSSL_SSL3_AD_CLOSE_NOTIFY;
  OPENSSL_TLS1_AD_DECODE_ERROR = 50;
  OPENSSL_SSL_AD_DECODE_ERROR = OPENSSL_TLS1_AD_DECODE_ERROR;
  OPENSSL_SSL_AD_DECOMPRESSION_FAILURE = OPENSSL_SSL3_AD_DECOMPRESSION_FAILURE;
  OPENSSL_TLS1_AD_DECRYPTION_FAILED = 21;
  OPENSSL_SSL_AD_DECRYPTION_FAILED = OPENSSL_TLS1_AD_DECRYPTION_FAILED;
  OPENSSL_TLS1_AD_DECRYPT_ERROR = 51;
  OPENSSL_SSL_AD_DECRYPT_ERROR = OPENSSL_TLS1_AD_DECRYPT_ERROR;
  OPENSSL_TLS1_AD_EXPORT_RESTRICION = 60;
  OPENSSL_SSL_AD_EXPORT_RESTRICION = OPENSSL_TLS1_AD_EXPORT_RESTRICION;
  OPENSSL_SSL_AD_HANDSHAKE_FAILURE = OPENSSL_SSL3_AD_HANDSHAKE_FAILURE;
  OPENSSL_SSL_AD_ILLEGAL_PARAMETER = OPENSSL_SSL3_AD_ILLEGAL_PARAMETER;
  OPENSSL_TLS1_AD_INSUFFICIENT_SECURITY = 71;
  OPENSSL_SSL_AD_INSUFFICIENT_SECURITY = OPENSSL_TLS1_AD_INSUFFICIENT_SECURITY;
  OPENSSL_TLS1_AD_INTERNAL_ERROR = 80;
  OPENSSL_SSL_AD_INTERNAL_ERROR = OPENSSL_TLS1_AD_INTERNAL_ERROR;
  OPENSSL_SSL_AD_NO_CERTIFICATE = OPENSSL_SSL3_AD_NO_CERTIFICATE;
  OPENSSL_TLS1_AD_NO_RENEGOTIATION = 100;
  OPENSSL_SSL_AD_NO_RENEGOTIATION = OPENSSL_TLS1_AD_NO_RENEGOTIATION;
  OPENSSL_TLS1_AD_PROTOCOL_VERSION = 70;
  OPENSSL_SSL_AD_PROTOCOL_VERSION = OPENSSL_TLS1_AD_PROTOCOL_VERSION;
  OPENSSL_SSL_AD_REASON_OFFSET = 1000;
  OPENSSL_TLS1_AD_RECORD_OVERFLOW = 22;
  OPENSSL_SSL_AD_RECORD_OVERFLOW = OPENSSL_TLS1_AD_RECORD_OVERFLOW;
  OPENSSL_SSL_AD_UNEXPECTED_MESSAGE = OPENSSL_SSL3_AD_UNEXPECTED_MESSAGE;
  OPENSSL_TLS1_AD_UNKNOWN_CA = 48;
  OPENSSL_SSL_AD_UNKNOWN_CA = OPENSSL_TLS1_AD_UNKNOWN_CA;
  OPENSSL_SSL_AD_UNSUPPORTED_CERTIFICATE =
    OPENSSL_SSL3_AD_UNSUPPORTED_CERTIFICATE;
  OPENSSL_TLS1_AD_USER_CANCLED = 90;
  OPENSSL_SSL_AD_USER_CANCLED = OPENSSL_TLS1_AD_USER_CANCLED;
  OPENSSL_SSL_CB_EXIT = $02;
  OPENSSL_SSL_CB_ACCEPT_EXIT = OPENSSL_SSL_ST_ACCEPT or OPENSSL_SSL_CB_EXIT;
  OPENSSL_SSL_CB_LOOP = $01;
  OPENSSL_SSL_CB_ACCEPT_LOOP = OPENSSL_SSL_ST_ACCEPT or OPENSSL_SSL_CB_LOOP;
  OPENSSL_SSL_CB_ALERT = $4000;
  OPENSSL_SSL_CB_CONNECT_EXIT = OPENSSL_SSL_ST_CONNECT or OPENSSL_SSL_CB_EXIT;
  OPENSSL_SSL_CB_CONNECT_LOOP = OPENSSL_SSL_ST_CONNECT or OPENSSL_SSL_CB_LOOP;
  OPENSSL_SSL_CB_HANDSHAKE_DONE = $20;
  OPENSSL_SSL_CB_HANDSHAKE_START = $10;
  OPENSSL_SSL_CB_READ = $04;
  OPENSSL_SSL_CB_READ_ALERT = OPENSSL_SSL_CB_ALERT or OPENSSL_SSL_CB_READ;
  OPENSSL_SSL_CB_WRITE = $08;
  OPENSSL_SSL_CB_WRITE_ALERT = OPENSSL_SSL_CB_ALERT or OPENSSL_SSL_CB_WRITE;
  OPENSSL_SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS = 9;
  OPENSSL_SSL_CTRL_EXTRA_CHAIN_CERT = 12;
  OPENSSL_SSL_CTRL_GET_CLIENT_CERT_REQUEST = 7;
  OPENSSL_SSL_CTRL_GET_FLAGS = 11;
  OPENSSL_SSL_CTRL_GET_NUM_RENEGOTIATIONS = 8;
  OPENSSL_SSL_CTRL_GET_READ_AHEAD = 40;
  OPENSSL_SSL_CTRL_GET_SESSION_REUSED = 6;
  OPENSSL_SSL_CTRL_GET_SESS_CACHE_MODE = 45;
  OPENSSL_SSL_CTRL_GET_SESS_CACHE_SIZE = 43;
  OPENSSL_SSL_CTRL_GET_TOTAL_RENEGOTIATIONS = 10;
  OPENSSL_SSL_CTRL_MODE = 33;
  OPENSSL_SSL_CTRL_NEED_TMP_RSA = 1;
  OPENSSL_SSL_CTRL_OPTIONS = 32;
  OPENSSL_SSL_CTRL_SESS_ACCEPT = 24;
  OPENSSL_SSL_CTRL_SESS_ACCEPT_GOOD = 25;
  OPENSSL_SSL_CTRL_SESS_ACCEPT_RENEGOTIATE = 26;
  OPENSSL_SSL_CTRL_SESS_CACHE_FULL = 31;
  OPENSSL_SSL_CTRL_SESS_CB_HIT = 28;
  OPENSSL_SSL_CTRL_SESS_CONNECT = 21;
  OPENSSL_SSL_CTRL_SESS_CONNECT_GOOD = 22;
  OPENSSL_SSL_CTRL_SESS_CONNECT_RENEGOTIATE = 23;
  OPENSSL_SSL_CTRL_SESS_HIT = 27;
  OPENSSL_SSL_CTRL_SESS_MISSES = 29;
  OPENSSL_SSL_CTRL_SESS_NUMBER = 20;
  OPENSSL_SSL_CTRL_SESS_TIMEOUTS = 30;
  OPENSSL_SSL_CTRL_SET_READ_AHEAD = 41;
  OPENSSL_SSL_CTRL_SET_SESS_CACHE_MODE = 44;
  OPENSSL_SSL_CTRL_SET_SESS_CACHE_SIZE = 42;
  OPENSSL_SSL_CTRL_SET_TMP_DH = 3;
  OPENSSL_SSL_CTRL_SET_TMP_DH_CB = 5;
  OPENSSL_SSL_CTRL_SET_TMP_RSA = 2;
  OPENSSL_SSL_CTRL_SET_TMP_RSA_CB = 4;
  OPENSSL_SSL_DEFAULT_CIPHER_LIST =
    'ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP';
  OPENSSL_SSL_ERROR_NONE = 0;
  OPENSSL_SSL_ERROR_SSL = 1;
  OPENSSL_SSL_ERROR_SYSCALL = 5;
  OPENSSL_SSL_ERROR_WANT_CONNECT = 7;
  OPENSSL_SSL_ERROR_WANT_READ = 2;
  OPENSSL_SSL_ERROR_WANT_WRITE = 3;
  OPENSSL_SSL_ERROR_WANT_X509_LOOKUP = 4;
  OPENSSL_SSL_ERROR_ZERO_RETURN = 6;
  OPENSSL_X509_FILETYPE_ASN1 = 2;
  OPENSSL_SSL_FILETYPE_ASN1 = OPENSSL_X509_FILETYPE_ASN1;
  OPENSSL_X509_FILETYPE_PEM = 1;
  OPENSSL_SSL_FILETYPE_PEM = OPENSSL_X509_FILETYPE_PEM;
  OPENSSL_SSL_F_CLIENT_CERTIFICATE = 100;
  OPENSSL_SSL_F_CLIENT_HELLO = 101;
  OPENSSL_SSL_F_CLIENT_MASTER_KEY = 102;
  OPENSSL_SSL_F_D2I_SSL_SESSION = 103;
  OPENSSL_SSL_F_DO_SSL3_WRITE = 104;
  OPENSSL_SSL_F_GET_CLIENT_FINISHED = 105;
  OPENSSL_SSL_F_GET_CLIENT_HELLO = 106;
  OPENSSL_SSL_F_GET_CLIENT_MASTER_KEY = 107;
  OPENSSL_SSL_F_GET_SERVER_FINISHED = 108;
  OPENSSL_SSL_F_GET_SERVER_HELLO = 109;
  OPENSSL_SSL_F_GET_SERVER_VERIFY = 110;
  OPENSSL_SSL_F_I2D_SSL_SESSION = 111;
  OPENSSL_SSL_F_READ_N = 112;
  OPENSSL_SSL_F_REQUEST_CERTIFICATE = 113;
  OPENSSL_SSL_F_SERVER_HELLO = 114;
  OPENSSL_SSL_F_SSL23_ACCEPT = 115;
  OPENSSL_SSL_F_SSL23_CLIENT_HELLO = 116;
  OPENSSL_SSL_F_SSL23_CONNECT = 117;
  OPENSSL_SSL_F_SSL23_GET_CLIENT_HELLO = 118;
  OPENSSL_SSL_F_SSL23_GET_SERVER_HELLO = 119;
  OPENSSL_SSL_F_SSL23_READ = 120;
  OPENSSL_SSL_F_SSL23_WRITE = 121;
  OPENSSL_SSL_F_SSL2_ACCEPT = 122;
  OPENSSL_SSL_F_SSL2_CONNECT = 123;
  OPENSSL_SSL_F_SSL2_ENC_INIT = 124;
  OPENSSL_SSL_F_SSL2_READ = 125;
  OPENSSL_SSL_F_SSL2_SET_CERTIFICATE = 126;
  OPENSSL_SSL_F_SSL2_WRITE = 127;
  OPENSSL_SSL_F_SSL3_ACCEPT = 128;
  OPENSSL_SSL_F_SSL3_CHANGE_CIPHER_STATE = 129;
  OPENSSL_SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM = 130;
  OPENSSL_SSL_F_SSL3_CLIENT_HELLO = 131;
  OPENSSL_SSL_F_SSL3_CONNECT = 132;
  OPENSSL_SSL_F_SSL3_CTRL = 213;
  OPENSSL_SSL_F_SSL3_CTX_CTRL = 133;
  OPENSSL_SSL_F_SSL3_ENC = 134;
  OPENSSL_SSL_F_SSL3_GET_CERTIFICATE_REQUEST = 135;
  OPENSSL_SSL_F_SSL3_GET_CERT_VERIFY = 136;
  OPENSSL_SSL_F_SSL3_GET_CLIENT_CERTIFICATE = 137;
  OPENSSL_SSL_F_SSL3_GET_CLIENT_HELLO = 138;
  OPENSSL_SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE = 139;
  OPENSSL_SSL_F_SSL3_GET_FINISHED = 140;
  OPENSSL_SSL_F_SSL3_GET_KEY_EXCHANGE = 141;
  OPENSSL_SSL_F_SSL3_GET_MESSAGE = 142;
  OPENSSL_SSL_F_SSL3_GET_RECORD = 143;
  OPENSSL_SSL_F_SSL3_GET_SERVER_CERTIFICATE = 144;
  OPENSSL_SSL_F_SSL3_GET_SERVER_DONE = 145;
  OPENSSL_SSL_F_SSL3_GET_SERVER_HELLO = 146;
  OPENSSL_SSL_F_SSL3_OUTPUT_CERT_CHAIN = 147;
  OPENSSL_SSL_F_SSL3_READ_BYTES = 148;
  OPENSSL_SSL_F_SSL3_READ_N = 149;
  OPENSSL_SSL_F_SSL3_SEND_CERTIFICATE_REQUEST = 150;
  OPENSSL_SSL_F_SSL3_SEND_CLIENT_CERTIFICATE = 151;
  OPENSSL_SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE = 152;
  OPENSSL_SSL_F_SSL3_SEND_CLIENT_VERIFY = 153;
  OPENSSL_SSL_F_SSL3_SEND_SERVER_CERTIFICATE = 154;
  OPENSSL_SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE = 155;
  OPENSSL_SSL_F_SSL3_SETUP_BUFFERS = 156;
  OPENSSL_SSL_F_SSL3_SETUP_KEY_BLOCK = 157;
  OPENSSL_SSL_F_SSL3_WRITE_BYTES = 158;
  OPENSSL_SSL_F_SSL3_WRITE_PENDING = 159;
  OPENSSL_SSL_F_SSL_ADD_DIR_CERT_SUBJECTS_TO_STACK = 215;
  OPENSSL_SSL_F_SSL_ADD_FILE_CERT_SUBJECTS_TO_STACK = 216;
  OPENSSL_SSL_F_SSL_BAD_METHOD = 160;
  OPENSSL_SSL_F_SSL_BYTES_TO_CIPHER_LIST = 161;
  OPENSSL_SSL_F_SSL_CERT_DUP = 221;
  OPENSSL_SSL_F_SSL_CERT_INST = 222;
  OPENSSL_SSL_F_SSL_CERT_INSTANTIATE = 214;
  OPENSSL_SSL_F_SSL_CERT_NEW = 162;
  OPENSSL_SSL_F_SSL_CHECK_PRIVATE_KEY = 163;
  OPENSSL_SSL_F_SSL_CLEAR = 164;
  OPENSSL_SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD = 165;
  OPENSSL_SSL_F_SSL_CREATE_CIPHER_LIST = 166;
  OPENSSL_SSL_F_SSL_CTX_CHECK_PRIVATE_KEY = 168;
  OPENSSL_SSL_F_SSL_CTX_NEW = 169;
  OPENSSL_SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT = 219;
  OPENSSL_SSL_F_SSL_CTX_SET_SSL_VERSION = 170;
  OPENSSL_SSL_F_SSL_CTX_USE_CERTIFICATE = 171;
  OPENSSL_SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 = 172;
  OPENSSL_SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE = 220;
  OPENSSL_SSL_F_SSL_CTX_USE_CERTIFICATE_FILE = 173;
  OPENSSL_SSL_F_SSL_CTX_USE_PRIVATEKEY = 174;
  OPENSSL_SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 = 175;
  OPENSSL_SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE = 176;
  OPENSSL_SSL_F_SSL_CTX_USE_RSAPRIVATEKEY = 177;
  OPENSSL_SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 = 178;
  OPENSSL_SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE = 179;
  OPENSSL_SSL_F_SSL_DO_HANDSHAKE = 180;
  OPENSSL_SSL_F_SSL_GET_NEW_SESSION = 181;
  OPENSSL_SSL_F_SSL_GET_PREV_SESSION = 217;
  OPENSSL_SSL_F_SSL_GET_SERVER_SEND_CERT = 182;
  OPENSSL_SSL_F_SSL_GET_SIGN_PKEY = 183;
  OPENSSL_SSL_F_SSL_INIT_WBIO_BUFFER = 184;
  OPENSSL_SSL_F_SSL_LOAD_CLIENT_CA_FILE = 185;
  OPENSSL_SSL_F_SSL_NEW = 186;
  OPENSSL_SSL_F_SSL_READ = 223;
  OPENSSL_SSL_F_SSL_RSA_PRIVATE_DECRYPT = 187;
  OPENSSL_SSL_F_SSL_RSA_PUBLIC_ENCRYPT = 188;
  OPENSSL_SSL_F_SSL_SESSION_NEW = 189;
  OPENSSL_SSL_F_SSL_SESSION_PRINT_FP = 190;
  OPENSSL_SSL_F_SSL_SESS_CERT_NEW = 225;
  OPENSSL_SSL_F_SSL_SET_CERT = 191;
  OPENSSL_SSL_F_SSL_SET_FD = 192;
  OPENSSL_SSL_F_SSL_SET_PKEY = 193;
  OPENSSL_SSL_F_SSL_SET_RFD = 194;
  OPENSSL_SSL_F_SSL_SET_SESSION = 195;
  OPENSSL_SSL_F_SSL_SET_SESSION_ID_CONTEXT = 218;
  OPENSSL_SSL_F_SSL_SET_WFD = 196;
  OPENSSL_SSL_F_SSL_SHUTDOWN = 224;
  OPENSSL_SSL_F_SSL_UNDEFINED_FUNCTION = 197;
  OPENSSL_SSL_F_SSL_USE_CERTIFICATE = 198;
  OPENSSL_SSL_F_SSL_USE_CERTIFICATE_ASN1 = 199;
  OPENSSL_SSL_F_SSL_USE_CERTIFICATE_FILE = 200;
  OPENSSL_SSL_F_SSL_USE_PRIVATEKEY = 201;
  OPENSSL_SSL_F_SSL_USE_PRIVATEKEY_ASN1 = 202;
  OPENSSL_SSL_F_SSL_USE_PRIVATEKEY_FILE = 203;
  OPENSSL_SSL_F_SSL_USE_RSAPRIVATEKEY = 204;
  OPENSSL_SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 = 205;
  OPENSSL_SSL_F_SSL_USE_RSAPRIVATEKEY_FILE = 206;
  OPENSSL_SSL_F_SSL_VERIFY_CERT_CHAIN = 207;
  OPENSSL_SSL_F_SSL_WRITE = 208;
  OPENSSL_SSL_F_TLS1_CHANGE_CIPHER_STATE = 209;
  OPENSSL_SSL_F_TLS1_ENC = 210;
  OPENSSL_SSL_F_TLS1_SETUP_KEY_BLOCK = 211;
  OPENSSL_SSL_F_WRITE_PENDING = 212;
  OPENSSL_SSL_MAX_KEY_ARG_LENGTH = 8;
  OPENSSL_SSL_MAX_MASTER_KEY_LENGTH = 48;
  OPENSSL_SSL_MAX_SID_CTX_LENGTH = 32;
  OPENSSL_SSL_MAX_SSL_SESSION_ID_LENGTH = 32;
  OPENSSL_SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER = $00000002;
  OPENSSL_SSL_MODE_ENABLE_PARTIAL_WRITE = $00000001;
  OPENSSL_SSL_NOTHING = 1;
  OPENSSL_SSL_OP_ALL = $000FFFFF;
  OPENSSL_SSL_OP_EPHEMERAL_RSA = $00200000;
  OPENSSL_SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER = $00000020;
  OPENSSL_SSL_OP_MICROSOFT_SESS_ID_BUG = $00000001;
  OPENSSL_SSL_OP_MSIE_SSLV2_RSA_PADDING = $00000040;
  OPENSSL_SSL_OP_NETSCAPE_CA_DN_BUG = $20000000;
  OPENSSL_SSL_OP_NETSCAPE_CHALLENGE_BUG = $00000002;
  OPENSSL_SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG = $80000000;
  OPENSSL_SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG = $00000008;
  OPENSSL_SSL_OP_NON_EXPORT_FIRST = $40000000;
  OPENSSL_SSL_OP_NO_SSLv2 = $01000000;
  OPENSSL_SSL_OP_NO_SSLv3 = $02000000;
  OPENSSL_SSL_OP_NO_TLSv1 = $04000000;
  OPENSSL_SSL_OP_PKCS1_CHECK_1 = $08000000;
  OPENSSL_SSL_OP_PKCS1_CHECK_2 = $10000000;
  OPENSSL_SSL_OP_SINGLE_DH_USE = $00100000;
  OPENSSL_SSL_OP_SSLEAY_080_CLIENT_DH_BUG = $00000080;
  OPENSSL_SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG = $00000010;
  OPENSSL_SSL_OP_TLS_BLOCK_PADDING_BUG = $00000200;
  OPENSSL_SSL_OP_TLS_D5_BUG = $00000100;
  OPENSSL_SSL_OP_TLS_ROLLBACK_BUG = $00000400;
  OPENSSL_SSL_READING = 3;
  OPENSSL_SSL_RECEIVED_SHUTDOWN = 2;
  OPENSSL_SSL_R_APP_DATA_IN_HANDSHAKE = 100;
  OPENSSL_SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT = 272;
  OPENSSL_SSL_R_BAD_ALERT_RECORD = 101;
  OPENSSL_SSL_R_BAD_AUTHENTICATION_TYPE = 102;
  OPENSSL_SSL_R_BAD_CHANGE_CIPHER_SPEC = 103;
  OPENSSL_SSL_R_BAD_CHECKSUM = 104;
  OPENSSL_SSL_R_BAD_CLIENT_REQUEST = 105;
  OPENSSL_SSL_R_BAD_DATA_RETURNED_BY_CALLBACK = 106;
  OPENSSL_SSL_R_BAD_DECOMPRESSION = 107;
  OPENSSL_SSL_R_BAD_DH_G_LENGTH = 108;
  OPENSSL_SSL_R_BAD_DH_PUB_KEY_LENGTH = 109;
  OPENSSL_SSL_R_BAD_DH_P_LENGTH = 110;
  OPENSSL_SSL_R_BAD_DIGEST_LENGTH = 111;
  OPENSSL_SSL_R_BAD_DSA_SIGNATURE = 112;
  OPENSSL_SSL_R_BAD_LENGTH = 271;
  OPENSSL_SSL_R_BAD_MAC_DECODE = 113;
  OPENSSL_SSL_R_BAD_MESSAGE_TYPE = 114;
  OPENSSL_SSL_R_BAD_PACKET_LENGTH = 115;
  OPENSSL_SSL_R_BAD_PROTOCOL_VERSION_NUMBER = 116;
  OPENSSL_SSL_R_BAD_RESPONSE_ARGUMENT = 117;
  OPENSSL_SSL_R_BAD_RSA_DECRYPT = 118;
  OPENSSL_SSL_R_BAD_RSA_ENCRYPT = 119;
  OPENSSL_SSL_R_BAD_RSA_E_LENGTH = 120;
  OPENSSL_SSL_R_BAD_RSA_MODULUS_LENGTH = 121;
  OPENSSL_SSL_R_BAD_RSA_SIGNATURE = 122;
  OPENSSL_SSL_R_BAD_SIGNATURE = 123;
  OPENSSL_SSL_R_BAD_SSL_FILETYPE = 124;
  OPENSSL_SSL_R_BAD_SSL_SESSION_ID_LENGTH = 125;
  OPENSSL_SSL_R_BAD_STATE = 126;
  OPENSSL_SSL_R_BAD_WRITE_RETRY = 127;
  OPENSSL_SSL_R_BIO_NOT_SET = 128;
  OPENSSL_SSL_R_BLOCK_CIPHER_PAD_IS_WRONG = 129;
  OPENSSL_SSL_R_BN_LIB = 130;
  OPENSSL_SSL_R_CA_DN_LENGTH_MISMATCH = 131;
  OPENSSL_SSL_R_CA_DN_TOO_LONG = 132;
  OPENSSL_SSL_R_CCS_RECEIVED_EARLY = 133;
  OPENSSL_SSL_R_CERTIFICATE_VERIFY_FAILED = 134;
  OPENSSL_SSL_R_CERT_LENGTH_MISMATCH = 135;
  OPENSSL_SSL_R_CHALLENGE_IS_DIFFERENT = 136;
  OPENSSL_SSL_R_CIPHER_CODE_WRONG_LENGTH = 137;
  OPENSSL_SSL_R_CIPHER_OR_HASH_UNAVAILABLE = 138;
  OPENSSL_SSL_R_CIPHER_TABLE_SRC_ERROR = 139;
  OPENSSL_SSL_R_COMPRESSED_LENGTH_TOO_LONG = 140;
  OPENSSL_SSL_R_COMPRESSION_FAILURE = 141;
  OPENSSL_SSL_R_COMPRESSION_LIBRARY_ERROR = 142;
  OPENSSL_SSL_R_CONNECTION_ID_IS_DIFFERENT = 143;
  OPENSSL_SSL_R_CONNECTION_TYPE_NOT_SET = 144;
  OPENSSL_SSL_R_DATA_BETWEEN_CCS_AND_FINISHED = 145;
  OPENSSL_SSL_R_DATA_LENGTH_TOO_LONG = 146;
  OPENSSL_SSL_R_DECRYPTION_FAILED = 147;
  OPENSSL_SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG = 148;
  OPENSSL_SSL_R_DIGEST_CHECK_FAILED = 149;
  OPENSSL_SSL_R_ENCRYPTED_LENGTH_TOO_LONG = 150;
  OPENSSL_SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST = 151;
  OPENSSL_SSL_R_EXCESSIVE_MESSAGE_SIZE = 152;
  OPENSSL_SSL_R_EXTRA_DATA_IN_MESSAGE = 153;
  OPENSSL_SSL_R_GOT_A_FIN_BEFORE_A_CCS = 154;
  OPENSSL_SSL_R_HTTPS_PROXY_REQUEST = 155;
  OPENSSL_SSL_R_HTTP_REQUEST = 156;
  OPENSSL_SSL_R_INTERNAL_ERROR = 157;
  OPENSSL_SSL_R_INVALID_CHALLENGE_LENGTH = 158;
  OPENSSL_SSL_R_LENGTH_MISMATCH = 159;
  OPENSSL_SSL_R_LENGTH_TOO_SHORT = 160;
  OPENSSL_SSL_R_LIBRARY_BUG = 274;
  OPENSSL_SSL_R_LIBRARY_HAS_NO_CIPHERS = 161;
  OPENSSL_SSL_R_MISSING_DH_DSA_CERT = 162;
  OPENSSL_SSL_R_MISSING_DH_KEY = 163;
  OPENSSL_SSL_R_MISSING_DH_RSA_CERT = 164;
  OPENSSL_SSL_R_MISSING_DSA_SIGNING_CERT = 165;
  OPENSSL_SSL_R_MISSING_EXPORT_TMP_DH_KEY = 166;
  OPENSSL_SSL_R_MISSING_EXPORT_TMP_RSA_KEY = 167;
  OPENSSL_SSL_R_MISSING_RSA_CERTIFICATE = 168;
  OPENSSL_SSL_R_MISSING_RSA_ENCRYPTING_CERT = 169;
  OPENSSL_SSL_R_MISSING_RSA_SIGNING_CERT = 170;
  OPENSSL_SSL_R_MISSING_TMP_DH_KEY = 171;
  OPENSSL_SSL_R_MISSING_TMP_RSA_KEY = 172;
  OPENSSL_SSL_R_MISSING_TMP_RSA_PKEY = 173;
  OPENSSL_SSL_R_MISSING_VERIFY_MESSAGE = 174;
  OPENSSL_SSL_R_NON_SSLV2_INITIAL_PACKET = 175;
  OPENSSL_SSL_R_NO_CERTIFICATES_RETURNED = 176;
  OPENSSL_SSL_R_NO_CERTIFICATE_ASSIGNED = 177;
  OPENSSL_SSL_R_NO_CERTIFICATE_RETURNED = 178;
  OPENSSL_SSL_R_NO_CERTIFICATE_SET = 179;
  OPENSSL_SSL_R_NO_CERTIFICATE_SPECIFIED = 180;
  OPENSSL_SSL_R_NO_CIPHERS_AVAILABLE = 181;
  OPENSSL_SSL_R_NO_CIPHERS_PASSED = 182;
  OPENSSL_SSL_R_NO_CIPHERS_SPECIFIED = 183;
  OPENSSL_SSL_R_NO_CIPHER_LIST = 184;
  OPENSSL_SSL_R_NO_CIPHER_MATCH = 185;
  OPENSSL_SSL_R_NO_CLIENT_CERT_RECEIVED = 186;
  OPENSSL_SSL_R_NO_COMPRESSION_SPECIFIED = 187;
  OPENSSL_SSL_R_NO_METHOD_SPECIFIED = 188;
  OPENSSL_SSL_R_NO_PRIVATEKEY = 189;
  OPENSSL_SSL_R_NO_PRIVATE_KEY_ASSIGNED = 190;
  OPENSSL_SSL_R_NO_PROTOCOLS_AVAILABLE = 191;
  OPENSSL_SSL_R_NO_PUBLICKEY = 192;
  OPENSSL_SSL_R_NO_SHARED_CIPHER = 193;
  OPENSSL_SSL_R_NO_VERIFY_CALLBACK = 194;
  OPENSSL_SSL_R_NULL_SSL_CTX = 195;
  OPENSSL_SSL_R_NULL_SSL_METHOD_PASSED = 196;
  OPENSSL_SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED = 197;
  OPENSSL_SSL_R_PACKET_LENGTH_TOO_LONG = 198;
  OPENSSL_SSL_R_PATH_TOO_LONG = 270;
  OPENSSL_SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE = 199;
  OPENSSL_SSL_R_PEER_ERROR = 200;
  OPENSSL_SSL_R_PEER_ERROR_CERTIFICATE = 201;
  OPENSSL_SSL_R_PEER_ERROR_NO_CERTIFICATE = 202;
  OPENSSL_SSL_R_PEER_ERROR_NO_CIPHER = 203;
  OPENSSL_SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE = 204;
  OPENSSL_SSL_R_PRE_MAC_LENGTH_TOO_LONG = 205;
  OPENSSL_SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS = 206;
  OPENSSL_SSL_R_PROTOCOL_IS_SHUTDOWN = 207;
  OPENSSL_SSL_R_PUBLIC_KEY_ENCRYPT_ERROR = 208;
  OPENSSL_SSL_R_PUBLIC_KEY_IS_NOT_RSA = 209;
  OPENSSL_SSL_R_PUBLIC_KEY_NOT_RSA = 210;
  OPENSSL_SSL_R_READ_BIO_NOT_SET = 211;
  OPENSSL_SSL_R_READ_WRONG_PACKET_TYPE = 212;
  OPENSSL_SSL_R_RECORD_LENGTH_MISMATCH = 213;
  OPENSSL_SSL_R_RECORD_TOO_LARGE = 214;
  OPENSSL_SSL_R_REQUIRED_CIPHER_MISSING = 215;
  OPENSSL_SSL_R_REUSE_CERT_LENGTH_NOT_ZERO = 216;
  OPENSSL_SSL_R_REUSE_CERT_TYPE_NOT_ZERO = 217;
  OPENSSL_SSL_R_REUSE_CIPHER_LIST_NOT_ZERO = 218;
  OPENSSL_SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED = 277;
  OPENSSL_SSL_R_SHORT_READ = 219;
  OPENSSL_SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE = 220;
  OPENSSL_SSL_R_SSL23_DOING_SESSION_ID_REUSE = 221;
  OPENSSL_SSL_R_SSL3_SESSION_ID_TOO_SHORT = 222;
  OPENSSL_SSL_R_SSLV3_ALERT_BAD_CERTIFICATE = 1042;
  OPENSSL_SSL_R_SSLV3_ALERT_BAD_RECORD_MAC = 1020;
  OPENSSL_SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED = 1045;
  OPENSSL_SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED = 1044;
  OPENSSL_SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN = 1046;
  OPENSSL_SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE = 1030;
  OPENSSL_SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE = 1040;
  OPENSSL_SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER = 1047;
  OPENSSL_SSL_R_SSLV3_ALERT_NO_CERTIFICATE = 1041;
  OPENSSL_SSL_R_SSLV3_ALERT_PEER_ERROR_CERTIFICATE = 223;
  OPENSSL_SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CERTIFICATE = 224;
  OPENSSL_SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CIPHER = 225;
  OPENSSL_SSL_R_SSLV3_ALERT_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE = 226;
  OPENSSL_SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE = 1010;
  OPENSSL_SSL_R_SSLV3_ALERT_UNKNOWN_REMOTE_ERROR_TYPE = 227;
  OPENSSL_SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE = 1043;
  OPENSSL_SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION = 228;
  OPENSSL_SSL_R_SSL_HANDSHAKE_FAILURE = 229;
  OPENSSL_SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS = 230;
  OPENSSL_SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG = 273;
  OPENSSL_SSL_R_SSL_SESSION_ID_IS_DIFFERENT = 231;
  OPENSSL_SSL_R_TLSV1_ALERT_ACCESS_DENIED = 1049;
  OPENSSL_SSL_R_TLSV1_ALERT_DECODE_ERROR = 1050;
  OPENSSL_SSL_R_TLSV1_ALERT_DECRYPTION_FAILED = 1021;
  OPENSSL_SSL_R_TLSV1_ALERT_DECRYPT_ERROR = 1051;
  OPENSSL_SSL_R_TLSV1_ALERT_EXPORT_RESTRICION = 1060;
  OPENSSL_SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY = 1071;
  OPENSSL_SSL_R_TLSV1_ALERT_INTERNAL_ERROR = 1080;
  OPENSSL_SSL_R_TLSV1_ALERT_NO_RENEGOTIATION = 1100;
  OPENSSL_SSL_R_TLSV1_ALERT_PROTOCOL_VERSION = 1070;
  OPENSSL_SSL_R_TLSV1_ALERT_RECORD_OVERFLOW = 1022;
  OPENSSL_SSL_R_TLSV1_ALERT_UNKNOWN_CA = 1048;
  OPENSSL_SSL_R_TLSV1_ALERT_USER_CANCLED = 1090;
  OPENSSL_SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER = 232;
  OPENSSL_SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST = 233;
  OPENSSL_SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG = 234;
  OPENSSL_SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER = 235;
  OPENSSL_SSL_R_UNABLE_TO_DECODE_DH_CERTS = 236;
  OPENSSL_SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY = 237;
  OPENSSL_SSL_R_UNABLE_TO_FIND_DH_PARAMETERS = 238;
  OPENSSL_SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS = 239;
  OPENSSL_SSL_R_UNABLE_TO_FIND_SSL_METHOD = 240;
  OPENSSL_SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES = 241;
  OPENSSL_SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES = 242;
  OPENSSL_SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES = 243;
  OPENSSL_SSL_R_UNEXPECTED_MESSAGE = 244;
  OPENSSL_SSL_R_UNEXPECTED_RECORD = 245;
  OPENSSL_SSL_R_UNINITIALIZED = 276;
  OPENSSL_SSL_R_UNKNOWN_ALERT_TYPE = 246;
  OPENSSL_SSL_R_UNKNOWN_CERTIFICATE_TYPE = 247;
  OPENSSL_SSL_R_UNKNOWN_CIPHER_RETURNED = 248;
  OPENSSL_SSL_R_UNKNOWN_CIPHER_TYPE = 249;
  OPENSSL_SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE = 250;
  OPENSSL_SSL_R_UNKNOWN_PKEY_TYPE = 251;
  OPENSSL_SSL_R_UNKNOWN_PROTOCOL = 252;
  OPENSSL_SSL_R_UNKNOWN_REMOTE_ERROR_TYPE = 253;
  OPENSSL_SSL_R_UNKNOWN_SSL_VERSION = 254;
  OPENSSL_SSL_R_UNKNOWN_STATE = 255;
  OPENSSL_SSL_R_UNSUPPORTED_CIPHER = 256;
  OPENSSL_SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM = 257;
  OPENSSL_SSL_R_UNSUPPORTED_PROTOCOL = 258;
  OPENSSL_SSL_R_UNSUPPORTED_SSL_VERSION = 259;
  OPENSSL_SSL_R_WRITE_BIO_NOT_SET = 260;
  OPENSSL_SSL_R_WRONG_CIPHER_RETURNED = 261;
  OPENSSL_SSL_R_WRONG_MESSAGE_TYPE = 262;
  OPENSSL_SSL_R_WRONG_NUMBER_OF_KEY_BITS = 263;
  OPENSSL_SSL_R_WRONG_SIGNATURE_LENGTH = 264;
  OPENSSL_SSL_R_WRONG_SIGNATURE_SIZE = 265;
  OPENSSL_SSL_R_WRONG_SSL_VERSION = 266;
  OPENSSL_SSL_R_WRONG_VERSION_NUMBER = 267;
  OPENSSL_SSL_R_X509_LIB = 268;
  OPENSSL_SSL_R_X509_VERIFICATION_SETUP_PROBLEMS = 269;
  OPENSSL_SSL_SENT_SHUTDOWN = 1;
  OPENSSL_SSL_SESSION_ASN1_VERSION = $0001;
  OPENSSL_SSL_SESSION_CACHE_MAX_SIZE_DEFAULT = 1024 * 20;
  OPENSSL_SSL_SESS_CACHE_CLIENT = $0001;
  OPENSSL_SSL_SESS_CACHE_SERVER = $0002;
  OPENSSL_SSL_SESS_CACHE_BOTH = OPENSSL_SSL_SESS_CACHE_CLIENT or
    OPENSSL_SSL_SESS_CACHE_SERVER;
  OPENSSL_SSL_SESS_CACHE_NO_AUTO_CLEAR = $0080;
  OPENSSL_SSL_SESS_CACHE_NO_INTERNAL_LOOKUP = $0100;
  OPENSSL_SSL_SESS_CACHE_OFF = $0000;
  OPENSSL_SSL_ST_BEFORE = $4000;
  OPENSSL_SSL_ST_INIT = OPENSSL_SSL_ST_CONNECT or OPENSSL_SSL_ST_ACCEPT;
  OPENSSL_SSL_ST_MASK = $0FFF;
  OPENSSL_SSL_ST_OK = $03;
  OPENSSL_SSL_ST_READ_BODY = $F1;
  OPENSSL_SSL_ST_READ_DONE = $F2;
  OPENSSL_SSL_ST_READ_HEADER = $F0;
  OPENSSL_SSL_ST_RENEGOTIATE = $04 or OPENSSL_SSL_ST_INIT;
  OPENSSL_SSL_TXT_3DES = '3DES';
  OPENSSL_SSL_TXT_ADH_C = 'ADH';
  OPENSSL_SSL_TXT_ALL = 'ALL';
  OPENSSL_SSL_TXT_DES = 'DES';
  OPENSSL_SSL_TXT_DES_192_EDE3_CBC_WITH_MD5 =
    OPENSSL_SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5;
  OPENSSL_SSL_TXT_DES_192_EDE3_CBC_WITH_SHA =
    OPENSSL_SSL2_TXT_DES_192_EDE3_CBC_WITH_SHA;
  OPENSSL_SSL_TXT_DES_64_CBC_WITH_MD5 = OPENSSL_SSL2_TXT_DES_64_CBC_WITH_MD5;
  OPENSSL_SSL_TXT_DES_64_CBC_WITH_SHA = OPENSSL_SSL2_TXT_DES_64_CBC_WITH_SHA;
  OPENSSL_SSL_TXT_DH = 'DH';
  OPENSSL_SSL_TXT_DSS = 'DSS';
  OPENSSL_SSL_TXT_EDH = 'EDH';
  OPENSSL_SSL_TXT_EXP40 = 'EXP';
  OPENSSL_SSL_TXT_EXP56 = 'EXPORT56';
  OPENSSL_SSL_TXT_EXPORT = 'EXPORT';
  OPENSSL_SSL_TXT_FZA = 'FZA';
  OPENSSL_SSL_TXT_HIGH = 'HIGH';
  OPENSSL_SSL_TXT_IDEA = 'IDEA';
  OPENSSL_SSL_TXT_IDEA_128_CBC_WITH_MD5 =
    OPENSSL_SSL2_TXT_IDEA_128_CBC_WITH_MD5;
  OPENSSL_SSL_TXT_LOW = 'LOW';
  OPENSSL_SSL_TXT_MD5 = 'MD5';
  OPENSSL_SSL_TXT_MEDIUM = 'MEDIUM';
  OPENSSL_SSL_TXT_NULL = 'NULL';
  OPENSSL_SSL_TXT_NULL_WITH_MD5 = OPENSSL_SSL2_TXT_NULL_WITH_MD5;
  OPENSSL_SSL_TXT_RC2 = 'RC2';
  OPENSSL_SSL_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 =
    OPENSSL_SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5;
  OPENSSL_SSL_TXT_RC2_128_CBC_WITH_MD5 = OPENSSL_SSL2_TXT_RC2_128_CBC_WITH_MD5;
  OPENSSL_SSL_TXT_RC4 = 'RC4';
  OPENSSL_SSL_TXT_RC4_128_EXPORT40_WITH_MD5 =
    OPENSSL_SSL2_TXT_RC4_128_EXPORT40_WITH_MD5;
  OPENSSL_SSL_TXT_RC4_128_WITH_MD5 = OPENSSL_SSL2_TXT_RC4_128_WITH_MD5;
  OPENSSL_SSL_TXT_RSA = 'RSA';
  OPENSSL_SSL_TXT_SHA = 'SHA';
  OPENSSL_SSL_TXT_SHA1 = 'SHA1';
  OPENSSL_SSL_TXT_SSLV2 = 'SSLv2';
  OPENSSL_SSL_TXT_SSLV3 = 'SSLv3';
  OPENSSL_SSL_TXT_TLSV1 = 'TLSv1';
  OPENSSL_SSL_TXT_aDH_S = 'aDH';
  OPENSSL_SSL_TXT_aDSS = 'aDSS';
  OPENSSL_SSL_TXT_aFZA = 'aFZA';
  OPENSSL_SSL_TXT_aNULL = 'aNULL';
  OPENSSL_SSL_TXT_aRSA = 'aRSA';
  OPENSSL_SSL_TXT_eFZA = 'eFZA';
  OPENSSL_SSL_TXT_eNULL = 'eNULL';
  OPENSSL_SSL_TXT_kDHd = 'kDHd';
  OPENSSL_SSL_TXT_kDHr = 'kDHr';
  OPENSSL_SSL_TXT_kEDH = 'kEDH';
  OPENSSL_SSL_TXT_kFZA = 'kFZA';
  OPENSSL_SSL_TXT_kRSA = 'kRSA';
  OPENSSL_SSL_VERIFY_CLIENT_ONCE = $04;
  OPENSSL_SSL_VERIFY_FAIL_IF_NO_PEER_CERT = $02;
  OPENSSL_SSL_VERIFY_NONE = $00;
  OPENSSL_SSL_VERIFY_PEER = $01;
  OPENSSL_SSL_WRITING = 2;
  OPENSSL_SSL_X509_LOOKUP = 4;
  OPENSSL_TLS1_ALLOW_EXPERIMENTAL_CIPHERSUITES = 0;
  OPENSSL_TLS1_CK_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA = $03000063;
  OPENSSL_TLS1_CK_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA = $03000065;
  OPENSSL_TLS1_CK_DHE_DSS_WITH_RC4_128_SHA = $03000066;
  OPENSSL_TLS1_CK_RSA_EXPORT1024_WITH_DES_CBC_SHA = $03000062;
  OPENSSL_TLS1_CK_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 = $03000061;
  OPENSSL_TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_MD5 = $03000060;
  OPENSSL_TLS1_CK_RSA_EXPORT1024_WITH_RC4_56_SHA = $03000064;
  OPENSSL_TLS1_FINISH_MAC_LENGTH = 12;
  OPENSSL_TLS1_FLAGS_TLS_PADDING_BUG = $0008;
  OPENSSL_TLS1_TXT_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA =
    'EXP1024-DHE-DSS-DES-CBC-SHA';
  OPENSSL_TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA =
    'EXP1024-DHE-DSS-RC4-SHA';
  OPENSSL_TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA = 'DHE-DSS-RC4-SHA';
  OPENSSL_TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA = 'EXP1024-DES-CBC-SHA';
  OPENSSL_TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 = 'EXP1024-RC2-CBC-MD5';
  OPENSSL_TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5 = 'EXP1024-RC4-MD5';
  OPENSSL_TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA = 'EXP1024-RC4-SHA';
  OPENSSL_TLS1_VERSION = $0301;
  OPENSSL_TLS1_VERSION_MAJOR = $03;
  OPENSSL_TLS1_VERSION_MINOR = $01;
  OPENSSL_TLS_CT_DSS_FIXED_DH = 4;
  OPENSSL_TLS_CT_DSS_SIGN = 2;
  OPENSSL_TLS_CT_NUMBER = 4;
  OPENSSL_TLS_CT_RSA_FIXED_DH = 3;
  OPENSSL_TLS_CT_RSA_SIGN = 1;
  OPENSSL_TLS_MD_CLIENT_FINISH_CONST = 'client finished';
  OPENSSL_TLS_MD_CLIENT_FINISH_CONST_SIZE = 15;
  OPENSSL_TLS_MD_CLIENT_WRITE_KEY_CONST = 'client write key';
  OPENSSL_TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE = 16;
  OPENSSL_TLS_MD_IV_BLOCK_CONST = 'IV block';
  OPENSSL_TLS_MD_IV_BLOCK_CONST_SIZE = 8;
  OPENSSL_TLS_MD_KEY_EXPANSION_CONST = 'key expansion';
  OPENSSL_TLS_MD_KEY_EXPANSION_CONST_SIZE = 13;
  OPENSSL_TLS_MD_MASTER_SECRET_CONST = 'master secret';
  OPENSSL_TLS_MD_MASTER_SECRET_CONST_SIZE = 13;
  OPENSSL_TLS_MD_MAX_CONST_SIZE = 20;
  OPENSSL_TLS_MD_SERVER_FINISH_CONST = 'server finished';
  OPENSSL_TLS_MD_SERVER_FINISH_CONST_SIZE = 15;
  OPENSSL_TLS_MD_SERVER_WRITE_KEY_CONST = 'server write key';
  OPENSSL_TLS_MD_SERVER_WRITE_KEY_CONST_SIZE = 16;
  OPENSSL_TMP_MAX = 26;
  OPENSSL_V_ASN1_APPLICATION = $40;
  OPENSSL_V_ASN1_APP_CHOOSE = -2;
  OPENSSL_V_ASN1_BIT_STRING = 3;
  OPENSSL_V_ASN1_BMPSTRING = 30;
  OPENSSL_V_ASN1_BOOLEAN = 1;
  OPENSSL_V_ASN1_CONSTRUCTED = $20;
  OPENSSL_V_ASN1_CONTEXT_SPECIFIC = $80;
  OPENSSL_V_ASN1_ENUMERATED = 10;
  OPENSSL_V_ASN1_EOC = 0;
  OPENSSL_V_ASN1_EXTERNAL = 8;
  OPENSSL_V_ASN1_GENERALIZEDTIME = 24;
  OPENSSL_V_ASN1_GENERALSTRING = 27;
  OPENSSL_V_ASN1_GRAPHICSTRING = 25;
  OPENSSL_V_ASN1_IA5STRING = 22;
  OPENSSL_V_ASN1_INTEGER = 2;
  OPENSSL_V_ASN1_ISO64STRING = 26;
  OPENSSL_V_ASN1_NEG_ENUMERATED = 10 + $100;
  OPENSSL_V_ASN1_NEG_INTEGER = 2 + $100;
  OPENSSL_V_ASN1_NULL = 5;
  OPENSSL_V_ASN1_NUMERICSTRING = 18;
  OPENSSL_V_ASN1_OBJECT = 6;
  OPENSSL_V_ASN1_OBJECT_DESCRIPTOR = 7;
  OPENSSL_V_ASN1_OCTET_STRING = 4;
  OPENSSL_V_ASN1_PRIMATIVE_TAG = $1F;
  OPENSSL_V_ASN1_PRIMITIVE_TAG = $1F;
  OPENSSL_V_ASN1_PRINTABLESTRING = 19;
  OPENSSL_V_ASN1_PRIVATE = $C0;
  OPENSSL_V_ASN1_REAL = 9;
  OPENSSL_V_ASN1_SEQUENCE = 16;
  OPENSSL_V_ASN1_SET = 17;
  OPENSSL_V_ASN1_T61STRING = 20;
  OPENSSL_V_ASN1_TELETEXSTRING = 20;
  OPENSSL_V_ASN1_UNDEF = -1;
  OPENSSL_V_ASN1_UNIVERSAL = $00;
  OPENSSL_V_ASN1_UNIVERSALSTRING = 28;
  OPENSSL_V_ASN1_UTCTIME = 23;
  OPENSSL_V_ASN1_UTF8STRING = 12;
  OPENSSL_V_ASN1_VIDEOTEXSTRING = 21;
  OPENSSL_V_ASN1_VISIBLESTRING = 26;
  OPENSSL_WINNT = 1;
  OPENSSL_X509_EXT_PACK_STRING = 2;
  OPENSSL_X509_EXT_PACK_UNKNOWN = 1;
  OPENSSL_X509_EX_V_INIT = $0001;
  OPENSSL_X509_EX_V_NETSCAPE_HACK = $8000;
  OPENSSL_X509_FILETYPE_DEFAULT = 3;
  OPENSSL_X509_F_ADD_CERT_DIR = 100;
  OPENSSL_X509_F_BY_FILE_CTRL = 101;
  OPENSSL_X509_F_DIR_CTRL = 102;
  OPENSSL_X509_F_GET_CERT_BY_SUBJECT = 103;
  OPENSSL_X509_F_X509V3_ADD_EXT = 104;
  OPENSSL_X509_F_X509_CHECK_PRIVATE_KEY = 128;
  OPENSSL_X509_F_X509_EXTENSION_CREATE_BY_NID = 108;
  OPENSSL_X509_F_X509_EXTENSION_CREATE_BY_OBJ = 109;
  OPENSSL_X509_F_X509_GET_PUBKEY_PARAMETERS = 110;
  OPENSSL_X509_F_X509_LOAD_CERT_FILE = 111;
  OPENSSL_X509_F_X509_LOAD_CRL_FILE = 112;
  OPENSSL_X509_F_X509_NAME_ADD_ENTRY = 113;
  OPENSSL_X509_F_X509_NAME_ENTRY_CREATE_BY_NID = 114;
  OPENSSL_X509_F_X509_NAME_ENTRY_SET_OBJECT = 115;
  OPENSSL_X509_F_X509_NAME_ONELINE = 116;
  OPENSSL_X509_F_X509_NAME_PRINT = 117;
  OPENSSL_X509_F_X509_PRINT_FP = 118;
  OPENSSL_X509_F_X509_PUBKEY_GET = 119;
  OPENSSL_X509_F_X509_PUBKEY_SET = 120;
  OPENSSL_X509_F_X509_REQ_PRINT = 121;
  OPENSSL_X509_F_X509_REQ_PRINT_FP = 122;
  OPENSSL_X509_F_X509_REQ_TO_X509 = 123;
  OPENSSL_X509_F_X509_STORE_ADD_CERT = 124;
  OPENSSL_X509_F_X509_STORE_ADD_CRL = 125;
  OPENSSL_X509_F_X509_TO_X509_REQ = 126;
  OPENSSL_X509_F_X509_VERIFY_CERT = 127;
  OPENSSL_X509_LU_CRL = 2;
  OPENSSL_X509_LU_FAIL = 0;
  OPENSSL_X509_LU_PKEY = 3;
  OPENSSL_X509_LU_RETRY = -1;
  OPENSSL_X509_LU_X509 = 1;
  OPENSSL_X509_L_ADD_DIR = 2;
  OPENSSL_X509_L_FILE_LOAD = 1;
  OPENSSL_X509_R_BAD_X509_FILETYPE = 100;
  OPENSSL_X509_R_CANT_CHECK_DH_KEY = 114;
  OPENSSL_X509_R_CERT_ALREADY_IN_HASH_TABLE = 101;
  OPENSSL_X509_R_ERR_ASN1_LIB = 102;
  OPENSSL_X509_R_INVALID_DIRECTORY = 113;
  OPENSSL_X509_R_KEY_TYPE_MISMATCH = 115;
  OPENSSL_X509_R_KEY_VALUES_MISMATCH = 116;
  OPENSSL_X509_R_LOADING_CERT_DIR = 103;
  OPENSSL_X509_R_LOADING_DEFAULTS = 104;
  OPENSSL_X509_R_NO_CERT_SET_FOR_US_TO_VERIFY = 105;
  OPENSSL_X509_R_SHOULD_RETRY = 106;
  OPENSSL_X509_R_UNABLE_TO_FIND_PARAMETERS_IN_CHAIN = 107;
  OPENSSL_X509_R_UNABLE_TO_GET_CERTS_PUBLIC_KEY = 108;
  OPENSSL_X509_R_UNKNOWN_KEY_TYPE = 117;
  OPENSSL_X509_R_UNKNOWN_NID = 109;
  OPENSSL_X509_R_UNSUPPORTED_ALGORITHM = 111;
  OPENSSL_X509_R_WRONG_LOOKUP_TYPE = 112;
  OPENSSL_X509_V_ERR_APPLICATION_VERIFICATION = 50;
  OPENSSL_X509_V_ERR_CERT_CHAIN_TOO_LONG = 22;
  OPENSSL_X509_V_ERR_CERT_HAS_EXPIRED = 10;
  OPENSSL_X509_V_ERR_CERT_NOT_YET_VALID = 9;
  OPENSSL_X509_V_ERR_CERT_REVOKED = 23;
  OPENSSL_X509_V_ERR_CERT_SIGNATURE_FAILURE = 7;
  OPENSSL_X509_V_ERR_CRL_HAS_EXPIRED = 12;
  OPENSSL_X509_V_ERR_CRL_NOT_YET_VALID = 11;
  OPENSSL_X509_V_ERR_CRL_SIGNATURE_FAILURE = 8;
  OPENSSL_X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT = 18;
  OPENSSL_X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD = 14;
  OPENSSL_X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD = 13;
  OPENSSL_X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD = 15;
  OPENSSL_X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = 16;
  OPENSSL_X509_V_ERR_OUT_OF_MEM = 17;
  OPENSSL_X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN = 19;
  OPENSSL_X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY = 6;
  OPENSSL_X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE = 4;
  OPENSSL_X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE = 5;
  OPENSSL_X509_V_ERR_UNABLE_TO_GET_CRL = 3;
  OPENSSL_X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT = 2;
  OPENSSL_X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY = 20;
  OPENSSL_X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE = 21;
  OPENSSL_X509_V_OK = 0;
  OPENSSL_X509v3_KU_CRL_SIGN = $0002;
  OPENSSL_X509v3_KU_DATA_ENCIPHERMENT = $0010;
  OPENSSL_X509v3_KU_DECIPHER_ONLY = $8000;
  OPENSSL_X509v3_KU_DIGITAL_SIGNATURE = $0080;
  OPENSSL_X509v3_KU_ENCIPHER_ONLY = $0001;
  OPENSSL_X509v3_KU_KEY_AGREEMENT = $0008;
  OPENSSL_X509v3_KU_KEY_CERT_SIGN = $0004;
  OPENSSL_X509v3_KU_KEY_ENCIPHERMENT = $0020;
  OPENSSL_X509v3_KU_NON_REPUDIATION = $0040;
  OPENSSL_X509v3_KU_UNDEF = $FFFF;
  OPENSSL__ATEXIT_SIZE = 32;
  OPENSSL__IOFBF = 0;
  OPENSSL__IOLBF = 1;
  OPENSSL__IONBF = 2;
  OPENSSL__N_LISTS = 30;
  OPENSSL__MSS_WIN32 = 1;
  OPENSSL__MSS_X86_ = 1;
  OPENSSL___CYGWIN32__ = 1;
  OPENSSL___CYGWIN__ = 1;
  OPENSSL___GNUC_MINOR__ = 91;
  OPENSSL___GNUC__ = 2;
  OPENSSL___SAPP = $0100;
  OPENSSL___SEOF = $0020;
  OPENSSL___SERR = $0040;
  OPENSSL___SLBF = $0001;
  OPENSSL___SMBF = $0080;
  OPENSSL___SMOD = $2000;
  OPENSSL___SNBF = $0002;
  OPENSSL___SNPT = $0800;
  OPENSSL___SOFF = $1000;
  OPENSSL___SOPT = $0400;
  OPENSSL___SRD = $0004;
  OPENSSL___SRW = $0010;
  OPENSSL___SSTR = $0200;
  OPENSSL___STDC__ = 1;
  OPENSSL___SWR = $0008;
  OPENSSL___WINNT = 1;
  OPENSSL___WINNT__ = 1;
  OPENSSL___i386 = 1;
  OPENSSL___i386__ = 1;
  OPENSSL___i586 = 1;
  OPENSSL___i586__ = 1;
  OPENSSL___pentium = 1;
  OPENSSL___pentium__ = 1;
  OPENSSL_i386 = 1;
  OPENSSL_i586 = 1;
  OPENSSL_pentium = 1;

type
  UInteger = Longint;
  PUInteger = ^UInteger;
  PFunction = procedure;
  PInteger = ^Integer;
  PLong = ^Longint;
  PULong = ^Cardinal;
  PUShort = ^Byte;
  PPChar = ^PChar;

  PSSL_CTX = Pointer;
  PSSL = Pointer;
  PSSL_METHOD = Pointer;
  PSSL_SESSION = Pointer;
  PPSSL_SESSION = ^PSSL_SESSION;
  PSSL_CIPHER = Pointer;
  Pevp_pkey_st = Pointer;
  PSTACK = Pointer;
  PPSTACK = ^PSTACK;
  PCRYPTO_EX_DATA = Pointer;
  PLHASH = Pointer;
  PEVP_MD_CTX = Pointer;
  PEVP_MD = Pointer;
  PEVP_CIPHER = Pointer;
  PEVP_CIPHER_CTX = Pointer;
  PEVP_PKEY = Pointer;
  PPEVP_PKEY = ^PEVP_PKEY;
  PEVP_ENCODE_CTX = Pointer;
  PX509_LOOKUP = Pointer;
  PX509_STORE = Pointer;
  PX509_STORE_CTX = Pointer;
  PX509_CRL = Pointer;
  PPX509_CRL = ^PX509_CRL;
  PX509_LOOKUP_METHOD = Pointer;
  PX509_NAME = Pointer;
  PPX509_NAME = ^PX509_NAME;
  PX509_OBJECT = Pointer;
  PX509 = Pointer;
  PPX509 = ^PX509;
  PX509_EXTENSION_METHOD = Pointer;
  PX509_REQ = Pointer;
  PPX509_REQ = ^PX509_REQ;
  PX509_ATTRIBUTE = Pointer;
  PPX509_ATTRIBUTE = ^PX509_ATTRIBUTE;
  PX509_EXTENSION = Pointer;
  PPX509_EXTENSION = ^PX509_EXTENSION;
  PX509_NAME_ENTRY = Pointer;
  PPX509_NAME_ENTRY = ^PX509_NAME_ENTRY;
  PX509_ALGOR = Pointer;
  PPX509_ALGOR = ^PX509_ALGOR;
  PX509_VAL = Pointer;
  PPX509_VAL = ^PX509_VAL;
  PX509_PUBKEY = Pointer;
  PPX509_PUBKEY = ^PX509_PUBKEY;
  PX509_SIG = Pointer;
  PPX509_SIG = ^PX509_SIG;
  PX509_REQ_INFO = Pointer;
  PPX509_REQ_INFO = ^PX509_REQ_INFO;
  PX509_CINF = Pointer;
  PPX509_CINF = ^PX509_CINF;
  PX509_REVOKED = Pointer;
  PPX509_REVOKED = ^PX509_REVOKED;
  PX509_CRL_INFO = Pointer;
  PPX509_CRL_INFO = ^PX509_CRL_INFO;
  PX509_PKEY = Pointer;
  PPX509_PKEY = ^PX509_PKEY;
  PX509_INFO = Pointer;
  PPX509_INFO = ^PX509_INFO;
{$IFDEF CBUILDER}
{$NODEFINE PKCS7_SIGNER_INFO}
{$ENDIF}
  Ppem_password_cb = Pointer;
  PPEM_ENCODE_SEAL_CTX = Pointer;
  PSTACK_SSL_CIPHER = Pointer;
  PSTACK_SSL_COMP = Pointer;
  PSSL_COMP = Pointer;
  PASN1_UTCTIME = Pointer;
  Phostent2 = Pointer;
  time_t = Integer;
{$IFDEF CBUILDER}{$NODEFINE size_t}{$ENDIF}
  des_cblock = Integer;
  des_key_schedule = Integer;
  des_cblocks = Integer;
  size_t = Integer;

const
  IdSslCtxSetCipherList: function(arg0: PSSL_CTX; str: PChar): Integer cdecl =
    nil;
  IdSslCtxNew: function(meth: PSSL_METHOD): PSSL_CTX cdecl = nil;
  IdSslCtxFree: procedure(arg0: PSSL_CTX) cdecl = nil;
  IdSslSetFd: function(s: PSSL; fd: Integer): Integer cdecl = nil;
  IdSslCtxUsePrivateKeyFile: function(ctx: PSSL_CTX; const _file: PChar; _type:
    Integer): Integer cdecl = nil;
  IdSslCtxUseCertificateFile: function(ctx: PSSL_CTX; const _file: PChar; _type:
    Integer): Integer cdecl = nil;
  IdSslLoadErrorStrings: procedure cdecl = nil;
  IdSslStateStringLong: function(s: PSSL): PChar cdecl = nil;
  IdSslGetPeerCertificate: function(s: PSSL): PX509 cdecl = nil;
  IdSslCtxSetVerify: procedure(ctx: PSSL_CTX; mode: Integer; arg2: PFunction)
    cdecl = nil;
  IdSslCtxSetDefaultPasswdCb: procedure(ctx: PSSL_CTX; cb: Ppem_password_cb)
    cdecl = nil;
  IdSslCtxSetDefaultPasswdCbUserdata: procedure(ctx: PSSL_CTX; u: Pointer) cdecl
    = nil;
  IdSslCtxCheckPrivateKeyFile: function(ctx: PSSL_CTX): Integer cdecl = nil;
  IdSslNew: function(ctx: PSSL_CTX): PSSL cdecl = nil;
  IdSslFree: procedure(ssl: PSSL) cdecl = nil;
  IdSslAccept: function(ssl: PSSL): Integer cdecl = nil;
  IdSslConnect: function(ssl: PSSL): Integer cdecl = nil;
  IdSslRead: function(ssl: PSSL; buf: PChar; num: Integer): Integer cdecl = nil;
  IdSslPeek: function(ssl: PSSL; buf: PChar; num: Integer): Integer cdecl = nil;
  IdSslWrite: function(ssl: PSSL; const buf: PChar; num: Integer): Integer cdecl
    = nil;
  IdSslGetError: function(s: PSSL; ret_code: Integer): Integer cdecl = nil;
  IdSslMethodV2: function: PSSL_METHOD cdecl = nil;
  IdSslMethodServerV2: function: PSSL_METHOD cdecl = nil;
  IdSslMethodClientV2: function: PSSL_METHOD cdecl = nil;
  IdSslMethodV3: function: PSSL_METHOD cdecl = nil;
  IdSslMethodServerV3: function: PSSL_METHOD cdecl = nil;
  IdSslMethodClientV3: function: PSSL_METHOD cdecl = nil;
  IdSslMethodV23: function: PSSL_METHOD cdecl = nil;
  IdSslMethodServerV23: function: PSSL_METHOD cdecl = nil;
  IdSslMethodClientV23: function: PSSL_METHOD cdecl = nil;
  IdSslMethodTLSV1: function: PSSL_METHOD cdecl = nil;
  IdSslMethodServerTLSV1: function: PSSL_METHOD cdecl = nil;
  IdSslMethodClientTLSV1: function: PSSL_METHOD cdecl = nil;
  IdSslShutdown: function(s: PSSL): Integer cdecl = nil;
  IdSslSetConnectState: procedure(s: PSSL) cdecl = nil;
  IdSslSetAcceptState: procedure(s: PSSL) cdecl = nil;
  IdSslSetShutdown: procedure(ssl: PSSL; mode: Integer) cdecl = nil;
  IdSslCtxLoadVerifyLocations: function(ctx: PSSL_CTX; const CAfile: PChar; const
    CApath: PChar): Integer cdecl = nil;
  IdSslGetSession: function(ssl: PSSL): PSSL_SESSION cdecl = nil;
  IdSslAddSslAlgorithms: function: Integer cdecl = nil;
  IdSslSetAppData: function(s: PSSL; arg: Pointer): Integer cdecl = nil;
  IdSslGetAppData: function(s: PSSL): Pointer cdecl = nil;
  IdSslCtxSetInfoCallback: procedure(ctx: PSSL_CTX; cb: PFunction) cdecl = nil;
  IdSslX509StoreCtxGetAppData: function(ctx: PX509_STORE_CTX): Pointer cdecl =
    nil;
  IdSslUCTTimeDecode: function(UCTtime: PASN1_UTCTIME; year: PUShort; month:
    PUShort; day: PUShort; hour: PUShort; min: PUShort; sec: PUShort; tz_hour:
    PInteger; tz_min: PInteger): Integer cdecl = nil;
  IdSslSessionGetId: function(s: PSSL_SESSION; id: PPChar; length: PInteger):
    Integer cdecl = nil;
  IdSslSessionGetIdCtx: function(s: PSSL_SESSION; id: PPChar; length: PInteger):
    Integer cdecl = nil;
  IdSslCtxGetVersion: function(ctx: PSSL_CTX): Integer cdecl = nil;
  IdSslCtxSetOptions: function(ctx: PSSL_CTX; op: Longint): Longint cdecl = nil;
  IdSslX509NameOneline: function(a: PX509_NAME; buf: PChar; size: Integer): PChar
    cdecl = nil;
  IdSslX509NameHash: function(x: PX509_NAME): Cardinal cdecl = nil;
  IdSslX509SetIssuerName: function(x: PX509; name: PX509_NAME): Integer cdecl =
    nil;
  IdSslX509GetIssuerName: function(a: PX509): PX509_NAME cdecl = nil;
  IdSslX509SetSubjectName: function(x: PX509; name: PX509_NAME): Integer cdecl =
    nil;
  IdSslX509GetSubjectName: function(a: PX509): PX509_NAME cdecl = nil;
  IdSslX509Digest: function(data: PX509; _type: PEVP_MD; md: PChar; len:
    PUInteger): Integer cdecl = nil;
  IdSslEvpMd5: function: PEVP_MD cdecl = nil;
  IdSslX509GetNotBefore: function(x509: PX509): PASN1_UTCTIME cdecl = nil;
  IdSslX509GetNotAfter: function(x509: PX509): PASN1_UTCTIME cdecl = nil;
  IdSslX509StoreCtxGetError: function(ctx: PX509_STORE_CTX): Integer cdecl =
    nil;
  IdSslX509StoreCtxSetError: procedure(ctx: PX509_STORE_CTX; s: Integer) cdecl =
    nil;
  IdSslX509StoreCtxGetErrorDepth: function(ctx: PX509_STORE_CTX): Integer cdecl
    = nil;
  IdSslX509StoreCtxGetCurrentCert: function(ctx: PX509_STORE_CTX): PX509 cdecl =
    nil;
  IdSslRandScreen: procedure cdecl = nil;

function Load: Boolean;
procedure Unload;
function WhichFailedToLoad: string;

implementation

uses
  Windows;

const
  SSL_DLL_name = 'ssleay32.dll';
  SSLCLIB_DLL_name = 'libeay32.dll';
  hIdSSL: Integer = 0;
  hIdSSLLib: Integer = 0;

const
  fn_sk_num = 'sk_num';
  fn_sk_value = 'sk_value';
  fn_sk_set = 'sk_set';
  fn_sk_new = 'sk_new';
  fn_sk_free = 'sk_free';
  fn_sk_pop_free = 'sk_pop_free';
  fn_sk_insert = 'sk_insert';
  fn_sk_delete = 'sk_delete';
  fn_sk_delete_ptr = 'sk_delete_ptr';
  fn_sk_find = 'sk_find';
  fn_sk_push = 'sk_push';
  fn_sk_unshift = 'sk_unshift';
  fn_sk_shift = 'sk_shift';
  fn_sk_pop = 'sk_pop';
  fn_sk_zero = 'sk_zero';
  fn_sk_dup = 'sk_dup';
  fn_sk_sort = 'sk_sort';
  fn_SSLeay_version = 'SSLeay_version';
  fn_SSLeay = 'SSLeay';
  fn_CRYPTO_get_ex_new_index = 'CRYPTO_get_ex_new_index';
  fn_CRYPTO_set_ex_data = 'CRYPTO_set_ex_data';
  fn_CRYPTO_get_ex_data = 'CRYPTO_get_ex_data';
  fn_CRYPTO_dup_ex_data = 'CRYPTO_dup_ex_data';
  fn_CRYPTO_free_ex_data = 'CRYPTO_free_ex_data';
  fn_CRYPTO_new_ex_data = 'CRYPTO_new_ex_data';
  fn_CRYPTO_mem_ctrl = 'CRYPTO_mem_ctrl';
  fn_CRYPTO_get_new_lockid = 'CRYPTO_get_new_lockid';
  fn_CRYPTO_num_locks = 'CRYPTO_num_locks';
  fn_CRYPTO_lock = 'CRYPTO_lock';
  fn_CRYPTO_set_locking_callback = 'CRYPTO_set_locking_callback';
  fn_CRYPTO_set_add_lock_callback = 'CRYPTO_set_add_lock_callback';
  fn_CRYPTO_set_id_callback = 'CRYPTO_set_id_callback';
  fn_CRYPTO_thread_id = 'CRYPTO_thread_id';
  fn_CRYPTO_get_lock_name = 'CRYPTO_get_lock_name';
  fn_CRYPTO_add_lock = 'CRYPTO_add_lock';
  fn_CRYPTO_set_mem_functions = 'CRYPTO_set_mem_functions';
  fn_CRYPTO_get_mem_functions = 'CRYPTO_get_mem_functions';
  fn_CRYPTO_set_locked_mem_functions = 'CRYPTO_set_locked_mem_functions';
  fn_CRYPTO_get_locked_mem_functions = 'CRYPTO_get_locked_mem_functions';
  fn_CRYPTO_malloc_locked = 'CRYPTO_malloc_locked';
  fn_CRYPTO_free_locked = 'CRYPTO_free_locked';
  fn_CRYPTO_malloc = 'CRYPTO_malloc';
  fn_CRYPTO_free = 'CRYPTO_free';
  fn_CRYPTO_realloc = 'CRYPTO_realloc';
  fn_CRYPTO_remalloc = 'CRYPTO_remalloc';
  fn_CRYPTO_dbg_malloc = 'CRYPTO_dbg_malloc';
  fn_CRYPTO_dbg_realloc = 'CRYPTO_dbg_realloc';
  fn_CRYPTO_dbg_free = 'CRYPTO_dbg_free';
  fn_CRYPTO_dbg_remalloc = 'CRYPTO_dbg_remalloc';
  fn_CRYPTO_mem_leaks_fp = 'CRYPTO_mem_leaks_fp';
  fn_CRYPTO_mem_leaks = 'CRYPTO_mem_leaks';
  fn_CRYPTO_mem_leaks_cb = 'CRYPTO_mem_leaks_cb';
  fn_ERR_load_CRYPTO_strings = 'ERR_load_CRYPTO_strings';
  fn_lh_new = 'lh_new';
  fn_lh_free = 'lh_free';
  fn_lh_insert = 'lh_insert';
  fn_lh_delete = 'lh_delete';
  fn_lh_retrieve = 'lh_retrieve';
  fn_lh_doall = 'lh_doall';
  fn_lh_doall_arg = 'lh_doall_arg';
  fn_lh_strhash = 'lh_strhash';
  fn_lh_stats = 'lh_stats';
  fn_lh_node_stats = 'lh_node_stats';
  fn_lh_node_usage_stats = 'lh_node_usage_stats';
  fn_BUF_MEM_new = 'BUF_MEM_new';
  fn_BUF_MEM_free = 'BUF_MEM_free';
  fn_BUF_MEM_grow = 'BUF_MEM_grow';
  fn_BUF_strdup = 'BUF_strdup';
  fn_ERR_load_BUF_strings = 'ERR_load_BUF_strings';
  fn_BIO_ctrl_pending = 'BIO_ctrl_pending';
  fn_BIO_ctrl_wpending = 'BIO_ctrl_wpending';
  fn_BIO_ctrl_get_write_guarantee = 'BIO_ctrl_get_write_guarantee';
  fn_BIO_ctrl_get_read_request = 'BIO_ctrl_get_read_request';
  fn_BIO_set_ex_data = 'BIO_set_ex_data';
  fn_BIO_get_ex_data = 'BIO_get_ex_data';
  fn_BIO_get_ex_new_index = 'BIO_get_ex_new_index';
  fn_BIO_s_file = 'BIO_s_file';
  fn_BIO_new_file = 'BIO_new_file';
  fn_BIO_new_fp = 'BIO_new_fp';
  fn_BIO_new = 'BIO_new';
  fn_BIO_set = 'BIO_set';
  fn_BIO_free = 'BIO_free';
  fn_BIO_read = 'BIO_read';
  fn_BIO_gets = 'BIO_gets';
  fn_BIO_write = 'BIO_write';
  fn_BIO_puts = 'BIO_puts';
  fn_BIO_ctrl = 'BIO_ctrl';
  fn_BIO_ptr_ctrl = 'BIO_ptr_ctrl';
  fn_BIO_int_ctrl = 'BIO_int_ctrl';
  fn_BIO_push = 'BIO_push';
  fn_BIO_pop = 'BIO_pop';
  fn_BIO_free_all = 'BIO_free_all';
  fn_BIO_find_type = 'BIO_find_type';
  fn_BIO_get_retry_BIO = 'BIO_get_retry_BIO';
  fn_BIO_get_retry_reason = 'BIO_get_retry_reason';
  fn_BIO_dup_chain = 'BIO_dup_chain';
  fn_BIO_debug_callback = 'BIO_debug_callback';
  fn_BIO_s_mem = 'BIO_s_mem';
  fn_BIO_s_socket = 'BIO_s_socket';
  fn_BIO_s_connect = 'BIO_s_connect';
  fn_BIO_s_accept = 'BIO_s_accept';
  fn_BIO_s_fd = 'BIO_s_fd';
  fn_BIO_s_bio = 'BIO_s_bio';
  fn_BIO_s_null = 'BIO_s_null';
  fn_BIO_f_null = 'BIO_f_null';
  fn_BIO_f_buffer = 'BIO_f_buffer';
  fn_BIO_f_nbio_test = 'BIO_f_nbio_test';
  fn_BIO_sock_should_retry = 'BIO_sock_should_retry';
  fn_BIO_sock_non_fatal_error = 'BIO_sock_non_fatal_error';
  fn_BIO_fd_should_retry = 'BIO_fd_should_retry';
  fn_BIO_fd_non_fatal_error = 'BIO_fd_non_fatal_error';
  fn_BIO_dump = 'BIO_dump';
  fn_BIO_gethostbyname = 'BIO_gethostbyname';
  fn_BIO_sock_error = 'BIO_sock_error';
  fn_BIO_socket_ioctl = 'BIO_socket_ioctl';
  fn_BIO_socket_nbio = 'BIO_socket_nbio';
  fn_BIO_get_port = 'BIO_get_port';
  fn_BIO_get_host_ip = 'BIO_get_host_ip';
  fn_BIO_get_accept_socket = 'BIO_get_accept_socket';
  fn_BIO_accept = 'BIO_accept';
  fn_BIO_sock_init = 'BIO_sock_init';
  fn_BIO_sock_cleanup = 'BIO_sock_cleanup';
  fn_BIO_set_tcp_ndelay = 'BIO_set_tcp_ndelay';
  fn_ERR_load_BIO_strings = 'ERR_load_BIO_strings';
  fn_BIO_new_socket = 'BIO_new_socket';
  fn_BIO_new_fd = 'BIO_new_fd';
  fn_BIO_new_connect = 'BIO_new_connect';
  fn_BIO_new_accept = 'BIO_new_accept';
  fn_BIO_new_bio_pair = 'BIO_new_bio_pair';
  fn_BIO_copy_next_retry = 'BIO_copy_next_retry';
  fn_BIO_ghbn_ctrl = 'BIO_ghbn_ctrl';
  fn_MD2_options = 'MD2_options';
  fn_MD2_Init = 'MD2_Init';
  fn_MD2_Update = 'MD2_Update';
  fn_MD2_Final = 'MD2_Final';
  fn_MD2 = 'MD2';
  fn_MD5_Init = 'MD5_Init';
  fn_MD5_Update = 'MD5_Update';
  fn_MD5_Final = 'MD5_Final';
  fn_MD5 = 'MD5';
  fn_MD5_Transform = 'MD5_Transform';
  fn_SHA_Init = 'SHA_Init';
  fn_SHA_Update = 'SHA_Update';
  fn_SHA_Final = 'SHA_Final';
  fn_SHA = 'SHA';
  fn_SHA_Transform = 'SHA_Transform';
  fn_SHA1_Init = 'SHA1_Init';
  fn_SHA1_Update = 'SHA1_Update';
  fn_SHA1_Final = 'SHA1_Final';
  fn_SHA1 = 'SHA1';
  fn_SHA1_Transform = 'SHA1_Transform';
  fn_RIPEMD160_Init = 'RIPEMD160_Init';
  fn_RIPEMD160_Update = 'RIPEMD160_Update';
  fn_RIPEMD160_Final = 'RIPEMD160_Final';
  fn_RIPEMD160 = 'RIPEMD160';
  fn_RIPEMD160_Transform = 'RIPEMD160_Transform';
  fn_des_options = 'des_options';
  fn_des_ecb3_encrypt = 'des_ecb3_encrypt';
  fn_des_cbc_cksum = 'des_cbc_cksum';
  fn_des_cbc_encrypt = 'des_cbc_encrypt';
  fn_des_ncbc_encrypt = 'des_ncbc_encrypt';
  fn_des_xcbc_encrypt = 'des_xcbc_encrypt';
  fn_des_cfb_encrypt = 'des_cfb_encrypt';
  fn_des_ecb_encrypt = 'des_ecb_encrypt';
  fn_des_encrypt = 'des_encrypt';
  fn_des_encrypt2 = 'des_encrypt2';
  fn_des_encrypt3 = 'des_encrypt3';
  fn_des_decrypt3 = 'des_decrypt3';
  fn_des_ede3_cbc_encrypt = 'des_ede3_cbc_encrypt';
  fn_des_ede3_cbcm_encrypt = 'des_ede3_cbcm_encrypt';
  fn_des_ede3_cfb64_encrypt = 'des_ede3_cfb64_encrypt';
  fn_des_ede3_ofb64_encrypt = 'des_ede3_ofb64_encrypt';
  fn_des_xwhite_in2out = 'des_xwhite_in2out';
  fn_des_enc_read = 'des_enc_read';
  fn_des_enc_write = 'des_enc_write';
  fn_des_fcrypt = 'des_fcrypt';
  fn_crypt = 'crypt';
  fn_des_ofb_encrypt = 'des_ofb_encrypt';
  fn_des_pcbc_encrypt = 'des_pcbc_encrypt';
  fn_des_quad_cksum = 'des_quad_cksum';
  fn_des_random_seed = 'des_random_seed';
  fn_des_random_key = 'des_random_key';
  fn_des_read_password = 'des_read_password';
  fn_des_read_2passwords = 'des_read_2passwords';
  fn_des_read_pw_string = 'des_read_pw_string';
  fn_des_set_odd_parity = 'des_set_odd_parity';
  fn_des_is_weak_key = 'des_is_weak_key';
  fn_des_set_key = 'des_set_key';
  fn_des_key_sched = 'des_key_sched';
  fn_des_string_to_key = 'des_string_to_key';
  fn_des_string_to_2keys = 'des_string_to_2keys';
  fn_des_cfb64_encrypt = 'des_cfb64_encrypt';
  fn_des_ofb64_encrypt = 'des_ofb64_encrypt';
  fn_des_read_pw = 'des_read_pw';
  fn_des_cblock_print_file = 'des_cblock_print_file';
  fn_RC4_options = 'RC4_options';
  fn_RC4_set_key = 'RC4_set_key';
  fn_RC4 = 'RC4';
  fn_RC2_set_key = 'RC2_set_key';
  fn_RC2_ecb_encrypt = 'RC2_ecb_encrypt';
  fn_RC2_encrypt = 'RC2_encrypt';
  fn_RC2_decrypt = 'RC2_decrypt';
  fn_RC2_cbc_encrypt = 'RC2_cbc_encrypt';
  fn_RC2_cfb64_encrypt = 'RC2_cfb64_encrypt';
  fn_RC2_ofb64_encrypt = 'RC2_ofb64_encrypt';
  fn_RC5_32_set_key = 'RC5_32_set_key';
  fn_RC5_32_ecb_encrypt = 'RC5_32_ecb_encrypt';
  fn_RC5_32_encrypt = 'RC5_32_encrypt';
  fn_RC5_32_decrypt = 'RC5_32_decrypt';
  fn_RC5_32_cbc_encrypt = 'RC5_32_cbc_encrypt';
  fn_RC5_32_cfb64_encrypt = 'RC5_32_cfb64_encrypt';
  fn_RC5_32_ofb64_encrypt = 'RC5_32_ofb64_encrypt';
  fn_BF_set_key = 'BF_set_key';
  fn_BF_ecb_encrypt = 'BF_ecb_encrypt';
  fn_BF_encrypt = 'BF_encrypt';
  fn_BF_decrypt = 'BF_decrypt';
  fn_BF_cbc_encrypt = 'BF_cbc_encrypt';
  fn_BF_cfb64_encrypt = 'BF_cfb64_encrypt';
  fn_BF_ofb64_encrypt = 'BF_ofb64_encrypt';
  fn_BF_options = 'BF_options';
  fn_CAST_set_key = 'CAST_set_key';
  fn_CAST_ecb_encrypt = 'CAST_ecb_encrypt';
  fn_CAST_encrypt = 'CAST_encrypt';
  fn_CAST_decrypt = 'CAST_decrypt';
  fn_CAST_cbc_encrypt = 'CAST_cbc_encrypt';
  fn_CAST_cfb64_encrypt = 'CAST_cfb64_encrypt';
  fn_CAST_ofb64_encrypt = 'CAST_ofb64_encrypt';
  fn_idea_options = 'idea_options';
  fn_idea_ecb_encrypt = 'idea_ecb_encrypt';
  fn_idea_set_encrypt_key = 'idea_set_encrypt_key';
  fn_idea_set_decrypt_key = 'idea_set_decrypt_key';
  fn_idea_cbc_encrypt = 'idea_cbc_encrypt';
  fn_idea_cfb64_encrypt = 'idea_cfb64_encrypt';
  fn_idea_ofb64_encrypt = 'idea_ofb64_encrypt';
  fn_idea_encrypt = 'idea_encrypt';
  fn_MDC2_Init = 'MDC2_Init';
  fn_MDC2_Update = 'MDC2_Update';
  fn_MDC2_Final = 'MDC2_Final';
  fn_MDC2 = 'MDC2';
  fn_BN_value_one = 'BN_value_one';
  fn_BN_options = 'BN_options';
  fn_BN_CTX_new = 'BN_CTX_new';
  fn_BN_CTX_init = 'BN_CTX_init';
  fn_BN_CTX_free = 'BN_CTX_free';
  fn_BN_rand = 'BN_rand';
  fn_BN_num_bits = 'BN_num_bits';
  fn_BN_num_bits_word = 'BN_num_bits_word';
  fn_BN_new = 'BN_new';
  fn_BN_init = 'BN_init';
  fn_BN_clear_free = 'BN_clear_free';
  fn_BN_copy = 'BN_copy';
  fn_BN_bin2bn = 'BN_bin2bn';
  fn_BN_bn2bin = 'BN_bn2bin';
  fn_BN_mpi2bn = 'BN_mpi2bn';
  fn_BN_bn2mpi = 'BN_bn2mpi';
  fn_BN_sub = 'BN_sub';
  fn_BN_usub = 'BN_usub';
  fn_BN_uadd = 'BN_uadd';
  fn_BN_add = 'BN_add';
  fn_BN_mod = 'BN_mod';
  fn_BN_div = 'BN_div';
  fn_BN_mul = 'BN_mul';
  fn_BN_sqr = 'BN_sqr';
  fn_BN_mod_word = 'BN_mod_word';
  fn_BN_div_word = 'BN_div_word';
  fn_BN_mul_word = 'BN_mul_word';
  fn_BN_add_word = 'BN_add_word';
  fn_BN_sub_word = 'BN_sub_word';
  fn_BN_set_word = 'BN_set_word';
  fn_BN_get_word = 'BN_get_word';
  fn_BN_cmp = 'BN_cmp';
  fn_BN_free = 'BN_free';
  fn_BN_is_bit_set = 'BN_is_bit_set';
  fn_BN_lshift = 'BN_lshift';
  fn_BN_lshift1 = 'BN_lshift1';
  fn_BN_exp = 'BN_exp';
  fn_BN_mod_exp = 'BN_mod_exp';
  fn_BN_mod_exp_mont = 'BN_mod_exp_mont';
  fn_BN_mod_exp2_mont = 'BN_mod_exp2_mont';
  fn_BN_mod_exp_simple = 'BN_mod_exp_simple';
  fn_BN_mask_bits = 'BN_mask_bits';
  fn_BN_mod_mul = 'BN_mod_mul';
  fn_BN_print_fp = 'BN_print_fp';
  fn_BN_print = 'BN_print';
  fn_BN_reciprocal = 'BN_reciprocal';
  fn_BN_rshift = 'BN_rshift';
  fn_BN_rshift1 = 'BN_rshift1';
  fn_BN_clear = 'BN_clear';
  fn_bn_expand2 = 'bn_expand2';
  fn_BN_dup = 'BN_dup';
  fn_BN_ucmp = 'BN_ucmp';
  fn_BN_set_bit = 'BN_set_bit';
  fn_BN_clear_bit = 'BN_clear_bit';
  fn_BN_bn2hex = 'BN_bn2hex';
  fn_BN_bn2dec = 'BN_bn2dec';
  fn_BN_hex2bn = 'BN_hex2bn';
  fn_BN_dec2bn = 'BN_dec2bn';
  fn_BN_gcd = 'BN_gcd';
  fn_BN_mod_inverse = 'BN_mod_inverse';
  fn_BN_generate_prime = 'BN_generate_prime';
  fn_BN_is_prime = 'BN_is_prime';
  fn_ERR_load_BN_strings = 'ERR_load_BN_strings';
  fn_bn_mul_add_words = 'bn_mul_add_words';
  fn_bn_mul_words = 'bn_mul_words';
  fn_bn_sqr_words = 'bn_sqr_words';
  fn_bn_div_words = 'bn_div_words';
  fn_bn_add_words = 'bn_add_words';
  fn_bn_sub_words = 'bn_sub_words';
  fn_BN_MONT_CTX_new = 'BN_MONT_CTX_new';
  fn_BN_MONT_CTX_init = 'BN_MONT_CTX_init';
  fn_BN_mod_mul_montgomery = 'BN_mod_mul_montgomery';
  fn_BN_from_montgomery = 'BN_from_montgomery';
  fn_BN_MONT_CTX_free = 'BN_MONT_CTX_free';
  fn_BN_MONT_CTX_set = 'BN_MONT_CTX_set';
  fn_BN_MONT_CTX_copy = 'BN_MONT_CTX_copy';
  fn_BN_BLINDING_new = 'BN_BLINDING_new';
  fn_BN_BLINDING_free = 'BN_BLINDING_free';
  fn_BN_BLINDING_update = 'BN_BLINDING_update';
  fn_BN_BLINDING_convert = 'BN_BLINDING_convert';
  fn_BN_BLINDING_invert = 'BN_BLINDING_invert';
  fn_BN_set_params = 'BN_set_params';
  fn_BN_get_params = 'BN_get_params';
  fn_BN_RECP_CTX_init = 'BN_RECP_CTX_init';
  fn_BN_RECP_CTX_new = 'BN_RECP_CTX_new';
  fn_BN_RECP_CTX_free = 'BN_RECP_CTX_free';
  fn_BN_RECP_CTX_set = 'BN_RECP_CTX_set';
  fn_BN_mod_mul_reciprocal = 'BN_mod_mul_reciprocal';
  fn_BN_mod_exp_recp = 'BN_mod_exp_recp';
  fn_BN_div_recp = 'BN_div_recp';
  fn_RSA_new = 'RSA_new';
  fn_RSA_new_method = 'RSA_new_method';
  fn_RSA_size = 'RSA_size';
  fn_RSA_generate_key = 'RSA_generate_key';
  fn_RSA_check_key = 'RSA_check_key';
  fn_RSA_public_encrypt = 'RSA_public_encrypt';
  fn_RSA_private_encrypt = 'RSA_private_encrypt';
  fn_RSA_public_decrypt = 'RSA_public_decrypt';
  fn_RSA_private_decrypt = 'RSA_private_decrypt';
  fn_RSA_free = 'RSA_free';
  fn_RSA_flags = 'RSA_flags';
  fn_RSA_set_default_method = 'RSA_set_default_method';
  fn_RSA_get_default_method = 'RSA_get_default_method';
  fn_RSA_get_method = 'RSA_get_method';
  fn_RSA_set_method = 'RSA_set_method';
  fn_RSA_memory_lock = 'RSA_memory_lock';
  fn_RSA_PKCS1_SSLeay = 'RSA_PKCS1_SSLeay';
  fn_ERR_load_RSA_strings = 'ERR_load_RSA_strings';
  fn_d2i_RSAPublicKey = 'd2i_RSAPublicKey';
  fn_i2d_RSAPublicKey = 'i2d_RSAPublicKey';
  fn_d2i_RSAPrivateKey = 'd2i_RSAPrivateKey';
  fn_i2d_RSAPrivateKey = 'i2d_RSAPrivateKey';
  fn_RSA_print_fp = 'RSA_print_fp';
  fn_RSA_print = 'RSA_print';
  fn_i2d_Netscape_RSA = 'i2d_Netscape_RSA';
  fn_d2i_Netscape_RSA = 'd2i_Netscape_RSA';
  fn_d2i_Netscape_RSA_2 = 'd2i_Netscape_RSA_2';
  fn_RSA_sign = 'RSA_sign';
  fn_RSA_verify = 'RSA_verify';
  fn_RSA_sign_ASN1_OCTET_STRING = 'RSA_sign_ASN1_OCTET_STRING';
  fn_RSA_verify_ASN1_OCTET_STRING = 'RSA_verify_ASN1_OCTET_STRING';
  fn_RSA_blinding_on = 'RSA_blinding_on';
  fn_RSA_blinding_off = 'RSA_blinding_off';
  fn_RSA_padding_add_PKCS1_type_1 = 'RSA_padding_add_PKCS1_type_1';
  fn_RSA_padding_check_PKCS1_type_1 = 'RSA_padding_check_PKCS1_type_1';
  fn_RSA_padding_add_PKCS1_type_2 = 'RSA_padding_add_PKCS1_type_2';
  fn_RSA_padding_check_PKCS1_type_2 = 'RSA_padding_check_PKCS1_type_2';
  fn_RSA_padding_add_PKCS1_OAEP = 'RSA_padding_add_PKCS1_OAEP';
  fn_RSA_padding_check_PKCS1_OAEP = 'RSA_padding_check_PKCS1_OAEP';
  fn_RSA_padding_add_SSLv23 = 'RSA_padding_add_SSLv23';
  fn_RSA_padding_check_SSLv23 = 'RSA_padding_check_SSLv23';
  fn_RSA_padding_add_none = 'RSA_padding_add_none';
  fn_RSA_padding_check_none = 'RSA_padding_check_none';
  fn_RSA_get_ex_new_index = 'RSA_get_ex_new_index';
  fn_RSA_set_ex_data = 'RSA_set_ex_data';
  fn_RSA_get_ex_data = 'RSA_get_ex_data';
  fn_DH_new = 'DH_new';
  fn_DH_free = 'DH_free';
  fn_DH_size = 'DH_size';
  fn_DH_generate_parameters = 'DH_generate_parameters';
  fn_DH_check = 'DH_check';
  fn_DH_generate_key = 'DH_generate_key';
  fn_DH_compute_key = 'DH_compute_key';
  fn_d2i_DHparams = 'd2i_DHparams';
  fn_i2d_DHparams = 'i2d_DHparams';
  fn_DHparams_print_fp = 'DHparams_print_fp';
  fn_DHparams_print = 'DHparams_print';
  fn_ERR_load_DH_strings = 'ERR_load_DH_strings';
  fn_DSA_SIG_new = 'DSA_SIG_new';
  fn_DSA_SIG_free = 'DSA_SIG_free';
  fn_i2d_DSA_SIG = 'i2d_DSA_SIG';
  fn_d2i_DSA_SIG = 'd2i_DSA_SIG';
  fn_DSA_do_sign = 'DSA_do_sign';
  fn_DSA_do_verify = 'DSA_do_verify';
  fn_DSA_new = 'DSA_new';
  fn_DSA_size = 'DSA_size';
  fn_DSA_sign_setup = 'DSA_sign_setup';
  fn_DSA_sign = 'DSA_sign';
  fn_DSA_verify = 'DSA_verify';
  fn_DSA_free = 'DSA_free';
  fn_ERR_load_DSA_strings = 'ERR_load_DSA_strings';
  fn_d2i_DSAPublicKey = 'd2i_DSAPublicKey';
  fn_d2i_DSAPrivateKey = 'd2i_DSAPrivateKey';
  fn_d2i_DSAparams = 'd2i_DSAparams';
  fn_DSA_generate_parameters = 'DSA_generate_parameters';
  fn_DSA_generate_key = 'DSA_generate_key';
  fn_i2d_DSAPublicKey = 'i2d_DSAPublicKey';
  fn_i2d_DSAPrivateKey = 'i2d_DSAPrivateKey';
  fn_i2d_DSAparams = 'i2d_DSAparams';
  fn_DSAparams_print = 'DSAparams_print';
  fn_DSA_print = 'DSA_print';
  fn_DSAparams_print_fp = 'DSAparams_print_fp';
  fn_DSA_print_fp = 'DSA_print_fp';
  fn_DSA_is_prime = 'DSA_is_prime';
  fn_DSA_dup_DH = 'DSA_dup_DH';
  fn_sk_ASN1_TYPE_new = 'sk_ASN1_TYPE_new';
  fn_sk_ASN1_TYPE_new_null = 'sk_ASN1_TYPE_new_null';
  fn_sk_ASN1_TYPE_free = 'sk_ASN1_TYPE_free';
  fn_sk_ASN1_TYPE_num = 'sk_ASN1_TYPE_num';
  fn_sk_ASN1_TYPE_value = 'sk_ASN1_TYPE_value';
  fn_sk_ASN1_TYPE_set = 'sk_ASN1_TYPE_set';
  fn_sk_ASN1_TYPE_zero = 'sk_ASN1_TYPE_zero';
  fn_sk_ASN1_TYPE_push = 'sk_ASN1_TYPE_push';
  fn_sk_ASN1_TYPE_unshift = 'sk_ASN1_TYPE_unshift';
  fn_sk_ASN1_TYPE_find = 'sk_ASN1_TYPE_find';
  fn_sk_ASN1_TYPE_delete = 'sk_ASN1_TYPE_delete';
  fn_sk_ASN1_TYPE_delete_ptr = 'sk_ASN1_TYPE_delete_ptr';
  fn_sk_ASN1_TYPE_insert = 'sk_ASN1_TYPE_insert';
  fn_sk_ASN1_TYPE_dup = 'sk_ASN1_TYPE_dup';
  fn_sk_ASN1_TYPE_pop_free = 'sk_ASN1_TYPE_pop_free';
  fn_sk_ASN1_TYPE_shift = 'sk_ASN1_TYPE_shift';
  fn_sk_ASN1_TYPE_pop = 'sk_ASN1_TYPE_pop';
  fn_sk_ASN1_TYPE_sort = 'sk_ASN1_TYPE_sort';
  fn_i2d_ASN1_SET_OF_ASN1_TYPE = 'i2d_ASN1_SET_OF_ASN1_TYPE';
  fn_d2i_ASN1_SET_OF_ASN1_TYPE = 'd2i_ASN1_SET_OF_ASN1_TYPE';
  fn_ASN1_TYPE_new = 'ASN1_TYPE_new';
  fn_ASN1_TYPE_free = 'ASN1_TYPE_free';
  fn_i2d_ASN1_TYPE = 'i2d_ASN1_TYPE';
  fn_d2i_ASN1_TYPE = 'd2i_ASN1_TYPE';
  fn_ASN1_TYPE_get = 'ASN1_TYPE_get';
  fn_ASN1_TYPE_set = 'ASN1_TYPE_set';
  fn_ASN1_OBJECT_new = 'ASN1_OBJECT_new';
  fn_ASN1_OBJECT_free = 'ASN1_OBJECT_free';
  fn_i2d_ASN1_OBJECT = 'i2d_ASN1_OBJECT';
  fn_d2i_ASN1_OBJECT = 'd2i_ASN1_OBJECT';
  fn_sk_ASN1_OBJECT_new = 'sk_ASN1_OBJECT_new';
  fn_sk_ASN1_OBJECT_new_null = 'sk_ASN1_OBJECT_new_null';
  fn_sk_ASN1_OBJECT_free = 'sk_ASN1_OBJECT_free';
  fn_sk_ASN1_OBJECT_num = 'sk_ASN1_OBJECT_num';
  fn_sk_ASN1_OBJECT_value = 'sk_ASN1_OBJECT_value';
  fn_sk_ASN1_OBJECT_set = 'sk_ASN1_OBJECT_set';
  fn_sk_ASN1_OBJECT_zero = 'sk_ASN1_OBJECT_zero';
  fn_sk_ASN1_OBJECT_push = 'sk_ASN1_OBJECT_push';
  fn_sk_ASN1_OBJECT_unshift = 'sk_ASN1_OBJECT_unshift';
  fn_sk_ASN1_OBJECT_find = 'sk_ASN1_OBJECT_find';
  fn_sk_ASN1_OBJECT_delete = 'sk_ASN1_OBJECT_delete';
  fn_sk_ASN1_OBJECT_delete_ptr = 'sk_ASN1_OBJECT_delete_ptr';
  fn_sk_ASN1_OBJECT_insert = 'sk_ASN1_OBJECT_insert';
  fn_sk_ASN1_OBJECT_dup = 'sk_ASN1_OBJECT_dup';
  fn_sk_ASN1_OBJECT_pop_free = 'sk_ASN1_OBJECT_pop_free';
  fn_sk_ASN1_OBJECT_shift = 'sk_ASN1_OBJECT_shift';
  fn_sk_ASN1_OBJECT_pop = 'sk_ASN1_OBJECT_pop';
  fn_sk_ASN1_OBJECT_sort = 'sk_ASN1_OBJECT_sort';
  fn_i2d_ASN1_SET_OF_ASN1_OBJECT = 'i2d_ASN1_SET_OF_ASN1_OBJECT';
  fn_d2i_ASN1_SET_OF_ASN1_OBJECT = 'd2i_ASN1_SET_OF_ASN1_OBJECT';
  fn_ASN1_STRING_new = 'ASN1_STRING_new';
  fn_ASN1_STRING_free = 'ASN1_STRING_free';
  fn_ASN1_STRING_dup = 'ASN1_STRING_dup';
  fn_ASN1_STRING_type_new = 'ASN1_STRING_type_new';
  fn_ASN1_STRING_cmp = 'ASN1_STRING_cmp';
  fn_ASN1_STRING_set = 'ASN1_STRING_set';
  fn_i2d_ASN1_BIT_STRING = 'i2d_ASN1_BIT_STRING';
  fn_d2i_ASN1_BIT_STRING = 'd2i_ASN1_BIT_STRING';
  fn_ASN1_BIT_STRING_set_bit = 'ASN1_BIT_STRING_set_bit';
  fn_ASN1_BIT_STRING_get_bit = 'ASN1_BIT_STRING_get_bit';
  fn_i2d_ASN1_BOOLEAN = 'i2d_ASN1_BOOLEAN';
  fn_d2i_ASN1_BOOLEAN = 'd2i_ASN1_BOOLEAN';
  fn_i2d_ASN1_INTEGER = 'i2d_ASN1_INTEGER';
  fn_d2i_ASN1_INTEGER = 'd2i_ASN1_INTEGER';
  fn_d2i_ASN1_UINTEGER = 'd2i_ASN1_UINTEGER';
  fn_i2d_ASN1_ENUMERATED = 'i2d_ASN1_ENUMERATED';
  fn_d2i_ASN1_ENUMERATED = 'd2i_ASN1_ENUMERATED';
  fn_ASN1_UTCTIME_check = 'ASN1_UTCTIME_check';
  fn_ASN1_UTCTIME_set = 'ASN1_UTCTIME_set';
  fn_ASN1_UTCTIME_set_string = 'ASN1_UTCTIME_set_string';
  fn_ASN1_GENERALIZEDTIME_check = 'ASN1_GENERALIZEDTIME_check';
  fn_ASN1_GENERALIZEDTIME_set = 'ASN1_GENERALIZEDTIME_set';
  fn_ASN1_GENERALIZEDTIME_set_string = 'ASN1_GENERALIZEDTIME_set_string';
  fn_i2d_ASN1_OCTET_STRING = 'i2d_ASN1_OCTET_STRING';
  fn_d2i_ASN1_OCTET_STRING = 'd2i_ASN1_OCTET_STRING';
  fn_i2d_ASN1_VISIBLESTRING = 'i2d_ASN1_VISIBLESTRING';
  fn_d2i_ASN1_VISIBLESTRING = 'd2i_ASN1_VISIBLESTRING';
  fn_i2d_ASN1_UTF8STRING = 'i2d_ASN1_UTF8STRING';
  fn_d2i_ASN1_UTF8STRING = 'd2i_ASN1_UTF8STRING';
  fn_i2d_ASN1_BMPSTRING = 'i2d_ASN1_BMPSTRING';
  fn_d2i_ASN1_BMPSTRING = 'd2i_ASN1_BMPSTRING';
  fn_i2d_ASN1_PRINTABLE = 'i2d_ASN1_PRINTABLE';
  fn_d2i_ASN1_PRINTABLE = 'd2i_ASN1_PRINTABLE';
  fn_d2i_ASN1_PRINTABLESTRING = 'd2i_ASN1_PRINTABLESTRING';
  fn_i2d_DIRECTORYSTRING = 'i2d_DIRECTORYSTRING';
  fn_d2i_DIRECTORYSTRING = 'd2i_DIRECTORYSTRING';
  fn_i2d_DISPLAYTEXT = 'i2d_DISPLAYTEXT';
  fn_d2i_DISPLAYTEXT = 'd2i_DISPLAYTEXT';
  fn_d2i_ASN1_T61STRING = 'd2i_ASN1_T61STRING';
  fn_i2d_ASN1_IA5STRING = 'i2d_ASN1_IA5STRING';
  fn_d2i_ASN1_IA5STRING = 'd2i_ASN1_IA5STRING';
  fn_i2d_ASN1_UTCTIME = 'i2d_ASN1_UTCTIME';
  fn_d2i_ASN1_UTCTIME = 'd2i_ASN1_UTCTIME';
  fn_i2d_ASN1_GENERALIZEDTIME = 'i2d_ASN1_GENERALIZEDTIME';
  fn_d2i_ASN1_GENERALIZEDTIME = 'd2i_ASN1_GENERALIZEDTIME';
  fn_i2d_ASN1_TIME = 'i2d_ASN1_TIME';
  fn_d2i_ASN1_TIME = 'd2i_ASN1_TIME';
  fn_ASN1_TIME_set = 'ASN1_TIME_set';
  fn_i2d_ASN1_SET = 'i2d_ASN1_SET';
  fn_d2i_ASN1_SET = 'd2i_ASN1_SET';
  fn_i2a_ASN1_INTEGER = 'i2a_ASN1_INTEGER';
  fn_a2i_ASN1_INTEGER = 'a2i_ASN1_INTEGER';
  fn_i2a_ASN1_ENUMERATED = 'i2a_ASN1_ENUMERATED';
  fn_a2i_ASN1_ENUMERATED = 'a2i_ASN1_ENUMERATED';
  fn_i2a_ASN1_OBJECT = 'i2a_ASN1_OBJECT';
  fn_a2i_ASN1_STRING = 'a2i_ASN1_STRING';
  fn_i2a_ASN1_STRING = 'i2a_ASN1_STRING';
  fn_i2t_ASN1_OBJECT = 'i2t_ASN1_OBJECT';
  fn_a2d_ASN1_OBJECT = 'a2d_ASN1_OBJECT';
  fn_ASN1_OBJECT_create = 'ASN1_OBJECT_create';
  fn_ASN1_INTEGER_set = 'ASN1_INTEGER_set';
  fn_ASN1_INTEGER_get = 'ASN1_INTEGER_get';
  fn_BN_to_ASN1_INTEGER = 'BN_to_ASN1_INTEGER';
  fn_ASN1_INTEGER_to_BN = 'ASN1_INTEGER_to_BN';
  fn_ASN1_ENUMERATED_set = 'ASN1_ENUMERATED_set';
  fn_ASN1_ENUMERATED_get = 'ASN1_ENUMERATED_get';
  fn_BN_to_ASN1_ENUMERATED = 'BN_to_ASN1_ENUMERATED';
  fn_ASN1_ENUMERATED_to_BN = 'ASN1_ENUMERATED_to_BN';
  fn_ASN1_PRINTABLE_type = 'ASN1_PRINTABLE_type';
  fn_i2d_ASN1_bytes = 'i2d_ASN1_bytes';
  fn_d2i_ASN1_bytes = 'd2i_ASN1_bytes';
  fn_d2i_ASN1_type_bytes = 'd2i_ASN1_type_bytes';
  fn_asn1_Finish = 'asn1_Finish';
  fn_ASN1_get_object = 'ASN1_get_object';
  fn_ASN1_check_infinite_end = 'ASN1_check_infinite_end';
  fn_ASN1_put_object = 'ASN1_put_object';
  fn_ASN1_object_size = 'ASN1_object_size';
  fn_ASN1_dup = 'ASN1_dup';
  fn_ASN1_d2i_fp = 'ASN1_d2i_fp';
  fn_ASN1_i2d_fp = 'ASN1_i2d_fp';
  fn_ASN1_d2i_bio = 'ASN1_d2i_bio';
  fn_ASN1_i2d_bio = 'ASN1_i2d_bio';
  fn_ASN1_UTCTIME_print = 'ASN1_UTCTIME_print';
  fn_ASN1_GENERALIZEDTIME_print = 'ASN1_GENERALIZEDTIME_print';
  fn_ASN1_TIME_print = 'ASN1_TIME_print';
  fn_ASN1_STRING_print = 'ASN1_STRING_print';
  fn_ASN1_parse = 'ASN1_parse';
  fn_i2d_ASN1_HEADER = 'i2d_ASN1_HEADER';
  fn_d2i_ASN1_HEADER = 'd2i_ASN1_HEADER';
  fn_ASN1_HEADER_new = 'ASN1_HEADER_new';
  fn_ASN1_HEADER_free = 'ASN1_HEADER_free';
  fn_ASN1_UNIVERSALSTRING_to_string = 'ASN1_UNIVERSALSTRING_to_string';
  fn_ERR_load_ASN1_strings = 'ERR_load_ASN1_strings';
  fn_X509_asn1_meth = 'X509_asn1_meth';
  fn_RSAPrivateKey_asn1_meth = 'RSAPrivateKey_asn1_meth';
  fn_ASN1_IA5STRING_asn1_meth = 'ASN1_IA5STRING_asn1_meth';
  fn_ASN1_BIT_STRING_asn1_meth = 'ASN1_BIT_STRING_asn1_meth';
  fn_ASN1_TYPE_set_octetstring = 'ASN1_TYPE_set_octetstring';
  fn_ASN1_TYPE_get_octetstring = 'ASN1_TYPE_get_octetstring';
  fn_ASN1_TYPE_set_int_octetstring = 'ASN1_TYPE_set_int_octetstring';
  fn_ASN1_TYPE_get_int_octetstring = 'ASN1_TYPE_get_int_octetstring';
  fn_ASN1_seq_unpack = 'ASN1_seq_unpack';
  fn_ASN1_seq_pack = 'ASN1_seq_pack';
  fn_ASN1_unpack_string = 'ASN1_unpack_string';
  fn_ASN1_pack_string = 'ASN1_pack_string';
  fn_OBJ_NAME_init = 'OBJ_NAME_init';
  fn_OBJ_NAME_new_index = 'OBJ_NAME_new_index';
  fn_OBJ_NAME_get = 'OBJ_NAME_get';
  fn_OBJ_NAME_add = 'OBJ_NAME_add';
  fn_OBJ_NAME_remove = 'OBJ_NAME_remove';
  fn_OBJ_NAME_cleanup = 'OBJ_NAME_cleanup';
  fn_OBJ_dup = 'OBJ_dup';
  fn_OBJ_nid2obj = 'OBJ_nid2obj';
  fn_OBJ_nid2ln = 'OBJ_nid2ln';
  fn_OBJ_nid2sn = 'OBJ_nid2sn';
  fn_OBJ_obj2nid = 'OBJ_obj2nid';
  fn_OBJ_txt2obj = 'OBJ_txt2obj';
  fn_OBJ_obj2txt = 'OBJ_obj2txt';
  fn_OBJ_txt2nid = 'OBJ_txt2nid';
  fn_OBJ_ln2nid = 'OBJ_ln2nid';
  fn_OBJ_sn2nid = 'OBJ_sn2nid';
  fn_OBJ_cmp = 'OBJ_cmp';
  fn_OBJ_bsearch = 'OBJ_bsearch';
  fn_ERR_load_OBJ_strings = 'ERR_load_OBJ_strings';
  fn_OBJ_new_nid = 'OBJ_new_nid';
  fn_OBJ_add_object = 'OBJ_add_object';
  fn_OBJ_create = 'OBJ_create';
  fn_OBJ_cleanup = 'OBJ_cleanup';
  fn_OBJ_create_objects = 'OBJ_create_objects';
  fn_EVP_MD_CTX_copy = 'EVP_MD_CTX_copy';
  fn_EVP_DigestInit = 'EVP_DigestInit';
  fn_EVP_DigestUpdate = 'EVP_DigestUpdate';
  fn_EVP_DigestFinal = 'EVP_DigestFinal';
  fn_EVP_read_pw_string = 'EVP_read_pw_string';
  fn_EVP_set_pw_prompt = 'EVP_set_pw_prompt';
  fn_EVP_get_pw_prompt = 'EVP_get_pw_prompt';
  fn_EVP_BytesToKey = 'EVP_BytesToKey';
  fn_EVP_EncryptInit = 'EVP_EncryptInit';
  fn_EVP_EncryptUpdate = 'EVP_EncryptUpdate';
  fn_EVP_EncryptFinal = 'EVP_EncryptFinal';
  fn_EVP_DecryptInit = 'EVP_DecryptInit';
  fn_EVP_DecryptUpdate = 'EVP_DecryptUpdate';
  fn_EVP_DecryptFinal = 'EVP_DecryptFinal';
  fn_EVP_CipherInit = 'EVP_CipherInit';
  fn_EVP_CipherUpdate = 'EVP_CipherUpdate';
  fn_EVP_CipherFinal = 'EVP_CipherFinal';
  fn_EVP_SignFinal = 'EVP_SignFinal';
  fn_EVP_VerifyFinal = 'EVP_VerifyFinal';
  fn_EVP_OpenInit = 'EVP_OpenInit';
  fn_EVP_OpenFinal = 'EVP_OpenFinal';
  fn_EVP_SealInit = 'EVP_SealInit';
  fn_EVP_SealFinal = 'EVP_SealFinal';
  fn_EVP_EncodeInit = 'EVP_EncodeInit';
  fn_EVP_EncodeUpdate = 'EVP_EncodeUpdate';
  fn_EVP_EncodeFinal = 'EVP_EncodeFinal';
  fn_EVP_EncodeBlock = 'EVP_EncodeBlock';
  fn_EVP_DecodeInit = 'EVP_DecodeInit';
  fn_EVP_DecodeUpdate = 'EVP_DecodeUpdate';
  fn_EVP_DecodeFinal = 'EVP_DecodeFinal';
  fn_EVP_DecodeBlock = 'EVP_DecodeBlock';
  fn_ERR_load_EVP_strings = 'ERR_load_EVP_strings';
  fn_EVP_CIPHER_CTX_init = 'EVP_CIPHER_CTX_init';
  fn_EVP_CIPHER_CTX_cleanup = 'EVP_CIPHER_CTX_cleanup';
  fn_BIO_f_md = 'BIO_f_md';
  fn_BIO_f_base64 = 'BIO_f_base64';
  fn_BIO_f_cipher = 'BIO_f_cipher';
  fn_BIO_f_reliable = 'BIO_f_reliable';
  fn_BIO_set_cipher = 'BIO_set_cipher';
  fn_EVP_md_null = 'EVP_md_null';
  fn_EVP_md2 = 'EVP_md2';
  fn_EVP_md5 = 'EVP_md5';
  fn_EVP_sha = 'EVP_sha';
  fn_EVP_sha1 = 'EVP_sha1';
  fn_EVP_dss = 'EVP_dss';
  fn_EVP_dss1 = 'EVP_dss1';
  fn_EVP_mdc2 = 'EVP_mdc2';
  fn_EVP_ripemd160 = 'EVP_ripemd160';
  fn_EVP_enc_null = 'EVP_enc_null';
  fn_EVP_des_ecb = 'EVP_des_ecb';
  fn_EVP_des_ede = 'EVP_des_ede';
  fn_EVP_des_ede3 = 'EVP_des_ede3';
  fn_EVP_des_cfb = 'EVP_des_cfb';
  fn_EVP_des_ede_cfb = 'EVP_des_ede_cfb';
  fn_EVP_des_ede3_cfb = 'EVP_des_ede3_cfb';
  fn_EVP_des_ofb = 'EVP_des_ofb';
  fn_EVP_des_ede_ofb = 'EVP_des_ede_ofb';
  fn_EVP_des_ede3_ofb = 'EVP_des_ede3_ofb';
  fn_EVP_des_cbc = 'EVP_des_cbc';
  fn_EVP_des_ede_cbc = 'EVP_des_ede_cbc';
  fn_EVP_des_ede3_cbc = 'EVP_des_ede3_cbc';
  fn_EVP_desx_cbc = 'EVP_desx_cbc';
  fn_EVP_rc4 = 'EVP_rc4';
  fn_EVP_rc4_40 = 'EVP_rc4_40';
  fn_EVP_idea_ecb = 'EVP_idea_ecb';
  fn_EVP_idea_cfb = 'EVP_idea_cfb';
  fn_EVP_idea_ofb = 'EVP_idea_ofb';
  fn_EVP_idea_cbc = 'EVP_idea_cbc';
  fn_EVP_rc2_ecb = 'EVP_rc2_ecb';
  fn_EVP_rc2_cbc = 'EVP_rc2_cbc';
  fn_EVP_rc2_40_cbc = 'EVP_rc2_40_cbc';
  fn_EVP_rc2_64_cbc = 'EVP_rc2_64_cbc';
  fn_EVP_rc2_cfb = 'EVP_rc2_cfb';
  fn_EVP_rc2_ofb = 'EVP_rc2_ofb';
  fn_EVP_bf_ecb = 'EVP_bf_ecb';
  fn_EVP_bf_cbc = 'EVP_bf_cbc';
  fn_EVP_bf_cfb = 'EVP_bf_cfb';
  fn_EVP_bf_ofb = 'EVP_bf_ofb';
  fn_EVP_cast5_ecb = 'EVP_cast5_ecb';
  fn_EVP_cast5_cbc = 'EVP_cast5_cbc';
  fn_EVP_cast5_cfb = 'EVP_cast5_cfb';
  fn_EVP_cast5_ofb = 'EVP_cast5_ofb';
  fn_EVP_rc5_32_12_16_cbc = 'EVP_rc5_32_12_16_cbc';
  fn_EVP_rc5_32_12_16_ecb = 'EVP_rc5_32_12_16_ecb';
  fn_EVP_rc5_32_12_16_cfb = 'EVP_rc5_32_12_16_cfb';
  fn_EVP_rc5_32_12_16_ofb = 'EVP_rc5_32_12_16_ofb';
  fn_SSLeay_add_all_algorithms = 'SSLeay_add_all_algorithms';
  fn_SSLeay_add_all_ciphers = 'SSLeay_add_all_ciphers';
  fn_SSLeay_add_all_digests = 'SSLeay_add_all_digests';
  fn_EVP_add_cipher = 'EVP_add_cipher';
  fn_EVP_add_digest = 'EVP_add_digest';
  fn_EVP_get_cipherbyname = 'EVP_get_cipherbyname';
  fn_EVP_get_digestbyname = 'EVP_get_digestbyname';
  fn_EVP_cleanup = 'EVP_cleanup';
  fn_EVP_PKEY_decrypt = 'EVP_PKEY_decrypt';
  fn_EVP_PKEY_encrypt = 'EVP_PKEY_encrypt';
  fn_EVP_PKEY_type = 'EVP_PKEY_type';
  fn_EVP_PKEY_bits = 'EVP_PKEY_bits';
  fn_EVP_PKEY_size = 'EVP_PKEY_size';
  fn_EVP_PKEY_assign = 'EVP_PKEY_assign';
  fn_EVP_PKEY_new = 'EVP_PKEY_new';
  fn_EVP_PKEY_free = 'EVP_PKEY_free';
  fn_d2i_PublicKey = 'd2i_PublicKey';
  fn_i2d_PublicKey = 'i2d_PublicKey';
  fn_d2i_PrivateKey = 'd2i_PrivateKey';
  fn_i2d_PrivateKey = 'i2d_PrivateKey';
  fn_EVP_PKEY_copy_parameters = 'EVP_PKEY_copy_parameters';
  fn_EVP_PKEY_missing_parameters = 'EVP_PKEY_missing_parameters';
  fn_EVP_PKEY_save_parameters = 'EVP_PKEY_save_parameters';
  fn_EVP_PKEY_cmp_parameters = 'EVP_PKEY_cmp_parameters';
  fn_EVP_CIPHER_type = 'EVP_CIPHER_type';
  fn_EVP_CIPHER_param_to_asn1 = 'EVP_CIPHER_param_to_asn1';
  fn_EVP_CIPHER_asn1_to_param = 'EVP_CIPHER_asn1_to_param';
  fn_EVP_CIPHER_set_asn1_iv = 'EVP_CIPHER_set_asn1_iv';
  fn_EVP_CIPHER_get_asn1_iv = 'EVP_CIPHER_get_asn1_iv';
  fn_PKCS5_PBE_keyivgen = 'PKCS5_PBE_keyivgen';
  fn_PKCS5_PBKDF2_HMAC_SHA1 = 'PKCS5_PBKDF2_HMAC_SHA1';
  fn_PKCS5_v2_PBE_keyivgen = 'PKCS5_v2_PBE_keyivgen';
  fn_PKCS5_PBE_add = 'PKCS5_PBE_add';
  fn_EVP_PBE_CipherInit = 'EVP_PBE_CipherInit';
  fn_EVP_PBE_alg_add = 'EVP_PBE_alg_add';
  fn_EVP_PBE_cleanup = 'EVP_PBE_cleanup';
  fn_sk_X509_ALGOR_new = 'sk_X509_ALGOR_new';
  fn_sk_X509_ALGOR_new_null = 'sk_X509_ALGOR_new_null';
  fn_sk_X509_ALGOR_free = 'sk_X509_ALGOR_free';
  fn_sk_X509_ALGOR_num = 'sk_X509_ALGOR_num';
  fn_sk_X509_ALGOR_value = 'sk_X509_ALGOR_value';
  fn_sk_X509_ALGOR_set = 'sk_X509_ALGOR_set';
  fn_sk_X509_ALGOR_zero = 'sk_X509_ALGOR_zero';
  fn_sk_X509_ALGOR_push = 'sk_X509_ALGOR_push';
  fn_sk_X509_ALGOR_unshift = 'sk_X509_ALGOR_unshift';
  fn_sk_X509_ALGOR_find = 'sk_X509_ALGOR_find';
  fn_sk_X509_ALGOR_delete = 'sk_X509_ALGOR_delete';
  fn_sk_X509_ALGOR_delete_ptr = 'sk_X509_ALGOR_delete_ptr';
  fn_sk_X509_ALGOR_insert = 'sk_X509_ALGOR_insert';
  fn_sk_X509_ALGOR_dup = 'sk_X509_ALGOR_dup';
  fn_sk_X509_ALGOR_pop_free = 'sk_X509_ALGOR_pop_free';
  fn_sk_X509_ALGOR_shift = 'sk_X509_ALGOR_shift';
  fn_sk_X509_ALGOR_pop = 'sk_X509_ALGOR_pop';
  fn_sk_X509_ALGOR_sort = 'sk_X509_ALGOR_sort';
  fn_i2d_ASN1_SET_OF_X509_ALGOR = 'i2d_ASN1_SET_OF_X509_ALGOR';
  fn_d2i_ASN1_SET_OF_X509_ALGOR = 'd2i_ASN1_SET_OF_X509_ALGOR';
  fn_sk_X509_NAME_ENTRY_new = 'sk_X509_NAME_ENTRY_new';
  fn_sk_X509_NAME_ENTRY_new_null = 'sk_X509_NAME_ENTRY_new_null';
  fn_sk_X509_NAME_ENTRY_free = 'sk_X509_NAME_ENTRY_free';
  fn_sk_X509_NAME_ENTRY_num = 'sk_X509_NAME_ENTRY_num';
  fn_sk_X509_NAME_ENTRY_value = 'sk_X509_NAME_ENTRY_value';
  fn_sk_X509_NAME_ENTRY_set = 'sk_X509_NAME_ENTRY_set';
  fn_sk_X509_NAME_ENTRY_zero = 'sk_X509_NAME_ENTRY_zero';
  fn_sk_X509_NAME_ENTRY_push = 'sk_X509_NAME_ENTRY_push';
  fn_sk_X509_NAME_ENTRY_unshift = 'sk_X509_NAME_ENTRY_unshift';
  fn_sk_X509_NAME_ENTRY_find = 'sk_X509_NAME_ENTRY_find';
  fn_sk_X509_NAME_ENTRY_delete = 'sk_X509_NAME_ENTRY_delete';
  fn_sk_X509_NAME_ENTRY_delete_ptr = 'sk_X509_NAME_ENTRY_delete_ptr';
  fn_sk_X509_NAME_ENTRY_insert = 'sk_X509_NAME_ENTRY_insert';
  fn_sk_X509_NAME_ENTRY_dup = 'sk_X509_NAME_ENTRY_dup';
  fn_sk_X509_NAME_ENTRY_pop_free = 'sk_X509_NAME_ENTRY_pop_free';
  fn_sk_X509_NAME_ENTRY_shift = 'sk_X509_NAME_ENTRY_shift';
  fn_sk_X509_NAME_ENTRY_pop = 'sk_X509_NAME_ENTRY_pop';
  fn_sk_X509_NAME_ENTRY_sort = 'sk_X509_NAME_ENTRY_sort';
  fn_i2d_ASN1_SET_OF_X509_NAME_ENTRY = 'i2d_ASN1_SET_OF_X509_NAME_ENTRY';
  fn_d2i_ASN1_SET_OF_X509_NAME_ENTRY = 'd2i_ASN1_SET_OF_X509_NAME_ENTRY';
  fn_sk_X509_NAME_new = 'sk_X509_NAME_new';
  fn_sk_X509_NAME_new_null = 'sk_X509_NAME_new_null';
  fn_sk_X509_NAME_free = 'sk_X509_NAME_free';
  fn_sk_X509_NAME_num = 'sk_X509_NAME_num';
  fn_sk_X509_NAME_value = 'sk_X509_NAME_value';
  fn_sk_X509_NAME_set = 'sk_X509_NAME_set';
  fn_sk_X509_NAME_zero = 'sk_X509_NAME_zero';
  fn_sk_X509_NAME_push = 'sk_X509_NAME_push';
  fn_sk_X509_NAME_unshift = 'sk_X509_NAME_unshift';
  fn_sk_X509_NAME_find = 'sk_X509_NAME_find';
  fn_sk_X509_NAME_delete = 'sk_X509_NAME_delete';
  fn_sk_X509_NAME_delete_ptr = 'sk_X509_NAME_delete_ptr';
  fn_sk_X509_NAME_insert = 'sk_X509_NAME_insert';
  fn_sk_X509_NAME_dup = 'sk_X509_NAME_dup';
  fn_sk_X509_NAME_pop_free = 'sk_X509_NAME_pop_free';
  fn_sk_X509_NAME_shift = 'sk_X509_NAME_shift';
  fn_sk_X509_NAME_pop = 'sk_X509_NAME_pop';
  fn_sk_X509_NAME_sort = 'sk_X509_NAME_sort';
  fn_sk_X509_EXTENSION_new = 'sk_X509_EXTENSION_new';
  fn_sk_X509_EXTENSION_new_null = 'sk_X509_EXTENSION_new_null';
  fn_sk_X509_EXTENSION_free = 'sk_X509_EXTENSION_free';
  fn_sk_X509_EXTENSION_num = 'sk_X509_EXTENSION_num';
  fn_sk_X509_EXTENSION_value = 'sk_X509_EXTENSION_value';
  fn_sk_X509_EXTENSION_set = 'sk_X509_EXTENSION_set';
  fn_sk_X509_EXTENSION_zero = 'sk_X509_EXTENSION_zero';
  fn_sk_X509_EXTENSION_push = 'sk_X509_EXTENSION_push';
  fn_sk_X509_EXTENSION_unshift = 'sk_X509_EXTENSION_unshift';
  fn_sk_X509_EXTENSION_find = 'sk_X509_EXTENSION_find';
  fn_sk_X509_EXTENSION_delete = 'sk_X509_EXTENSION_delete';
  fn_sk_X509_EXTENSION_delete_ptr = 'sk_X509_EXTENSION_delete_ptr';
  fn_sk_X509_EXTENSION_insert = 'sk_X509_EXTENSION_insert';
  fn_sk_X509_EXTENSION_dup = 'sk_X509_EXTENSION_dup';
  fn_sk_X509_EXTENSION_pop_free = 'sk_X509_EXTENSION_pop_free';
  fn_sk_X509_EXTENSION_shift = 'sk_X509_EXTENSION_shift';
  fn_sk_X509_EXTENSION_pop = 'sk_X509_EXTENSION_pop';
  fn_sk_X509_EXTENSION_sort = 'sk_X509_EXTENSION_sort';
  fn_i2d_ASN1_SET_OF_X509_EXTENSION = 'i2d_ASN1_SET_OF_X509_EXTENSION';
  fn_d2i_ASN1_SET_OF_X509_EXTENSION = 'd2i_ASN1_SET_OF_X509_EXTENSION';
  fn_sk_X509_ATTRIBUTE_new = 'sk_X509_ATTRIBUTE_new';
  fn_sk_X509_ATTRIBUTE_new_null = 'sk_X509_ATTRIBUTE_new_null';
  fn_sk_X509_ATTRIBUTE_free = 'sk_X509_ATTRIBUTE_free';
  fn_sk_X509_ATTRIBUTE_num = 'sk_X509_ATTRIBUTE_num';
  fn_sk_X509_ATTRIBUTE_value = 'sk_X509_ATTRIBUTE_value';
  fn_sk_X509_ATTRIBUTE_set = 'sk_X509_ATTRIBUTE_set';
  fn_sk_X509_ATTRIBUTE_zero = 'sk_X509_ATTRIBUTE_zero';
  fn_sk_X509_ATTRIBUTE_push = 'sk_X509_ATTRIBUTE_push';
  fn_sk_X509_ATTRIBUTE_unshift = 'sk_X509_ATTRIBUTE_unshift';
  fn_sk_X509_ATTRIBUTE_find = 'sk_X509_ATTRIBUTE_find';
  fn_sk_X509_ATTRIBUTE_delete = 'sk_X509_ATTRIBUTE_delete';
  fn_sk_X509_ATTRIBUTE_delete_ptr = 'sk_X509_ATTRIBUTE_delete_ptr';
  fn_sk_X509_ATTRIBUTE_insert = 'sk_X509_ATTRIBUTE_insert';
  fn_sk_X509_ATTRIBUTE_dup = 'sk_X509_ATTRIBUTE_dup';
  fn_sk_X509_ATTRIBUTE_pop_free = 'sk_X509_ATTRIBUTE_pop_free';
  fn_sk_X509_ATTRIBUTE_shift = 'sk_X509_ATTRIBUTE_shift';
  fn_sk_X509_ATTRIBUTE_pop = 'sk_X509_ATTRIBUTE_pop';
  fn_sk_X509_ATTRIBUTE_sort = 'sk_X509_ATTRIBUTE_sort';
  fn_i2d_ASN1_SET_OF_X509_ATTRIBUTE = 'i2d_ASN1_SET_OF_X509_ATTRIBUTE';
  fn_d2i_ASN1_SET_OF_X509_ATTRIBUTE = 'd2i_ASN1_SET_OF_X509_ATTRIBUTE';
  fn_sk_X509_new = 'sk_X509_new';
  fn_sk_X509_new_null = 'sk_X509_new_null';
  fn_sk_X509_free = 'sk_X509_free';
  fn_sk_X509_num = 'sk_X509_num';
  fn_sk_X509_value = 'sk_X509_value';
  fn_sk_X509_set = 'sk_X509_set';
  fn_sk_X509_zero = 'sk_X509_zero';
  fn_sk_X509_push = 'sk_X509_push';
  fn_sk_X509_unshift = 'sk_X509_unshift';
  fn_sk_X509_find = 'sk_X509_find';
  fn_sk_X509_delete = 'sk_X509_delete';
  fn_sk_X509_delete_ptr = 'sk_X509_delete_ptr';
  fn_sk_X509_insert = 'sk_X509_insert';
  fn_sk_X509_dup = 'sk_X509_dup';
  fn_sk_X509_pop_free = 'sk_X509_pop_free';
  fn_sk_X509_shift = 'sk_X509_shift';
  fn_sk_X509_pop = 'sk_X509_pop';
  fn_sk_X509_sort = 'sk_X509_sort';
  fn_i2d_ASN1_SET_OF_X509 = 'i2d_ASN1_SET_OF_X509';
  fn_d2i_ASN1_SET_OF_X509 = 'd2i_ASN1_SET_OF_X509';
  fn_sk_X509_REVOKED_new = 'sk_X509_REVOKED_new';
  fn_sk_X509_REVOKED_new_null = 'sk_X509_REVOKED_new_null';
  fn_sk_X509_REVOKED_free = 'sk_X509_REVOKED_free';
  fn_sk_X509_REVOKED_num = 'sk_X509_REVOKED_num';
  fn_sk_X509_REVOKED_value = 'sk_X509_REVOKED_value';
  fn_sk_X509_REVOKED_set = 'sk_X509_REVOKED_set';
  fn_sk_X509_REVOKED_zero = 'sk_X509_REVOKED_zero';
  fn_sk_X509_REVOKED_push = 'sk_X509_REVOKED_push';
  fn_sk_X509_REVOKED_unshift = 'sk_X509_REVOKED_unshift';
  fn_sk_X509_REVOKED_find = 'sk_X509_REVOKED_find';
  fn_sk_X509_REVOKED_delete = 'sk_X509_REVOKED_delete';
  fn_sk_X509_REVOKED_delete_ptr = 'sk_X509_REVOKED_delete_ptr';
  fn_sk_X509_REVOKED_insert = 'sk_X509_REVOKED_insert';
  fn_sk_X509_REVOKED_dup = 'sk_X509_REVOKED_dup';
  fn_sk_X509_REVOKED_pop_free = 'sk_X509_REVOKED_pop_free';
  fn_sk_X509_REVOKED_shift = 'sk_X509_REVOKED_shift';
  fn_sk_X509_REVOKED_pop = 'sk_X509_REVOKED_pop';
  fn_sk_X509_REVOKED_sort = 'sk_X509_REVOKED_sort';
  fn_i2d_ASN1_SET_OF_X509_REVOKED = 'i2d_ASN1_SET_OF_X509_REVOKED';
  fn_d2i_ASN1_SET_OF_X509_REVOKED = 'd2i_ASN1_SET_OF_X509_REVOKED';
  fn_sk_X509_CRL_new = 'sk_X509_CRL_new';
  fn_sk_X509_CRL_new_null = 'sk_X509_CRL_new_null';
  fn_sk_X509_CRL_free = 'sk_X509_CRL_free';
  fn_sk_X509_CRL_num = 'sk_X509_CRL_num';
  fn_sk_X509_CRL_value = 'sk_X509_CRL_value';
  fn_sk_X509_CRL_set = 'sk_X509_CRL_set';
  fn_sk_X509_CRL_zero = 'sk_X509_CRL_zero';
  fn_sk_X509_CRL_push = 'sk_X509_CRL_push';
  fn_sk_X509_CRL_unshift = 'sk_X509_CRL_unshift';
  fn_sk_X509_CRL_find = 'sk_X509_CRL_find';
  fn_sk_X509_CRL_delete = 'sk_X509_CRL_delete';
  fn_sk_X509_CRL_delete_ptr = 'sk_X509_CRL_delete_ptr';
  fn_sk_X509_CRL_insert = 'sk_X509_CRL_insert';
  fn_sk_X509_CRL_dup = 'sk_X509_CRL_dup';
  fn_sk_X509_CRL_pop_free = 'sk_X509_CRL_pop_free';
  fn_sk_X509_CRL_shift = 'sk_X509_CRL_shift';
  fn_sk_X509_CRL_pop = 'sk_X509_CRL_pop';
  fn_sk_X509_CRL_sort = 'sk_X509_CRL_sort';
  fn_i2d_ASN1_SET_OF_X509_CRL = 'i2d_ASN1_SET_OF_X509_CRL';
  fn_d2i_ASN1_SET_OF_X509_CRL = 'd2i_ASN1_SET_OF_X509_CRL';
  fn_sk_X509_INFO_new = 'sk_X509_INFO_new';
  fn_sk_X509_INFO_new_null = 'sk_X509_INFO_new_null';
  fn_sk_X509_INFO_free = 'sk_X509_INFO_free';
  fn_sk_X509_INFO_num = 'sk_X509_INFO_num';
  fn_sk_X509_INFO_value = 'sk_X509_INFO_value';
  fn_sk_X509_INFO_set = 'sk_X509_INFO_set';
  fn_sk_X509_INFO_zero = 'sk_X509_INFO_zero';
  fn_sk_X509_INFO_push = 'sk_X509_INFO_push';
  fn_sk_X509_INFO_unshift = 'sk_X509_INFO_unshift';
  fn_sk_X509_INFO_find = 'sk_X509_INFO_find';
  fn_sk_X509_INFO_delete = 'sk_X509_INFO_delete';
  fn_sk_X509_INFO_delete_ptr = 'sk_X509_INFO_delete_ptr';
  fn_sk_X509_INFO_insert = 'sk_X509_INFO_insert';
  fn_sk_X509_INFO_dup = 'sk_X509_INFO_dup';
  fn_sk_X509_INFO_pop_free = 'sk_X509_INFO_pop_free';
  fn_sk_X509_INFO_shift = 'sk_X509_INFO_shift';
  fn_sk_X509_INFO_pop = 'sk_X509_INFO_pop';
  fn_sk_X509_INFO_sort = 'sk_X509_INFO_sort';
  fn_sk_X509_LOOKUP_new = 'sk_X509_LOOKUP_new';
  fn_sk_X509_LOOKUP_new_null = 'sk_X509_LOOKUP_new_null';
  fn_sk_X509_LOOKUP_free = 'sk_X509_LOOKUP_free';
  fn_sk_X509_LOOKUP_num = 'sk_X509_LOOKUP_num';
  fn_sk_X509_LOOKUP_value = 'sk_X509_LOOKUP_value';
  fn_sk_X509_LOOKUP_set = 'sk_X509_LOOKUP_set';
  fn_sk_X509_LOOKUP_zero = 'sk_X509_LOOKUP_zero';
  fn_sk_X509_LOOKUP_push = 'sk_X509_LOOKUP_push';
  fn_sk_X509_LOOKUP_unshift = 'sk_X509_LOOKUP_unshift';
  fn_sk_X509_LOOKUP_find = 'sk_X509_LOOKUP_find';
  fn_sk_X509_LOOKUP_delete = 'sk_X509_LOOKUP_delete';
  fn_sk_X509_LOOKUP_delete_ptr = 'sk_X509_LOOKUP_delete_ptr';
  fn_sk_X509_LOOKUP_insert = 'sk_X509_LOOKUP_insert';
  fn_sk_X509_LOOKUP_dup = 'sk_X509_LOOKUP_dup';
  fn_sk_X509_LOOKUP_pop_free = 'sk_X509_LOOKUP_pop_free';
  fn_sk_X509_LOOKUP_shift = 'sk_X509_LOOKUP_shift';
  fn_sk_X509_LOOKUP_pop = 'sk_X509_LOOKUP_pop';
  fn_sk_X509_LOOKUP_sort = 'sk_X509_LOOKUP_sort';
  fn_X509_OBJECT_retrieve_by_subject = 'X509_OBJECT_retrieve_by_subject';
  fn_X509_OBJECT_up_ref_count = 'X509_OBJECT_up_ref_count';
  fn_X509_OBJECT_free_contents = 'X509_OBJECT_free_contents';
  fn_X509_STORE_new = 'X509_STORE_new';
  fn_X509_STORE_free = 'X509_STORE_free';
  fn_X509_STORE_CTX_init = 'X509_STORE_CTX_init';
  fn_X509_STORE_CTX_cleanup = 'X509_STORE_CTX_cleanup';
  fn_X509_STORE_add_lookup = 'X509_STORE_add_lookup';
  fn_X509_LOOKUP_hash_dir = 'X509_LOOKUP_hash_dir';
  fn_X509_LOOKUP_file = 'X509_LOOKUP_file';
  fn_X509_STORE_add_cert = 'X509_STORE_add_cert';
  fn_X509_STORE_add_crl = 'X509_STORE_add_crl';
  fn_X509_STORE_get_by_subject = 'X509_STORE_get_by_subject';
  fn_X509_LOOKUP_ctrl = 'X509_LOOKUP_ctrl';
  fn_X509_load_cert_file = 'X509_load_cert_file';
  fn_X509_load_crl_file = 'X509_load_crl_file';
  fn_X509_LOOKUP_new = 'X509_LOOKUP_new';
  fn_X509_LOOKUP_free = 'X509_LOOKUP_free';
  fn_X509_LOOKUP_init = 'X509_LOOKUP_init';
  fn_X509_LOOKUP_by_subject = 'X509_LOOKUP_by_subject';
  fn_X509_LOOKUP_by_issuer_serial = 'X509_LOOKUP_by_issuer_serial';
  fn_X509_LOOKUP_by_fingerprint = 'X509_LOOKUP_by_fingerprint';
  fn_X509_LOOKUP_by_alias = 'X509_LOOKUP_by_alias';
  fn_X509_LOOKUP_shutdown = 'X509_LOOKUP_shutdown';
  fn_X509_STORE_load_locations = 'X509_STORE_load_locations';
  fn_X509_STORE_set_default_paths = 'X509_STORE_set_default_paths';
  fn_X509_STORE_CTX_get_ex_new_index = 'X509_STORE_CTX_get_ex_new_index';
  fn_X509_STORE_CTX_set_ex_data = 'X509_STORE_CTX_set_ex_data';
  fn_X509_STORE_CTX_get_ex_data = 'X509_STORE_CTX_get_ex_data';
  fn_X509_STORE_CTX_get_error = 'X509_STORE_CTX_get_error';
  fn_X509_STORE_CTX_set_error = 'X509_STORE_CTX_set_error';
  fn_X509_STORE_CTX_get_error_depth = 'X509_STORE_CTX_get_error_depth';
  fn_X509_STORE_CTX_get_current_cert = 'X509_STORE_CTX_get_current_cert';
  fn_X509_STORE_CTX_get_chain = 'X509_STORE_CTX_get_chain';
  fn_X509_STORE_CTX_set_cert = 'X509_STORE_CTX_set_cert';
  fn_X509_STORE_CTX_set_chain = 'X509_STORE_CTX_set_chain';
  fn_sk_PKCS7_SIGNER_INFO_new = 'sk_PKCS7_SIGNER_INFO_new';
  fn_sk_PKCS7_SIGNER_INFO_new_null = 'sk_PKCS7_SIGNER_INFO_new_null';
  fn_sk_PKCS7_SIGNER_INFO_free = 'sk_PKCS7_SIGNER_INFO_free';
  fn_sk_PKCS7_SIGNER_INFO_num = 'sk_PKCS7_SIGNER_INFO_num';
  fn_sk_PKCS7_SIGNER_INFO_value = 'sk_PKCS7_SIGNER_INFO_value';
  fn_sk_PKCS7_SIGNER_INFO_set = 'sk_PKCS7_SIGNER_INFO_set';
  fn_sk_PKCS7_SIGNER_INFO_zero = 'sk_PKCS7_SIGNER_INFO_zero';
  fn_sk_PKCS7_SIGNER_INFO_push = 'sk_PKCS7_SIGNER_INFO_push';
  fn_sk_PKCS7_SIGNER_INFO_unshift = 'sk_PKCS7_SIGNER_INFO_unshift';
  fn_sk_PKCS7_SIGNER_INFO_find = 'sk_PKCS7_SIGNER_INFO_find';
  fn_sk_PKCS7_SIGNER_INFO_delete = 'sk_PKCS7_SIGNER_INFO_delete';
  fn_sk_PKCS7_SIGNER_INFO_delete_ptr = 'sk_PKCS7_SIGNER_INFO_delete_ptr';
  fn_sk_PKCS7_SIGNER_INFO_insert = 'sk_PKCS7_SIGNER_INFO_insert';
  fn_sk_PKCS7_SIGNER_INFO_dup = 'sk_PKCS7_SIGNER_INFO_dup';
  fn_sk_PKCS7_SIGNER_INFO_pop_free = 'sk_PKCS7_SIGNER_INFO_pop_free';
  fn_sk_PKCS7_SIGNER_INFO_shift = 'sk_PKCS7_SIGNER_INFO_shift';
  fn_sk_PKCS7_SIGNER_INFO_pop = 'sk_PKCS7_SIGNER_INFO_pop';
  fn_sk_PKCS7_SIGNER_INFO_sort = 'sk_PKCS7_SIGNER_INFO_sort';
  fn_i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO = 'i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO';
  fn_d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO = 'd2i_ASN1_SET_OF_PKCS7_SIGNER_INFO';
  fn_sk_PKCS7_RECIP_INFO_new = 'sk_PKCS7_RECIP_INFO_new';
  fn_sk_PKCS7_RECIP_INFO_new_null = 'sk_PKCS7_RECIP_INFO_new_null';
  fn_sk_PKCS7_RECIP_INFO_free = 'sk_PKCS7_RECIP_INFO_free';
  fn_sk_PKCS7_RECIP_INFO_num = 'sk_PKCS7_RECIP_INFO_num';
  fn_sk_PKCS7_RECIP_INFO_value = 'sk_PKCS7_RECIP_INFO_value';
  fn_sk_PKCS7_RECIP_INFO_set = 'sk_PKCS7_RECIP_INFO_set';
  fn_sk_PKCS7_RECIP_INFO_zero = 'sk_PKCS7_RECIP_INFO_zero';
  fn_sk_PKCS7_RECIP_INFO_push = 'sk_PKCS7_RECIP_INFO_push';
  fn_sk_PKCS7_RECIP_INFO_unshift = 'sk_PKCS7_RECIP_INFO_unshift';
  fn_sk_PKCS7_RECIP_INFO_find = 'sk_PKCS7_RECIP_INFO_find';
  fn_sk_PKCS7_RECIP_INFO_delete = 'sk_PKCS7_RECIP_INFO_delete';
  fn_sk_PKCS7_RECIP_INFO_delete_ptr = 'sk_PKCS7_RECIP_INFO_delete_ptr';
  fn_sk_PKCS7_RECIP_INFO_insert = 'sk_PKCS7_RECIP_INFO_insert';
  fn_sk_PKCS7_RECIP_INFO_dup = 'sk_PKCS7_RECIP_INFO_dup';
  fn_sk_PKCS7_RECIP_INFO_pop_free = 'sk_PKCS7_RECIP_INFO_pop_free';
  fn_sk_PKCS7_RECIP_INFO_shift = 'sk_PKCS7_RECIP_INFO_shift';
  fn_sk_PKCS7_RECIP_INFO_pop = 'sk_PKCS7_RECIP_INFO_pop';
  fn_sk_PKCS7_RECIP_INFO_sort = 'sk_PKCS7_RECIP_INFO_sort';
  fn_i2d_ASN1_SET_OF_PKCS7_RECIP_INFO = 'i2d_ASN1_SET_OF_PKCS7_RECIP_INFO';
  fn_d2i_ASN1_SET_OF_PKCS7_RECIP_INFO = 'd2i_ASN1_SET_OF_PKCS7_RECIP_INFO';
  fn_PKCS7_ISSUER_AND_SERIAL_new = 'PKCS7_ISSUER_AND_SERIAL_new';
  fn_PKCS7_ISSUER_AND_SERIAL_free = 'PKCS7_ISSUER_AND_SERIAL_free';
  fn_i2d_PKCS7_ISSUER_AND_SERIAL = 'i2d_PKCS7_ISSUER_AND_SERIAL';
  fn_d2i_PKCS7_ISSUER_AND_SERIAL = 'd2i_PKCS7_ISSUER_AND_SERIAL';
  fn_PKCS7_ISSUER_AND_SERIAL_digest = 'PKCS7_ISSUER_AND_SERIAL_digest';
  fn_d2i_PKCS7_fp = 'd2i_PKCS7_fp';
  fn_i2d_PKCS7_fp = 'i2d_PKCS7_fp';
  fn_PKCS7_dup = 'PKCS7_dup';
  fn_d2i_PKCS7_bio = 'd2i_PKCS7_bio';
  fn_i2d_PKCS7_bio = 'i2d_PKCS7_bio';
  fn_PKCS7_SIGNER_INFO_new = 'PKCS7_SIGNER_INFO_new';
  fn_PKCS7_SIGNER_INFO_free = 'PKCS7_SIGNER_INFO_free';
  fn_i2d_PKCS7_SIGNER_INFO = 'i2d_PKCS7_SIGNER_INFO';
  fn_d2i_PKCS7_SIGNER_INFO = 'd2i_PKCS7_SIGNER_INFO';
  fn_PKCS7_RECIP_INFO_new = 'PKCS7_RECIP_INFO_new';
  fn_PKCS7_RECIP_INFO_free = 'PKCS7_RECIP_INFO_free';
  fn_i2d_PKCS7_RECIP_INFO = 'i2d_PKCS7_RECIP_INFO';
  fn_d2i_PKCS7_RECIP_INFO = 'd2i_PKCS7_RECIP_INFO';
  fn_PKCS7_SIGNED_new = 'PKCS7_SIGNED_new';
  fn_PKCS7_SIGNED_free = 'PKCS7_SIGNED_free';
  fn_i2d_PKCS7_SIGNED = 'i2d_PKCS7_SIGNED';
  fn_d2i_PKCS7_SIGNED = 'd2i_PKCS7_SIGNED';
  fn_PKCS7_ENC_CONTENT_new = 'PKCS7_ENC_CONTENT_new';
  fn_PKCS7_ENC_CONTENT_free = 'PKCS7_ENC_CONTENT_free';
  fn_i2d_PKCS7_ENC_CONTENT = 'i2d_PKCS7_ENC_CONTENT';
  fn_d2i_PKCS7_ENC_CONTENT = 'd2i_PKCS7_ENC_CONTENT';
  fn_PKCS7_ENVELOPE_new = 'PKCS7_ENVELOPE_new';
  fn_PKCS7_ENVELOPE_free = 'PKCS7_ENVELOPE_free';
  fn_i2d_PKCS7_ENVELOPE = 'i2d_PKCS7_ENVELOPE';
  fn_d2i_PKCS7_ENVELOPE = 'd2i_PKCS7_ENVELOPE';
  fn_PKCS7_SIGN_ENVELOPE_new = 'PKCS7_SIGN_ENVELOPE_new';
  fn_PKCS7_SIGN_ENVELOPE_free = 'PKCS7_SIGN_ENVELOPE_free';
  fn_i2d_PKCS7_SIGN_ENVELOPE = 'i2d_PKCS7_SIGN_ENVELOPE';
  fn_d2i_PKCS7_SIGN_ENVELOPE = 'd2i_PKCS7_SIGN_ENVELOPE';
  fn_PKCS7_DIGEST_new = 'PKCS7_DIGEST_new';
  fn_PKCS7_DIGEST_free = 'PKCS7_DIGEST_free';
  fn_i2d_PKCS7_DIGEST = 'i2d_PKCS7_DIGEST';
  fn_d2i_PKCS7_DIGEST = 'd2i_PKCS7_DIGEST';
  fn_PKCS7_ENCRYPT_new = 'PKCS7_ENCRYPT_new';
  fn_PKCS7_ENCRYPT_free = 'PKCS7_ENCRYPT_free';
  fn_i2d_PKCS7_ENCRYPT = 'i2d_PKCS7_ENCRYPT';
  fn_d2i_PKCS7_ENCRYPT = 'd2i_PKCS7_ENCRYPT';
  fn_PKCS7_new = 'PKCS7_new';
  fn_PKCS7_free = 'PKCS7_free';
  fn_PKCS7_content_free = 'PKCS7_content_free';
  fn_i2d_PKCS7 = 'i2d_PKCS7';
  fn_d2i_PKCS7 = 'd2i_PKCS7';
  fn_ERR_load_PKCS7_strings = 'ERR_load_PKCS7_strings';
  fn_PKCS7_ctrl = 'PKCS7_ctrl';
  fn_PKCS7_set_type = 'PKCS7_set_type';
  fn_PKCS7_set_content = 'PKCS7_set_content';
  fn_PKCS7_SIGNER_INFO_set = 'PKCS7_SIGNER_INFO_set';
  fn_PKCS7_add_signer = 'PKCS7_add_signer';
  fn_PKCS7_add_certificate = 'PKCS7_add_certificate';
  fn_PKCS7_add_crl = 'PKCS7_add_crl';
  fn_PKCS7_content_new = 'PKCS7_content_new';
  fn_PKCS7_dataVerify = 'PKCS7_dataVerify';
  fn_PKCS7_signatureVerify = 'PKCS7_signatureVerify';
  fn_PKCS7_dataInit = 'PKCS7_dataInit';
  fn_PKCS7_dataFinal = 'PKCS7_dataFinal';
  fn_PKCS7_dataDecode = 'PKCS7_dataDecode';
  fn_PKCS7_add_signature = 'PKCS7_add_signature';
  fn_PKCS7_cert_from_signer_info = 'PKCS7_cert_from_signer_info';
  fn_PKCS7_get_signer_info = 'PKCS7_get_signer_info';
  fn_PKCS7_add_recipient = 'PKCS7_add_recipient';
  fn_PKCS7_add_recipient_info = 'PKCS7_add_recipient_info';
  fn_PKCS7_RECIP_INFO_set = 'PKCS7_RECIP_INFO_set';
  fn_PKCS7_set_cipher = 'PKCS7_set_cipher';
  fn_PKCS7_get_issuer_and_serial = 'PKCS7_get_issuer_and_serial';
  fn_PKCS7_digest_from_attributes = 'PKCS7_digest_from_attributes';
  fn_PKCS7_add_signed_attribute = 'PKCS7_add_signed_attribute';
  fn_PKCS7_add_attribute = 'PKCS7_add_attribute';
  fn_PKCS7_get_attribute = 'PKCS7_get_attribute';
  fn_PKCS7_get_signed_attribute = 'PKCS7_get_signed_attribute';
  fn_PKCS7_set_signed_attributes = 'PKCS7_set_signed_attributes';
  fn_PKCS7_set_attributes = 'PKCS7_set_attributes';
  fn_X509_verify_cert_error_string = 'X509_verify_cert_error_string';
  fn_X509_verify = 'X509_verify';
  fn_X509_REQ_verify = 'X509_REQ_verify';
  fn_X509_CRL_verify = 'X509_CRL_verify';
  fn_NETSCAPE_SPKI_verify = 'NETSCAPE_SPKI_verify';
  fn_X509_sign = 'X509_sign';
  fn_X509_REQ_sign = 'X509_REQ_sign';
  fn_X509_CRL_sign = 'X509_CRL_sign';
  fn_NETSCAPE_SPKI_sign = 'NETSCAPE_SPKI_sign';
  fn_X509_digest = 'X509_digest';
  fn_X509_NAME_digest = 'X509_NAME_digest';
  fn_d2i_X509_fp = 'd2i_X509_fp';
  fn_i2d_X509_fp = 'i2d_X509_fp';
  fn_d2i_X509_CRL_fp = 'd2i_X509_CRL_fp';
  fn_i2d_X509_CRL_fp = 'i2d_X509_CRL_fp';
  fn_d2i_X509_REQ_fp = 'd2i_X509_REQ_fp';
  fn_i2d_X509_REQ_fp = 'i2d_X509_REQ_fp';
  fn_d2i_RSAPrivateKey_fp = 'd2i_RSAPrivateKey_fp';
  fn_i2d_RSAPrivateKey_fp = 'i2d_RSAPrivateKey_fp';
  fn_d2i_RSAPublicKey_fp = 'd2i_RSAPublicKey_fp';
  fn_i2d_RSAPublicKey_fp = 'i2d_RSAPublicKey_fp';
  fn_d2i_DSAPrivateKey_fp = 'd2i_DSAPrivateKey_fp';
  fn_i2d_DSAPrivateKey_fp = 'i2d_DSAPrivateKey_fp';
  fn_d2i_PKCS8_fp = 'd2i_PKCS8_fp';
  fn_i2d_PKCS8_fp = 'i2d_PKCS8_fp';
  fn_d2i_PKCS8_PRIV_KEY_INFO_fp = 'd2i_PKCS8_PRIV_KEY_INFO_fp';
  fn_i2d_PKCS8_PRIV_KEY_INFO_fp = 'i2d_PKCS8_PRIV_KEY_INFO_fp';
  fn_d2i_X509_bio = 'd2i_X509_bio';
  fn_i2d_X509_bio = 'i2d_X509_bio';
  fn_d2i_X509_CRL_bio = 'd2i_X509_CRL_bio';
  fn_i2d_X509_CRL_bio = 'i2d_X509_CRL_bio';
  fn_d2i_X509_REQ_bio = 'd2i_X509_REQ_bio';
  fn_i2d_X509_REQ_bio = 'i2d_X509_REQ_bio';
  fn_d2i_RSAPrivateKey_bio = 'd2i_RSAPrivateKey_bio';
  fn_i2d_RSAPrivateKey_bio = 'i2d_RSAPrivateKey_bio';
  fn_d2i_RSAPublicKey_bio = 'd2i_RSAPublicKey_bio';
  fn_i2d_RSAPublicKey_bio = 'i2d_RSAPublicKey_bio';
  fn_d2i_DSAPrivateKey_bio = 'd2i_DSAPrivateKey_bio';
  fn_i2d_DSAPrivateKey_bio = 'i2d_DSAPrivateKey_bio';
  fn_d2i_PKCS8_bio = 'd2i_PKCS8_bio';
  fn_i2d_PKCS8_bio = 'i2d_PKCS8_bio';
  fn_d2i_PKCS8_PRIV_KEY_INFO_bio = 'd2i_PKCS8_PRIV_KEY_INFO_bio';
  fn_i2d_PKCS8_PRIV_KEY_INFO_bio = 'i2d_PKCS8_PRIV_KEY_INFO_bio';
  fn_X509_dup = 'X509_dup';
  fn_X509_ATTRIBUTE_dup = 'X509_ATTRIBUTE_dup';
  fn_X509_EXTENSION_dup = 'X509_EXTENSION_dup';
  fn_X509_CRL_dup = 'X509_CRL_dup';
  fn_X509_REQ_dup = 'X509_REQ_dup';
  fn_X509_ALGOR_dup = 'X509_ALGOR_dup';
  fn_X509_NAME_dup = 'X509_NAME_dup';
  fn_X509_NAME_ENTRY_dup = 'X509_NAME_ENTRY_dup';
  fn_RSAPublicKey_dup = 'RSAPublicKey_dup';
  fn_RSAPrivateKey_dup = 'RSAPrivateKey_dup';
  fn_X509_cmp_current_time = 'X509_cmp_current_time';
  fn_X509_gmtime_adj = 'X509_gmtime_adj';
  fn_X509_get_default_cert_area = 'X509_get_default_cert_area';
  fn_X509_get_default_cert_dir = 'X509_get_default_cert_dir';
  fn_X509_get_default_cert_file = 'X509_get_default_cert_file';
  fn_X509_get_default_cert_dir_env = 'X509_get_default_cert_dir_env';
  fn_X509_get_default_cert_file_env = 'X509_get_default_cert_file_env';
  fn_X509_get_default_private_dir = 'X509_get_default_private_dir';
  fn_X509_to_X509_REQ = 'X509_to_X509_REQ';
  fn_X509_REQ_to_X509 = 'X509_REQ_to_X509';
  fn_ERR_load_X509_strings = 'ERR_load_X509_strings';
  fn_X509_ALGOR_new = 'X509_ALGOR_new';
  fn_X509_ALGOR_free = 'X509_ALGOR_free';
  fn_i2d_X509_ALGOR = 'i2d_X509_ALGOR';
  fn_d2i_X509_ALGOR = 'd2i_X509_ALGOR';
  fn_X509_VAL_new = 'X509_VAL_new';
  fn_X509_VAL_free = 'X509_VAL_free';
  fn_i2d_X509_VAL = 'i2d_X509_VAL';
  fn_d2i_X509_VAL = 'd2i_X509_VAL';
  fn_X509_PUBKEY_new = 'X509_PUBKEY_new';
  fn_X509_PUBKEY_free = 'X509_PUBKEY_free';
  fn_i2d_X509_PUBKEY = 'i2d_X509_PUBKEY';
  fn_d2i_X509_PUBKEY = 'd2i_X509_PUBKEY';
  fn_X509_PUBKEY_set = 'X509_PUBKEY_set';
  fn_X509_PUBKEY_get = 'X509_PUBKEY_get';
  fn_X509_get_pubkey_parameters = 'X509_get_pubkey_parameters';
  fn_X509_SIG_new = 'X509_SIG_new';
  fn_X509_SIG_free = 'X509_SIG_free';
  fn_i2d_X509_SIG = 'i2d_X509_SIG';
  fn_d2i_X509_SIG = 'd2i_X509_SIG';
  fn_X509_REQ_INFO_new = 'X509_REQ_INFO_new';
  fn_X509_REQ_INFO_free = 'X509_REQ_INFO_free';
  fn_i2d_X509_REQ_INFO = 'i2d_X509_REQ_INFO';
  fn_d2i_X509_REQ_INFO = 'd2i_X509_REQ_INFO';
  fn_X509_REQ_new = 'X509_REQ_new';
  fn_X509_REQ_free = 'X509_REQ_free';
  fn_i2d_X509_REQ = 'i2d_X509_REQ';
  fn_d2i_X509_REQ = 'd2i_X509_REQ';
  fn_X509_ATTRIBUTE_new = 'X509_ATTRIBUTE_new';
  fn_X509_ATTRIBUTE_free = 'X509_ATTRIBUTE_free';
  fn_i2d_X509_ATTRIBUTE = 'i2d_X509_ATTRIBUTE';
  fn_d2i_X509_ATTRIBUTE = 'd2i_X509_ATTRIBUTE';
  fn_X509_ATTRIBUTE_create = 'X509_ATTRIBUTE_create';
  fn_X509_EXTENSION_new = 'X509_EXTENSION_new';
  fn_X509_EXTENSION_free = 'X509_EXTENSION_free';
  fn_i2d_X509_EXTENSION = 'i2d_X509_EXTENSION';
  fn_d2i_X509_EXTENSION = 'd2i_X509_EXTENSION';
  fn_X509_NAME_ENTRY_new = 'X509_NAME_ENTRY_new';
  fn_X509_NAME_ENTRY_free = 'X509_NAME_ENTRY_free';
  fn_i2d_X509_NAME_ENTRY = 'i2d_X509_NAME_ENTRY';
  fn_d2i_X509_NAME_ENTRY = 'd2i_X509_NAME_ENTRY';
  fn_X509_NAME_new = 'X509_NAME_new';
  fn_X509_NAME_free = 'X509_NAME_free';
  fn_i2d_X509_NAME = 'i2d_X509_NAME';
  fn_d2i_X509_NAME = 'd2i_X509_NAME';
  fn_X509_NAME_set = 'X509_NAME_set';
  fn_X509_CINF_new = 'X509_CINF_new';
  fn_X509_CINF_free = 'X509_CINF_free';
  fn_i2d_X509_CINF = 'i2d_X509_CINF';
  fn_d2i_X509_CINF = 'd2i_X509_CINF';
  fn_X509_new = 'X509_new';
  fn_X509_free = 'X509_free';
  fn_i2d_X509 = 'i2d_X509';
  fn_d2i_X509 = 'd2i_X509';
  fn_X509_REVOKED_new = 'X509_REVOKED_new';
  fn_X509_REVOKED_free = 'X509_REVOKED_free';
  fn_i2d_X509_REVOKED = 'i2d_X509_REVOKED';
  fn_d2i_X509_REVOKED = 'd2i_X509_REVOKED';
  fn_X509_CRL_INFO_new = 'X509_CRL_INFO_new';
  fn_X509_CRL_INFO_free = 'X509_CRL_INFO_free';
  fn_i2d_X509_CRL_INFO = 'i2d_X509_CRL_INFO';
  fn_d2i_X509_CRL_INFO = 'd2i_X509_CRL_INFO';
  fn_X509_CRL_new = 'X509_CRL_new';
  fn_X509_CRL_free = 'X509_CRL_free';
  fn_i2d_X509_CRL = 'i2d_X509_CRL';
  fn_d2i_X509_CRL = 'd2i_X509_CRL';
  fn_X509_PKEY_new = 'X509_PKEY_new';
  fn_X509_PKEY_free = 'X509_PKEY_free';
  fn_i2d_X509_PKEY = 'i2d_X509_PKEY';
  fn_d2i_X509_PKEY = 'd2i_X509_PKEY';
  fn_NETSCAPE_SPKI_new = 'NETSCAPE_SPKI_new';
  fn_NETSCAPE_SPKI_free = 'NETSCAPE_SPKI_free';
  fn_i2d_NETSCAPE_SPKI = 'i2d_NETSCAPE_SPKI';
  fn_d2i_NETSCAPE_SPKI = 'd2i_NETSCAPE_SPKI';
  fn_NETSCAPE_SPKAC_new = 'NETSCAPE_SPKAC_new';
  fn_NETSCAPE_SPKAC_free = 'NETSCAPE_SPKAC_free';
  fn_i2d_NETSCAPE_SPKAC = 'i2d_NETSCAPE_SPKAC';
  fn_d2i_NETSCAPE_SPKAC = 'd2i_NETSCAPE_SPKAC';
  fn_i2d_NETSCAPE_CERT_SEQUENCE = 'i2d_NETSCAPE_CERT_SEQUENCE';
  fn_NETSCAPE_CERT_SEQUENCE_new = 'NETSCAPE_CERT_SEQUENCE_new';
  fn_d2i_NETSCAPE_CERT_SEQUENCE = 'd2i_NETSCAPE_CERT_SEQUENCE';
  fn_NETSCAPE_CERT_SEQUENCE_free = 'NETSCAPE_CERT_SEQUENCE_free';
  fn_X509_INFO_new = 'X509_INFO_new';
  fn_X509_INFO_free = 'X509_INFO_free';
  fn_X509_NAME_oneline = 'X509_NAME_oneline';
  fn_ASN1_verify = 'ASN1_verify';
  fn_ASN1_digest = 'ASN1_digest';
  fn_ASN1_sign = 'ASN1_sign';
  fn_X509_set_version = 'X509_set_version';
  fn_X509_set_serialNumber = 'X509_set_serialNumber';
  fn_X509_get_serialNumber = 'X509_get_serialNumber';
  fn_X509_set_issuer_name = 'X509_set_issuer_name';
  fn_X509_get_issuer_name = 'X509_get_issuer_name';
  fn_X509_set_subject_name = 'X509_set_subject_name';
  fn_X509_get_subject_name = 'X509_get_subject_name';
  fn_X509_set_notBefore = 'X509_set_notBefore';
  fn_X509_set_notAfter = 'X509_set_notAfter';
  fn_X509_set_pubkey = 'X509_set_pubkey';
  fn_X509_get_pubkey = 'X509_get_pubkey';
  fn_X509_certificate_type = 'X509_certificate_type';
  fn_X509_REQ_set_version = 'X509_REQ_set_version';
  fn_X509_REQ_set_subject_name = 'X509_REQ_set_subject_name';
  fn_X509_REQ_set_pubkey = 'X509_REQ_set_pubkey';
  fn_X509_REQ_get_pubkey = 'X509_REQ_get_pubkey';
  fn_X509_check_private_key = 'X509_check_private_key';
  fn_X509_issuer_and_serial_cmp = 'X509_issuer_and_serial_cmp';
  fn_X509_issuer_and_serial_hash = 'X509_issuer_and_serial_hash';
  fn_X509_issuer_name_cmp = 'X509_issuer_name_cmp';
  fn_X509_issuer_name_hash = 'X509_issuer_name_hash';
  fn_X509_subject_name_cmp = 'X509_subject_name_cmp';
  fn_X509_subject_name_hash = 'X509_subject_name_hash';
  fn_X509_NAME_cmp = 'X509_NAME_cmp';
  fn_X509_NAME_hash = 'X509_NAME_hash';
  fn_X509_CRL_cmp = 'X509_CRL_cmp';
  fn_X509_print_fp = 'X509_print_fp';
  fn_X509_CRL_print_fp = 'X509_CRL_print_fp';
  fn_X509_REQ_print_fp = 'X509_REQ_print_fp';
  fn_X509_NAME_print = 'X509_NAME_print';
  fn_X509_print = 'X509_print';
  fn_X509_CRL_print = 'X509_CRL_print';
  fn_X509_REQ_print = 'X509_REQ_print';
  fn_X509_NAME_entry_count = 'X509_NAME_entry_count';
  fn_X509_NAME_get_text_by_NID = 'X509_NAME_get_text_by_NID';
  fn_X509_NAME_get_text_by_OBJ = 'X509_NAME_get_text_by_OBJ';
  fn_X509_NAME_get_index_by_NID = 'X509_NAME_get_index_by_NID';
  fn_X509_NAME_get_index_by_OBJ = 'X509_NAME_get_index_by_OBJ';
  fn_X509_NAME_get_entry = 'X509_NAME_get_entry';
  fn_X509_NAME_delete_entry = 'X509_NAME_delete_entry';
  fn_X509_NAME_add_entry = 'X509_NAME_add_entry';
  fn_X509_NAME_ENTRY_create_by_NID = 'X509_NAME_ENTRY_create_by_NID';
  fn_X509_NAME_ENTRY_create_by_OBJ = 'X509_NAME_ENTRY_create_by_OBJ';
  fn_X509_NAME_ENTRY_set_object = 'X509_NAME_ENTRY_set_object';
  fn_X509_NAME_ENTRY_set_data = 'X509_NAME_ENTRY_set_data';
  fn_X509_NAME_ENTRY_get_object = 'X509_NAME_ENTRY_get_object';
  fn_X509_NAME_ENTRY_get_data = 'X509_NAME_ENTRY_get_data';
  fn_X509v3_get_ext_count = 'X509v3_get_ext_count';
  fn_X509v3_get_ext_by_NID = 'X509v3_get_ext_by_NID';
  fn_X509v3_get_ext_by_OBJ = 'X509v3_get_ext_by_OBJ';
  fn_X509v3_get_ext_by_critical = 'X509v3_get_ext_by_critical';
  fn_X509v3_get_ext = 'X509v3_get_ext';
  fn_X509v3_delete_ext = 'X509v3_delete_ext';
  fn_X509v3_add_ext = 'X509v3_add_ext';
  fn_X509_get_ext_count = 'X509_get_ext_count';
  fn_X509_get_ext_by_NID = 'X509_get_ext_by_NID';
  fn_X509_get_ext_by_OBJ = 'X509_get_ext_by_OBJ';
  fn_X509_get_ext_by_critical = 'X509_get_ext_by_critical';
  fn_X509_get_ext = 'X509_get_ext';
  fn_X509_delete_ext = 'X509_delete_ext';
  fn_X509_add_ext = 'X509_add_ext';
  fn_X509_CRL_get_ext_count = 'X509_CRL_get_ext_count';
  fn_X509_CRL_get_ext_by_NID = 'X509_CRL_get_ext_by_NID';
  fn_X509_CRL_get_ext_by_OBJ = 'X509_CRL_get_ext_by_OBJ';
  fn_X509_CRL_get_ext_by_critical = 'X509_CRL_get_ext_by_critical';
  fn_X509_CRL_get_ext = 'X509_CRL_get_ext';
  fn_X509_CRL_delete_ext = 'X509_CRL_delete_ext';
  fn_X509_CRL_add_ext = 'X509_CRL_add_ext';
  fn_X509_REVOKED_get_ext_count = 'X509_REVOKED_get_ext_count';
  fn_X509_REVOKED_get_ext_by_NID = 'X509_REVOKED_get_ext_by_NID';
  fn_X509_REVOKED_get_ext_by_OBJ = 'X509_REVOKED_get_ext_by_OBJ';
  fn_X509_REVOKED_get_ext_by_critical = 'X509_REVOKED_get_ext_by_critical';
  fn_X509_REVOKED_get_ext = 'X509_REVOKED_get_ext';
  fn_X509_REVOKED_delete_ext = 'X509_REVOKED_delete_ext';
  fn_X509_REVOKED_add_ext = 'X509_REVOKED_add_ext';
  fn_X509_EXTENSION_create_by_NID = 'X509_EXTENSION_create_by_NID';
  fn_X509_EXTENSION_create_by_OBJ = 'X509_EXTENSION_create_by_OBJ';
  fn_X509_EXTENSION_set_object = 'X509_EXTENSION_set_object';
  fn_X509_EXTENSION_set_critical = 'X509_EXTENSION_set_critical';
  fn_X509_EXTENSION_set_data = 'X509_EXTENSION_set_data';
  fn_X509_EXTENSION_get_object = 'X509_EXTENSION_get_object';
  fn_X509_EXTENSION_get_data = 'X509_EXTENSION_get_data';
  fn_X509_EXTENSION_get_critical = 'X509_EXTENSION_get_critical';
  fn_X509_verify_cert = 'X509_verify_cert';
  fn_X509_find_by_issuer_and_serial = 'X509_find_by_issuer_and_serial';
  fn_X509_find_by_subject = 'X509_find_by_subject';
  fn_i2d_PBEPARAM = 'i2d_PBEPARAM';
  fn_PBEPARAM_new = 'PBEPARAM_new';
  fn_d2i_PBEPARAM = 'd2i_PBEPARAM';
  fn_PBEPARAM_free = 'PBEPARAM_free';
  fn_PKCS5_pbe_set = 'PKCS5_pbe_set';
  fn_PKCS5_pbe2_set = 'PKCS5_pbe2_set';
  fn_i2d_PBKDF2PARAM = 'i2d_PBKDF2PARAM';
  fn_PBKDF2PARAM_new = 'PBKDF2PARAM_new';
  fn_d2i_PBKDF2PARAM = 'd2i_PBKDF2PARAM';
  fn_PBKDF2PARAM_free = 'PBKDF2PARAM_free';
  fn_i2d_PBE2PARAM = 'i2d_PBE2PARAM';
  fn_PBE2PARAM_new = 'PBE2PARAM_new';
  fn_d2i_PBE2PARAM = 'd2i_PBE2PARAM';
  fn_PBE2PARAM_free = 'PBE2PARAM_free';
  fn_i2d_PKCS8_PRIV_KEY_INFO = 'i2d_PKCS8_PRIV_KEY_INFO';
  fn_PKCS8_PRIV_KEY_INFO_new = 'PKCS8_PRIV_KEY_INFO_new';
  fn_d2i_PKCS8_PRIV_KEY_INFO = 'd2i_PKCS8_PRIV_KEY_INFO';
  fn_PKCS8_PRIV_KEY_INFO_free = 'PKCS8_PRIV_KEY_INFO_free';
  fn_EVP_PKCS82PKEY = 'EVP_PKCS82PKEY';
  fn_EVP_PKEY2PKCS8 = 'EVP_PKEY2PKCS8';
  fn_PKCS8_set_broken = 'PKCS8_set_broken';
  fn_ERR_load_PEM_strings = 'ERR_load_PEM_strings';
  fn_PEM_get_EVP_CIPHER_INFO = 'PEM_get_EVP_CIPHER_INFO';
  fn_PEM_do_header = 'PEM_do_header';
  fn_PEM_read_bio = 'PEM_read_bio';
  fn_PEM_write_bio = 'PEM_write_bio';
  fn_PEM_ASN1_read_bio = 'PEM_ASN1_read_bio';
  fn_PEM_ASN1_write_bio = 'PEM_ASN1_write_bio';
  fn_PEM_X509_INFO_read_bio = 'PEM_X509_INFO_read_bio';
  fn_PEM_X509_INFO_write_bio = 'PEM_X509_INFO_write_bio';
  fn_PEM_read = 'PEM_read';
  fn_PEM_write = 'PEM_write';
  fn_PEM_ASN1_read = 'PEM_ASN1_read';
  fn_PEM_ASN1_write = 'PEM_ASN1_write';
  fn_PEM_X509_INFO_read = 'PEM_X509_INFO_read';
  fn_PEM_SealInit = 'PEM_SealInit';
  fn_PEM_SealUpdate = 'PEM_SealUpdate';
  fn_PEM_SealFinal = 'PEM_SealFinal';
  fn_PEM_SignInit = 'PEM_SignInit';
  fn_PEM_SignUpdate = 'PEM_SignUpdate';
  fn_PEM_SignFinal = 'PEM_SignFinal';
  fn_PEM_proc_type = 'PEM_proc_type';
  fn_PEM_dek_info = 'PEM_dek_info';
  fn_PEM_read_bio_X509 = 'PEM_read_bio_X509';
  fn_PEM_read_X509 = 'PEM_read_X509';
  fn_PEM_write_bio_X509 = 'PEM_write_bio_X509';
  fn_PEM_write_X509 = 'PEM_write_X509';
  fn_PEM_read_bio_X509_REQ = 'PEM_read_bio_X509_REQ';
  fn_PEM_read_X509_REQ = 'PEM_read_X509_REQ';
  fn_PEM_write_bio_X509_REQ = 'PEM_write_bio_X509_REQ';
  fn_PEM_write_X509_REQ = 'PEM_write_X509_REQ';
  fn_PEM_read_bio_X509_CRL = 'PEM_read_bio_X509_CRL';
  fn_PEM_read_X509_CRL = 'PEM_read_X509_CRL';
  fn_PEM_write_bio_X509_CRL = 'PEM_write_bio_X509_CRL';
  fn_PEM_write_X509_CRL = 'PEM_write_X509_CRL';
  fn_PEM_read_bio_PKCS7 = 'PEM_read_bio_PKCS7';
  fn_PEM_read_PKCS7 = 'PEM_read_PKCS7';
  fn_PEM_write_bio_PKCS7 = 'PEM_write_bio_PKCS7';
  fn_PEM_write_PKCS7 = 'PEM_write_PKCS7';
  fn_PEM_read_bio_NETSCAPE_CERT_SEQUENCE =
    'PEM_read_bio_NETSCAPE_CERT_SEQUENCE';
  fn_PEM_read_NETSCAPE_CERT_SEQUENCE = 'PEM_read_NETSCAPE_CERT_SEQUENCE';
  fn_PEM_write_bio_NETSCAPE_CERT_SEQUENCE =
    'PEM_write_bio_NETSCAPE_CERT_SEQUENCE';
  fn_PEM_write_NETSCAPE_CERT_SEQUENCE = 'PEM_write_NETSCAPE_CERT_SEQUENCE';
  fn_PEM_read_bio_PKCS8 = 'PEM_read_bio_PKCS8';
  fn_PEM_read_PKCS8 = 'PEM_read_PKCS8';
  fn_PEM_write_bio_PKCS8 = 'PEM_write_bio_PKCS8';
  fn_PEM_write_PKCS8 = 'PEM_write_PKCS8';
  fn_PEM_read_bio_PKCS8_PRIV_KEY_INFO = 'PEM_read_bio_PKCS8_PRIV_KEY_INFO';
  fn_PEM_read_PKCS8_PRIV_KEY_INFO = 'PEM_read_PKCS8_PRIV_KEY_INFO';
  fn_PEM_write_bio_PKCS8_PRIV_KEY_INFO = 'PEM_write_bio_PKCS8_PRIV_KEY_INFO';
  fn_PEM_write_PKCS8_PRIV_KEY_INFO = 'PEM_write_PKCS8_PRIV_KEY_INFO';
  fn_PEM_read_bio_RSAPrivateKey = 'PEM_read_bio_RSAPrivateKey';
  fn_PEM_read_RSAPrivateKey = 'PEM_read_RSAPrivateKey';
  fn_PEM_write_bio_RSAPrivateKey = 'PEM_write_bio_RSAPrivateKey';
  fn_PEM_write_RSAPrivateKey = 'PEM_write_RSAPrivateKey';
  fn_PEM_read_bio_RSAPublicKey = 'PEM_read_bio_RSAPublicKey';
  fn_PEM_read_RSAPublicKey = 'PEM_read_RSAPublicKey';
  fn_PEM_write_bio_RSAPublicKey = 'PEM_write_bio_RSAPublicKey';
  fn_PEM_write_RSAPublicKey = 'PEM_write_RSAPublicKey';
  fn_PEM_read_bio_DSAPrivateKey = 'PEM_read_bio_DSAPrivateKey';
  fn_PEM_read_DSAPrivateKey = 'PEM_read_DSAPrivateKey';
  fn_PEM_write_bio_DSAPrivateKey = 'PEM_write_bio_DSAPrivateKey';
  fn_PEM_write_DSAPrivateKey = 'PEM_write_DSAPrivateKey';
  fn_PEM_read_bio_DSAparams = 'PEM_read_bio_DSAparams';
  fn_PEM_read_DSAparams = 'PEM_read_DSAparams';
  fn_PEM_write_bio_DSAparams = 'PEM_write_bio_DSAparams';
  fn_PEM_write_DSAparams = 'PEM_write_DSAparams';
  fn_PEM_read_bio_DHparams = 'PEM_read_bio_DHparams';
  fn_PEM_read_DHparams = 'PEM_read_DHparams';
  fn_PEM_write_bio_DHparams = 'PEM_write_bio_DHparams';
  fn_PEM_write_DHparams = 'PEM_write_DHparams';
  fn_PEM_read_bio_PrivateKey = 'PEM_read_bio_PrivateKey';
  fn_PEM_read_PrivateKey = 'PEM_read_PrivateKey';
  fn_PEM_write_bio_PrivateKey = 'PEM_write_bio_PrivateKey';
  fn_PEM_write_PrivateKey = 'PEM_write_PrivateKey';
  fn_PEM_write_bio_PKCS8PrivateKey = 'PEM_write_bio_PKCS8PrivateKey';
  fn_PEM_write_PKCS8PrivateKey = 'PEM_write_PKCS8PrivateKey';
  fn_sk_SSL_CIPHER_new = 'sk_SSL_CIPHER_new';
  fn_sk_SSL_CIPHER_new_null = 'sk_SSL_CIPHER_new_null';
  fn_sk_SSL_CIPHER_free = 'sk_SSL_CIPHER_free';
  fn_sk_SSL_CIPHER_num = 'sk_SSL_CIPHER_num';
  fn_sk_SSL_CIPHER_value = 'sk_SSL_CIPHER_value';
  fn_sk_SSL_CIPHER_set = 'sk_SSL_CIPHER_set';
  fn_sk_SSL_CIPHER_zero = 'sk_SSL_CIPHER_zero';
  fn_sk_SSL_CIPHER_push = 'sk_SSL_CIPHER_push';
  fn_sk_SSL_CIPHER_unshift = 'sk_SSL_CIPHER_unshift';
  fn_sk_SSL_CIPHER_find = 'sk_SSL_CIPHER_find';
  fn_sk_SSL_CIPHER_delete = 'sk_SSL_CIPHER_delete';
  fn_sk_SSL_CIPHER_delete_ptr = 'sk_SSL_CIPHER_delete_ptr';
  fn_sk_SSL_CIPHER_insert = 'sk_SSL_CIPHER_insert';
  fn_sk_SSL_CIPHER_dup = 'sk_SSL_CIPHER_dup';
  fn_sk_SSL_CIPHER_pop_free = 'sk_SSL_CIPHER_pop_free';
  fn_sk_SSL_CIPHER_shift = 'sk_SSL_CIPHER_shift';
  fn_sk_SSL_CIPHER_pop = 'sk_SSL_CIPHER_pop';
  fn_sk_SSL_CIPHER_sort = 'sk_SSL_CIPHER_sort';
  fn_sk_SSL_COMP_new = 'sk_SSL_COMP_new';
  fn_sk_SSL_COMP_new_null = 'sk_SSL_COMP_new_null';
  fn_sk_SSL_COMP_free = 'sk_SSL_COMP_free';
  fn_sk_SSL_COMP_num = 'sk_SSL_COMP_num';
  fn_sk_SSL_COMP_value = 'sk_SSL_COMP_value';
  fn_sk_SSL_COMP_set = 'sk_SSL_COMP_set';
  fn_sk_SSL_COMP_zero = 'sk_SSL_COMP_zero';
  fn_sk_SSL_COMP_push = 'sk_SSL_COMP_push';
  fn_sk_SSL_COMP_unshift = 'sk_SSL_COMP_unshift';
  fn_sk_SSL_COMP_find = 'sk_SSL_COMP_find';
  fn_sk_SSL_COMP_delete = 'sk_SSL_COMP_delete';
  fn_sk_SSL_COMP_delete_ptr = 'sk_SSL_COMP_delete_ptr';
  fn_sk_SSL_COMP_insert = 'sk_SSL_COMP_insert';
  fn_sk_SSL_COMP_dup = 'sk_SSL_COMP_dup';
  fn_sk_SSL_COMP_pop_free = 'sk_SSL_COMP_pop_free';
  fn_sk_SSL_COMP_shift = 'sk_SSL_COMP_shift';
  fn_sk_SSL_COMP_pop = 'sk_SSL_COMP_pop';
  fn_sk_SSL_COMP_sort = 'sk_SSL_COMP_sort';
  fn_BIO_f_ssl = 'BIO_f_ssl';
  fn_BIO_new_ssl = 'BIO_new_ssl';
  fn_BIO_new_ssl_connect = 'BIO_new_ssl_connect';
  fn_BIO_new_buffer_ssl_connect = 'BIO_new_buffer_ssl_connect';
  fn_BIO_ssl_copy_session_id = 'BIO_ssl_copy_session_id';
  fn_BIO_ssl_shutdown = 'BIO_ssl_shutdown';
  fn_SSL_CTX_set_cipher_list = 'SSL_CTX_set_cipher_list';
  fn_SSL_CTX_new = 'SSL_CTX_new';
  fn_SSL_CTX_free = 'SSL_CTX_free';
  fn_SSL_CTX_set_timeout = 'SSL_CTX_set_timeout';
  fn_SSL_CTX_get_timeout = 'SSL_CTX_get_timeout';
  fn_SSL_CTX_get_cert_store = 'SSL_CTX_get_cert_store';
  fn_SSL_CTX_set_cert_store = 'SSL_CTX_set_cert_store';
  fn_SSL_want = 'SSL_want';
  fn_SSL_clear = 'SSL_clear';
  fn_SSL_CTX_flush_sessions = 'SSL_CTX_flush_sessions';
  fn_SSL_get_current_cipher = 'SSL_get_current_cipher';
  fn_SSL_CIPHER_get_bits = 'SSL_CIPHER_get_bits';
  fn_SSL_CIPHER_get_version = 'SSL_CIPHER_get_version';
  fn_SSL_CIPHER_get_name = 'SSL_CIPHER_get_name';
  fn_SSL_get_fd = 'SSL_get_fd';
  fn_SSL_get_cipher_list = 'SSL_get_cipher_list';
  fn_SSL_get_shared_ciphers = 'SSL_get_shared_ciphers';
  fn_SSL_get_read_ahead = 'SSL_get_read_ahead';
  fn_SSL_pending = 'SSL_pending';
  fn_SSL_set_fd = 'SSL_set_fd';
  fn_SSL_set_rfd = 'SSL_set_rfd';
  fn_SSL_set_wfd = 'SSL_set_wfd';
  fn_SSL_set_bio = 'SSL_set_bio';
  fn_SSL_get_rbio = 'SSL_get_rbio';
  fn_SSL_get_wbio = 'SSL_get_wbio';
  fn_SSL_set_cipher_list = 'SSL_set_cipher_list';
  fn_SSL_set_read_ahead = 'SSL_set_read_ahead';
  fn_SSL_get_verify_mode = 'SSL_get_verify_mode';
  fn_SSL_get_verify_depth = 'SSL_get_verify_depth';
  fn_SSL_set_verify = 'SSL_set_verify';
  fn_SSL_set_verify_depth = 'SSL_set_verify_depth';
  fn_SSL_use_RSAPrivateKey = 'SSL_use_RSAPrivateKey';
  fn_SSL_use_RSAPrivateKey_ASN1 = 'SSL_use_RSAPrivateKey_ASN1';
  fn_SSL_use_PrivateKey = 'SSL_use_PrivateKey';
  fn_SSL_use_PrivateKey_ASN1 = 'SSL_use_PrivateKey_ASN1';
  fn_SSL_use_certificate = 'SSL_use_certificate';
  fn_SSL_use_certificate_ASN1 = 'SSL_use_certificate_ASN1';
  fn_SSL_use_RSAPrivateKey_file = 'SSL_use_RSAPrivateKey_file';
  fn_SSL_use_PrivateKey_file = 'SSL_use_PrivateKey_file';
  fn_SSL_use_certificate_file = 'SSL_use_certificate_file';
  fn_SSL_CTX_use_RSAPrivateKey_file = 'SSL_CTX_use_RSAPrivateKey_file';
  fn_SSL_CTX_use_PrivateKey_file = 'SSL_CTX_use_PrivateKey_file';
  fn_SSL_CTX_use_certificate_file = 'SSL_CTX_use_certificate_file';
  fn_SSL_CTX_use_certificate_chain_file = 'SSL_CTX_use_certificate_chain_file';
  fn_SSL_load_client_CA_file = 'SSL_load_client_CA_file';
  fn_SSL_add_file_cert_subjects_to_stack =
    'SSL_add_file_cert_subjects_to_stack';
  fn_ERR_load_SSL_strings = 'ERR_load_SSL_strings';
  fn_SSL_load_error_strings = 'SSL_load_error_strings';
  fn_SSL_state_string = 'SSL_state_string';
  fn_SSL_rstate_string = 'SSL_rstate_string';
  fn_SSL_state_string_long = 'SSL_state_string_long';
  fn_SSL_rstate_string_long = 'SSL_rstate_string_long';
  fn_SSL_SESSION_get_time = 'SSL_SESSION_get_time';
  fn_SSL_SESSION_set_time = 'SSL_SESSION_set_time';
  fn_SSL_SESSION_get_timeout = 'SSL_SESSION_get_timeout';
  fn_SSL_SESSION_set_timeout = 'SSL_SESSION_set_timeout';
  fn_SSL_copy_session_id = 'SSL_copy_session_id';
  fn_SSL_SESSION_new = 'SSL_SESSION_new';
  fn_SSL_SESSION_hash = 'SSL_SESSION_hash';
  fn_SSL_SESSION_cmp = 'SSL_SESSION_cmp';
  fn_SSL_SESSION_print_fp = 'SSL_SESSION_print_fp';
  fn_SSL_SESSION_print = 'SSL_SESSION_print';
  fn_SSL_SESSION_free = 'SSL_SESSION_free';
  fn_i2d_SSL_SESSION = 'i2d_SSL_SESSION';
  fn_SSL_set_session = 'SSL_set_session';
  fn_SSL_CTX_add_session = 'SSL_CTX_add_session';
  fn_SSL_CTX_remove_session = 'SSL_CTX_remove_session';
  fn_d2i_SSL_SESSION = 'd2i_SSL_SESSION';
  fn_SSL_get_peer_certificate = 'SSL_get_peer_certificate';
  fn_SSL_get_peer_cert_chain = 'SSL_get_peer_cert_chain';
  fn_SSL_CTX_get_verify_mode = 'SSL_CTX_get_verify_mode';
  fn_SSL_CTX_get_verify_depth = 'SSL_CTX_get_verify_depth';
  fn_SSL_CTX_set_verify = 'SSL_CTX_set_verify';
  fn_SSL_CTX_set_verify_depth = 'SSL_CTX_set_verify_depth';
  fn_SSL_CTX_set_cert_verify_callback = 'SSL_CTX_set_cert_verify_callback';
  fn_SSL_CTX_use_RSAPrivateKey = 'SSL_CTX_use_RSAPrivateKey';
  fn_SSL_CTX_use_RSAPrivateKey_ASN1 = 'SSL_CTX_use_RSAPrivateKey_ASN1';
  fn_SSL_CTX_use_PrivateKey = 'SSL_CTX_use_PrivateKey';
  fn_SSL_CTX_use_PrivateKey_ASN1 = 'SSL_CTX_use_PrivateKey_ASN1';
  fn_SSL_CTX_use_certificate = 'SSL_CTX_use_certificate';
  fn_SSL_CTX_use_certificate_ASN1 = 'SSL_CTX_use_certificate_ASN1';
  fn_SSL_CTX_set_default_passwd_cb = 'SSL_CTX_set_default_passwd_cb';
  fn_SSL_CTX_set_default_passwd_cb_userdata =
    'SSL_CTX_set_default_passwd_cb_userdata';

  fn_SSL_CTX_check_private_key = 'SSL_CTX_check_private_key';
  fn_SSL_check_private_key = 'SSL_check_private_key';
  fn_SSL_CTX_set_session_id_context = 'SSL_CTX_set_session_id_context';
  fn_SSL_new = 'SSL_new';
  fn_SSL_set_session_id_context = 'SSL_set_session_id_context';
  fn_SSL_free = 'SSL_free';
  fn_SSL_accept = 'SSL_accept';
  fn_SSL_connect = 'SSL_connect';
  fn_SSL_read = 'SSL_read';
  fn_SSL_peek = 'SSL_peek';
  fn_SSL_write = 'SSL_write';
  fn_SSL_ctrl = 'SSL_ctrl';
  fn_SSL_CTX_ctrl = 'SSL_CTX_ctrl';
  fn_SSL_get_error = 'SSL_get_error';
  fn_SSL_get_version = 'SSL_get_version';
  fn_SSL_CTX_set_ssl_version = 'SSL_CTX_set_ssl_version';
  fn_SSLv2_method = 'SSLv2_method';
  fn_SSLv2_server_method = 'SSLv2_server_method';
  fn_SSLv2_client_method = 'SSLv2_client_method';
  fn_SSLv3_method = 'SSLv3_method';
  fn_SSLv3_server_method = 'SSLv3_server_method';
  fn_SSLv3_client_method = 'SSLv3_client_method';
  fn_SSLv23_method = 'SSLv23_method';
  fn_SSLv23_server_method = 'SSLv23_server_method';
  fn_SSLv23_client_method = 'SSLv23_client_method';
  fn_TLSv1_method = 'TLSv1_method';
  fn_TLSv1_server_method = 'TLSv1_server_method';
  fn_TLSv1_client_method = 'TLSv1_client_method';
  fn_SSL_get_ciphers = 'SSL_get_ciphers';
  fn_SSL_do_handshake = 'SSL_do_handshake';
  fn_SSL_renegotiate = 'SSL_renegotiate';
  fn_SSL_shutdown = 'SSL_shutdown';
  fn_SSL_get_ssl_method = 'SSL_get_ssl_method';
  fn_SSL_set_ssl_method = 'SSL_set_ssl_method';
  fn_SSL_alert_type_string_long = 'SSL_alert_type_string_long';
  fn_SSL_alert_type_string = 'SSL_alert_type_string';
  fn_SSL_alert_desc_string_long = 'SSL_alert_desc_string_long';
  fn_SSL_alert_desc_string = 'SSL_alert_desc_string';
  fn_SSL_set_client_CA_list = 'SSL_set_client_CA_list';
  fn_SSL_CTX_set_client_CA_list = 'SSL_CTX_set_client_CA_list';
  fn_SSL_get_client_CA_list = 'SSL_get_client_CA_list';
  fn_SSL_CTX_get_client_CA_list = 'SSL_CTX_get_client_CA_list';
  fn_SSL_add_client_CA = 'SSL_add_client_CA';
  fn_SSL_CTX_add_client_CA = 'SSL_CTX_add_client_CA';
  fn_SSL_set_connect_state = 'SSL_set_connect_state';
  fn_SSL_set_accept_state = 'SSL_set_accept_state';
  fn_SSL_get_default_timeout = 'SSL_get_default_timeout';
  fn_SSL_library_init = 'SSL_library_init';
  fn_SSL_CIPHER_description = 'SSL_CIPHER_description';
  fn_SSL_dup_CA_list = 'SSL_dup_CA_list';
  fn_SSL_dup = 'SSL_dup';
  fn_SSL_get_certificate = 'SSL_get_certificate';
  fn_SSL_get_privatekey = 'SSL_get_privatekey';
  fn_SSL_CTX_set_quiet_shutdown = 'SSL_CTX_set_quiet_shutdown';
  fn_SSL_CTX_get_quiet_shutdown = 'SSL_CTX_get_quiet_shutdown';
  fn_SSL_set_quiet_shutdown = 'SSL_set_quiet_shutdown';
  fn_SSL_get_quiet_shutdown = 'SSL_get_quiet_shutdown';
  fn_SSL_set_shutdown = 'SSL_set_shutdown';
  fn_SSL_get_shutdown = 'SSL_get_shutdown';
  fn_SSL_version = 'SSL_version';
  fn_SSL_CTX_set_default_verify_paths = 'SSL_CTX_set_default_verify_paths';
  fn_SSL_CTX_load_verify_locations = 'SSL_CTX_load_verify_locations';
  fn_SSL_get_session = 'SSL_get_session';
  fn_SSL_get_SSL_CTX = 'SSL_get_SSL_CTX';
  fn_SSL_set_info_callback = 'SSL_set_info_callback';
  fn_SSL_state = 'SSL_state';
  fn_SSL_set_verify_result = 'SSL_set_verify_result';
  fn_SSL_get_verify_result = 'SSL_get_verify_result';
  fn_SSL_set_ex_data = 'SSL_set_ex_data';
  fn_SSL_get_ex_data = 'SSL_get_ex_data';
  fn_SSL_get_ex_new_index = 'SSL_get_ex_new_index';
  fn_SSL_SESSION_set_ex_data = 'SSL_SESSION_set_ex_data';
  fn_SSL_SESSION_get_ex_data = 'SSL_SESSION_get_ex_data';
  fn_SSL_SESSION_get_ex_new_index = 'SSL_SESSION_get_ex_new_index';
  fn_SSL_CTX_set_ex_data = 'SSL_CTX_set_ex_data';
  fn_SSL_CTX_get_ex_data = 'SSL_CTX_get_ex_data';
  fn_SSL_CTX_get_ex_new_index = 'SSL_CTX_get_ex_new_index';
  fn_SSL_get_ex_data_X509_STORE_CTX_idx = 'SSL_get_ex_data_X509_STORE_CTX_idx';
  fn_SSL_CTX_set_tmp_rsa_callback = 'SSL_CTX_set_tmp_rsa_callback';
  fn_SSL_set_tmp_rsa_callback = 'SSL_set_tmp_rsa_callback';
  fn_SSL_CTX_set_tmp_dh_callback = 'SSL_CTX_set_tmp_dh_callback';
  fn_SSL_set_tmp_dh_callback = 'SSL_set_tmp_dh_callback';
  fn_SSL_COMP_add_compression_method = 'SSL_COMP_add_compression_method';
  fn_SSLeay_add_ssl_algorithms = 'SSL_library_init';

  fn_SSL_set_app_data = 'SSL_set_app_data_indy';
  fn_SSL_get_app_data = 'SSL_get_app_data_indy';
  fn_SSL_CTX_set_info_callback = 'SSL_CTX_set_info_callback_indy';
  fn_X509_STORE_CTX_get_app_data = 'X509_STORE_CTX_get_app_data_indy';
  fn_X509_get_notBefore = 'X509_get_notBefore_indy';
  fn_X509_get_notAfter = 'X509_get_notAfter_indy';
  fn_UCTTimeDecode = 'UCTTimeDecode_indy';
  fn_SSL_SESSION_get_id = 'SSL_SESSION_get_id_indy';
  fn_SSL_SESSION_get_id_ctx = 'SSL_SESSION_get_id_ctx_indy';
  fn_SSL_CTX_get_version = 'SSL_CTX_get_version_indy';
  fn_SSL_CTX_set_options = 'SSL_CTX_set_options_indy';

  fn_SSL_is_init_finished = 'mi_SSL_is_init_finished';
  fn_SSL_in_init = 'mi_SSL_in_init';
  fn_SSL_in_before = 'mi_SSL_in_before';
  fn_SSL_in_connect_init = 'mi_SSL_in_connect_init';
  fn_SSL_in_accept_init = 'mi_SSL_in_accept_init';
  fn_fopen = 'mi_fopen';
  fn_fclose = 'mi_fclose';

  fn_RAND_screen = 'RAND_screen';

function LoadFunction(FceName: string): Pointer;
begin
  FceName := FceName + #0;
  Result := GetProcAddress(hIdSSL, @FceName[1]);
end;

function LoadFunctionCLib(FceName: string): Pointer;
begin
  FceName := FceName + #0;
  Result := GetProcAddress(hIdSSLLib, @FceName[1]);
end;

function Load: Boolean;
begin
  result := True;

  if hIdSSL = 0 then
    hIdSSL := LoadLibrary(SSL_DLL_name)
  else
    Exit;
  if hIdSSLLib = 0 then
    hIdSSLLib := LoadLibrary(SSLCLIB_DLL_name)
  else
    Exit;

  @IdSslCtxSetCipherList := LoadFunction(fn_SSL_CTX_set_cipher_list);
  @IdSslCtxNew := LoadFunction(fn_SSL_CTX_new);
  @IdSslCtxFree := LoadFunction(fn_SSL_CTX_free);
  @IdSslSetFd := LoadFunction(fn_SSL_set_fd);
  @IdSslCtxUsePrivateKeyFile := LoadFunction(fn_SSL_CTX_use_PrivateKey_file);
  @IdSslCtxUseCertificateFile := LoadFunction(fn_SSL_CTX_use_certificate_file);
  @IdSslLoadErrorStrings := LoadFunction(fn_SSL_load_error_strings);
  @IdSslStateStringLong := LoadFunction(fn_SSL_state_string_long);
  @IdSslGetPeerCertificate := LoadFunction(fn_SSL_get_peer_certificate);
  @IdSslCtxSetVerify := LoadFunction(fn_SSL_CTX_set_verify);
  @IdSslCtxSetDefaultPasswdCb := LoadFunction(fn_SSL_CTX_set_default_passwd_cb);
  @IdSslCtxSetDefaultPasswdCbUserdata :=
    LoadFunction(fn_SSL_CTX_set_default_passwd_cb_userdata);
  @IdSslCtxCheckPrivateKeyFile := LoadFunction(fn_SSL_CTX_check_private_key);
  @IdSslNew := LoadFunction(fn_SSL_new);
  @IdSslFree := LoadFunction(fn_SSL_free);
  @IdSslAccept := LoadFunction(fn_SSL_accept);
  @IdSslConnect := LoadFunction(fn_SSL_connect);
  @IdSslRead := LoadFunction(fn_SSL_read);
  @IdSslPeek := LoadFunction(fn_SSL_peek);
  @IdSslWrite := LoadFunction(fn_SSL_write);
  @IdSslGetError := LoadFunction(fn_SSL_get_error);
  @IdSslMethodV2 := LoadFunction(fn_SSLv2_method);
  @IdSslMethodServerV2 := LoadFunction(fn_SSLv2_server_method);
  @IdSslMethodClientV2 := LoadFunction(fn_SSLv2_client_method);
  @IdSslMethodV3 := LoadFunction(fn_SSLv3_method);
  @IdSslMethodServerV3 := LoadFunction(fn_SSLv3_server_method);
  @IdSslMethodClientV3 := LoadFunction(fn_SSLv3_client_method);
  @IdSslMethodV23 := LoadFunction(fn_SSLv23_method);
  @IdSslMethodServerV23 := LoadFunction(fn_SSLv23_server_method);
  @IdSslMethodClientV23 := LoadFunction(fn_SSLv23_client_method);
  @IdSslMethodTLSV1 := LoadFunction(fn_TLSv1_method);
  @IdSslMethodServerTLSV1 := LoadFunction(fn_TLSv1_server_method);
  @IdSslMethodClientTLSV1 := LoadFunction(fn_TLSv1_client_method);
  @IdSslShutdown := LoadFunction(fn_SSL_shutdown);
  @IdSslSetConnectState := LoadFunction(fn_SSL_set_connect_state);
  @IdSslSetAcceptState := LoadFunction(fn_SSL_set_accept_state);
  @IdSslSetShutdown := LoadFunction(fn_SSL_set_shutdown);
  @IdSslCtxLoadVerifyLocations :=
    LoadFunction(fn_SSL_CTX_load_verify_locations);
  @IdSslGetSession := LoadFunction(fn_SSL_get_session);
  @IdSslAddSslAlgorithms := LoadFunction(fn_SSLeay_add_ssl_algorithms);
  @IdSslSetAppData := LoadFunction(fn_SSL_set_app_data);
  @IdSslGetAppData := LoadFunction(fn_SSL_get_app_data);
  @IdSslCtxSetInfoCallback := LoadFunction(fn_SSL_CTX_set_info_callback);
  @IdSslX509StoreCtxGetAppData := LoadFunction(fn_X509_STORE_CTX_get_app_data);
  @IdSslUCTTimeDecode := LoadFunction(fn_UCTTimeDecode);
  @IdSslSessionGetId := LoadFunction(fn_SSL_SESSION_get_id);
  @IdSslSessionGetIdCtx := LoadFunction(fn_SSL_SESSION_get_id_ctx);
  @IdSslCtxGetVersion := LoadFunction(fn_SSL_CTX_get_version);
  @IdSslCtxSetOptions := LoadFunction(fn_SSL_CTX_set_options);
  @IdSslX509NameOneline := LoadFunctionCLib(fn_X509_NAME_oneline);
  @IdSslX509NameHash := LoadFunction(fn_X509_NAME_hash);
  @IdSslX509SetIssuerName := LoadFunctionCLib(fn_X509_set_issuer_name);
  @IdSslX509GetIssuerName := LoadFunctionCLib(fn_X509_get_issuer_name);
  @IdSslX509SetSubjectName := LoadFunctionCLib(fn_X509_set_subject_name);
  @IdSslX509GetSubjectName := LoadFunctionCLib(fn_X509_get_subject_name);
  @IdSslX509Digest := LoadFunction(fn_X509_digest);
  @IdSslEvpMd5 := LoadFunction(fn_EVP_md5);
  @IdSslX509GetNotBefore := LoadFunction(fn_X509_get_notBefore);
  @IdSslX509GetNotAfter := LoadFunction(fn_X509_get_notAfter);
  @IdSslX509StoreCtxGetError := LoadFunctionCLib(fn_X509_STORE_CTX_get_error);
  @IdSslX509StoreCtxSetError := LoadFunctionCLib(fn_X509_STORE_CTX_set_error);
  @IdSslX509StoreCtxGetErrorDepth :=
    LoadFunctionCLib(fn_X509_STORE_CTX_get_error_depth);
  @IdSslX509StoreCtxGetCurrentCert :=
    LoadFunctionCLib(fn_X509_STORE_CTX_get_current_cert);
  @IdSslRandScreen := LoadFunctionCLib(fn_RAND_screen);

  result :=
    (@IdSslCtxSetCipherList <> nil) and
    (@IdSslCtxNew <> nil) and
    (@IdSslCtxFree <> nil) and
    (@IdSslSetFd <> nil) and
    (@IdSslCtxUsePrivateKeyFile <> nil) and
    (@IdSslCtxUseCertificateFile <> nil) and
    (@IdSslLoadErrorStrings <> nil) and
    (@IdSslStateStringLong <> nil) and
    (@IdSslGetPeerCertificate <> nil) and
    (@IdSslCtxSetVerify <> nil) and
    (@IdSslCtxSetDefaultPasswdCb <> nil) and
    (@IdSslCtxSetDefaultPasswdCbUserdata <> nil) and
    (@IdSslCtxCheckPrivateKeyFile <> nil) and
    (@IdSslNew <> nil) and
    (@IdSslFree <> nil) and
    (@IdSslAccept <> nil) and
    (@IdSslConnect <> nil) and
    (@IdSslRead <> nil) and
    (@IdSslPeek <> nil) and
    (@IdSslWrite <> nil) and
    (@IdSslGetError <> nil) and
    (@IdSslMethodV2 <> nil) and
    (@IdSslMethodServerV2 <> nil) and
    (@IdSslMethodClientV2 <> nil) and
    (@IdSslMethodV3 <> nil) and
    (@IdSslMethodServerV3 <> nil) and
    (@IdSslMethodClientV3 <> nil) and
    (@IdSslMethodV23 <> nil) and
    (@IdSslMethodServerV23 <> nil) and
    (@IdSslMethodClientV23 <> nil) and
    (@IdSslMethodTLSV1 <> nil) and
    (@IdSslMethodServerTLSV1 <> nil) and
    (@IdSslMethodClientTLSV1 <> nil) and
    (@IdSslShutdown <> nil) and
    (@IdSslSetConnectState <> nil) and
    (@IdSslSetAcceptState <> nil) and
    (@IdSslSetShutdown <> nil) and
    (@IdSslCtxLoadVerifyLocations <> nil) and
    (@IdSslGetSession <> nil) and
    (@IdSslAddSslAlgorithms <> nil) and
    (@IdSslSetAppData <> nil) and
    (@IdSslGetAppData <> nil) and
    (@IdSslCtxSetInfoCallback <> nil) and
    (@IdSslX509StoreCtxGetAppData <> nil) and
    (@IdSslUCTTimeDecode <> nil) and
    (@IdSslSessionGetId <> nil) and
    (@IdSslSessionGetIdCtx <> nil) and
    (@IdSslCtxGetVersion <> nil) and
    (@IdSslCtxSetOptions <> nil) and

  (@IdSslX509NameOneline <> nil) and
    (@IdSslX509SetIssuerName <> nil) and
    (@IdSslX509GetIssuerName <> nil) and
    (@IdSslX509SetSubjectName <> nil) and
    (@IdSslX509GetSubjectName <> nil) and
    (@IdSslX509GetNotBefore <> nil) and
    (@IdSslX509GetNotAfter <> nil) and
    (@IdSslX509StoreCtxGetError <> nil) and
    (@IdSslX509StoreCtxSetError <> nil) and
    (@IdSslX509StoreCtxGetErrorDepth <> nil) and
    (@IdSslX509StoreCtxGetCurrentCert <> nil) and

  (@IdSslRandScreen <> nil);

end;

procedure Unload;
begin
  if hIdSSL > 0 then FreeLibrary(hIdSSL);
  hIdSSL := 0;
  if hIdSSLLib > 0 then FreeLibrary(hIdSSLLib);
  hIdSSLLib := 0;
end;

function WhichFailedToLoad: string;
begin
  if hIdSSL = 0 then
    result := 'Failed to load ' + SSL_DLL_name + '.'
  else
  begin
    result := '';

    if @IdSslEvpMd5 = nil then result := result + ' ' + fn_EVP_md5;
    if @IdSslX509StoreCtxGetError = nil then
      result := result + ' ' + fn_X509_STORE_CTX_get_error;
    if @IdSslX509StoreCtxSetError = nil then
      result := result + ' ' + fn_X509_STORE_CTX_set_error;
    if @IdSslX509StoreCtxGetErrorDepth = nil then
      result := result + ' ' + fn_X509_STORE_CTX_get_error_depth;
    if @IdSslX509StoreCtxGetCurrentCert = nil then
      result := result + ' ' + fn_X509_STORE_CTX_get_current_cert;

    if @IdSslX509Digest = nil then result := result + ' ' + fn_X509_digest;

    if @IdSslX509NameOneline = nil then
      result := result + ' ' + fn_X509_NAME_oneline;
    if @IdSslX509SetIssuerName = nil then
      result := result + ' ' + fn_X509_set_issuer_name;
    if @IdSslX509GetIssuerName = nil then
      result := result + ' ' + fn_X509_get_issuer_name;
    if @IdSslX509SetSubjectName = nil then
      result := result + ' ' + fn_X509_set_subject_name;
    if @IdSslX509GetSubjectName = nil then
      result := result + ' ' + fn_X509_get_subject_name;
    if @IdSslX509NameHash = nil then result := result + ' ' + fn_X509_NAME_hash;
    if @IdSslCtxSetCipherList = nil then
      result := result + ' ' + fn_SSL_CTX_set_cipher_list;
    if @IdSslCtxNew = nil then result := result + ' ' + fn_SSL_CTX_new;
    if @IdSslCtxFree = nil then result := result + ' ' + fn_SSL_CTX_free;
    if @IdSslSetFd = nil then result := result + ' ' + fn_SSL_set_fd;
    if @IdSslCtxUsePrivateKeyFile = nil then
      result := result + ' ' + fn_SSL_CTX_use_PrivateKey_file;
    if @IdSslCtxUseCertificateFile = nil then
      result := result + ' ' + fn_SSL_CTX_use_certificate_file;
    if @IdSslLoadErrorStrings = nil then
      result := result + ' ' + fn_SSL_load_error_strings;
    if @IdSslStateStringLong = nil then
      result := result + ' ' + fn_SSL_state_string_long;
    if @IdSslGetPeerCertificate = nil then
      result := result + ' ' + fn_SSL_get_peer_certificate;
    if @IdSslCtxSetVerify = nil then
      result := result + ' ' + fn_SSL_CTX_set_verify;
    if @IdSslCtxSetDefaultPasswdCb = nil then
      result := result + ' ' + fn_SSL_CTX_set_default_passwd_cb;
    if @IdSslCtxSetDefaultPasswdCbUserdata = nil then
      result := result + ' ' + fn_SSL_CTX_set_default_passwd_cb_userdata;
    if @IdSslCtxCheckPrivateKeyFile = nil then
      result := result + ' ' + fn_SSL_CTX_check_private_key;
    if @IdSslNew = nil then result := result + ' ' + fn_SSL_new;
    if @IdSslFree = nil then result := result + ' ' + fn_SSL_free;
    if @IdSslAccept = nil then result := result + ' ' + fn_SSL_accept;
    if @IdSslConnect = nil then result := result + ' ' + fn_SSL_connect;
    if @IdSslRead = nil then result := result + ' ' + fn_SSL_read;
    if @IdSslPeek = nil then result := result + ' ' + fn_SSL_peek;
    if @IdSslWrite = nil then result := result + ' ' + fn_SSL_write;
    if @IdSslGetError = nil then result := result + ' ' + fn_SSL_get_error;
    if @IdSslMethodV2 = nil then result := result + ' ' + fn_SSLv2_method;
    if @IdSslMethodServerV2 = nil then
      result := result + ' ' + fn_SSLv2_server_method;
    if @IdSslMethodClientV2 = nil then
      result := result + ' ' + fn_SSLv2_client_method;
    if @IdSslMethodV3 = nil then result := result + ' ' + fn_SSLv3_method;
    if @IdSslMethodServerV3 = nil then
      result := result + ' ' + fn_SSLv3_server_method;
    if @IdSslMethodClientV3 = nil then
      result := result + ' ' + fn_SSLv3_client_method;
    if @IdSslMethodV23 = nil then result := result + ' ' + fn_SSLv23_method;
    if @IdSslMethodServerV23 = nil then
      result := result + ' ' + fn_SSLv23_server_method;
    if @IdSslMethodClientV23 = nil then
      result := result + ' ' + fn_SSLv23_client_method;
    if @IdSslMethodTLSV1 = nil then result := result + ' ' + fn_TLSv1_method;
    if @IdSslMethodServerTLSV1 = nil then
      result := result + ' ' + fn_TLSv1_server_method;
    if @IdSslMethodClientTLSV1 = nil then
      result := result + ' ' + fn_TLSv1_client_method;
    if @IdSslShutdown = nil then result := result + ' ' + fn_SSL_shutdown;
    if @IdSslSetConnectState = nil then
      result := result + ' ' + fn_SSL_set_connect_state;
    if @IdSslSetAcceptState = nil then
      result := result + ' ' + fn_SSL_set_accept_state;
    if @IdSslSetShutdown = nil then
      result := result + ' ' + fn_SSL_set_shutdown;
    if @IdSslCtxLoadVerifyLocations = nil then
      result := result + ' ' + fn_SSL_CTX_load_verify_locations;
    if @IdSslGetSession = nil then result := result + ' ' + fn_SSL_get_session;
    if @IdSslAddSslAlgorithms = nil then
      result := result + ' ' + fn_SSLeay_add_ssl_algorithms;
    if @IdSslSetAppData = nil then result := result + ' ' + fn_SSL_set_app_data;
    if @IdSslGetAppData = nil then result := result + ' ' + fn_SSL_get_app_data;
    if @IdSslCtxSetInfoCallback = nil then
      result := result + ' ' + fn_SSL_CTX_set_info_callback;
    if @IdSslX509StoreCtxGetAppData = nil then
      result := result + ' ' + fn_X509_STORE_CTX_get_app_data;
    if @IdSslX509GetNotBefore = nil then
      result := result + ' ' + fn_X509_get_notBefore;
    if @IdSslX509GetNotAfter = nil then
      result := result + ' ' + fn_X509_get_notAfter;
    if @IdSslUCTTimeDecode = nil then result := result + ' ' + fn_UCTTimeDecode;
    if @IdSslSessionGetId = nil then
      result := result + ' ' + fn_SSL_SESSION_get_id;
    if @IdSslSessionGetIdCtx = nil then
      result := result + ' ' + fn_SSL_SESSION_get_id_ctx;
    if @IdSslCtxGetVersion = nil then
      result := result + ' ' + fn_SSL_CTX_get_version;
    if @IdSslCtxSetOptions = nil then
      result := result + ' ' + fn_SSL_CTX_set_options;

  end;
end;

initialization
finalization
  Unload;
end.
