std/openssl
Исходный кодРедактироватьОбёртка OpenSSL. Поддерживает динамическую (по умолчанию) или статическую компоновку OpenSSL >= 1.1.0, используя --dynlibOverride:ssl.
-d:sslVersion=1.2.3 может быть использовано для принудительного указания версии SSL. Эта версия должна быть включена в имя библиотеки. -d:useOpenssl3 может быть установлено для OpenSSL 3 вместо этого.
Также есть ограниченная поддержка OpenSSL 1.0.x, которая может потребовать -d:openssl10.
Примеры сборки и тестирования:
./bin/nim c -d:ssl -p:. -r tests/stdlib/tssl.nim ./bin/nim c -d:ssl --threads:on -p:. -r tests/stdlib/thttpclient_ssl.nim ./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 ./bin/nim r --putenv:NIM_TESTAMENT_REMOTE_NETWORKING:1 -d:ssl -p:testament/lib --threads:on tests/untestable/thttpclient_ssl_remotenetwork.nim
Импорты
- strutils, winlean, dynlib, strutils
Типы
BIO = SslPtr
- Исходный код Редактировать
DES_cblock = array[0 .. 7, int8]
- Исходный код Редактировать
des_key_schedule = array[1 .. 16, des_ks_struct]
- Исходный код Редактировать
des_ks_struct {.final.} = object ks*: DES_cblock weak_key*: cint- Исходный код Редактировать
ENGINE = SslPtr
- Исходный код Редактировать
EVP_MD = SslPtr
- Исходный код Редактировать
EVP_MD_CTX = SslPtr
- Исходный код Редактировать
EVP_PKEY = SslPtr
- Исходный код Редактировать
EVP_PKEY_CTX = SslPtr
- Исходный код Редактировать
MD5_CTX = object
- Исходный код Редактировать
MD5_LONG = cuint
- Исходный код Редактировать
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
- Исходный код Редактировать
PASN1_cInt = SslPtr
- Исходный код Редактировать
PASN1_UTCTIME = SslPtr
- Исходный код Редактировать
PBIO_METHOD = SslPtr
- Исходный код Редактировать
PDES_cblock = ptr DES_cblock
- Исходный код Редактировать
pem_password_cb = proc (buf: cstring; size, rwflag: cint; userdata: pointer): cint {. cdecl.}- Исходный код Редактировать
PFunction = proc () {.cdecl.}- Исходный код Редактировать
PPasswdCb = SslPtr
- Исходный код Редактировать
PRSA = SslPtr
- Исходный код Редактировать
PskClientCallback = proc (ssl: SslPtr; hint: cstring; identity: cstring; max_identity_len: cuint; psk: ptr uint8; max_psk_len: cuint): cuint {.cdecl.}- Исходный код Редактировать
PskServerCallback = proc (ssl: SslPtr; identity: cstring; psk: ptr uint8; max_psk_len: cint): cuint {.cdecl.}- Исходный код Редактировать
PSSL_METHOD = SslPtr
- Исходный код Редактировать
PSslPtr = ptr SslPtr
- Исходный код Редактировать
PSTACK = SslPtr
- Исходный код Редактировать
PX509 = SslPtr
- Исходный код Редактировать
PX509_NAME = SslPtr
- Исходный код Редактировать
SslCtx = SslPtr
- Исходный код Редактировать
SslPtr = ptr SslStruct
- Исходный код Редактировать
Константы
DLLSSLName = "(libssl-1_1-x64|ssleay64|libssl64).dll"
- Исходный код Редактировать
DLLUtilName = "(libcrypto-1_1-x64|libeay64).dll"
- Исходный код Редактировать
EVP_MAX_MD_SIZE = 36
- Исходный код Редактировать
EVP_PKEY_RSA = 6
- Исходный код Редактировать
MD5_CBLOCK = 64
- Исходный код Редактировать
MD5_DIGEST_LENGTH = 16
- Исходный код Редактировать
MD5_LBLOCK = 16
- Исходный код Редактировать
OPENSSL_DES_DECRYPT = 0
- Исходный код Редактировать
OPENSSL_DES_ENCRYPT = 1
- Исходный код Редактировать
SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS = 11
- Исходный код Редактировать
SSL_CTRL_EXTRA_CHAIN_CERT = 14
- Исходный код Редактировать
SSL_CTRL_GET_CLIENT_CERT_REQUEST = 9
- Исходный код Редактировать
SSL_CTRL_GET_FLAGS = 13
- Исходный код Редактировать
SSL_CTRL_GET_MAX_CERT_LIST = 50
- Исходный код Редактировать
SSL_CTRL_GET_NUM_RENEGOTIATIONS = 10
- Исходный код Редактировать
SSL_CTRL_GET_READ_AHEAD = 40
- Исходный код Редактировать
SSL_CTRL_GET_SESS_CACHE_MODE = 45
- Исходный код Редактировать
SSL_CTRL_GET_SESS_CACHE_SIZE = 43
- Исходный код Редактировать
SSL_CTRL_GET_SESSION_REUSED = 8
- Исходный код Редактировать
SSL_CTRL_GET_TOTAL_RENEGOTIATIONS = 12
- Исходный код Редактировать
SSL_CTRL_MODE = 33
- Исходный код Редактировать
SSL_CTRL_NEED_TMP_RSA = 1
- Исходный код Редактировать
SSL_CTRL_OPTIONS = 32
- Исходный код Редактировать
SSL_CTRL_SESS_ACCEPT = 24
- Исходный код Редактировать
SSL_CTRL_SESS_ACCEPT_GOOD = 25
- Исходный код Редактировать
SSL_CTRL_SESS_ACCEPT_RENEGOTIATE = 26
- Исходный код Редактировать
SSL_CTRL_SESS_CACHE_FULL = 31
- Исходный код Редактировать
SSL_CTRL_SESS_CB_HIT = 28
- Исходный код Редактировать
SSL_CTRL_SESS_CONNECT = 21
- Исходный код Редактировать
SSL_CTRL_SESS_CONNECT_GOOD = 22
- Исходный код Редактировать
SSL_CTRL_SESS_CONNECT_RENEGOTIATE = 23
- Исходный код Редактировать
SSL_CTRL_SESS_HIT = 27
- Исходный код Редактировать
SSL_CTRL_SESS_MISSES = 29
- Исходный код Редактировать
SSL_CTRL_SESS_NUMBER = 20
- Исходный код Редактировать
SSL_CTRL_SESS_TIMEOUTS = 30
- Исходный код Редактировать
SSL_CTRL_SET_ECDH_AUTO = 94
- Исходный код Редактировать
SSL_CTRL_SET_MAX_CERT_LIST = 51
- Исходный код Редактировать
SSL_CTRL_SET_MSG_CALLBACK = 15
- Исходный код Редактировать
SSL_CTRL_SET_MSG_CALLBACK_ARG = 16
- Исходный код Изменить
SSL_CTRL_SET_MTU = 17
- Исходный код Изменить
SSL_CTRL_SET_READ_AHEAD = 41
- Исходный код Изменить
SSL_CTRL_SET_SESS_CACHE_MODE = 44
- Исходный код Изменить
SSL_CTRL_SET_SESS_CACHE_SIZE = 42
- Исходный код Изменить
SSL_CTRL_SET_TMP_DH = 3
- Исходный код Изменить
SSL_CTRL_SET_TMP_DH_CB = 6
- Исходный код Изменить
SSL_CTRL_SET_TMP_ECDH = 4
- Исходный код Изменить
SSL_CTRL_SET_TMP_ECDH_CB = 7
- Исходный код Изменить
SSL_CTRL_SET_TMP_RSA = 2
- Исходный код Изменить
SSL_CTRL_SET_TMP_RSA_CB = 5
- Исходный код Изменить
SSL_ERROR_NONE = 0
- Исходный код Изменить
SSL_ERROR_SSL = 1
- Исходный код Изменить
SSL_ERROR_SYSCALL = 5
- Исходный код Изменить
SSL_ERROR_WANT_ACCEPT = 8
- Исходный код Изменить
SSL_ERROR_WANT_CONNECT = 7
- Исходный код Изменить
SSL_ERROR_WANT_READ = 2
- Исходный код Изменить
SSL_ERROR_WANT_WRITE = 3
- Исходный код Изменить
SSL_ERROR_WANT_X509_LOOKUP = 4
- Исходный код Изменить
SSL_ERROR_ZERO_RETURN = 6
- Исходный код Изменить
SSL_FILETYPE_ASN1 = 2
- Исходный код Изменить
SSL_FILETYPE_PEM = 1
- Исходный код Изменить
SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER = 2
- Исходный код Изменить
SSL_MODE_AUTO_RETRY = 4
- Исходный код Изменить
SSL_MODE_ENABLE_PARTIAL_WRITE = 1
- Исходный код Изменить
SSL_MODE_NO_AUTO_CHAIN = 8
- Исходный код Изменить
SSL_OP_ALL = 0x000FFFFF
- Исходный код Изменить
SSL_OP_NO_SSLv2 = 0x01000000
- Исходный код Изменить
SSL_OP_NO_SSLv3 = 0x02000000
- Исходный код Изменить
SSL_OP_NO_TLSv1 = 0x04000000
- Исходный код Изменить
SSL_OP_NO_TLSv1_1 = 0x08000000
- Исходный код Изменить
SSL_RECEIVED_SHUTDOWN = 2
- Исходный код Изменить
SSL_SENT_SHUTDOWN = 1
- Исходный код Изменить
SSL_ST_ACCEPT = 0x00002000
- Исходный код Изменить
SSL_ST_CONNECT = 0x00001000
- Исходный код Изменить
SSL_ST_INIT = 12288
- Исходный код Изменить
SSL_TLSEXT_ERR_ALERT_FATAL = 2
- Исходный код Изменить
SSL_TLSEXT_ERR_ALERT_WARNING = 1
- Исходный код Изменить
SSL_TLSEXT_ERR_NOACK = 3
- Исходный код Редактировать
SSL_TLSEXT_ERR_OK = 0
- Исходный код Редактировать
SSL_VERIFY_NONE = 0x00000000
- Исходный код Редактировать
SSL_VERIFY_PEER = 0x00000001
- Исходный код Редактировать
TLSEXT_NAMETYPE_host_name = 0
- Исходный код Редактировать
useOpenssl3 {.booldefine.} = false- Исходный код Редактировать
X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH = 31
- Исходный код Редактировать
X509_V_ERR_AKID_SKID_MISMATCH = 30
- Исходный код Редактировать
X509_V_ERR_APPLICATION_VERIFICATION = 50
- Исходный код Редактировать
X509_V_ERR_CERT_CHAIN_TOO_LONG = 22
- Исходный код Редактировать
X509_V_ERR_CERT_HAS_EXPIRED = 10
- Исходный код Редактировать
X509_V_ERR_CERT_NOT_YET_VALID = 9
- Исходный код Редактировать
X509_V_ERR_CERT_REJECTED = 28
- Исходный код Редактировать
X509_V_ERR_CERT_REVOKED = 23
- Исходный код Редактировать
X509_V_ERR_CERT_SIGNATURE_FAILURE = 7
- Исходный код Редактировать
X509_V_ERR_CERT_UNTRUSTED = 27
- Исходный код Редактировать
X509_V_ERR_CRL_HAS_EXPIRED = 12
- Исходный код Редактировать
X509_V_ERR_CRL_NOT_YET_VALID = 11
- Исходный код Редактировать
X509_V_ERR_CRL_SIGNATURE_FAILURE = 8
- Исходный код Редактировать
X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT = 18
- Исходный код Редактировать
X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD = 14
- Исходный код Редактировать
X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD = 13
- Исходный код Редактировать
X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD = 15
- Исходный код Редактировать
X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = 16
- Исходный код Редактировать
X509_V_ERR_INVALID_CA = 24
- Исходный код Редактировать
X509_V_ERR_INVALID_PURPOSE = 26
- Исходный код Редактировать
X509_V_ERR_KEYUSAGE_NO_CERTSIGN = 32
- Исходный код Редактировать
X509_V_ERR_OUT_OF_MEM = 17
- Исходный код Редактировать
X509_V_ERR_PATH_LENGTH_EXCEEDED = 25
- Исходный код Редактировать
X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN = 19
- Исходный код Редактировать
X509_V_ERR_SUBJECT_ISSUER_MISMATCH = 29
- Исходный код Редактировать
X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY = 6
- Исходный код Редактировать
X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE = 4
- Исходный код Редактировать
X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE = 5
- Исходный код Редактировать
X509_V_ERR_UNABLE_TO_GET_CRL = 3
- Исходный код Редактировать
X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER = 33
- Исходный код Редактировать
X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT = 2
- Исходный код Редактировать
X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY = 20
- Исходный код Изменить
X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE = 21
- Исходный код Изменить
X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION = 34
- Исходный код Изменить
X509_V_ILLEGAL = 1
- Исходный код Изменить
X509_V_OK = 0
- Исходный код Изменить
Процедуры
proc BIO_ctrl(bio: BIO; cmd: cint; larg: int; arg: cstring): int {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc BIO_do_connect(bio: BIO): int {....raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc BIO_do_handshake(bio: BIO): int {....raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc BIO_free(b: BIO): cint {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc BIO_get_ssl(bio: BIO; ssl: ptr SslPtr): int {....raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc BIO_new_mem_buf(data: pointer; len: cint): BIO {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc BIO_new_ssl_connect(ctx: SslCtx): BIO {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc BIO_read(b: BIO; data: cstring; length: cint): cint {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc BIO_set_conn_hostname(bio: BIO; name: cstring): int {....raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc BIO_write(b: BIO; data: cstring; length: cint): cint {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc bioCtrlPending(b: BIO): cint {.cdecl, dynlib: DLLUtilName, importc: "BIO_ctrl_pending", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc bioFreeAll(b: BIO) {.cdecl, dynlib: DLLUtilName, importc: "BIO_free_all", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc bioNew(b: PBIO_METHOD): BIO {.cdecl, dynlib: DLLUtilName, importc: "BIO_new", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc bioRead(b: BIO; Buf: cstring; length: cint): cint {.cdecl, dynlib: DLLUtilName, importc: "BIO_read", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc bioSMem(): PBIO_METHOD {.cdecl, dynlib: DLLUtilName, importc: "BIO_s_mem", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc bioWrite(b: BIO; Buf: cstring; length: cint): cint {.cdecl, dynlib: DLLUtilName, importc: "BIO_write", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc CRYPTO_malloc_init() {....raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc d2i_X509(b: string): PX509 {....raises: [Exception], tags: [], forbids: [].}- декодирование DER/BER строковых данных в структуру сертификата X.509 Исходный код Редактировать
proc d2i_X509(px: ptr PX509; i: ptr ptr uint8; len: cint): PX509 {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc ERR_error_string(e: culong; buf: cstring): cstring {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc ERR_get_error(): culong {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc ERR_load_BIO_strings() {....raises: [Exception], tags: [RootEffect], forbids: [].}- Исходный код Редактировать
proc ERR_peek_last_error(): culong {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc ERR_print_errors_fp(fp: File) {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc ErrClearError() {.cdecl, dynlib: DLLUtilName, importc: "ERR_clear_error", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc ErrFreeStrings() {.cdecl, dynlib: DLLUtilName, importc: "ERR_free_strings", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc ErrRemoveState(pid: cint) {.cdecl, dynlib: DLLUtilName, importc: "ERR_remove_state", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc EVP_DigestFinal_ex(ctx: EVP_MD_CTX; buffer: pointer; size: ptr cuint): cint {. cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc EVP_DigestInit_ex(ctx: EVP_MD_CTX; typ: EVP_MD; engine: SslPtr = nil): cint {. cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc EVP_DigestSignFinal(ctx: EVP_MD_CTX; data: pointer; len: ptr csize_t): cint {. cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc EVP_DigestSignInit(ctx: EVP_MD_CTX; pctx: ptr EVP_PKEY_CTX; typ: EVP_MD; e: ENGINE; pkey: EVP_PKEY): cint {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc EVP_DigestUpdate(ctx: EVP_MD_CTX; data: pointer; len: cuint): cint {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc EVP_dss(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc EVP_dss1(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_ecdsa(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_md2(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_md4(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_md5(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_MD_CTX_cleanup(ctx: EVP_MD_CTX): cint {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_MD_CTX_create(): EVP_MD_CTX {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_MD_CTX_destroy(ctx: EVP_MD_CTX) {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_md_null(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_MD_size(md: EVP_MD): cint {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_mdc2(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_PKEY_CTX_free(pkeyCtx: EVP_PKEY_CTX) {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_PKEY_CTX_new(pkey: EVP_PKEY; e: ENGINE): EVP_PKEY_CTX {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_PKEY_free(p: EVP_PKEY) {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_PKEY_sign_init(c: EVP_PKEY_CTX): cint {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_ripemd160(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_sha(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_sha1(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_sha224(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_sha256(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_sha384(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_sha512(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc EVP_whirlpool(): EVP_MD {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc getOpenSSLVersion(): culong {....raises: [Exception], tags: [RootEffect], forbids: [].}- Возвращает версию OpenSSL в виде целого числа без знака или 0, если она недоступна Исходный код Изменить
proc HMAC(evp_md: EVP_MD; key: pointer; key_len: cint; d: cstring; n: csize_t; md: cstring; md_len: ptr cuint): cstring {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc i2d_X509(cert: PX509): string {....raises: [Exception], tags: [], forbids: [].}- кодирует
certв строку DER Исходный код Изменить proc i2d_X509(cert: PX509; o: ptr ptr uint8): cint {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc md5(d: ptr uint8; n: csize_t; md: ptr uint8): ptr uint8 {.importc: "MD5", ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc md5_File(file: string): string {....raises: [IOError, Exception], tags: [ReadIOEffect], forbids: [].}- Создаёт хэш MD5 для файла. Результат — строка из 32 символов Исходный код Изменить
proc md5_Final(md: cstring; c: var MD5_CTX): cint {.importc: "MD5_Final", ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc md5_Init(c: var MD5_CTX): cint {.importc: "MD5_Init", ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc md5_Str(str: string): string {....raises: [], tags: [], forbids: [].}- Создаёт хэш MD5 для строки. Результат — строка из 32 шестнадцатеричных символов в нижнем регистре Исходный код Изменить
proc md5_Transform(c: var MD5_CTX; b: ptr uint8) {.importc: "MD5_Transform", ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc md5_Update(c: var MD5_CTX; data: pointer; len: csize_t): cint {. importc: "MD5_Update", ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc OpenSSL_add_all_algorithms() {....raises: [LibraryError, Exception], tags: [RootEffect], forbids: [].}- Исходный код Изменить
proc OPENSSL_config(configName: cstring) {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc OPENSSL_sk_num(stack: PSTACK): int {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc OPENSSL_sk_value(stack: PSTACK; index: int): pointer {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc PEM_read_bio_PrivateKey(bp: BIO; x: ptr EVP_PKEY; cb: pointer; u: pointer): EVP_PKEY {. cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc PEM_read_bio_RSA_PUBKEY(bp: BIO; x: ptr PRSA; pw: pem_password_cb; u: pointer): PRSA {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc PEM_read_bio_RSAPrivateKey(bp: BIO; x: ptr PRSA; cb: pem_password_cb; u: pointer): PRSA {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc PEM_read_bio_RSAPublicKey(bp: BIO; x: ptr PRSA; cb: pem_password_cb; u: pointer): PRSA {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc PEM_read_RSA_PUBKEY(fp: pointer; x: ptr PRSA; cb: pem_password_cb; u: pointer): PRSA {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc PEM_read_RSAPrivateKey(fp: pointer; x: ptr PRSA; cb: pem_password_cb; u: pointer): PRSA {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc PEM_read_RSAPublicKey(fp: pointer; x: ptr PRSA; cb: pem_password_cb; u: pointer): PRSA {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc RSA_free(rsa: PRSA) {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc RSA_private_decrypt(flen: cint; fr: ptr uint8; to: ptr uint8; rsa: PRSA; padding: PaddingType): cint {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc RSA_private_encrypt(flen: cint; fr: ptr uint8; to: ptr uint8; rsa: PRSA; padding: PaddingType): cint {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc RSA_public_decrypt(flen: cint; fr: ptr uint8; to: ptr uint8; rsa: PRSA; padding: PaddingType): cint {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc RSA_public_encrypt(flen: cint; fr: ptr uint8; to: ptr uint8; rsa: PRSA; padding: PaddingType): cint {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc RSA_size(rsa: PRSA): cint {.cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc RSA_verify(kind: cint; origMsg: pointer; origMsgLen: cuint; signature: pointer; signatureLen: cuint; rsa: PRSA): cint {. cdecl, dynlib: DLLUtilName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc SSL_accept(ssl: SslPtr): cint {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc SSL_connect(ssl: SslPtr): cint {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc SSL_ctrl(ssl: SslPtr; cmd: cint; larg: int; parg: pointer): int {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc SSL_CTX_check_private_key(ctx: SslCtx): cint {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc SSL_CTX_ctrl(ctx: SslCtx; cmd: cint; larg: clong; parg: pointer): clong {. cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc SSL_CTX_free(arg0: SslCtx) {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc SSL_CTX_get_ex_data(ssl: SslCtx; idx: cint): pointer {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
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, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc SSL_CTX_load_verify_locations(ctx: SslCtx; CAfile: cstring; CApath: cstring): cint {. cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc SSL_CTX_new(meth: PSSL_METHOD): SslCtx {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc SSL_CTX_set_alpn_protos(ctx: SslCtx; protos: cstring; protos_len: cuint): cint {. cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc SSL_CTX_set_alpn_select_cb(ctx: SslCtx; cb: proc (ssl: SslPtr; out_proto: ptr cstring; outlen: cstring; in_proto: cstring; inlen: cuint; arg: pointer): cint {.cdecl.}; arg: pointer): cint {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Изменить
proc SSL_CTX_set_tlsext_servername_callback(ctx: SslCtx; cb: proc (ssl: SslPtr; cb_id: int; arg: pointer): int {.cdecl.}): int {. ...raises: [], tags: [], forbids: [].}-
Установить обратный вызов, который будет использоваться при подключении к серверу SSL при получении клиентского приветствия.
Обратный вызов должен вернуть одно из значений:
- SSL_TLSEXT_ERR_OK
- SSL_TLSEXT_ERR_ALERT_WARNING
- SSL_TLSEXT_ERR_ALERT_FATAL
- SSL_TLSEXT_ERR_NOACK
proc SSL_get_servername(ssl: SslPtr; typ: cint = TLSEXT_NAMETYPE_host_name): cstring {. cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Получить имя сервера, запрошенное в клиентом приветствии. Это может быть использовано в обратном вызове, установленном в
SSL_CTX_set_tlsext_servername_callback, для реализации виртуального хостинга. Может вернутьnil. Источник Изменить
proc SSL_load_error_strings() {....raises: [LibraryError, Exception], tags: [RootEffect], forbids: [].}- Исходный код Редактировать
proc SSL_new(context: SslCtx): SslPtr {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc SSL_pending(ssl: SslPtr): cint {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc SSL_read(ssl: SslPtr; buf: pointer; num: int): cint {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc SSL_select_next_proto(out_proto: ptr cstring; outlen: cstring; server: cstring; server_len: cuint; client: cstring; client_len: cuint): cint {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc SSL_set_alpn_protos(ssl: SslPtr; protos: cstring; protos_len: cuint): cint {. cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc SSL_set_fd(ssl: SslPtr; fd: SocketHandle): cint {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc SSL_set_shutdown(ssl: SslPtr; mode: cint) {.cdecl, dynlib: DLLSSLName, importc: "SSL_set_shutdown", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc SSL_set_SSL_CTX(ssl: SslPtr; ctx: SslCtx): SslCtx {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc SSL_set_tlsext_host_name(ssl: SslPtr; name: cstring): int {....raises: [], tags: [], forbids: [].}- Установите расширение имени сервера SNI, которое будет использоваться в приветствии клиента. Возвращает 1, если SNI был установлен, 0, если текущая настройка SSL не поддерживает SNI. Исходный код Редактировать
proc SSL_shutdown(ssl: SslPtr): cint {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc SSL_write(ssl: SslPtr; buf: cstring; num: int): cint {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc SSLCTXSetMode(ctx: SslCtx; mode: int): int {....raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc sslDoHandshake(ssl: SslPtr): cint {.cdecl, dynlib: DLLSSLName, importc: "SSL_do_handshake", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc sslPeek(ssl: SslPtr; buf: cstring; num: cint): cint {.cdecl, dynlib: DLLSSLName, importc: "SSL_peek", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc sslRead(ssl: SslPtr; buf: cstring; num: cint): cint {.cdecl, dynlib: DLLSSLName, importc: "SSL_read", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc sslSetAcceptState(s: SslPtr) {.cdecl, dynlib: DLLSSLName, importc: "SSL_set_accept_state", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc sslSetBio(ssl: SslPtr; rbio, wbio: BIO) {.cdecl, dynlib: DLLSSLName, importc: "SSL_set_bio", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc sslSetConnectState(s: SslPtr) {.cdecl, dynlib: DLLSSLName, importc: "SSL_set_connect_state", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc SSLv2_method(): PSSL_METHOD {....raises: [LibraryError], tags: [RootEffect], forbids: [].}- Исходный код Редактировать
proc SSLv3_method(): PSSL_METHOD {....raises: [LibraryError], tags: [RootEffect], forbids: [].}- Исходный код Редактировать
proc SSLv23_client_method(): PSSL_METHOD {....raises: [LibraryError], tags: [RootEffect], forbids: [].}- Исходный код Редактировать
proc SSLv23_method(): PSSL_METHOD {....raises: [LibraryError], tags: [RootEffect], forbids: [].}- Исходный код Редактировать
proc sslWrite(ssl: SslPtr; buf: cstring; num: cint): cint {.cdecl, dynlib: DLLSSLName, importc: "SSL_write", ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
proc TLS_client_method(): PSSL_METHOD {....raises: [LibraryError], tags: [RootEffect], forbids: [].}- Исходный код Редактировать
proc TLS_method(): PSSL_METHOD {....raises: [LibraryError], tags: [RootEffect], forbids: [].}- Исходный код Редактировать
proc TLS_server_method(): PSSL_METHOD {....raises: [LibraryError], tags: [RootEffect], forbids: [].}- Исходный код Редактировать
proc TLSv1_method(): PSSL_METHOD {.cdecl, dynlib: DLLSSLName, importc, ...raises: [], tags: [], forbids: [].}- Исходный код Редактировать
© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/openssl.html