CONTENT
- CHANGES
Szukaj
#top libsocktls¶
- libsocktls
- Predefined Constants
- SOCKTLSOPT_***
- Datatypes / MACROS
- enum tlse_starttls_mode
- enum tlse_proto_type
- socktls_session_t
- size_t
- SOCKET
- struct SOCKTLS_CTX_ST
- SOCKTLS_CTX
- Functions
- socktls_ctx_open
- socktls_ctx_optset
- socktls_ctx_init
- socktls_ctx_free
- socktls_starttls
- socktls_tls_info_print
- socktls_cert_check
- socktls_cert_verify_print
- socktls_cert_info_print
- socktls_cert_show
- socktls_send
- socktls_onesend
- socktls_recv
- socktls_onerecv
- socktls_linerecv
- socktls_close
Narzędzia Sieciowe >> libnet - library network protocols >> libsocktls - library network connections over Transport Layer Security
RFC 2246 - The TLS Protocol Version 1.0
RFC 3943 - Transport Layer Security (TLS) Protocol Compression Using Lempel-Ziv-Stac (LZS)
RFC 4346 - The Transport Layer Security (TLS) Protocol Version 1.1
RFC 5246 - The Transport Layer Security (TLS) Protocol Version 1.2
RFC 5746 - Transport Layer Security (TLS) Renegotiation Indication Extension
RFC 7568 - Deprecating Secure Sockets Layer Version 3.0
#top Predefined Constants¶
#top SOCKTLSOPT_***¶
Definicja typu
SOCKTLSOPT_***
znajduje się w pliku nagłówkowym netutils/libnet/libsocktls.h
.Definicja typu
SOCKTLSOPT_***
jest następująca:#if defined(HAVE_GNUTLS1)||defined(HAVE_GNUTLS2)||defined(HAVE_GNUTLS3)||defined(HAVE_GNUTLS36) #define SOCKTLSOPT_OPTIONSNULL GTLSOPT_OPTIONSNULL #define SOCKTLSOPT_X509TYPE GTLSOPT_X509TYPE #define SOCKTLSOPT_X509CAFILE GTLSOPT_X509CAFILE #define SOCKTLSOPT_X509CRLFILE GTLSOPT_X509CRLFILE #define SOCKTLSOPT_X509CRTFILE GTLSOPT_X509CRTFILE #define SOCKTLSOPT_X509KEYFILE GTLSOPT_X509KEYFILE #define SOCKTLSOPT_STARTTLSMODE GTLSOPT_STARTTLSMODE #define SOCKTLSOPT_PROTOTYPE GTLSOPT_PROTOTYPE /* int options*/ #define SOCKTLSOPT_DISABLEEXTENSIONS GTLSOPT_DISABLEEXTENSIONS #endif #if defined(HAVE_OPENSSL098)||defined(HAVE_OPENSSL100)||defined(HAVE_OPENSSL101)||defined(HAVE_OPENSSL102) #define SOCKTLSOPT_OPTIONSNULL OSSLOPT_OPTIONSNULL #define SOCKTLSOPT_X509TYPE OSSLOPT_X509TYPE #define SOCKTLSOPT_X509CAFILE OSSLOPT_X509CAFILE #define SOCKTLSOPT_X509CRLFILE OSSLOPT_X509CRLFILE #define SOCKTLSOPT_X509CRTFILE OSSLOPT_X509CRTFILE #define SOCKTLSOPT_X509KEYFILE OSSLOPT_X509KEYFILE #define SOCKTLSOPT_STARTTLSMODE OSSLOPT_STARTTLSMODE #define SOCKTLSOPT_PROTOTYPE OSSLOPT_PROTOTYPE /* int options*/ #define SOCKTLSOPT_DISABLEEXTENSIONS OSSLOPT_DISABLEEXTENSIONS #endif #if defined(HAVE_POLARSSL132) #define SOCKTLSOPT_OPTIONSNULL PSSLOPT_OPTIONSNULL #define SOCKTLSOPT_X509TYPE PSSLOPT_X509TYPE #define SOCKTLSOPT_X509CAFILE PSSLOPT_X509CAFILE #define SOCKTLSOPT_X509CRLFILE PSSLOPT_X509CRLFILE #define SOCKTLSOPT_X509CRTFILE PSSLOPT_X509CRTFILE #define SOCKTLSOPT_X509KEYFILE PSSLOPT_X509KEYFILE #define SOCKTLSOPT_STARTTLSMODE PSSLOPT_STARTTLSMODE #define SOCKTLSOPT_PROTOTYPE PSSLOPT_PROTOTYPE /* int options*/ #define SOCKTLSOPT_DISABLEEXTENSIONS PSSLOPT_DISABLEEXTENSIONS #endif #if defined(HAVE_WOLFSSL380) #define SOCKTLSOPT_OPTIONSNULL WSSLOPT_OPTIONSNULL #define SOCKTLSOPT_X509TYPE WSSLOPT_X509TYPE #define SOCKTLSOPT_X509CAFILE WSSLOPT_X509CAFILE #define SOCKTLSOPT_X509CRLFILE WSSLOPT_X509CRLFILE #define SOCKTLSOPT_X509CRTFILE WSSLOPT_X509CRTFILE #define SOCKTLSOPT_X509KEYFILE WSSLOPT_X509KEYFILE #define SOCKTLSOPT_STARTTLSMODE WSSLOPT_STARTTLSMODE #define SOCKTLSOPT_PROTOTYPE WSSLOPT_PROTOTYPE /* int options*/ #define SOCKTLSOPT_DISABLEEXTENSIONS WSSLOPT_DISABLEEXTENSIONS #endif
#top Datatypes / MACROS¶
#top enum tlse_starttls_mode¶
Definicja typu
enum tlse_starttls_mode
znajduje się w pliku nagłówkowym netutils/libnet/libsocktls.h
.Definicja typu
enum tlse_starttls_mode
jest następująca:enum tlse_starttls_mode { tlse_starttls_server=1, tlse_starttls_client=2 } tlse_starttls_mode; /* kind type of secure protocol: server or client */
#top enum tlse_proto_type¶
Definicja typu
enum tlse_proto_type
znajduje się w pliku nagłówkowym netutils/libnet/libsocktls.h
.Definicja typu
enum tlse_proto_type
jest następująca:enum tlse_proto_type { tlse_secure_auto, tlse_secure_sslv3x, tlse_secure_tlsv10, tlse_secure_tlsv11, tlse_secure_tlsv12, tlse_secure_tlsv13, tlse_secure_dtlsv09, tlse_secure_dtlsv10, tlse_secure_dtlsv12, tlse_secure_NULL } tlse_proto_type; /* type of secure protocol to use. */
#top socktls_session_t¶
Definicja struktury
socktls_session_t
znajduje się w pliku nagłówkowym netutils/libnet/libsocktls.h
.Definicja struktury
socktls_session_t
jest następująca:typedef void* socktls_session_t;
#top size_t¶
Definicja typu
size_t
znajduje się w pliku nagłówkowym /usr/lib/gcc/i386-redhat-linux/4.1.1/include/stddef.h
.Definicja typu
size_t
jest następująca:/* Unsigned type of `sizeof' something. */ /* Define this type if we are doing the whole job, or if we want this type in particular. */ #if defined (_STDDEF_H) || defined (__need_size_t) #ifndef __size_t__ /* BeOS */ #ifndef __SIZE_T__ /* Cray Unicos/Mk */ #ifndef _SIZE_T /* in case <sys/types.h> has defined it. */ #ifndef _SYS_SIZE_T_H #ifndef _T_SIZE_ #ifndef _T_SIZE #ifndef __SIZE_T #ifndef _SIZE_T_ #ifndef _BSD_SIZE_T_ #ifndef _SIZE_T_DEFINED_ #ifndef _SIZE_T_DEFINED #ifndef _BSD_SIZE_T_DEFINED_ /* Darwin */ #ifndef _SIZE_T_DECLARED /* FreeBSD 5 */ #ifndef ___int_size_t_h #ifndef _GCC_SIZE_T #ifndef _SIZET_ #ifndef __size_t #define __size_t__ /* BeOS */ #define __SIZE_T__ /* Cray Unicos/Mk */ #define _SIZE_T #define _SYS_SIZE_T_H #define _T_SIZE_ #define _T_SIZE #define __SIZE_T #define _SIZE_T_ #define _BSD_SIZE_T_ #define _SIZE_T_DEFINED_ #define _SIZE_T_DEFINED #define _BSD_SIZE_T_DEFINED_ /* Darwin */ #define _SIZE_T_DECLARED /* FreeBSD 5 */ #define ___int_size_t_h #define _GCC_SIZE_T #define _SIZET_ #if defined (__FreeBSD__) && (__FreeBSD__ >= 5) /* __size_t is a typedef on FreeBSD 5!, must not trash it. */ #else #define __size_t #endif #ifndef __SIZE_TYPE__ #define __SIZE_TYPE__ long unsigned int #endif #if !(defined (__GNUG__) && defined (size_t)) typedef __SIZE_TYPE__ size_t; #ifdef __BEOS__ typedef long ssize_t; #endif /* __BEOS__ */ #endif /* !(defined (__GNUG__) && defined (size_t)) */ #endif /* __size_t */ #endif /* _SIZET_ */ #endif /* _GCC_SIZE_T */ #endif /* ___int_size_t_h */ #endif /* _SIZE_T_DECLARED */ #endif /* _BSD_SIZE_T_DEFINED_ */ #endif /* _SIZE_T_DEFINED */ #endif /* _SIZE_T_DEFINED_ */ #endif /* _BSD_SIZE_T_ */ #endif /* _SIZE_T_ */ #endif /* __SIZE_T */ #endif /* _T_SIZE */ #endif /* _T_SIZE_ */ #endif /* _SYS_SIZE_T_H */ #endif /* _SIZE_T */ #endif /* __SIZE_T__ */ #endif /* __size_t__ */ #undef __need_size_t #endif /* _STDDEF_H or __need_size_t. */
#top SOCKET¶
Definicja typu
SOCKET
znajduje się w pliku nagłówkowym netutils/libnet/libsocknet.h
.Definicja typu
SOCKET
jest następująca:#if defined(__WIN32__) || defined(WIN32) || defined(_WIN32) /*typedef u_int SOCKET;*/ /* C:/Dev-CPP/bin/../lib/gcc/mingw32/3.4.2/../../../../include/winsock.h:32: error: conflicting types for 'SOCKET' ../../libinc/datatypes.h:33: error: previous declaration of 'SOCKET' was here */ #else typedef int SOCKET; #endif
#top struct SOCKTLS_CTX_ST¶
Definicja struktury
struct SOCKTLS_CTX_ST
znajduje się w pliku nagłówkowym netutils/libnet/libsocktls.h
.Definicja struktury
struct SOCKTLS_CTX_ST
jest następująca:typedef struct SOCKTLS_CTX_ST SOCKTLS_CTX;
#top SOCKTLS_CTX¶
Definicja struktury
SOCKTLS_CTX
znajduje się w pliku nagłówkowym netutils/libnet/libsocktls.h
.Definicja struktury
SOCKTLS_CTX
jest następująca:typedef struct SOCKTLS_CTX_ST SOCKTLS_CTX;
#top Functions¶
#top socktls_ctx_open¶
Deklaracja funkcji
socktls_ctx_open()
znajduje się w pliku nagłówkowym netutils/libnet/libsocktls.h
.Deklaracja funkcji
socktls_ctx_open()
jest następująca:SELECT ALL
/** * @name socktls_ctx_open() * @desc socktls_ctx_open() * @param void * @return struct:SOCKTLS_CTX_ST *ssl_ctx */ struct SOCKTLS_CTX_ST *socktls_ctx_open();
Funkcja socktls_ctx_open() w zależności od użytej biblioteki do obsługi połączeń szyfrowanych TLS/SSL wywołuje funkcję o analogicznej nazwie gnutls_ctx_open(), openssl_ctx_open(), polarssl_ctx_open(), wolfssl_ctx_open() wykonującej niezbędne kroki związane inicjalizacją struktury zawierającą niezbędne informacje do utworzenia bezpiecznego połączenia. Funkcja socktls_ctx_open() zwraca wskaźnik do struktury struct SOCKTLS_CTX_ST lub NULL w przypadku wystąpienia błędu.
Argumenty:
Funkcja nie przyjmuje żadnych argumentów.
Zwracana wartość:
struct SOCKTLS_CTX_ST * - wskaźnik do struktury (lub NULL w przypadku wystąpienia błędu),
#top socktls_ctx_optset¶
Deklaracja funkcji
socktls_ctx_optset()
znajduje się w pliku nagłówkowym netutils/libnet/libsocktls.h
.Deklaracja funkcji
socktls_ctx_optset()
jest następująca:SELECT ALL
/** * @name socktls_ctx_optset() * @desc socktls_ctx_optset() * @param struct:SOCKTLS_CTX_ST *ssl_ctx * @param const:int optcmd * @param const:void *optval * @return int */ int socktls_ctx_optset(struct SOCKTLS_CTX_ST *ssl_ctx, const int optcmd, const void *optval);
Funkcja socktls_ctx_optset() w zależności od użytej biblioteki do obsługi połączeń szyfrowanych TLS/SSL wywołuje funkcję o analogicznej nazwie gnutls_ctx_optset(), openssl_ctx_optset(), polarssl_ctx_optset(), wolfssl_ctx_optset() wykonującej niezbędne kroki związane z ustawieniem określonych parametrem
optcmd
właściwości dla szyfrowanych połączeń TLS/SSL.Argumenty:
struct SOCKTLS_CTX_ST *ssl_ctx - wskaźnik do struktury zawierającej niezbędne informacje do utworzenia bezpiecznego połączenia,
const int optcmd - parametr określający ustawianą właściwość, dostępne są następujące parametry:
- SOCKTLSOPT_OPTIONSNULL - parametr, który nic nie ustawia,
- SOCKTLSOPT_X509CAFILE - parametr pozwalajacy ustawić ścieżkę do pliku z listą zaufanych certyfikatów głównych CA (Głównego Urzędu Certyfikacji, Certificate Authorities)
- SOCKTLSOPT_X509CRLFILE - parametr pozwalajacy ustawić ścieżkę do pliku z listą unieważnionych certyfikatów
- SOCKTLSOPT_X509CRTFILE - parametr pozwalajacy ustawić ścieżkę do pliku z certyfikatem publicznym,
- SOCKTLSOPT_X509KEYFILE - parametr pozwalajacy ustawić ścieżkę do pliku z kluczem prywatnym,
- SOCKTLSOPT_STARTTLSMODE - parametr pozwalajacy ustawić rodzaj operacji dla szyfrowanych połączeń TLS/SSL (inicjowanie połączenia, akceptowanie połączenia, w parametrze
*optval
należy przekazać wskaźnik do typu enum tlse_starttls_mode), - SOCKTLSOPT_PROTOTYPE - parametr pozwalajacy ustawić używaną wersję protokółu szyfrowanych połączeń TLS/SSL (w parametrze
*optval
należy przekazać wskaźnik do typu enum tlse_proto_type), - SOCKTLSOPT_DISABLEEXTENSIONS - parametr pozwalajacy ustawić / wyłączyć rozszerzenia (dodatkowe domyślne opcje) przy nawiązywaniu szyfrowanego połączenia,
Zwracana wartość:
int - status ustawienia właściwości,
#top socktls_ctx_init¶
Deklaracja funkcji
socktls_ctx_init()
znajduje się w pliku nagłówkowym netutils/libnet/libsocktls.h
.Deklaracja funkcji
socktls_ctx_init()
jest następująca:SELECT ALL
/** * @name socktls_ctx_init() * @desc socktls_ctx_init() * @param struct:SOCKTLS_CTX_ST *ssl_ctx * @return int */ int socktls_ctx_init(struct SOCKTLS_CTX_ST *ssl_ctx);
Funkcja socktls_ctx_init() w zależności od użytej biblioteki do obsługi połączeń szyfrowanych TLS/SSL wywołuje funkcję o analogicznej nazwie gnutls_ctx_init(), openssl_ctx_init(), polarssl_ctx_init(), wolfssl_ctx_init() wykonującej niezbędne kroki związane z właściwą inicjalizacją biblioteki do obsługi połączeń szyfrowanych TLS/SSL. W przypadku sukcesu zwracana jest dodatnia wartość (większa od zera). W przypadku nie powodzenia dowolnego z kroków wyświetlany jest komunikat błędu na standardowym strumieniu błędów (
stderr
) informujący o przyczynie niepowodzenia wykonania danej operacji, a w przypadku, gdy nie powiodła się opracja, której zakończenie się sukcesem jest niezbędne, aby było możliwie nawiązanie bezpiecznego połączenia zwracana jest ujemna wartość (mniejsza od zera).Argumenty:
struct SOCKTLS_CTX_ST *ssl_ctx - wskaźnik do struktury zawierającej niezbędne informacje do utworzenia bezpiecznego połączenia,
Zwracana wartość:
int - status inicjalizacji biblioteki do obsługi połączeń szyfrowanych,
#top socktls_ctx_free¶
Deklaracja funkcji
socktls_ctx_free()
znajduje się w pliku nagłówkowym netutils/libnet/libsocktls.h
.Deklaracja funkcji
socktls_ctx_free()
jest następująca:SELECT ALL
/** * @name socktls_ctx_free() * @desc socktls_ctx_free() * @param struct:SOCKTLS_CTX_ST *ssl_ctx * @return void */ void socktls_ctx_free(struct SOCKTLS_CTX_ST *ssl_ctx);
Funkcja socktls_ctx_free() w zależności od użytej biblioteki do obsługi połączeń szyfrowanych TLS/SSL wywołuje funkcję o analogicznej nazwie gnutls_ctx_free(), openssl_ctx_free(), polarssl_ctx_free(), wolfssl_ctx_free() wykonującej niezbędne kroki związane de-inicjalizacją biblioteki oraz zwolnieniem zaalokowanych zasobów. Funkcja socktls_ctx_free() wykonuje operacje odwrotne do operacji wykonywanych przez funkcje gnutls_ctx_open(), openssl_ctx_open(), polarssl_ctx_open(), wolfssl_ctx_open() oraz gnutls_ctx_init(), openssl_ctx_init(), polarssl_ctx_init(), wolfssl_ctx_init().
Argumenty:
struct SOCKTLS_CTX_ST *ssl_ctx - wskaźnik do struktury zawierającej niezbędne informacje do utworzenia bezpiecznego połączenia,
Zwracana wartość:
Funkcja nie zwraca żadnej wartości.
#top socktls_starttls¶
Deklaracja funkcji
socktls_starttls()
znajduje się w pliku nagłówkowym netutils/libnet/libsocktls.h
.Deklaracja funkcji
socktls_starttls()
jest następująca:SELECT ALL
/** * @name socktls_starttls() * @desc socktls_starttls() * @param const :SOCKET *osock * @param struct:SOCKTLS_CTX_ST *ssl_ctx * @param const:char *iptname * @return socktls_session_t ssl */ socktls_session_t socktls_starttls(const SOCKET *osock, struct SOCKTLS_CTX_ST *ssl_ctx, const char *ipname);
Funkcja socktls_starttls()w zależności od użytej biblioteki do obsługi połączeń szyfrowanych TLS/SSL wywołuje funkcję o analogicznej nazwie gnutls_starttls(), openssl_starttls(), polarssl_starttls(), wolfssl_starttls() wykonującej niezbędne kroki związane z nawiązywaniem połączenia szyfrowanego TLS/SSL. W zależności od ustawionego trybu opcją
SOCKTLSOPT_STARTTLSMODE
biblioteka wysyła pakiet "client hello" message wraz ze stosownymi informacjami (Protocol, Cipher List, Compression, Extension), w odpowiedzi na który biblioteka odbiera pakiet "server hello" wraz ze stosowymi informacjami zależnymi od wysłanych (Protocol, Cipher List, Compression, Extension). Odbierany jest również certyfikat z serwera, na podstawie którego możliwe jest dokonanie weryfikacji, czy połączenie jest nawiązane do właściwego serwera. W przypadku sukcesu zwracany jest deskryptor gniazda szyfrowanego (wskaźnik do deskryptora gniazda szyfrowanego), w przeciwnym przypadku zwracana jest wartość NULL.Argumenty:
const SOCKET *osock - wskaźnik do deskryptora gniazda sieciowego z nawiązanym połączeniem,
struct SOCKTLS_CTX_ST *ssl_ctx - wskaźnik do struktury zawierającej niezbędne informacje do utworzenia bezpiecznego połączenia,
const char *ipname - łańcuch znaków (wskaźnik do łańcucha znaków) zawierający nazwę serwera, z którym następuje połączenie (niezbędne dla obsługi rozszerzenia TLS SNI - Server Name Indication),
Zwracana wartość:
socktls_session_t - deskryptor gniazda szyfrowanego (wskaźnik do deskryptora gniazda szyfrowanego) lub NULL w przypadku wystąpienia błędu,
#top socktls_tls_info_print¶
Deklaracja funkcji
socktls_tls_info_print()
znajduje się w pliku nagłówkowym netutils/libnet/libsocktls.h
.Deklaracja funkcji
socktls_tls_info_print()
jest następująca:SELECT ALL
/** * @name socktls_tls_info_print() * @desc socktls_tls_info_print() * @param const:char *self * @param socktls_session_t ssl * @return void */ void socktls_tls_info_print(const char *self, socktls_session_t ssl);
Funkcja socktls_tls_info_print() wyświetla informacje dotyczące nawiązanego połączenia szyfrowanego. W zależności od używanej biblioteki do obsługi szyfrowanych połączeń ilość wyświetlanych informacji może być różna. Przede wszystkim wyświetlane są następujące informacje:
- opis parametrów nawiązanego połączenia,
- identyfikator sesji (pozwalający ustalić czy nawiązano nową sesję, czy kontynuowana jest sesja nawiązana wcześniej w przypadku gdy identyfikator jest taki sam jak przy wcześniej nawiązanym połączeniu szyfrowanym, TLS Session Resumption),
- wersja protokołu TLS (TLS Version 1.3, TLS Version 1.2, TLS Version 1.1, The TLS Version 1.0, SSL Version 3.0),
- KX - Key eXchange,
- Cipher (Ciphers in Use in the Internet),
- MAC - Message Authentication Code (7. Message Authentication Schemes, 5. The Authenticator),
- kompresja - Compression (Transport Layer Security Protocol Compression Methods, TLS Certificate Compression),
Argumenty:
const char *self - łańcuch znaków (wskaźnik do łańcucha znaków) zawierający
socktls_session_t ssl - deskryptor gniazda szyfrowanego (wskaźnik do deskryptora gniazda szyfrowanego),
Zwracana wartość:
Funkcja nie zwraca żadnej wartości.
Funkcja wyświetla informacje analogiczne do poniższych (dla ciągu znaków "httprecv: " przekazanego w argumencie self):
httprecv: TLS:LAYER: Description: (TLS1.2-PKIX)-(ECDHE-RSA-SECP256R1)-(AES-256-GCM)-(AEAD) httprecv: TLS:LAYER: Session ID: 83:BB:69:08:80:98:3C:91:38:6A:3A:A6:7F:E2:29:C0:C0:6A:CC:96:44:40:5F:FC:79:A7:CE:8F:DC:66:A4:C0 httprecv: TLS:LAYER: Ephemeral EC Diffie-Hellman parameters httprecv: TLS:LAYER: Using curve: SECP256R1 httprecv: TLS:LAYER: Curve size: 256 bits httprecv: TLS:LAYER: Version: TLS1.2 httprecv: TLS:LAYER: Cipher Suite: ECDHE_RSA_AES_256_GCM_SHA384 httprecv: TLS:LAYER: Key Exchange: ECDHE-RSA httprecv: TLS:LAYER: Cipher: AES-256-GCM httprecv: TLS:LAYER: MAC: AEAD httprecv: TLS:LAYER: Compression: NULL httprecv: TLS:LAYER: Server Signature: RSA-SHA256 httprecv: TLS:LAYER: Channel binding 'tls-unique': f8a94f6c1c61c0474daa3566
#top socktls_cert_check¶
Deklaracja funkcji
socktls_cert_check()
znajduje się w pliku nagłówkowym libnet/libsocktls.h
.Deklaracja funkcji
socktls_cert_check()
jest następująca:SELECT ALL
/** * @name socktls_cert_check() * @desc socktls_cert_check() * @param socktls_session_t ssl * @param const:char *ipname * @return int result */ int socktls_cert_check(socktls_session_t ssl, const char *ipname);
Funkcja socktls_cert_check() wywołuje funkcję socktls_cert_verify_print() z argumentami opt_cert_verify ustawionym na wartość 0 i verbose ustawionym na wartość 1, czyli wywołanie funkcji
socktls_cert_check(ssl,ipname);
jest równoważne do wywołania funkcji socktls_cert_verify_print(ssl,ipname,0,1);
. Istotne jest tutaj zwrócenie wartości pozwalającej określić, czy nawiązano zaufane połączenie. Weryfikacja odebranego certyfikatu odbywa się głównie poprzez sprawdzenie następujących warunków:- czy otrzymany certyfikat został podpisany przez jeden z certyfikatów znajdujących się na liście zaufanych certyfikatów głównych CA (Głównego Urzędu Certyfikacji, Certificate Authorities),
- czy otrzymany certyfikat jest prawidłowy dla nazwy przekazanej w argumencie
ipname
, - czy otrzymany certyfikat jest ważny, czyli czy bieżąca data i godzina znajduje się w zakresie dat ważności certyfikatu,
Argumenty:
socktls_session_t ssl - deskryptor gniazda szyfrowanego (wskaźnik do deskryptora gniazda szyfrowanego),
const char *ipname - łańcuch znaków (wskaźnik do łańcucha znaków) zawierający nazwę serwera, z którym nawiązano szyfrowane połączenie,
Zwracana wartość:
int - status weryfikacji certyfikatu, gdy certyfikat jest zaufany zwracana jest wartość zero, w przeciwnym razie zwracana jest wartość niezerowa,
#top socktls_cert_verify_print¶
Deklaracja funkcji
socktls_cert_verify_print()
znajduje się w pliku nagłówkowym libnet/libsocktls.h
.Deklaracja funkcji
socktls_cert_verify_print()
jest następująca:SELECT ALL
/** * @name socktls_cert_verify_print() * @desc socktls_cert_verify_print() * @param const:char *self * @param socktls_session_t ssl * @param const:char *ipname * @param const:int opt_cert_verify * @param const:int verbose * @return int verify */ int socktls_cert_verify_print(const char *self, socktls_session_t ssl, const char *ipname, const int opt_cert_verify, const int verbose);
Funkcja socktls_cert_verify_print() wyświetla informacje na podstawie których wykonywana jest weryfikacja certyfikatu. Istotne jest tutaj wyświetlenie informacji pozwalającej określić, czy nawiązano zaufane połączenie. Weryfikacja odebranego certyfikatu odbywa się głównie poprzez sprawdzenie następujących warunków:
- czy otrzymany certyfikat został podpisany przez jeden z certyfikatów znajdujących się na liście zaufanych certyfikatów głównych CA (Głównego Urzędu Certyfikacji, Certificate Authorities),
- czy otrzymany certyfikat jest prawidłowy dla nazwy przekazanej w argumencie
ipname
, - czy otrzymany certyfikat jest ważny, czyli czy bieżąca data i godzina znajduje się w zakresie dat ważności certyfikatu,
Argumenty:
const char *self - łańcuch znaków (wskaźnik do łańcucha znaków) zawierający
socktls_session_t ssl - deskryptor gniazda szyfrowanego (wskaźnik do deskryptora gniazda szyfrowanego),
const char *ipname - łańcuch znaków (wskaźnik do łańcucha znaków) zawierający nazwę serwera, z którym nawiązano szyfrowane połączenie,
const int opt_cert_verify - argument określający czy certyfikat ma zostać weryfikowany, dla wartości różnej od zera zwracana jest wartość pozwalajaca określić czy certyfikat jest zaufany, dla wartości zero zwracana jest wartość wskazujący, że certyfikat jest zaufany,
const int verbose - argument określający czy podczas weryfikacji certyfikatu informacje o właściwościach certyfikatu na podstawie których certyfikat jest weryfikowany są wyświetlane na standardowym strumieniu wyjścia,
Zwracana wartość:
int - status weryfikacji certyfikatu, gdy certyfikat jest zaufany zwracana jest wartość zero, w przeciwnym razie zwracana jest wartość niezerowa,
Funkcja wyświetla informacje analogiczne do poniższych (dla ciągu znaków "httprecv: " przekazanego w argumencie self):
httprecv: CERT:VERIFY: Peer's certificate issuer is unknown httprecv: CERT:VERIFY: Peer's certificate is NOT signed by Trusted Root Certification Authorities httprecv: CERT[0]:VERIFY: The hostname in the certificate match 'www.gnutls.org' httprecv: CERT[0]:VERIFY: Issuer : C=US,O=Let's Encrypt,CN=Let's Encrypt Authority X3 httprecv: CERT[0]:VERIFY: Subject: CN=gnutls.org httprecv: CERT[0]:VERIFY: CERT:DATE:OK Validity: Not Before: 2019/04/20 01:55:41 httprecv: CERT[0]:VERIFY: CERT:DATE:OK Validity: Not After : 2019/07/19 01:55:41 httprecv: CERT[0]:VERIFY: CERT:DATE:OK Validity: Cert expire after 35 [d] (3085562 [s])) httprecv: CERT[0]:VERIFY: X509v3 Subject Alternative Name: (not critical) httprecv: CERT[0]:VERIFY: DNSname: gnutls.org, DNSname: www.gnutls.org,
#top socktls_cert_info_print¶
Deklaracja funkcji
socktls_cert_info_print()
znajduje się w pliku nagłówkowym libnet/libsocktls.h
.Deklaracja funkcji
socktls_cert_info_print()
jest następująca:SELECT ALL
/** * @name socktls_cert_info_print() * @desc socktls_cert_info_print() * @param const:char *self * @param socktls_session_t ssl * @return void */ void socktls_cert_info_print(const char *self, socktls_session_t ssl);
Funkcja socktls_cert_info_print() wyświetla informacje związane z odebranym certyfikatem, wyświetlane informacje są m.in.:
- wersja certyfikatu,
- numer seryjny certyfikatu,
- sygnatura certyfikatu,
- wystawca certyfikatu (Issuer),
- podmiot certyfikatu (Subject),
- daty określające ważność certyfikatu,
- informacje dotyczące klucza plublicznego certyfikatu,
- inne rozszerzenia certyfikatu jeśli są dostępne,
Argumenty:
const char *self - łańcuch znaków (wskaźnik do łańcucha znaków) zawierający
socktls_session_t ssl - deskryptor gniazda szyfrowanego (wskaźnik do deskryptora gniazda szyfrowanego),
Zwracana wartość:
Funkcja nie zwraca żadnej wartości.
Funkcja wyświetla informacje analogiczne do poniższych (dla ciągu znaków "httprecv: " przekazanego w argumencie self):
httprecv: CERT[0]:X.509: Version: 3 httprecv: CERT[0]:X.509: Serial Number (hex): 04:DB:87:11:9A:6B:08:F1:42:F9:42:72:BB:65:5E:AE:B6:B6 httprecv: CERT[0]:X.509: Signature Algorithm: RSA-SHA256 httprecv: CERT[0]:X.509: Issuer : C=US,O=Let's Encrypt,CN=Let's Encrypt Authority X3 httprecv: CERT[0]:X.509: Subject: CN=gnutls.org httprecv: CERT[0]:X.509: Validity: Not Before: 2019/04/20 01:55:41 httprecv: CERT[0]:X.509: Validity: Not After : 2019/07/19 01:55:41 httprecv: CERT[0]:X.509: Subject Public Key Info: Public Key Algorithm: RSA (2048 bits) httprecv: CERT[0]:X.509: Extensions: Subject Alternative Name: (not critical) DNSname: gnutls.org httprecv: CERT[0]:X.509: Extensions: Subject Alternative Name: (not critical) DNSname: www.gnutls.org httprecv: CERT[0]:X.509: Extensions: Basic Constraints: (critical) CA:FALSE httprecv: CERT[0]:X.509: Extensions: Key usage: (critical) Digital signature. httprecv: CERT[0]:X.509: Extensions: Key usage: (critical) Key encipherment. httprecv: CERT[0]:X.509: Extensions: Key purpose OIDs:(not critical) TLS WWW Server. httprecv: CERT[0]:X.509: Extensions: Key purpose OIDs:(not critical) TLS WWW Client. httprecv: CERT[0]:X.509: Extensions: Other Information: MD5 fingerprint: e9e0f00d61710890f3e5b7bb8802e8ad httprecv: CERT[0]:X.509: Extensions: Other Information: SHA-1 fingerprint: 9a43d7fb37a85fd58db4ad5c4d48c3d50231ba2f httprecv: CERT[0]:X.509: Extensions: Other Information: Public Key Id: 44c1ad8984d10bf4be6baff36c26033691cb2a5e
#top socktls_cert_show¶
Deklaracja funkcji
socktls_cert_show()
znajduje się w pliku nagłówkowym libnet/libsocktls.h
.Deklaracja funkcji
socktls_cert_show()
jest następująca:SELECT ALL
/** * @name socktls_cert_show() * @desc socktls_cert_show() * @param const:char *self * @param socktls_session_t ssl * @return void */ void socktls_cert_show(const char *self, socktls_session_t ssl);
Funkcja socktls_cert_show() wyświetla certyfikatu w postaci (w formacie PEM, czyli zakodowany w base64 The Base16, Base32, and Base64 Data Encodings).
Argumenty:
const char *self - łańcuch znaków (wskaźnik do łańcucha znaków) zawierający
socktls_session_t ssl - deskryptor gniazda szyfrowanego (wskaźnik do deskryptora gniazda szyfrowanego),
Zwracana wartość:
Funkcja nie zwraca żadnej wartości.
Funkcja wyświetla informacje analogiczne do poniższych (dla ciągu znaków "httprecv: " przekazanego w argumencie self):
httprecv: Issuer : C=US,O=Let's Encrypt,CN=Let's Encrypt Authority X3 httprecv: Subject: CN=gnutls.org -----BEGIN CERTIFICATE----- MIIFXTCCBEWgAwIBAgISBNuHEZprCPFC+UJyu2Verra2MA0GCSqGSIb3DQEBCwUA MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xOTA0MTkyMzU1NDFaFw0x OTA3MTgyMzU1NDFaMBUxEzARBgNVBAMTCmdudXRscy5vcmcwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQDK1abVvbVsD7Ybi61xs4tPiOD5D/SR7dZYc0bH /OAunYLAxRdXTUokLD8nWnVijeSf+GGBnmcy5Mr3TkaXilK323c41RuXjoxWD5A4 PHVQ/4++hYd0nsgQoRT2zZyZernsW1rv3kDXZRI/zw09hWJ2sjmJH7J4ol26VDJ6 uOUTfpA4mBBlgRqktZWTmZFkDG/uzLq5eazWiDd0pzQt2xIIC4Xn9fzz97hDF4Ia sD7j8OqjF1vELKG3qeiZ5ZGRtlZLfl9t/4ZTcKVYdiMGsNe+qbRfu747VP7DMWlx eLxfvk9tjlnsAYCViuqqmFsbD2l0mvAc6vzUucXMZN+OraKBAgMBAAGjggJwMIIC bDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC MAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFFsv1I+aXMhgeehavic4cjJz+jzRMB8G A1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyhMG8GCCsGAQUFBwEBBGMwYTAu BggrBgEFBQcwAYYiaHR0cDovL29jc3AuaW50LXgzLmxldHNlbmNyeXB0Lm9yZzAv BggrBgEFBQcwAoYjaHR0cDovL2NlcnQuaW50LXgzLmxldHNlbmNyeXB0Lm9yZy8w JQYDVR0RBB4wHIIKZ251dGxzLm9yZ4IOd3d3LmdudXRscy5vcmcwTAYDVR0gBEUw QzAIBgZngQwBAgEwNwYLKwYBBAGC3xMBAQEwKDAmBggrBgEFBQcCARYaaHR0cDov L2Nwcy5sZXRzZW5jcnlwdC5vcmcwggEFBgorBgEEAdZ5AgQCBIH2BIHzAPEAdgDi aUuuJujpQAnohhu2O4PUPuf+dIj7pI8okwGd3fHb/gAAAWo4PeUnAAAEAwBHMEUC IQDhatM99bO7KKa6WKlvHMsoPiab/9HVC4ukJi4fhs/TxwIgedfQLFVYNW/YJTQ6 hQhlM00wTCTkklHo5oIx71SVA+IAdwBj8tvN6DvMLM8LcoQnV2szpI1hd4+9daY4 scdoVEvYjQAAAWo4PeUWAAAEAwBIMEYCIQDdG9deP2B/u01bKcIvSxGq32EOuh5/ +L6tTtAMJ7gA5wIhAOZYSNJAHUhTIo34NzNLVucdh+F5G+wu1+BKvAi6CPgOMA0G CSqGSIb3DQEBCwUAA4IBAQCFuHaVhrBMP3rW4XCAoNBb6YV9IDC2pjrwnriM9vqZ fLY1Kwn9fj3pUdwkTRYZAKzpaQRB5VCIDiYobsAHrwdqXbJrLD5ZSB+WQ3Mftgx9 5JOPP7bmzgADe9mo4kh6w8Wuuk9y6eZeVR/78EpK/S49DfWCSZJlM2Lc5C40W7zg 3glF4TvwfAQe2T/KC8DpxgxQHeP0XDOuJOC4bKNjoxGrKP7R4iHmjrbezicX7W6X zvx4tVeghy6Zp4kRiuOoIgrS2TYS1cXt3m2kAZOkqvWv7HGhNJ1pdkMYp5qhvHSQ C7PO9jTI5c9dL9Br3DxRWZ2mDdKvDw6ebjgdBOefbvum -----END CERTIFICATE-----
#top socktls_send¶
Deklaracja funkcji
socktls_send()
znajduje się w pliku nagłówkowym libnet/libsocktls.h
.Deklaracja funkcji
socktls_send()
jest następująca:SELECT ALL
/** * @name socktls_send() * @desc socktls_send() * @param socktls_session_t ssl * @param const:char *buffdata * @param const:size_t buffsize * @param const:double timeosock * @return int datasend */ int socktls_send(socktls_session_t ssl, const char *buffsend, const size_t buffsize, const double timeosock);
Funkcja socktls_send() w zależności od użytej biblioteki do obsługi połączeń szyfrowanych TLS/SSL wywołuje funkcję o analogicznej nazwie gnutls_send(), openssl_send(), polarssl_send(), wolfssl_send() do systemu zdalnego będącego drugą stroną połączenia dla deskryptora przekazanego w argumencie
ssl
wysyła (zapisuje) dane przekazane w argumencie buffdata
(ilość danych do wysłania podana jest w argumencie buffsize
) ograniczonego czasem trwania podanego w argumencie timeosock
. W przypadku gdy wszystkie przekazane dane zostały wysłane w czasie mniejszym niż podany to zwracana jest wartość dodatnia informująca o ilości wysłanych danych (będzie zgodna z ilością podaną w argumencie buffsize
), w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na wysyłanie danych, ale bez błedu podczas wysyłania) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na wysyłanie danych lub informujący o innym błędzie, który wystąpił podczas wysyłania.Argumenty:
socktls_session_t ssl - deskryptor gniazda szyfrowanego
const char *buffsend - wskaźnik do bufora z danymi do wysłania
const size_t buffsize - ilość danych do wysłania
const double timeosock - limit czasu na wysyłanie danych
Zwracana wartość:
int - wynik (status) wysyłania danych (dodatnia wartość oznacza ilość wysłanych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości wysłania danych)
#top socktls_onesend¶
Deklaracja funkcji
socktls_onesend()
znajduje się w pliku nagłówkowym libnet/libsocktls.h
.Deklaracja funkcji
socktls_onesend()
jest następująca:SELECT ALL
/** * @name socktls_onesend() * @desc socktls_onesend() * @param socktls_session_t ssl * @param const:char *buffdata * @param const:size_t buffsize * @param const:double timeosock * @return int result */ int socktls_onesend(socktls_session_t ssl, const char *buffsend, const size_t buffsize, const double timeosock);
Funkcja socktls_onesend() w zależności od użytej biblioteki do obsługi połączeń szyfrowanych TLS/SSL wywołuje funkcję o analogicznej nazwie gnutls_onesend(), openssl_onesend(), polarssl_onesend(), wolfssl_onesend() do systemu zdalnego będącego drugą stroną połączenia dla deskryptora przekazanego w argumencie
ssl
wysyła (zapisuje) dane przekazane w argumencie buffdata
(ilość danych do wysłania podana jest w argumencie buffsize
) ograniczonego czasem trwania podanego w argumencie timeosock
. W przypadku przekazane dane zostały wysłane w czasie mniejszym niż podany to zwracana jest wartość dodatnia informująca o ilości wysłanych danych (może być mniejsza niż podana w argumencie buffsize
), w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na wysyłanie danych, ale bez błedu podczas wysyłania) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na wysyłanie danych lub informujący o innym błędzie, który wystąpił podczas wysyłania.Argumenty:
socktls_session_t ssl - deskryptor gniazda szyfrowanego
const char *buffsend - wskaźnik do bufora z danymi do wysłania
const size_t buffsize - ilość danych do wysłania
const double timeosock - limit czasu na wysyłanie danych
Zwracana wartość:
int - wynik (status) wysyłania danych (dodatnia wartość oznacza ilość wysłanych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości wysłania danych)
#top socktls_recv¶
Deklaracja funkcji
socktls_recv()
znajduje się w pliku nagłówkowym libnet/libsocktls.h
.Deklaracja funkcji
socktls_recv()
jest następująca:SELECT ALL
/** * @name socktls_recv() * @desc socktls_recv() * @param socktls_session_t ssl * @param char *buffdata * @param const:size_t buffsize * @param const:double timeosock * @return int datarecv */ int socktls_recv(socktls_session_t ssl, char *buffrecv, const size_t buffsize, const double timeosock);
Funkcja socktls_recv() w zależności od użytej biblioteki do obsługi połączeń szyfrowanych TLS/SSL wywołuje funkcję o analogicznej nazwie gnutls_recv(), openssl_recv(), polarssl_recv(), wolfssl_recv() od systemu zdalnego będącego drugą stroną połączenia dla deskryptora przekazanego w argumencie
ssl
odbierane (odczytywane) dane umieszcza w argumencie buffdata
(ilość danych do odebrania podana jest w argumencie buffsize
, dokładnie taka ilość danych musi zostać odebrana, aby funkcja zakończyła działanie z sukcesem lub mniejsza jeśli nie ma więcej danych do odebrania) ograniczonego czasem trwania podanego w argumencie timeosock
. W przypadku gdy dane zostały odebrane w czasie mniejszym niż podany to zwracana jest wartość dodatnia informująca o ilości wysłanych danych (będzie zgodna z ilością podaną w argumencie buffsize
), w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na wysyłanie danych, ale bez błedu podczas wysyłania) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na wysyłanie danych lub informujący o innym błędzie, który wystąpił podczas wysyłania.Argumenty:
socktls_session_t ssl - deskryptor gniazda szyfrowanego
char *buffrecv - wskaźnik do bufora na dane do odebrania
const size_t buffsize - maksymalna ilość danych do odebrania
const double timeosock - limit czasu na odbieranie danych
Zwracana wartość:
int - wynik (status) odbierania danych (dodatnia wartość oznacza ilość odebranych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości odebrania danych),
#top socktls_onerecv¶
Deklaracja funkcji
socktls_onerecv()
znajduje się w pliku nagłówkowym libnet/libsocktls.h
.Deklaracja funkcji
socktls_onerecv()
jest następująca:SELECT ALL
/** * @name socktls_onerecv() * @desc socktls_onerecv() * @param socktls_session_t ssl * @param char *buffdata * @param const:size_t buffsize * @param const:double timeosock * @return int result */ int socktls_onerecv(socktls_session_t ssl, char *buffrecv, const size_t buffsize, const double timeosock);
Funkcja socktls_onerecv() w zależności od użytej biblioteki do obsługi połączeń szyfrowanych TLS/SSL wywołuje funkcję o analogicznej nazwie gnutls_onerecv(), openssl_onerecv(), polarssl_onerecv(), wolfssl_onerecv() od systemu zdalnego będącego drugą stroną połączenia dla deskryptora przekazanego w argumencie
ssl
odbierane (odczytywane) dane umieszcza w argumencie buffdata
(odebrana ilość danych może być niż przekazana w argumencie buffsize
, który określa maksymalną ilość danych do odebrania) ograniczonego czasem trwania podanego w argumencie timeosock
. W przypadku gdy dane zostały odebrane w czasie mniejszym niż podany to zwracana jest wartość dodatnia informująca o ilości wysłanych danych (może być mniejsza niż podana w argumencie buffsize
), w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na wysyłanie danych, ale bez błedu podczas wysyłania) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na wysyłanie danych lub informujący o innym błędzie, który wystąpił podczas wysyłania.Argumenty:
socktls_session_t ssl - deskryptor gniazda szyfrowanego
char *buffrecv - wskaźnik do bufora na dane do odebrania
const size_t buffsize - maksymalna ilość danych do odebrania
const double timeosock - limit czasu na odbieranie danych
Zwracana wartość:
int - wynik (status) odbierania danych (dodatnia wartość oznacza ilość odebranych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości odebrania danych),
#top socktls_linerecv¶
Deklaracja funkcji
socktls_linerecv()
znajduje się w pliku nagłówkowym libnet/libsocktls.h
.Deklaracja funkcji
socktls_linerecv()
jest następująca:SELECT ALL
/** * @name socktls_linerecv() * @desc socktls_linerecv() * @param socktls_session_t ssl * @param char *buffdata * @param const:size_t buffsize * @param const:double timeosock * @return int linesize */ int socktls_linerecv(socktls_session_t ssl, char *buffrecv, const size_t buffsize, const double timeosock);
Funkcja socktls_linerecv() podobnie jak funkcja socktls_recv() od systemu zdalnego będącego drugą stroną połączenia dla deskryptora przekazanego w argumencie
ssl
odbierane (odczytywane) dane umieszcza w argumencie buffdata
(maksymalna ilość danych do odebrania podana jest w argumencie buffsize
) ograniczonego czasem trwania podanego w argumencie timeosock
. W odróżnieniu od funkcji socktls_recv() nie odbiera wymaganej argumentem buffsize
ilości danych tylko taką ilość danych, w której ostatni znak (bajt) jest znakiem nowej linii (0x0A) lub maksymalną ilość danych określoną argumentem buffsize
w przypadku gdy podano zbyt małej wielkości bufor aby móc pobrać niezbędną ilość danych wraz z ostatnim znakiem (bajtem) nowej linii (0x0A). W takim przypadku możliwe jest kontynuowanie odczytu danych aż do znaku (bajtu) nowej linii (0x0A) poprzez ponowne wywołanie tej funkcji. W przypadku gdy dane o ilości w której ostatni znak (bajt) jest znakiem nowej linii (0x0A) lecz nie większej niż określonej w argumencie buffsize
zostały odebrane w czasie mniejszym niż podany to zwracana jest wartość dodatnia informująca o ilości odebranych danych, w przeciwnym przypadku (lub również w przypadku przekroczenia podanego limitu czasu na odbieranie danych) zwracany jest ujemny kod błędu informujący o przekroczeniu limitu czasu na odbieranie danych lub informujący o innym błędzie, który wystąpił podczas odbierania.Argumenty:
socktls_session_t ssl - deskryptor gniazda szyfrowanego
char *buffrecv - wskaźnik do bufora na dane do odebrania
const size_t buffsize - maksymalna ilość danych do odebrania
const double timeosock - limit czasu na odbieranie danych
Zwracana wartość:
int - wynik (status) odbierania danych (dodatnia wartość oznacza ilość odebranych danych, ujemna wartość oznacza kod błedu informujący o przyczynie braku możliwości odebrania danych),
#top socktls_close¶
Deklaracja funkcji
socktls_close()
znajduje się w pliku nagłówkowym libnet/libsocktls.h
.Deklaracja funkcji
socktls_close()
jest następująca:SELECT ALL
/** * @name socktls_close() * @desc socktls_close() * @param socktls_session_t ssl * @return int result */ int socktls_close(socktls_session_t ssl);
Funkcja socktls_close()w zależności od użytej biblioteki do obsługi połączeń szyfrowanych TLS/SSL wywołuje funkcję o analogicznej nazwie gnutls_close(), openssl_close(), polarssl_close(), wolfssl_close() dla systemu zdalnego będącego drugą stroną połączenia dla deskryptora przekazanego w argumencie
ssl
zamyka połączenie wysyłając pakiet "close notify" informujący zdalny system o chęci zakończenia połączenia.Argumenty:
socktls_session_t ssl - deskryptor gniazda szyfrowanego
Zwracana wartość:
int -
Zmodyfikowany ostatnio: 2019/06/13 14:04:59 (5 lat temu),
textsize: 48,7 kB,
htmlsize: 73,0 kB
Zapraszam do komentowania, zgłaszania sugestii, propozycji, własnych przykładów, ...
Dodaj komentarzKomentarze użytkowników