Sortix volatile manual
This manual documents Sortix volatile, a development build that has not been officially released. You can instead view this document in the latest official manual.
| EVP_DIGESTVERIFYINIT(3) | Library Functions Manual | EVP_DIGESTVERIFYINIT(3) | 
NAME
EVP_DigestVerifyInit,
    EVP_DigestVerifyUpdate,
    EVP_DigestVerifyFinal,
    EVP_DigestVerify — EVP
    signature verification functions
SYNOPSIS
#include
    <openssl/evp.h>
int
  
  EVP_DigestVerifyInit(EVP_MD_CTX
    *ctx, EVP_PKEY_CTX **pctx, const
    EVP_MD *type, ENGINE *engine,
    EVP_PKEY *pkey);
int
  
  EVP_DigestVerifyUpdate(EVP_MD_CTX
    *ctx, const void *d, size_t
    cnt);
int
  
  EVP_DigestVerifyFinal(EVP_MD_CTX
    *ctx, const unsigned char *sig,
    size_t siglen);
int
  
  EVP_DigestVerify(EVP_MD_CTX
    *ctx, const unsigned char *sig,
    size_t siglen, const unsigned char
    *tbs, size_t *tbslen);
DESCRIPTION
The EVP signature routines are a high-level interface to digital signatures.
EVP_DigestVerifyInit()
    sets up verification context ctx to use digest
    type and public key pkey.
    ctx must be initialized with
    EVP_MD_CTX_init(3)
    before calling this function. If pctx is not
    NULL, the EVP_PKEY_CTX of the
    verification operation will be written to *pctx: this
    can be used to set alternative verification options. Any existing value in
    *.Fa pctx is overwritten. The EVP_PKEY_CTX value
    returned must not be freed directly by the application. It will be freed
    automatically when the EVP_MD_CTX is freed. The
    ENGINE *engine argument is always ignored and passing
    NULL is recommended.
EVP_DigestVerifyUpdate()
    hashes cnt bytes of data at d
    into the verification context ctx. This function can
    be called several times on the same ctx to include
    additional data. This function is currently implemented using a macro.
EVP_DigestVerifyFinal()
    verifies the data in ctx against the signature in
    sig of length siglen.
EVP_DigestVerify()
    verifies tbslen bytes at tbs
    against the signature in sig of length
    siglen. EVP_DigestVerify() is
    a one shot operation which verifies a single block of data in one function
    call. For algorithms that support streaming it is equivalent to calling
    EVP_DigestVerifyUpdate() and
    EVP_DigestVerifyFinal().
The EVP interface to digital signatures should almost always be used in preference to the low level interfaces. This is because the code then becomes transparent to the algorithm used and much more flexible.
The call to
    EVP_DigestVerifyFinal()
    internally finalizes a copy of the digest context. This means that
    EVP_VerifyUpdate(3)
    and
    EVP_VerifyFinal(3)
    can be called later to digest and verify additional data.
Since only a copy of the digest context is ever finalized, the context must be cleaned up after use by calling EVP_MD_CTX_free(3) or a memory leak will occur.
RETURN VALUES
EVP_DigestVerifyInit() and
    EVP_DigestVerifyUpdate() return 1 for success and 0
    for failure.
EVP_DigestVerifyFinal() and
    EVP_DigestVerify() return 1 for success; any other
    value indicates failure. A return value of 0 indicates that the signature
    did not verify successfully (that is, the signature did not match the
    original data or the signature had an invalid form), while other values
    indicate a more serious error (and sometimes also indicate an invalid
    signature form).
The error codes can be obtained from ERR_get_error(3).
SEE ALSO
evp(3), EVP_DigestInit(3), EVP_DigestSignInit(3), EVP_PKEY_meth_set_verifyctx(3)
HISTORY
EVP_DigestVerifyInit(),
    EVP_DigestVerifyUpdate(), and
    EVP_DigestVerifyFinal() first appeared in OpenSSL
    1.0.0 and have been available since OpenBSD 4.9.
EVP_DigestVerify() first appeared in
    OpenSSL 1.1.1 and has been available since OpenBSD
    7.0.
| July 21, 2024 | Sortix 1.1.0-dev | 
