{
  $Project$
  $Workfile$
  $Revision$
  $DateUTC$
  $Id$

  This file is part of the Indy (Internet Direct) project, and is offered
  under the dual-licensing agreement described on the Indy website.
  (http://www.indyproject.org/)

  Copyright:
   (c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
}
{
  $Log$
}
{
  Rev 1.2    2/6/2004 4:09:56 PM  JPMugaas
  Fixed bug where loading failure was reversed and successful functions that
  were loaded were reported instead of ones that didn't load.  FIxed.

  Rev 1.1    2/6/2004 3:38:34 PM  JPMugaas
  Should compile in DotNET.  This still probably will not work though.

  Rev 1.0    2/5/2004 4:42:56 PM  JPMugaas
  Attempt to make a DotNET wrapper for OpenSSL.  It does NOT work so don't use
  it.  If you can fix it, great.

  Rev 1.5    10/16/03 11:16:44 PM  RLebeau
  Updated to better support C++Builder by adding an $EXTERNSYM define to
  'time_t' so that it won't be included in the auto-generated HPP file.  The
  native time.h header file is used instead.

  Rev 1.4    10/17/2003 1:08:12 AM  DSiders
  Added localization comments.

  Rev 1.3    12/9/2002 12:48:42 PM  JPMugaas
  Fixed stupid compile error for the moment.  The Macros in err.h have to be
  sorted out later.

  Rev 1.1    12/8/2002 07:25:52 PM  JPMugaas
  Added published host and port properties.

  Rev 1.0    11/13/2002 08:01:32 AM  JPMugaas
}

unit IdSSLOpenSSLHeadersNET;

{
  Author: Gregor Ibic (gregor.ibic@intelicom.si)
  Copyright: (c) Gregor Ibic, Intelicom d.o.o and Indy Working Group.
}

interface

uses
  IdGlobal,
  System.Text, System.Runtime.InteropServices, Windows;

const
  {$IFDEF LINUX}
  SSL_Indy_DLL_name    = 'libindy_ssl.so'; {Do not localize}
  SSL_DLL_name         = 'libssl.so'; {Do not localize}
  SSLCLIB_DLL_name      = 'libcrypto.so'; {Do not localize}
  {$ELSE}
  SSL_DLL_name         = 'ssleay32.dll';  {Do not localize}
  SSLCLIB_DLL_name   = 'libeay32.dll';  {Do not localize}
  {$ENDIF}

// the following emit is a workaround to a name conflict
// with Win32 API header files
(*$HPPEMIT '#include <time.h>'*)

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';  {Do not localize}
  OPENSSL_BN_DEC_FMT2 = '%09lu';  {Do not localize}
  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';  {Do not localize}
  OPENSSL_LN_X500 = 'X500';  {Do not localize}
  OPENSSL_LN_X509 = 'X509';  {Do not localize}
  OPENSSL_LN_algorithm = 'algorithm';  {Do not localize}
  OPENSSL_LN_authority_key_identifier = 'X509v3 Authority Key Identifier';  {Do not localize}
  OPENSSL_LN_basic_constraints = 'X509v3 Basic Constraints';  {Do not localize}
  OPENSSL_LN_bf_cbc = 'bf-cbc';  {Do not localize}
  OPENSSL_LN_bf_cfb64 = 'bf-cfb';  {Do not localize}
  OPENSSL_LN_bf_ecb = 'bf-ecb';  {Do not localize}
  OPENSSL_LN_bf_ofb64 = 'bf-ofb';  {Do not localize}
  OPENSSL_LN_cast5_cbc = 'cast5-cbc';  {Do not localize}
  OPENSSL_LN_cast5_cfb64 = 'cast5-cfb';  {Do not localize}
  OPENSSL_LN_cast5_ecb = 'cast5-ecb';  {Do not localize}
  OPENSSL_LN_cast5_ofb64 = 'cast5-ofb';  {Do not localize}
  OPENSSL_LN_certBag = 'certBag';  {Do not localize}
  OPENSSL_LN_certificate_policies = 'X509v3 Certificate Policies';  {Do not localize}
  OPENSSL_LN_client_auth = 'TLS Web Client Authentication';  {Do not localize}
  OPENSSL_LN_code_sign = 'Code Signing';  {Do not localize}
  OPENSSL_LN_commonName = 'commonName';  {Do not localize}
  OPENSSL_LN_countryName = 'countryName';  {Do not localize}
  OPENSSL_LN_crlBag = 'crlBag';  {Do not localize}
  OPENSSL_LN_crl_distribution_points = 'X509v3 CRL Distribution Points';  {Do not localize}
  OPENSSL_LN_crl_number = 'X509v3 CRL Number';  {Do not localize}
  OPENSSL_LN_crl_reason = 'CRL Reason Code';  {Do not localize}
  OPENSSL_LN_delta_crl = 'X509v3 Delta CRL Indicator';  {Do not localize}
  OPENSSL_LN_des_cbc = 'des-cbc';  {Do not localize}
  OPENSSL_LN_des_cfb64 = 'des-cfb';  {Do not localize}
  OPENSSL_LN_des_ecb = 'des-ecb';  {Do not localize}
  OPENSSL_LN_des_ede = 'des-ede';  {Do not localize}
  OPENSSL_LN_des_ede3 = 'des-ede3';  {Do not localize}
  OPENSSL_LN_des_ede3_cbc = 'des-ede3-cbc';  {Do not localize}
  OPENSSL_LN_des_ede3_cfb64 = 'des-ede3-cfb';  {Do not localize}
  OPENSSL_LN_des_ede3_ofb64 = 'des-ede3-ofb';  {Do not localize}
  OPENSSL_LN_des_ede_cbc = 'des-ede-cbc';  {Do not localize}
  OPENSSL_LN_des_ede_cfb64 = 'des-ede-cfb';  {Do not localize}
  OPENSSL_LN_des_ede_ofb64 = 'des-ede-ofb';  {Do not localize}
  OPENSSL_LN_des_ofb64 = 'des-ofb';  {Do not localize}
  OPENSSL_LN_description = 'description';  {Do not localize}
  OPENSSL_LN_desx_cbc = 'desx-cbc';  {Do not localize}
  OPENSSL_LN_dhKeyAgreement = 'dhKeyAgreement';  {Do not localize}
  OPENSSL_LN_dsa = 'dsaEncryption';  {Do not localize}
  OPENSSL_LN_dsaWithSHA = 'dsaWithSHA';  {Do not localize}
  OPENSSL_LN_dsaWithSHA1 = 'dsaWithSHA1';  {Do not localize}
  OPENSSL_LN_dsaWithSHA1_2 = 'dsaWithSHA1-old';  {Do not localize}
  OPENSSL_LN_dsa_2 = 'dsaEncryption-old';  {Do not localize}
  OPENSSL_LN_email_protect = 'E-mail Protection';  {Do not localize}
  OPENSSL_LN_ext_key_usage = 'X509v3 Extended Key Usage';  {Do not localize}
  OPENSSL_LN_friendlyName = 'friendlyName';  {Do not localize}
  OPENSSL_LN_givenName = 'givenName';  {Do not localize}
  OPENSSL_LN_hmacWithSHA1 = 'hmacWithSHA1';  {Do not localize}
  OPENSSL_LN_id_pbkdf2 = 'PBKDF2';  {Do not localize}
  OPENSSL_LN_id_qt_cps = 'Policy Qualifier CPS';  {Do not localize}
  OPENSSL_LN_id_qt_unotice = 'Policy Qualifier User Notice';  {Do not localize}
  OPENSSL_LN_idea_cbc = 'idea-cbc';  {Do not localize}
  OPENSSL_LN_idea_cfb64 = 'idea-cfb';  {Do not localize}
  OPENSSL_LN_idea_ecb = 'idea-ecb';  {Do not localize}
  OPENSSL_LN_idea_ofb64 = 'idea-ofb';  {Do not localize}
  OPENSSL_LN_initials = 'initials';  {Do not localize}
  OPENSSL_LN_invalidity_date = 'Invalidity Date';  {Do not localize}
  OPENSSL_LN_issuer_alt_name = 'X509v3 Issuer Alternative Name';  {Do not localize}
  OPENSSL_LN_keyBag = 'keyBag';  {Do not localize}
  OPENSSL_LN_key_usage = 'X509v3 Key Usage';  {Do not localize}
  OPENSSL_LN_localKeyID = 'localKeyID';  {Do not localize}
  OPENSSL_LN_localityName = 'localityName';  {Do not localize}
  OPENSSL_LN_md2 = 'md2';  {Do not localize}
  OPENSSL_LN_md2WithRSAEncryption = 'md2WithRSAEncryption';  {Do not localize}
  OPENSSL_LN_md5 = 'md5';  {Do not localize}
  OPENSSL_LN_md5WithRSA = 'md5WithRSA';  {Do not localize}
  OPENSSL_LN_md5WithRSAEncryption = 'md5WithRSAEncryption';  {Do not localize}
  OPENSSL_LN_md5_sha1 = 'md5-sha1';  {Do not localize}
  OPENSSL_LN_mdc2 = 'mdc2';  {Do not localize}
  OPENSSL_LN_mdc2WithRSA = 'mdc2withRSA';  {Do not localize}
  OPENSSL_LN_ms_code_com = 'Microsoft Commercial Code Signing';  {Do not localize}
  OPENSSL_LN_ms_code_ind = 'Microsoft Individual Code Signing';  {Do not localize}
  OPENSSL_LN_ms_ctl_sign = 'Microsoft Trust List Signing';  {Do not localize}
  OPENSSL_LN_ms_efs = 'Microsoft Encrypted File System';  {Do not localize}
  OPENSSL_LN_ms_sgc = 'Microsoft Server Gated Crypto';  {Do not localize}
  OPENSSL_LN_netscape = 'Netscape Communications Corp.';  {Do not localize}
  OPENSSL_LN_netscape_base_url = 'Netscape Base Url';  {Do not localize}
  OPENSSL_LN_netscape_ca_policy_url = 'Netscape CA Policy Url';  {Do not localize}
  OPENSSL_LN_netscape_ca_revocation_url = 'Netscape CA Revocation Url';  {Do not localize}
  OPENSSL_LN_netscape_cert_extension = 'Netscape Certificate Extension';  {Do not localize}
  OPENSSL_LN_netscape_cert_sequence = 'Netscape Certificate Sequence';  {Do not localize}
  OPENSSL_LN_netscape_cert_type = 'Netscape Cert Type';  {Do not localize}
  OPENSSL_LN_netscape_comment = 'Netscape Comment';  {Do not localize}
  OPENSSL_LN_netscape_data_type = 'Netscape Data Type';  {Do not localize}
  OPENSSL_LN_netscape_renewal_url = 'Netscape Renewal Url';  {Do not localize}
  OPENSSL_LN_netscape_revocation_url = 'Netscape Revocation Url';  {Do not localize}
  OPENSSL_LN_netscape_ssl_server_name = 'Netscape SSL Server Name';  {Do not localize}
  OPENSSL_LN_ns_sgc = 'Netscape Server Gated Crypto';  {Do not localize}
  OPENSSL_LN_organizationName = 'organizationName';  {Do not localize}
  OPENSSL_LN_organizationalUnitName = 'organizationalUnitName';  {Do not localize}
  OPENSSL_LN_pbeWithMD2AndDES_CBC = 'pbeWithMD2AndDES-CBC';  {Do not localize}
  OPENSSL_LN_pbeWithMD2AndRC2_CBC = 'pbeWithMD2AndRC2-CBC';  {Do not localize}
  OPENSSL_LN_pbeWithMD5AndCast5_CBC = 'pbeWithMD5AndCast5CBC';  {Do not localize}
  OPENSSL_LN_pbeWithMD5AndDES_CBC = 'pbeWithMD5AndDES-CBC';  {Do not localize}
  OPENSSL_LN_pbeWithMD5AndRC2_CBC = 'pbeWithMD5AndRC2-CBC';  {Do not localize}
  OPENSSL_LN_pbeWithSHA1AndDES_CBC = 'pbeWithSHA1AndDES-CBC';  {Do not localize}
  OPENSSL_LN_pbeWithSHA1AndRC2_CBC = 'pbeWithSHA1AndRC2-CBC';  {Do not localize}
  OPENSSL_LN_pbe_WithSHA1And128BitRC2_CBC = 'pbeWithSHA1And128BitRC2-CBC';  {Do not localize}
  OPENSSL_LN_pbe_WithSHA1And128BitRC4 = 'pbeWithSHA1And128BitRC4';  {Do not localize}
  OPENSSL_LN_pbe_WithSHA1And2_Key_TripleDES_CBC = 'pbeWithSHA1And2-KeyTripleDES-CBC';  {Do not localize}
  OPENSSL_LN_pbe_WithSHA1And3_Key_TripleDES_CBC = 'pbeWithSHA1And3-KeyTripleDES-CBC';  {Do not localize}
  OPENSSL_LN_pbe_WithSHA1And40BitRC2_CBC = 'pbeWithSHA1And40BitRC2-CBC';  {Do not localize}
  OPENSSL_LN_pbe_WithSHA1And40BitRC4 = 'pbeWithSHA1And40BitRC4';  {Do not localize}
  OPENSSL_LN_pbes2 = 'PBES2';  {Do not localize}
  OPENSSL_LN_pbmac1 = 'PBMAC1';  {Do not localize}
  OPENSSL_LN_pkcs = 'pkcs';  {Do not localize}
  OPENSSL_LN_pkcs3 = 'pkcs3';  {Do not localize}
  OPENSSL_LN_pkcs7 = 'pkcs7';  {Do not localize}
  OPENSSL_LN_pkcs7_data = 'pkcs7-data';  {Do not localize}
  OPENSSL_LN_pkcs7_digest = 'pkcs7-digestData';  {Do not localize}
  OPENSSL_LN_pkcs7_encrypted = 'pkcs7-encryptedData';  {Do not localize}
  OPENSSL_LN_pkcs7_enveloped = 'pkcs7-envelopedData';  {Do not localize}
  OPENSSL_LN_pkcs7_signed = 'pkcs7-signedData';  {Do not localize}
  OPENSSL_LN_pkcs7_signedAndEnveloped = 'pkcs7-signedAndEnvelopedData';  {Do not localize}
  OPENSSL_LN_pkcs8ShroudedKeyBag = 'pkcs8ShroudedKeyBag';  {Do not localize}
  OPENSSL_LN_pkcs9 = 'pkcs9';  {Do not localize}
  OPENSSL_LN_pkcs9_challengePassword = 'challengePassword';  {Do not localize}
  OPENSSL_LN_pkcs9_contentType = 'contentType';  {Do not localize}
  OPENSSL_LN_pkcs9_countersignature = 'countersignature';  {Do not localize}
  OPENSSL_LN_pkcs9_emailAddress = 'emailAddress';  {Do not localize}
  OPENSSL_LN_pkcs9_extCertAttributes = 'extendedCertificateAttributes';  {Do not localize}
  OPENSSL_LN_pkcs9_messageDigest = 'messageDigest';  {Do not localize}
  OPENSSL_LN_pkcs9_signingTime = 'signingTime';  {Do not localize}
  OPENSSL_LN_pkcs9_unstructuredAddress = 'unstructuredAddress';  {Do not localize}
  OPENSSL_LN_pkcs9_unstructuredName = 'unstructuredName';  {Do not localize}
  OPENSSL_LN_private_key_usage_period = 'X509v3 Private Key Usage Period';  {Do not localize}
  OPENSSL_LN_rc2_40_cbc = 'rc2-40-cbc';  {Do not localize}
  OPENSSL_LN_rc2_64_cbc = 'rc2-64-cbc';  {Do not localize}
  OPENSSL_LN_rc2_cbc = 'rc2-cbc';  {Do not localize}
  OPENSSL_LN_rc2_cfb64 = 'rc2-cfb';  {Do not localize}
  OPENSSL_LN_rc2_ecb = 'rc2-ecb';  {Do not localize}
  OPENSSL_LN_rc2_ofb64 = 'rc2-ofb';  {Do not localize}
  OPENSSL_LN_rc4 = 'rc4';  {Do not localize}
  OPENSSL_LN_rc4_40 = 'rc4-40';  {Do not localize}
  OPENSSL_LN_rc5_cbc = 'rc5-cbc';  {Do not localize}
  OPENSSL_LN_rc5_cfb64 = 'rc5-cfb';  {Do not localize}
  OPENSSL_LN_rc5_ecb = 'rc5-ecb';  {Do not localize}
  OPENSSL_LN_rc5_ofb64 = 'rc5-ofb';  {Do not localize}
  OPENSSL_LN_ripemd160 = 'ripemd160';  {Do not localize}
  OPENSSL_LN_ripemd160WithRSA = 'ripemd160WithRSA';  {Do not localize}
  OPENSSL_LN_rle_compression = 'run length compression';  {Do not localize}
  OPENSSL_LN_rsa = 'rsa';  {Do not localize}
  OPENSSL_LN_rsaEncryption = 'rsaEncryption';  {Do not localize}
  OPENSSL_LN_rsadsi = 'rsadsi';  {Do not localize}
  OPENSSL_LN_safeContentsBag = 'safeContentsBag';  {Do not localize}
  OPENSSL_LN_sdsiCertificate = 'sdsiCertificate';  {Do not localize}
  OPENSSL_LN_secretBag = 'secretBag';  {Do not localize}
  OPENSSL_LN_serialNumber = 'serialNumber';  {Do not localize}
  OPENSSL_LN_server_auth = 'TLS Web Server Authentication';  {Do not localize}
  OPENSSL_LN_sha = 'sha';  {Do not localize}
  OPENSSL_LN_sha1 = 'sha1';  {Do not localize}
  OPENSSL_LN_sha1WithRSA = 'sha1WithRSA';  {Do not localize}
  OPENSSL_LN_sha1WithRSAEncryption = 'sha1WithRSAEncryption';  {Do not localize}
  OPENSSL_LN_shaWithRSAEncryption = 'shaWithRSAEncryption';  {Do not localize}
  OPENSSL_LN_stateOrProvinceName = 'stateOrProvinceName';  {Do not localize}
  OPENSSL_LN_subject_alt_name = 'X509v3 Subject Alternative Name';  {Do not localize}
  OPENSSL_LN_subject_key_identifier = 'X509v3 Subject Key Identifier';  {Do not localize}
  OPENSSL_LN_surname = 'surname';  {Do not localize}
  OPENSSL_LN_sxnet = 'Strong Extranet ID';  {Do not localize}
  OPENSSL_LN_time_stamp = 'Time Stamping';  {Do not localize}
  OPENSSL_LN_title = 'title';  {Do not localize}
  OPENSSL_LN_undef = 'undefined';  {Do not localize}
  OPENSSL_LN_uniqueIdentifier = 'uniqueIdentifier';  {Do not localize}
  OPENSSL_LN_x509Certificate = 'x509Certificate';  {Do not localize}
  OPENSSL_LN_x509Crl = 'x509Crl';  {Do not localize}
  OPENSSL_LN_zlib_compression = 'zlib compression';  {Do not localize}
  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';  {Do not localize}
  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';  {Do not localize}
  OPENSSL_PEM_STRING_DSA = 'DSA PRIVATE KEY';  {Do not localize}
  OPENSSL_PEM_STRING_DSAPARAMS = 'DSA PARAMETERS';  {Do not localize}
  OPENSSL_PEM_STRING_EVP_PKEY = 'ANY PRIVATE KEY';  {Do not localize}
  OPENSSL_PEM_STRING_PKCS7 = 'PKCS7';  {Do not localize}
  OPENSSL_PEM_STRING_PKCS8 = 'ENCRYPTED PRIVATE KEY';  {Do not localize}
  OPENSSL_PEM_STRING_PKCS8INF = 'PRIVATE KEY';  {Do not localize}
  OPENSSL_PEM_STRING_RSA = 'RSA PRIVATE KEY';  {Do not localize}
  OPENSSL_PEM_STRING_RSA_PUBLIC = 'RSA PUBLIC KEY';  {Do not localize}
  OPENSSL_PEM_STRING_SSL_SESSION = 'SSL SESSION PARAMETERS';  {Do not localize}
  OPENSSL_PEM_STRING_X509 = 'CERTIFICATE';  {Do not localize}
  OPENSSL_PEM_STRING_X509_CRL = 'X509 CRL';  {Do not localize}
  OPENSSL_PEM_STRING_X509_OLD = 'X509 CERTIFICATE';  {Do not localize}
  OPENSSL_PEM_STRING_X509_REQ = 'CERTIFICATE REQUEST';  {Do not localize}
  OPENSSL_PEM_STRING_X509_REQ_OLD = 'NEW CERTIFICATE REQUEST';  {Do not localize}
  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';  {Do not localize}
  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';  {Do not localize}
  OPENSSL_SN_SMIMECapabilities = 'SMIME-CAPS';  {Do not localize}
  OPENSSL_SN_authority_key_identifier = 'authorityKeyIdentifier';  {Do not localize}
  OPENSSL_SN_basic_constraints = 'basicConstraints';  {Do not localize}
  OPENSSL_SN_bf_cbc = 'BF-CBC';  {Do not localize}
  OPENSSL_SN_bf_cfb64 = 'BF-CFB';  {Do not localize}
  OPENSSL_SN_bf_ecb = 'BF-ECB';  {Do not localize}
  OPENSSL_SN_bf_ofb64 = 'BF-OFB';  {Do not localize}
  OPENSSL_SN_cast5_cbc = 'CAST5-CBC';  {Do not localize}
  OPENSSL_SN_cast5_cfb64 = 'CAST5-CFB';  {Do not localize}
  OPENSSL_SN_cast5_ecb = 'CAST5-ECB';  {Do not localize}
  OPENSSL_SN_cast5_ofb64 = 'CAST5-OFB';  {Do not localize}
  OPENSSL_SN_certificate_policies = 'certificatePolicies';  {Do not localize}
  OPENSSL_SN_client_auth = 'clientAuth';  {Do not localize}
  OPENSSL_SN_code_sign = 'codeSigning';  {Do not localize}
  OPENSSL_SN_commonName = 'CN';  {Do not localize}
  OPENSSL_SN_countryName = 'C';  {Do not localize}
  OPENSSL_SN_crl_distribution_points = 'crlDistributionPoints';  {Do not localize}
  OPENSSL_SN_crl_number = 'crlNumber';  {Do not localize}
  OPENSSL_SN_crl_reason = 'CRLReason';  {Do not localize}
  OPENSSL_SN_delta_crl = 'deltaCRL';  {Do not localize}
  OPENSSL_SN_des_cbc = 'DES-CBC';  {Do not localize}
  OPENSSL_SN_des_cfb64 = 'DES-CFB';  {Do not localize}
  OPENSSL_SN_des_ecb = 'DES-ECB';  {Do not localize}
  OPENSSL_SN_des_ede = 'DES-EDE';  {Do not localize}
  OPENSSL_SN_des_ede3 = 'DES-EDE3';  {Do not localize}
  OPENSSL_SN_des_ede3_cbc = 'DES-EDE3-CBC';  {Do not localize}
  OPENSSL_SN_des_ede3_cfb64 = 'DES-EDE3-CFB';  {Do not localize}
  OPENSSL_SN_des_ede3_ofb64 = 'DES-EDE3-OFB';  {Do not localize}
  OPENSSL_SN_des_ede_cbc = 'DES-EDE-CBC';  {Do not localize}
  OPENSSL_SN_des_ede_cfb64 = 'DES-EDE-CFB';  {Do not localize}
  OPENSSL_SN_des_ede_ofb64 = 'DES-EDE-OFB';  {Do not localize}
  OPENSSL_SN_des_ofb64 = 'DES-OFB';  {Do not localize}
  OPENSSL_SN_description = 'D';  {Do not localize}
  OPENSSL_SN_desx_cbc = 'DESX-CBC';  {Do not localize}
  OPENSSL_SN_dsa = 'DSA';  {Do not localize}
  OPENSSL_SN_dsaWithSHA = 'DSA-SHA';  {Do not localize}
  OPENSSL_SN_dsaWithSHA1 = 'DSA-SHA1';  {Do not localize}
  OPENSSL_SN_dsaWithSHA1_2 = 'DSA-SHA1-old';  {Do not localize}
  OPENSSL_SN_dsa_2 = 'DSA-old';  {Do not localize}
  OPENSSL_SN_email_protect = 'emailProtection';  {Do not localize}
  OPENSSL_SN_ext_key_usage = 'extendedKeyUsage';  {Do not localize}
  OPENSSL_SN_givenName = 'G';  {Do not localize}
  OPENSSL_SN_id_kp = 'id-kp';  {Do not localize}
  OPENSSL_SN_id_pkix = 'PKIX';  {Do not localize}
  OPENSSL_SN_id_qt_cps = 'id-qt-cps';  {Do not localize}
  OPENSSL_SN_id_qt_unotice = 'id-qt-unotice';  {Do not localize}
  OPENSSL_SN_idea_cbc = 'IDEA-CBC';  {Do not localize}
  OPENSSL_SN_idea_cfb64 = 'IDEA-CFB';  {Do not localize}
  OPENSSL_SN_idea_ecb = 'IDEA-ECB';  {Do not localize}
  OPENSSL_SN_idea_ofb64 = 'IDEA-OFB';  {Do not localize}
  OPENSSL_SN_initials = 'I';  {Do not localize}
  OPENSSL_SN_invalidity_date = 'invalidityDate';  {Do not localize}
  OPENSSL_SN_issuer_alt_name = 'issuerAltName';  {Do not localize}
  OPENSSL_SN_key_usage = 'keyUsage';  {Do not localize}
  OPENSSL_SN_ld_ce = 'ld-ce';  {Do not localize}
  OPENSSL_SN_localityName = 'L';  {Do not localize}
  OPENSSL_SN_md2 = 'MD2';  {Do not localize}
  OPENSSL_SN_md2WithRSAEncryption = 'RSA-MD2';  {Do not localize}
  OPENSSL_SN_md5 = 'MD5';  {Do not localize}
  OPENSSL_SN_md5WithRSA = 'RSA-NP-MD5';  {Do not localize}
  OPENSSL_SN_md5WithRSAEncryption = 'RSA-MD5';  {Do not localize}
  OPENSSL_SN_md5_sha1 = 'MD5-SHA1';  {Do not localize}
  OPENSSL_SN_mdc2 = 'MDC2';  {Do not localize}
  OPENSSL_SN_mdc2WithRSA = 'RSA-MDC2';  {Do not localize}
  OPENSSL_SN_ms_code_com = 'msCodeCom';  {Do not localize}
  OPENSSL_SN_ms_code_ind = 'msCodeInd';  {Do not localize}
  OPENSSL_SN_ms_ctl_sign = 'msCTLSign';  {Do not localize}
  OPENSSL_SN_ms_efs = 'msEFS';  {Do not localize}
  OPENSSL_SN_ms_sgc = 'msSGC';  {Do not localize}
  OPENSSL_SN_netscape = 'Netscape';  {Do not localize}
  OPENSSL_SN_netscape_base_url = 'nsBaseUrl';  {Do not localize}
  OPENSSL_SN_netscape_ca_policy_url = 'nsCaPolicyUrl';  {Do not localize}
  OPENSSL_SN_netscape_ca_revocation_url = 'nsCaRevocationUrl';  {Do not localize}
  OPENSSL_SN_netscape_cert_extension = 'nsCertExt';  {Do not localize}
  OPENSSL_SN_netscape_cert_sequence = 'nsCertSequence';  {Do not localize}
  OPENSSL_SN_netscape_cert_type = 'nsCertType';  {Do not localize}
  OPENSSL_SN_netscape_comment = 'nsComment';  {Do not localize}
  OPENSSL_SN_netscape_data_type = 'nsDataType';  {Do not localize}
  OPENSSL_SN_netscape_renewal_url = 'nsRenewalUrl';  {Do not localize}
  OPENSSL_SN_netscape_revocation_url = 'nsRevocationUrl';  {Do not localize}
  OPENSSL_SN_netscape_ssl_server_name = 'nsSslServerName';  {Do not localize}
  OPENSSL_SN_ns_sgc = 'nsSGC';  {Do not localize}
  OPENSSL_SN_organizationName = 'O';  {Do not localize}
  OPENSSL_SN_organizationalUnitName = 'OU';  {Do not localize}
  OPENSSL_SN_pkcs9_emailAddress = 'Email';  {Do not localize}
  OPENSSL_SN_private_key_usage_period = 'privateKeyUsagePeriod';  {Do not localize}
  OPENSSL_SN_rc2_40_cbc = 'RC2-40-CBC';  {Do not localize}
  OPENSSL_SN_rc2_64_cbc = 'RC2-64-CBC';  {Do not localize}
  OPENSSL_SN_rc2_cbc = 'RC2-CBC';  {Do not localize}
  OPENSSL_SN_rc2_cfb64 = 'RC2-CFB';  {Do not localize}
  OPENSSL_SN_rc2_ecb = 'RC2-ECB';  {Do not localize}
  OPENSSL_SN_rc2_ofb64 = 'RC2-OFB';  {Do not localize}
  OPENSSL_SN_rc4 = 'RC4';  {Do not localize}
  OPENSSL_SN_rc4_40 = 'RC4-40';  {Do not localize}
  OPENSSL_SN_rc5_cbc = 'RC5-CBC';  {Do not localize}
  OPENSSL_SN_rc5_cfb64 = 'RC5-CFB';  {Do not localize}
  OPENSSL_SN_rc5_ecb = 'RC5-ECB';  {Do not localize}
  OPENSSL_SN_rc5_ofb64 = 'RC5-OFB';  {Do not localize}
  OPENSSL_SN_ripemd160 = 'RIPEMD160';  {Do not localize}
  OPENSSL_SN_ripemd160WithRSA = 'RSA-RIPEMD160';  {Do not localize}
  OPENSSL_SN_rle_compression = 'RLE';  {Do not localize}
  OPENSSL_SN_rsa = 'RSA';  {Do not localize}
  OPENSSL_SN_serialNumber = 'SN';  {Do not localize}
  OPENSSL_SN_server_auth = 'serverAuth';  {Do not localize}
  OPENSSL_SN_sha = 'SHA';  {Do not localize}
  OPENSSL_SN_sha1 = 'SHA1';  {Do not localize}
  OPENSSL_SN_sha1WithRSA = 'RSA-SHA1-2';  {Do not localize}
  OPENSSL_SN_sha1WithRSAEncryption = 'RSA-SHA1';  {Do not localize}
  OPENSSL_SN_shaWithRSAEncryption = 'RSA-SHA';  {Do not localize}
  OPENSSL_SN_stateOrProvinceName = 'ST';  {Do not localize}
  OPENSSL_SN_subject_alt_name = 'subjectAltName';  {Do not localize}
  OPENSSL_SN_subject_key_identifier = 'subjectKeyIdentifier';  {Do not localize}
  OPENSSL_SN_surname = 'S';  {Do not localize}
  OPENSSL_SN_sxnet = 'SXNetID';  {Do not localize}
  OPENSSL_SN_time_stamp = 'timeStamping';  {Do not localize}
  OPENSSL_SN_title = 'T';  {Do not localize}
  OPENSSL_SN_undef = 'UNDEF';  {Do not localize}
  OPENSSL_SN_uniqueIdentifier = 'UID';  {Do not localize}
  OPENSSL_SN_zlib_compression = 'ZLIB';  {Do not localize}
  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';  {Do not localize}
  OPENSSL_SSL2_TXT_DES_192_EDE3_CBC_WITH_SHA = 'DES-CBC3-SHA';  {Do not localize}
  OPENSSL_SSL2_TXT_DES_64_CBC_WITH_MD5 = 'DES-CBC-MD5';  {Do not localize}
  OPENSSL_SSL2_TXT_DES_64_CBC_WITH_SHA = 'DES-CBC-SHA';  {Do not localize}
  OPENSSL_SSL2_TXT_DES_64_CFB64_WITH_MD5_1 = 'DES-CFB-M1';  {Do not localize}
  OPENSSL_SSL2_TXT_IDEA_128_CBC_WITH_MD5 = 'IDEA-CBC-MD5';  {Do not localize}
  OPENSSL_SSL2_TXT_NULL = 'NULL';  {Do not localize}
  OPENSSL_SSL2_TXT_NULL_WITH_MD5 = 'NULL-MD5';  {Do not localize}
  OPENSSL_SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 = 'EXP-RC2-CBC-MD5';  {Do not localize}
  OPENSSL_SSL2_TXT_RC2_128_CBC_WITH_MD5 = 'RC2-CBC-MD5';  {Do not localize}
  OPENSSL_SSL2_TXT_RC4_128_EXPORT40_WITH_MD5 = 'EXP-RC4-MD5';  {Do not localize}
  OPENSSL_SSL2_TXT_RC4_128_WITH_MD5 = 'RC4-MD5';  {Do not localize}
  OPENSSL_SSL2_TXT_RC4_64_WITH_MD5 = 'RC4-64-MD5';  {Do not localize}
  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';  {Do not localize}
  OPENSSL_SSL3_TXT_ADH_DES_40_CBC_SHA = 'EXP-ADH-DES-CBC-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_ADH_DES_64_CBC_SHA = 'ADH-DES-CBC-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_ADH_RC4_128_MD5 = 'ADH-RC4-MD5';  {Do not localize}
  OPENSSL_SSL3_TXT_ADH_RC4_40_MD5 = 'EXP-ADH-RC4-MD5';  {Do not localize}
  OPENSSL_SSL3_TXT_DH_DSS_DES_192_CBC3_SHA = 'DH-DSS-DES-CBC3-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_DH_DSS_DES_40_CBC_SHA = 'EXP-DH-DSS-DES-CBC-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_DH_DSS_DES_64_CBC_SHA = 'DH-DSS-DES-CBC-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_DH_RSA_DES_192_CBC3_SHA = 'DH-RSA-DES-CBC3-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_DH_RSA_DES_40_CBC_SHA = 'EXP-DH-RSA-DES-CBC-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_DH_RSA_DES_64_CBC_SHA = 'DH-RSA-DES-CBC-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_EDH_DSS_DES_192_CBC3_SHA = 'EDH-DSS-DES-CBC3-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_EDH_DSS_DES_40_CBC_SHA = 'EXP-EDH-DSS-DES-CBC-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_EDH_DSS_DES_64_CBC_SHA = 'EDH-DSS-DES-CBC-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_EDH_RSA_DES_192_CBC3_SHA = 'EDH-RSA-DES-CBC3-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_EDH_RSA_DES_40_CBC_SHA = 'EXP-EDH-RSA-DES-CBC-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_EDH_RSA_DES_64_CBC_SHA = 'EDH-RSA-DES-CBC-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_FZA_DMS_FZA_SHA = 'FZA-FZA-CBC-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_FZA_DMS_NULL_SHA = 'FZA-NULL-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_FZA_DMS_RC4_SHA = 'FZA-RC4-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_RSA_DES_192_CBC3_SHA = 'DES-CBC3-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_RSA_DES_40_CBC_SHA = 'EXP-DES-CBC-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_RSA_DES_64_CBC_SHA = 'DES-CBC-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_RSA_IDEA_128_SHA = 'IDEA-CBC-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_RSA_NULL_MD5 = 'NULL-MD5';  {Do not localize}
  OPENSSL_SSL3_TXT_RSA_NULL_SHA = 'NULL-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_RSA_RC2_40_MD5 = 'EXP-RC2-CBC-MD5';  {Do not localize}
  OPENSSL_SSL3_TXT_RSA_RC4_128_MD5 = 'RC4-MD5';  {Do not localize}
  OPENSSL_SSL3_TXT_RSA_RC4_128_SHA = 'RC4-SHA';  {Do not localize}
  OPENSSL_SSL3_TXT_RSA_RC4_40_MD5 = 'EXP-RC4-MD5';  {Do not localize}
  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';  {Do not localize}
  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';  {Do not localize}
  OPENSSL_SSL_TXT_ADH_C = 'ADH';  {Do not localize}
  OPENSSL_SSL_TXT_ALL = 'ALL';  {Do not localize}
  OPENSSL_SSL_TXT_DES = 'DES';  {Do not localize}
  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';  {Do not localize}
  OPENSSL_SSL_TXT_DSS = 'DSS';  {Do not localize}
  OPENSSL_SSL_TXT_EDH = 'EDH';  {Do not localize}
  OPENSSL_SSL_TXT_EXP40 = 'EXP';  {Do not localize}
  OPENSSL_SSL_TXT_EXP56 = 'EXPORT56';  {Do not localize}
  OPENSSL_SSL_TXT_EXPORT = 'EXPORT';  {Do not localize}
  OPENSSL_SSL_TXT_FZA = 'FZA';  {Do not localize}
  OPENSSL_SSL_TXT_HIGH = 'HIGH';  {Do not localize}
  OPENSSL_SSL_TXT_IDEA = 'IDEA';  {Do not localize}
  OPENSSL_SSL_TXT_IDEA_128_CBC_WITH_MD5 = OPENSSL_SSL2_TXT_IDEA_128_CBC_WITH_MD5;
  OPENSSL_SSL_TXT_LOW = 'LOW';  {Do not localize}
  OPENSSL_SSL_TXT_MD5 = 'MD5';  {Do not localize}
  OPENSSL_SSL_TXT_MEDIUM = 'MEDIUM';  {Do not localize}
  OPENSSL_SSL_TXT_NULL = 'NULL';  {Do not localize}
  OPENSSL_SSL_TXT_NULL_WITH_MD5 = OPENSSL_SSL2_TXT_NULL_WITH_MD5;
  OPENSSL_SSL_TXT_RC2 = 'RC2';  {Do not localize}
  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';  {Do not localize}
  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';  {Do not localize}
  OPENSSL_SSL_TXT_SHA = 'SHA';  {Do not localize}
  OPENSSL_SSL_TXT_SHA1 = 'SHA1';  {Do not localize}
  OPENSSL_SSL_TXT_SSLV2 = 'SSLv2';  {Do not localize}
  OPENSSL_SSL_TXT_SSLV3 = 'SSLv3';  {Do not localize}
  OPENSSL_SSL_TXT_TLSV1 = 'TLSv1';  {Do not localize}
  OPENSSL_SSL_TXT_aDH_S = 'aDH';  {Do not localize}
  OPENSSL_SSL_TXT_aDSS = 'aDSS';  {Do not localize}
  OPENSSL_SSL_TXT_aFZA = 'aFZA';  {Do not localize}
  OPENSSL_SSL_TXT_aNULL = 'aNULL';  {Do not localize}
  OPENSSL_SSL_TXT_aRSA = 'aRSA';  {Do not localize}
  OPENSSL_SSL_TXT_eFZA = 'eFZA';  {Do not localize}
  OPENSSL_SSL_TXT_eNULL = 'eNULL';  {Do not localize}
  OPENSSL_SSL_TXT_kDHd = 'kDHd';  {Do not localize}
  OPENSSL_SSL_TXT_kDHr = 'kDHr';  {Do not localize}
  OPENSSL_SSL_TXT_kEDH = 'kEDH';  {Do not localize}
  OPENSSL_SSL_TXT_kFZA = 'kFZA';  {Do not localize}
  OPENSSL_SSL_TXT_kRSA = 'kRSA';  {Do not localize}
  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';  {Do not localize}
  OPENSSL_TLS1_TXT_DHE_DSS_EXPORT1024_WITH_RC4_56_SHA = 'EXP1024-DHE-DSS-RC4-SHA';  {Do not localize}
  OPENSSL_TLS1_TXT_DHE_DSS_WITH_RC4_128_SHA = 'DHE-DSS-RC4-SHA';  {Do not localize}
  OPENSSL_TLS1_TXT_RSA_EXPORT1024_WITH_DES_CBC_SHA = 'EXP1024-DES-CBC-SHA';  {Do not localize}
  OPENSSL_TLS1_TXT_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 = 'EXP1024-RC2-CBC-MD5';  {Do not localize}
  OPENSSL_TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_MD5 = 'EXP1024-RC4-MD5';  {Do not localize}
  OPENSSL_TLS1_TXT_RSA_EXPORT1024_WITH_RC4_56_SHA = 'EXP1024-RC4-SHA';  {Do not localize}
  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';  {Do not localize}
  OPENSSL_TLS_MD_CLIENT_FINISH_CONST_SIZE = 15;
  OPENSSL_TLS_MD_CLIENT_WRITE_KEY_CONST = 'client write key';  {Do not localize}
  OPENSSL_TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE = 16;
  OPENSSL_TLS_MD_IV_BLOCK_CONST = 'IV block';  {Do not localize}
  OPENSSL_TLS_MD_IV_BLOCK_CONST_SIZE = 8;
  OPENSSL_TLS_MD_KEY_EXPANSION_CONST = 'key expansion';  {Do not localize}
  OPENSSL_TLS_MD_KEY_EXPANSION_CONST_SIZE = 13;
  OPENSSL_TLS_MD_MASTER_SECRET_CONST = 'master secret';  {Do not localize}
  OPENSSL_TLS_MD_MASTER_SECRET_CONST_SIZE = 13;
  OPENSSL_TLS_MD_MAX_CONST_SIZE = 20;
  OPENSSL_TLS_MD_SERVER_FINISH_CONST = 'server finished';  {Do not localize}
  OPENSSL_TLS_MD_SERVER_FINISH_CONST_SIZE = 15;
  OPENSSL_TLS_MD_SERVER_WRITE_KEY_CONST = 'server write key';  {Do not localize}
  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;



{Error - err.h }


const
//#define ERR_TXT_MALLOCED	0x01
  OPENSSL_ERR_TXT_MALLOCED = $01;
//#define ERR_TXT_STRING		0x02
  OPENSSL_ERR_TXT_STRING = $02;
//#define ERR_NUM_ERRORS	16
  OPENSSL_ERR_NUM_ERRORS = 16;

type
 TERR_STATE=record
  PID: cardinal;
  Err_buff: Array[0..OPENSSL_ERR_NUM_ERRORS-1] of cardinal;
  [MarshalAs(UnmanagedType.LPTStr)]
  err_file: Array[0..OPENSSL_ERR_NUM_ERRORS-1] of String;
  err_line: array[0..OPENSSL_ERR_NUM_ERRORS-1] of integer;
  top: Integer;
  Bottom: Integer;
end; // record

const
//  /* library */
//#define ERR_LIB_NONE		1
  OPENSSL_ERR_LIB_NONE = 1;
//#define ERR_LIB_SYS		2
  OPENSSL_ERR_LIB_SYS  = 2;
//#define ERR_LIB_BN		3
  OPENSSL_ERR_LIB_BN   = 3;
//#define ERR_LIB_RSA		4
  OPENSSL_ERR_LIB_RSA  = 4;
//#define ERR_LIB_DH		5
  OPENSSL_ERR_LIB_DH   = 5;
//#define ERR_LIB_EVP		6
  OPENSSL_ERR_LIB_EVP  = 6;
//#define ERR_LIB_BUF		7
  OPENSSL_ERR_LIB_BUF  = 7;
//#define ERR_LIB_OBJ		8
  OPENSSL_ERR_LIB_OBJ  = 8;
//#define ERR_LIB_PEM		9
  OPENSSL_ERR_LIB_PEM  = 9;
//#define ERR_LIB_DSA		10
  OPENSSL_ERR_LIB_DSA  = 10;
//#define ERR_LIB_X509		11
  OPENSSL_ERR_LIB_X509 = 11;
//#define ERR_LIB_METH		12
  OPENSSL_ERR_LIB_METH = 12;
//#define ERR_LIB_ASN1		13
  OPENSSL_ERR_LIB_ASN1 = 13;
//#define ERR_LIB_CONF		14
  OPENSSL_ERR_LIB_CONF	= 14;
//#define ERR_LIB_CRYPTO		15
  OPENSSL_ERR_LIB_CRYPTO	=15;
//#define ERR_LIB_SSL		20
  OPENSSL_ERR_LIB_SSL    = 20;
//#define ERR_LIB_SSL23		21
  OPENSSL_ERR_LIB_SSL23 = 21;
//#define ERR_LIB_SSL2		22
  OPENSSL_ERR_LIB_SSL2  = 22;
//#define ERR_LIB_SSL3		23
  OPENSSL_ERR_LIB_SSL3  = 23;
//#define ERR_LIB_RSAREF		30
  OPENSSL_ERR_LIB_RSAREF = 30;
//#define ERR_LIB_PROXY		31
  OPENSSL_ERR_LIB_PROXY = 31;
//#define ERR_LIB_BIO		32
  OPENSSL_ERR_LIB_BIO  = 32;
//#define ERR_LIB_PKCS7		33
  OPENSSL_ERR_LIB_PKCS = 33;
//#define ERR_LIB_X509V3		34
  OPENSSL_ERR_LIB_X509V3 = 34;
//#define ERR_LIB_PKCS12		35
  OPENSSL_ERR_LIB_PKCS12  = 35;
//#define ERR_LIB_RAND		36
  OPENSSL_ERR_LIB_RAND   = 36;
//#define ERR_LIB_DSO		37
  OPENSSL_ERR_LIB_DSO   = 37;
//#define ERR_LIB_USER		128
  OPENSSL_ERR_LIB_USER  = 128;

 // /* OS functions */
//#define SYS_F_FOPEN		1
  OPENSSL_SYS_F_FOPEN		= 1;
//#define SYS_F_CONNECT		2
  OPENSSL_SYS_F_CONNECT = 2;
//#define SYS_F_GETSERVBYNAME	3
  OPENSSL_SYS_F_GETSERVBYNAME	= 3;
//#define SYS_F_SOCKET		4
  OPENSSL_SYS_F_SOCKET		= 4;
//#define SYS_F_IOCTLSOCKET	5
  OPENSSL_SYS_F_IOCTLSOCKET = 5;
//#define SYS_F_BIND		6
  OPENSSL_SYS_F_BIND  = 6;
//#define SYS_F_LISTEN		7
  OPENSSL_SYS_F_LISTEN	 =	7;
//#define SYS_F_ACCEPT		8
  OPENSSL_SYS_F_ACCEPT		= 8;
//#define SYS_F_WSASTARTUP	9 /* Winsock stuff */
  OPENSSL_SYS_F_WSASTARTUP =	9;
//#define SYS_F_OPENDIR		10
  OPENSSL_SYS_F_OPENDIR	 =	10;

//#define ERR_R_FATAL		32
  OPENSSL_ERR_R_FATAL	= 32;

{$define ERR_file_name__FILE_}
{$ifndef NO_ERR}
{procedure ERR_PUT_error(a,b,c,d, e);
begin
  _ERR_PUT_error_internal(a,b,c,d,e);
end;   }
{$else}
{procedure ERR_PUT_error(a,b,c,d, e);
begin
  _ERR_PUT_error_internal(a,b,c,nil,0);
end; }
{$endif}

const
// /* reasons */
//#define ERR_R_SYS_LIB	ERR_LIB_SYS
  OPENSSL_ERR_R_SYS_LIB = OPENSSL_ERR_LIB_SYS;
//#define ERR_R_BN_LIB	ERR_LIB_BN
  OPENSSL_ERR_R_BN_LIB  = OPENSSL_ERR_LIB_BN;
//#define ERR_R_RSA_LIB	ERR_LIB_RSA
  OPENSSL_ERR_R_RSA_LIB	= OPENSSL_ERR_LIB_RSA;

//#define ERR_R_DSA_LIB	ERR_LIB_DSA
  OPENSSL_ERR_R_DSA_LIB	= OPENSSL_ERR_LIB_DSA;
//#define ERR_R_DH_LIB	ERR_LIB_DH
  OPENSSL_ERR_R_DH_LIB = OPENSSL_ERR_LIB_DH;
//#define ERR_R_EVP_LIB	ERR_LIB_EVP
  OPENSSL_ERR_R_EVP_LIB = OPENSSL_ERR_LIB_EVP;
//#define ERR_R_BUF_LIB	ERR_LIB_BUF
  OPENSSL_ERR_R_BUF_LIB	= OPENSSL_ERR_LIB_BUF;
//#define ERR_R_BIO_LIB	ERR_LIB_BIO
  OPENSSL_ERR_R_BIO_LIB = OPENSSL_ERR_LIB_BIO;
//#define ERR_R_OBJ_LIB	ERR_LIB_OBJ
  OPENSSL_ERR_R_OBJ_LIB = OPENSSL_ERR_LIB_OBJ;
//#define ERR_R_PEM_LIB	ERR_LIB_PEM
  OPENSSL_ERR_R_PEM_LIB = OPENSSL_ERR_LIB_PEM;
//#define ERR_R_X509_LIB	ERR_LIB_X509
  OPENSSL_ERR_R_X509_LIB = OPENSSL_ERR_LIB_X509;
//#define ERR_R_METH_LIB	ERR_LIB_METH
  OPENSSL_ERR_R_METH_LIB = OPENSSL_ERR_LIB_METH;
//#define ERR_R_ASN1_LIB	ERR_LIB_ASN1
  OPENSSL_ERR_R_ASN1_LIB =	OPENSSL_ERR_LIB_ASN1;
//#define ERR_R_CONF_LIB	ERR_LIB_CONF
  OPENSSL_ERR_R_CONF_LIB =	OPENSSL_ERR_LIB_CONF;
//#define ERR_R_CRYPTO_LIB ERR_LIB_CRYPTO
 OPENSSL_ERR_R_CRYPTO_LIB = OPENSSL_ERR_LIB_CRYPTO;
//#define ERR_R_SSL_LIB	ERR_LIB_SSL
  OPENSSL_ERR_R_SSL_LIB = OPENSSL_ERR_LIB_SSL;
//#define ERR_R_SSL23_LIB	ERR_LIB_SSL23
  OPENSSL_ERR_R_SSL23_LIB =	OPENSSL_ERR_LIB_SSL23;
//#define ERR_R_SSL2_LIB	ERR_LIB_SSL2
  OPENSSL_ERR_R_SSL2_LIB =	OPENSSL_ERR_LIB_SSL2;
//#define ERR_R_SSL3_LIB	ERR_LIB_SSL3
  OPENSSL_ERR_R_SSL3_LIB =	OPENSSL_ERR_LIB_SSL3;
//#define ERR_R_PROXY_LIB	ERR_LIB_PROXY
  OPENSSL_ERR_R_PROXY_LIB =	OPENSSL_ERR_LIB_PROXY;
//#define ERR_R_BIO_LIB	ERR_LIB_BIO
//  OPENSSL_ERR_R_BIO_LIB =	OPENSSL_ERR_LIB_BIO;
//#define ERR_R_PKCS7_LIB	ERR_LIB_PKCS7
//  OPENSSL_ERR_R_PKCS7_LIB =	OPENSSL_ERR_LIB_PKCS7;
//#define ERR_R_PKCS12_LIB ERR_LIB_PKCS12
  OPENSSL_ERR_R_PKCS12_LIB = OPENSSL_ERR_LIB_PKCS12;
//#define ERR_R_DSO_LIB	ERR_LIB_DSO
  OPENSSL_ERR_R_DSO_LIB = OPENSSL_ERR_LIB_DSO;

Type
  UInteger        = Longint;
  PUInteger	  =^UInteger;
  PFunction       = Procedure;
  // Kudzu - CB3,4 dont like this. I think its a typo anyways. I dont think they
  // intended a pointer to a pointer to an integer.
  //PInteger	  =^PInteger;
  PInteger	  =^Integer;
  // End Kudzu
  PLong		  =^Longint;
  // mlussier - CB3,4 dont like this. I think its a typo anyways. I dont think they
  // intended a pointer to a pointer to an cardinal.
  //PULong	  =^PULong;
  PULong	  =^Cardinal;
  PUShort	  =^Byte;
  PPChar	  =^PChar;

  PSSL_CTX        = IntPtr;
  PSSL            = IntPtr;
  PSSL_METHOD     = IntPtr;
  PSSL_SESSION    = IntPtr;
//  PPSSL_SESSION   =^PSSL_SESSION;
  PSSL_CIPHER	  = IntPtr;
  Pevp_pkey_st    = IntPtr;
  PSTACK          = IntPtr;
//  PPSTACK         =^PSTACK;
  PCRYPTO_EX_DATA = IntPtr;
  PLHASH	  = IntPtr;
{
  PBUF_MEM	  = Pointer;
  PBIO		  = Pointer;
  PPBIO	          =^PBIO;
  PBIO_METHOD     = Pointer;
  PFILE		  = Pointer;
  PBIGNUM	  = Pointer;
  PPBIGNUM	  =^PBIGNUM;
  PBN_CTX	  = Pointer;
  PBN_MONT_CTX    = Pointer;
  PBN_BLINDING	  = Pointer;
  PBN_RECP_CTX    = Pointer;
  PASN1_TYPE	  = Pointer;
  PPASN1_TYPE     =^PASN1_TYPE;
  PASN1_OBJECT    = Pointer;
  PPASN1_OBJECT   =^PASN1_OBJECT;
  PASN1_STRING    = Pointer;
  PPASN1_STRING   =^PASN1_STRING;
  PASN1_CTX	  = Pointer;
  PASN1_HEADER	  = Pointer;
  PPASN1_HEADER   =^PASN1_HEADER;
  PASN1_METHOD    = Pointer;
  PRSA		  = Pointer;
  PPRSA		  =^PRSA;
  PRSA_METHOD	  = Pointer;
  PDSA		  = Pointer;
  PPDSA		  =^PDSA;
  PDH		  = Pointer;
  PPDH		  =^PDH;
}
  PEVP_MD_CTX     = IntPtr;
  PEVP_MD	  = IntPtr;
  PEVP_CIPHER	  = IntPtr;
  PEVP_CIPHER_CTX = IntPtr;
  PEVP_PKEY	  = IntPtr;
//  PPEVP_PKEY      =^PEVP_PKEY;
  PEVP_ENCODE_CTX = IntPtr;
  PX509_LOOKUP    = IntPtr;
  PX509_STORE     = IntPtr;
  PX509_STORE_CTX = IntPtr;
  PX509_CRL	  = IntPtr;
  PPX509_CRL               =^PX509_CRL;
  PX509_LOOKUP_METHOD      = IntPtr;
  PX509_NAME               = IntPtr;
  PPX509_NAME              =^PX509_NAME;
  PX509_OBJECT             = IntPtr;
  PX509                    = IntPtr;
  PPX509		   =^PX509;
  PX509_EXTENSION_METHOD   = IntPtr;
  PX509_REQ	           = IntPtr;
  PPX509_REQ		   =^PX509_REQ;
  PX509_ATTRIBUTE	   = IntPtr;
  PPX509_ATTRIBUTE	   =^PX509_ATTRIBUTE;
  PX509_EXTENSION	   = IntPtr;
  PPX509_EXTENSION	   =^PX509_EXTENSION;
  PX509_NAME_ENTRY	   = IntPtr;
  PPX509_NAME_ENTRY	   =^PX509_NAME_ENTRY;
  PX509_ALGOR		   = IntPtr;
  PPX509_ALGOR		   =^PX509_ALGOR;
  PX509_VAL		   = IntPtr;
  PPX509_VAL		   =^PX509_VAL;
  PX509_PUBKEY		   = IntPtr;
  PPX509_PUBKEY		   =^PX509_PUBKEY;
  PX509_SIG		   = IntPtr;
  PPX509_SIG		   =^PX509_SIG;
  PX509_REQ_INFO	   = IntPtr;
  PPX509_REQ_INFO	   =^PX509_REQ_INFO;
  PX509_CINF		   = IntPtr;
  PPX509_CINF		   =^PX509_CINF;
  PX509_REVOKED		   = IntPtr;
  PPX509_REVOKED	   =^PX509_REVOKED;
  PX509_CRL_INFO	   = IntPtr;
  PPX509_CRL_INFO	   =^PX509_CRL_INFO;
  PX509_PKEY		   = IntPtr;
  PPX509_PKEY		   =^PX509_PKEY;
  PX509_INFO	           = IntPtr;
  PPX509_INFO		   =^PX509_INFO;
{
  PPKCS7_ISSUER_AND_SERIAL = IntPtr;
  PKCS7			   = IntPtr;
  PPKCS7                   =^PKCS7;
  PPPKCS7		   =^PPKCS7;
  PKCS7_SIGNER_INFO	   = IntPtr;
}
{
  PPKCS7_SIGNER_INFO       =^PKCS7_SIGNER_INFO;
  PPPKCS7_SIGNER_INFO      =^PPKCS7_SIGNER_INFO;
  PKCS7_RECIP_INFO	   = IntPtr;
  PPKCS7_RECIP_INFO        =^PKCS7_RECIP_INFO;
  PPPKCS7_RECIP_INFO       =^PPKCS7_RECIP_INFO;
  PPPKCS7_ISSUER_AND_SERIAL=^PPKCS7_ISSUER_AND_SERIAL;
  PKCS7_SIGNED	           = IntPtr;
  PPKCS7_SIGNED		   =^PKCS7_SIGNED;
  PPPKCS7_SIGNED	   = IntPtr;
  PPKCS7_ENC_CONTENT	   = IntPtr;
  PPPKCS7_ENC_CONTENT	   =^PPKCS7_ENC_CONTENT;
  PPKCS7_ENVELOPE	   = IntPtr;
  PPPKCS7_ENVELOPE	   =^PPKCS7_ENVELOPE;
  PPKCS7_SIGN_ENVELOPE	   = IntPtr;
  PPPKCS7_SIGN_ENVELOPE	   =^PPKCS7_SIGN_ENVELOPE;
  PPKCS7_DIGEST		   = IntPtr;
  PPPKCS7_DIGEST	   =^PPKCS7_DIGEST;
  PPKCS7_ENCRYPT	   = IntPtr;
  PPPKCS7_ENCRYPT	   =^PPKCS7_ENCRYPT;
  PNETSCAPE_SPKI	   = IntPtr;
  PPNETSCAPE_SPKI	   =^PNETSCAPE_SPKI;
  PNETSCAPE_SPKAC	   = IntPtr;
  PPNETSCAPE_SPKAC	   =^PNETSCAPE_SPKAC;
  PNETSCAPE_CERT_SEQUENCE  = IntPtr;
  PPNETSCAPE_CERT_SEQUENCE =^PNETSCAPE_CERT_SEQUENCE;
  Pbio_st		   = IntPtr;
  PMD2_CTX		   = IntPtr;
  PMD5_CTX		   = IntPtr;
  PSHA_CTX		   = IntPtr;
  PRIPEMD160_CTX	   = IntPtr;
  PRC4_KEY		   = IntPtr;
  PRC2_KEY		   = IntPtr;
  PRC5_32_KEY		   = IntPtr;
  PBF_KEY		   = IntPtr;
  PCAST_KEY		   = IntPtr;
  PIDEA_KEY_SCHEDULE       = IntPtr;
  PMDC2_CTX                = IntPtr;
  PPDSA_SIG                = IntPtr;
  P_des_cblock		   = IntPtr;
  Pdes_cblock		   = IntPtr;
  PDSA_SIG		   = IntPtr;
  PSTACK_ASN1_TYPE	   = IntPtr;
  PPSTACK_ASN1_TYPE	   = IntPtr;
  PSTACK_X509_NAME_ENTRY   = IntPtr;
  PPSTACK_X509_NAME_ENTRY  = IntPtr;
}
  PSTACK_X509_NAME         = IntPtr;
{
  PSTACK_X509_EXTENSION	   = IntPtr;
  PPSTACK_X509_EXTENSIO    = IntPtr;
  PSTACK_X509_ATTRIBUTE    = IntPtr;
  PPSTACK_X509_ATTRIBUTE   =^PSTACK_X509_ATTRIBUTE;
  PSTACK_X509		   = IntPtr;
  PPSTACK_X509		   =^PSTACK_X509;
  PSTACK_X509_INFO         = IntPtr;
  PPBEPARAM		   = IntPtr;
  PPPBEPARAM		   =^PPBEPARAM;
  PPBKDF2PARAM		   = IntPtr;
  PPPBKDF2PARAM		   =^PPBKDF2PARAM;
  PPBE2PARAM		   = IntPtr;
  PPPBE2PARAM		   =^PPBE2PARAM;
  PPSTACK_X509_EXTENSION   = IntPtr;
  PPKCS8_PRIV_KEY_INFO	   = IntPtr;
  PPPKCS8_PRIV_KEY_INFO    =^PPKCS8_PRIV_KEY_INFO;
  PEVP_PBE_KEYGEN          = IntPtr;
  PEVP_CIPHER_INFO	   = IntPtr;
}
  Ppem_password_cb	   = IntPtr;
  PPEM_ENCODE_SEAL_CTX     = IntPtr;
  PSTACK_SSL_CIPHER        = IntPtr;
  PSTACK_SSL_COMP          = IntPtr;
  PSSL_COMP		   = IntPtr;
  // PASN1_UTCTIME		   = IntPtr;

  ASN1_STRING = packed record
    length: Integer;
    _type: Integer;
     [MarshalAs(UnmanagedType.LPTStr)]
    data: String;
    {/* The value of the following field depends on the type being
     * held.  It is mostly being used for BIT_STRING so if the
     * input data has a non-zero 'unused bits' value, it will be
     * handled correctly */}
    flags: LongWord;
  end;

  PASN1_UTCTIME = IntPtr; //  ^ASN1_UTCTIME;
  ASN1_UTCTIME = ASN1_STRING;

{
  PSTACK_ASN1_OBJECT	   = IntPtr;
  PPSTACK_ASN1_OBJECT      =^PSTACK_ASN1_OBJECT;
  PSTACK_X509_ALGOR        = IntPtr;
  PPSTACK_X509_ALGOR       =^PSTACK_X509_ALGOR;
  PSTACK_X509_REVOKED      = IntPtr;
  PPSTACK_X509_REVOKED     =^PSTACK_X509_REVOKED;
  PSTACK_X509_CRL          = IntPtr;
  PPSTACK_X509_CRL         =^PSTACK_X509_CRL;
  PSTACK_X509_LOOKUP       = IntPtr;
  PPSTACK_X509_LOOKUP      =^PSTACK_X509_LOOKUP;
  PSTACK_PKCS7_SIGNER_INFO = IntPtr;
  PPSTACK_PKCS7_SIGNER_INFO=^PSTACK_PKCS7_SIGNER_INFO;
  PSTACK_PKCS7_RECIP_INFO  = IntPtr;
  PPSTACK_PKCS7_RECIP_INFO =^PSTACK_PKCS7_RECIP_INFO;
}
//GREGOR - spremenjana deklaracija ker se tolèe
//  Phostent	  = IntPtr;
  Phostent2	  = IntPtr;
//END GREGOR
{ This should cause problems, but I will solve them ONLY if they came ...      }
{ !!!InvalidTypes!!!                                                           }

// REMY - the following value was conflicting with iphlpapi.h under C++Builder
//	(and possibly other headers) so using the HPPEMIT further above as a workaround
  {$EXTERNALSYM time_t}
  time_t	  = Integer;
//END REMY

  // des_cblock	  = Integer;
  DES_cblock = array[0..7] of Byte;
  PDES_cblock = ^DES_cblock;
  const_des_cblock = des_cblock;
  // des_key_schedule= Integer;

  DES_LONG = LongWord;
  des_cblock_union = packed record
  //  case integer of
   //  0: (cblock: des_cblock);
   //   1: (deslong: array [1..2] of DES_LONG);
   deslong: array [1..2] of DES_LONG;
  end;

  des_ks_struct = packed record
    ks : des_cblock_union;
    weak_key: Integer;
  end;

  des_key_schedule = array[1..16] of des_ks_struct;

  des_cblocks     = Integer;
  {$NODEFINE size_t}
  size_t	  = Integer;

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


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

  // fn_SSL_set_app_data = 'SSL_set_app_data_indy'; // GREGOR  {Do not localize}
  // fn_SSL_get_app_data = 'SSL_get_app_data_indy'; // GREGOR  {Do not localize}
  fn_SSL_CTX_set_info_callback = 'SSL_CTX_set_info_callback_indy'; // GREGOR  {Do not localize}
  fn_X509_STORE_CTX_get_app_data = 'X509_STORE_CTX_get_app_data_indy';  {Do not localize}
  fn_X509_get_notBefore = 'X509_get_notBefore_indy';  {Do not localize}
  fn_X509_get_notAfter = 'X509_get_notAfter_indy';  {Do not localize}
  // fn_UCTTimeDecode = 'UCTTimeDecode_indy';  {Do not localize}
  fn_SSL_SESSION_get_id = 'SSL_SESSION_get_id_indy';  {Do not localize}
  fn_SSL_SESSION_get_id_ctx = 'SSL_SESSION_get_id_ctx_indy';  {Do not localize}
  fn_SSL_CTX_get_version = 'SSL_CTX_get_version_indy';  {Do not localize}
  fn_SSL_CTX_set_options = 'SSL_CTX_set_options_indy';  {Do not localize}


  fn_SSL_is_init_finished = 'mi_SSL_is_init_finished';  {Do not localize}
  fn_SSL_in_init = 'mi_SSL_in_init';  {Do not localize}
  fn_SSL_in_before = 'mi_SSL_in_before';  {Do not localize}
  fn_SSL_in_connect_init = 'mi_SSL_in_connect_init';  {Do not localize}
  fn_SSL_in_accept_init = 'mi_SSL_in_accept_init';  {Do not localize}
  fn_fopen = 'mi_fopen';  {Do not localize}
  fn_fclose = 'mi_fclose';  {Do not localize}

  //GREGOR
  fn_RAND_screen = 'RAND_screen';  {Do not localize}

  //expiriemental
  fn_ERR_get_error = 'ERR_get_error';  {Do not localize}
  fn_ERR_peek_error = 'ERR_peek_error';  {Do not localize}
  fn_ERR_clear_error = 'ERR_clear_error';  {Do not localize}
  fn_ERR_error_string = 'ERR_error_string';  {Do not localize}
  fn_ERR_error_string_n = 'ERR_error_string_n';  {Do not localize}
  fn_ERR_lib_error_string = 'ERR_lib_error_string';  {Do not localize}
  fn_ERR_func_error_string = 'ERR_func_error_string'; {Do not localize}
  fn_ERR_reason_error_string = 'ERR_reason_error_string'; {Do not localize}
  fn_ERR_load_ERR_strings = 'ERR_load_ERR_strings'; {Do not localize}
  fn_ERR_free_strings = 'ERR_free_strings'; {do not localize}

//procedures

  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_set_cipher_list)]
    function IdSslCtxSetCipherList(arg0: PSSL_CTX;
      var str: String):Integer;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_new)]
    function IdSslCtxNew(meth: PSSL_METHOD):PSSL_CTX;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_free)]
    procedure IdSslCtxFree (arg0: PSSL_CTX);   external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_set_fd)]
    function IdSslSetFd(s: PSSL;
      fd: Integer):Integer;    external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_use_PrivateKey_file)]                                             //TODO:  See if this is really correct
    function IdSslCtxUsePrivateKeyFile(ctx: PSSL_CTX;
      _file: String;
      _type: Integer):Integer;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_use_certificate_file)]
    function IdSslCtxUseCertificateFile(ctx: PSSL_CTX;  
      _file: String;
      _type: Integer):Integer;   external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_load_error_strings)]
    procedure IdSslLoadErrorStrings;   external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_state_string_long)]
    function IdSslStateStringLong(s: PSSL): String;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_get_peer_certificate)]
    function IdSslGetPeerCertificate(s: PSSL):PX509;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_set_verify)]
    procedure IdSslCtxSetVerify(ctx: PSSL_CTX;
      mode: Integer;
      arg2: PFunction);  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_set_verify_depth)]
    procedure IdSslCtxSetVerifyDepth(ctx: PSSL_CTX;
      depth: Integer);  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_get_verify_depth)]
    function IdSslCtxGetVerifyDepth(ctx: PSSL_CTX):Integer; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_set_default_passwd_cb)]
    procedure IdSslCtxSetDefaultPasswdCb(ctx: PSSL_CTX; cb: Ppem_password_cb); external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_set_default_passwd_cb_userdata)]
    procedure IdSslCtxSetDefaultPasswdCbUserdata(ctx: PSSL_CTX; u: IntPtr); external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_check_private_key)]
    function IdSslCtxCheckPrivateKeyFile(ctx: PSSL_CTX):Integer; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint =fn_SSL_new)]
    function IdSslNew(ctx: PSSL_CTX):PSSL;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint =fn_SSL_free)]
    procedure IdSslFree(ssl: PSSL); external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint =fn_SSL_accept)]
    function IdSslAccept(ssl: PSSL):Integer; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint =fn_SSL_connect)]
    function IdSslConnect(ssl: PSSL):Integer; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_read)]
    function IdSslRead(ssl: PSSL; var buf: String; num: Integer):Integer; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_peek)]
    function IdSslPeek(ssl: PSSL; var buf: String; num: Integer):Integer; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_write)]
    function IdSslWrite(ssl: PSSL;  buf: String; num: Integer):Integer; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_get_error)]
    function IdSslGetError(s: PSSL; ret_code: Integer):Integer; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSLv2_method)]
    function IdSslMethodV2 : PSSL_METHOD; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSLv2_server_method)]
    function IdSslMethodServerV2 : PSSL_METHOD; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSLv2_client_method)]
    function IdSslMethodClientV2 : PSSL_METHOD; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSLv3_method)]
    function IdSslMethodV3 : PSSL_METHOD;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSLv3_server_method)]
    function IdSslMethodServerV3 : PSSL_METHOD; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSLv3_client_method)]
    function IdSslMethodClientV3 : PSSL_METHOD; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSLv23_method)]
    function IdSslMethodV23 : PSSL_METHOD; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSLv23_server_method)]
    function IdSslMethodServerV23 : PSSL_METHOD;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSLv23_client_method)]
    function IdSslMethodClientV23 : PSSL_METHOD;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_TLSv1_method)]
    function IdSslMethodTLSV1:PSSL_METHOD;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_TLSv1_server_method)]
    function IdSslMethodServerTLSV1:PSSL_METHOD;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_TLSv1_client_method)]
    function IdSslMethodClientTLSV1 :PSSL_METHOD;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_shutdown)]
    function IdSslShutdown(s: PSSL):Integer;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_set_connect_state)]
    procedure IdSslSetConnectState(s: PSSL);  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_set_accept_state)]
    procedure IdSslSetAcceptState(s: PSSL);  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_set_shutdown)]
    procedure IdSslSetShutdown(ssl: PSSL; mode: Integer);  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_load_verify_locations)]
    function IdSslCtxLoadVerifyLocations(ctx: PSSL_CTX;
      CAfile: String;
      CApath: String):Integer; external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_get_session)]
    function IdSslGetSession(ssl: PSSL):PSSL_SESSION;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSLeay_add_ssl_algorithms)]
    function IdSslAddSslAlgorithms : Integer;   external;
  // IdSslSetAppData : function(s: PSSL; arg: Pointer):Integer cdecl = nil;
  // IdSslGetAppData : function(s: PSSL):Pointer cdecl = nil;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_set_info_callback)]
    procedure IdSslCtxSetInfoCallback(ctx: PSSL_CTX; cb: PFunction);  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_X509_STORE_CTX_get_app_data)]
    function IdSslX509StoreCtxGetAppData(ctx: PX509_STORE_CTX): IntPtr;   external;
  // 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;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_SESSION_get_id)]
    function IdSslSessionGetId(s: PSSL_SESSION; var id: String; var length: Integer):Integer;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_SESSION_get_id_ctx)]
    function IdSslSessionGetIdCtx (s: PSSL_SESSION; var id: String; var length: Integer):Integer;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_get_version)]
    function IdSslCtxGetVersion(ctx: PSSL_CTX):Integer;  external;
  [DllImport(SSL_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_set_options)]
    function IdSslCtxSetOptions(ctx: PSSL_CTX; op: Longint):Longint;   external;

  //Crypt Library

  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_X509_NAME_oneline)]
    function IdSslX509NameOneline(a: PX509_NAME; var buf: String; size: Integer):String;  external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_X509_NAME_hash)]
    function IdSslX509NameHash(x: PX509_NAME):Cardinal;   external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_X509_set_issuer_name)]
    function IdSslX509SetIssuerName(x: PX509; name: PX509_NAME):Integer;  external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_X509_get_issuer_name)]
    function IdSslX509GetIssuerName(a: PX509):PX509_NAME;  external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_X509_set_subject_name)]
    function IdSslX509SetSubjectName(x: PX509; name: PX509_NAME):Integer;  external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_X509_get_subject_name)]
    function IdSslX509GetSubjectName(a: PX509):PX509_NAME;   external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_X509_digest)]
    function IdSslX509Digest (data: PX509; _type: PEVP_MD; md: String; var len: UInteger):Integer;   external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint =  fn_EVP_md5)]
    function IdSslEvpMd5:PEVP_MD;   external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_X509_get_notBefore)]
    function  IdSslX509GetNotBefore(x509: PX509):  PASN1_UTCTIME;  external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_X509_get_notAfter)]
    function IdSslX509GetNotAfter(x509: PX509):PASN1_UTCTIME;  external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_X509_STORE_CTX_get_error)]
    function IdSslX509StoreCtxGetError(ctx: PX509_STORE_CTX):Integer;  external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_X509_STORE_CTX_set_error)]
    procedure IdSslX509StoreCtxSetError(ctx: PX509_STORE_CTX; s: Integer);  external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_X509_STORE_CTX_get_error_depth)]
    function IdSslX509StoreCtxGetErrorDepth(ctx: PX509_STORE_CTX):Integer;   external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_X509_STORE_CTX_get_current_cert)]
    function IdSslX509StoreCtxGetCurrentCert(ctx: PX509_STORE_CTX):PX509;  external;

  // 3DES functions
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_des_set_odd_parity)]
    procedure IdDES_set_odd_parity(Key: des_cblock);   external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_des_set_key)]
    function IdDES_set_key(key: const_des_cblock; schedule: des_key_schedule): Integer;   external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_des_ecb_encrypt)]
   procedure IdDES_ecb_encrypt(Input: des_cblock; output: des_cblock; ks: des_key_schedule; enc: Integer);   external;

  //More SSL functions
  // int SSL_set_ex_data(SSL *ssl,int idx,void *data);
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_set_ex_data)]
    function IdSSL_set_ex_data(ssl: PSSL; idx: Integer; data: IntPtr): Integer;  external;
  // void *SSL_get_ex_data(SSL *ssl,int idx);
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_get_ex_data)]
    function IdSSL_get_ex_data(ssl: PSSL; idx: integer): IntPtr;    external;

  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_load_client_CA_file)]
    function IdSSLLoadClientCAFile(const _file: String):PSTACK_X509_NAME;  external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_set_client_CA_list)]
    procedure IdSSLCtxSetClientCAList(ctx: PSSL_CTX; list: PSTACK_X509_NAME);   external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_set_default_verify_paths)]
    function IdSSLCtxSetDefaultVerifyPaths(ctx: PSSL_CTX): Integer;   external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CTX_set_session_id_context)]
    function IdSSLCtxSetSessionIdContext(ctx: PSSL_CTX;
      const sid_ctx: String;
      sid_ctx_len: UInteger):Integer;  external;

  //SSL_CIPHER_description
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CIPHER_description )]
    function IdSSLCipherDescription(arg0: PSSL_CIPHER;
      buf: String;
      size: Integer):String;  external;
  //f_SSL_get_current_cipher
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_get_current_cipher)]
    function IdSSLGetCurrentCipher(s: PSSL):PSSL_CIPHER;  external;

  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CIPHER_get_name)]
    function IdSSLCipherGetName(c: PSSL_CIPHER):String;  external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CIPHER_get_version)]
    function IdSSLCipherGetVersion(c: PSSL_CIPHER):String;  external;
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl,
    EntryPoint = fn_SSL_CIPHER_get_bits)]
    function IdSSLCipherGetBits(c: PSSL_CIPHER; var alg_bits: Integer):Integer;  external;

  //expirimental
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention= CallingConvention.cdecl ,
    EntryPoint = fn_ERR_error_string_n)]
    procedure IdSSLERR_error_string_n(AError : Cardinal; ErrorStr : String;
      Len : Cardinal);  external;
