summaryrefslogtreecommitdiffstats
path: root/providers/legacyprov.c
diff options
context:
space:
mode:
authorShane Lontis <shane.lontis@oracle.com>2020-04-09 12:47:46 +1000
committerShane Lontis <shane.lontis@oracle.com>2020-04-09 12:47:46 +1000
commitf5056577ba08b3694aab2722eae1c97bf00acc80 (patch)
tree00492b31c1e6b69164d5a3be50557bac18cdcd2e /providers/legacyprov.c
parentcc45a884bd499e8b84de0c0133746591c3712f4c (diff)
Move legacy ciphers into the legacy provider
DES, idea, seed, rc2, rc4, rc5, cast and blowfish have been moved out of the default provider. Code shared between desx and tdes has been moved into a seperate file (cipher_tdes_common.c). 3 test recipes failed due to using app/openssl calls that used legacy ciphers. These calls have been updated to supply both the default and legacy providers. Fixed openssl app '-provider' memory leak Reviewed-by: Richard Levitte <levitte@openssl.org> (Merged from https://github.com/openssl/openssl/pull/11419)
Diffstat (limited to 'providers/legacyprov.c')
-rw-r--r--providers/legacyprov.c75
1 files changed, 66 insertions, 9 deletions
diff --git a/providers/legacyprov.c b/providers/legacyprov.c
index 3494a8801c..a439cfd32f 100644
--- a/providers/legacyprov.c
+++ b/providers/legacyprov.c
@@ -15,6 +15,8 @@
#include <openssl/params.h>
#include "prov/implementations.h"
+#define ALG(NAMES, FUNC) { NAMES, "provider=legacy", FUNC }
+
#ifdef STATIC_LEGACY
OSSL_provider_init_fn ossl_legacy_provider_init;
# define OSSL_provider_init ossl_legacy_provider_init
@@ -56,25 +58,78 @@ static int legacy_get_params(const OSSL_PROVIDER *prov, OSSL_PARAM params[])
static const OSSL_ALGORITHM legacy_digests[] = {
#ifndef OPENSSL_NO_MD2
- { "MD2", "provider=legacy", md2_functions },
+ ALG("MD2", md2_functions),
#endif
-
#ifndef OPENSSL_NO_MD4
- { "MD4", "provider=legacy", md4_functions },
+ ALG("MD4", md4_functions),
#endif
-
#ifndef OPENSSL_NO_MDC2
- { "MDC2", "provider=legacy", mdc2_functions },
+ ALG("MDC2", mdc2_functions),
#endif /* OPENSSL_NO_MDC2 */
-
#ifndef OPENSSL_NO_WHIRLPOOL
- { "WHIRLPOOL", "provider=legacy", wp_functions },
+ ALG("WHIRLPOOL", wp_functions),
#endif /* OPENSSL_NO_WHIRLPOOL */
-
#ifndef OPENSSL_NO_RMD160
- { "RIPEMD-160:RIPEMD160:RIPEMD:RMD160", "provider=legacy", ripemd160_functions },
+ ALG("RIPEMD-160:RIPEMD160:RIPEMD:RMD160", ripemd160_functions),
#endif /* OPENSSL_NO_RMD160 */
+ { NULL, NULL, NULL }
+};
+static const OSSL_ALGORITHM legacy_ciphers[] = {
+#ifndef OPENSSL_NO_CAST
+ ALG("CAST5-ECB", cast5128ecb_functions),
+ ALG("CAST5-CBC:CAST-CBC:CAST", cast5128cbc_functions),
+ ALG("CAST5-OFB", cast564ofb64_functions),
+ ALG("CAST5-CFB", cast564cfb64_functions),
+#endif /* OPENSSL_NO_CAST */
+#ifndef OPENSSL_NO_BF
+ ALG("BF-ECB", blowfish128ecb_functions),
+ ALG("BF-CBC:BF:BLOWFISH", blowfish128cbc_functions),
+ ALG("BF-OFB", blowfish64ofb64_functions),
+ ALG("BF-CFB", blowfish64cfb64_functions),
+#endif /* OPENSSL_NO_BF */
+#ifndef OPENSSL_NO_IDEA
+ ALG("IDEA-ECB", idea128ecb_functions),
+ ALG("IDEA-CBC:IDEA", idea128cbc_functions),
+ ALG("IDEA-OFB:IDEA-OFB64", idea128ofb64_functions),
+ ALG("IDEA-CFB:IDEA-CFB64", idea128cfb64_functions),
+#endif /* OPENSSL_NO_IDEA */
+#ifndef OPENSSL_NO_SEED
+ ALG("SEED-ECB", seed128ecb_functions),
+ ALG("SEED-CBC:SEED", seed128cbc_functions),
+ ALG("SEED-OFB:SEED-OFB128", seed128ofb128_functions),
+ ALG("SEED-CFB:SEED-CFB128", seed128cfb128_functions),
+#endif /* OPENSSL_NO_SEED */
+#ifndef OPENSSL_NO_RC2
+ ALG("RC2-ECB", rc2128ecb_functions),
+ ALG("RC2-CBC", rc2128cbc_functions),
+ ALG("RC2-40-CBC", rc240cbc_functions),
+ ALG("RC2-64-CBC", rc264cbc_functions),
+ ALG("RC2-CFB", rc2128cfb128_functions),
+ ALG("RC2-OFB", rc2128ofb128_functions),
+#endif /* OPENSSL_NO_RC2 */
+#ifndef OPENSSL_NO_RC4
+ ALG("RC4", rc4128_functions),
+ ALG("RC4-40", rc440_functions),
+# ifndef OPENSSL_NO_MD5
+ ALG("RC4-HMAC-MD5", rc4_hmac_md5_functions),
+# endif /* OPENSSL_NO_MD5 */
+#endif /* OPENSSL_NO_RC4 */
+#ifndef OPENSSL_NO_RC5
+ ALG("RC5-ECB", rc5128ecb_functions),
+ ALG("RC5-CBC", rc5128cbc_functions),
+ ALG("RC5-OFB", rc5128ofb64_functions),
+ ALG("RC5-CFB", rc5128cfb64_functions),
+#endif /* OPENSSL_NO_RC5 */
+#ifndef OPENSSL_NO_DES
+ ALG("DESX-CBC:DESX", tdes_desx_cbc_functions),
+ ALG("DES-ECB", des_ecb_functions),
+ ALG("DES-CBC:DES", des_cbc_functions),
+ ALG("DES-OFB", des_ofb64_functions),
+ ALG("DES-CFB", des_cfb64_functions),
+ ALG("DES-CFB1", des_cfb1_functions),
+ ALG("DES-CFB8", des_cfb8_functions),
+#endif /* OPENSSL_NO_DES */
{ NULL, NULL, NULL }
};
@@ -86,6 +141,8 @@ static const OSSL_ALGORITHM *legacy_query(OSSL_PROVIDER *prov,
switch (operation_id) {
case OSSL_OP_DIGEST:
return legacy_digests;
+ case OSSL_OP_CIPHER:
+ return legacy_ciphers;
}
return NULL;
}