rust/cargo-c: update to 0.10.7+cargo-0.84.0
[oi-userland.git] / components / library / openssl / common / patches / 048-weak-ciphers.patch
blobd22b487ddf8c96b7bbf24d2c4ab0bd9c10030b0d
1 # Remove MD2, MD4: some functions need to be stubbed
2 # Deprecate DES, RC2, RC4, and MD5
3 # Patch developed in-house. Solaris-specific; not suitable for upstream.
4 --- openssl-1.x/crypto/des/des.h Thu Feb 25 07:42:06 2016
5 +++ openssl-1.x/crypto/des/des.h.new Thu Feb 25 08:37:40 2016
6 @@ -132,24 +132,38 @@
7 void DES_ecb3_encrypt(const_DES_cblock *input, DES_cblock *output,
8 DES_key_schedule *ks1, DES_key_schedule *ks2,
9 DES_key_schedule *ks3, int enc);
11 +#ifndef __has_attribute
12 +# define __has_attribute(x) 0
13 +#endif
15 +/* Mark DES functions deprecated */
16 +#if __has_attribute(deprecated) \
17 + || (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 301)) \
18 + || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5130))
19 +# define DEPRECATED __attribute__((deprecated))
20 +#else
21 +# define DEPRECATED
22 +#endif
24 DES_LONG DES_cbc_cksum(const unsigned char *input, DES_cblock *output,
25 long length, DES_key_schedule *schedule,
26 const_DES_cblock *ivec);
27 /* DES_cbc_encrypt does not update the IV! Use DES_ncbc_encrypt instead. */
28 -void DES_cbc_encrypt(const unsigned char *input, unsigned char *output,
29 +DEPRECATED void DES_cbc_encrypt(const unsigned char *input, unsigned char *output,
30 long length, DES_key_schedule *schedule,
31 DES_cblock *ivec, int enc);
32 -void DES_ncbc_encrypt(const unsigned char *input, unsigned char *output,
33 +DEPRECATED void DES_ncbc_encrypt(const unsigned char *input, unsigned char *output,
34 long length, DES_key_schedule *schedule,
35 DES_cblock *ivec, int enc);
36 -void DES_xcbc_encrypt(const unsigned char *input, unsigned char *output,
37 +DEPRECATED void DES_xcbc_encrypt(const unsigned char *input, unsigned char *output,
38 long length, DES_key_schedule *schedule,
39 DES_cblock *ivec, const_DES_cblock *inw,
40 const_DES_cblock *outw, int enc);
41 -void DES_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
42 +DEPRECATED void DES_cfb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
43 long length, DES_key_schedule *schedule,
44 DES_cblock *ivec, int enc);
45 -void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output,
46 +DEPRECATED void DES_ecb_encrypt(const_DES_cblock *input, DES_cblock *output,
47 DES_key_schedule *ks, int enc);
50 @@ -204,19 +218,19 @@
51 DES_cblock *out_white);
52 # endif
54 -int DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,
55 +DEPRECATED int DES_enc_read(int fd, void *buf, int len, DES_key_schedule *sched,
56 DES_cblock *iv);
57 -int DES_enc_write(int fd, const void *buf, int len, DES_key_schedule *sched,
58 +DEPRECATED int DES_enc_write(int fd, const void *buf, int len, DES_key_schedule *sched,
59 DES_cblock *iv);
60 -char *DES_fcrypt(const char *buf, const char *salt, char *ret);
61 -char *DES_crypt(const char *buf, const char *salt);
62 -void DES_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
63 +DEPRECATED char *DES_fcrypt(const char *buf, const char *salt, char *ret);
64 +DEPRECATED char *DES_crypt(const char *buf, const char *salt);
65 +DEPRECATED void DES_ofb_encrypt(const unsigned char *in, unsigned char *out, int numbits,
66 long length, DES_key_schedule *schedule,
67 DES_cblock *ivec);
68 -void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output,
69 +DEPRECATED void DES_pcbc_encrypt(const unsigned char *input, unsigned char *output,
70 long length, DES_key_schedule *schedule,
71 DES_cblock *ivec, int enc);
72 -DES_LONG DES_quad_cksum(const unsigned char *input, DES_cblock output[],
73 +DEPRECATED DES_LONG DES_quad_cksum(const unsigned char *input, DES_cblock output[],
74 long length, int out_count, DES_cblock *seed);
75 int DES_random_key(DES_cblock *ret);
76 void DES_set_odd_parity(DES_cblock *key);
77 @@ -237,10 +251,10 @@
78 # endif
79 void DES_string_to_key(const char *str, DES_cblock *key);
80 void DES_string_to_2keys(const char *str, DES_cblock *key1, DES_cblock *key2);
81 -void DES_cfb64_encrypt(const unsigned char *in, unsigned char *out,
82 +DEPRECATED void DES_cfb64_encrypt(const unsigned char *in, unsigned char *out,
83 long length, DES_key_schedule *schedule,
84 DES_cblock *ivec, int *num, int enc);
85 -void DES_ofb64_encrypt(const unsigned char *in, unsigned char *out,
86 +DEPRECATED void DES_ofb64_encrypt(const unsigned char *in, unsigned char *out,
87 long length, DES_key_schedule *schedule,
88 DES_cblock *ivec, int *num);
90 --- openssl-1.x/crypto/md5/md5.h Thu Feb 25 07:42:06 2016
91 +++ openssl-1.x/crypto/md5/md5.h.new Thu Feb 25 08:39:36 2016
92 @@ -104,14 +104,28 @@
93 unsigned int num;
94 } MD5_CTX;
97 +#ifndef __has_attribute
98 +# define __has_attribute(x) 0
99 +#endif
101 +/* Mark MD5 functions deprecated */
102 +#if __has_attribute(deprecated) \
103 + || (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 301)) \
104 + || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5130))
105 +# define DEPRECATED __attribute__((deprecated))
106 +#else
107 +# define DEPRECATED
108 +#endif
110 # ifdef OPENSSL_FIPS
111 int private_MD5_Init(MD5_CTX *c);
112 # endif
113 -int MD5_Init(MD5_CTX *c);
114 -int MD5_Update(MD5_CTX *c, const void *data, size_t len);
115 -int MD5_Final(unsigned char *md, MD5_CTX *c);
116 -unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md);
117 -void MD5_Transform(MD5_CTX *c, const unsigned char *b);
118 +DEPRECATED int MD5_Init(MD5_CTX *c);
119 +DEPRECATED int MD5_Update(MD5_CTX *c, const void *data, size_t len);
120 +DEPRECATED int MD5_Final(unsigned char *md, MD5_CTX *c);
121 +DEPRECATED unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md);
122 +DEPRECATED void MD5_Transform(MD5_CTX *c, const unsigned char *b);
123 #ifdef __cplusplus
125 #endif
126 --- openssl-1.x/crypto/rc4/rc4.h Thu Feb 25 07:42:06 2016
127 +++ openssl-1.x/crypto/rc4/rc4.h.new Thu Feb 25 08:38:33 2016
128 @@ -75,10 +75,23 @@
129 RC4_INT data[256];
130 } RC4_KEY;
132 -const char *RC4_options(void);
133 -void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data);
134 -void private_RC4_set_key(RC4_KEY *key, int len, const unsigned char *data);
135 -void RC4(RC4_KEY *key, size_t len, const unsigned char *indata,
136 +#ifndef __has_attribute
137 +# define __has_attribute(x) 0
138 +#endif
140 +/* Mark RC4 functions deprecated */
141 +#if __has_attribute(deprecated) \
142 + || (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 301)) \
143 + || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5130))
144 +# define DEPRECATED __attribute__((deprecated))
145 +#else
146 +# define DEPRECATED
147 +#endif
149 +DEPRECATED const char *RC4_options(void);
150 +DEPRECATED void RC4_set_key(RC4_KEY *key, int len, const unsigned char *data);
151 +DEPRECATED void private_RC4_set_key(RC4_KEY *key, int len, const unsigned char *data);
152 +DEPRECATED void RC4(RC4_KEY *key, size_t len, const unsigned char *indata,
153 unsigned char *outdata);
155 #ifdef __cplusplus
156 --- openssl-1.x/crypto/pem/pem.h Fri Sep 11 00:42:09 2015
157 +++ openssl-1.x/crypto/pem/pem.h.new Thu Feb 25 08:47:04 2016
158 @@ -520,9 +520,24 @@
159 EVP_PKEY *b2i_PublicKey_bio(BIO *in);
160 int i2b_PrivateKey_bio(BIO *out, EVP_PKEY *pk);
161 int i2b_PublicKey_bio(BIO *out, EVP_PKEY *pk);
164 +#ifndef __has_attribute
165 +# define __has_attribute(x) 0
166 +#endif
168 +/* Mark RC4 functions deprecated */
169 +#if __has_attribute(deprecated) \
170 + || (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 301)) \
171 + || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5130))
172 +# define DEPRECATED __attribute__((deprecated))
173 +#else
174 +# define DEPRECATED
175 +#endif
177 # ifndef OPENSSL_NO_RC4
178 -EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u);
179 -int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel,
180 +DEPRECATED EVP_PKEY *b2i_PVK_bio(BIO *in, pem_password_cb *cb, void *u);
181 +DEPRECATED int i2b_PVK_bio(BIO *out, EVP_PKEY *pk, int enclevel,
182 pem_password_cb *cb, void *u);
183 # endif
185 --- openssl-1.x/crypto/rsa/rsa.h Fri Sep 11 00:42:09 2015
186 +++ openssl-1.x/crypto/rsa/rsa.h.new Thu Feb 25 08:47:08 2016
187 @@ -387,18 +387,31 @@
188 int RSA_print(BIO *bp, const RSA *r, int offset);
189 # endif
192 +#ifndef __has_attribute
193 +# define __has_attribute(x) 0
194 +#endif
196 +/* Mark RC4 functions deprecated */
197 +#if __has_attribute(deprecated) \
198 + || (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 301)) \
199 + || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5130))
200 +# define DEPRECATED __attribute__((deprecated))
201 +#else
202 +# define DEPRECATED
203 +#endif
205 # ifndef OPENSSL_NO_RC4
206 -int i2d_RSA_NET(const RSA *a, unsigned char **pp,
207 +DEPRECATED int i2d_RSA_NET(const RSA *a, unsigned char **pp,
208 int (*cb) (char *buf, int len, const char *prompt,
209 int verify), int sgckey);
210 -RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length,
211 +DEPRECATED RSA *d2i_RSA_NET(RSA **a, const unsigned char **pp, long length,
212 int (*cb) (char *buf, int len, const char *prompt,
213 int verify), int sgckey);
215 -int i2d_Netscape_RSA(const RSA *a, unsigned char **pp,
216 +DEPRECATED int i2d_Netscape_RSA(const RSA *a, unsigned char **pp,
217 int (*cb) (char *buf, int len, const char *prompt,
218 int verify));
219 -RSA *d2i_Netscape_RSA(RSA **a, const unsigned char **pp, long length,
220 +DEPRECATED RSA *d2i_Netscape_RSA(RSA **a, const unsigned char **pp, long length,
221 int (*cb) (char *buf, int len, const char *prompt,
222 int verify));
223 # endif
224 --- openssl-1.x/crypto/x509/x509.h Fri Sep 11 00:42:09 2015
225 +++ openssl-1.x/crypto/x509/x509.h.new Thu Feb 25 08:47:12 2016
226 @@ -970,9 +970,22 @@
227 int X509_subject_name_cmp(const X509 *a, const X509 *b);
228 unsigned long X509_subject_name_hash(X509 *x);
230 +#ifndef __has_attribute
231 +# define __has_attribute(x) 0
232 +#endif
234 +/* Mark MD5 functions deprecated */
235 +#if __has_attribute(deprecated) \
236 + || (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 301)) \
237 + || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5130))
238 +# define DEPRECATED __attribute__((deprecated))
239 +#else
240 +# define DEPRECATED
241 +#endif
243 # ifndef OPENSSL_NO_MD5
244 -unsigned long X509_issuer_name_hash_old(X509 *a);
245 -unsigned long X509_subject_name_hash_old(X509 *x);
246 +DEPRECATED unsigned long X509_issuer_name_hash_old(X509 *a);
247 +DEPRECATED unsigned long X509_subject_name_hash_old(X509 *x);
248 # endif
250 int X509_cmp(const X509 *a, const X509 *b);
251 $ diff -ru e_rc2.c e_rc2.c.new
252 --- a/crypto/rc2/rc2.h.orig Thu Apr 14 12:23:50 2016
253 +++ b/crypto/rc2/rc2.h Thu Apr 14 12:27:16 2016
254 @@ -82,17 +82,32 @@
255 void private_RC2_set_key(RC2_KEY *key, int len, const unsigned char *data,
256 int bits);
257 # endif
258 -void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits);
259 -void RC2_ecb_encrypt(const unsigned char *in, unsigned char *out,
262 +#ifndef __has_attribute
263 +# define __has_attribute(x) 0
264 +#endif
266 +/* Mark RC2 functions deprecated */
267 +#if __has_attribute(deprecated) \
268 + || (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 301)) \
269 + || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5130))
270 +# define DEPRECATED __attribute__((deprecated))
271 +#else
272 +# define DEPRECATED
273 +#endif
275 +DEPRECATED void RC2_set_key(RC2_KEY *key, int len, const unsigned char *data, int bits);
276 +DEPRECATED void RC2_ecb_encrypt(const unsigned char *in, unsigned char *out,
277 RC2_KEY *key, int enc);
278 -void RC2_encrypt(unsigned long *data, RC2_KEY *key);
279 -void RC2_decrypt(unsigned long *data, RC2_KEY *key);
280 -void RC2_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
281 +DEPRECATED void RC2_encrypt(unsigned long *data, RC2_KEY *key);
282 +DEPRECATED void RC2_decrypt(unsigned long *data, RC2_KEY *key);
283 +DEPRECATED void RC2_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
284 RC2_KEY *ks, unsigned char *iv, int enc);
285 -void RC2_cfb64_encrypt(const unsigned char *in, unsigned char *out,
286 +DEPRECATED void RC2_cfb64_encrypt(const unsigned char *in, unsigned char *out,
287 long length, RC2_KEY *schedule, unsigned char *ivec,
288 int *num, int enc);
289 -void RC2_ofb64_encrypt(const unsigned char *in, unsigned char *out,
290 +DEPRECATED void RC2_ofb64_encrypt(const unsigned char *in, unsigned char *out,
291 long length, RC2_KEY *schedule, unsigned char *ivec,
292 int *num);
294 --- old/crypto/md4/md4.h Thu Apr 21 09:34:15 2016
295 +++ new/crypto/md4/md4.h Thu Apr 21 09:36:51 2016
296 @@ -104,14 +104,30 @@
297 unsigned int num;
298 } MD4_CTX;
301 + * Deprecate MD4
302 + */
303 +#ifndef __has_attribute
304 +# define __has_attribute(x) 0
305 +#endif
307 +#if __has_attribute(deprecated) \
308 + || (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 301)) \
309 + || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5130))
310 +# define DEPRECATED __attribute__((deprecated))
311 +#else
312 +# define DEPRECATED
313 +#endif
316 # ifdef OPENSSL_FIPS
317 -int private_MD4_Init(MD4_CTX *c);
318 +DEPRECATED int private_MD4_Init(MD4_CTX *c);
319 # endif
320 -int MD4_Init(MD4_CTX *c);
321 -int MD4_Update(MD4_CTX *c, const void *data, size_t len);
322 -int MD4_Final(unsigned char *md, MD4_CTX *c);
323 -unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md);
324 -void MD4_Transform(MD4_CTX *c, const unsigned char *b);
325 +DEPRECATED int MD4_Init(MD4_CTX *c);
326 +DEPRECATED int MD4_Update(MD4_CTX *c, const void *data, size_t len);
327 +DEPRECATED int MD4_Final(unsigned char *md, MD4_CTX *c);
328 +DEPRECATED unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md);
329 +DEPRECATED void MD4_Transform(MD4_CTX *c, const unsigned char *b);
330 #ifdef __cplusplus
332 #endif
333 --- old/crypto/evp/evp.h Tue Mar 1 05:35:53 2016
334 +++ new/crypto/evp/evp.h Thu Apr 21 09:35:07 2016
335 @@ -705,15 +705,31 @@
336 const unsigned char *i, int enc);
337 # endif
341 + * Deprecate MD4, MD5, RC2, RC4, and DES
342 + */
343 +#ifndef __has_attribute
344 +# define __has_attribute(x) 0
345 +#endif
347 +#if __has_attribute(deprecated) \
348 + || (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 301)) \
349 + || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5130))
350 +# define DEPRECATED __attribute__((deprecated))
351 +#else
352 +# define DEPRECATED
353 +#endif
355 const EVP_MD *EVP_md_null(void);
356 # ifndef OPENSSL_NO_MD2
357 const EVP_MD *EVP_md2(void);
358 # endif
359 # ifndef OPENSSL_NO_MD4
360 -const EVP_MD *EVP_md4(void);
361 +DEPRECATED const EVP_MD *EVP_md4(void);
362 # endif
363 # ifndef OPENSSL_NO_MD5
364 -const EVP_MD *EVP_md5(void);
365 +DEPRECATED const EVP_MD *EVP_md5(void);
366 # endif
367 # ifndef OPENSSL_NO_SHA
368 const EVP_MD *EVP_sha(void);
369 @@ -741,16 +757,16 @@
370 # endif
371 const EVP_CIPHER *EVP_enc_null(void); /* does nothing :-) */
372 # ifndef OPENSSL_NO_DES
373 -const EVP_CIPHER *EVP_des_ecb(void);
374 -const EVP_CIPHER *EVP_des_ede(void);
375 +DEPRECATED const EVP_CIPHER *EVP_des_ecb(void);
376 +DEPRECATED const EVP_CIPHER *EVP_des_ede(void);
377 const EVP_CIPHER *EVP_des_ede3(void);
378 -const EVP_CIPHER *EVP_des_ede_ecb(void);
379 +DEPRECATED const EVP_CIPHER *EVP_des_ede_ecb(void);
380 const EVP_CIPHER *EVP_des_ede3_ecb(void);
381 -const EVP_CIPHER *EVP_des_cfb64(void);
382 +DEPRECATED const EVP_CIPHER *EVP_des_cfb64(void);
383 # define EVP_des_cfb EVP_des_cfb64
384 -const EVP_CIPHER *EVP_des_cfb1(void);
385 -const EVP_CIPHER *EVP_des_cfb8(void);
386 -const EVP_CIPHER *EVP_des_ede_cfb64(void);
387 +DEPRECATED const EVP_CIPHER *EVP_des_cfb1(void);
388 +DEPRECATED const EVP_CIPHER *EVP_des_cfb8(void);
389 +DEPRECATED const EVP_CIPHER *EVP_des_ede_cfb64(void);
390 # define EVP_des_ede_cfb EVP_des_ede_cfb64
391 # if 0
392 const EVP_CIPHER *EVP_des_ede_cfb1(void);
393 @@ -760,13 +776,13 @@
394 # define EVP_des_ede3_cfb EVP_des_ede3_cfb64
395 const EVP_CIPHER *EVP_des_ede3_cfb1(void);
396 const EVP_CIPHER *EVP_des_ede3_cfb8(void);
397 -const EVP_CIPHER *EVP_des_ofb(void);
398 -const EVP_CIPHER *EVP_des_ede_ofb(void);
399 +DEPRECATED const EVP_CIPHER *EVP_des_ofb(void);
400 +DEPRECATED const EVP_CIPHER *EVP_des_ede_ofb(void);
401 const EVP_CIPHER *EVP_des_ede3_ofb(void);
402 -const EVP_CIPHER *EVP_des_cbc(void);
403 -const EVP_CIPHER *EVP_des_ede_cbc(void);
404 +DEPRECATED const EVP_CIPHER *EVP_des_cbc(void);
405 +DEPRECATED const EVP_CIPHER *EVP_des_ede_cbc(void);
406 const EVP_CIPHER *EVP_des_ede3_cbc(void);
407 -const EVP_CIPHER *EVP_desx_cbc(void);
408 +DEPRECATED const EVP_CIPHER *EVP_desx_cbc(void);
409 const EVP_CIPHER *EVP_des_ede3_wrap(void);
411 * This should now be supported through the dev_crypto ENGINE. But also, why
412 @@ -782,10 +798,10 @@
413 # endif
414 # endif
415 # ifndef OPENSSL_NO_RC4
416 -const EVP_CIPHER *EVP_rc4(void);
417 -const EVP_CIPHER *EVP_rc4_40(void);
418 +DEPRECATED const EVP_CIPHER *EVP_rc4(void);
419 +DEPRECATED const EVP_CIPHER *EVP_rc4_40(void);
420 # ifndef OPENSSL_NO_MD5
421 -const EVP_CIPHER *EVP_rc4_hmac_md5(void);
422 +DEPRECATED const EVP_CIPHER *EVP_rc4_hmac_md5(void);
423 # endif
424 # endif
425 # ifndef OPENSSL_NO_IDEA
426 @@ -796,13 +812,13 @@
427 const EVP_CIPHER *EVP_idea_cbc(void);
428 # endif
429 # ifndef OPENSSL_NO_RC2
430 -const EVP_CIPHER *EVP_rc2_ecb(void);
431 -const EVP_CIPHER *EVP_rc2_cbc(void);
432 -const EVP_CIPHER *EVP_rc2_40_cbc(void);
433 -const EVP_CIPHER *EVP_rc2_64_cbc(void);
434 -const EVP_CIPHER *EVP_rc2_cfb64(void);
435 +DEPRECATED const EVP_CIPHER *EVP_rc2_ecb(void);
436 +DEPRECATED const EVP_CIPHER *EVP_rc2_cbc(void);
437 +DEPRECATED const EVP_CIPHER *EVP_rc2_40_cbc(void);
438 +DEPRECATED const EVP_CIPHER *EVP_rc2_64_cbc(void);
439 +DEPRECATED const EVP_CIPHER *EVP_rc2_cfb64(void);
440 # define EVP_rc2_cfb EVP_rc2_cfb64
441 -const EVP_CIPHER *EVP_rc2_ofb(void);
442 +DEPRECATED const EVP_CIPHER *EVP_rc2_ofb(void);
443 # endif
444 # ifndef OPENSSL_NO_BF
445 const EVP_CIPHER *EVP_bf_ecb(void);