CMS_DECRYPT(3ssl) OpenSSL CMS_DECRYPT(3ssl) NUME CMS_decrypt, CMS_decrypt_set1_pkey_and_peer, CMS_decrypt_set1_pkey, CMS_decrypt_set1_password - decriptarea coninutului dintr-o structura de date CMS envelopedData SINOPSIS #include int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert, BIO *dcont, BIO *out, unsigned int flags); int CMS_decrypt_set1_pkey_and_peer(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert, X509 *peer); int CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert); int CMS_decrypt_set1_password(CMS_ContentInfo *cms, unsigned char *pass, ossl_ssize_t passlen); DESCRIERE CMS_decrypt() extrage coninutul decriptat dintr-o structura CMS EnvelopedData sau AuthEnvelopedData. Utilizeaza CMS_decrypt_set1_pkey() pentru a decripta coninutul cu cheia privata a destinatarului pkey daca pkey nu este NULL. In acest caz, se recomanda furnizarea certificatului asociat in cert - a se vedea NOTELE de mai jos. out este un BIO in care se scrie coninutul, iar flags este un set opional de fanioane. Daca pkey este NULL, funcia presupune ca decriptarea a fost deja efectuata (de exemplu, utilizand CMS_decrypt_set1_pkey() sau CMS_decrypt_set1_password()) i furnizeaza doar coninutul, cu excepia cazului in care cert, dcont i out sunt, de asemenea, NULL. Parametrul dcont este utilizat in cazurile rare in care coninutul criptat este detaat. In mod normal, acesta va fi stabilit la NULL. CMS_decrypt_set1_pkey_and_peer() decripteaza structura CMS_ContentInfo cms utilizand cheia privata pkey, certificatul corespunzator cert, care este recomandat, dar poate fi NULL, i certificatul iniiatorului (opional) peer. In caz de succes, inregistreaza i in cms cheia de decriptare pkey, iar apoi ar trebui sa urmeze "CMS_decrypt(cms, NULL, NULL, dcont, out, flags)". Aceasta apelare elibereaza orice cheie de decriptare stocata in cms. CMS_decrypt_set1_pkey() este identica cu CMS_decrypt_set1_pkey_and_peer(), cu peer fiind NULL. CMS_decrypt_set1_password() decripteaza structura CMS_ContentInfo cms utilizand secretul pass cu lungimea passlen. Daca operaia are succes, inregistreaza in cms cheia de decriptare utilizata, iar apoi trebuie urmata de "CMS_decrypt(cms, NULL, NULL, dcont, out, flags)". Aceasta apelare elibereaza orice cheie de decriptare stocata in cms. NOTE Although the recipients certificate is not needed to decrypt the data it is needed to locate the appropriate (of possible several) recipients in the CMS structure. Daca cert este definit ca NULL, sunt incercai toi destinatarii posibili. Acest caz este insa problematic. Pentru a contracara atacul MMA (atacul lui Bleichenbacher asupra umplerii PKCS #1 v1.5 RSA), sunt incercai toi destinatarii, indiferent daca reuesc sau nu. Daca niciun destinatar nu reuete, se utilizeaza o cheie simetrica aleatorie pentru a decripta coninutul: acest lucru va genera de obicei date fara sens i poate (dar nu este garantat) sa returneze in final doar o eroare de umplere. Daca CMS_decrypt() a returnat doar o eroare atunci cand toate cheile criptate ale destinatarilor nu au reuit sa decripteze, un atacator ar putea utiliza acest lucru intr-un atac de sincronizare. Daca este activat fanionul special CMS_DEBUG_DECRYPT, comportamentul de mai sus este modificat i este returnata o eroare daca nicio cheie criptata a destinatarului nu poate fi decriptata fara a genera o cheie aleatorie de criptare a coninutului. Aplicaiile ar trebui sa utilizeze acest fanion cu extrema prudena, in special in cazul porilor de acces automate, deoarece acestea pot fi expuse atacurilor. Este posibil sa se determine cheia corecta a destinatarului prin alte mijloace (de exemplu, cautandu-le intr-o baza de date) i definindu-le in avans in structura CMS utilizand funciile utilitare CMS, cum ar fi CMS_set1_pkey(), sau utilizand CMS_decrypt_set1_password() daca destinatarul are o cheie simetrica. In aceste cazuri, atat cert cat i pkey trebuie definite ca NULL. Pentru a procesa tipurile KEKRecipientInfo, CMS_set1_key() sau CMS_RecipientInfo_set0_key() i CMS_RecipientInfo_decrypt() trebuie apelate inainte de CMS_decrypt(), iar cert i pkey trebuie definite ca NULL. Urmatoarele fanioane pot fi transmise in parametrul flags. Daca fanionul CMS_TEXT este activat, anteturile MIME pentru tipul "text/plain" sunt terse din coninut. Daca coninutul nu este de tip "text/plain", atunci este returnata o eroare. VALORI RETURNATE CMS_decrypt(), CMS_decrypt_set1_pkey_and_peer(), CMS_decrypt_set1_pkey() i CMS_decrypt_set1_password() returneaza fie 1 pentru succes, fie 0 pentru eec. Eroarea poate fi obinuta din ERR_get_error(3). ERORI Partea set1_ din aceste nume de funcii este inelatoare i ar trebui sa se citeasca mai bine: with_. Lipsa procesarii intr-o singura trecere i necesitatea de a pastra toate datele in memorie, aa cum se menioneaza in CMS_verify(), se aplica i in cazul CMS_decrypt(). CONSULTAI I ERR_get_error(3), CMS_encrypt(3) ISTORIC CMS_decrypt_set1_pkey_and_peer() i CMS_decrypt_set1_password() au fost adaugate in OpenSSL 3.0. DREPTURI DE AUTOR Drepturi de autor 2008-2020 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.5.2 5 august 2025 CMS_DECRYPT(3ssl)