]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - secure/lib/libcrypto/man/EVP_DigestSignInit.3
MFH r339206-r339212, r339215-r339239
[FreeBSD/FreeBSD.git] / secure / lib / libcrypto / man / EVP_DigestSignInit.3
1 .\" Automatically generated by Pod::Man 4.09 (Pod::Simple 3.35)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
21 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
29 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 .    ds C`
42 .    ds C'
43 'br\}
44 .\"
45 .\" Escape single quotes in literal strings from groff's Unicode transform.
46 .ie \n(.g .ds Aq \(aq
47 .el       .ds Aq '
48 .\"
49 .\" If the F register is >0, we'll generate index entries on stderr for
50 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
51 .\" entries marked with X<> in POD.  Of course, you'll have to process the
52 .\" output yourself in some meaningful fashion.
53 .\"
54 .\" Avoid warning from groff about undefined register 'F'.
55 .de IX
56 ..
57 .if !\nF .nr F 0
58 .if \nF>0 \{\
59 .    de IX
60 .    tm Index:\\$1\t\\n%\t"\\$2"
61 ..
62 .    if !\nF==2 \{\
63 .        nr % 0
64 .        nr F 2
65 .    \}
66 .\}
67 .\"
68 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
69 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
70 .    \" fudge factors for nroff and troff
71 .if n \{\
72 .    ds #H 0
73 .    ds #V .8m
74 .    ds #F .3m
75 .    ds #[ \f1
76 .    ds #] \fP
77 .\}
78 .if t \{\
79 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80 .    ds #V .6m
81 .    ds #F 0
82 .    ds #[ \&
83 .    ds #] \&
84 .\}
85 .    \" simple accents for nroff and troff
86 .if n \{\
87 .    ds ' \&
88 .    ds ` \&
89 .    ds ^ \&
90 .    ds , \&
91 .    ds ~ ~
92 .    ds /
93 .\}
94 .if t \{\
95 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
96 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
97 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
98 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
99 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
100 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
101 .\}
102 .    \" troff and (daisy-wheel) nroff accents
103 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
104 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
105 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
106 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
107 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
108 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
109 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
110 .ds ae a\h'-(\w'a'u*4/10)'e
111 .ds Ae A\h'-(\w'A'u*4/10)'E
112 .    \" corrections for vroff
113 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
114 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
115 .    \" for low resolution devices (crt and lpr)
116 .if \n(.H>23 .if \n(.V>19 \
117 \{\
118 .    ds : e
119 .    ds 8 ss
120 .    ds o a
121 .    ds d- d\h'-1'\(ga
122 .    ds D- D\h'-1'\(hy
123 .    ds th \o'bp'
124 .    ds Th \o'LP'
125 .    ds ae ae
126 .    ds Ae AE
127 .\}
128 .rm #[ #] #H #V #F C
129 .\" ========================================================================
130 .\"
131 .IX Title "EVP_DIGESTSIGNINIT 3"
132 .TH EVP_DIGESTSIGNINIT 3 "2018-09-11" "1.1.1" "OpenSSL"
133 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
134 .\" way too many mistakes in technical documents.
135 .if n .ad l
136 .nh
137 .SH "NAME"
138 EVP_DigestSignInit, EVP_DigestSignUpdate, EVP_DigestSignFinal, EVP_DigestSign \- EVP signing functions
139 .SH "SYNOPSIS"
140 .IX Header "SYNOPSIS"
141 .Vb 1
142 \& #include <openssl/evp.h>
143 \&
144 \& int EVP_DigestSignInit(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
145 \&                        const EVP_MD *type, ENGINE *e, EVP_PKEY *pkey);
146 \& int EVP_DigestSignUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);
147 \& int EVP_DigestSignFinal(EVP_MD_CTX *ctx, unsigned char *sig, size_t *siglen);
148 \&
149 \& int EVP_DigestSign(EVP_MD_CTX *ctx, unsigned char *sigret,
150 \&                    size_t *siglen, const unsigned char *tbs,
151 \&                    size_t tbslen);
152 .Ve
153 .SH "DESCRIPTION"
154 .IX Header "DESCRIPTION"
155 The \s-1EVP\s0 signature routines are a high level interface to digital signatures.
156 .PP
157 \&\fIEVP_DigestSignInit()\fR sets up signing context \fBctx\fR to use digest \fBtype\fR from
158 \&\s-1ENGINE\s0 \fBe\fR and private key \fBpkey\fR. \fBctx\fR must be created with
159 \&\fIEVP_MD_CTX_new()\fR before calling this function. If \fBpctx\fR is not \s-1NULL,\s0 the
160 \&\s-1EVP_PKEY_CTX\s0 of the signing operation will be written to \fB*pctx\fR: this can
161 be used to set alternative signing options. Note that any existing value in
162 \&\fB*pctx\fR is overwritten. The \s-1EVP_PKEY_CTX\s0 value returned must not be freed
163 directly by the application if \fBctx\fR is not assigned an \s-1EVP_PKEY_CTX\s0 value before
164 being passed to \fIEVP_DigestSignInit()\fR (which means the \s-1EVP_PKEY_CTX\s0 is created
165 inside \fIEVP_DigestSignInit()\fR and it will be freed automatically when the
166 \&\s-1EVP_MD_CTX\s0 is freed).
167 .PP
168 The digest \fBtype\fR may be \s-1NULL\s0 if the signing algorithm supports it.
169 .PP
170 No \fB\s-1EVP_PKEY_CTX\s0\fR will be created by \fIEVP_DigsetSignInit()\fR if the passed \fBctx\fR
171 has already been assigned one via \fIEVP_MD_CTX_set_ctx\fR\|(3). See also \s-1\fISM2\s0\fR\|(7).
172 .PP
173 Only \s-1EVP_PKEY\s0 types that support signing can be used with these functions. This
174 includes \s-1MAC\s0 algorithms where the \s-1MAC\s0 generation is considered as a form of
175 \&\*(L"signing\*(R". Built-in \s-1EVP_PKEY\s0 types supported by these functions are \s-1CMAC,\s0
176 Poly1305, \s-1DSA, ECDSA, HMAC, RSA,\s0 SipHash, Ed25519 and Ed448.
177 .PP
178 Not all digests can be used for all key types. The following combinations apply.
179 .IP "\s-1DSA\s0" 4
180 .IX Item "DSA"
181 Supports \s-1SHA1, SHA224, SHA256, SHA384\s0 and \s-1SHA512\s0
182 .IP "\s-1ECDSA\s0" 4
183 .IX Item "ECDSA"
184 Supports \s-1SHA1, SHA224, SHA256, SHA384, SHA512\s0 and \s-1SM3\s0
185 .IP "\s-1RSA\s0 with no padding" 4
186 .IX Item "RSA with no padding"
187 Supports no digests (the digest \fBtype\fR must be \s-1NULL\s0)
188 .IP "\s-1RSA\s0 with X931 padding" 4
189 .IX Item "RSA with X931 padding"
190 Supports \s-1SHA1, SHA256, SHA384\s0 and \s-1SHA512\s0
191 .IP "All other \s-1RSA\s0 padding types" 4
192 .IX Item "All other RSA padding types"
193 Support \s-1SHA1, SHA224, SHA256, SHA384, SHA512, MD5, MD5_SHA1, MD2, MD4, MDC2,
194 SHA3\-224, SHA3\-256, SHA3\-384, SHA3\-512\s0
195 .IP "Ed25519 and Ed448" 4
196 .IX Item "Ed25519 and Ed448"
197 Support no digests (the digest \fBtype\fR must be \s-1NULL\s0)
198 .IP "\s-1HMAC\s0" 4
199 .IX Item "HMAC"
200 Supports any digest
201 .IP "\s-1CMAC,\s0 Poly1305 and SipHash" 4
202 .IX Item "CMAC, Poly1305 and SipHash"
203 Will ignore any digest provided.
204 .PP
205 If RSA-PSS is used and restrictions apply then the digest must match.
206 .PP
207 \&\fIEVP_DigestSignUpdate()\fR hashes \fBcnt\fR bytes of data at \fBd\fR into the
208 signature context \fBctx\fR. This function can be called several times on the
209 same \fBctx\fR to include additional data. This function is currently implemented
210 using a macro.
211 .PP
212 \&\fIEVP_DigestSignFinal()\fR signs the data in \fBctx\fR and places the signature in \fBsig\fR.
213 If \fBsig\fR is \fB\s-1NULL\s0\fR then the maximum size of the output buffer is written to
214 the \fBsiglen\fR parameter. If \fBsig\fR is not \fB\s-1NULL\s0\fR then before the call the
215 \&\fBsiglen\fR parameter should contain the length of the \fBsig\fR buffer. If the
216 call is successful the signature is written to \fBsig\fR and the amount of data
217 written to \fBsiglen\fR.
218 .PP
219 \&\fIEVP_DigestSign()\fR signs \fBtbslen\fR bytes of data at \fBtbs\fR and places the
220 signature in \fBsig\fR and its length in \fBsiglen\fR in a similar way to
221 \&\fIEVP_DigestSignFinal()\fR.
222 .SH "RETURN VALUES"
223 .IX Header "RETURN VALUES"
224 \&\fIEVP_DigestSignInit()\fR, \fIEVP_DigestSignUpdate()\fR, \fIEVP_DigestSignaFinal()\fR and
225 \&\fIEVP_DigestSign()\fR return 1 for success and 0 or a negative value for failure. In
226 particular, a return value of \-2 indicates the operation is not supported by the
227 public key algorithm.
228 .PP
229 The error codes can be obtained from \fIERR_get_error\fR\|(3).
230 .SH "NOTES"
231 .IX Header "NOTES"
232 The \fB\s-1EVP\s0\fR interface to digital signatures should almost always be used in
233 preference to the low level interfaces. This is because the code then becomes
234 transparent to the algorithm used and much more flexible.
235 .PP
236 \&\fIEVP_DigestSign()\fR is a one shot operation which signs a single block of data
237 in one function. For algorithms that support streaming it is equivalent to
238 calling \fIEVP_DigestSignUpdate()\fR and \fIEVP_DigestSignFinal()\fR. For algorithms which
239 do not support streaming (e.g. PureEdDSA) it is the only way to sign data.
240 .PP
241 In previous versions of OpenSSL there was a link between message digest types
242 and public key algorithms. This meant that \*(L"clone\*(R" digests such as \fIEVP_dss1()\fR
243 needed to be used to sign using \s-1SHA1\s0 and \s-1DSA.\s0 This is no longer necessary and
244 the use of clone digest is now discouraged.
245 .PP
246 For some key types and parameters the random number generator must be seeded
247 or the operation will fail.
248 .PP
249 The call to \fIEVP_DigestSignFinal()\fR internally finalizes a copy of the digest
250 context. This means that calls to \fIEVP_DigestSignUpdate()\fR and
251 \&\fIEVP_DigestSignFinal()\fR can be called later to digest and sign additional data.
252 .PP
253 Since only a copy of the digest context is ever finalized, the context must
254 be cleaned up after use by calling \fIEVP_MD_CTX_free()\fR or a memory leak
255 will occur.
256 .PP
257 The use of \fIEVP_PKEY_size()\fR with these functions is discouraged because some
258 signature operations may have a signature length which depends on the
259 parameters set. As a result \fIEVP_PKEY_size()\fR would have to return a value
260 which indicates the maximum possible signature for any set of parameters.
261 .SH "SEE ALSO"
262 .IX Header "SEE ALSO"
263 \&\fIEVP_DigestVerifyInit\fR\|(3),
264 \&\fIEVP_DigestInit\fR\|(3),
265 \&\fIevp\fR\|(7), \s-1\fIHMAC\s0\fR\|(3), \s-1\fIMD2\s0\fR\|(3),
266 \&\s-1\fIMD5\s0\fR\|(3), \s-1\fIMDC2\s0\fR\|(3), \s-1\fIRIPEMD160\s0\fR\|(3),
267 \&\s-1\fISHA1\s0\fR\|(3), \fIdgst\fR\|(1)
268 .SH "HISTORY"
269 .IX Header "HISTORY"
270 \&\fIEVP_DigestSignInit()\fR, \fIEVP_DigestSignUpdate()\fR and \fIEVP_DigestSignFinal()\fR
271 were first added to OpenSSL 1.0.0.
272 .SH "COPYRIGHT"
273 .IX Header "COPYRIGHT"
274 Copyright 2006\-2018 The OpenSSL Project Authors. All Rights Reserved.
275 .PP
276 Licensed under the OpenSSL license (the \*(L"License\*(R").  You may not use
277 this file except in compliance with the License.  You can obtain a copy
278 in the file \s-1LICENSE\s0 in the source distribution or at
279 <https://www.openssl.org/source/license.html>.