]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/crypto/EVP_SignInit.pod
Use the process_docs script to install docs on Windows and VMS
[thirdparty/openssl.git] / doc / crypto / EVP_SignInit.pod
CommitLineData
f7173262
DSH
1=pod
2
3=head1 NAME
4
3d866ea6
MC
5EVP_SignInit, EVP_SignInit_ex, EVP_SignUpdate, EVP_SignFinal - EVP signing
6functions
f7173262
DSH
7
8=head1 SYNOPSIS
9
10 #include <openssl/evp.h>
11
3811eed8
DSH
12 int EVP_SignInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
13 int EVP_SignUpdate(EVP_MD_CTX *ctx, const void *d, unsigned int cnt);
f7173262
DSH
14 int EVP_SignFinal(EVP_MD_CTX *ctx,unsigned char *sig,unsigned int *s, EVP_PKEY *pkey);
15
3811eed8
DSH
16 void EVP_SignInit(EVP_MD_CTX *ctx, const EVP_MD *type);
17
f7173262
DSH
18 int EVP_PKEY_size(EVP_PKEY *pkey);
19
20=head1 DESCRIPTION
21
22The EVP signature routines are a high level interface to digital
23signatures.
24
3811eed8 25EVP_SignInit_ex() sets up signing context B<ctx> to use digest
25191fff
RL
26B<type> from ENGINE B<impl>. B<ctx> must be created with
27EVP_MD_CTX_new() before calling this function.
f7173262
DSH
28
29EVP_SignUpdate() hashes B<cnt> bytes of data at B<d> into the
c8973693 30signature context B<ctx>. This function can be called several times on the
f7173262
DSH
31same B<ctx> to include additional data.
32
e27a2596 33EVP_SignFinal() signs the data in B<ctx> using the private key B<pkey> and
6e6ba36d 34places the signature in B<sig>. B<sig> must be at least EVP_PKEY_size(pkey)
1afd7fa9 35bytes in size. B<s> is an OUT parameter, and not used as an IN parameter.
6e6ba36d
JW
36The number of bytes of data written (i.e. the length of the signature)
37will be written to the integer at B<s>, at most EVP_PKEY_size(pkey) bytes
38will be written.
3811eed8
DSH
39
40EVP_SignInit() initializes a signing context B<ctx> to use the default
41implementation of digest B<type>.
f7173262
DSH
42
43EVP_PKEY_size() returns the maximum size of a signature in bytes. The actual
44signature returned by EVP_SignFinal() may be smaller.
45
46=head1 RETURN VALUES
47
3811eed8
DSH
48EVP_SignInit_ex(), EVP_SignUpdate() and EVP_SignFinal() return 1
49for success and 0 for failure.
f7173262
DSH
50
51EVP_PKEY_size() returns the maximum size of a signature in bytes.
52
9b86974e 53The error codes can be obtained by L<ERR_get_error(3)>.
f7173262
DSH
54
55=head1 NOTES
56
57The B<EVP> interface to digital signatures should almost always be used in
58preference to the low level interfaces. This is because the code then becomes
59transparent to the algorithm used and much more flexible.
60
61Due to the link between message digests and public key algorithms the correct
62digest algorithm must be used with the correct public key type. A list of
63algorithms and associated public key algorithms appears in
9b86974e 64L<EVP_DigestInit(3)>.
f7173262
DSH
65
66When signing with DSA private keys the random number generator must be seeded
67or the operation will fail. The random number generator does not need to be
68seeded for RSA signatures.
69
3811eed8
DSH
70The call to EVP_SignFinal() internally finalizes a copy of the digest context.
71This means that calls to EVP_SignUpdate() and EVP_SignFinal() can be called
72later to digest and sign additional data.
73
74Since only a copy of the digest context is ever finalized the context must
75be cleaned up after use by calling EVP_MD_CTX_cleanup() or a memory leak
76will occur.
77
f7173262
DSH
78=head1 BUGS
79
3811eed8
DSH
80Older versions of this documentation wrongly stated that calls to
81EVP_SignUpdate() could not be made after calling EVP_SignFinal().
f7173262 82
29cf84c6
DSH
83Since the private key is passed in the call to EVP_SignFinal() any error
84relating to the private key (for example an unsuitable key and digest
85combination) will not be indicated until after potentially large amounts of
86data have been passed through EVP_SignUpdate().
87
88It is not possible to change the signing parameters using these function.
89
90The previous two bugs are fixed in the newer EVP_SignDigest*() function.
91
f7173262
DSH
92=head1 SEE ALSO
93
9b86974e
RS
94L<EVP_VerifyInit(3)>,
95L<EVP_DigestInit(3)>, L<err(3)>,
96L<evp(3)>, L<hmac(3)>, L<md2(3)>,
97L<md5(3)>, L<mdc2(3)>, L<ripemd(3)>,
98L<sha(3)>, L<dgst(1)>
f7173262 99
f7173262 100=cut
e2f92610
RS
101
102=head1 COPYRIGHT
103
104Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
105
106Licensed under the OpenSSL license (the "License"). You may not use
107this file except in compliance with the License. You can obtain a copy
108in the file LICENSE in the source distribution or at
109L<https://www.openssl.org/source/license.html>.
110
111=cut