IdSSLOpenSSLHeaders_static.pas 58 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110
  1. unit IdSSLOpenSSLHeaders_static;
  2. interface
  3. {$I IdCompilerDefines.inc}
  4. {$IFNDEF USE_OPENSSL}
  5. {$message error Should not compile if USE_OPENSSL is not defined!!!}
  6. {$ENDIF}
  7. {$IFDEF HAS_DIRECTIVE_HPPEMIT_LINKUNIT}
  8. {$HPPEMIT LINKUNIT}
  9. {$ELSE}
  10. {$HPPEMIT '#pragma link "IdSSLOpenSSLHeaders_static"'}
  11. {$ENDIF}
  12. implementation
  13. {$IFDEF STATICLOAD_OPENSSL}
  14. uses
  15. IdGlobal, Posix.SysTypes, IdCTypes, IdSSLOpenSSLHeaders;
  16. const
  17. SSL_LIB_name = 'libssl.a'; {Do not Localize}
  18. SSLCLIB_LIB_name = 'libcrypto.a'; {Do not Localize}
  19. function SSL_CTX_set_cipher_list_func(_para1: PSSL_CTX; const str: PIdAnsiChar): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_CTX_set_cipher_list';
  20. function SSL_CTX_new_func(meth: PSSL_METHOD): PSSL_CTX cdecl; external SSL_LIB_NAME name 'SSL_CTX_new';
  21. procedure SSL_CTX_free_proc(_para1: PSSL_CTX) cdecl; external SSL_LIB_NAME name 'SSL_CTX_free';
  22. function SSL_set_fd_func(s: PSSL; fd: TIdC_INT): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_set_fd';
  23. function SSL_CTX_use_PrivateKey_file_func(ctx: PSSL_CTX; const _file: PIdAnsiChar; _type: TIdC_INT): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_CTX_use_PrivateKey_file';
  24. function SSL_CTX_use_PrivateKey_func(ctx: PSSL_CTX; pkey: PEVP_PKEY): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_CTX_use_PrivateKey';
  25. function SSL_CTX_use_certificate_func(ctx: PSSL_CTX; x: PX509): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_CTX_use_certificate';
  26. function SSL_CTX_use_certificate_file_func(ctx: PSSL_CTX; const _file: PIdAnsiChar; _type: TIdC_INT): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_CTX_use_certificate_file';
  27. //procedure SSL_load_error_strings_proc cdecl; external SSL_LIB_NAME name 'SSL_load_error_strings';
  28. function SSL_state_string_long_func(s: PSSL): PIdAnsiChar cdecl; external SSL_LIB_NAME name 'SSL_state_string_long';
  29. function SSL_alert_desc_string_long_func(value : TIdC_INT) : PIdAnsiChar cdecl; external SSL_LIB_NAME name 'SSL_alert_desc_string_long';
  30. function SSL_alert_type_string_long_func(value : TIdC_INT) : PIdAnsiChar cdecl; external SSL_LIB_NAME name 'SSL_alert_type_string_long';
  31. function SSL_get_peer_certificate_func(s: PSSL): PX509 cdecl; external SSL_LIB_NAME name 'SSL_get1_peer_certificate';
  32. function SSL_get_ex_data_X509_STORE_CTX_idx_func: Integer cdecl; external SSLCLIB_LIB_name name 'SSL_get_ex_data_X509_STORE_CTX_idx';
  33. procedure SSL_CTX_set_verify_proc(ctx: PSSL_CTX; mode: TIdC_INT; callback: TSSL_CTX_set_verify_callback) cdecl; external SSL_LIB_NAME name 'SSL_CTX_set_verify';
  34. procedure SSL_CTX_set_verify_depth_proc(ctx: PSSL_CTX; depth: TIdC_INT) cdecl; external SSL_LIB_NAME name 'SSL_CTX_set_verify_depth';
  35. function SSL_CTX_get_verify_depth_func(ctx: PSSL_CTX): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_CTX_get_verify_depth';
  36. procedure SSL_CTX_set_default_passwd_cb_proc(ctx: PSSL_CTX; cb: ppem_password_cb) cdecl; external SSL_LIB_NAME name 'SSL_CTX_set_default_passwd_cb';
  37. procedure SSL_CTX_set_default_passwd_cb_userdata_proc(ctx: PSSL_CTX; u: Pointer) cdecl; external SSL_LIB_NAME name 'SSL_CTX_set_default_passwd_cb_userdata';
  38. function SSL_CTX_check_private_key_func(ctx: PSSL_CTX): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_CTX_check_private_key';
  39. function SSL_new_func(ctx: PSSL_CTX): PSSL cdecl; external SSL_LIB_NAME name 'SSL_new';
  40. procedure SSL_free_proc(ssl: PSSL) cdecl; external SSL_LIB_NAME name 'SSL_free';
  41. function SSL_accept_func(ssl: PSSL): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_accept';
  42. function SSL_connect_func(ssl: PSSL): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_connect';
  43. function SSL_read_func(ssl: PSSL; buf: Pointer; num: TIdC_INT): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_read';
  44. function SSL_peek_func(ssl: PSSL; buf: Pointer; num: TIdC_INT): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_peek';
  45. function SSL_pending_func(ssl : PSSL) : TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_pending';
  46. function SSL_write_func(ssl: PSSL; const buf: Pointer; num: TIdC_INT): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_write';
  47. function SSL_ctrl_func(ssl : PSSL; cmd : TIdC_INT; larg : TIdC_LONG; parg : Pointer) : TIdC_LONG cdecl; external SSL_LIB_NAME name 'SSL_ctrl';
  48. function SSL_callback_ctrl_func(ssl : PSSL; cmd : TIdC_INT; fp : SSL_callback_ctrl_fp) : TIdC_LONG cdecl; external SSL_LIB_NAME name 'SSL_callback_ctrl';
  49. function SSL_CTX_ctrl_func(ssl: PSSL_CTX; cmd: TIdC_INT; larg: TIdC_LONG; parg: Pointer): TIdC_LONG cdecl; external SSL_LIB_NAME name 'SSL_CTX_ctrl';
  50. function SSL_CTX_callback_ctrl_func(ssl : PSSL_CTX; cmd : TIdC_INT; fp : SSL_callback_ctrl_fp) : TIdC_LONG cdecl; external SSL_LIB_NAME name 'SSL_CTX_callback_ctrl';
  51. function SSL_get_error_func(s: PSSL; ret_code: TIdC_INT): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_get_error';
  52. {$IFNDEF OPENSSL_NO_SSL2}
  53. //function SSLv2_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'SSLv2_method';
  54. //function SSLv2_server_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'SSLv2_server_method';
  55. //function SSLv2_client_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'SSLv2_client_method';
  56. {$ENDIF}
  57. //function SSLv3_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'SSLv3_method';
  58. //function SSLv3_server_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'SSLv3_server_method';
  59. //function SSLv3_client_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'SSLv3_client_method';
  60. //function SSLv23_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'SSLv23_method';
  61. //function SSLv23_server_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'SSLv23_server_method';
  62. //function SSLv23_client_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'SSLv23_client_method';
  63. function TLSv1_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'TLSv1_method';
  64. function TLSv1_server_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'TLSv1_server_method';
  65. function TLSv1_client_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'TLSv1_client_method';
  66. function TLSv1_1_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'TLSv1_1_method';
  67. function TLSv1_1_server_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'TLSv1_1_server_method';
  68. function TLSv1_1_client_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'TLSv1_1_client_method';
  69. function TLSv1_2_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'TLSv1_2_method';
  70. function TLSv1_2_server_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'TLSv1_2_server_method';
  71. function TLSv1_2_client_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'TLSv1_2_client_method';
  72. function DTLSv1_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'DTLSv1_method';
  73. function DTLSv1_server_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'DTLSv1_server_method';
  74. function DTLSv1_client_method_func: PSSL_METHOD cdecl; external SSL_LIB_NAME name 'DTLSv1_client_method';
  75. function SSL_shutdown_func(s: PSSL): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_shutdown';
  76. procedure SSL_set_connect_state_proc(s: PSSL) cdecl; external SSL_LIB_NAME name 'SSL_set_connect_state';
  77. procedure SSL_set_accept_state_proc(s: PSSL) cdecl; external SSL_LIB_NAME name 'SSL_set_accept_state';
  78. procedure SSL_set_shutdown_proc(ssl: PSSL; mode: TIdC_INT) cdecl; external SSL_LIB_NAME name 'SSL_set_shutdown';
  79. function SSL_CTX_load_verify_locations_func(ctx: PSSL_CTX; const CAfile: PIdAnsiChar; const CApath: PIdAnsiChar): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_CTX_load_verify_locations';
  80. function SSL_get_session_func(const ssl: PSSL): PSSL_SESSION cdecl; external SSL_LIB_NAME name 'SSL_get_session';
  81. //function SSLeay_add_ssl_algorithms_func: TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_library_init';
  82. function SSL_SESSION_get_id_func(const s: PSSL_SESSION; length: PIdC_UINT): PIdAnsiChar cdecl; external SSL_LIB_NAME name 'SSL_SESSION_get_id';
  83. procedure SSL_copy_session_id_proc(sslTo: PSSL; const sslFrom: PSSL) cdecl; external SSL_LIB_NAME name 'SSL_copy_session_id';
  84. //function SSLeay_version_func(_type : TIdC_INT) : PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'SSLeay_version';
  85. //function SSLeay_func: TIdC_ULONG cdecl; external SSLCLIB_LIB_name name 'SSLeay';
  86. function d2i_X509_NAME_func(pr : PPX509_NAME; _in : PPByte; length : TIdC_LONG):PX509_NAME cdecl; external SSLCLIB_LIB_name name 'd2i_X509_NAME';
  87. function i2d_X509_NAME_func(x : PX509_NAME; buf : PPByte) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_X509_NAME';
  88. function X509_NAME_oneline_func(a: PX509_NAME; buf: PIdAnsiChar; size: TIdC_INT): PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'X509_NAME_oneline';
  89. function X509_NAME_cmp_func(const a, b: PX509_NAME): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_NAME_cmp';
  90. function X509_NAME_hash_func(x: PX509_NAME): TIdC_ULONG cdecl; external SSLCLIB_LIB_name name 'X509_NAME_hash_ex';
  91. function X509_set_issuer_name_func(x: PX509; name: PX509_NAME): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_set_issuer_name';
  92. function X509_get_issuer_name_func(a: PX509): PX509_NAME cdecl; external SSLCLIB_LIB_name name 'X509_get_issuer_name';
  93. function X509_set_subject_name_func(x: PX509; name: PX509_NAME): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_set_subject_name';
  94. function X509_get_subject_name_func(a: PX509): PX509_NAME cdecl; external SSLCLIB_LIB_name name 'X509_get_subject_name';
  95. function X509_digest_func(const data: PX509; const _type: PEVP_MD;
  96. md: PByte; var len: TIdC_UINT): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_digest';
  97. function X509_LOOKUP_ctrl_func(ctx : PX509_LOOKUP; cmd : TIdC_INT; argc : PIdAnsiChar; arg1 : TIdC_LONG; ret : PPIdAnsiChar) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_LOOKUP_ctrl';
  98. function X509_STORE_add_cert_func(ctx : PX509_STORE; x : PX509) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_STORE_add_cert';
  99. function X509_STORE_add_crl_func(ctx : PX509_STORE; x : PX509_CRL) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_STORE_add_crl';
  100. function X509_STORE_CTX_get_ex_data_func(ctx: PX509_STORE_CTX; idx: TIdC_INT): Pointer cdecl; external SSLCLIB_LIB_name name 'X509_STORE_CTX_get_ex_data';
  101. function X509_STORE_CTX_get_error_func(ctx: PX509_STORE_CTX): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_STORE_CTX_get_error';
  102. procedure X509_STORE_CTX_set_error_proc(ctx: PX509_STORE_CTX; s: TIdC_INT) cdecl; external SSLCLIB_LIB_name name 'X509_STORE_CTX_set_error';
  103. function X509_STORE_CTX_get_error_depth_func(ctx: PX509_STORE_CTX): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_STORE_CTX_get_error_depth';
  104. function X509_STORE_CTX_get_current_cert_func(ctx: PX509_STORE_CTX): PX509 cdecl; external SSLCLIB_LIB_name name 'X509_STORE_CTX_get_current_cert';
  105. function X509_STORE_add_lookup_func(v : PX509_STORE; m : PX509_LOOKUP_METHOD) : PX509_LOOKUP cdecl; external SSLCLIB_LIB_name name 'X509_STORE_add_lookup';
  106. function X509_STORE_load_locations_func( ctx : PX509_STORE; const _file, path : PIdAnsiChar) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_STORE_load_locations';
  107. function i2d_DSAPrivateKey_func(x: PDSA; buf: PPByte): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_DSAPrivateKey';
  108. function d2i_DSAPrivateKey_func(pr : PDSA; _in : PPByte; len : TIdC_INT): PDSA cdecl; external SSLCLIB_LIB_name name 'd2i_DSAPrivateKey';
  109. function d2i_PrivateKey_func(pr : PEVP_PKEY; _in : PPByte; len : TIdC_INT): PEVP_PKEY cdecl; external SSLCLIB_LIB_name name 'd2i_PrivateKey';
  110. function d2i_PrivateKey_bio_func(bp : PBIO; a : PPEVP_PKEY) : PEVP_PKEY cdecl; external SSLCLIB_LIB_name name 'd2i_PrivateKey_bio';
  111. function X509_sign_func(x: PX509; pkey: PEVP_PKEY; const md: PEVP_MD): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_sign';
  112. function X509_REQ_sign_func(x: PX509_REQ; pkey: PEVP_PKEY; const md: PEVP_MD): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_REQ_sign';
  113. function X509_REQ_add_extensions_func(req: PX509_REQ; exts: PSTACK_OF_X509_EXTENSION): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_REQ_add_extensions';
  114. function X509V3_EXT_conf_nid_func(conf: PLHASH; ctx: PX509V3_CTX; ext_nid: TIdC_INT; value: PIdAnsiChar): PX509_EXTENSION cdecl; external SSLCLIB_LIB_name name 'X509V3_EXT_conf_nid';
  115. function X509_EXTENSION_create_by_NID_func(ex: PPX509_EXTENSION; nid: TIdC_INT;
  116. crit: TIdC_INT; data: PASN1_OCTET_STRING): PX509_EXTENSION cdecl; external SSLCLIB_LIB_name name 'X509_EXTENSION_create_by_NID';
  117. procedure X509V3_set_ctx_proc(ctx: PX509V3_CTX; issuer, subject: PX509; req: PX509_REQ; crl: PX509_CRL; flags: TIdC_INT) cdecl; external SSLCLIB_LIB_name name 'X509V3_set_ctx';
  118. procedure X509_EXTENSION_free_proc(ex: PX509_EXTENSION) cdecl; external SSLCLIB_LIB_name name 'X509_EXTENSION_free';
  119. function X509_add_ext_func(cert: PX509; ext: PX509_EXTENSION; loc: TIdC_INT): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_add_ext';
  120. {$IFNDEF OPENSSL_NO_BIO}
  121. function X509_print_func(bp : PBIO; x : PX509) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_print';
  122. {$ENDIF}
  123. procedure RAND_cleanup_func; cdecl; external SSLCLIB_LIB_name name 'RAND_cleanup';
  124. function RAND_bytes_func(buf : PIdAnsiChar; num : integer) : integer; cdecl; external SSLCLIB_LIB_name name 'RAND_bytes';
  125. function RAND_pseudo_bytes_func(buf : PIdAnsiChar; num : integer) : integer; cdecl; external SSLCLIB_LIB_name name 'RAND_pseudo_bytes';
  126. procedure RAND_seed_proc(buf : PIdAnsiChar; num : integer); cdecl; external SSLCLIB_LIB_name name 'RAND_seed';
  127. procedure RAND_add_proc(buf : PIdAnsiChar; num : integer; entropy : integer); cdecl; external SSLCLIB_LIB_name name 'RAND_add';
  128. function RAND_status_func: integer; cdecl; external SSLCLIB_LIB_name name 'RAND_status';
  129. {$IFDEF SYS_WIN}
  130. procedure RAND_screen_proc cdecl; external SSLCLIB_LIB_name name 'RAND_screen';
  131. function RAND_event_func(iMsg : UINT; wp : wparam; lp : lparam) : integer; cdecl; external SSLCLIB_LIB_name name 'RAND_event';
  132. {$ENDIF}
  133. {$IFNDEF OPENSSL_NO_DES}
  134. procedure DES_set_odd_parity_proc(key: Pdes_cblock) cdecl; external SSLCLIB_LIB_name name 'DES_set_odd_parity';
  135. function DES_set_key_func(key: Pconst_DES_cblock; schedule: DES_key_schedule): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'DES_set_key';
  136. procedure DES_ecb_encrypt_proc(input, output: Pconst_DES_cblock; ks: DES_key_schedule; enc: TIdC_INT) cdecl; external SSLCLIB_LIB_name name 'DES_ecb_encrypt';
  137. //procedure Id_ossl_old_des_set_odd_parity_proc(key : p_ossl_old_des_cblock) cdecl; external SSLCLIB_LIB_name name 'Id_ossl_old_des_set_odd_parity';
  138. //function Id_ossl_old_des_set_key_func(key : P_ossl_old_des_cblock; schedule : _ossl_old_des_key_schedule) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'Id_ossl_old_des_set_key';
  139. //procedure Id_ossl_old_des_ecb_encrypt_proc( input : p_ossl_old_des_cblock; output : p_ossl_old_des_cblock; ks : p_ossl_old_des_key_schedule; enc : TIdC_int) cdecl; external SSLCLIB_LIB_name name 'Id_ossl_old_des_ecb_encrypt';
  140. {$ENDIF}
  141. function SSL_set_ex_data_func(ssl: PSSL; idx: TIdC_INT; data: Pointer): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_set_ex_data';
  142. function SSL_get_ex_data_func(ssl: PSSL; idx: TIdC_INT): Pointer cdecl; external SSL_LIB_NAME name 'SSL_get_ex_data';
  143. function SSL_load_client_CA_file_func(const _file: PIdAnsiChar): PSTACK_OF_X509_NAME cdecl; external SSL_LIB_NAME name 'SSL_load_client_CA_file';
  144. procedure SSL_CTX_set_client_CA_list_proc(ctx: PSSL_CTX; list: PSTACK_OF_X509_NAME) cdecl; external SSL_LIB_NAME name 'SSL_CTX_set_client_CA_list';
  145. function SSL_CTX_set_default_verify_paths_func(ctx: PSSL_CTX): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_CTX_set_default_verify_paths';
  146. function SSL_CTX_set_session_id_context_func(ctx: PSSL_CTX; const sid_ctx: PByte; sid_ctx_len: TIdC_UINT): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_CTX_set_session_id_context';
  147. function SSL_CIPHER_description_func(_para1: PSSL_CIPHER; buf: PIdAnsiChar; size: TIdC_INT): PIdAnsiChar cdecl; external SSL_LIB_NAME name 'SSL_CIPHER_description';
  148. function SSL_get_current_cipher_func(const s: PSSL): PSSL_CIPHER cdecl; external SSL_LIB_NAME name 'SSL_get_current_cipher';
  149. function SSL_CIPHER_get_name_func(const c: PSSL_CIPHER): PIdAnsiChar cdecl; external SSL_LIB_NAME name 'SSL_CIPHER_get_name';
  150. function SSL_CIPHER_get_version_func(const c: PSSL_CIPHER): PIdAnsiChar cdecl; external SSL_LIB_NAME name 'SSL_CIPHER_get_version';
  151. function SSL_CIPHER_get_bits_func(const c: PSSL_CIPHER; var alg_bits: TIdC_INT): TIdC_INT cdecl; external SSL_LIB_NAME name 'SSL_CIPHER_get_bits';
  152. //procedure CRYPTO_lock_proc(mode, _type : TIdC_INT; const _file : PIdAnsiChar; line : TIdC_INT) cdecl; external SSLCLIB_LIB_name name 'CRYPTO_lock';
  153. //function CRYPTO_num_locks_func: TIdC_INT cdecl; external SSLCLIB_LIB_name name 'CRYPTO_num_locks';
  154. //procedure CRYPTO_set_locking_callback_proc(func: TIdSslLockingCallback) cdecl; external SSLCLIB_LIB_name name 'CRYPTO_set_locking_callback';
  155. //function CRYPTO_THREADID_set_callback_func(threadid_func : TCRYPTO_THREADID_set_callback_threadid_func) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'CRYPTO_THREADID_set_callback';
  156. //procedure CRYPTO_THREADID_set_numeric_proc(id : PCRYPTO_THREADID; val : TIdC_ULONG) cdecl; external SSLCLIB_LIB_name name 'CRYPTO_THREADID_set_numeric';
  157. //procedure CRYPTO_THREADID_set_pointer_proc(id : PCRYPTO_THREADID; ptr : Pointer) cdecl; external SSLCLIB_LIB_name name 'CRYPTO_THREADID_set_pointer';
  158. procedure ERR_new_proc cdecl; external SSLCLIB_LIB_name name 'ERR_new';
  159. procedure ERR_set_debug_proc(_file : PIdAnsiChar; line: TIdC_INT; func: PIdAnsiChar) cdecl; external SSLCLIB_LIB_name name 'ERR_set_debug';
  160. procedure ERR_set_error_proc(lib, reason : TIdC_INT; fmt : PIdAnsiChar) cdecl; external SSLCLIB_LIB_name name 'ERR_set_error';
  161. //procedure ERR_put_error_proc(lib, func, reason : TIdC_INT; _file : PIdAnsiChar; line : TIdC_INT) cdecl; external SSLCLIB_LIB_name name 'ERR_put_error';
  162. function ERR_get_error_func: TIdC_ULONG cdecl; external SSLCLIB_LIB_name name 'ERR_get_error';
  163. function ERR_peek_error_func: TIdC_ULONG cdecl; external SSLCLIB_LIB_name name 'ERR_peek_error';
  164. function ERR_peek_last_error_func: TIdC_ULONG cdecl; external SSLCLIB_LIB_name name 'ERR_peek_last_error';
  165. procedure ERR_clear_error_proc cdecl; external SSLCLIB_LIB_name name 'ERR_clear_error';
  166. function ERR_error_string_func(e: TIdC_ULONG; buf: PIdAnsiChar): PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'ERR_error_string';
  167. procedure ERR_error_string_n_proc(e: TIdC_ULONG; buf: PIdAnsiChar; len : size_t) cdecl; external SSLCLIB_LIB_name name 'ERR_error_string_n';
  168. function ERR_lib_error_string_func(e : TIdC_ULONG): PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'ERR_lib_error_string';
  169. function ERR_func_error_string_func(e : TIdC_ULONG): PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'ERR_func_error_string';
  170. function ERR_reason_error_string_func(e : TIdC_ULONG): PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'ERR_reason_error_string';
  171. procedure ERR_load_ERR_strings_proc cdecl; external SSLCLIB_LIB_name name 'ERR_load_ERR_strings';
  172. //procedure ERR_load_crypto_strings_proc cdecl; external SSLCLIB_LIB_name name 'ERR_load_crypto_strings';
  173. //procedure ERR_free_strings_proc cdecl; external SSLCLIB_LIB_name name 'ERR_free_strings';
  174. procedure ERR_remove_thread_state_proc(const tId : PCRYPTO_THREADID) cdecl; external SSLCLIB_LIB_name name 'ERR_remove_thread_state';
  175. //procedure CRYPTO_cleanup_all_ex_data_proc cdecl; external SSLCLIB_LIB_name name 'CRYPTO_cleanup_all_ex_data';
  176. function SSL_COMP_get_compression_methods_func: PSTACK_OF_SSL_COMP cdecl; external SSL_LIB_NAME name 'SSL_COMP_get_compression_methods';
  177. //procedure SSL_COMP_free_compression_methods_func; cdecl; external SSL_LIB_NAME name 'SSL_COMP_free_compression_methods'
  178. procedure sk_pop_free_proc(st: PSTACK; func: Tsk_pop_free_func) cdecl; external SSLCLIB_LIB_name name 'OPENSSL_sk_pop_free';
  179. procedure RSA_free_proc(rsa: PRSA) cdecl; external SSLCLIB_LIB_name name 'RSA_free';
  180. function RSA_generate_key_func(bits: TIdC_INT; e: TIdC_ULONG; callback: TRSA_generate_key_callback; cb_arg: Pointer): PRSA cdecl; external SSLCLIB_LIB_name name 'RSA_generate_key';
  181. function RSA_check_key_func(const rsa: PRSA): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'RSA_check_key';
  182. function RSA_generate_key_ex_func(rsa : PRSA; bits : TIdC_INT; e : PBIGNUM; cb : PBN_GENCB) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'RSA_generate_key_ex';
  183. function RSA_new_func: PRSA cdecl; external SSLCLIB_LIB_name name 'RSA_new';
  184. function RSA_size_func(key: PRSA): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'RSA_size';
  185. function RSA_private_decrypt_func(flen: TIdC_INT; from: PByte; _to: PByte; rsa: PRSA; padding: TIdC_INT): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'RSA_private_decrypt';
  186. function RSA_public_encrypt_func(flen: TIdC_INT; from: PByte; _to: PByte; rsa: PRSA; padding: TIdC_INT): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'RSA_public_encrypt';
  187. procedure DH_free_proc(dh: PDH) cdecl; external SSLCLIB_LIB_name name 'DH_free';
  188. function BN_new_func: PBIGNUM cdecl; external SSLCLIB_LIB_name name 'BN_new';
  189. procedure BN_free_proc(a: PBIGNUM) cdecl; external SSLCLIB_LIB_name name 'BN_free';
  190. function BN_hex2bn_func(var n:PBIGNUM; const Str: PIdAnsiChar): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'BN_hex2bn';
  191. function BN_bn2hex_func(const n:PBIGNUM): PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'BN_bn2hex';
  192. function BN_set_word_func(a: PBIGNUM; w: TIdC_ULONG): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'BN_set_word';
  193. function BIO_new_func(_type: PBIO_METHOD): PBIO cdecl; external SSLCLIB_LIB_name name 'BIO_new';
  194. function BIO_free_func(bio: PBIO): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'BIO_free';
  195. function BIO_new_mem_buf_func(buf : Pointer; len : TIdC_INT) : PBIO cdecl; external SSLCLIB_LIB_name name 'BIO_new_mem_buf';
  196. function BIO_s_mem_func: PBIO_METHOD cdecl; external SSLCLIB_LIB_name name 'BIO_s_mem';
  197. function BIO_s_file_func: PBIO_METHOD cdecl; external SSLCLIB_LIB_name name 'BIO_s_file';
  198. function BIO_ctrl_func(bp: PBIO; cmd: TIdC_INT; larg: TIdC_LONG; parg: Pointer): TIdC_LONG cdecl; external SSLCLIB_LIB_name name 'BIO_ctrl';
  199. function BIO_int_ctrl_func(bp : PBIO; cmd : TIdC_INT; larg : TIdC_LONG; iArg : TIdC_INT) : TIdC_LONG cdecl; external SSLCLIB_LIB_name name 'BIO_int_ctrl';
  200. function BIO_ptr_ctrl_func(bp : PBIO; cmd : TIdC_INT; larg : TIdC_LONG) : PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'BIO_ptr_ctrl';
  201. function BIO_new_file_func(const filename: PIdAnsiChar; const mode: PIdAnsiChar): PBIO cdecl; external SSLCLIB_LIB_name name 'BIO_new_file';
  202. function BIO_puts_func(b: PBIO; const txt: PIdAnsiChar): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'BIO_puts';
  203. function BIO_read_func(b: PBIO; data: Pointer; len: TIdC_INT): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'BIO_read';
  204. function BIO_write_func(b: PBIO; const buf: Pointer; len: TIdC_INT): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'BIO_write';
  205. function i2d_X509_bio_func(bp: PBIO; x: PX509): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_X509_bio';
  206. function i2d_PrivateKey_bio_func(b: PBIO; pkey: PEVP_PKEY): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_PrivateKey_bio';
  207. function d2i_X509_bio_func(bp: PBIO; x: PPx509): PX509 cdecl; external SSLCLIB_LIB_name name 'd2i_X509_bio';
  208. function i2d_X509_REQ_bio_func(bp: PBIO; x: PX509_REQ): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_X509_REQ_bio';
  209. function i2d_PKCS7_func(x: PPKCS7; buf: PPByte): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_PKCS7';
  210. function d2i_PKCS7_func(pr : PPKCS7; _in : PPByte; len : TIdC_INT): PPKCS7 cdecl; external SSLCLIB_LIB_name name 'd2i_PKCS7';
  211. function i2d_X509_func(x: PX509; buf: PPByte) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_X509';
  212. function d2i_X509_func(pr : PX509; _in : PPByte; len : TIdC_INT): PX509 cdecl; external SSLCLIB_LIB_name name 'd2i_X509';
  213. function i2d_X509_REQ_func(x: PX509_REQ; buf: PPByte): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_X509_REQ';
  214. function d2i_X509_REQ_func(pr : PX509_REQ; _in : PPByte; len : TIdC_INT): PX509_REQ cdecl; external SSLCLIB_LIB_name name 'd2i_X509_REQ';
  215. function i2d_X509_CRL_func(x: PX509_CRL; buf: PPByte): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_X509_CRL';
  216. function d2i_X509_CRL_func(pr : PX509_CRL; _in : PPByte; len : TIdC_INT): PX509_REQ cdecl; external SSLCLIB_LIB_name name 'd2i_X509_CRL';
  217. function i2d_RSAPrivateKey_func(x: PRSA; buf: PPByte): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_RSAPrivateKey';
  218. function d2i_RSAPrivateKey_func(pr : PRSA; _in : PPByte; len : TIdC_INT): PRSA cdecl; external SSLCLIB_LIB_name name 'd2i_RSAPrivateKey';
  219. function i2d_RSAPublicKey_func(x: PRSA; buf: PPByte): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_RSAPublicKey';
  220. function d2i_RSAPublicKey_func(pr : PRSA; _in : PPByte; len : TIdC_INT): PRSA cdecl; external SSLCLIB_LIB_name name 'd2i_RSAPublicKey';
  221. function i2d_PrivateKey_func(x: PEVP_PKEY; buf: PPByte): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_PrivateKey';
  222. function i2d_DSAparams_func(x: PDSA; buf: PPByte): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_DSAparams';
  223. function d2i_DSAparams_func(pr : PDSA; _in : PPByte; len : TIdC_INT): PDSA cdecl; external SSLCLIB_LIB_name name 'd2i_DSAparams';
  224. function i2d_DHparams_func(x: PDH; buf: PPByte): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_DHparams';
  225. function d2i_DHparams_func(pr : PDH; _in : PPByte; len : TIdC_INT): PDH cdecl; external SSLCLIB_LIB_name name 'd2i_DHparams';
  226. function i2d_NETSCAPE_CERT_SEQUENCE_func(x: PNETSCAPE_CERT_SEQUENCE; buf: PPByte): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_NETSCAPE_CERT_SEQUENCE';
  227. function d2i_NETSCAPE_CERT_SEQUENCE_func(pr : PNETSCAPE_CERT_SEQUENCE; _in : PPByte; len : TIdC_INT): PNETSCAPE_CERT_SEQUENCE cdecl; external SSLCLIB_LIB_name name 'd2i_NETSCAPE_CERT_SEQUENCE';
  228. function i2d_PUBKEY_func(x: PEVP_PKEY; buf: PPByte): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_PUBKEY';
  229. function d2i_PUBKEY_func(pr : PEVP_PKEY; _in : PPByte; len : TIdC_INT): PEVP_PKEY cdecl; external SSLCLIB_LIB_name name 'd2i_PUBKEY';
  230. function X509_get_default_cert_file_func: PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'X509_get_default_cert_file';
  231. function X509_get_default_cert_file_env_func: PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'X509_get_default_cert_file_env';
  232. function X509_new_func: PX509 cdecl; external SSLCLIB_LIB_name name 'X509_new';
  233. procedure X509_free_proc(x: PX509) cdecl; external SSLCLIB_LIB_name name 'X509_free';
  234. function X509_REQ_new_func: PX509_REQ cdecl; external SSLCLIB_LIB_name name 'X509_REQ_new';
  235. procedure X509_REQ_free_proc(x:PX509_REQ) cdecl; external SSLCLIB_LIB_name name 'X509_REQ_free';
  236. function X509_to_X509_REQ_func(x: PX509; pkey: PEVP_PKEY; const md: PEVP_MD): PX509_REQ cdecl; external SSLCLIB_LIB_name name 'X509_to_X509_REQ';
  237. function X509_NAME_new_func: PX509_NAME cdecl; external SSLCLIB_LIB_name name 'X509_NAME_new';
  238. procedure X509_NAME_free_proc(x:PX509_NAME) cdecl; external SSLCLIB_LIB_name name 'X509_NAME_free';
  239. function X509_NAME_add_entry_by_txt_func(name: PX509_NAME; const field: PIdAnsiChar; _type: TIdC_INT;
  240. const bytes: PIdAnsiChar; len, loc, _set: TIdC_INT): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_NAME_add_entry_by_txt';
  241. procedure X509_INFO_free_proc(a : PX509_INFO) cdecl; external SSLCLIB_LIB_name name 'X509_INFO_free';
  242. function X509_set_version_func(x: PX509; version: TIdC_LONG): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_set_version';
  243. function X509_get_serialNumber_func(x: PX509): PASN1_INTEGER cdecl; external SSLCLIB_LIB_name name 'X509_get_serialNumber';
  244. function X509_gmtime_adj_func(s: PASN1_TIME; adj: TIdC_LONG): PASN1_TIME cdecl; external SSLCLIB_LIB_name name 'X509_gmtime_adj';
  245. //function X509_set_notBefore_func(x: PX509; tm: PASN1_TIME): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_set_notBefore';
  246. //function X509_set_notAfter_func(x: PX509; tm: PASN1_TIME): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_set_notAfter';
  247. function X509_set_pubkey_func(x: PX509; pkey: PEVP_PKEY): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_set_pubkey';
  248. function X509_REQ_set_pubkey_func(x: PX509_REQ; pkey: PEVP_PKEY): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_REQ_set_pubkey';
  249. function X509_PUBKEY_get_func(key: PX509_PUBKEY): PEVP_PKEY cdecl; external SSLCLIB_LIB_name name 'X509_PUBKEY_get';
  250. function X509_verify_func(x509: PX509; pkey: PEVP_PKEY): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'X509_verify';
  251. function X509_verify_cert_error_string_func(n: TIdC_LONG): PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'X509_verify_cert_error_string';
  252. {$IFNDEF SSLEAY_MACROS}
  253. function PEM_read_bio_X509_func(bp: PBIO; x: PPX509; cb: ppem_password_cb; u: Pointer): PX509 cdecl; external SSLCLIB_LIB_name name 'PEM_read_bio_X509';
  254. function PEM_read_bio_X509_REQ_func(bp :PBIO; x : PPX509_REQ; cb :ppem_password_cb; u: PIdAnsiChar) : PX509_REQ cdecl; external SSLCLIB_LIB_name name 'PEM_read_bio_X509_REQ';
  255. function PEM_read_bio_X509_CRL_func(bp : PBIO; x : PPX509_CRL;cb : ppem_password_cb; u: Pointer) : PX509_CRL cdecl; external SSLCLIB_LIB_name name 'PEM_read_bio_X509_CRL';
  256. function PEM_read_bio_RSAPrivateKey_func(bp : PBIO; x : PPRSA; cb : ppem_password_cb; u: Pointer) : PRSA cdecl; external SSLCLIB_LIB_name name 'PEM_read_bio_RSAPrivateKey';
  257. function PEM_read_bio_RSAPublicKey_func(bp : PBIO; x : PPRSA; cb : ppem_password_cb; u: Pointer) : PRSA cdecl; external SSLCLIB_LIB_name name 'PEM_read_bio_RSAPublicKey';
  258. function PEM_read_bio_DSAPrivateKey_func(bp : PBIO; x : PPDSA; cb : ppem_password_cb; u : Pointer) : PDSA cdecl; external SSLCLIB_LIB_name name 'PEM_read_bio_DSAPrivateKey';
  259. function PEM_read_bio_PrivateKey_func(bp : PBIO; x : PPEVP_PKEY; cb : ppem_password_cb; u : Pointer) : PEVP_PKEY cdecl; external SSLCLIB_LIB_name name 'PEM_read_bio_PrivateKey';
  260. function PEM_read_bio_PKCS7_func(bp : PBIO; x : PPPKCS7; cb : ppem_password_cb; u : Pointer) : PPKCS7 cdecl; external SSLCLIB_LIB_name name 'PEM_read_bio_PKCS7';
  261. function PEM_read_bio_DHparams_func(bp : PBIO; x : PPDH; cb : ppem_password_cb; u : Pointer) : PDH cdecl; external SSLCLIB_LIB_name name 'PEM_read_bio_DHparams';
  262. function PEM_read_bio_DSAparams_func(bp : PBIO; x : PPDSA; cb : ppem_password_cb; u : Pointer) : PDSA cdecl; external SSLCLIB_LIB_name name 'PEM_read_bio_DSAparams';
  263. function PEM_read_bio_NETSCAPE_CERT_SEQUENCE_func(bp : PBIO; x : PPNETSCAPE_CERT_SEQUENCE;
  264. cb : ppem_password_cb; u : Pointer) : PNETSCAPE_CERT_SEQUENCE cdecl; external SSLCLIB_LIB_name name 'PEM_read_bio_NETSCAPE_CERT_SEQUENCE';
  265. function PEM_read_bio_PUBKEY_func(bp : PBIO; x : PPEVP_PKEY; cb : ppem_password_cb; u : Pointer) : PEVP_PKEY cdecl; external SSLCLIB_LIB_name name 'PEM_read_bio_PUBKEY';
  266. function PEM_write_bio_X509_func(b: PBIO; x: PX509): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'PEM_write_bio_X509';
  267. function PEM_write_bio_X509_REQ_func(bp: PBIO; x: PX509_REQ): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'PEM_write_bio_X509_REQ';
  268. function PEM_write_bio_X509_CRL_func(bp : PBIO; x : PX509_CRL) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'PEM_write_bio_X509_CRL';
  269. function PEM_write_bio_RSAPrivateKey_func(bp : PBIO; x : PRSA; const enc : PEVP_CIPHER;
  270. kstr : PIdAnsiChar; klen : TIdC_INT; cb : Ppem_password_cb; u : Pointer) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'PEM_write_bio_RSAPrivateKey';
  271. function PEM_write_bio_RSAPublicKey_func(bp : PBIO; x : PRSA) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'PEM_write_bio_RSAPublicKey';
  272. function PEM_write_bio_DSAPrivateKey_func(bp : PBIO; x : PDSA; const enc : PEVP_CIPHER;
  273. kstr : PIdAnsiChar; klen : TIdC_INT; cb : Ppem_password_cb; u : Pointer) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'PEM_write_bio_DSAPrivateKey';
  274. function PEM_write_bio_PrivateKey_func(bp : PBIO; x : PEVP_PKEY; const enc : PEVP_CIPHER;
  275. kstr : PIdAnsiChar; klen : TIdC_INT; cb : Ppem_password_cb; u : Pointer) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'PEM_write_bio_PrivateKey';
  276. function PEM_write_bio_PKCS7_func(bp : PBIO; x : PPKCS7) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'PEM_write_bio_PKCS7';
  277. function PEM_write_bio_DHparams_func(bp : PBIO; x : PDH): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'PEM_write_bio_DHparams';
  278. function PEM_write_bio_DSAparams_func(bp : PBIO; x : PDSA) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'PEM_write_bio_DSAparams';
  279. function PEM_write_bio_NETSCAPE_CERT_SEQUENCE_func(bp : PBIO; x : PDSA) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'PEM_write_bio_NETSCAPE_CERT_SEQUENCE';
  280. function PEM_write_bio_PKCS8PrivateKey_func(bp: PBIO; key: PEVP_PKEY; enc: PEVP_CIPHER;
  281. kstr: PIdAnsiChar; klen: TIdC_INT; cb: ppem_password_cb; u: Pointer): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'PEM_write_bio_PKCS8PrivateKey';
  282. function PEM_write_bio_PUBKEY_func(bp: PBIO; x: PEVP_PKEY): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'PEM_write_bio_PUBKEY';
  283. {$ELSE}
  284. function PEM_ASN1_write_bio_func(i2d: i2d_of_void; const name: PIdAnsiChar;
  285. bp: PBIO; x: PIdAnsiChar; const enc: PEVP_CIPHER; kstr: PIdAnsiChar; klen: TIdC_INT;
  286. cb: ppem_password_cb; u: Pointer):TIdC_INT cdecl; external SSLCLIB_LIB_name name 'PEM_ASN1_write_bio';
  287. function PEM_ASN1_read_bio_func(d2i: d2i_OF_void; name: PIdAnsiChar; bp: PBIO;
  288. x: PPointer; cb: ppem_password_cb; u:Pointer): Pointer cdecl; external SSLCLIB_LIB_name name 'PEM_ASN1_read_bio';
  289. {$ENDIF}
  290. function PEM_X509_INFO_read_bio_func(bp : PBIO; sk : PSTACK_OF_X509_INFO;
  291. cb : ppem_password_cb; u : Pointer) : PSTACK_OF_X509_INFO cdecl; external SSLCLIB_LIB_name name 'PEM_X509_INFO_read_bio';
  292. function PEM_read_bio_X509_AUX_func(bp : PBIO; x : PPX509;
  293. cb : ppem_password_cb; u : Pointer) : PX509 cdecl; external SSLCLIB_LIB_name name 'PEM_read_bio_X509_AUX';
  294. {$IFNDEF OPENSSL_NO_DES}
  295. function EVP_des_ede3_cbc_func: PEVP_CIPHER cdecl; external SSLCLIB_LIB_name name 'EVP_des_ede3_cbc';
  296. {$ENDIF}
  297. {$IFNDEF OPENSSL_NO_SHA512}
  298. function EVP_sha512_func: PEVP_MD cdecl; external SSLCLIB_LIB_name name 'EVP_sha512';
  299. function EVP_sha384_func: PEVP_MD cdecl; external SSLCLIB_LIB_name name 'EVP_sha384';
  300. {$ENDIF}
  301. {$IFNDEF OPENSSL_NO_SHA256}
  302. function EVP_sha256_func: PEVP_MD cdecl; external SSLCLIB_LIB_name name 'EVP_sha256';
  303. function EVP_sha224_func: PEVP_MD cdecl; external SSLCLIB_LIB_name name 'EVP_sha224';
  304. {$ENDIF}
  305. {$IFNDEF OPENSSL_NO_SHA}
  306. function EVP_sha1_func: PEVP_MD cdecl; external SSLCLIB_LIB_name name 'EVP_sha1';
  307. {$ENDIF}
  308. {$IFNDEF OPENSSL_NO_MD5}
  309. function EVP_md5_func: PEVP_MD cdecl; external SSLCLIB_LIB_name name 'EVP_md5';
  310. {$ENDIF}
  311. {$IFNDEF OPENSSL_NO_MD4}
  312. function EVP_md4_func: PEVP_MD cdecl; external SSLCLIB_LIB_name name 'EVP_md4';
  313. {$ENDIF}
  314. //{$IFNDEF OPENSSL_NO_MD2}
  315. //function EVP_md2_func: PEVP_MD cdecl; external SSLCLIB_LIB_name name 'EVP_md2';
  316. //{$ENDIF}
  317. //procedure EVP_MD_CTX_init_proc(ctx : PEVP_MD_CTX) cdecl; external SSLCLIB_LIB_name name 'EVP_MD_CTX_init';
  318. //function EVP_MD_CTX_cleanup_func(ctx : PEVP_MD_CTX) : TIdC_Int cdecl; external SSLCLIB_LIB_name name 'EVP_MD_CTX_cleanup';
  319. //function EVP_MD_CTX_create_func : PEVP_MD_CTX cdecl; external SSLCLIB_LIB_name name 'EVP_MD_CTX_create';
  320. //procedure EVP_MD_CTX_destroy_proc(ctx : PEVP_MD_CTX) cdecl; external SSLCLIB_LIB_name name 'EVP_MD_CTX_destroy';
  321. function EVP_MD_CTX_new_func : PEVP_MD_CTX cdecl; external SSLCLIB_LIB_name name 'EVP_MD_CTX_new';
  322. function EVP_MD_CTX_free_func(ctx : PEVP_MD_CTX) : TIdC_Int cdecl; external SSLCLIB_LIB_name name 'EVP_MD_CTX_free';
  323. function EVP_MD_CTX_copy_func(_out : PEVP_MD_CTX; _in: PEVP_MD_CTX) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'EVP_MD_CTX_copy';
  324. function EVP_MD_CTX_copy_ex_func(_out : PEVP_MD_CTX; const _in: PEVP_MD_CTX) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'EVP_MD_CTX_copy_ex';
  325. function EVP_DigestInit_ex_func(ctx : PEVP_MD_CTX; const AType : PEVP_MD; impl : PENGINE) : TIdC_Int cdecl; external SSLCLIB_LIB_name name 'EVP_DigestInit_ex';
  326. function EVP_DigestUpdate_func(ctx : PEVP_MD_CTX; d : Pointer; cnt : size_t) : TIdC_Int cdecl; external SSLCLIB_LIB_name name 'EVP_DigestUpdate';
  327. function EVP_DigestFinal_ex_func(ctx : PEVP_MD_CTX; md : PIdAnsiChar; var s : TIdC_UInt) : TIdC_Int cdecl; external SSLCLIB_LIB_name name 'EVP_DigestFinal_ex';
  328. function EVP_PKEY_type_func(_type : TIdC_INT): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'EVP_PKEY_type';
  329. function EVP_PKEY_new_func: PEVP_PKEY cdecl; external SSLCLIB_LIB_name name 'EVP_PKEY_new';
  330. procedure EVP_PKEY_free_proc(pkey: PEVP_PKEY) cdecl; external SSLCLIB_LIB_name name 'EVP_PKEY_free';
  331. function EVP_PKEY_assign_func(pkey: PEVP_PKEY; _type: TIdC_INT; key: Pointer): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'EVP_PKEY_assign';
  332. function EVP_get_digestbyname_func(const name: PIdAnsiChar): PEVP_MD cdecl; external SSLCLIB_LIB_name name 'EVP_get_digestbyname';
  333. {$IFNDEF OPENSSL_NO_HMAC}
  334. //procedure HMAC_CTX_init_proc(ctx : PHMAC_CTX) cdecl; external SSLCLIB_LIB_name name 'HMAC_CTX_init';
  335. function HMAC_Init_ex_func(ctx : PHMAC_CTX; key : Pointer; len : TIdC_INT;
  336. md : PEVP_MD; impl : PENGINE) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'HMAC_Init_ex';
  337. function HMAC_Update_func(ctx : PHMAC_CTX; data : PIdAnsiChar; len : size_t) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'HMAC_Update';
  338. function HMAC_Final_func(ctx : PHMAC_CTX; md : PIdAnsiChar; len : PIdC_UINT) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'HMAC_Final';
  339. //procedure HMAC_CTX_cleanup_proc(ctx : PHMAC_CTX) cdecl; external SSLCLIB_LIB_name name 'HMAC_CTX_cleanup';
  340. {$ENDIF}
  341. function OBJ_obj2nid_func(const o: PASN1_OBJECT): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'OBJ_obj2nid';
  342. function OBJ_nid2obj_func(n : TIdC_INT) : PASN1_OBJECT cdecl; external SSLCLIB_LIB_name name 'OBJ_nid2obj';
  343. function OBJ_nid2ln_func(n : TIdC_INT) : PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'OBJ_nid2ln';
  344. function OBJ_nid2sn_func(n : TIdC_INT) : PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'OBJ_nid2sn';
  345. function ASN1_INTEGER_set_func(a: PASN1_INTEGER; v: TIdC_LONG): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'ASN1_INTEGER_set';
  346. function ASN1_INTEGER_get_func(a: PASN1_INTEGER) : TIdC_LONG cdecl; external SSLCLIB_LIB_name name 'ASN1_INTEGER_get';
  347. function ASN1_STRING_type_new_func(_type: TIdC_INT): PASN1_STRING cdecl; external SSLCLIB_LIB_name name 'ASN1_STRING_type_new';
  348. procedure ASN1_STRING_free_proc(a: PASN1_STRING) cdecl; external SSLCLIB_LIB_name name 'ASN1_STRING_free';
  349. function ASN1_dup_func(i2d : i2d_of_void; d2i : d2i_of_void; x : PIdAnsiChar) : Pointer cdecl; external SSLCLIB_LIB_name name 'ASN1_dup';
  350. function CRYPTO_set_mem_functions_func(
  351. m: TCRYPTO_set_mem_functions_m;
  352. r: TCRYPTO_set_mem_functions_r;
  353. f: TCRYPTO_set_mem_functions_f): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'CRYPTO_set_mem_functions';
  354. function CRYPTO_malloc_func(num: TIdC_INT; const _file: PIdAnsiChar; line: TIdC_INT): Pointer cdecl; external SSLCLIB_LIB_name name 'CRYPTO_malloc';
  355. procedure CRYPTO_free_proc(ptr : Pointer) cdecl; external SSLCLIB_LIB_name name 'CRYPTO_free';
  356. //procedure CRYPTO_mem_leaks_proc(b:PBIO) cdecl; external SSLCLIB_LIB_name name 'CRYPTO_mem_leaks';
  357. //function CRYPTO_mem_ctrl_func(mode: TIdC_INT): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'CRYPTO_mem_ctrl';
  358. //procedure CRYPTO_set_mem_debug_functions_proc(
  359. // m: Tset_mem_debug_functions_m;
  360. // r: Tset_mem_debug_functions_r;
  361. // f : Tset_mem_debug_functions_f;
  362. // so : Tset_mem_debug_functions_so;
  363. // go : Tset_mem_debug_functions_go) cdecl; external SSLCLIB_LIB_name name 'CRYPTO_set_mem_debug_functions';
  364. function PKCS12_create_func(pass, name: PIdAnsiChar; pkey: PEVP_PKEY; cert : PX509;
  365. ca: PSTACK_OF_X509; nid_key, nid_cert, iter, mac_iter, keytype : TIdC_INT) : PPKCS12 cdecl; external SSLCLIB_LIB_name name 'PKCS12_create';
  366. function i2d_PKCS12_bio_func(b: PBIO; p12: PPKCS12) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'i2d_PKCS12_bio';
  367. procedure PKCS12_free_proc(p12: PPKCS12) cdecl; external SSLCLIB_LIB_name name 'PKCS12_free';
  368. //procedure OpenSSL_add_all_algorithms_proc cdecl; external SSLCLIB_LIB_name name 'OpenSSL_add_all_algorithms';
  369. //procedure OpenSSL_add_all_ciphers_proc cdecl; external SSLCLIB_LIB_name name 'OpenSSL_add_all_ciphers';
  370. //procedure OpenSSL_add_all_digests_proc cdecl; external SSLCLIB_LIB_name name 'OpenSSL_add_all_digests';
  371. //procedure EVP_cleanup_proc cdecl; external SSLCLIB_LIB_name name 'EVP_cleanup';
  372. function sk_num_func(const x : PSTACK) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'OPENSSL_sk_num';
  373. function sk_new_func( cmp : Tsk_new_cmp) : PStack cdecl; external SSLCLIB_LIB_name name 'OPENSSL_sk_new';
  374. function sk_new_null_func: PSTACK cdecl; external SSLCLIB_LIB_name name 'OPENSSL_sk_new_null';
  375. procedure sk_free_proc(st : PSTACK) cdecl; external SSLCLIB_LIB_name name 'OPENSSL_sk_free';
  376. function sk_push_func(st: PSTACK; data: PIdAnsiChar): TIdC_INT cdecl; external SSLCLIB_LIB_name name 'OPENSSL_sk_push';
  377. function sk_dup_func(st : PSTACK) : PSTACK cdecl; external SSLCLIB_LIB_name name 'OPENSSL_sk_dup';
  378. function sk_find_func(st : PSTACK; Data : PIdAnsiChar) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'OPENSSL_sk_find';
  379. function sk_value_func(x : PSTACK; i : TIdC_INT) : PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'OPENSSL_sk_value';
  380. {$IFDEF OPENSSL_FIPS}
  381. //function FIPS_mode_set_func(onoff : TIdC_INT) : TIdC_INT cdecl; external SSLCLIB_LIB_name name 'FIPS_mode_set';
  382. //function FIPS_mode_func: TIdC_INT cdecl; external SSLCLIB_LIB_name name 'FIPS_mode';
  383. {$ENDIF}
  384. procedure SSL_CTX_set_info_callback_func(Ctx: PSSL_CTX; Callback: PSSL_CTX_info_callback) cdecl; external SSL_LIB_name name 'SSL_CTX_set_info_callback';
  385. function OpenSSL_version_num_func: LongWord cdecl; external SSLCLIB_LIB_name name 'OpenSSL_version_num';
  386. function OpenSSL_version_func(t: Integer): PIdAnsiChar cdecl; external SSLCLIB_LIB_name name 'OpenSSL_version';
  387. function TLS_method_func: PSSL_METHOD cdecl; external SSL_LIB_name name 'TLS_method';
  388. function SSL_get_version_func(S: PSSL): PIdAnsiChar cdecl; external SSL_LIB_name name 'SSL_get_version';
  389. function SSL_CTX_get_cert_store_func(const Ctx: PSSL_CTX): PX509_STORE cdecl; external SSL_LIB_name name 'SSL_CTX_get_cert_store';
  390. procedure LoadSymbols;
  391. begin
  392. SSL_CTX_set_cipher_list := SSL_CTX_set_cipher_list_func;
  393. SSL_CTX_new := SSL_CTX_new_func;
  394. SSL_CTX_free := SSL_CTX_free_proc;
  395. SSL_set_fd := SSL_set_fd_func;
  396. SSL_CTX_use_PrivateKey_file := SSL_CTX_use_PrivateKey_file_func;
  397. SSL_CTX_use_PrivateKey := SSL_CTX_use_PrivateKey_func;
  398. SSL_CTX_use_certificate := SSL_CTX_use_certificate_func;
  399. SSL_CTX_use_certificate_file := SSL_CTX_use_certificate_file_func;
  400. SSL_load_error_strings := nil;
  401. SSL_state_string_long := SSL_state_string_long_func;
  402. SSL_alert_desc_string_long := SSL_alert_desc_string_long_func;
  403. SSL_alert_type_string_long := SSL_alert_type_string_long_func;
  404. SSL_get_peer_certificate := SSL_get_peer_certificate_func;
  405. SSL_CTX_set_verify := SSL_CTX_set_verify_proc;
  406. SSL_CTX_set_verify_depth := SSL_CTX_set_verify_depth_proc;
  407. SSL_CTX_get_verify_depth := SSL_CTX_get_verify_depth_func;
  408. SSL_CTX_set_default_passwd_cb := SSL_CTX_set_default_passwd_cb_proc;
  409. SSL_CTX_set_default_passwd_cb_userdata:= SSL_CTX_set_default_passwd_cb_userdata_proc;
  410. SSL_CTX_check_private_key := SSL_CTX_check_private_key_func;
  411. SSL_new := SSL_new_func;
  412. SSL_free := SSL_free_proc;
  413. SSL_accept := SSL_accept_func;
  414. SSL_connect := SSL_connect_func;
  415. SSL_read := SSL_read_func;
  416. SSL_peek := SSL_peek_func;
  417. SSL_pending := SSL_pending_func;
  418. SSL_write := SSL_write_func;
  419. SSL_ctrl := SSL_ctrl_func;
  420. SSL_callback_ctrl := SSL_callback_ctrl_func;
  421. SSL_CTX_ctrl := SSL_CTX_ctrl_func;
  422. SSL_CTX_callback_ctrl := SSL_CTX_callback_ctrl_func;
  423. SSL_get_error := SSL_get_error_func;
  424. {$IFNDEF OPENSSL_NO_SSL2}
  425. SSLv2_method := nil;
  426. SSLv2_server_method := nil;
  427. SSLv2_client_method := nil;
  428. {$ELSE}
  429. SSLv2_method := nil;
  430. SSLv2_server_method := nil;
  431. SSLv2_client_method := nil;
  432. {$ENDIF}
  433. SSLv3_method := nil;
  434. SSLv3_server_method := nil;
  435. SSLv3_client_method := nil;
  436. SSLv23_method := nil;
  437. SSLv23_server_method := nil;
  438. SSLv23_client_method := nil;
  439. TLSv1_method := TLSv1_method_func;
  440. TLSv1_server_method := TLSv1_server_method_func;
  441. TLSv1_client_method := TLSv1_client_method_func;
  442. TLSv1_1_method := TLSv1_1_method_func;
  443. TLSv1_1_server_method := TLSv1_1_server_method_func;
  444. TLSv1_1_client_method := TLSv1_1_client_method_func;
  445. TLSv1_2_method := TLSv1_2_method_func;
  446. TLSv1_2_server_method := TLSv1_2_server_method_func;
  447. TLSv1_2_client_method := TLSv1_2_client_method_func;
  448. DTLSv1_method := DTLSv1_method_func;
  449. DTLSv1_server_method := DTLSv1_server_method_func;
  450. DTLSv1_client_method := DTLSv1_client_method_func;
  451. SSL_shutdown := SSL_shutdown_func;
  452. SSL_set_connect_state := SSL_set_connect_state_proc;
  453. SSL_set_accept_state := SSL_set_accept_state_proc;
  454. SSL_set_shutdown := SSL_set_shutdown_proc;
  455. SSL_CTX_load_verify_locations := SSL_CTX_load_verify_locations_func;
  456. SSL_get_session := SSL_get_session_func;
  457. // SSLeay_add_ssl_algorithms := SSLeay_add_ssl_algorithms_func;
  458. SSL_SESSION_get_id := SSL_SESSION_get_id_func;
  459. SSL_copy_session_id := SSL_copy_session_id_proc;
  460. // CRYPTO LIB
  461. _SSLeay_version := nil;
  462. SSLeay := nil;
  463. d2i_X509_NAME := d2i_X509_NAME_func;
  464. i2d_X509_NAME := i2d_X509_NAME_func;
  465. X509_NAME_oneline := X509_NAME_oneline_func;
  466. X509_NAME_cmp := X509_NAME_cmp_func;
  467. X509_NAME_hash := X509_NAME_hash_func;
  468. X509_set_issuer_name := X509_set_issuer_name_func;
  469. X509_get_issuer_name := X509_get_issuer_name_func;
  470. X509_set_subject_name := X509_set_subject_name_func;
  471. X509_get_subject_name := X509_get_subject_name_func;
  472. X509_digest := X509_digest_func;
  473. X509_LOOKUP_ctrl := X509_LOOKUP_ctrl_func;
  474. X509_STORE_add_cert := X509_STORE_add_cert_func;
  475. X509_STORE_add_crl := X509_STORE_add_crl_func;
  476. X509_STORE_CTX_get_ex_data := X509_STORE_CTX_get_ex_data_func;
  477. X509_STORE_CTX_get_error := X509_STORE_CTX_get_error_func;
  478. X509_STORE_CTX_set_error := X509_STORE_CTX_set_error_proc;
  479. X509_STORE_CTX_get_error_depth := X509_STORE_CTX_get_error_depth_func;
  480. X509_STORE_CTX_get_current_cert := X509_STORE_CTX_get_current_cert_func;
  481. X509_STORE_add_lookup := X509_STORE_add_lookup_func;
  482. X509_STORE_load_locations := X509_STORE_load_locations_func;
  483. i2d_DSAPrivateKey := i2d_DSAPrivateKey_func;
  484. d2i_DSAPrivateKey := d2i_DSAPrivateKey_func;
  485. d2i_PrivateKey := d2i_PrivateKey_func;
  486. d2i_PrivateKey_bio := d2i_PrivateKey_bio_func;
  487. X509_sign := X509_sign_func;
  488. X509_REQ_sign := X509_REQ_sign_func;
  489. X509_REQ_add_extensions := X509_REQ_add_extensions_func;
  490. X509V3_EXT_conf_nid := X509V3_EXT_conf_nid_func;
  491. X509_EXTENSION_create_by_NID := X509_EXTENSION_create_by_NID_func;
  492. X509V3_set_ctx := X509V3_set_ctx_proc;
  493. X509_EXTENSION_free := X509_EXTENSION_free_proc;
  494. X509_add_ext := X509_add_ext_func;
  495. {$IFNDEF OPENSSL_NO_BIO}
  496. //X509_print
  497. X509_print := X509_print_func;
  498. {$ENDIF}
  499. // _RAND_cleanup := RAND_cleanup_func;
  500. // _RAND_bytes := RAND_bytes_func;
  501. // _RAND_pseudo_bytes := RAND_pseudo_bytes_func;
  502. // _RAND_seed := RAND_seed_proc;
  503. // _RAND_add := RAND_add_proc;
  504. // _RAND_status := RAND_status_func;
  505. {$IFDEF SYS_WIN}
  506. _RAND_screen := RAND_screen_proc;
  507. _RAND_event := RAND_event_func;
  508. {$ENDIF}
  509. {$IFNDEF OPENSSL_NO_DES}
  510. // 3DES
  511. DES_set_odd_parity := DES_set_odd_parity_proc;
  512. DES_set_key := DES_set_key_func;
  513. DES_ecb_encrypt := DES_ecb_encrypt_proc;
  514. // Id_ossl_old_des_set_odd_parity := Id_ossl_old_des_set_odd_parity_proc;
  515. // Id_ossl_old_des_set_key := Id_ossl_old_des_set_key_func;
  516. // Id_ossl_old_des_ecb_encrypt := Id_ossl_old_des_ecb_encrypt_proc;
  517. {$ENDIF}
  518. // More SSL functions
  519. SSL_set_ex_data := SSL_set_ex_data_func;
  520. SSL_get_ex_data := SSL_get_ex_data_func;
  521. SSL_load_client_CA_file := SSL_load_client_CA_file_func;
  522. SSL_CTX_set_client_CA_list := SSL_CTX_set_client_CA_list_proc;
  523. SSL_CTX_set_default_verify_paths := SSL_CTX_set_default_verify_paths_func;
  524. SSL_CTX_set_session_id_context := SSL_CTX_set_session_id_context_func;
  525. SSL_CIPHER_description := SSL_CIPHER_description_func;
  526. SSL_get_current_cipher := SSL_get_current_cipher_func;
  527. SSL_CIPHER_get_name := SSL_CIPHER_get_name_func;
  528. SSL_CIPHER_get_version := SSL_CIPHER_get_version_func;
  529. SSL_CIPHER_get_bits := SSL_CIPHER_get_bits_func;
  530. // Thread safe
  531. _CRYPTO_lock := nil;
  532. _CRYPTO_num_locks := nil;
  533. CRYPTO_set_locking_callback := nil;
  534. {$IFNDEF WIN32_OR_WIN64}
  535. {
  536. In OpenSSL 1.0.0, you should use these callback functions instead of the
  537. depreciated set_id_callback. They are not in the older 0.9.8 OpenSSL series so
  538. we have to handle both cases.
  539. }
  540. CRYPTO_THREADID_set_callback := nil;
  541. CRYPTO_THREADID_set_numeric := nil;
  542. CRYPTO_THREADID_set_pointer := nil; {Do not localize}
  543. // if not assigned(CRYPTO_THREADID_set_callback) then begin
  544. // @CRYPTO_set_id_callback := LoadFunctionCLib(fn_CRYPTO_set_id_callback);
  545. // end;
  546. {$ENDIF}
  547. ERR_new := ERR_new_proc;
  548. ERR_set_debug := ERR_set_debug_proc;
  549. ERR_set_error := ERR_set_error_proc;
  550. // ERR_put_error := ERR_put_error_proc;
  551. ERR_get_error := ERR_get_error_func;
  552. ERR_peek_error := ERR_peek_error_func;
  553. ERR_peek_last_error := ERR_peek_last_error_func;
  554. ERR_clear_error := ERR_clear_error_proc;
  555. ERR_error_string := ERR_error_string_func;
  556. ERR_error_string_n := ERR_error_string_n_proc;
  557. ERR_lib_error_string := ERR_lib_error_string_func;
  558. ERR_func_error_string := ERR_func_error_string_func;
  559. ERR_reason_error_string := ERR_reason_error_string_func;
  560. ERR_load_ERR_strings := ERR_load_ERR_strings_proc;
  561. ERR_load_crypto_strings := nil;
  562. ERR_free_strings := nil;
  563. ERR_remove_thread_state := ERR_remove_thread_state_proc;
  564. // if not Assigned(ERR_remove_thread_state) then begin
  565. // @ERR_remove_state := LoadFunctionCLib(fn_ERR_remove_state);
  566. // end;
  567. CRYPTO_cleanup_all_ex_data := nil;
  568. SSL_COMP_get_compression_methods := SSL_COMP_get_compression_methods_func;
  569. SSL_COMP_free_compression_methods := nil;
  570. sk_pop_free := sk_pop_free_proc;
  571. //RSA
  572. RSA_free := RSA_free_proc;
  573. RSA_generate_key := RSA_generate_key_func;
  574. RSA_check_key := RSA_check_key_func;
  575. RSA_generate_key_ex := RSA_generate_key_ex_func;
  576. RSA_new := RSA_new_func;
  577. RSA_size := RSA_size_func;
  578. RSA_private_decrypt := RSA_private_decrypt_func;
  579. RSA_public_encrypt := RSA_public_encrypt_func;
  580. //DH
  581. DH_free := DH_free_proc;
  582. //BN
  583. BN_new := BN_new_func;
  584. BN_free := BN_free_proc;
  585. BN_hex2bn := BN_hex2bn_func;
  586. BN_bn2hex := BN_bn2hex_func;
  587. BN_set_word := BN_set_word_func;
  588. //BIO
  589. BIO_new := BIO_new_func;
  590. BIO_free := BIO_free_func;
  591. BIO_new_mem_buf := BIO_new_mem_buf_func;
  592. BIO_s_mem := BIO_s_mem_func;
  593. BIO_s_file := BIO_s_file_func;
  594. BIO_ctrl := BIO_ctrl_func;
  595. BIO_int_ctrl := BIO_int_ctrl_func;
  596. BIO_ptr_ctrl := BIO_ptr_ctrl_func;
  597. BIO_new_file := BIO_new_file_func;
  598. BIO_puts := BIO_puts_func;
  599. BIO_read := BIO_read_func;
  600. BIO_write := BIO_write_func;
  601. //i2d
  602. i2d_X509_bio := i2d_X509_bio_func;
  603. i2d_PrivateKey_bio := i2d_PrivateKey_bio_func;
  604. d2i_X509_bio := d2i_X509_bio_func;
  605. i2d_X509_REQ_bio := i2d_X509_REQ_bio_func;
  606. i2d_PKCS7 := i2d_PKCS7_func;
  607. d2i_PKCS7 := d2i_PKCS7_func;
  608. i2d_X509 := i2d_X509_func;
  609. d2i_X509 := d2i_X509_func;
  610. i2d_X509_REQ := i2d_X509_REQ_func;
  611. d2i_X509_REQ := d2i_X509_REQ_func;
  612. i2d_X509_CRL := i2d_X509_CRL_func;
  613. d2i_X509_CRL := d2i_X509_CRL_func;
  614. i2d_RSAPrivateKey := i2d_RSAPrivateKey_func;
  615. d2i_RSAPrivateKey := d2i_RSAPrivateKey_func;
  616. i2d_RSAPublicKey := i2d_RSAPublicKey_func;
  617. d2i_RSAPublicKey := d2i_RSAPublicKey_func;
  618. i2d_PrivateKey := i2d_PrivateKey_func;
  619. d2i_PrivateKey := d2i_PrivateKey_func;
  620. i2d_DSAparams := i2d_DSAparams_func;
  621. d2i_DSAparams := d2i_DSAparams_func;
  622. i2d_DHparams := i2d_DHparams_func;
  623. d2i_DHparams := d2i_DHparams_func;
  624. i2d_NETSCAPE_CERT_SEQUENCE := i2d_NETSCAPE_CERT_SEQUENCE_func;
  625. d2i_NETSCAPE_CERT_SEQUENCE := d2i_NETSCAPE_CERT_SEQUENCE_func;
  626. i2d_PUBKEY := i2d_PUBKEY_func;
  627. d2i_PUBKEY := d2i_PUBKEY_func;
  628. //X509
  629. X509_get_default_cert_file := X509_get_default_cert_file_func;
  630. X509_get_default_cert_file_env := X509_get_default_cert_file_env_func;
  631. X509_new := X509_new_func;
  632. X509_free := X509_free_proc;
  633. X509_REQ_new := X509_REQ_new_func;
  634. X509_REQ_free := X509_REQ_free_proc;
  635. X509_to_X509_REQ := X509_to_X509_REQ_func;
  636. X509_NAME_new := X509_NAME_new_func;
  637. X509_NAME_free := X509_NAME_free_proc;
  638. X509_NAME_add_entry_by_txt := X509_NAME_add_entry_by_txt_func;
  639. X509_INFO_free := X509_INFO_free_proc;
  640. X509_set_version := X509_set_version_func;
  641. X509_get_serialNumber := X509_get_serialNumber_func;
  642. X509_gmtime_adj := X509_gmtime_adj_func;
  643. X509_set_notBefore := nil;
  644. X509_set_notAfter := nil;
  645. X509_set_pubkey := X509_set_pubkey_func;
  646. X509_REQ_set_pubkey := X509_REQ_set_pubkey_func;
  647. X509_PUBKEY_get := X509_PUBKEY_get_func;
  648. X509_verify := X509_verify_func;
  649. //PEM
  650. {$IFNDEF SSLEAY_MACROS}
  651. _PEM_read_bio_X509 := PEM_read_bio_X509_func;
  652. _PEM_read_bio_X509_REQ := PEM_read_bio_X509_REQ_func;
  653. _PEM_read_bio_X509_CRL := PEM_read_bio_X509_CRL_func;
  654. _PEM_read_bio_RSAPrivateKey := PEM_read_bio_RSAPrivateKey_func;
  655. _PEM_read_bio_RSAPublicKey := PEM_read_bio_RSAPublicKey_func;
  656. _PEM_read_bio_DSAPrivateKey := PEM_read_bio_DSAPrivateKey_func;
  657. _PEM_read_bio_PrivateKey := PEM_read_bio_PrivateKey_func;
  658. _PEM_read_bio_PKCS7 := PEM_read_bio_PKCS7_func;
  659. _PEM_read_bio_DHparams := PEM_read_bio_DHparams_func;
  660. _PEM_read_bio_DSAparams := PEM_read_bio_DSAparams_func;
  661. _PEM_read_bio_NETSCAPE_CERT_SEQUENCE := PEM_read_bio_NETSCAPE_CERT_SEQUENCE_func;
  662. _PEM_read_bio_PUBKEY := PEM_read_bio_PUBKEY_func;
  663. _PEM_write_bio_X509 := PEM_write_bio_X509_func;
  664. _PEM_write_bio_X509_REQ := PEM_write_bio_X509_REQ_func;
  665. _PEM_write_bio_X509_CRL := PEM_write_bio_X509_CRL_func;
  666. _PEM_write_bio_RSAPrivateKey := PEM_write_bio_RSAPrivateKey_func;
  667. _PEM_write_bio_RSAPublicKey := PEM_write_bio_RSAPublicKey_func;
  668. _PEM_write_bio_DSAPrivateKey := PEM_write_bio_DSAPrivateKey_func;
  669. _PEM_write_bio_PrivateKey := PEM_write_bio_PrivateKey_func;
  670. _PEM_write_bio_PKCS7 := PEM_write_bio_PKCS7_func;
  671. _PEM_write_bio_DHparams := PEM_write_bio_DHparams_func;
  672. _PEM_write_bio_DSAparams := PEM_write_bio_DSAparams_func;
  673. _PEM_write_bio_NETSCAPE_CERT_SEQUENCE := PEM_write_bio_NETSCAPE_CERT_SEQUENCE_func;
  674. _PEM_write_bio_PKCS8PrivateKey := PEM_write_bio_PKCS8PrivateKey_func;
  675. _PEM_write_bio_PUBKEY := PEM_write_bio_PUBKEY_func;
  676. {$ELSE}
  677. PEM_ASN1_write_bio := PEM_ASN1_write_bio_func;
  678. PEM_ASN1_read_bio := PEM_ASN1_read_bio_func;
  679. {$ENDIF}
  680. PEM_X509_INFO_read_bio := PEM_X509_INFO_read_bio_func;
  681. PEM_read_bio_X509_AUX := PEM_read_bio_X509_AUX_func;
  682. //EVP
  683. {$IFNDEF OPENSSL_NO_DES}
  684. EVP_des_ede3_cbc := EVP_des_ede3_cbc_func;
  685. {$ENDIF}
  686. {$IFNDEF OPENSSL_NO_SHA512}
  687. EVP_sha512 := EVP_sha512_func;
  688. EVP_sha384 := EVP_sha384_func;
  689. {$ENDIF}
  690. {$IFNDEF OPENSSL_NO_SHA256}
  691. EVP_sha256 := EVP_sha256_func;
  692. EVP_sha224 := EVP_sha224_func;
  693. {$ENDIF}
  694. {$IFNDEF OPENSSL_NO_SHA}
  695. EVP_sha1 := EVP_sha1_func;
  696. {$ENDIF}
  697. {$IFNDEF OPENSSL_NO_MD5}
  698. EVP_md5 := EVP_md5_func;
  699. {$ENDIF}
  700. {$IFNDEF OPENSSL_NO_MD4}
  701. EVP_md4 := EVP_md4_func;
  702. {$ENDIF}
  703. // {$IFNDEF OPENSSL_NO_MD2}
  704. // EVP_md2 := EVP_md2_func;
  705. // {$ENDIF}
  706. // EVP_MD_CTX_init := EVP_MD_CTX_init_proc;
  707. // EVP_MD_CTX_cleanup := EVP_MD_CTX_cleanup_func;
  708. // EVP_MD_CTX_create := EVP_MD_CTX_create_func;
  709. // EVP_MD_CTX_destroy := EVP_MD_CTX_destroy_proc;
  710. EVP_MD_CTX_new := EVP_MD_CTX_new_func;
  711. EVP_MD_CTX_free := EVP_MD_CTX_free_func;
  712. EVP_MD_CTX_copy := EVP_MD_CTX_copy_func;
  713. EVP_MD_CTX_copy_ex := EVP_MD_CTX_copy_ex_func;
  714. EVP_DigestInit_ex := EVP_DigestInit_ex_func;
  715. EVP_DigestUpdate := EVP_DigestUpdate_func;
  716. EVP_DigestFinal_ex := EVP_DigestFinal_ex_func;
  717. // EVP_MD_CTX_cleanup := EVP_MD_CTX_cleanup_func;
  718. EVP_PKEY_type := EVP_PKEY_type_func;
  719. EVP_PKEY_new := EVP_PKEY_new_func;
  720. EVP_PKEY_free := EVP_PKEY_free_proc;
  721. EVP_PKEY_assign := EVP_PKEY_assign_func;
  722. EVP_get_digestbyname := EVP_get_digestbyname_func;
  723. //HMAC
  724. {$IFNDEF OPENSSL_NO_HMAC}
  725. HMAC_CTX_init := nil;
  726. // if IsOpenSSL_1x then begin
  727. _1_0_HMAC_Init_ex := HMAC_Init_ex_func;
  728. _1_0_HMAC_Update := HMAC_Update_func;
  729. _1_0_HMAC_Final := HMAC_Final_func;
  730. // end else begin
  731. // @_HMAC_Init_ex := LoadFunctionCLib(fn_HMAC_Init_ex);
  732. // @_HMAC_Update := LoadFunctionCLib(fn_HMAC_Update);
  733. // @_HMAC_Final := LoadFunctionCLib(fn_HMAC_Final);
  734. // end;
  735. HMAC_CTX_cleanup := nil;
  736. {$ENDIF}
  737. //OBJ
  738. OBJ_obj2nid := OBJ_obj2nid_func;
  739. OBJ_nid2obj := OBJ_nid2obj_func;
  740. OBJ_nid2ln := OBJ_nid2ln_func;
  741. OBJ_nid2sn := OBJ_nid2sn_func;
  742. //ASN1
  743. ASN1_INTEGER_set := ASN1_INTEGER_set_func;
  744. ASN1_INTEGER_get := ASN1_INTEGER_get_func;
  745. ASN1_STRING_type_new := ASN1_STRING_type_new_func;
  746. ASN1_STRING_free := ASN1_STRING_free_proc;
  747. ASN1_dup := ASN1_dup_func;
  748. CRYPTO_set_mem_functions := CRYPTO_set_mem_functions_func;
  749. CRYPTO_malloc := CRYPTO_malloc_func;
  750. CRYPTO_free := CRYPTO_free_proc;
  751. CRYPTO_mem_leaks := nil;
  752. CRYPTO_mem_ctrl := nil;
  753. CRYPTO_set_mem_debug_functions := nil;
  754. PKCS12_create := PKCS12_create_func;
  755. i2d_PKCS12_bio := i2d_PKCS12_bio_func;
  756. PKCS12_free := PKCS12_free_proc;
  757. // OpenSSL_add_all_algorithms := OpenSSL_add_all_algorithms_proc;
  758. OpenSSL_add_all_ciphers := nil;
  759. OpenSSL_add_all_digests := nil;
  760. EVP_cleanup := nil;
  761. sk_num := sk_num_func;
  762. sk_new := sk_new_func;
  763. sk_new_null := sk_new_null_func;
  764. sk_free := sk_free_proc;
  765. sk_push := sk_push_func;
  766. sk_dup := sk_dup_func;
  767. sk_find := sk_find_func;
  768. sk_value := sk_value_func;
  769. {$IFDEF OPENSSL_FIPS}
  770. // _FIPS_mode_set := FIPS_mode_set_func;
  771. // _FIPS_mode := FIPS_mode_func;
  772. {$ENDIF}
  773. SSL_CTX_set_info_callback := SSL_CTX_set_info_callback_func;
  774. OpenSSL_version_num := OpenSSL_version_num_func;
  775. OpenSSL_version := OpenSSL_version_func;
  776. TLS_method := TLS_method_func;
  777. SSL_get_version := SSL_get_version_func;
  778. SSL_CTX_get_cert_store := SSL_CTX_get_cert_store_func;
  779. SSL_get_ex_data_X509_STORE_CTX_idx := SSL_get_ex_data_X509_STORE_CTX_idx_func;
  780. end;
  781. initialization
  782. LoadSymbols;
  783. {$ENDIF}
  784. end.