Table 7.1).
void EVP_SignInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type,
ENGINE *impl);
EVP_SignInit_ex() is a typedef from the EVP_DigestInit_ex() function and performs identically. Upon success, the function returns 1; upon failure, the function returns 0.
int EVP_SignUpdate(EVP_MD_CTX *ctx, const void *d, unsigned
int cnt);
EVP_SignUpdate () is a typedef from the EVP_DigestUpdate () function and performs identically. Upon success, the function returns 1; upon failure, the function returns 0.
int EVP_SignFinal (EVP_MD_CTX *ctx, unsigned char *sig,
unsigned int *siglen, EVP_PKEY *pkey);
EVP_SignFinal () signs the data in ctx by using the private key pkey and places the resulting digital signature in sig.siglen contains the number of bytes written. Upon success, the function returns 1; upon failure, the function returns 0.
int EVP_PKEY_size(EVP_PKEY *pkey);
EVP_PKEY_size () returns the maximum size that a digital signature using pkey could be in bytes. The actual signature returned by EVP_SignFinal () might be smaller. Upon success, the function returns 1; upon failure, the function returns 0.
int EVP_VerifyInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type,
ENGINE *impl);
EVP_VerifyInit_ex () is a typedef from the EVP_DigestInit_ex () function and performs identically. Upon success, the function returns 1; upon failure, the function returns 0.
int EVP_VerifytJJ date(EVP_MD_CTX *ctx, const void *d, unsigned
int cnt);
EVP_VerifyUpdate() is a typedef from the EVP_DigestUpdate () function and performs identically. Upon success, the function returns 1; upon failure, the function returns 0.
int EVP_yerifyFinal{EVP_MD_CTX *ctx, unsigned char *sigbuf,
unsigned int siglen, EVP_PKEY *pkey);
EVP_VerifyFinal () verifies siglen bytes of data in sigbuf by using the context ctx with the public key pkey. Upon success, the function returns 1; upon failure, the function returns 0.