EVP_PKEY_ENCRYPT(3ssl) OpenSSL EVP_PKEY_ENCRYPT(3ssl)

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

#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);

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.

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.

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.

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 */

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)

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

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.

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