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