OLD | NEW |
(Empty) | |
| 1 =pod |
| 2 |
| 3 =head1 NAME |
| 4 |
| 5 EVP_DigestVerifyInit, EVP_DigestVerifyUpdate, EVP_DigestVerifyFinal - EVP signat
ure verification functions |
| 6 |
| 7 =head1 SYNOPSIS |
| 8 |
| 9 #include <openssl/evp.h> |
| 10 |
| 11 int EVP_DigestVerifyInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx, |
| 12 const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey); |
| 13 int EVP_DigestVerifyUpdate(EVP_MD_CTX *ctx, const void *d, unsigned int cnt); |
| 14 int EVP_DigestVerifyFinal(EVP_MD_CTX *ctx, unsigned char *sig, size_t siglen); |
| 15 |
| 16 =head1 DESCRIPTION |
| 17 |
| 18 The EVP signature routines are a high level interface to digital signatures. |
| 19 |
| 20 EVP_DigestVerifyInit() sets up verification context B<ctx> to use digest |
| 21 B<type> from ENGINE B<impl> and public key B<pkey>. B<ctx> must be initialized |
| 22 with EVP_MD_CTX_init() before calling this function. If B<pctx> is not NULL the |
| 23 EVP_PKEY_CTX of the verification operation will be written to B<*pctx>: this |
| 24 can be used to set alternative verification options. |
| 25 |
| 26 EVP_DigestVerifyUpdate() hashes B<cnt> bytes of data at B<d> into the |
| 27 verification context B<ctx>. This function can be called several times on the |
| 28 same B<ctx> to include additional data. This function is currently implemented |
| 29 using a macro. |
| 30 |
| 31 EVP_DigestVerifyFinal() verifies the data in B<ctx> against the signature in |
| 32 B<sig> of length B<siglen>. |
| 33 |
| 34 =head1 RETURN VALUES |
| 35 |
| 36 EVP_DigestVerifyInit() and EVP_DigestVerifyUpdate() return 1 for success and 0 |
| 37 or a negative value for failure. In particular a return value of -2 indicates |
| 38 the operation is not supported by the public key algorithm. |
| 39 |
| 40 Unlike other functions the return value 0 from EVP_DigestVerifyFinal() only |
| 41 indicates that the signature did not not verify successfully (that is tbs did |
| 42 not match the original data or the signature was of invalid form) it is not an |
| 43 indication of a more serious error. |
| 44 |
| 45 The error codes can be obtained from L<ERR_get_error(3)|ERR_get_error(3)>. |
| 46 |
| 47 =head1 NOTES |
| 48 |
| 49 The B<EVP> interface to digital signatures should almost always be used in |
| 50 preference to the low level interfaces. This is because the code then becomes |
| 51 transparent to the algorithm used and much more flexible. |
| 52 |
| 53 In previous versions of OpenSSL there was a link between message digest types |
| 54 and public key algorithms. This meant that "clone" digests such as EVP_dss1() |
| 55 needed to be used to sign using SHA1 and DSA. This is no longer necessary and |
| 56 the use of clone digest is now discouraged. |
| 57 |
| 58 For some key types and parameters the random number generator must be seeded |
| 59 or the operation will fail. |
| 60 |
| 61 The call to EVP_DigestVerifyFinal() internally finalizes a copy of the digest |
| 62 context. This means that calls to EVP_VerifyUpdate() and EVP_VerifyFinal() can |
| 63 be called later to digest and verify additional data. |
| 64 |
| 65 Since only a copy of the digest context is ever finalized the context must |
| 66 be cleaned up after use by calling EVP_MD_CTX_cleanup() or a memory leak |
| 67 will occur. |
| 68 |
| 69 =head1 SEE ALSO |
| 70 |
| 71 L<EVP_DigestSignInit(3)|EVP_DigestSignInit(3)>, |
| 72 L<EVP_DigestInit(3)|EVP_DigestInit(3)>, L<err(3)|err(3)>, |
| 73 L<evp(3)|evp(3)>, L<hmac(3)|hmac(3)>, L<md2(3)|md2(3)>, |
| 74 L<md5(3)|md5(3)>, L<mdc2(3)|mdc2(3)>, L<ripemd(3)|ripemd(3)>, |
| 75 L<sha(3)|sha(3)>, L<dgst(1)|dgst(1)> |
| 76 |
| 77 =head1 HISTORY |
| 78 |
| 79 EVP_DigestVerifyInit(), EVP_DigestVerifyUpdate() and EVP_DigestVerifyFinal() |
| 80 were first added to OpenSSL 1.0.0. |
| 81 |
| 82 =cut |
OLD | NEW |