Types
SslPtr* = ptr SslStruct
PSslPtr* = ptr SslPtr
PSSL_CTX* = SslPtr
PSSL* = SslPtr
PSSL_METHOD* = SslPtr
PX509* = SslPtr
PX509_NAME* = SslPtr
PEVP_MD* = SslPtr
PBIO_METHOD* = SslPtr
PBIO* = SslPtr
EVP_PKEY* = SslPtr
PRSA* = SslPtr
PASN1_UTCTIME* = SslPtr
PASN1_cInt* = SslPtr
PPasswdCb* = SslPtr
PFunction* = proc () {.cdecl.}
DES_cblock* = array[0 .. 7, int8]
PDES_cblock* = ptr DES_cblock
des_ks_struct* {.final.} = object ks*: DES_cblock weak_key*: cInt
des_key_schedule* = array[1 .. 16, des_ks_struct]
Consts
EVP_MAX_MD_SIZE* = 16 + 20
SSL_ERROR_NONE* = 0
SSL_ERROR_SSL* = 1
SSL_ERROR_WANT_READ* = 2
SSL_ERROR_WANT_WRITE* = 3
SSL_ERROR_WANT_X509_LOOKUP* = 4
SSL_ERROR_SYSCALL* = 5
SSL_ERROR_ZERO_RETURN* = 6
SSL_ERROR_WANT_CONNECT* = 7
SSL_ERROR_WANT_ACCEPT* = 8
SSL_CTRL_NEED_TMP_RSA* = 1
SSL_CTRL_SET_TMP_RSA* = 2
SSL_CTRL_SET_TMP_DH* = 3
SSL_CTRL_SET_TMP_ECDH* = 4
SSL_CTRL_SET_TMP_RSA_CB* = 5
SSL_CTRL_SET_TMP_DH_CB* = 6
SSL_CTRL_SET_TMP_ECDH_CB* = 7
SSL_CTRL_GET_SESSION_REUSED* = 8
SSL_CTRL_GET_CLIENT_CERT_REQUEST* = 9
SSL_CTRL_GET_NUM_RENEGOTIATIONS* = 10
SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS* = 11
SSL_CTRL_GET_TOTAL_RENEGOTIATIONS* = 12
SSL_CTRL_GET_FLAGS* = 13
SSL_CTRL_EXTRA_CHAIN_CERT* = 14
SSL_CTRL_SET_MSG_CALLBACK* = 15
SSL_CTRL_SET_MSG_CALLBACK_ARG* = 16
SSL_CTRL_SET_MTU* = 17
SSL_CTRL_SESS_NUMBER* = 20
SSL_CTRL_SESS_CONNECT* = 21
SSL_CTRL_SESS_CONNECT_GOOD* = 22
SSL_CTRL_SESS_CONNECT_RENEGOTIATE* = 23
SSL_CTRL_SESS_ACCEPT* = 24
SSL_CTRL_SESS_ACCEPT_GOOD* = 25
SSL_CTRL_SESS_ACCEPT_RENEGOTIATE* = 26
SSL_CTRL_SESS_HIT* = 27
SSL_CTRL_SESS_CB_HIT* = 28
SSL_CTRL_SESS_MISSES* = 29
SSL_CTRL_SESS_TIMEOUTS* = 30
SSL_CTRL_SESS_CACHE_FULL* = 31
SSL_CTRL_OPTIONS* = 32
SSL_CTRL_MODE* = 33
SSL_CTRL_GET_READ_AHEAD* = 40
SSL_CTRL_SET_READ_AHEAD* = 41
SSL_CTRL_SET_SESS_CACHE_SIZE* = 42
SSL_CTRL_GET_SESS_CACHE_SIZE* = 43
SSL_CTRL_SET_SESS_CACHE_MODE* = 44
SSL_CTRL_GET_SESS_CACHE_MODE* = 45
SSL_CTRL_GET_MAX_CERT_LIST* = 50
SSL_CTRL_SET_MAX_CERT_LIST* = 51
SSL_MODE_ENABLE_PARTIAL_WRITE* = 1
SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER* = 2
SSL_MODE_AUTO_RETRY* = 4
SSL_MODE_NO_AUTO_CHAIN* = 8
SSL_OP_NO_SSLv2* = 0x01000000
SSL_OP_NO_SSLv3* = 0x02000000
SSL_OP_NO_TLSv1* = 0x04000000
SSL_OP_ALL* = 0x000FFFFF
SSL_VERIFY_NONE* = 0x00000000
SSL_VERIFY_PEER* = 0x00000001
OPENSSL_DES_DECRYPT* = 0
OPENSSL_DES_ENCRYPT* = 1
X509_V_OK* = 0
X509_V_ILLEGAL* = 1
X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT* = 2
X509_V_ERR_UNABLE_TO_GET_CRL* = 3
X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE* = 4
X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE* = 5
X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY* = 6
X509_V_ERR_CERT_SIGNATURE_FAILURE* = 7
X509_V_ERR_CRL_SIGNATURE_FAILURE* = 8
X509_V_ERR_CERT_NOT_YET_VALID* = 9
X509_V_ERR_CERT_HAS_EXPIRED* = 10
X509_V_ERR_CRL_NOT_YET_VALID* = 11
X509_V_ERR_CRL_HAS_EXPIRED* = 12
X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD* = 13
X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD* = 14
X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD* = 15
X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD* = 16
X509_V_ERR_OUT_OF_MEM* = 17
X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT* = 18
X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN* = 19
X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY* = 20
X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE* = 21
X509_V_ERR_CERT_CHAIN_TOO_LONG* = 22
X509_V_ERR_CERT_REVOKED* = 23
X509_V_ERR_INVALID_CA* = 24
X509_V_ERR_PATH_LENGTH_EXCEEDED* = 25
X509_V_ERR_INVALID_PURPOSE* = 26
X509_V_ERR_CERT_UNTRUSTED* = 27
X509_V_ERR_CERT_REJECTED* = 28
X509_V_ERR_SUBJECT_ISSUER_MISMATCH* = 29
X509_V_ERR_AKID_SKID_MISMATCH* = 30
X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH* = 31
X509_V_ERR_KEYUSAGE_NO_CERTSIGN* = 32
X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER* = 33
X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION* = 34
X509_V_ERR_APPLICATION_VERIFICATION* = 50
SSL_FILETYPE_ASN1* = 2
SSL_FILETYPE_PEM* = 1
EVP_PKEY_RSA* = 6
Procs
proc SSL_library_init*(): cInt {.cdecl, dynlib: DLLSSLName, importc, discardable.}
proc SSL_load_error_strings*() {.cdecl, dynlib: DLLSSLName, importc.}
proc ERR_load_BIO_strings*() {.cdecl, dynlib: DLLUtilName, importc.}
proc SSLv23_client_method*(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc.}
proc SSLv23_method*(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc.}
proc SSLv2_method*(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc.}
proc SSLv3_method*(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc.}
proc TLSv1_method*(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_new*(context: PSSL_CTX): PSSL {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_free*(ssl: PSSL) {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_CTX_new*(meth: PSSL_METHOD): PSSL_CTX {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_CTX_load_verify_locations*(ctx: PSSL_CTX; CAfile: cstring; CApath: cstring): cInt {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_CTX_free*(arg0: PSSL_CTX) {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_CTX_set_verify*(s: PSSL_CTX; mode: int; cb: proc (a: int; b: pointer): int {.cdecl.}) {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_get_verify_result*(ssl: PSSL): int {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_CTX_set_cipher_list*(s: PSSLCTX; ciphers: cstring): cint {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_CTX_use_certificate_file*(ctx: PSSL_CTX; filename: cstring; typ: cInt): cInt {. stdcall, dynlib: DLLSSLName, importc.}
proc SSL_CTX_use_certificate_chain_file*(ctx: PSSL_CTX; filename: cstring): cInt {. stdcall, dynlib: DLLSSLName, importc.}
proc SSL_CTX_use_PrivateKey_file*(ctx: PSSL_CTX; filename: cstring; typ: cInt): cInt {. cdecl, dynlib: DLLSSLName, importc.}
proc SSL_CTX_check_private_key*(ctx: PSSL_CTX): cInt {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_set_fd*(ssl: PSSL; fd: TSocketHandle): cint {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_shutdown*(ssl: PSSL): cInt {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_connect*(ssl: PSSL): cint {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_read*(ssl: PSSL; buf: pointer; num: int): cint {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_write*(ssl: PSSL; buf: cstring; num: int): cint {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_get_error*(s: PSSL; ret_code: cInt): cInt {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_accept*(ssl: PSSL): cInt {.cdecl, dynlib: DLLSSLName, importc.}
proc SSL_pending*(ssl: PSSL): cInt {.cdecl, dynlib: DLLSSLName, importc.}
proc BIO_new_ssl_connect*(ctx: PSSL_CTX): PBIO {.cdecl, dynlib: DLLSSLName, importc.}
proc BIO_ctrl*(bio: PBIO; cmd: cint; larg: int; arg: cstring): int {.cdecl, dynlib: DLLSSLName, importc.}
proc BIO_get_ssl*(bio: PBIO; ssl: ptr PSSL): int
proc BIO_set_conn_hostname*(bio: PBIO; name: cstring): int
proc BIO_do_handshake*(bio: PBIO): int
proc BIO_do_connect*(bio: PBIO): int
proc BIO_read*(b: PBIO; data: cstring; length: cInt): cInt {.cdecl, dynlib: DLLUtilName, importc.}
proc BIO_write*(b: PBIO; data: cstring; length: cInt): cInt {.cdecl, dynlib: DLLUtilName, importc.}
proc BIO_free*(b: PBIO): cInt {.cdecl, dynlib: DLLUtilName, importc.}
proc ERR_print_errors_fp*(fp: TFile) {.cdecl, dynlib: DLLSSLName, importc.}
proc ERR_error_string*(e: cInt; buf: cstring): cstring {.cdecl, dynlib: DLLUtilName, importc.}
proc ERR_get_error*(): cInt {.cdecl, dynlib: DLLUtilName, importc.}
proc ERR_peek_last_error*(): cInt {.cdecl, dynlib: DLLUtilName, importc.}
proc OpenSSL_add_all_algorithms*() {.cdecl, dynlib: DLLUtilName, importc: "OPENSSL_add_all_algorithms_conf".}
proc OPENSSL_config*(configName: cstring) {.cdecl, dynlib: DLLSSLName, importc.}
proc CRYPTO_malloc_init*()
proc SSL_CTX_ctrl*(ctx: PSSL_CTX; cmd: cInt; larg: int; parg: pointer): int {. cdecl, dynlib: DLLSSLName, importc.}
proc SSLCTXSetMode*(ctx: PSSL_CTX; mode: int): int