Merge from vendor branch OPENSSL:
[dragonfly.git] / secure / lib / libcrypto / man / EVP_DigestInit.3
CommitLineData
8b0cefbb
JR
1.\" Automatically generated by Pod::Man v1.37, Pod::Parser v1.14
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
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<>.
984263bc 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
JR
62.\"
63.\" For nroff, turn off justification. Always turn off hyphenation; it makes
64.\" way too many mistakes in technical documents.
65.hy 0
984263bc 66.if n .na
8b0cefbb
JR
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
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"
132.TH EVP_DigestInit 3 "2004-12-18" "0.9.7e" "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>
145.Ve
8b0cefbb 146.PP
984263bc
MD
147.Vb 2
148\& void EVP_MD_CTX_init(EVP_MD_CTX *ctx);
149\& EVP_MD_CTX *EVP_MD_CTX_create(void);
150.Ve
8b0cefbb 151.PP
984263bc
MD
152.Vb 4
153\& int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
154\& int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, unsigned int cnt);
155\& int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md,
156\& unsigned int *s);
157.Ve
8b0cefbb 158.PP
984263bc
MD
159.Vb 2
160\& int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx);
161\& void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);
162.Ve
8b0cefbb 163.PP
984263bc 164.Vb 1
8b0cefbb 165\& int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out,const EVP_MD_CTX *in);
984263bc 166.Ve
8b0cefbb 167.PP
984263bc
MD
168.Vb 3
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);
172.Ve
8b0cefbb 173.PP
984263bc 174.Vb 1
8b0cefbb 175\& int EVP_MD_CTX_copy(EVP_MD_CTX *out,EVP_MD_CTX *in);
984263bc 176.Ve
8b0cefbb 177.PP
984263bc
MD
178.Vb 1
179\& #define EVP_MAX_MD_SIZE (16+20) /* The SSLv3 md5+sha1 type */
180.Ve
8b0cefbb 181.PP
984263bc
MD
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
8b0cefbb 188.PP
984263bc
MD
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
8b0cefbb 195.PP
984263bc
MD
196.Vb 9
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);
206.Ve
8b0cefbb 207.PP
984263bc
MD
208.Vb 3
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
334memory leaks will occur.
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>
343.Ve
8b0cefbb 344.PP
984263bc
MD
345.Vb 8
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;
354.Ve
8b0cefbb 355.PP
984263bc
MD
356.Vb 1
357\& OpenSSL_add_all_digests();
358.Ve
8b0cefbb 359.PP
984263bc
MD
360.Vb 4
361\& if(!argv[1]) {
362\& printf("Usage: mdtest digestname\en");
363\& exit(1);
364\& }
365.Ve
8b0cefbb 366.PP
984263bc
MD
367.Vb 1
368\& md = EVP_get_digestbyname(argv[1]);
369.Ve
8b0cefbb 370.PP
984263bc
MD
371.Vb 4
372\& if(!md) {
373\& printf("Unknown message digest %s\en", argv[1]);
374\& exit(1);
375\& }
376.Ve
8b0cefbb 377.PP
984263bc
MD
378.Vb 6
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);
385.Ve
8b0cefbb 386.PP
984263bc
MD
387.Vb 4
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.