BIO_PUSH(3ssl) OpenSSL BIO_PUSH(3ssl)

BIO_push, BIO_pop, BIO_set_next - adaugă și elimină BIO-uri dintr-un lanț

#include <openssl/bio.h>
BIO *BIO_push(BIO *b, BIO *next);
BIO *BIO_pop(BIO *b);
void BIO_set_next(BIO *b, BIO *next);

BIO_push() introduce b în next. Dacă b este NULL, funcția nu face nimic și returnează next. În caz contrar, adaugă b, care poate fi un singur BIO sau un lanț de BIO-uri, înaintea lui next (cu excepția cazului în care next este NULL). Apoi efectuează un apel de control asupra lui b și returnează b.

BIO_pop() elimină BIO b din orice lanț din care face parte. Dacă b este NULL, funcția nu face nimic și returnează NULL. În caz contrar, efectuează un apel de control pe b și returnează următorul BIO din lanț sau NULL dacă nu există următorul BIO. BIO-ul eliminat devine un BIO unic, fără asociere cu lanțul original, putând astfel fi eliberat sau inclus într-un lanț diferit.

BIO_set_next() înlocuiește următorul BIO existent într-un lanț cu BIO-ul indicat de next. Noul lanț poate include unele dintre aceleași BIO-uri din lanțul vechi sau poate fi complet diferit.

Numele acestor funcții sunt poate puțin înșelătoare. BIO_push() unește două lanțuri BIO, în timp ce BIO_pop() șterge un singur BIO dintr-un lanț, BIO-ul șters nefiind neapărat la sfârșitul lanțului.

Procesul de apelare a BIO_push() și BIO_pop() pe un BIO poate avea consecințe suplimentare (se efectuează un apel de control către BIO-urile afectate). Orice efecte vor fi menționate în descrierile individuale ale BIO-urilor.

BIO_push() returnează capul lanțului, care este de obicei b, sau next dacă b este NULL.

BIO_pop() returnează următorul BIO din lanț sau NULL dacă nu există următorul BIO.

Pentru aceste exemple, să presupunem că md1 și md2 sunt BIO-uri rezumate (digest), b64 este un BIO base64, iar f este un BIO fișier.

Dacă apelul:

BIO_push(b64, f);

este creat, atunci noul lanț va fi b64-f. După efectuarea apelurilor

BIO_push(md2, b64);
BIO_push(md1, md2);

noul lanț este md1-md2-b64-f. Datele scrise în md1 vor fi procesate de md1 și md2, codificate în base64 și, în final, scrise în f.

Trebuie remarcat faptul că citirea determină trecerea datelor în sens invers, adică datele sunt citite din f, decodificate în base64 și procesate de md2 și apoi de md1.

Apelul:

BIO_pop(md2);

va returna b64, iar noul lanț va fi md1-b64-f. Datele pot fi scrise și citite din md1 ca și până acum, cu excepția faptului că md2 nu va mai fi aplicat.

bio(7)

Funcția BIO_set_next() a fost adăugată în OpenSSL 1.1.0.

Drepturi de autor 2000-2021 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.

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 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.

5 august 2025 3.5.2