//unsigned long ERR_get_error(void );
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    //TODO:  See if this is right
    CallingConvention = CallingConvention.cdecl ,
    EntryPoint = fn_ERR_get_error)]
    function IdSSLERR_get_err : Cardinal;   external;
   //unsigned long ERR_peek_error(void );
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    //TODO:  See if this is right
    CallingConvention = CallingConvention.cdecl ,
    EntryPoint = fn_ERR_peek_error)]
    function IdSSLERR_peek_err : Cardinal;   external;
//  ERR_error_string(
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention = CallingConvention.cdecl ,
    EntryPoint = fn_ERR_clear_error)]
    procedure IdSSLERR_clear_error;  external;
//     char *ERR_error_string(unsigned long e,char *buf);

  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention = CallingConvention.cdecl ,
    EntryPoint = fn_ERR_error_string)]
    function IdSSLERR_error_string(e: cardinal; buff: String): String;  external;
  //const char *ERR_lib_error_string(unsigned long e);
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention = CallingConvention.cdecl ,
    EntryPoint = fn_ERR_lib_error_string)]
    function IdSSLERR_lib_error_string(e : Cardinal): String;  external;
  //const char *ERR_func_error_string(unsigned long e);
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention = CallingConvention.cdecl ,
    EntryPoint = fn_ERR_func_error_string)]
    function IdSSLERR_func_error_string(e : Cardinal): String;  external;
  //const char *ERR_reason_error_string(unsigned long e);
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention = CallingConvention.cdecl ,
    EntryPoint = fn_ERR_reason_error_string)]
    function IdSSLERR_reason_error_string(e : Cardinal): String;  external;
  // void ERR_load_ERR_strings(void);
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention = CallingConvention.cdecl ,
    EntryPoint =  fn_ERR_load_ERR_strings)]
    procedure IdSSLERR_load_ERR_strings;   external;
  //void ERR_load_crypto_strings(void);
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention = CallingConvention.cdecl ,
    EntryPoint = fn_ERR_load_crypto_strings)]
    procedure IdSSLERR_load_crypto_strings;   external;
  //void ERR_free_strings(void)
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention = CallingConvention.cdecl ,
    EntryPoint = fn_ERR_free_strings )]
    procedure IdSSLERR_free_strings;    external;

