On this page
openssl
OpenSSL support
When OpenSSL is dynamically linked, the wrapper provides partial forward and backward compatibility for OpenSSL versions above and below 1.1.0
OpenSSL can also be statically linked using --dynlibOverride:ssl
for OpenSSL >= 1.1.0. If you want to statically link against OpenSSL 1.0.x, you now have to define the openssl10
symbol via -d:openssl10
.
Build and test examples:
./bin/nim c -d:ssl -p:. -r tests/untestable/tssl.nim
./bin/nim c -d:ssl -p:. --dynlibOverride:ssl --passl:-lcrypto --passl:-lssl -r tests/untestable/tssl.nim
Imports
Types
-
SslPtr = ptr SslStruct
- Source Edit
-
PSslPtr = ptr SslPtr
- Source Edit
-
SslCtx = SslPtr
- Source Edit
-
PSSL_METHOD = SslPtr
- Source Edit
-
PSTACK = SslPtr
- Source Edit
-
PX509 = SslPtr
- Source Edit
-
PX509_NAME = SslPtr
- Source Edit
-
PEVP_MD = SslPtr
- Source Edit
-
PBIO_METHOD = SslPtr
- Source Edit
-
BIO = SslPtr
- Source Edit
-
EVP_PKEY = SslPtr
- Source Edit
-
PRSA = SslPtr
- Source Edit
-
PASN1_UTCTIME = SslPtr
- Source Edit
-
PASN1_cInt = SslPtr
- Source Edit
-
PPasswdCb = SslPtr
- Source Edit
-
EVP_MD = SslPtr
- Source Edit
-
EVP_MD_CTX = SslPtr
- Source Edit
-
EVP_PKEY_CTX = SslPtr
- Source Edit
-
ENGINE = SslPtr
- Source Edit
-
PFunction = proc () {...}{.cdecl.}
- Source Edit
-
DES_cblock = array[0 .. 7, int8]
- Source Edit
-
PDES_cblock = ptr DES_cblock
- Source Edit
-
des_ks_struct {...}{.final.} = object ks*: DES_cblock weak_key*: cint
- Source Edit
-
des_key_schedule = array[1 .. 16, des_ks_struct]
- Source Edit
-
pem_password_cb = proc (buf: cstring; size, rwflag: cint; userdata: pointer): cint {...}{. cdecl.}
- Source Edit
-
PaddingType = enum RSA_PKCS1_PADDING = 1, RSA_SSLV23_PADDING = 2, RSA_NO_PADDING = 3, RSA_PKCS1_OAEP_PADDING = 4, RSA_X931_PADDING = 5, RSA_PKCS1_PSS_PADDING = 6
- Source Edit
-
PskClientCallback = proc (ssl: SslPtr; hint: cstring; identity: cstring; max_identity_len: cuint; psk: ptr cuchar; max_psk_len: cuint): cuint {...}{.cdecl.}
- Source Edit
-
PskServerCallback = proc (ssl: SslPtr; identity: cstring; psk: ptr cuchar; max_psk_len: cint): cuint {...}{.cdecl.}
- Source Edit
-
MD5_LONG = cuint
- Source Edit
-
MD5_CTX = object A, B, C, D, Nl, Nh: MD5_LONG data: array[MD5_LBLOCK, MD5_LONG] num: cuint
- Source Edit
-
PX509_STORE = SslPtr
- Source Edit
-
PX509_OBJECT = SslPtr
- Source Edit
Consts
-
DLLSSLName = "(libssl-1_1-x64|ssleay64|libssl64).dll"
- Source Edit
-
DLLUtilName = "(libcrypto-1_1-x64|libeay64).dll"
- Source Edit
-
SSL_SENT_SHUTDOWN = 1
- Source Edit
-
SSL_RECEIVED_SHUTDOWN = 2
- Source Edit
-
EVP_MAX_MD_SIZE = 36
- Source Edit
-
SSL_ERROR_NONE = 0
- Source Edit
-
SSL_ERROR_SSL = 1
- Source Edit
-
SSL_ERROR_WANT_READ = 2
- Source Edit
-
SSL_ERROR_WANT_WRITE = 3
- Source Edit
-
SSL_ERROR_WANT_X509_LOOKUP = 4
- Source Edit
-
SSL_ERROR_SYSCALL = 5
- Source Edit
-
SSL_ERROR_ZERO_RETURN = 6
- Source Edit
-
SSL_ERROR_WANT_CONNECT = 7
- Source Edit
-
SSL_ERROR_WANT_ACCEPT = 8
- Source Edit
-
SSL_CTRL_NEED_TMP_RSA = 1
- Source Edit
-
SSL_CTRL_SET_TMP_RSA = 2
- Source Edit
-
SSL_CTRL_SET_TMP_DH = 3
- Source Edit
-
SSL_CTRL_SET_TMP_ECDH = 4
- Source Edit
-
SSL_CTRL_SET_TMP_RSA_CB = 5
- Source Edit
-
SSL_CTRL_SET_TMP_DH_CB = 6
- Source Edit
-
SSL_CTRL_SET_TMP_ECDH_CB = 7
- Source Edit
-
SSL_CTRL_GET_SESSION_REUSED = 8
- Source Edit
-
SSL_CTRL_GET_CLIENT_CERT_REQUEST = 9
- Source Edit
-
SSL_CTRL_GET_NUM_RENEGOTIATIONS = 10
- Source Edit
-
SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS = 11
- Source Edit
-
SSL_CTRL_GET_TOTAL_RENEGOTIATIONS = 12
- Source Edit
-
SSL_CTRL_GET_FLAGS = 13
- Source Edit
-
SSL_CTRL_EXTRA_CHAIN_CERT = 14
- Source Edit
-
SSL_CTRL_SET_MSG_CALLBACK = 15
- Source Edit
-
SSL_CTRL_SET_MSG_CALLBACK_ARG = 16
- Source Edit
-
SSL_CTRL_SET_MTU = 17
- Source Edit
-
SSL_CTRL_SESS_NUMBER = 20
- Source Edit
-
SSL_CTRL_SESS_CONNECT = 21
- Source Edit
-
SSL_CTRL_SESS_CONNECT_GOOD = 22
- Source Edit
-
SSL_CTRL_SESS_CONNECT_RENEGOTIATE = 23
- Source Edit
-
SSL_CTRL_SESS_ACCEPT = 24
- Source Edit
-
SSL_CTRL_SESS_ACCEPT_GOOD = 25
- Source Edit
-
SSL_CTRL_SESS_ACCEPT_RENEGOTIATE = 26
- Source Edit
-
SSL_CTRL_SESS_HIT = 27
- Source Edit
-
SSL_CTRL_SESS_CB_HIT = 28
- Source Edit
-
SSL_CTRL_SESS_MISSES = 29
- Source Edit
-
SSL_CTRL_SESS_TIMEOUTS = 30
- Source Edit
-
SSL_CTRL_SESS_CACHE_FULL = 31
- Source Edit
-
SSL_CTRL_OPTIONS = 32
- Source Edit
-
SSL_CTRL_MODE = 33
- Source Edit
-
SSL_CTRL_GET_READ_AHEAD = 40
- Source Edit
-
SSL_CTRL_SET_READ_AHEAD = 41
- Source Edit
-
SSL_CTRL_SET_SESS_CACHE_SIZE = 42
- Source Edit
-
SSL_CTRL_GET_SESS_CACHE_SIZE = 43
- Source Edit
-
SSL_CTRL_SET_SESS_CACHE_MODE = 44
- Source Edit
-
SSL_CTRL_GET_SESS_CACHE_MODE = 45
- Source Edit
-
SSL_CTRL_GET_MAX_CERT_LIST = 50
- Source Edit
-
SSL_CTRL_SET_MAX_CERT_LIST = 51
- Source Edit
-
SSL_CTRL_SET_ECDH_AUTO = 94
- Source Edit
-
TLSEXT_NAMETYPE_host_name = 0
- Source Edit
-
SSL_TLSEXT_ERR_OK = 0
- Source Edit
-
SSL_TLSEXT_ERR_ALERT_WARNING = 1
- Source Edit
-
SSL_TLSEXT_ERR_ALERT_FATAL = 2
- Source Edit
-
SSL_TLSEXT_ERR_NOACK = 3
- Source Edit
-
SSL_MODE_ENABLE_PARTIAL_WRITE = 1
- Source Edit
-
SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER = 2
- Source Edit
-
SSL_MODE_AUTO_RETRY = 4
- Source Edit
-
SSL_MODE_NO_AUTO_CHAIN = 8
- Source Edit
-
SSL_OP_NO_SSLv2 = 0x01000000
- Source Edit
-
SSL_OP_NO_SSLv3 = 0x02000000
- Source Edit
-
SSL_OP_NO_TLSv1 = 0x04000000
- Source Edit
-
SSL_OP_NO_TLSv1_1 = 0x08000000
- Source Edit
-
SSL_OP_ALL = 0x000FFFFF
- Source Edit
-
SSL_VERIFY_NONE = 0x00000000
- Source Edit
-
SSL_VERIFY_PEER = 0x00000001
- Source Edit
-
SSL_ST_CONNECT = 0x00001000
- Source Edit
-
SSL_ST_ACCEPT = 0x00002000
- Source Edit
-
SSL_ST_INIT = 12288
- Source Edit
-
OPENSSL_DES_DECRYPT = 0
- Source Edit
-
OPENSSL_DES_ENCRYPT = 1
- Source Edit
-
X509_V_OK = 0
- Source Edit
-
X509_V_ILLEGAL = 1
- Source Edit
-
X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT = 2
- Source Edit
-
X509_V_ERR_UNABLE_TO_GET_CRL = 3
- Source Edit
-
X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE = 4
- Source Edit
-
X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE = 5
- Source Edit
-
X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY = 6
- Source Edit
-
X509_V_ERR_CERT_SIGNATURE_FAILURE = 7
- Source Edit
-
X509_V_ERR_CRL_SIGNATURE_FAILURE = 8
- Source Edit
-
X509_V_ERR_CERT_NOT_YET_VALID = 9
- Source Edit
-
X509_V_ERR_CERT_HAS_EXPIRED = 10
- Source Edit
-
X509_V_ERR_CRL_NOT_YET_VALID = 11
- Source Edit
-
X509_V_ERR_CRL_HAS_EXPIRED = 12
- Source Edit
-
X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD = 13
- Source Edit
-
X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD = 14
- Source Edit
-
X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD = 15
- Source Edit
-
X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = 16
- Source Edit
-
X509_V_ERR_OUT_OF_MEM = 17
- Source Edit
-
X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT = 18
- Source Edit
-
X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN = 19
- Source Edit
-
X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY = 20
- Source Edit
-
X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE = 21
- Source Edit
-
X509_V_ERR_CERT_CHAIN_TOO_LONG = 22
- Source Edit
-
X509_V_ERR_CERT_REVOKED = 23
- Source Edit
-
X509_V_ERR_INVALID_CA = 24
- Source Edit
-
X509_V_ERR_PATH_LENGTH_EXCEEDED = 25
- Source Edit
-
X509_V_ERR_INVALID_PURPOSE = 26
- Source Edit
-
X509_V_ERR_CERT_UNTRUSTED = 27
- Source Edit
-
X509_V_ERR_CERT_REJECTED = 28
- Source Edit
-
X509_V_ERR_SUBJECT_ISSUER_MISMATCH = 29
- Source Edit
-
X509_V_ERR_AKID_SKID_MISMATCH = 30
- Source Edit
-
X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH = 31
- Source Edit
-
X509_V_ERR_KEYUSAGE_NO_CERTSIGN = 32
- Source Edit
-
X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER = 33
- Source Edit
-
X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION = 34
- Source Edit
-
X509_V_ERR_APPLICATION_VERIFICATION = 50
- Source Edit
-
SSL_FILETYPE_ASN1 = 2
- Source Edit
-
SSL_FILETYPE_PEM = 1
- Source Edit
-
EVP_PKEY_RSA = 6
- Source Edit
-
MD5_CBLOCK = 64
- Source Edit
-
MD5_LBLOCK = 16
- Source Edit
-
MD5_DIGEST_LENGTH = 16
- Source Edit
Procs
-
proc TLSv1_method(): PSSL_METHOD {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_library_init(): cint {...}{.discardable, raises: [Exception, LibraryError], tags: [RootEffect].}
- Initialize SSL using OPENSSL_init_ssl for OpenSSL >= 1.1.0 otherwise SSL_library_init Source Edit
-
proc SSL_load_error_strings() {...}{.raises: [Exception], tags: [RootEffect].}
- Source Edit
-
proc SSLv23_client_method(): PSSL_METHOD {...}{.raises: [Exception, LibraryError], tags: [RootEffect].}
- Source Edit
-
proc SSLv23_method(): PSSL_METHOD {...}{.raises: [Exception, LibraryError], tags: [RootEffect].}
- Source Edit
-
proc SSLv2_method(): PSSL_METHOD {...}{.raises: [Exception, LibraryError], tags: [RootEffect].}
- Source Edit
-
proc SSLv3_method(): PSSL_METHOD {...}{.raises: [Exception, LibraryError], tags: [RootEffect].}
- Source Edit
-
proc TLS_method(): PSSL_METHOD {...}{.raises: [Exception, LibraryError], tags: [RootEffect].}
- Source Edit
-
proc TLS_client_method(): PSSL_METHOD {...}{.raises: [Exception, LibraryError], tags: [RootEffect].}
- Source Edit
-
proc TLS_server_method(): PSSL_METHOD {...}{.raises: [Exception, LibraryError], tags: [RootEffect].}
- Source Edit
-
proc OpenSSL_add_all_algorithms() {...}{.raises: [Exception], tags: [RootEffect].}
- Source Edit
-
proc getOpenSSLVersion(): culong {...}{.raises: [Exception], tags: [RootEffect].}
- Return OpenSSL version as unsigned long or 0 if not available Source Edit
-
proc SSL_in_init(ssl: SslPtr): cint {...}{.raises: [Exception, LibraryError], tags: [RootEffect].}
- Source Edit
-
proc SSL_CTX_set_ciphersuites(ctx: SslCtx; str: cstring): cint {...}{. raises: [Exception, LibraryError], tags: [RootEffect].}
- Source Edit
-
proc ERR_load_BIO_strings() {...}{.cdecl, dynlib: DLLUtilName, importc.}
- Source Edit
-
proc SSL_new(context: SslCtx): SslPtr {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_free(ssl: SslPtr) {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_get_SSL_CTX(ssl: SslPtr): SslCtx {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_set_SSL_CTX(ssl: SslPtr; ctx: SslCtx): SslCtx {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_CTX_set_session_id_context(context: SslCtx; sid_ctx: string; sid_ctx_len: int) {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_get0_verified_chain(ssl: SslPtr): PSTACK {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_CTX_new(meth: PSSL_METHOD): SslCtx {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_CTX_load_verify_locations(ctx: SslCtx; CAfile: cstring; CApath: cstring): cint {...}{. cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_CTX_free(arg0: SslCtx) {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_CTX_set_verify(s: SslCtx; mode: int; cb: proc (a: int; b: pointer): int {...}{.cdecl.}) {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_get_verify_result(ssl: SslPtr): int {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_CTX_set_cipher_list(s: SslCtx; ciphers: cstring): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_CTX_use_certificate_file(ctx: SslCtx; filename: cstring; typ: cint): cint {...}{. stdcall, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_CTX_use_certificate_chain_file(ctx: SslCtx; filename: cstring): cint {...}{. stdcall, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_CTX_use_PrivateKey_file(ctx: SslCtx; filename: cstring; typ: cint): cint {...}{. cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_CTX_check_private_key(ctx: SslCtx): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_CTX_get_ex_new_index(argl: clong; argp: pointer; new_func: pointer; dup_func: pointer; free_func: pointer): cint {...}{. cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_CTX_set_ex_data(ssl: SslCtx; idx: cint; arg: pointer): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_CTX_get_ex_data(ssl: SslCtx; idx: cint): pointer {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_set_fd(ssl: SslPtr; fd: SocketHandle): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_shutdown(ssl: SslPtr): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_set_shutdown(ssl: SslPtr; mode: cint) {...}{.cdecl, dynlib: DLLSSLName, importc: "SSL_set_shutdown".}
- Source Edit
-
proc SSL_get_shutdown(ssl: SslPtr): cint {...}{.cdecl, dynlib: DLLSSLName, importc: "SSL_get_shutdown".}
- Source Edit
-
proc SSL_connect(ssl: SslPtr): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_read(ssl: SslPtr; buf: pointer; num: int): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_write(ssl: SslPtr; buf: cstring; num: int): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_get_error(s: SslPtr; ret_code: cint): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_accept(ssl: SslPtr): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_pending(ssl: SslPtr): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc BIO_new_mem_buf(data: pointer; len: cint): BIO {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc BIO_new_ssl_connect(ctx: SslCtx): BIO {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc BIO_ctrl(bio: BIO; cmd: cint; larg: int; arg: cstring): int {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc BIO_get_ssl(bio: BIO; ssl: ptr SslPtr): int {...}{.raises: [], tags: [].}
- Source Edit
-
proc BIO_set_conn_hostname(bio: BIO; name: cstring): int {...}{.raises: [], tags: [].}
- Source Edit
-
proc BIO_do_handshake(bio: BIO): int {...}{.raises: [], tags: [].}
- Source Edit
-
proc BIO_do_connect(bio: BIO): int {...}{.raises: [], tags: [].}
- Source Edit
-
proc BIO_read(b: BIO; data: cstring; length: cint): cint {...}{.cdecl, dynlib: DLLUtilName, importc.}
- Source Edit
-
proc BIO_write(b: BIO; data: cstring; length: cint): cint {...}{.cdecl, dynlib: DLLUtilName, importc.}
- Source Edit
-
proc BIO_free(b: BIO): cint {...}{.cdecl, dynlib: DLLUtilName, importc.}
- Source Edit
-
proc ERR_print_errors_fp(fp: File) {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc ERR_error_string(e: culong; buf: cstring): cstring {...}{.cdecl, dynlib: DLLUtilName, importc.}
- Source Edit
-
proc ERR_get_error(): culong {...}{.cdecl, dynlib: DLLUtilName, importc.}
- Source Edit
-
proc ERR_peek_last_error(): culong {...}{.cdecl, dynlib: DLLUtilName, importc.}
- Source Edit
-
proc OPENSSL_config(configName: cstring) {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc OPENSSL_sk_num(stack: PSTACK): int {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc OPENSSL_sk_value(stack: PSTACK; index: int): pointer {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc d2i_X509(px: ptr PX509; i: ptr ptr cuchar; len: cint): PX509 {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc i2d_X509(cert: PX509; o: ptr ptr cuchar): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc d2i_X509(b: string): PX509 {...}{.raises: [Exception], tags: [].}
- decode DER/BER bytestring into X.509 certificate struct Source Edit
-
proc i2d_X509(cert: PX509): string {...}{.raises: [Exception], tags: [].}
-
encode
cert
to DER string Source Edit -
proc CRYPTO_malloc_init() {...}{.raises: [], tags: [].}
- Source Edit
-
proc SSL_CTX_ctrl(ctx: SslCtx; cmd: cint; larg: clong; parg: pointer): clong {...}{. cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSLCTXSetMode(ctx: SslCtx; mode: int): int {...}{.raises: [], tags: [].}
- Source Edit
-
proc SSL_ctrl(ssl: SslPtr; cmd: cint; larg: int; parg: pointer): int {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc SSL_set_tlsext_host_name(ssl: SslPtr; name: cstring): int {...}{.raises: [], tags: [].}
- Source Edit
-
proc SSL_get_servername(ssl: SslPtr; typ: cint = TLSEXT_NAMETYPE_host_name): cstring {...}{. cdecl, dynlib: DLLSSLName, importc.}
-
Retrieve the server name requested in the client hello. This can be used in the callback set in
SSL_CTX_set_tlsext_servername_callback
to implement virtual hosting. May returnnil
. Source Edit -
proc SSL_CTX_set_tlsext_servername_callback(ctx: SslCtx; cb: proc (ssl: SslPtr; cb_id: int; arg: pointer): int {...}{.cdecl.}): int {...}{. raises: [], tags: [].}
-
Set the callback to be used on listening SSL connections when the client hello is received.
The callback should return one of:
- SSL_TLSEXT_ERR_OK
- SSL_TLSEXT_ERR_ALERT_WARNING
- SSL_TLSEXT_ERR_ALERT_FATAL
- SSL_TLSEXT_ERR_NOACK
-
proc SSL_CTX_set_tlsext_servername_arg(ctx: SslCtx; arg: pointer): int {...}{. raises: [], tags: [].}
-
Set the pointer to be used in the callback registered to
SSL_CTX_set_tlsext_servername_callback
. Source Edit -
proc SSL_CTX_set_psk_client_callback(ctx: SslCtx; callback: PskClientCallback) {...}{. cdecl, dynlib: DLLSSLName, importc.}
- Set callback called when OpenSSL needs PSK (for client). Source Edit
-
proc SSL_CTX_set_psk_server_callback(ctx: SslCtx; callback: PskServerCallback) {...}{. cdecl, dynlib: DLLSSLName, importc.}
- Set callback called when OpenSSL needs PSK (for server). Source Edit
-
proc SSL_CTX_use_psk_identity_hint(ctx: SslCtx; hint: cstring): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Set PSK identity hint to use. Source Edit
-
proc SSL_get_psk_identity(ssl: SslPtr): cstring {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Get PSK identity. Source Edit
-
proc SSL_CTX_set_ecdh_auto(ctx: SslCtx; onoff: cint): cint {...}{.inline, raises: [Exception], tags: [RootEffect].}
-
Set automatic curve selection.
On OpenSSL >= 1.1.0 this is on by default and cannot be disabled.
Source Edit -
proc bioNew(b: PBIO_METHOD): BIO {...}{.cdecl, dynlib: DLLUtilName, importc: "BIO_new".}
- Source Edit
-
proc bioFreeAll(b: BIO) {...}{.cdecl, dynlib: DLLUtilName, importc: "BIO_free_all".}
- Source Edit
-
proc bioSMem(): PBIO_METHOD {...}{.cdecl, dynlib: DLLUtilName, importc: "BIO_s_mem".}
- Source Edit
-
proc bioCtrlPending(b: BIO): cint {...}{.cdecl, dynlib: DLLUtilName, importc: "BIO_ctrl_pending".}
- Source Edit
-
proc bioRead(b: BIO; Buf: cstring; length: cint): cint {...}{.cdecl, dynlib: DLLUtilName, importc: "BIO_read".}
- Source Edit
-
proc bioWrite(b: BIO; Buf: cstring; length: cint): cint {...}{.cdecl, dynlib: DLLUtilName, importc: "BIO_write".}
- Source Edit
-
proc sslSetConnectState(s: SslPtr) {...}{.cdecl, dynlib: DLLSSLName, importc: "SSL_set_connect_state".}
- Source Edit
-
proc sslSetAcceptState(s: SslPtr) {...}{.cdecl, dynlib: DLLSSLName, importc: "SSL_set_accept_state".}
- Source Edit
-
proc sslRead(ssl: SslPtr; buf: cstring; num: cint): cint {...}{.cdecl, dynlib: DLLSSLName, importc: "SSL_read".}
- Source Edit
-
proc sslPeek(ssl: SslPtr; buf: cstring; num: cint): cint {...}{.cdecl, dynlib: DLLSSLName, importc: "SSL_peek".}
- Source Edit
-
proc sslWrite(ssl: SslPtr; buf: cstring; num: cint): cint {...}{.cdecl, dynlib: DLLSSLName, importc: "SSL_write".}
- Source Edit
-
proc sslSetBio(ssl: SslPtr; rbio, wbio: BIO) {...}{.cdecl, dynlib: DLLSSLName, importc: "SSL_set_bio".}
- Source Edit
-
proc sslDoHandshake(ssl: SslPtr): cint {...}{.cdecl, dynlib: DLLSSLName, importc: "SSL_do_handshake".}
- Source Edit
-
proc ErrClearError() {...}{.cdecl, dynlib: DLLUtilName, importc: "ERR_clear_error".}
- Source Edit
-
proc ErrFreeStrings() {...}{.cdecl, dynlib: DLLUtilName, importc: "ERR_free_strings".}
- Source Edit
-
proc ErrRemoveState(pid: cint) {...}{.cdecl, dynlib: DLLUtilName, importc: "ERR_remove_state".}
- Source Edit
-
proc PEM_read_bio_RSA_PUBKEY(bp: BIO; x: ptr PRSA; pw: pem_password_cb; u: pointer): PRSA {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc RSA_verify(kind: cint; origMsg: pointer; origMsgLen: cuint; signature: pointer; signatureLen: cuint; rsa: PRSA): cint {...}{. cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc PEM_read_RSAPrivateKey(fp: pointer; x: ptr PRSA; cb: pem_password_cb; u: pointer): PRSA {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc PEM_read_RSAPublicKey(fp: pointer; x: ptr PRSA; cb: pem_password_cb; u: pointer): PRSA {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc PEM_read_bio_RSAPublicKey(bp: BIO; x: ptr PRSA; cb: pem_password_cb; u: pointer): PRSA {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc PEM_read_bio_RSAPrivateKey(bp: BIO; x: ptr PRSA; cb: pem_password_cb; u: pointer): PRSA {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc RSA_private_encrypt(flen: cint; fr: ptr cuchar; to: ptr cuchar; rsa: PRSA; padding: PaddingType): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc RSA_public_encrypt(flen: cint; fr: ptr cuchar; to: ptr cuchar; rsa: PRSA; padding: PaddingType): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc RSA_private_decrypt(flen: cint; fr: ptr cuchar; to: ptr cuchar; rsa: PRSA; padding: PaddingType): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc RSA_public_decrypt(flen: cint; fr: ptr cuchar; to: ptr cuchar; rsa: PRSA; padding: PaddingType): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc RSA_free(rsa: PRSA) {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc RSA_size(rsa: PRSA): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc EVP_md_null(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_md2(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_md4(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_md5(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_sha(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_sha1(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_dss(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_dss1(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_ecdsa(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_sha224(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_sha256(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_sha384(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_sha512(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_mdc2(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_ripemd160(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_whirlpool(): EVP_MD {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_MD_size(md: EVP_MD): cint {...}{.cdecl, importc.}
- Source Edit
-
proc HMAC(evp_md: EVP_MD; key: pointer; key_len: cint; d: cstring; n: csize_t; md: cstring; md_len: ptr cuint): cstring {...}{.cdecl, importc.}
- Source Edit
-
proc PEM_read_bio_PrivateKey(bp: BIO; x: ptr EVP_PKEY; cb: pointer; u: pointer): EVP_PKEY {...}{. cdecl, importc.}
- Source Edit
-
proc EVP_PKEY_free(p: EVP_PKEY) {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_DigestSignInit(ctx: EVP_MD_CTX; pctx: ptr EVP_PKEY_CTX; typ: EVP_MD; e: ENGINE; pkey: EVP_PKEY): cint {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_DigestInit_ex(ctx: EVP_MD_CTX; typ: PEVP_MD; engine: SslPtr = nil): cint {...}{. cdecl, importc.}
- Source Edit
-
proc EVP_DigestUpdate(ctx: EVP_MD_CTX; data: pointer; len: cuint): cint {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_DigestFinal_ex(ctx: EVP_MD_CTX; buffer: pointer; size: ptr cuint): cint {...}{. cdecl, importc.}
- Source Edit
-
proc EVP_DigestSignFinal(ctx: EVP_MD_CTX; data: pointer; len: ptr csize_t): cint {...}{. cdecl, importc.}
- Source Edit
-
proc EVP_PKEY_CTX_new(pkey: EVP_PKEY; e: ENGINE): EVP_PKEY_CTX {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_PKEY_CTX_free(pkeyCtx: EVP_PKEY_CTX) {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_PKEY_sign_init(c: EVP_PKEY_CTX): cint {...}{.cdecl, importc.}
- Source Edit
-
proc EVP_MD_CTX_create(): EVP_MD_CTX {...}{.cdecl, importc: "EVP_MD_CTX_new".}
- Source Edit
-
proc EVP_MD_CTX_destroy(ctx: EVP_MD_CTX) {...}{.cdecl, importc: "EVP_MD_CTX_free".}
- Source Edit
-
proc EVP_MD_CTX_cleanup(ctx: EVP_MD_CTX): cint {...}{.cdecl, importc: "EVP_MD_CTX_cleanup".}
- Source Edit
-
proc md5_Init(c: var MD5_CTX): cint {...}{.importc: "MD5_Init".}
- Source Edit
-
proc md5_Update(c: var MD5_CTX; data: pointer; len: csize_t): cint {...}{. importc: "MD5_Update".}
- Source Edit
-
proc md5_Final(md: cstring; c: var MD5_CTX): cint {...}{.importc: "MD5_Final".}
- Source Edit
-
proc md5(d: ptr cuchar; n: csize_t; md: ptr cuchar): ptr cuchar {...}{.importc: "MD5".}
- Source Edit
-
proc md5_Transform(c: var MD5_CTX; b: ptr cuchar) {...}{.importc: "MD5_Transform".}
- Source Edit
-
proc md5_File(file: string): string {...}{.raises: [IOError, Exception], tags: [ReadIOEffect].}
- Generate MD5 hash for a file. Result is a 32 character Source Edit
-
proc md5_Str(str: string): string {...}{.raises: [], tags: [].}
- Generate MD5 hash for a string. Result is a 32 character hex string with lowercase characters Source Edit
-
proc SSL_get_peer_certificate(ssl: SslCtx): PX509 {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc X509_get_subject_name(a: PX509): PX509_NAME {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc X509_get_issuer_name(a: PX509): PX509_NAME {...}{.cdecl, dynlib: DLLUtilName, importc.}
- Source Edit
-
proc X509_NAME_oneline(a: PX509_NAME; buf: cstring; size: cint): cstring {...}{. cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc X509_NAME_get_text_by_NID(subject: cstring; NID: cint; buf: cstring; size: cint): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc X509_check_host(cert: PX509; name: cstring; namelen: cint; flags: cuint; peername: cstring): cint {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc X509_free(cert: PX509) {...}{.cdecl, dynlib: DLLSSLName, importc.}
- Source Edit
-
proc X509_OBJECT_new(): PX509_OBJECT {...}{.importc.}
- Source Edit
-
proc X509_OBJECT_free(a: PX509_OBJECT) {...}{.importc.}
- Source Edit
-
proc X509_STORE_new(): PX509_STORE {...}{.importc.}
- Source Edit
-
proc X509_STORE_free(v: PX509_STORE) {...}{.importc.}
- Source Edit
-
proc X509_STORE_lock(ctx: PX509_STORE): cint {...}{.importc.}
- Source Edit
-
proc X509_STORE_unlock(ctx: PX509_STORE): cint {...}{.importc.}
- Source Edit
-
proc X509_STORE_up_ref(v: PX509_STORE): cint {...}{.importc.}
- Source Edit
-
proc X509_STORE_set_flags(ctx: PX509_STORE; flags: culong): cint {...}{.importc.}
- Source Edit
-
proc X509_STORE_set_purpose(ctx: PX509_STORE; purpose: cint): cint {...}{.importc.}
- Source Edit
-
proc X509_STORE_set_trust(ctx: PX509_STORE; trust: cint): cint {...}{.importc.}
- Source Edit
-
proc X509_STORE_add_cert(ctx: PX509_STORE; x: PX509): cint {...}{.importc.}
- Source Edit
© 2006–2021 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/openssl.html