xref: /dflybsd-src/crypto/libressl/crypto/evp/c_all.c (revision 961e30ea7dc61d1112b778ea4981eac68129fb86)
1*de0e0e4dSAntonio Huete Jimenez /* $OpenBSD: c_all.c,v 1.27 2022/01/14 08:38:05 tb Exp $ */
2f5b1c8a1SJohn Marino /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3f5b1c8a1SJohn Marino  * All rights reserved.
4f5b1c8a1SJohn Marino  *
5f5b1c8a1SJohn Marino  * This package is an SSL implementation written
6f5b1c8a1SJohn Marino  * by Eric Young (eay@cryptsoft.com).
7f5b1c8a1SJohn Marino  * The implementation was written so as to conform with Netscapes SSL.
8f5b1c8a1SJohn Marino  *
9f5b1c8a1SJohn Marino  * This library is free for commercial and non-commercial use as long as
10f5b1c8a1SJohn Marino  * the following conditions are aheared to.  The following conditions
11f5b1c8a1SJohn Marino  * apply to all code found in this distribution, be it the RC4, RSA,
12f5b1c8a1SJohn Marino  * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13f5b1c8a1SJohn Marino  * included with this distribution is covered by the same copyright terms
14f5b1c8a1SJohn Marino  * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15f5b1c8a1SJohn Marino  *
16f5b1c8a1SJohn Marino  * Copyright remains Eric Young's, and as such any Copyright notices in
17f5b1c8a1SJohn Marino  * the code are not to be removed.
18f5b1c8a1SJohn Marino  * If this package is used in a product, Eric Young should be given attribution
19f5b1c8a1SJohn Marino  * as the author of the parts of the library used.
20f5b1c8a1SJohn Marino  * This can be in the form of a textual message at program startup or
21f5b1c8a1SJohn Marino  * in documentation (online or textual) provided with the package.
22f5b1c8a1SJohn Marino  *
23f5b1c8a1SJohn Marino  * Redistribution and use in source and binary forms, with or without
24f5b1c8a1SJohn Marino  * modification, are permitted provided that the following conditions
25f5b1c8a1SJohn Marino  * are met:
26f5b1c8a1SJohn Marino  * 1. Redistributions of source code must retain the copyright
27f5b1c8a1SJohn Marino  *    notice, this list of conditions and the following disclaimer.
28f5b1c8a1SJohn Marino  * 2. Redistributions in binary form must reproduce the above copyright
29f5b1c8a1SJohn Marino  *    notice, this list of conditions and the following disclaimer in the
30f5b1c8a1SJohn Marino  *    documentation and/or other materials provided with the distribution.
31f5b1c8a1SJohn Marino  * 3. All advertising materials mentioning features or use of this software
32f5b1c8a1SJohn Marino  *    must display the following acknowledgement:
33f5b1c8a1SJohn Marino  *    "This product includes cryptographic software written by
34f5b1c8a1SJohn Marino  *     Eric Young (eay@cryptsoft.com)"
35f5b1c8a1SJohn Marino  *    The word 'cryptographic' can be left out if the rouines from the library
36f5b1c8a1SJohn Marino  *    being used are not cryptographic related :-).
37f5b1c8a1SJohn Marino  * 4. If you include any Windows specific code (or a derivative thereof) from
38f5b1c8a1SJohn Marino  *    the apps directory (application code) you must include an acknowledgement:
39f5b1c8a1SJohn Marino  *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40f5b1c8a1SJohn Marino  *
41f5b1c8a1SJohn Marino  * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42f5b1c8a1SJohn Marino  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43f5b1c8a1SJohn Marino  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44f5b1c8a1SJohn Marino  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45f5b1c8a1SJohn Marino  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46f5b1c8a1SJohn Marino  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47f5b1c8a1SJohn Marino  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48f5b1c8a1SJohn Marino  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49f5b1c8a1SJohn Marino  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50f5b1c8a1SJohn Marino  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51f5b1c8a1SJohn Marino  * SUCH DAMAGE.
52f5b1c8a1SJohn Marino  *
53f5b1c8a1SJohn Marino  * The licence and distribution terms for any publically available version or
54f5b1c8a1SJohn Marino  * derivative of this code cannot be changed.  i.e. this code cannot simply be
55f5b1c8a1SJohn Marino  * copied and put under another distribution licence
56f5b1c8a1SJohn Marino  * [including the GNU Public Licence.]
57f5b1c8a1SJohn Marino  */
58f5b1c8a1SJohn Marino 
59f5b1c8a1SJohn Marino #include <stdio.h>
6072c33676SMaxim Ag #include <pthread.h>
61f5b1c8a1SJohn Marino 
62f5b1c8a1SJohn Marino #include <openssl/opensslconf.h>
63f5b1c8a1SJohn Marino 
64f5b1c8a1SJohn Marino #include <openssl/conf.h>
65f5b1c8a1SJohn Marino #include <openssl/evp.h>
66f5b1c8a1SJohn Marino #include <openssl/objects.h>
67f5b1c8a1SJohn Marino 
68f5b1c8a1SJohn Marino #include "cryptlib.h"
69f5b1c8a1SJohn Marino 
7072c33676SMaxim Ag static void
OpenSSL_add_all_ciphers_internal(void)7172c33676SMaxim Ag OpenSSL_add_all_ciphers_internal(void)
72f5b1c8a1SJohn Marino {
73f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_DES
74f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_cfb());
75f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_cfb1());
76f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_cfb8());
77f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_ede_cfb());
78f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_ede3_cfb());
79f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_ede3_cfb1());
80f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_ede3_cfb8());
81f5b1c8a1SJohn Marino 
82f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_ofb());
83f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_ede_ofb());
84f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_ede3_ofb());
85f5b1c8a1SJohn Marino 
86f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_desx_cbc());
87f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_desx_cbc, "DESX");
88f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_desx_cbc, "desx");
89f5b1c8a1SJohn Marino 
90f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_cbc());
91f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_des_cbc, "DES");
92f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_des_cbc, "des");
93f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_ede_cbc());
94f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_ede3_cbc());
95f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_des_ede3_cbc, "DES3");
96f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_des_ede3_cbc, "des3");
97f5b1c8a1SJohn Marino 
98f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_ecb());
99f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_ede());
100f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_des_ede3());
101f5b1c8a1SJohn Marino #endif
102f5b1c8a1SJohn Marino 
103f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_RC4
104f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_rc4());
105f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_rc4_40());
106f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_MD5
107f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_rc4_hmac_md5());
108f5b1c8a1SJohn Marino #endif
109f5b1c8a1SJohn Marino #endif
110f5b1c8a1SJohn Marino 
111f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_IDEA
112f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_idea_ecb());
113f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_idea_cfb());
114f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_idea_ofb());
115f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_idea_cbc());
116f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_idea_cbc, "IDEA");
117f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_idea_cbc, "idea");
118f5b1c8a1SJohn Marino #endif
119f5b1c8a1SJohn Marino 
120f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_RC2
121f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_rc2_ecb());
122f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_rc2_cfb());
123f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_rc2_ofb());
124f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_rc2_cbc());
125f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_rc2_40_cbc());
126f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_rc2_64_cbc());
127f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_rc2_cbc, "RC2");
128f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_rc2_cbc, "rc2");
129f5b1c8a1SJohn Marino #endif
130f5b1c8a1SJohn Marino 
131f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_BF
132f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_bf_ecb());
133f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_bf_cfb());
134f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_bf_ofb());
135f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_bf_cbc());
136f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_bf_cbc, "BF");
137f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_bf_cbc, "bf");
138f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_bf_cbc, "blowfish");
139f5b1c8a1SJohn Marino #endif
140f5b1c8a1SJohn Marino 
141f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_CAST
142f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_cast5_ecb());
143f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_cast5_cfb());
144f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_cast5_ofb());
145f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_cast5_cbc());
146f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_cast5_cbc, "CAST");
147f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_cast5_cbc, "cast");
148f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_cast5_cbc, "CAST-cbc");
149f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_cast5_cbc, "cast-cbc");
150f5b1c8a1SJohn Marino #endif
151f5b1c8a1SJohn Marino 
152f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_AES
153f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_128_ecb());
154f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_128_cbc());
15572c33676SMaxim Ag 	EVP_add_cipher(EVP_aes_128_ccm());
156f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_128_cfb());
157f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_128_cfb1());
158f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_128_cfb8());
159f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_128_ofb());
160f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_128_ctr());
161f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_128_gcm());
16272c33676SMaxim Ag 	EVP_add_cipher(EVP_aes_128_wrap());
163f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_128_xts());
164f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_aes_128_cbc, "AES128");
165f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_aes_128_cbc, "aes128");
166f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_192_ecb());
167f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_192_cbc());
16872c33676SMaxim Ag 	EVP_add_cipher(EVP_aes_192_ccm());
169f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_192_cfb());
170f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_192_cfb1());
171f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_192_cfb8());
172f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_192_ofb());
173f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_192_ctr());
174f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_192_gcm());
17572c33676SMaxim Ag 	EVP_add_cipher(EVP_aes_192_wrap());
176f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_aes_192_cbc, "AES192");
177f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_aes_192_cbc, "aes192");
178f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_256_ecb());
179f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_256_cbc());
18072c33676SMaxim Ag 	EVP_add_cipher(EVP_aes_256_ccm());
181f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_256_cfb());
182f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_256_cfb1());
183f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_256_cfb8());
184f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_256_ofb());
185f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_256_ctr());
186f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_256_gcm());
18772c33676SMaxim Ag 	EVP_add_cipher(EVP_aes_256_wrap());
188f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_256_xts());
189f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_aes_256_cbc, "AES256");
190f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_aes_256_cbc, "aes256");
191f5b1c8a1SJohn Marino #if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1)
192f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_128_cbc_hmac_sha1());
193f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_aes_256_cbc_hmac_sha1());
194f5b1c8a1SJohn Marino #endif
195f5b1c8a1SJohn Marino #endif
196f5b1c8a1SJohn Marino 
197f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_CAMELLIA
198f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_128_ecb());
199f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_128_cbc());
200f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_128_cfb());
201f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_128_cfb1());
202f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_128_cfb8());
203f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_128_ofb());
204f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_camellia_128_cbc, "CAMELLIA128");
205f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_camellia_128_cbc, "camellia128");
206f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_192_ecb());
207f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_192_cbc());
208f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_192_cfb());
209f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_192_cfb1());
210f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_192_cfb8());
211f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_192_ofb());
212f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_camellia_192_cbc, "CAMELLIA192");
213f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_camellia_192_cbc, "camellia192");
214f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_256_ecb());
215f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_256_cbc());
216f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_256_cfb());
217f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_256_cfb1());
218f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_256_cfb8());
219f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_camellia_256_ofb());
220f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_camellia_256_cbc, "CAMELLIA256");
221f5b1c8a1SJohn Marino 	EVP_add_cipher_alias(SN_camellia_256_cbc, "camellia256");
222f5b1c8a1SJohn Marino #endif
223f5b1c8a1SJohn Marino 
224f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_CHACHA
225f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_chacha20());
226f5b1c8a1SJohn Marino #endif
227f5b1c8a1SJohn Marino 
228f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_GOST
229f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_gost2814789_ecb());
230f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_gost2814789_cfb64());
231f5b1c8a1SJohn Marino 	EVP_add_cipher(EVP_gost2814789_cnt());
232f5b1c8a1SJohn Marino #endif
23372c33676SMaxim Ag 
23472c33676SMaxim Ag #ifndef OPENSSL_NO_SM4
23572c33676SMaxim Ag 	EVP_add_cipher(EVP_sm4_ecb());
23672c33676SMaxim Ag 	EVP_add_cipher(EVP_sm4_cbc());
23772c33676SMaxim Ag 	EVP_add_cipher(EVP_sm4_cfb());
23872c33676SMaxim Ag 	EVP_add_cipher(EVP_sm4_ofb());
23972c33676SMaxim Ag 	EVP_add_cipher(EVP_sm4_ctr());
24072c33676SMaxim Ag 	EVP_add_cipher_alias(SN_sm4_cbc, "SM4");
24172c33676SMaxim Ag 	EVP_add_cipher_alias(SN_sm4_cbc, "sm4");
24272c33676SMaxim Ag #endif
243f5b1c8a1SJohn Marino }
244f5b1c8a1SJohn Marino 
245f5b1c8a1SJohn Marino void
OpenSSL_add_all_ciphers(void)24672c33676SMaxim Ag OpenSSL_add_all_ciphers(void)
24772c33676SMaxim Ag {
24872c33676SMaxim Ag 	static pthread_once_t add_all_ciphers_once = PTHREAD_ONCE_INIT;
24972c33676SMaxim Ag 	(void) pthread_once(&add_all_ciphers_once, OpenSSL_add_all_ciphers_internal);
25072c33676SMaxim Ag }
25172c33676SMaxim Ag 
25272c33676SMaxim Ag static void
OpenSSL_add_all_digests_internal(void)25372c33676SMaxim Ag OpenSSL_add_all_digests_internal(void)
254f5b1c8a1SJohn Marino {
255f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_MD4
256f5b1c8a1SJohn Marino 	EVP_add_digest(EVP_md4());
257f5b1c8a1SJohn Marino #endif
258f5b1c8a1SJohn Marino 
259f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_MD5
260f5b1c8a1SJohn Marino 	EVP_add_digest(EVP_md5());
26172c33676SMaxim Ag 	EVP_add_digest(EVP_md5_sha1());
262f5b1c8a1SJohn Marino 	EVP_add_digest_alias(SN_md5, "ssl2-md5");
263f5b1c8a1SJohn Marino 	EVP_add_digest_alias(SN_md5, "ssl3-md5");
264f5b1c8a1SJohn Marino #endif
265f5b1c8a1SJohn Marino 
266f5b1c8a1SJohn Marino #if !defined(OPENSSL_NO_SHA) && !defined(OPENSSL_NO_SHA1)
267f5b1c8a1SJohn Marino 	EVP_add_digest(EVP_sha1());
268f5b1c8a1SJohn Marino 	EVP_add_digest_alias(SN_sha1, "ssl3-sha1");
269f5b1c8a1SJohn Marino 	EVP_add_digest_alias(SN_sha1WithRSAEncryption, SN_sha1WithRSA);
270f5b1c8a1SJohn Marino #endif
271f5b1c8a1SJohn Marino 
272f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_GOST
273f5b1c8a1SJohn Marino 	EVP_add_digest(EVP_gostr341194());
274f5b1c8a1SJohn Marino 	EVP_add_digest(EVP_gost2814789imit());
275f5b1c8a1SJohn Marino 	EVP_add_digest(EVP_streebog256());
276f5b1c8a1SJohn Marino 	EVP_add_digest(EVP_streebog512());
277f5b1c8a1SJohn Marino #endif
278f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_RIPEMD
279f5b1c8a1SJohn Marino 	EVP_add_digest(EVP_ripemd160());
280f5b1c8a1SJohn Marino 	EVP_add_digest_alias(SN_ripemd160, "ripemd");
281f5b1c8a1SJohn Marino 	EVP_add_digest_alias(SN_ripemd160, "rmd160");
282f5b1c8a1SJohn Marino #endif
283f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_SHA256
284f5b1c8a1SJohn Marino 	EVP_add_digest(EVP_sha224());
285f5b1c8a1SJohn Marino 	EVP_add_digest(EVP_sha256());
286f5b1c8a1SJohn Marino #endif
287f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_SHA512
288f5b1c8a1SJohn Marino 	EVP_add_digest(EVP_sha384());
289f5b1c8a1SJohn Marino 	EVP_add_digest(EVP_sha512());
290f5b1c8a1SJohn Marino #endif
29172c33676SMaxim Ag #ifndef OPENSSL_NO_SM3
29272c33676SMaxim Ag 	EVP_add_digest(EVP_sm3());
29372c33676SMaxim Ag #endif
294f5b1c8a1SJohn Marino #ifndef OPENSSL_NO_WHIRLPOOL
295f5b1c8a1SJohn Marino 	EVP_add_digest(EVP_whirlpool());
296f5b1c8a1SJohn Marino #endif
297f5b1c8a1SJohn Marino }
298f5b1c8a1SJohn Marino 
299f5b1c8a1SJohn Marino void
OpenSSL_add_all_digests(void)30072c33676SMaxim Ag OpenSSL_add_all_digests(void)
30172c33676SMaxim Ag {
30272c33676SMaxim Ag 	static pthread_once_t add_all_digests_once = PTHREAD_ONCE_INIT;
30372c33676SMaxim Ag 	(void) pthread_once(&add_all_digests_once, OpenSSL_add_all_digests_internal);
30472c33676SMaxim Ag }
30572c33676SMaxim Ag 
30672c33676SMaxim Ag void
OPENSSL_add_all_algorithms_noconf(void)307f5b1c8a1SJohn Marino OPENSSL_add_all_algorithms_noconf(void)
308f5b1c8a1SJohn Marino {
309f5b1c8a1SJohn Marino 	OPENSSL_cpuid_setup();
310f5b1c8a1SJohn Marino 	OpenSSL_add_all_ciphers();
311f5b1c8a1SJohn Marino 	OpenSSL_add_all_digests();
312f5b1c8a1SJohn Marino }
313f5b1c8a1SJohn Marino 
314f5b1c8a1SJohn Marino void
OPENSSL_add_all_algorithms_conf(void)315f5b1c8a1SJohn Marino OPENSSL_add_all_algorithms_conf(void)
316f5b1c8a1SJohn Marino {
317f5b1c8a1SJohn Marino 	OPENSSL_add_all_algorithms_noconf();
318f5b1c8a1SJohn Marino 	OPENSSL_config(NULL);
319f5b1c8a1SJohn Marino }
320