Sortix nightly manual
This manual documents Sortix nightly, a development build that has not been officially released. You can instead view this document in the latest official manual.
| EVP_SIGNINIT(3) | Library Functions Manual | EVP_SIGNINIT(3) | 
NAME
EVP_SignInit_ex,
    EVP_SignUpdate,
    EVP_SignFinal, EVP_SignInit
    — EVP signing functions
SYNOPSIS
#include
    <openssl/evp.h>
int
  
  EVP_SignInit_ex(EVP_MD_CTX *ctx,
    const EVP_MD *type, ENGINE
    *engine);
int
  
  EVP_SignUpdate(EVP_MD_CTX *ctx,
    const void *d, unsigned int
    cnt);
int
  
  EVP_SignFinal(EVP_MD_CTX *ctx,
    unsigned char *sig, unsigned int
    *s, EVP_PKEY *pkey);
void
  
  EVP_SignInit(EVP_MD_CTX *ctx,
    const EVP_MD *type);
DESCRIPTION
The EVP signature routines are a high level interface to digital signatures.
EVP_SignInit_ex()
    sets up a signing context ctx to use the digest
    type. ctx must be initialized
    with
    EVP_MD_CTX_init(3)
    before calling this function. The ENGINE *engine
    argument is always ignored and passing NULL is
    recommended.
EVP_SignUpdate()
    hashes cnt bytes of data at d
    into the signature context ctx. This function can be
    called several times on the same ctx to include
    additional data.
EVP_SignFinal()
    signs the data in ctx using the private key
    pkey and places the signature in
    sig. sig must be at least
    EVP_PKEY_size(3) bytes
    in size. s is an OUT parameter, and not used as an IN
    parameter. The number of bytes of data written (i.e. the length of the
    signature) will be written to the integer at s. At
    most EVP_PKEY_size(3)
    bytes will be written.
EVP_SignInit()
    initializes a signing context ctx to use the default
    implementation of digest type.
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_SignFinal()
    internally finalizes a copy of the digest context. This means that calls to
    EVP_SignUpdate() and
    EVP_SignFinal() can be called later to digest and
    sign 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.
EVP_SignInit_ex(),
    EVP_SignUpdate(), and
    EVP_SignInit() are implemented as macros.
RETURN VALUES
EVP_SignInit_ex(),
    EVP_SignUpdate(), and
    EVP_SignFinal() return 1 for success and 0 for
    failure.
The error codes can be obtained by ERR_get_error(3).
SEE ALSO
evp(3), EVP_DigestInit(3), EVP_PKEY_asn1_set_public(3), EVP_PKEY_size(3), EVP_VerifyInit(3)
HISTORY
EVP_SignInit(),
    EVP_SignUpdate(), and
    EVP_SignFinal() first appeared in SSLeay 0.5.1 and
    have been available since OpenBSD 2.4.
EVP_SignInit_ex() first appeared in
    OpenSSL 0.9.7 and has been available since OpenBSD
    3.2.
BUGS
Older versions of this documentation wrongly stated that calls to
    EVP_SignUpdate() could not be made after calling
    EVP_SignFinal().
Since the private key is passed in the call to
    EVP_SignFinal(), any error relating to the private
    key (for example an unsuitable key and digest combination) will not be
    indicated until after potentially large amounts of data have been passed
    through EVP_SignUpdate().
It is not possible to change the signing parameters using these function.
The previous two bugs are fixed in the newer EVP_DigestSign* function.
| July 21, 2024 | Sortix 1.1.0-dev | 
