]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man3/EVP_DigestSignInit.pod
Fix minor typos in Configurations/README
[thirdparty/openssl.git] / doc / man3 / EVP_DigestSignInit.pod
CommitLineData
29cf84c6
DSH
1=pod
2
3=head1 NAME
4
75394189
DSH
5EVP_DigestSignInit, EVP_DigestSignUpdate, EVP_DigestSignFinal,
6EVP_DigestSign - EVP signing functions
29cf84c6
DSH
7
8=head1 SYNOPSIS
9
10 #include <openssl/evp.h>
11
12 int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
1bc74519 13 const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);
8bdce8d1 14 int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);
29cf84c6
DSH
15 int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen);
16
75394189
DSH
17 int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret,
18 size_t *siglen, const unsigned char *tbs,
19 size_t tbslen);
20
29cf84c6
DSH
21=head1 DESCRIPTION
22
23The EVP signature routines are a high level interface to digital signatures.
24
25EVP_DigestSignInit() sets up signing context B<ctx> to use digest B<type> from
0c714ba2 26ENGINE B<e> and private key B<pkey>. B<ctx> must be created with
25191fff 27EVP_MD_CTX_new() before calling this function. If B<pctx> is not NULL the
29cf84c6
DSH
28EVP_PKEY_CTX of the signing operation will be written to B<*pctx>: this can
29be used to set alternative signing options.
30
31EVP_DigestSignUpdate() hashes B<cnt> bytes of data at B<d> into the
32signature context B<ctx>. This function can be called several times on the
33same B<ctx> to include additional data. This function is currently implemented
186bb907 34using a macro.
29cf84c6
DSH
35
36EVP_DigestSignFinal() signs the data in B<ctx> places the signature in B<sig>.
37If B<sig> is B<NULL> then the maximum size of the output buffer is written to
38the B<siglen> parameter. If B<sig> is not B<NULL> then before the call the
39B<siglen> parameter should contain the length of the B<sig> buffer, if the
40call is successful the signature is written to B<sig> and the amount of data
41written to B<siglen>.
42
75394189 43EVP_DigestSign() signs B<tbslen> bytes of data at B<tbs> and places the
27b138e9 44signature in B<sig> and its length in B<siglen> in a similar way to
75394189
DSH
45EVP_DigestSignFinal().
46
29cf84c6
DSH
47=head1 RETURN VALUES
48
75394189
DSH
49EVP_DigestSignInit(), EVP_DigestSignUpdate(), EVP_DigestSignaFinal() and
50EVP_DigestSign() return 1 for success and 0 or a negative value for failure. In
51particular a return value of -2 indicates the operation is not supported by the
52public key algorithm.
29cf84c6 53
9b86974e 54The error codes can be obtained from L<ERR_get_error(3)>.
29cf84c6
DSH
55
56=head1 NOTES
57
58The B<EVP> interface to digital signatures should almost always be used in
59preference to the low level interfaces. This is because the code then becomes
60transparent to the algorithm used and much more flexible.
61
74e78361
DSH
62EVP_DigestSign() is a one shot operation which signs a single block of data
63in one function. For algorithms that support streaming it is equivalent to
64calling EVP_DigestSignUpdate() and EVP_DigestSignFinal(). For algorithms which
65do not support streaming (e.g. PureEdDSA) it is the only way to sign data.
75394189 66
29cf84c6
DSH
67In previous versions of OpenSSL there was a link between message digest types
68and public key algorithms. This meant that "clone" digests such as EVP_dss1()
69needed to be used to sign using SHA1 and DSA. This is no longer necessary and
70the use of clone digest is now discouraged.
71
72For some key types and parameters the random number generator must be seeded
1bc74519 73or the operation will fail.
29cf84c6
DSH
74
75The call to EVP_DigestSignFinal() internally finalizes a copy of the digest
76context. This means that calls to EVP_DigestSignUpdate() and
77EVP_DigestSignFinal() can be called later to digest and sign additional data.
78
79Since only a copy of the digest context is ever finalized the context must
80be cleaned up after use by calling EVP_MD_CTX_cleanup() or a memory leak
81will occur.
82
83The use of EVP_PKEY_size() with these functions is discouraged because some
84signature operations may have a signature length which depends on the
85parameters set. As a result EVP_PKEY_size() would have to return a value
86which indicates the maximum possible signature for any set of parameters.
87
88=head1 SEE ALSO
89
9b86974e 90L<EVP_DigestVerifyInit(3)>,
73fb82b7 91L<EVP_DigestInit(3)>,
b97fdb57
RL
92L<evp(7)>, L<HMAC(3)>, L<MD2(3)>,
93L<MD5(3)>, L<MDC2(3)>, L<RIPEMD160(3)>,
94L<SHA1(3)>, L<dgst(1)>
29cf84c6
DSH
95
96=head1 HISTORY
97
1bc74519 98EVP_DigestSignInit(), EVP_DigestSignUpdate() and EVP_DigestSignFinal()
fb552ac6 99were first added to OpenSSL 1.0.0.
29cf84c6 100
e2f92610
RS
101=head1 COPYRIGHT
102
73fb82b7 103Copyright 2006-2017 The OpenSSL Project Authors. All Rights Reserved.
e2f92610
RS
104
105Licensed under the OpenSSL license (the "License"). You may not use
106this file except in compliance with the License. You can obtain a copy
107in the file LICENSE in the source distribution or at
108L<https://www.openssl.org/source/license.html>.
109
110=cut