Merge branch 'vendor/OPENSSL'
[dragonfly.git] / secure / lib / libcrypto / man / EVP_DigestInit.3
CommitLineData
aac4ff6f 1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.32
8b0cefbb
JR
2.\"
3.\" Standard preamble:
4.\" ========================================================================
5.de Sh \" Subsection heading
984263bc
MD
6.br
7.if t .Sp
8.ne 5
9.PP
10\fB\\$1\fR
11.PP
12..
8b0cefbb 13.de Sp \" Vertical space (when we can't use .PP)
984263bc
MD
14.if t .sp .5v
15.if n .sp
16..
8b0cefbb 17.de Vb \" Begin verbatim text
984263bc
MD
18.ft CW
19.nf
20.ne \\$1
21..
8b0cefbb 22.de Ve \" End verbatim text
984263bc 23.ft R
984263bc
MD
24.fi
25..
8b0cefbb
JR
26.\" Set up some character translations and predefined strings. \*(-- will
27.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
aac4ff6f
PA
28.\" double quote, and \*(R" will give a right double quote. | will give a
29.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used to
30.\" do unbreakable dashes and therefore won't be available. \*(C` and \*(C'
31.\" expand to `' in nroff, nothing in troff, for use with C<>.
32.tr \(*W-|\(bv\*(Tr
8b0cefbb 33.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
984263bc 34.ie n \{\
8b0cefbb
JR
35. ds -- \(*W-
36. ds PI pi
37. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
38. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
39. ds L" ""
40. ds R" ""
41. ds C` ""
42. ds C' ""
984263bc
MD
43'br\}
44.el\{\
8b0cefbb
JR
45. ds -- \|\(em\|
46. ds PI \(*p
47. ds L" ``
48. ds R" ''
984263bc 49'br\}
8b0cefbb
JR
50.\"
51.\" If the F register is turned on, we'll generate index entries on stderr for
52.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index
53.\" entries marked with X<> in POD. Of course, you'll have to process the
54.\" output yourself in some meaningful fashion.
55.if \nF \{\
56. de IX
57. tm Index:\\$1\t\\n%\t"\\$2"
984263bc 58..
8b0cefbb
JR
59. nr % 0
60. rr F
984263bc 61.\}
8b0cefbb 62.\"
aac4ff6f
PA
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
66.if n .na
67.\"
8b0cefbb
JR
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
984263bc 71.if n \{\
8b0cefbb
JR
72. ds #H 0
73. ds #V .8m
74. ds #F .3m
75. ds #[ \f1
76. ds #] \fP
984263bc
MD
77.\}
78.if t \{\
8b0cefbb
JR
79. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
80. ds #V .6m
81. ds #F 0
82. ds #[ \&
83. ds #] \&
984263bc 84.\}
8b0cefbb 85. \" simple accents for nroff and troff
984263bc 86.if n \{\
8b0cefbb
JR
87. ds ' \&
88. ds ` \&
89. ds ^ \&
90. ds , \&
91. ds ~ ~
92. ds /
984263bc
MD
93.\}
94.if t \{\
8b0cefbb
JR
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'
984263bc 101.\}
8b0cefbb 102. \" troff and (daisy-wheel) nroff accents
984263bc
MD
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
8b0cefbb 112. \" corrections for vroff
984263bc
MD
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'
8b0cefbb 115. \" for low resolution devices (crt and lpr)
984263bc
MD
116.if \n(.H>23 .if \n(.V>19 \
117\{\
8b0cefbb
JR
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
984263bc
MD
127.\}
128.rm #[ #] #H #V #F C
8b0cefbb
JR
129.\" ========================================================================
130.\"
131.IX Title "EVP_DigestInit 3"
18ed9402 132.TH EVP_DigestInit 3 "2008-09-27" "0.9.8i" "OpenSSL"
984263bc
MD
133.SH "NAME"
134EVP_MD_CTX_init, EVP_MD_CTX_create, EVP_DigestInit_ex, EVP_DigestUpdate,
74dab6c2
JR
135EVP_DigestFinal_ex, EVP_MD_CTX_cleanup, EVP_MD_CTX_destroy, EVP_MAX_MD_SIZE,
136EVP_MD_CTX_copy_ex, EVP_MD_CTX_copy, EVP_MD_type, EVP_MD_pkey_type, EVP_MD_size,
984263bc
MD
137EVP_MD_block_size, EVP_MD_CTX_md, EVP_MD_CTX_size, EVP_MD_CTX_block_size, EVP_MD_CTX_type,
138EVP_md_null, EVP_md2, EVP_md5, EVP_sha, EVP_sha1, EVP_dss, EVP_dss1, EVP_mdc2,
139EVP_ripemd160, EVP_get_digestbyname, EVP_get_digestbynid, EVP_get_digestbyobj \-
74dab6c2 140EVP digest routines
984263bc 141.SH "SYNOPSIS"
8b0cefbb 142.IX Header "SYNOPSIS"
984263bc
MD
143.Vb 1
144\& #include <openssl/evp.h>
aac4ff6f
PA
145.Ve
146.PP
147.Vb 2
984263bc
MD
148\& void EVP_MD_CTX_init(EVP_MD_CTX *ctx);
149\& EVP_MD_CTX *EVP_MD_CTX_create(void);
aac4ff6f
PA
150.Ve
151.PP
152.Vb 4
984263bc 153\& int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
a561f9ff 154\& int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);
984263bc
MD
155\& int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md,
156\& unsigned int *s);
aac4ff6f
PA
157.Ve
158.PP
159.Vb 2
984263bc
MD
160\& int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx);
161\& void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);
aac4ff6f
PA
162.Ve
163.PP
164.Vb 1
165\& int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out,const EVP_MD_CTX *in);
166.Ve
167.PP
168.Vb 3
984263bc
MD
169\& int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
170\& int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md,
171\& unsigned int *s);
aac4ff6f
PA
172.Ve
173.PP
174.Vb 1
175\& int EVP_MD_CTX_copy(EVP_MD_CTX *out,EVP_MD_CTX *in);
176.Ve
177.PP
178.Vb 1
984263bc 179\& #define EVP_MAX_MD_SIZE (16+20) /* The SSLv3 md5+sha1 type */
aac4ff6f
PA
180.Ve
181.PP
182.Vb 4
183\& #define EVP_MD_type(e) ((e)->type)
184\& #define EVP_MD_pkey_type(e) ((e)->pkey_type)
185\& #define EVP_MD_size(e) ((e)->md_size)
186\& #define EVP_MD_block_size(e) ((e)->block_size)
187.Ve
188.PP
189.Vb 4
190\& #define EVP_MD_CTX_md(e) (e)->digest)
191\& #define EVP_MD_CTX_size(e) EVP_MD_size((e)->digest)
192\& #define EVP_MD_CTX_block_size(e) EVP_MD_block_size((e)->digest)
193\& #define EVP_MD_CTX_type(e) EVP_MD_type((e)->digest)
194.Ve
195.PP
196.Vb 9
984263bc
MD
197\& const EVP_MD *EVP_md_null(void);
198\& const EVP_MD *EVP_md2(void);
199\& const EVP_MD *EVP_md5(void);
200\& const EVP_MD *EVP_sha(void);
201\& const EVP_MD *EVP_sha1(void);
202\& const EVP_MD *EVP_dss(void);
203\& const EVP_MD *EVP_dss1(void);
204\& const EVP_MD *EVP_mdc2(void);
205\& const EVP_MD *EVP_ripemd160(void);
aac4ff6f
PA
206.Ve
207.PP
208.Vb 3
984263bc
MD
209\& const EVP_MD *EVP_get_digestbyname(const char *name);
210\& #define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a))
211\& #define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a))
212.Ve
213.SH "DESCRIPTION"
8b0cefbb
JR
214.IX Header "DESCRIPTION"
215The \s-1EVP\s0 digest routines are a high level interface to message digests.
984263bc 216.PP
8b0cefbb 217\&\fIEVP_MD_CTX_init()\fR initializes digest contet \fBctx\fR.
984263bc 218.PP
8b0cefbb 219\&\fIEVP_MD_CTX_create()\fR allocates, initializes and returns a digest contet.
984263bc 220.PP
8b0cefbb
JR
221\&\fIEVP_DigestInit_ex()\fR sets up digest context \fBctx\fR to use a digest
222\&\fBtype\fR from \s-1ENGINE\s0 \fBimpl\fR. \fBctx\fR must be initialized before calling this
984263bc 223function. \fBtype\fR will typically be supplied by a functionsuch as \fIEVP_sha1()\fR.
8b0cefbb 224If \fBimpl\fR is \s-1NULL\s0 then the default implementation of digest \fBtype\fR is used.
984263bc 225.PP
8b0cefbb 226\&\fIEVP_DigestUpdate()\fR hashes \fBcnt\fR bytes of data at \fBd\fR into the
984263bc
MD
227digest context \fBctx\fR. This function can be called several times on the
228same \fBctx\fR to hash additional data.
229.PP
8b0cefbb
JR
230\&\fIEVP_DigestFinal_ex()\fR retrieves the digest value from \fBctx\fR and places
231it in \fBmd\fR. If the \fBs\fR parameter is not \s-1NULL\s0 then the number of
984263bc 232bytes of data written (i.e. the length of the digest) will be written
8b0cefbb 233to the integer at \fBs\fR, at most \fB\s-1EVP_MAX_MD_SIZE\s0\fR bytes will be written.
984263bc
MD
234After calling \fIEVP_DigestFinal_ex()\fR no additional calls to \fIEVP_DigestUpdate()\fR
235can be made, but \fIEVP_DigestInit_ex()\fR can be called to initialize a new
236digest operation.
237.PP
8b0cefbb 238\&\fIEVP_MD_CTX_cleanup()\fR cleans up digest context \fBctx\fR, it should be called
984263bc
MD
239after a digest context is no longer needed.
240.PP
8b0cefbb 241\&\fIEVP_MD_CTX_destroy()\fR cleans up digest context \fBctx\fR and frees up the
984263bc
MD
242space allocated to it, it should be called only on a context created
243using \fIEVP_MD_CTX_create()\fR.
244.PP
8b0cefbb
JR
245\&\fIEVP_MD_CTX_copy_ex()\fR can be used to copy the message digest state from
246\&\fBin\fR to \fBout\fR. This is useful if large amounts of data are to be
984263bc
MD
247hashed which only differ in the last few bytes. \fBout\fR must be initialized
248before calling this function.
249.PP
8b0cefbb 250\&\fIEVP_DigestInit()\fR behaves in the same way as \fIEVP_DigestInit_ex()\fR except
984263bc
MD
251the passed context \fBctx\fR does not have to be initialized, and it always
252uses the default digest implementation.
253.PP
8b0cefbb 254\&\fIEVP_DigestFinal()\fR is similar to \fIEVP_DigestFinal_ex()\fR except the digest
984263bc
MD
255contet \fBctx\fR is automatically cleaned up.
256.PP
8b0cefbb
JR
257\&\fIEVP_MD_CTX_copy()\fR is similar to \fIEVP_MD_CTX_copy_ex()\fR except the destination
258\&\fBout\fR does not have to be initialized.
984263bc 259.PP
8b0cefbb
JR
260\&\fIEVP_MD_size()\fR and \fIEVP_MD_CTX_size()\fR return the size of the message digest
261when passed an \fB\s-1EVP_MD\s0\fR or an \fB\s-1EVP_MD_CTX\s0\fR structure, i.e. the size of the
984263bc
MD
262hash.
263.PP
8b0cefbb
JR
264\&\fIEVP_MD_block_size()\fR and \fIEVP_MD_CTX_block_size()\fR return the block size of the
265message digest when passed an \fB\s-1EVP_MD\s0\fR or an \fB\s-1EVP_MD_CTX\s0\fR structure.
984263bc 266.PP
8b0cefbb
JR
267\&\fIEVP_MD_type()\fR and \fIEVP_MD_CTX_type()\fR return the \s-1NID\s0 of the \s-1OBJECT\s0 \s-1IDENTIFIER\s0
268representing the given message digest when passed an \fB\s-1EVP_MD\s0\fR structure.
269For example EVP_MD_type(\fIEVP_sha1()\fR) returns \fBNID_sha1\fR. This function is
270normally used when setting \s-1ASN1\s0 OIDs.
984263bc 271.PP
8b0cefbb
JR
272\&\fIEVP_MD_CTX_md()\fR returns the \fB\s-1EVP_MD\s0\fR structure corresponding to the passed
273\&\fB\s-1EVP_MD_CTX\s0\fR.
984263bc 274.PP
8b0cefbb
JR
275\&\fIEVP_MD_pkey_type()\fR returns the \s-1NID\s0 of the public key signing algorithm associated
276with this digest. For example \fIEVP_sha1()\fR is associated with \s-1RSA\s0 so this will
984263bc
MD
277return \fBNID_sha1WithRSAEncryption\fR. This \*(L"link\*(R" between digests and signature
278algorithms may not be retained in future versions of OpenSSL.
279.PP
8b0cefbb
JR
280\&\fIEVP_md2()\fR, \fIEVP_md5()\fR, \fIEVP_sha()\fR, \fIEVP_sha1()\fR, \fIEVP_mdc2()\fR and \fIEVP_ripemd160()\fR
281return \fB\s-1EVP_MD\s0\fR structures for the \s-1MD2\s0, \s-1MD5\s0, \s-1SHA\s0, \s-1SHA1\s0, \s-1MDC2\s0 and \s-1RIPEMD160\s0 digest
282algorithms respectively. The associated signature algorithm is \s-1RSA\s0 in each case.
984263bc 283.PP
8b0cefbb
JR
284\&\fIEVP_dss()\fR and \fIEVP_dss1()\fR return \fB\s-1EVP_MD\s0\fR structures for \s-1SHA\s0 and \s-1SHA1\s0 digest
285algorithms but using \s-1DSS\s0 (\s-1DSA\s0) for the signature algorithm.
984263bc 286.PP
8b0cefbb 287\&\fIEVP_md_null()\fR is a \*(L"null\*(R" message digest that does nothing: i.e. the hash it
984263bc
MD
288returns is of zero length.
289.PP
8b0cefbb
JR
290\&\fIEVP_get_digestbyname()\fR, \fIEVP_get_digestbynid()\fR and \fIEVP_get_digestbyobj()\fR
291return an \fB\s-1EVP_MD\s0\fR structure when passed a digest name, a digest \s-1NID\s0 or
292an \s-1ASN1_OBJECT\s0 structure respectively. The digest table must be initialized
984263bc
MD
293using, for example, \fIOpenSSL_add_all_digests()\fR for these functions to work.
294.SH "RETURN VALUES"
8b0cefbb
JR
295.IX Header "RETURN VALUES"
296\&\fIEVP_DigestInit_ex()\fR, \fIEVP_DigestUpdate()\fR and \fIEVP_DigestFinal_ex()\fR return 1 for
984263bc
MD
297success and 0 for failure.
298.PP
8b0cefbb 299\&\fIEVP_MD_CTX_copy_ex()\fR returns 1 if successful or 0 for failure.
984263bc 300.PP
8b0cefbb
JR
301\&\fIEVP_MD_type()\fR, \fIEVP_MD_pkey_type()\fR and \fIEVP_MD_type()\fR return the \s-1NID\s0 of the
302corresponding \s-1OBJECT\s0 \s-1IDENTIFIER\s0 or NID_undef if none exists.
984263bc 303.PP
8b0cefbb
JR
304\&\fIEVP_MD_size()\fR, \fIEVP_MD_block_size()\fR, EVP_MD_CTX_size(e), \fIEVP_MD_size()\fR,
305\&\fIEVP_MD_CTX_block_size()\fR and \fIEVP_MD_block_size()\fR return the digest or block
984263bc
MD
306size in bytes.
307.PP
8b0cefbb
JR
308\&\fIEVP_md_null()\fR, \fIEVP_md2()\fR, \fIEVP_md5()\fR, \fIEVP_sha()\fR, \fIEVP_sha1()\fR, \fIEVP_dss()\fR,
309\&\fIEVP_dss1()\fR, \fIEVP_mdc2()\fR and \fIEVP_ripemd160()\fR return pointers to the
310corresponding \s-1EVP_MD\s0 structures.
984263bc 311.PP
8b0cefbb
JR
312\&\fIEVP_get_digestbyname()\fR, \fIEVP_get_digestbynid()\fR and \fIEVP_get_digestbyobj()\fR
313return either an \fB\s-1EVP_MD\s0\fR structure or \s-1NULL\s0 if an error occurs.
984263bc 314.SH "NOTES"
8b0cefbb
JR
315.IX Header "NOTES"
316The \fB\s-1EVP\s0\fR interface to message digests should almost always be used in
984263bc
MD
317preference to the low level interfaces. This is because the code then becomes
318transparent to the digest used and much more flexible.
319.PP
8b0cefbb 320\&\s-1SHA1\s0 is the digest of choice for new applications. The other digest algorithms
984263bc
MD
321are still in common use.
322.PP
323For most applications the \fBimpl\fR parameter to \fIEVP_DigestInit_ex()\fR will be
8b0cefbb 324set to \s-1NULL\s0 to use the default digest implementation.
984263bc
MD
325.PP
326The functions \fIEVP_DigestInit()\fR, \fIEVP_DigestFinal()\fR and \fIEVP_MD_CTX_copy()\fR are
327obsolete but are retained to maintain compatibility with existing code. New
328applications should use \fIEVP_DigestInit_ex()\fR, \fIEVP_DigestFinal_ex()\fR and
8b0cefbb 329\&\fIEVP_MD_CTX_copy_ex()\fR because they can efficiently reuse a digest context
984263bc
MD
330instead of initializing and cleaning it up on each call and allow non default
331implementations of digests to be specified.
332.PP
333In OpenSSL 0.9.7 and later if digest contexts are not cleaned up after use
aac4ff6f 334memory leaks will occur.
984263bc 335.SH "EXAMPLE"
8b0cefbb 336.IX Header "EXAMPLE"
984263bc
MD
337This example digests the data \*(L"Test Message\en\*(R" and \*(L"Hello World\en\*(R", using the
338digest name passed on the command line.
339.PP
340.Vb 2
341\& #include <stdio.h>
342\& #include <openssl/evp.h>
aac4ff6f
PA
343.Ve
344.PP
345.Vb 8
984263bc
MD
346\& main(int argc, char *argv[])
347\& {
348\& EVP_MD_CTX mdctx;
349\& const EVP_MD *md;
350\& char mess1[] = "Test Message\en";
351\& char mess2[] = "Hello World\en";
352\& unsigned char md_value[EVP_MAX_MD_SIZE];
353\& int md_len, i;
aac4ff6f
PA
354.Ve
355.PP
356.Vb 1
984263bc 357\& OpenSSL_add_all_digests();
aac4ff6f
PA
358.Ve
359.PP
360.Vb 4
984263bc
MD
361\& if(!argv[1]) {
362\& printf("Usage: mdtest digestname\en");
363\& exit(1);
364\& }
aac4ff6f
PA
365.Ve
366.PP
367.Vb 1
984263bc 368\& md = EVP_get_digestbyname(argv[1]);
aac4ff6f
PA
369.Ve
370.PP
371.Vb 4
984263bc
MD
372\& if(!md) {
373\& printf("Unknown message digest %s\en", argv[1]);
374\& exit(1);
375\& }
aac4ff6f
PA
376.Ve
377.PP
378.Vb 6
984263bc
MD
379\& EVP_MD_CTX_init(&mdctx);
380\& EVP_DigestInit_ex(&mdctx, md, NULL);
381\& EVP_DigestUpdate(&mdctx, mess1, strlen(mess1));
382\& EVP_DigestUpdate(&mdctx, mess2, strlen(mess2));
383\& EVP_DigestFinal_ex(&mdctx, md_value, &md_len);
384\& EVP_MD_CTX_cleanup(&mdctx);
aac4ff6f
PA
385.Ve
386.PP
387.Vb 4
984263bc
MD
388\& printf("Digest is: ");
389\& for(i = 0; i < md_len; i++) printf("%02x", md_value[i]);
390\& printf("\en");
391\& }
392.Ve
393.SH "BUGS"
8b0cefbb 394.IX Header "BUGS"
984263bc 395The link between digests and signing algorithms results in a situation where
8b0cefbb 396\&\fIEVP_sha1()\fR must be used with \s-1RSA\s0 and \fIEVP_dss1()\fR must be used with \s-1DSS\s0
984263bc
MD
397even though they are identical digests.
398.SH "SEE ALSO"
8b0cefbb
JR
399.IX Header "SEE ALSO"
400\&\fIevp\fR\|(3), \fIhmac\fR\|(3), \fImd2\fR\|(3),
401\&\fImd5\fR\|(3), \fImdc2\fR\|(3), \fIripemd\fR\|(3),
402\&\fIsha\fR\|(3), \fIdgst\fR\|(1)
984263bc 403.SH "HISTORY"
8b0cefbb
JR
404.IX Header "HISTORY"
405\&\fIEVP_DigestInit()\fR, \fIEVP_DigestUpdate()\fR and \fIEVP_DigestFinal()\fR are
984263bc
MD
406available in all versions of SSLeay and OpenSSL.
407.PP
8b0cefbb
JR
408\&\fIEVP_MD_CTX_init()\fR, \fIEVP_MD_CTX_create()\fR, \fIEVP_MD_CTX_copy_ex()\fR,
409\&\fIEVP_MD_CTX_cleanup()\fR, \fIEVP_MD_CTX_destroy()\fR, \fIEVP_DigestInit_ex()\fR
984263bc
MD
410and \fIEVP_DigestFinal_ex()\fR were added in OpenSSL 0.9.7.
411.PP
8b0cefbb
JR
412\&\fIEVP_md_null()\fR, \fIEVP_md2()\fR, \fIEVP_md5()\fR, \fIEVP_sha()\fR, \fIEVP_sha1()\fR,
413\&\fIEVP_dss()\fR, \fIEVP_dss1()\fR, \fIEVP_mdc2()\fR and \fIEVP_ripemd160()\fR were
414changed to return truely const \s-1EVP_MD\s0 * in OpenSSL 0.9.7.