function IdSslUCTTimeDecode(var UCTtime : ASN1_UTCTIME; Var year, month, day, hour, min, sec: Word;
  Var tz_hour, tz_min: Integer): Integer;
//function IdSslSetAppData(s: PSSL; arg: IntPtr): Integer;
function IdSslGetAppData(s: PSSL): IntPtr;

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

procedure InitializeRandom;

implementation

uses
  SysUtils;

  // LIBEAY functions - open SSL 0.9.6a
  [DllImport(SSLCLIB_DLL_name, CharSet = CharSet.Ansi,
    SetLastError = False,
    CallingConvention = CallingConvention.cdecl ,
    EntryPoint = fn_RAND_screen )]
    procedure IdSslRandScreen;  external;

var
   GFailedToLoad : String;
    GLoadedAttempt : Boolean;
    GLoaded : Boolean;
    // LIBEAY functions - open SSL 0.9.6a
    GSslRandScreen : Boolean;

function ErrMsg(AErr : Cardinal) : string;
var
  LString: String;
Begin
  SetLength(LString, 300);
  IdSSLERR_error_string_n(AErr,LString,300);
  Result := LString;
end;

procedure IndyInternalFailedToLoad(const AMod : HMODULE; var VRes : Boolean; const AProcName : String);
var LAddr : IntPtr;
begin
  LAddr := GetProcAddress(AMod, AProcName);
  if LAddr.ToInt32 = 0 then
  begin
    GFailedToLoad := GFailedToLoad + ' ' + AProcName;
    if VRes then
    begin
      VRes := False;
    end;
  end;
