EVP_VERIFYINIT(3ssl) OpenSSL EVP_VERIFYINIT(3ssl)

EVP_VerifyInit_ex, EVP_VerifyInit, EVP_VerifyUpdate, EVP_VerifyFinal_ex, EVP_VerifyFinal - funcții de verificare a semnăturii EVP

#include <openssl/evp.h>
int EVP_VerifyInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
int EVP_VerifyUpdate(EVP_MD_CTX *ctx, const void *d, unsigned int cnt);
int EVP_VerifyFinal_ex(EVP_MD_CTX *ctx, const unsigned char *sigbuf,
                       unsigned int siglen, EVP_PKEY *pkey,
                       OSSL_LIB_CTX *libctx, const char *propq);
int EVP_VerifyFinal(EVP_MD_CTX *ctx, unsigned char *sigbuf, unsigned int siglen,
                    EVP_PKEY *pkey);
int EVP_VerifyInit(EVP_MD_CTX *ctx, const EVP_MD *type);

EVP_SealInit() inițializează un context de criptare ctx pentru criptare cu algoritmul de criptare type utilizând o cheie secretă aleatorie. Rutinele de verificare a semnăturilor EVP sunt o interfață de nivel înalt pentru semnăturile digitale.

EVP_VerifyInit_ex() configurează contextul de verificare ctx pentru a utiliza rezumatul type din ENGINE impl. ctx trebuie creat prin apelarea EVP_MD_CTX_new() înainte de apelarea acestei funcții.

EVP_VerifyUpdate() hashes cnt octeți de date la d în contextul de verificare ctx. Această funcție poate fi apelată de mai multe ori pe același ctx pentru a include date suplimentare.

EVP_VerifyFinal_ex() verifică datele din ctx utilizând cheia publică pkey și octeții siglen din sigbuf. Contextul bibliotecii libctx și interogarea proprietății propq sunt utilizate la crearea unui context pentru a fi utilizat cu cheia pkey.

EVP_VerifyFinal() este similară cu EVP_VerifyFinal_ex(), dar utilizează valorile implicite NULL pentru contextul bibliotecii libctx și interogarea proprietății propq.

EVP_VerifyInit() inițializează contextul de verificare ctx pentru a utiliza implementarea implicită a rezumatului type.

EVP_VerifyInit_ex() și EVP_VerifyUpdate() returnează 1 pentru succes și 0 pentru eșec.

EVP_VerifyFinal_ex() și EVP_VerifyFinal() returnează 1 pentru o semnătură corectă, 0 pentru eșec și o valoare negativă dacă a apărut o altă eroare.

Codurile de eroare pot fi obținute prin ERR_get_error(3).

Interfața EVP pentru semnăturile digitale ar trebui utilizată aproape întotdeauna cu prioritate față de interfețele de nivel scăzut. Aceasta deoarece codul devine transparent pentru algoritmul utilizat și mult mai flexibil.

Apelul către EVP_VerifyFinal() finalizează intern o copie a contextului de rezumat Aceasta înseamnă că apelurile către EVP_VerifyUpdate() și EVP_VerifyFinal() pot fi apelate ulterior pentru a rezuma și verifica date suplimentare. Aplicațiile pot dezactiva acest comportament activând fanionul de context EVP_MD_CTX_FLAG_FINALISE prin EVP_MD_CTX_set_flags(3).

Deoarece numai o copie a contextului de rezumat este finalizată, contextul trebuie curățat după utilizare prin apelarea EVP_MD_CTX_free(), altfel va apărea o scurgere de memorie.

Rețineți că nu toți furnizorii acceptă continuarea. În cazul în care furnizorul selectat nu permite duplicarea contextelor, EVP_VerifyFinal() va finaliza contextul de rezumat și încercarea de a procesa date suplimentare prin EVP_VerifyUpdate() va genera o eroare.

Versiunile mai vechi ale acestei documentații indicau în mod eronat că apelurile către EVP_VerifyUpdate() nu puteau fi efectuate după apelarea EVP_VerifyFinal().

Deoarece cheia publică este transmisă în apelul către EVP_SignFinal(), orice eroare legată de cheia privată (de exemplu, o combinație necorespunzătoare de cheie și rezumat) nu va fi indicată decât după ce cantități potențial mari de date au fost transmise prin EVP_SignUpdate().

Nu este posibil să modificați parametrii de semnare folosind aceste funcții.

Cele două erori anterioare au fost remediate în noua funcție EVP_DigestVerify*().

evp(7), EVP_SignInit(3), EVP_DigestInit(3), evp(7), HMAC(3), MD2(3), MD5(3), MDC2(3), RIPEMD160(3), SHA1(3), openssl-dgst(1)

Funcția EVP_VerifyFinal_ex() a fost adăugată în OpenSSL 3.0.

Drepturi de autor 2000-2023 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