SSL_SET_BIO(3SSL)

NUME
SSL_set_bio, SSL_set0_rbio, SSL_set0_wbio - conectează obiectul SSL cu un BIO

SINOPSIS
 #include <openssl/ssl.h>

 void SSL_set_bio(SSL *ssl, BIO *rbio, BIO *wbio);
 void SSL_set0_rbio(SSL *s, BIO *rbio);
 void SSL_set0_wbio(SSL *s, BIO *wbio);

DESCRIERE
SSL_set0_rbio() conectează BIO rbio pentru operațiile de citire ale obiectului ssl. Motorul SSL moștenește comportamentul rbio. Dacă BIO este neblocant, atunci și obiectul ssl va avea un comportament neblocant. Această funcție transferă proprietatea rbio către ssl. Acesta va fi eliberat automat folosind BIO_free_all(3) când ssl este eliberat. La apelarea acestei funcții, orice rbio existent care a fost definit anterior va fi, de asemenea, eliberat printr-un apel la BIO_free_all(3) (aceasta include cazul în care rbio este definit la aceeași valoare ca cea anterioră).

Dacă se utilizează un BIO personalizat, rbio trebuie să implementeze fie BIO_meth_set_read_ex(3), fie BIO_meth_set_read(3).

SSL_set0_wbio() funcționează la fel ca SSL_set0_rbio(), cu excepția faptului că conectează BIO wbio pentru operațiile de scriere ale obiectului ssl. Rețineți că, dacă rbio și wbio sunt identice, atunci SSL_set0_rbio() și SSL_set0_wbio() preiau fiecare proprietatea asupra unei referințe. Prin urmare, poate fi necesar să creșteți numărul de referințe disponibile utilizând BIO_up_ref(3) înainte de a apela funcțiile set0.

Dacă se utilizează un BIO personalizat, wbio trebuie să implementeze BIO_meth_set_write_ex(3) sau BIO_meth_set_write(3). În plus, trebuie să implementeze BIO_flush(3) utilizând BIO_CTRL_FLUSH și BIO_meth_set_ctrl(3). Dacă golirea nu este necesară cu wbio, BIO_flush(3) ar trebui să returneze unu și să nu facă nimic.

SSL_set_bio() este similară cu SSL_set0_rbio() și SSL_set0_wbio(), cu excepția faptului că conectează simultan atât rbio, cât și wbio și transferă proprietatea asupra rbio și wbio către ssl în conformitate cu următorul set de reguli:

•   Dacă nici rbio nici wbio nu s-au modificat față de valorile anterioare, atunci nu se face nimic.

•   Dacă parametrii rbio și wbio sunt diferiți și ambii sunt diferiți de valorile stabilite anterior, atunci se consumă o referință pentru rbio și o referință pentru wbio.

•   Dacă parametrii rbio și wbio sunt identici, iar rbio nu este identic cu valoarea stabilită anterior, atunci se consumă o referință.

•   Dacă parametrii rbio și wbio sunt identici și rbio este identic cu valoarea stabilită anterior, atunci nu se consumă referințe suplimentare.

•   Dacă parametrii rbio și wbio sunt diferiți și rbio este identic cu valoarea stabilită anterior, atunci se consumă o referință pentru wbio și nu se consumă nicio referință pentru rbio.

•   Dacă parametrii rbio și wbio sunt diferiți, iar wbio este identic cu valoarea stabilită anterior, iar valorile vechi ale rbio și wbio erau identice între ele, atunci se consumă o referință pentru rbio și nu se consumă nicio referință pentru wbio.

•   Dacă parametrii rbio și wbio sunt diferiți, iar wbio este identic cu valoarea stabilită anterior, iar valorile vechi ale rbio și wbio erau diferite între ele, atunci se consumă o referință pentru rbio și o referință pentru wbio.

Datorită acestei complexități, această funcție trebuie evitată; utilizați în schimb SSL_set0_rbio() și SSL_set0_wbio().

În cazul în care un nou BIO este definit pe un obiect SSL al conexiunii QUIC, modul de blocare va fi dezactivat pe acel obiect SSL dacă BIO nu poate gestiona modul de blocare. Dacă ulterior este definit un alt BIO pe obiectul SSL care poate gestiona modul de blocare, modul de blocare nu va fi reactivat automat. Pentru mai multe informații, consultați SSL_set_blocking_mode(3).

VALORI RETURNATE
SSL_set_bio(), SSL_set0_rbio() și SSL_set0_wbio() nu pot eșua.

CONSULTAȚI ȘI
SSL_get_rbio(3), SSL_connect(3), SSL_accept(3), SSL_shutdown(3), ssl(7), bio(7)

ISTORIC
SSL_set0_rbio() și SSL_set0_wbio() au fost adăugate în OpenSSL 1.1.0.

DREPTURI DE AUTOR
Drepturi de autor 2000-2023 The OpenSSL Project Authors. Toate drepturile rezervate.

Licențiat sub Licența Apache 2.0 („License”). Nu aveți voie să utilizați acest fișier decât în conformitate cu licența. Puteți obține o copie din fișierul LICENSE din distribuția sursei sau de la <https://www.openssl.org/source/license.html>.

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.