end;

function LoadedAndSetup : Boolean;
var LIdCrypto, LIdSSL : HMODULE;
  LAddr : IntPtr;
begin
  Result := True;
  LIdSSL := 0;
  LIdCrypto := LoadLibrary(SSLCLIB_DLL_name);
  try
    if LIdCrypto=0 then
    begin
      GFailedToLoad := 'Failed to load '+SSLCLIB_DLL_name+'.';  {Do not localize}
      Result := False;
    end
    else
    begin
      LIdSSL := LoadLibrary(SSL_DLL_name);
    end;
    if (LIdCrypto<>0) and (LIdSSL<>0) then
    begin
      GFailedToLoad := '';  {Do not localize}
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_set_cipher_list);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_new);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_free);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_set_fd);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_use_PrivateKey_file);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_use_certificate_file);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_load_error_strings);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_state_string_long);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_get_peer_certificate);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_set_verify);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_set_verify_depth);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_get_verify_depth);

      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_set_default_passwd_cb);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_set_default_passwd_cb_userdata);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_check_private_key);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_new);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_free);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_accept);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_connect);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_read);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_peek);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_write);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_get_error);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSLv2_method);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSLv2_server_method);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSLv2_client_method);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSLv3_method);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSLv3_server_method);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSLv3_client_method);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSLv23_method);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSLv23_server_method);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSLv23_client_method);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_TLSv1_method);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_TLSv1_server_method);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_TLSv1_client_method);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_shutdown);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_set_connect_state);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_set_accept_state);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_set_shutdown);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_load_verify_locations);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_get_session);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSLeay_add_ssl_algorithms);

    // Indy custom library

    // IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_set_app_data);
    // IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_get_app_data);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_set_info_callback);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_X509_STORE_CTX_get_app_data);
    // IndyInternalFailedToLoad(LIdSSL,Result,fn_UCTTimeDecode);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_SESSION_get_id);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_SESSION_get_id_ctx);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_get_version);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_set_options);
    //IndyInternalFailedToLoad
    //Crypto Lib
      IndyInternalFailedToLoad(LIdCrypto, Result,fn_X509_NAME_oneline);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_X509_NAME_hash);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_X509_set_issuer_name);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_X509_get_issuer_name);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_X509_set_subject_name);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_X509_get_subject_name);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_X509_digest);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_EVP_md5);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_X509_STORE_CTX_get_error);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_X509_STORE_CTX_set_error);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_X509_STORE_CTX_get_error_depth);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_X509_STORE_CTX_get_current_cert);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_RAND_screen);

    // 3DES
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_des_set_odd_parity);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_des_set_key);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_des_ecb_encrypt);
    // More SSL functions

      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_set_ex_data);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_get_ex_data);

      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_load_client_CA_file);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_set_client_CA_list);

      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_set_default_verify_paths);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CTX_set_session_id_context);

      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CIPHER_description);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_get_current_cipher);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CIPHER_get_name);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CIPHER_get_version);
      IndyInternalFailedToLoad(LIdSSL,Result,fn_SSL_CIPHER_get_bits);

      IndyInternalFailedToLoad(LIdCrypto,Result,fn_ERR_get_error);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_ERR_peek_error);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_ERR_clear_error);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_ERR_error_string);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_ERR_error_string_n);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_ERR_lib_error_string );
      IndyInternalFailedToLoad(LIdCrypto,Result, fn_ERR_func_error_string );
      IndyInternalFailedToLoad(LIdCrypto,Result, fn_ERR_reason_error_string );
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_ERR_load_ERR_strings);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_ERR_load_crypto_strings);
      IndyInternalFailedToLoad(LIdCrypto,Result,fn_ERR_free_strings);

      LAddr := GetProcAddress(LIdCrypto,fn_RAND_screen);

      if Result then
      begin
        GSslRandScreen := (LAddr.ToInt32 = 0);
      end;

    end
    else
    begin
      GFailedToLoad := 'Failed to load '+SSL_DLL_name+'.';  {Do not localize}
      Result := False;
    end;
  finally
    if LIdCrypto <> 0 then
    begin
      FreeLibrary(LIdCrypto);
    end;
    if LIdSSL <> 0 then
    begin
      FreeLibrary(LIdCrypto);
    end;
  end;
