EVP_SEALINIT(3SSL)

NUME
EVP_SealInit, EVP_SealUpdate, EVP_SealFinal - criptarea plicului EVP

SINOPSIS
 #include <openssl/evp.h>

 int EVP_SealInit(EVP_CIPHER_CTX *ctx, const EVP_CIPHER *type,
                  unsigned char **ek, int *ekl, unsigned char *iv,
                  EVP_PKEY **pubk, int npubk);
 int EVP_SealUpdate(EVP_CIPHER_CTX *ctx, unsigned char *out,
                    int *outl, unsigned char *in, int inl);
 int EVP_SealFinal(EVP_CIPHER_CTX *ctx, unsigned char *out, int *outl);

DESCRIERE
Rutinele de plic EVP sunt o interfață de nivel înalt pentru criptarea plicurilor. Acestea generează o cheie aleatorie și IV (dacă este necesar), apoi o „creează plicul” folosind criptarea cu cheie publică. Datele pot fi apoi criptate folosind această cheie.

EVP_SealInit() inițializează un context de criptare ctx pentru criptare cu algoritmul type utilizând o cheie secretă aleatorie și IV. type este furnizat în mod normal de o funcție precum EVP_aes_256_cbc(). Cheia secretă este criptată utilizând una sau mai multe chei publice, ceea ce permite decriptarea acelorași date criptate utilizând oricare dintre cheile private corespunzătoare. ek este o matrice de tampoane în care va fi scrisă cheia secretă criptată cu cheia publică, fiecare tampon trebuie să conțină suficient spațiu pentru cheia criptată corespunzătoare: adică ek[i] trebuie să aibă spațiu pentru EVP_PKEY_get_size(pubk[i]) octeți. Dimensiunea reală a fiecărei chei secrete criptate este scrisă în matricea ekl. pubk este o matrice de npubk chei publice.

Parametrul iv este un tampon în care este scris IV-ul generat. Acesta trebuie să conțină suficient spațiu pentru IV-ul cifrului corespunzător, astfel cum este determinat de (de exemplu) EVP_CIPHER_get_iv_length(type).

Dacă algoritmul de criptare nu necesită un IV, parametrul iv este ignorat și poate fi NULL.

EVP_SealUpdate() și EVP_SealFinal() au exact aceleași proprietăți ca rutinele EVP_EncryptUpdate() și EVP_EncryptFinal(), așa cum este documentat în pagina manualului EVP_EncryptInit(3).

VALORI RETURNATE
EVP_SealInit() returnează 0 în caz de eroare sau npubk dacă operațiunea are succes.

EVP_SealUpdate() și EVP_SealFinal() returnează 1 pentru succes și 0 pentru eșec.

NOTE
Deoarece se generează o cheie secretă aleatorie, generatorul de numere aleatorii trebuie inițializat atunci când se apelează EVP_SealInit(). Dacă inițializarea sau reinitializarea automată a OpenSSL CSPRNG eșuează din cauza unor circumstanțe externe (a se vedea RAND(7)), operația va eșua.

Cheia publică trebuie să fie RSA, deoarece este singurul algoritm de cheie publică OpenSSL care acceptă transportul cheilor.

Criptarea plicului este metoda obișnuită de utilizare a criptării cu cheie publică pentru cantități mari de date, deoarece criptarea cu cheie publică este lentă, iar criptarea simetrică este rapidă. Prin urmare, criptarea simetrică este utilizată pentru criptarea în bloc, iar cheia simetrică aleatorie mică utilizată este transferată folosind criptarea cu cheie publică.

Este posibil să apelați EVP_SealInit() de două ori, în același mod ca și EVP_EncryptInit(). La prima apelare, npubk trebuie definit la 0 și (după definirea parametrilor de criptare) trebuie apelat din nou cu type definit la NULL.

CONSULTAȚI ȘI
evp(7), RAND_bytes(3), EVP_EncryptInit(3), EVP_OpenInit(3), RAND(7)

DREPTURI DE AUTOR
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>.

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.