2 ''' $RCSfile$$Revision$$Date$
20 .ie \\n(.$>=3 .ne \\$3
36 ''' Set up \*(-- to give an unbreakable dash;
37 ''' string Tr holds user defined translation string.
38 ''' Bell System Logo is used as a dummy character.
44 .if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
45 .if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
48 ''' \*(M", \*(S", \*(N" and \*(T" are the equivalent of
49 ''' \*(L" and \*(R", except that they are used on ".xx" lines,
50 ''' such as .IP and .SH, which do another additional levels of
51 ''' double-quote interpretation
80 .\" If the F register is turned on, we'll generate
81 .\" index entries out stderr for the following things:
86 .\" X<> Xref (embedded
87 .\" Of course, you have to process the output yourself
88 .\" in some meaninful fashion.
91 .tm Index:\\$1\t\\n%\t"\\$2"
96 .TH EVP_SignInit 3 "0.9.7d" "2/Sep/2004" "OpenSSL"
100 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
101 .de CQ \" put $1 in typewriter font
107 \\&\\$2 \\$3 \\$4 \\$5 \\$6 \\$7
110 .\" @(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2
111 . \" AM - accent mark definitions
113 . \" fudge factors for nroff and troff
122 . ds #H ((1u-(\\\\n(.fu%2u))*.13m)
128 . \" simple accents for nroff and troff
141 . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
142 . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
143 . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
144 . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
145 . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
146 . ds ? \s-2c\h'-\w'c'u*7/10'\u\h'\*(#H'\zi\d\s+2\h'\w'c'u*8/10'
147 . ds ! \s-2\(or\s+2\h'-\w'\(or'u'\v'-.8m'.\v'.8m'
148 . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
149 . ds q o\h'-\w'o'u*8/10'\s-4\v'.4m'\z\(*i\v'-.4m'\s+4\h'\w'o'u*8/10'
151 . \" troff and (daisy-wheel) nroff accents
152 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
153 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
154 .ds v \\k:\h'-(\\n(.wu*9/10-\*(#H)'\v'-\*(#V'\*(#[\s-4v\s0\v'\*(#V'\h'|\\n:u'\*(#]
155 .ds _ \\k:\h'-(\\n(.wu*9/10-\*(#H+(\*(#F*2/3))'\v'-.4m'\z\(hy\v'.4m'\h'|\\n:u'
156 .ds . \\k:\h'-(\\n(.wu*8/10)'\v'\*(#V*4/10'\z.\v'-\*(#V*4/10'\h'|\\n:u'
157 .ds 3 \*(#[\v'.2m'\s-2\&3\s0\v'-.2m'\*(#]
158 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
159 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
160 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
161 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
162 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
163 .ds ae a\h'-(\w'a'u*4/10)'e
164 .ds Ae A\h'-(\w'A'u*4/10)'E
165 .ds oe o\h'-(\w'o'u*4/10)'e
166 .ds Oe O\h'-(\w'O'u*4/10)'E
167 . \" corrections for vroff
168 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
169 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
170 . \" for low resolution devices (crt and lpr)
171 .if \n(.H>23 .if \n(.V>19 \
175 . ds v \h'-1'\o'\(aa\(ga'
191 EVP_SignInit, EVP_SignUpdate, EVP_SignFinal \- EVP signing functions
195 \& #include <openssl/evp.h>
198 \& int EVP_SignInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
199 \& int EVP_SignUpdate(EVP_MD_CTX *ctx, const void *d, unsigned int cnt);
200 \& int EVP_SignFinal(EVP_MD_CTX *ctx,unsigned char *sig,unsigned int *s, EVP_PKEY *pkey);
203 \& void EVP_SignInit(EVP_MD_CTX *ctx, const EVP_MD *type);
206 \& int EVP_PKEY_size(EVP_PKEY *pkey);
209 The EVP signature routines are a high level interface to digital
212 \fIEVP_SignInit_ex()\fR sets up signing context \fBctx\fR to use digest
213 \fBtype\fR from ENGINE \fBimpl\fR. \fBctx\fR must be initialized with
214 \fIEVP_MD_CTX_init()\fR before calling this function.
216 \fIEVP_SignUpdate()\fR hashes \fBcnt\fR bytes of data at \fBd\fR into the
217 signature context \fBctx\fR. This function can be called several times on the
218 same \fBctx\fR to include additional data.
220 \fIEVP_SignFinal()\fR signs the data in \fBctx\fR using the private key \fBpkey\fR
221 and places the signature in \fBsig\fR. If the \fBs\fR parameter is not NULL
222 then the number of bytes of data written (i.e. the length of the signature)
223 will be written to the integer at \fBs\fR, at most \fIEVP_PKEY_size\fR\|(pkey) bytes
226 \fIEVP_SignInit()\fR initializes a signing context \fBctx\fR to use the default
227 implementation of digest \fBtype\fR.
229 \fIEVP_PKEY_size()\fR returns the maximum size of a signature in bytes. The actual
230 signature returned by \fIEVP_SignFinal()\fR may be smaller.
232 \fIEVP_SignInit_ex()\fR, \fIEVP_SignUpdate()\fR and \fIEVP_SignFinal()\fR return 1
233 for success and 0 for failure.
235 \fIEVP_PKEY_size()\fR returns the maximum size of a signature in bytes.
237 The error codes can be obtained by ERR_get_error(3).
239 The \fBEVP\fR interface to digital signatures should almost always be used in
240 preference to the low level interfaces. This is because the code then becomes
241 transparent to the algorithm used and much more flexible.
243 Due to the link between message digests and public key algorithms the correct
244 digest algorithm must be used with the correct public key type. A list of
245 algorithms and associated public key algorithms appears in
248 When signing with DSA private keys the random number generator must be seeded
249 or the operation will fail. The random number generator does not need to be
250 seeded for RSA signatures.
252 The call to \fIEVP_SignFinal()\fR internally finalizes a copy of the digest context.
253 This means that calls to \fIEVP_SignUpdate()\fR and \fIEVP_SignFinal()\fR can be called
254 later to digest and sign additional data.
256 Since only a copy of the digest context is ever finalized the context must
257 be cleaned up after use by calling \fIEVP_MD_CTX_cleanup()\fR or a memory leak
260 Older versions of this documentation wrongly stated that calls to
261 \fIEVP_SignUpdate()\fR could not be made after calling \fIEVP_SignFinal()\fR.
264 EVP_DigestInit(3), err(3),
265 evp(3), hmac(3), md2(3),
266 md5(3), mdc2(3), ripemd(3),
269 \fIEVP_SignInit()\fR, \fIEVP_SignUpdate()\fR and \fIEVP_SignFinal()\fR are
270 available in all versions of SSLeay and OpenSSL.
272 \fIEVP_SignInit_ex()\fR was added in OpenSSL 0.9.7.
275 .IX Title "EVP_SignInit 3"
276 .IX Name "EVP_SignInit, EVP_SignUpdate, EVP_SignFinal - EVP signing functions"
280 .IX Header "SYNOPSIS"
282 .IX Header "DESCRIPTION"
284 .IX Header "RETURN VALUES"
290 .IX Header "SEE ALSO"