end;

Function Load:Boolean;
begin
  GLoadedAttempt := True;
  GLoaded := LoadedAndSetup;
  Result := GLoaded;
//  If Result Then IdSslLoadErrorStrings; // we read error strings in context loading dll-s
end;

procedure Unload;
begin
  //This is left empty because DLL's are managed in DotNET
  //Differently.  Load just loads the DLL's and sees if the functions
  //we need exist, than unloads.  THis is for compatibility
  //with Win32 behavior.
  //In DotNET, the DLL functions are dynamically when called and unloaded
  //at program termination.
end;

Function WhichFailedToLoad:String;
Begin
   Result := GFailedToLoad;
End;

// Author : Gregor Ibich (gregor.ibic@intelicom.si)
// Pascal translation: Doychin Bondzhev (doichin@5group.com)

// Converts the following string representatio into coresponding parts
// YYMMDDHHMMSS(+|-)HH( )MM
function IdSslUCTTimeDecode(var UCTtime : ASN1_UTCTIME; Var year, month, day, hour, min, sec: Word;
  Var tz_hour, tz_min: Integer): Integer;
Var
  i, tz_dir: Integer;
  time_str: String;
begin

  time_Str := UCTTime.data;
   result := 1;
  // Check if first 12 chars are numbers
  for i := 1 to 12 do begin
    if (time_str[i] > '9') or (time_str[i] < '0') then
    begin
      exit;    {Do not Localize}
    end;
  end;

  // Convert time from string to number
  year := StrToInt(Copy(time_str, 1, 2)) + 1900;
  month := StrToInt(Copy(time_str, 3, 2));
  day := StrToInt(Copy(time_str, 5, 2));
  hour := StrToInt(Copy(time_str, 7, 2));
  min := StrToInt(Copy(time_str, 9, 2));
  sec := StrToInt(Copy(time_str, 11, 2));

  // Fix year. This function is Y2k but isn't compatible with Y2k5 :-(    {Do not Localize}
  if (year < 1950) then year := Year + 100;
  // Check TZ
  tz_hour := 0;
  tz_min := 0;

  if (time_str[13] = '-' ) or (time_str[13] = '+') then begin    {Do not Localize}
    if time_str[13] = '-' then begin    {Do not Localize}
       tz_dir := -1;
    end else begin
       tz_dir := 1;
    end;

    for i := 14 to 18 do begin  // Check if numbers are numbers
      if i = 16 then continue;
      if (time_str[i] > '9' ) or (time_str[i] < '0') then exit;    {Do not Localize}
    end;

    tz_hour := StrToInt(Copy(time_str, 14, 15)) * tz_dir;
    tz_min  := StrToInt(Copy(time_str, 17, 18))*tz_dir;
  end;
end;

function IdSslGetAppData(s: PSSL): IntPtr;
begin
  result := IdSSL_get_ex_data(s, 0);
end;

procedure InitializeRandom;
begin
  if GSslRandScreen then
  begin
    IdSslRandScreen;
  end;
end;

initialization
  GLoadedAttempt := False;
  GLoaded := False;
  GSslRandScreen := False;
end.


