EVP_PKEY_ENCRYPT(3SSL)

NUME
EVP_PKEY_encrypt_init_ex, EVP_PKEY_encrypt_init, EVP_PKEY_encrypt - criptare folosind un algoritm cu cheie publică

SINOPSIS
 #include <openssl/evp.h>

 int EVP_PKEY_encrypt_init(EVP_PKEY_CTX *ctx);
 int EVP_PKEY_encrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]);
 int EVP_PKEY_encrypt(EVP_PKEY_CTX *ctx,
                      unsigned char *out, size_t *outlen,
                      const unsigned char *in, size_t inlen);

DESCRIERE
Funcția EVP_PKEY_encrypt_init() inițializează un context de algoritm cu cheie publică utilizând cheia pkey pentru o operație de criptare.

Funcția EVP_PKEY_encrypt_init_ex() inițializează un context de algoritm cu cheie publică utilizând cheia pkey pentru o operație de criptare și definește parametrii specifici algoritmului params.

Funcția EVP_PKEY_encrypt() efectuează o operație de criptare cu cheie publică utilizând ctx. Datele care urmează să fie criptate sunt specificate utilizând parametrii in și inlen. Dacă out este NULL, atunci dimensiunea maximă a tamponului de ieșire este scrisă în parametrul outlen. Dacă out nu este NULL, atunci înainte de apel, parametrul outlen trebuie să conțină lungimea tamponului out. Dacă apelul are succes, datele criptate sunt scrise în out, iar cantitatea de date scrise în outlen.

NOTE
După apelul către EVP_PKEY_encrypt_init(), pot fi efectuate operații de control specifice algoritmului pentru a defini parametrii corespunzători pentru operație. Aceste operații pot fi incluse în apelul EVP_PKEY_encrypt_init_ex().

Funcția EVP_PKEY_encrypt() poate fi apelată de mai multe ori în același context dacă se efectuează mai multe operații utilizând aceiași parametri.

VALORI RETURNATE
EVP_PKEY_encrypt_init(), EVP_PKEY_encrypt_init_ex() și EVP_PKEY_encrypt() returnează 1 pentru succes și 0 sau o valoare negativă pentru eșec. În special, o valoare returnată de -2 indică că operația nu este acceptată de algoritmul cheii publice.

EXEMPLE
Criptați datele folosind OAEP (pentru cheile RSA). Consultați și PEM_read_PUBKEY(3) sau d2i_X509(3) pentru modalități de încărcare a unei chei publice. De asemenea, puteți defini pur și simplu 'eng = NULL;' pentru a începe cu implementarea implicită OpenSSL RSA:

 #include <openssl/evp.h>
 #include <openssl/rsa.h>
 #include <openssl/engine.h>

 EVP_PKEY_CTX *ctx;
 ENGINE *eng;
 unsigned char *out, *in;
 size_t outlen, inlen;
 EVP_PKEY *key;

 /*
  * NB: presupune că eng, key, in, inlen sunt deja configurate
  * și că acea cheie este o cheie publică RSA
  */
 ctx = EVP_PKEY_CTX_new(key, eng);
 if (!ctx)
     /* A apărut o eroare */
 if (EVP_PKEY_encrypt_init(ctx) <= 0)
     /* Eroare */
 if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_OAEP_PADDING) <= 0)
     /* Eroare */

 /* Determină lungimea memoriei tampon  */
 if (EVP_PKEY_encrypt(ctx, NULL, &outlen, in, inlen) <= 0)
     /* Eroare */

 out = OPENSSL_malloc(outlen);

 if (!out)
     /* Eșec malloc */

 if (EVP_PKEY_encrypt(ctx, out, &outlen, in, inlen) <= 0)
     /* Eroare */

 /* Datele criptate sunt octeți outlen scriși în memoria tampon de ieșire */

CONSULTAȚI ȘI
d2i_X509(3), ENGINE_by_id(3), EVP_PKEY_CTX_new(3), EVP_PKEY_decrypt(3), EVP_PKEY_sign(3), EVP_PKEY_verify(3), EVP_PKEY_verify_recover(3), EVP_PKEY_derive(3)

ISTORIC
Aceste funcții au fost adăugate în OpenSSL 1.0.0.

DREPTURI DE AUTOR
Drepturi de autor 2006-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.