Merge from vendor branch OPENSSL:
[dragonfly.git] / secure / lib / libcrypto / man / EVP_DigestInit.3
CommitLineData
2eaa1526 1.\" Automatically generated by Pod::Man 2.12 (Pod::Simple 3.05)
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
2eaa1526
PA
28.\" double quote, and \*(R" will give a right double quote. \*(C+ will
29.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
30.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
31.\" nothing in troff, for use with C<>.
32.tr \(*W-
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.\"
8b0cefbb
JR
63.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
64.\" Fear. Run. Save yourself. No user-serviceable parts.
65. \" fudge factors for nroff and troff
984263bc 66.if n \{\
8b0cefbb
JR
67. ds #H 0
68. ds #V .8m
69. ds #F .3m
70. ds #[ \f1
71. ds #] \fP
984263bc
MD
72.\}
73.if t \{\
8b0cefbb
JR
74. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75. ds #V .6m
76. ds #F 0
77. ds #[ \&
78. ds #] \&
984263bc 79.\}
8b0cefbb 80. \" simple accents for nroff and troff
984263bc 81.if n \{\
8b0cefbb
JR
82. ds ' \&
83. ds ` \&
84. ds ^ \&
85. ds , \&
86. ds ~ ~
87. ds /
984263bc
MD
88.\}
89.if t \{\
8b0cefbb
JR
90. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
984263bc 96.\}
8b0cefbb 97. \" troff and (daisy-wheel) nroff accents
984263bc
MD
98.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105.ds ae a\h'-(\w'a'u*4/10)'e
106.ds Ae A\h'-(\w'A'u*4/10)'E
8b0cefbb 107. \" corrections for vroff
984263bc
MD
108.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
8b0cefbb 110. \" for low resolution devices (crt and lpr)
984263bc
MD
111.if \n(.H>23 .if \n(.V>19 \
112\{\
8b0cefbb
JR
113. ds : e
114. ds 8 ss
115. ds o a
116. ds d- d\h'-1'\(ga
117. ds D- D\h'-1'\(hy
118. ds th \o'bp'
119. ds Th \o'LP'
120. ds ae ae
121. ds Ae AE
984263bc
MD
122.\}
123.rm #[ #] #H #V #F C
8b0cefbb
JR
124.\" ========================================================================
125.\"
126.IX Title "EVP_DigestInit 3"
2eaa1526
PA
127.TH EVP_DigestInit 3 "2007-10-24" "0.9.8g" "OpenSSL"
128.\" For nroff, turn off justification. Always turn off hyphenation; it makes
129.\" way too many mistakes in technical documents.
130.if n .ad l
131.nh
984263bc
MD
132.SH "NAME"
133EVP_MD_CTX_init, EVP_MD_CTX_create, EVP_DigestInit_ex, EVP_DigestUpdate,
74dab6c2
JR
134EVP_DigestFinal_ex, EVP_MD_CTX_cleanup, EVP_MD_CTX_destroy, EVP_MAX_MD_SIZE,
135EVP_MD_CTX_copy_ex, EVP_MD_CTX_copy, EVP_MD_type, EVP_MD_pkey_type, EVP_MD_size,
984263bc
MD
136EVP_MD_block_size, EVP_MD_CTX_md, EVP_MD_CTX_size, EVP_MD_CTX_block_size, EVP_MD_CTX_type,
137EVP_md_null, EVP_md2, EVP_md5, EVP_sha, EVP_sha1, EVP_dss, EVP_dss1, EVP_mdc2,
138EVP_ripemd160, EVP_get_digestbyname, EVP_get_digestbynid, EVP_get_digestbyobj \-
74dab6c2 139EVP digest routines
984263bc 140.SH "SYNOPSIS"
8b0cefbb 141.IX Header "SYNOPSIS"
984263bc
MD
142.Vb 1
143\& #include <openssl/evp.h>
2eaa1526 144\&
984263bc
MD
145\& void EVP_MD_CTX_init(EVP_MD_CTX *ctx);
146\& EVP_MD_CTX *EVP_MD_CTX_create(void);
2eaa1526 147\&
984263bc 148\& int EVP_DigestInit_ex(EVP_MD_CTX *ctx, const EVP_MD *type, ENGINE *impl);
a561f9ff 149\& int EVP_DigestUpdate(EVP_MD_CTX *ctx, const void *d, size_t cnt);
984263bc
MD
150\& int EVP_DigestFinal_ex(EVP_MD_CTX *ctx, unsigned char *md,
151\& unsigned int *s);
2eaa1526 152\&
984263bc
MD
153\& int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx);
154\& void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);
2eaa1526
PA
155\&
156\& int EVP_MD_CTX_copy_ex(EVP_MD_CTX *out,const EVP_MD_CTX *in);
157\&
984263bc
MD
158\& int EVP_DigestInit(EVP_MD_CTX *ctx, const EVP_MD *type);
159\& int EVP_DigestFinal(EVP_MD_CTX *ctx, unsigned char *md,
160\& unsigned int *s);
2eaa1526
PA
161\&
162\& int EVP_MD_CTX_copy(EVP_MD_CTX *out,EVP_MD_CTX *in);
163\&
984263bc 164\& #define EVP_MAX_MD_SIZE (16+20) /* The SSLv3 md5+sha1 type */
2eaa1526
PA
165\&
166\&
167\& #define EVP_MD_type(e) ((e)\->type)
168\& #define EVP_MD_pkey_type(e) ((e)\->pkey_type)
169\& #define EVP_MD_size(e) ((e)\->md_size)
170\& #define EVP_MD_block_size(e) ((e)\->block_size)
171\&
172\& #define EVP_MD_CTX_md(e) (e)\->digest)
173\& #define EVP_MD_CTX_size(e) EVP_MD_size((e)\->digest)
174\& #define EVP_MD_CTX_block_size(e) EVP_MD_block_size((e)\->digest)
175\& #define EVP_MD_CTX_type(e) EVP_MD_type((e)\->digest)
176\&
984263bc
MD
177\& const EVP_MD *EVP_md_null(void);
178\& const EVP_MD *EVP_md2(void);
179\& const EVP_MD *EVP_md5(void);
180\& const EVP_MD *EVP_sha(void);
181\& const EVP_MD *EVP_sha1(void);
182\& const EVP_MD *EVP_dss(void);
183\& const EVP_MD *EVP_dss1(void);
184\& const EVP_MD *EVP_mdc2(void);
185\& const EVP_MD *EVP_ripemd160(void);
2eaa1526 186\&
984263bc
MD
187\& const EVP_MD *EVP_get_digestbyname(const char *name);
188\& #define EVP_get_digestbynid(a) EVP_get_digestbyname(OBJ_nid2sn(a))
189\& #define EVP_get_digestbyobj(a) EVP_get_digestbynid(OBJ_obj2nid(a))
190.Ve
191.SH "DESCRIPTION"
8b0cefbb
JR
192.IX Header "DESCRIPTION"
193The \s-1EVP\s0 digest routines are a high level interface to message digests.
984263bc 194.PP
8b0cefbb 195\&\fIEVP_MD_CTX_init()\fR initializes digest contet \fBctx\fR.
984263bc 196.PP
8b0cefbb 197\&\fIEVP_MD_CTX_create()\fR allocates, initializes and returns a digest contet.
984263bc 198.PP
8b0cefbb
JR
199\&\fIEVP_DigestInit_ex()\fR sets up digest context \fBctx\fR to use a digest
200\&\fBtype\fR from \s-1ENGINE\s0 \fBimpl\fR. \fBctx\fR must be initialized before calling this
984263bc 201function. \fBtype\fR will typically be supplied by a functionsuch as \fIEVP_sha1()\fR.
8b0cefbb 202If \fBimpl\fR is \s-1NULL\s0 then the default implementation of digest \fBtype\fR is used.
984263bc 203.PP
8b0cefbb 204\&\fIEVP_DigestUpdate()\fR hashes \fBcnt\fR bytes of data at \fBd\fR into the
984263bc
MD
205digest context \fBctx\fR. This function can be called several times on the
206same \fBctx\fR to hash additional data.
207.PP
8b0cefbb
JR
208\&\fIEVP_DigestFinal_ex()\fR retrieves the digest value from \fBctx\fR and places
209it in \fBmd\fR. If the \fBs\fR parameter is not \s-1NULL\s0 then the number of
984263bc 210bytes of data written (i.e. the length of the digest) will be written
8b0cefbb 211to the integer at \fBs\fR, at most \fB\s-1EVP_MAX_MD_SIZE\s0\fR bytes will be written.
984263bc
MD
212After calling \fIEVP_DigestFinal_ex()\fR no additional calls to \fIEVP_DigestUpdate()\fR
213can be made, but \fIEVP_DigestInit_ex()\fR can be called to initialize a new
214digest operation.
215.PP
8b0cefbb 216\&\fIEVP_MD_CTX_cleanup()\fR cleans up digest context \fBctx\fR, it should be called
984263bc
MD
217after a digest context is no longer needed.
218.PP
8b0cefbb 219\&\fIEVP_MD_CTX_destroy()\fR cleans up digest context \fBctx\fR and frees up the
984263bc
MD
220space allocated to it, it should be called only on a context created
221using \fIEVP_MD_CTX_create()\fR.
222.PP
8b0cefbb
JR
223\&\fIEVP_MD_CTX_copy_ex()\fR can be used to copy the message digest state from
224\&\fBin\fR to \fBout\fR. This is useful if large amounts of data are to be
984263bc
MD
225hashed which only differ in the last few bytes. \fBout\fR must be initialized
226before calling this function.
227.PP
8b0cefbb 228\&\fIEVP_DigestInit()\fR behaves in the same way as \fIEVP_DigestInit_ex()\fR except
984263bc
MD
229the passed context \fBctx\fR does not have to be initialized, and it always
230uses the default digest implementation.
231.PP
8b0cefbb 232\&\fIEVP_DigestFinal()\fR is similar to \fIEVP_DigestFinal_ex()\fR except the digest
984263bc
MD
233contet \fBctx\fR is automatically cleaned up.
234.PP
8b0cefbb
JR
235\&\fIEVP_MD_CTX_copy()\fR is similar to \fIEVP_MD_CTX_copy_ex()\fR except the destination
236\&\fBout\fR does not have to be initialized.
984263bc 237.PP
8b0cefbb
JR
238\&\fIEVP_MD_size()\fR and \fIEVP_MD_CTX_size()\fR return the size of the message digest
239when 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
240hash.
241.PP
8b0cefbb
JR
242\&\fIEVP_MD_block_size()\fR and \fIEVP_MD_CTX_block_size()\fR return the block size of the
243message digest when passed an \fB\s-1EVP_MD\s0\fR or an \fB\s-1EVP_MD_CTX\s0\fR structure.
984263bc 244.PP
8b0cefbb
JR
245\&\fIEVP_MD_type()\fR and \fIEVP_MD_CTX_type()\fR return the \s-1NID\s0 of the \s-1OBJECT\s0 \s-1IDENTIFIER\s0
246representing the given message digest when passed an \fB\s-1EVP_MD\s0\fR structure.
247For example EVP_MD_type(\fIEVP_sha1()\fR) returns \fBNID_sha1\fR. This function is
248normally used when setting \s-1ASN1\s0 OIDs.
984263bc 249.PP
8b0cefbb
JR
250\&\fIEVP_MD_CTX_md()\fR returns the \fB\s-1EVP_MD\s0\fR structure corresponding to the passed
251\&\fB\s-1EVP_MD_CTX\s0\fR.
984263bc 252.PP
8b0cefbb
JR
253\&\fIEVP_MD_pkey_type()\fR returns the \s-1NID\s0 of the public key signing algorithm associated
254with this digest. For example \fIEVP_sha1()\fR is associated with \s-1RSA\s0 so this will
984263bc
MD
255return \fBNID_sha1WithRSAEncryption\fR. This \*(L"link\*(R" between digests and signature
256algorithms may not be retained in future versions of OpenSSL.
257.PP
8b0cefbb
JR
258\&\fIEVP_md2()\fR, \fIEVP_md5()\fR, \fIEVP_sha()\fR, \fIEVP_sha1()\fR, \fIEVP_mdc2()\fR and \fIEVP_ripemd160()\fR
259return \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
260algorithms respectively. The associated signature algorithm is \s-1RSA\s0 in each case.
984263bc 261.PP
8b0cefbb
JR
262\&\fIEVP_dss()\fR and \fIEVP_dss1()\fR return \fB\s-1EVP_MD\s0\fR structures for \s-1SHA\s0 and \s-1SHA1\s0 digest
263algorithms but using \s-1DSS\s0 (\s-1DSA\s0) for the signature algorithm.
984263bc 264.PP
8b0cefbb 265\&\fIEVP_md_null()\fR is a \*(L"null\*(R" message digest that does nothing: i.e. the hash it
984263bc
MD
266returns is of zero length.
267.PP
8b0cefbb
JR
268\&\fIEVP_get_digestbyname()\fR, \fIEVP_get_digestbynid()\fR and \fIEVP_get_digestbyobj()\fR
269return an \fB\s-1EVP_MD\s0\fR structure when passed a digest name, a digest \s-1NID\s0 or
270an \s-1ASN1_OBJECT\s0 structure respectively. The digest table must be initialized
984263bc
MD
271using, for example, \fIOpenSSL_add_all_digests()\fR for these functions to work.
272.SH "RETURN VALUES"
8b0cefbb
JR
273.IX Header "RETURN VALUES"
274\&\fIEVP_DigestInit_ex()\fR, \fIEVP_DigestUpdate()\fR and \fIEVP_DigestFinal_ex()\fR return 1 for
984263bc
MD
275success and 0 for failure.
276.PP
8b0cefbb 277\&\fIEVP_MD_CTX_copy_ex()\fR returns 1 if successful or 0 for failure.
984263bc 278.PP
8b0cefbb
JR
279\&\fIEVP_MD_type()\fR, \fIEVP_MD_pkey_type()\fR and \fIEVP_MD_type()\fR return the \s-1NID\s0 of the
280corresponding \s-1OBJECT\s0 \s-1IDENTIFIER\s0 or NID_undef if none exists.
984263bc 281.PP
8b0cefbb
JR
282\&\fIEVP_MD_size()\fR, \fIEVP_MD_block_size()\fR, EVP_MD_CTX_size(e), \fIEVP_MD_size()\fR,
283\&\fIEVP_MD_CTX_block_size()\fR and \fIEVP_MD_block_size()\fR return the digest or block
984263bc
MD
284size in bytes.
285.PP
8b0cefbb
JR
286\&\fIEVP_md_null()\fR, \fIEVP_md2()\fR, \fIEVP_md5()\fR, \fIEVP_sha()\fR, \fIEVP_sha1()\fR, \fIEVP_dss()\fR,
287\&\fIEVP_dss1()\fR, \fIEVP_mdc2()\fR and \fIEVP_ripemd160()\fR return pointers to the
288corresponding \s-1EVP_MD\s0 structures.
984263bc 289.PP
8b0cefbb
JR
290\&\fIEVP_get_digestbyname()\fR, \fIEVP_get_digestbynid()\fR and \fIEVP_get_digestbyobj()\fR
291return either an \fB\s-1EVP_MD\s0\fR structure or \s-1NULL\s0 if an error occurs.
984263bc 292.SH "NOTES"
8b0cefbb
JR
293.IX Header "NOTES"
294The \fB\s-1EVP\s0\fR interface to message digests should almost always be used in
984263bc
MD
295preference to the low level interfaces. This is because the code then becomes
296transparent to the digest used and much more flexible.
297.PP
8b0cefbb 298\&\s-1SHA1\s0 is the digest of choice for new applications. The other digest algorithms
984263bc
MD
299are still in common use.
300.PP
301For most applications the \fBimpl\fR parameter to \fIEVP_DigestInit_ex()\fR will be
8b0cefbb 302set to \s-1NULL\s0 to use the default digest implementation.
984263bc
MD
303.PP
304The functions \fIEVP_DigestInit()\fR, \fIEVP_DigestFinal()\fR and \fIEVP_MD_CTX_copy()\fR are
305obsolete but are retained to maintain compatibility with existing code. New
306applications should use \fIEVP_DigestInit_ex()\fR, \fIEVP_DigestFinal_ex()\fR and
8b0cefbb 307\&\fIEVP_MD_CTX_copy_ex()\fR because they can efficiently reuse a digest context
984263bc
MD
308instead of initializing and cleaning it up on each call and allow non default
309implementations of digests to be specified.
310.PP
311In OpenSSL 0.9.7 and later if digest contexts are not cleaned up after use
2eaa1526 312memory leaks will occur.
984263bc 313.SH "EXAMPLE"
8b0cefbb 314.IX Header "EXAMPLE"
984263bc
MD
315This example digests the data \*(L"Test Message\en\*(R" and \*(L"Hello World\en\*(R", using the
316digest name passed on the command line.
317.PP
318.Vb 2
319\& #include <stdio.h>
320\& #include <openssl/evp.h>
2eaa1526 321\&
984263bc
MD
322\& main(int argc, char *argv[])
323\& {
324\& EVP_MD_CTX mdctx;
325\& const EVP_MD *md;
326\& char mess1[] = "Test Message\en";
327\& char mess2[] = "Hello World\en";
328\& unsigned char md_value[EVP_MAX_MD_SIZE];
329\& int md_len, i;
2eaa1526 330\&
984263bc 331\& OpenSSL_add_all_digests();
2eaa1526 332\&
984263bc
MD
333\& if(!argv[1]) {
334\& printf("Usage: mdtest digestname\en");
335\& exit(1);
336\& }
2eaa1526 337\&
984263bc 338\& md = EVP_get_digestbyname(argv[1]);
2eaa1526 339\&
984263bc
MD
340\& if(!md) {
341\& printf("Unknown message digest %s\en", argv[1]);
342\& exit(1);
343\& }
2eaa1526 344\&
984263bc
MD
345\& EVP_MD_CTX_init(&mdctx);
346\& EVP_DigestInit_ex(&mdctx, md, NULL);
347\& EVP_DigestUpdate(&mdctx, mess1, strlen(mess1));
348\& EVP_DigestUpdate(&mdctx, mess2, strlen(mess2));
349\& EVP_DigestFinal_ex(&mdctx, md_value, &md_len);
350\& EVP_MD_CTX_cleanup(&mdctx);
2eaa1526 351\&
984263bc
MD
352\& printf("Digest is: ");
353\& for(i = 0; i < md_len; i++) printf("%02x", md_value[i]);
354\& printf("\en");
355\& }
356.Ve
357.SH "BUGS"
8b0cefbb 358.IX Header "BUGS"
984263bc 359The link between digests and signing algorithms results in a situation where
8b0cefbb 360\&\fIEVP_sha1()\fR must be used with \s-1RSA\s0 and \fIEVP_dss1()\fR must be used with \s-1DSS\s0
984263bc
MD
361even though they are identical digests.
362.SH "SEE ALSO"
8b0cefbb
JR
363.IX Header "SEE ALSO"
364\&\fIevp\fR\|(3), \fIhmac\fR\|(3), \fImd2\fR\|(3),
365\&\fImd5\fR\|(3), \fImdc2\fR\|(3), \fIripemd\fR\|(3),
366\&\fIsha\fR\|(3), \fIdgst\fR\|(1)
984263bc 367.SH "HISTORY"
8b0cefbb
JR
368.IX Header "HISTORY"
369\&\fIEVP_DigestInit()\fR, \fIEVP_DigestUpdate()\fR and \fIEVP_DigestFinal()\fR are
984263bc
MD
370available in all versions of SSLeay and OpenSSL.
371.PP
8b0cefbb
JR
372\&\fIEVP_MD_CTX_init()\fR, \fIEVP_MD_CTX_create()\fR, \fIEVP_MD_CTX_copy_ex()\fR,
373\&\fIEVP_MD_CTX_cleanup()\fR, \fIEVP_MD_CTX_destroy()\fR, \fIEVP_DigestInit_ex()\fR
984263bc
MD
374and \fIEVP_DigestFinal_ex()\fR were added in OpenSSL 0.9.7.
375.PP
8b0cefbb
JR
376\&\fIEVP_md_null()\fR, \fIEVP_md2()\fR, \fIEVP_md5()\fR, \fIEVP_sha()\fR, \fIEVP_sha1()\fR,
377\&\fIEVP_dss()\fR, \fIEVP_dss1()\fR, \fIEVP_mdc2()\fR and \fIEVP_ripemd160()\fR were
378changed to return truely const \s-1EVP_MD\s0 * in OpenSSL 0.9.7.