EVP_PKEY_DECRYPT(3ssl) OpenSSL EVP_PKEY_DECRYPT(3ssl) NUME EVP_PKEY_decrypt_init, EVP_PKEY_decrypt_init_ex, EVP_PKEY_decrypt - decriptare folosind un algoritm cu cheie publica SINOPSIS #include int EVP_PKEY_decrypt_init(EVP_PKEY_CTX *ctx); int EVP_PKEY_decrypt_init_ex(EVP_PKEY_CTX *ctx, const OSSL_PARAM params[]); int EVP_PKEY_decrypt(EVP_PKEY_CTX *ctx, unsigned char *out, size_t *outlen, const unsigned char *in, size_t inlen); DESCRIERE Funcia EVP_PKEY_decrypt_init() iniializeaza un context de algoritm cu cheie publica utilizand cheia pkey pentru o operaie de decriptare. Funcia EVP_PKEY_decrypt_init_ex() iniializeaza un context de algoritm cu cheie publica utilizand cheia pkey pentru o operaie de decriptare i definete parametrii specifici algoritmului params. Funcia EVP_PKEY_decrypt() efectueaza o operaie de decriptare a cheii publice utilizand ctx. Datele care trebuie decriptate sunt specificate utilizand parametrii in i inlen. Daca out este NULL, atunci dimensiunea minima necesara a tamponului de ieire este scrisa in parametrul *outlen. Daca out nu este NULL, atunci inainte de apel, parametrul *outlen trebuie sa conina lungimea tamponului out. Daca apelul are succes, datele decriptate sunt scrise in out i cantitatea de date decriptate este scrisa in *outlen, in caz contrar fiind returnata o eroare. NOTE Dupa apelul catre EVP_PKEY_decrypt_init(), pot fi efectuate operaii de control specifice algoritmului pentru a defini parametrii corespunzatori pentru operaie. Aceste operaii pot fi incluse in apelul EVP_PKEY_decrypt_init_ex(). Funcia EVP_PKEY_decrypt() poate fi apelata de mai multe ori in acelai context daca se efectueaza mai multe operaii utilizand aceiai parametri. VALORI RETURNATE EVP_PKEY_decrypt_init(), EVP_PKEY_decrypt_init_ex() i EVP_PKEY_decrypt() returneaza 1 pentru succes i 0 sau o valoare negativa pentru eec. In special, o valoare de returnare de -2 indica faptul ca operaia nu este acceptata de algoritmul cheii publice. AVERTISMENTE In versiunile OpenSSL anterioare versiunii 3.2.0, atunci cand erau utilizate in completarea PKCS#1 v1.5, atat valoarea returnata de EVP_PKEY_decrypt(), cat i outlen furnizau informaii utile pentru lansarea unui atac Bleichenbacher impotriva cheii private utilizate. Acestea trebuiau procesate intr-un mod care sa nu implice canale secundare. Incepand cu versiunea 3.2.0, metoda EVP_PKEY_decrypt() utilizata impreuna cu umplerea PKCS#1 v1.5, aa cum este implementata in furnizorul default, implementeaza mecanismul de respingere implicita (consultai OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION in provider-asym_cipher(7)). Asta inseamna ca nu returneaza o eroare cand detecteaza o eroare in umplere, ci returneaza un mesaj generat pseudo-aleatoriu, eliminand necesitatea codului securizat de canal lateral din aplicaiile care folosesc OpenSSL. Daca OpenSSL este configurat sa foloseasca un furnizor care nu implementeaza respingerea implicita, codul trebuie sa gestioneze in continuare valorile returnate folosind codul fara canal lateral. Gestionarea fara canal secundar a stivei de erori poate fi efectuata fie folosind o pereche de apeluri necondiionate ERR_set_mark(3) i ERR_pop_to_mark(3) , fie folosind apelul ERR_clear_error(3). EXEMPLE Decripteaza datele folosind OAEP (pentru cheile RSA): #include #include EVP_PKEY_CTX *ctx; ENGINE *eng; unsigned char *out, *in; size_t outlen, inlen; EVP_PKEY *key; /* * NB: presupune ca key, eng, in, inlen sunt deja configurate i * ca key este o cheie privata RSA. */ ctx = EVP_PKEY_CTX_new(key, eng); if (!ctx) /* A aparut o eroare */ if (EVP_PKEY_decrypt_init(ctx) <= 0) /* Eroare */ if (EVP_PKEY_CTX_set_rsa_padding(ctx, RSA_PKCS1_OAEP_PADDING) <= 0) /* Eroare */ /* Determina lungimea memoriei tampon */ if (EVP_PKEY_decrypt(ctx, NULL, &outlen, in, inlen) <= 0) /* Eroare */ out = OPENSSL_malloc(outlen); if (!out) /* Eec malloc */ if (EVP_PKEY_decrypt(ctx, out, &outlen, in, inlen) <= 0) /* Eroare */ /* Datele decriptate sunt octei outlen scrise in memoria tampon de ieire */ CONSULTAI I EVP_PKEY_CTX_new(3), EVP_PKEY_encrypt(3), EVP_PKEY_sign(3), EVP_PKEY_verify(3), EVP_PKEY_verify_recover(3), EVP_PKEY_derive(3) ISTORIC Aceste funcii au fost adaugate in OpenSSL 1.0.0. DREPTURI DE AUTOR Drepturi de autor 2006-2025 The OpenSSL Project Authors. Toate drepturile rezervate. Liceniat sub Licena Apache 2.0 (,,License"). Nu avei voie sa utilizai acest fiier decat in conformitate cu licena. Putei obine o copie din fiierul LICENSE din distribuia sursei sau de la . TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . 3.6.2 7 aprilie 2026 EVP_PKEY_DECRYPT(3ssl)