Update files for OpenSSL-1.0.0f import.
[dragonfly.git] / secure / lib / libcrypto / man / EVP_DigestInit.3
CommitLineData
e3261593 1.\" Automatically generated by Pod::Man 2.25 (Pod::Simple 3.19)
8b0cefbb
JR
2.\"
3.\" Standard preamble:
4.\" ========================================================================
8b0cefbb 5.de Sp \" Vertical space (when we can't use .PP)
984263bc
MD
6.if t .sp .5v
7.if n .sp
8..
8b0cefbb 9.de Vb \" Begin verbatim text
984263bc
MD
10.ft CW
11.nf
12.ne \\$1
13..
8b0cefbb 14.de Ve \" End verbatim text
984263bc 15.ft R
984263bc
MD
16.fi
17..
8b0cefbb
JR
18.\" Set up some character translations and predefined strings. \*(-- will
19.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
e257b235
PA
20.\" double quote, and \*(R" will give a right double quote. \*(C+ will
21.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
22.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
23.\" nothing in troff, for use with C<>.
24.tr \(*W-
8b0cefbb 25.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
984263bc 26.ie n \{\
8b0cefbb
JR
27. ds -- \(*W-
28. ds PI pi
29. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
31. ds L" ""
32. ds R" ""
33. ds C` ""
34. ds C' ""
984263bc
MD
35'br\}
36.el\{\
8b0cefbb
JR
37. ds -- \|\(em\|
38. ds PI \(*p
39. ds L" ``
40. ds R" ''
984263bc 41'br\}
8b0cefbb 42.\"
e257b235
PA
43.\" Escape single quotes in literal strings from groff's Unicode transform.
44.ie \n(.g .ds Aq \(aq
45.el .ds Aq '
46.\"
8b0cefbb 47.\" If the F register is turned on, we'll generate index entries on stderr for
01185282 48.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
8b0cefbb
JR
49.\" entries marked with X<> in POD. Of course, you'll have to process the
50.\" output yourself in some meaningful fashion.
e257b235 51.ie \nF \{\
8b0cefbb
JR
52. de IX
53. tm Index:\\$1\t\\n%\t"\\$2"
984263bc 54..
8b0cefbb
JR
55. nr % 0
56. rr F
984263bc 57.\}
e257b235
PA
58.el \{\
59. de IX
60..
61.\}
aac4ff6f 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"
e3261593 127.TH EVP_DigestInit 3 "2012-01-04" "1.0.0f" "OpenSSL"
e257b235
PA
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>
e257b235 144\&
984263bc
MD
145\& void EVP_MD_CTX_init(EVP_MD_CTX *ctx);
146\& EVP_MD_CTX *EVP_MD_CTX_create(void);
e257b235 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);
e257b235 152\&
984263bc
MD
153\& int EVP_MD_CTX_cleanup(EVP_MD_CTX *ctx);
154\& void EVP_MD_CTX_destroy(EVP_MD_CTX *ctx);
e257b235
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);
e257b235
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 */
e257b235
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);
e257b235 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
01185282 195\&\fIEVP_MD_CTX_init()\fR initializes digest context \fBctx\fR.
984263bc 196.PP
01185282 197\&\fIEVP_MD_CTX_create()\fR allocates, initializes and returns a digest context.
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
01185282 233context \fBctx\fR is automatically cleaned up.
984263bc 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 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
01185282
PA
263algorithms but using \s-1DSS\s0 (\s-1DSA\s0) for the signature algorithm. Note: there is
264no need to use these pseudo-digests in OpenSSL 1.0.0 and later, they are
265however retained for compatibility.
984263bc 266.PP
8b0cefbb 267\&\fIEVP_md_null()\fR is a \*(L"null\*(R" message digest that does nothing: i.e. the hash it
984263bc
MD
268returns is of zero length.
269.PP
8b0cefbb
JR
270\&\fIEVP_get_digestbyname()\fR, \fIEVP_get_digestbynid()\fR and \fIEVP_get_digestbyobj()\fR
271return an \fB\s-1EVP_MD\s0\fR structure when passed a digest name, a digest \s-1NID\s0 or
272an \s-1ASN1_OBJECT\s0 structure respectively. The digest table must be initialized
984263bc
MD
273using, for example, \fIOpenSSL_add_all_digests()\fR for these functions to work.
274.SH "RETURN VALUES"
8b0cefbb
JR
275.IX Header "RETURN VALUES"
276\&\fIEVP_DigestInit_ex()\fR, \fIEVP_DigestUpdate()\fR and \fIEVP_DigestFinal_ex()\fR return 1 for
984263bc
MD
277success and 0 for failure.
278.PP
8b0cefbb 279\&\fIEVP_MD_CTX_copy_ex()\fR returns 1 if successful or 0 for failure.
984263bc 280.PP
8b0cefbb
JR
281\&\fIEVP_MD_type()\fR, \fIEVP_MD_pkey_type()\fR and \fIEVP_MD_type()\fR return the \s-1NID\s0 of the
282corresponding \s-1OBJECT\s0 \s-1IDENTIFIER\s0 or NID_undef if none exists.
984263bc 283.PP
8b0cefbb
JR
284\&\fIEVP_MD_size()\fR, \fIEVP_MD_block_size()\fR, EVP_MD_CTX_size(e), \fIEVP_MD_size()\fR,
285\&\fIEVP_MD_CTX_block_size()\fR and \fIEVP_MD_block_size()\fR return the digest or block
984263bc
MD
286size in bytes.
287.PP
8b0cefbb
JR
288\&\fIEVP_md_null()\fR, \fIEVP_md2()\fR, \fIEVP_md5()\fR, \fIEVP_sha()\fR, \fIEVP_sha1()\fR, \fIEVP_dss()\fR,
289\&\fIEVP_dss1()\fR, \fIEVP_mdc2()\fR and \fIEVP_ripemd160()\fR return pointers to the
290corresponding \s-1EVP_MD\s0 structures.
984263bc 291.PP
8b0cefbb
JR
292\&\fIEVP_get_digestbyname()\fR, \fIEVP_get_digestbynid()\fR and \fIEVP_get_digestbyobj()\fR
293return either an \fB\s-1EVP_MD\s0\fR structure or \s-1NULL\s0 if an error occurs.
984263bc 294.SH "NOTES"
8b0cefbb
JR
295.IX Header "NOTES"
296The \fB\s-1EVP\s0\fR interface to message digests should almost always be used in
984263bc
MD
297preference to the low level interfaces. This is because the code then becomes
298transparent to the digest used and much more flexible.
299.PP
8b0cefbb 300\&\s-1SHA1\s0 is the digest of choice for new applications. The other digest algorithms
984263bc
MD
301are still in common use.
302.PP
303For most applications the \fBimpl\fR parameter to \fIEVP_DigestInit_ex()\fR will be
8b0cefbb 304set to \s-1NULL\s0 to use the default digest implementation.
984263bc
MD
305.PP
306The functions \fIEVP_DigestInit()\fR, \fIEVP_DigestFinal()\fR and \fIEVP_MD_CTX_copy()\fR are
307obsolete but are retained to maintain compatibility with existing code. New
308applications should use \fIEVP_DigestInit_ex()\fR, \fIEVP_DigestFinal_ex()\fR and
8b0cefbb 309\&\fIEVP_MD_CTX_copy_ex()\fR because they can efficiently reuse a digest context
984263bc
MD
310instead of initializing and cleaning it up on each call and allow non default
311implementations of digests to be specified.
312.PP
313In OpenSSL 0.9.7 and later if digest contexts are not cleaned up after use
e257b235 314memory leaks will occur.
984263bc 315.SH "EXAMPLE"
8b0cefbb 316.IX Header "EXAMPLE"
984263bc
MD
317This example digests the data \*(L"Test Message\en\*(R" and \*(L"Hello World\en\*(R", using the
318digest name passed on the command line.
319.PP
320.Vb 2
321\& #include <stdio.h>
322\& #include <openssl/evp.h>
e257b235 323\&
984263bc
MD
324\& main(int argc, char *argv[])
325\& {
326\& EVP_MD_CTX mdctx;
327\& const EVP_MD *md;
328\& char mess1[] = "Test Message\en";
329\& char mess2[] = "Hello World\en";
330\& unsigned char md_value[EVP_MAX_MD_SIZE];
331\& int md_len, i;
e257b235 332\&
984263bc 333\& OpenSSL_add_all_digests();
e257b235 334\&
984263bc
MD
335\& if(!argv[1]) {
336\& printf("Usage: mdtest digestname\en");
337\& exit(1);
338\& }
e257b235 339\&
984263bc 340\& md = EVP_get_digestbyname(argv[1]);
e257b235 341\&
984263bc
MD
342\& if(!md) {
343\& printf("Unknown message digest %s\en", argv[1]);
344\& exit(1);
345\& }
e257b235 346\&
984263bc
MD
347\& EVP_MD_CTX_init(&mdctx);
348\& EVP_DigestInit_ex(&mdctx, md, NULL);
349\& EVP_DigestUpdate(&mdctx, mess1, strlen(mess1));
350\& EVP_DigestUpdate(&mdctx, mess2, strlen(mess2));
351\& EVP_DigestFinal_ex(&mdctx, md_value, &md_len);
352\& EVP_MD_CTX_cleanup(&mdctx);
e257b235 353\&
984263bc
MD
354\& printf("Digest is: ");
355\& for(i = 0; i < md_len; i++) printf("%02x", md_value[i]);
356\& printf("\en");
357\& }
358.Ve
984263bc 359.SH "SEE ALSO"
8b0cefbb
JR
360.IX Header "SEE ALSO"
361\&\fIevp\fR\|(3), \fIhmac\fR\|(3), \fImd2\fR\|(3),
362\&\fImd5\fR\|(3), \fImdc2\fR\|(3), \fIripemd\fR\|(3),
363\&\fIsha\fR\|(3), \fIdgst\fR\|(1)
984263bc 364.SH "HISTORY"
8b0cefbb
JR
365.IX Header "HISTORY"
366\&\fIEVP_DigestInit()\fR, \fIEVP_DigestUpdate()\fR and \fIEVP_DigestFinal()\fR are
984263bc
MD
367available in all versions of SSLeay and OpenSSL.
368.PP
8b0cefbb
JR
369\&\fIEVP_MD_CTX_init()\fR, \fIEVP_MD_CTX_create()\fR, \fIEVP_MD_CTX_copy_ex()\fR,
370\&\fIEVP_MD_CTX_cleanup()\fR, \fIEVP_MD_CTX_destroy()\fR, \fIEVP_DigestInit_ex()\fR
984263bc
MD
371and \fIEVP_DigestFinal_ex()\fR were added in OpenSSL 0.9.7.
372.PP
8b0cefbb
JR
373\&\fIEVP_md_null()\fR, \fIEVP_md2()\fR, \fIEVP_md5()\fR, \fIEVP_sha()\fR, \fIEVP_sha1()\fR,
374\&\fIEVP_dss()\fR, \fIEVP_dss1()\fR, \fIEVP_mdc2()\fR and \fIEVP_ripemd160()\fR were
375changed to return truely const \s-1EVP_MD\s0 * in OpenSSL 0.9.7.
01185282
PA
376.PP
377The link between digests and signing algorithms was fixed in OpenSSL 1.0 and
378later, so now \fIEVP_sha1()\fR can be used with \s-1RSA\s0 and \s-1DSA\s0, there is no need to
379use \fIEVP_dss1()\fR any more.
380.PP
381OpenSSL 1.0 and later does not include the \s-1MD2\s0 digest algorithm in the
382default configuration due to its security weaknesses.