]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
app: add a deprecation warning to all deprecated commands.
authorPauli <paul.dale@oracle.com>
Wed, 5 Feb 2020 01:27:23 +0000 (11:27 +1000)
committerPauli <paul.dale@oracle.com>
Tue, 11 Feb 2020 22:52:42 +0000 (08:52 +1000)
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/10977)

apps/include/function.h
apps/openssl.c
apps/progs.c
apps/progs.pl

index 1911a649477aa7cdc40fa8d8b0d07c47a001cc10..28eb3e5d1c908d5433489e95e23f936cf841e21e 100644 (file)
@@ -13,6 +13,8 @@
 # include <openssl/lhash.h>
 # include "opt.h"
 
+#define DEPRECATED_NO_ALTERNATIVE   "unknown"
+
 typedef enum FUNC_TYPE {
     FT_none, FT_general, FT_md, FT_cipher, FT_pkey,
     FT_md_alg, FT_cipher_alg
@@ -23,6 +25,7 @@ typedef struct function_st {
     const char *name;
     int (*func)(int argc, char *argv[]);
     const OPTIONS *help;
+    const char *deprecated_alternative;
 } FUNCTION;
 
 DEFINE_LHASH_OF(FUNCTION);
index 00ad9ca0bdcddbb44122a68d94071dbfc1624943..cafe4046e6aa44dd81f7b01c7494e1f6c50810cf 100644 (file)
@@ -47,6 +47,15 @@ BIO *bio_in = NULL;
 BIO *bio_out = NULL;
 BIO *bio_err = NULL;
 
+static void warn_deprecated(const char *pname,
+                            const char *deprecated_alternative)
+{
+    BIO_printf(bio_err, "The command %s is deprecated.", pname);
+    if (strcmp(deprecated_alternative, DEPRECATED_NO_ALTERNATIVE) != 0)
+        BIO_printf(bio_err, " Use '%s' instead.", deprecated_alternative);
+    BIO_printf(bio_err, "\n");
+}
+
 static int apps_startup(void)
 {
 #ifdef SIGPIPE
@@ -277,6 +286,8 @@ int main(int argc, char *argv[])
     fp = lh_FUNCTION_retrieve(prog, &f);
     if (fp != NULL) {
         argv[0] = pname;
+        if (fp->deprecated_alternative != NULL)
+            warn_deprecated(pname, fp->deprecated_alternative);
         ret = fp->func(argc, argv);
         goto end;
     }
@@ -470,6 +481,8 @@ static int do_cmd(LHASH_OF(FUNCTION) *prog, int argc, char *argv[])
         }
     }
     if (fp != NULL) {
+        if (fp->deprecated_alternative != NULL)
+            warn_deprecated(fp->name, fp->deprecated_alternative);
         return fp->func(argc, argv);
     }
     if ((strncmp(argv[0], "no-", 3)) == 0) {
index 82cd19bed6c7dd77be9363d77af71415e2ff485d..eba50e8daf8efc792a9cc424937aad941dcd5252 100644 (file)
 #include "progs.h"
 
 FUNCTION functions[] = {
-    {FT_general, "asn1parse", asn1parse_main, asn1parse_options},
-    {FT_general, "ca", ca_main, ca_options},
+    {FT_general, "asn1parse", asn1parse_main, asn1parse_options, NULL},
+    {FT_general, "ca", ca_main, ca_options, NULL},
 #ifndef OPENSSL_NO_SOCK
-    {FT_general, "ciphers", ciphers_main, ciphers_options},
+    {FT_general, "ciphers", ciphers_main, ciphers_options, NULL},
 #endif
 #ifndef OPENSSL_NO_CMS
-    {FT_general, "cms", cms_main, cms_options},
+    {FT_general, "cms", cms_main, cms_options, NULL},
 #endif
-    {FT_general, "crl", crl_main, crl_options},
-    {FT_general, "crl2pkcs7", crl2pkcs7_main, crl2pkcs7_options},
-    {FT_general, "dgst", dgst_main, dgst_options},
-#ifndef OPENSSL_NO_DH
-    {FT_general, "dhparam", dhparam_main, dhparam_options},
+    {FT_general, "crl", crl_main, crl_options, NULL},
+    {FT_general, "crl2pkcs7", crl2pkcs7_main, crl2pkcs7_options, NULL},
+    {FT_general, "dgst", dgst_main, dgst_options, NULL},
+#if !defined(OPENSSL_NO_DH) && !defined(OPENSSL_NO_DEPRECATED_3_0)
+    {FT_general, "dhparam", dhparam_main, dhparam_options, "pkeyparam"},
 #endif
-#ifndef OPENSSL_NO_DSA
-    {FT_general, "dsa", dsa_main, dsa_options},
+#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_DEPRECATED_3_0)
+    {FT_general, "dsa", dsa_main, dsa_options, "pkey"},
 #endif
-#ifndef OPENSSL_NO_DSA
-    {FT_general, "dsaparam", dsaparam_main, dsaparam_options},
+#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_DEPRECATED_3_0)
+    {FT_general, "dsaparam", dsaparam_main, dsaparam_options, "pkeyparam"},
 #endif
 #ifndef OPENSSL_NO_EC
-    {FT_general, "ec", ec_main, ec_options},
+    {FT_general, "ec", ec_main, ec_options, NULL},
 #endif
 #ifndef OPENSSL_NO_EC
-    {FT_general, "ecparam", ecparam_main, ecparam_options},
+    {FT_general, "ecparam", ecparam_main, ecparam_options, NULL},
 #endif
-    {FT_general, "enc", enc_main, enc_options},
+    {FT_general, "enc", enc_main, enc_options, NULL},
 #ifndef OPENSSL_NO_ENGINE
-    {FT_general, "engine", engine_main, engine_options},
+    {FT_general, "engine", engine_main, engine_options, NULL},
 #endif
-    {FT_general, "errstr", errstr_main, errstr_options},
-    {FT_general, "fipsinstall", fipsinstall_main, fipsinstall_options},
-#ifndef OPENSSL_NO_DSA
-    {FT_general, "gendsa", gendsa_main, gendsa_options},
+    {FT_general, "errstr", errstr_main, errstr_options, NULL},
+    {FT_general, "fipsinstall", fipsinstall_main, fipsinstall_options, NULL},
+#if !defined(OPENSSL_NO_DSA) && !defined(OPENSSL_NO_DEPRECATED_3_0)
+    {FT_general, "gendsa", gendsa_main, gendsa_options, "genpkey"},
 #endif
-    {FT_general, "genpkey", genpkey_main, genpkey_options},
+    {FT_general, "genpkey", genpkey_main, genpkey_options, NULL},
 #ifndef OPENSSL_NO_RSA
-    {FT_general, "genrsa", genrsa_main, genrsa_options},
-#endif
-    {FT_general, "help", help_main, help_options},
-    {FT_general, "info", info_main, info_options},
-    {FT_general, "kdf", kdf_main, kdf_options},
-    {FT_general, "list", list_main, list_options},
-    {FT_general, "mac", mac_main, mac_options},
-    {FT_general, "nseq", nseq_main, nseq_options},
+    {FT_general, "genrsa", genrsa_main, genrsa_options, NULL},
+#endif
+    {FT_general, "help", help_main, help_options, NULL},
+    {FT_general, "info", info_main, info_options, NULL},
+    {FT_general, "kdf", kdf_main, kdf_options, NULL},
+    {FT_general, "list", list_main, list_options, NULL},
+    {FT_general, "mac", mac_main, mac_options, NULL},
+    {FT_general, "nseq", nseq_main, nseq_options, NULL},
 #ifndef OPENSSL_NO_OCSP
-    {FT_general, "ocsp", ocsp_main, ocsp_options},
+    {FT_general, "ocsp", ocsp_main, ocsp_options, NULL},
 #endif
-    {FT_general, "passwd", passwd_main, passwd_options},
+    {FT_general, "passwd", passwd_main, passwd_options, NULL},
 #ifndef OPENSSL_NO_DES
-    {FT_general, "pkcs12", pkcs12_main, pkcs12_options},
-#endif
-    {FT_general, "pkcs7", pkcs7_main, pkcs7_options},
-    {FT_general, "pkcs8", pkcs8_main, pkcs8_options},
-    {FT_general, "pkey", pkey_main, pkey_options},
-    {FT_general, "pkeyparam", pkeyparam_main, pkeyparam_options},
-    {FT_general, "pkeyutl", pkeyutl_main, pkeyutl_options},
-    {FT_general, "prime", prime_main, prime_options},
-    {FT_general, "provider", provider_main, provider_options},
-    {FT_general, "rand", rand_main, rand_options},
-    {FT_general, "rehash", rehash_main, rehash_options},
-    {FT_general, "req", req_main, req_options},
-    {FT_general, "rsa", rsa_main, rsa_options},
+    {FT_general, "pkcs12", pkcs12_main, pkcs12_options, NULL},
+#endif
+    {FT_general, "pkcs7", pkcs7_main, pkcs7_options, NULL},
+    {FT_general, "pkcs8", pkcs8_main, pkcs8_options, NULL},
+    {FT_general, "pkey", pkey_main, pkey_options, NULL},
+    {FT_general, "pkeyparam", pkeyparam_main, pkeyparam_options, NULL},
+    {FT_general, "pkeyutl", pkeyutl_main, pkeyutl_options, NULL},
+    {FT_general, "prime", prime_main, prime_options, NULL},
+    {FT_general, "provider", provider_main, provider_options, NULL},
+    {FT_general, "rand", rand_main, rand_options, NULL},
+    {FT_general, "rehash", rehash_main, rehash_options, NULL},
+    {FT_general, "req", req_main, req_options, NULL},
+    {FT_general, "rsa", rsa_main, rsa_options, NULL},
 #ifndef OPENSSL_NO_RSA
-    {FT_general, "rsautl", rsautl_main, rsautl_options},
+    {FT_general, "rsautl", rsautl_main, rsautl_options, NULL},
 #endif
 #ifndef OPENSSL_NO_SOCK
-    {FT_general, "s_client", s_client_main, s_client_options},
+    {FT_general, "s_client", s_client_main, s_client_options, NULL},
 #endif
 #ifndef OPENSSL_NO_SOCK
-    {FT_general, "s_server", s_server_main, s_server_options},
+    {FT_general, "s_server", s_server_main, s_server_options, NULL},
 #endif
 #ifndef OPENSSL_NO_SOCK
-    {FT_general, "s_time", s_time_main, s_time_options},
+    {FT_general, "s_time", s_time_main, s_time_options, NULL},
 #endif
-    {FT_general, "sess_id", sess_id_main, sess_id_options},
-    {FT_general, "smime", smime_main, smime_options},
-    {FT_general, "speed", speed_main, speed_options},
-    {FT_general, "spkac", spkac_main, spkac_options},
+    {FT_general, "sess_id", sess_id_main, sess_id_options, NULL},
+    {FT_general, "smime", smime_main, smime_options, NULL},
+    {FT_general, "speed", speed_main, speed_options, NULL},
+    {FT_general, "spkac", spkac_main, spkac_options, NULL},
 #ifndef OPENSSL_NO_SRP
-    {FT_general, "srp", srp_main, srp_options},
+    {FT_general, "srp", srp_main, srp_options, NULL},
 #endif
-    {FT_general, "storeutl", storeutl_main, storeutl_options},
+    {FT_general, "storeutl", storeutl_main, storeutl_options, NULL},
 #ifndef OPENSSL_NO_TS
-    {FT_general, "ts", ts_main, ts_options},
+    {FT_general, "ts", ts_main, ts_options, NULL},
 #endif
-    {FT_general, "verify", verify_main, verify_options},
-    {FT_general, "version", version_main, version_options},
-    {FT_general, "x509", x509_main, x509_options},
+    {FT_general, "verify", verify_main, verify_options, NULL},
+    {FT_general, "version", version_main, version_options, NULL},
+    {FT_general, "x509", x509_main, x509_options, NULL},
 #ifndef OPENSSL_NO_MD2
-    {FT_md, "md2", dgst_main},
+    {FT_md, "md2", dgst_main, NULL, NULL},
 #endif
 #ifndef OPENSSL_NO_MD4
-    {FT_md, "md4", dgst_main},
+    {FT_md, "md4", dgst_main, NULL, NULL},
 #endif
-    {FT_md, "md5", dgst_main},
+    {FT_md, "md5", dgst_main, NULL, NULL},
 #ifndef OPENSSL_NO_GOST
-    {FT_md, "gost", dgst_main},
-#endif
-    {FT_md, "sha1", dgst_main},
-    {FT_md, "sha224", dgst_main},
-    {FT_md, "sha256", dgst_main},
-    {FT_md, "sha384", dgst_main},
-    {FT_md, "sha512", dgst_main},
-    {FT_md, "sha512-224", dgst_main},
-    {FT_md, "sha512-256", dgst_main},
-    {FT_md, "sha3-224", dgst_main},
-    {FT_md, "sha3-256", dgst_main},
-    {FT_md, "sha3-384", dgst_main},
-    {FT_md, "sha3-512", dgst_main},
-    {FT_md, "shake128", dgst_main},
-    {FT_md, "shake256", dgst_main},
+    {FT_md, "gost", dgst_main, NULL, NULL},
+#endif
+    {FT_md, "sha1", dgst_main, NULL, NULL},
+    {FT_md, "sha224", dgst_main, NULL, NULL},
+    {FT_md, "sha256", dgst_main, NULL, NULL},
+    {FT_md, "sha384", dgst_main, NULL, NULL},
+    {FT_md, "sha512", dgst_main, NULL, NULL},
+    {FT_md, "sha512-224", dgst_main, NULL, NULL},
+    {FT_md, "sha512-256", dgst_main, NULL, NULL},
+    {FT_md, "sha3-224", dgst_main, NULL, NULL},
+    {FT_md, "sha3-256", dgst_main, NULL, NULL},
+    {FT_md, "sha3-384", dgst_main, NULL, NULL},
+    {FT_md, "sha3-512", dgst_main, NULL, NULL},
+    {FT_md, "shake128", dgst_main, NULL, NULL},
+    {FT_md, "shake256", dgst_main, NULL, NULL},
 #ifndef OPENSSL_NO_MDC2
-    {FT_md, "mdc2", dgst_main},
+    {FT_md, "mdc2", dgst_main, NULL, NULL},
 #endif
 #ifndef OPENSSL_NO_RMD160
-    {FT_md, "rmd160", dgst_main},
+    {FT_md, "rmd160", dgst_main, NULL, NULL},
 #endif
 #ifndef OPENSSL_NO_BLAKE2
-    {FT_md, "blake2b512", dgst_main},
+    {FT_md, "blake2b512", dgst_main, NULL, NULL},
 #endif
 #ifndef OPENSSL_NO_BLAKE2
-    {FT_md, "blake2s256", dgst_main},
+    {FT_md, "blake2s256", dgst_main, NULL, NULL},
 #endif
 #ifndef OPENSSL_NO_SM3
-    {FT_md, "sm3", dgst_main},
-#endif
-    {FT_cipher, "aes-128-cbc", enc_main, enc_options},
-    {FT_cipher, "aes-128-ecb", enc_main, enc_options},
-    {FT_cipher, "aes-192-cbc", enc_main, enc_options},
-    {FT_cipher, "aes-192-ecb", enc_main, enc_options},
-    {FT_cipher, "aes-256-cbc", enc_main, enc_options},
-    {FT_cipher, "aes-256-ecb", enc_main, enc_options},
+    {FT_md, "sm3", dgst_main, NULL, NULL},
+#endif
+    {FT_cipher, "aes-128-cbc", enc_main, enc_options, NULL},
+    {FT_cipher, "aes-128-ecb", enc_main, enc_options, NULL},
+    {FT_cipher, "aes-192-cbc", enc_main, enc_options, NULL},
+    {FT_cipher, "aes-192-ecb", enc_main, enc_options, NULL},
+    {FT_cipher, "aes-256-cbc", enc_main, enc_options, NULL},
+    {FT_cipher, "aes-256-ecb", enc_main, enc_options, NULL},
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-128-cbc", enc_main, enc_options},
+    {FT_cipher, "aria-128-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-128-cfb", enc_main, enc_options},
+    {FT_cipher, "aria-128-cfb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-128-ctr", enc_main, enc_options},
+    {FT_cipher, "aria-128-ctr", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-128-ecb", enc_main, enc_options},
+    {FT_cipher, "aria-128-ecb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-128-ofb", enc_main, enc_options},
+    {FT_cipher, "aria-128-ofb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-128-cfb1", enc_main, enc_options},
+    {FT_cipher, "aria-128-cfb1", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-128-cfb8", enc_main, enc_options},
+    {FT_cipher, "aria-128-cfb8", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-192-cbc", enc_main, enc_options},
+    {FT_cipher, "aria-192-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-192-cfb", enc_main, enc_options},
+    {FT_cipher, "aria-192-cfb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-192-ctr", enc_main, enc_options},
+    {FT_cipher, "aria-192-ctr", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-192-ecb", enc_main, enc_options},
+    {FT_cipher, "aria-192-ecb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-192-ofb", enc_main, enc_options},
+    {FT_cipher, "aria-192-ofb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-192-cfb1", enc_main, enc_options},
+    {FT_cipher, "aria-192-cfb1", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-192-cfb8", enc_main, enc_options},
+    {FT_cipher, "aria-192-cfb8", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-256-cbc", enc_main, enc_options},
+    {FT_cipher, "aria-256-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-256-cfb", enc_main, enc_options},
+    {FT_cipher, "aria-256-cfb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-256-ctr", enc_main, enc_options},
+    {FT_cipher, "aria-256-ctr", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-256-ecb", enc_main, enc_options},
+    {FT_cipher, "aria-256-ecb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-256-ofb", enc_main, enc_options},
+    {FT_cipher, "aria-256-ofb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-256-cfb1", enc_main, enc_options},
+    {FT_cipher, "aria-256-cfb1", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_ARIA
-    {FT_cipher, "aria-256-cfb8", enc_main, enc_options},
+    {FT_cipher, "aria-256-cfb8", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_CAMELLIA
-    {FT_cipher, "camellia-128-cbc", enc_main, enc_options},
+    {FT_cipher, "camellia-128-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_CAMELLIA
-    {FT_cipher, "camellia-128-ecb", enc_main, enc_options},
+    {FT_cipher, "camellia-128-ecb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_CAMELLIA
-    {FT_cipher, "camellia-192-cbc", enc_main, enc_options},
+    {FT_cipher, "camellia-192-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_CAMELLIA
-    {FT_cipher, "camellia-192-ecb", enc_main, enc_options},
+    {FT_cipher, "camellia-192-ecb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_CAMELLIA
-    {FT_cipher, "camellia-256-cbc", enc_main, enc_options},
+    {FT_cipher, "camellia-256-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_CAMELLIA
-    {FT_cipher, "camellia-256-ecb", enc_main, enc_options},
+    {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL},
 #endif
-    {FT_cipher, "base64", enc_main, enc_options},
+    {FT_cipher, "base64", enc_main, enc_options, NULL},
 #ifdef ZLIB
-    {FT_cipher, "zlib", enc_main, enc_options},
+    {FT_cipher, "zlib", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "des", enc_main, enc_options},
+    {FT_cipher, "des", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "des3", enc_main, enc_options},
+    {FT_cipher, "des3", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "desx", enc_main, enc_options},
+    {FT_cipher, "desx", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_IDEA
-    {FT_cipher, "idea", enc_main, enc_options},
+    {FT_cipher, "idea", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_SEED
-    {FT_cipher, "seed", enc_main, enc_options},
+    {FT_cipher, "seed", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_RC4
-    {FT_cipher, "rc4", enc_main, enc_options},
+    {FT_cipher, "rc4", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_RC4
-    {FT_cipher, "rc4-40", enc_main, enc_options},
+    {FT_cipher, "rc4-40", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_RC2
-    {FT_cipher, "rc2", enc_main, enc_options},
+    {FT_cipher, "rc2", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_BF
-    {FT_cipher, "bf", enc_main, enc_options},
+    {FT_cipher, "bf", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_CAST
-    {FT_cipher, "cast", enc_main, enc_options},
+    {FT_cipher, "cast", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_RC5
-    {FT_cipher, "rc5", enc_main, enc_options},
+    {FT_cipher, "rc5", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "des-ecb", enc_main, enc_options},
+    {FT_cipher, "des-ecb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "des-ede", enc_main, enc_options},
+    {FT_cipher, "des-ede", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "des-ede3", enc_main, enc_options},
+    {FT_cipher, "des-ede3", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "des-cbc", enc_main, enc_options},
+    {FT_cipher, "des-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "des-ede-cbc", enc_main, enc_options},
+    {FT_cipher, "des-ede-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "des-ede3-cbc", enc_main, enc_options},
+    {FT_cipher, "des-ede3-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "des-cfb", enc_main, enc_options},
+    {FT_cipher, "des-cfb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "des-ede-cfb", enc_main, enc_options},
+    {FT_cipher, "des-ede-cfb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "des-ede3-cfb", enc_main, enc_options},
+    {FT_cipher, "des-ede3-cfb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "des-ofb", enc_main, enc_options},
+    {FT_cipher, "des-ofb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "des-ede-ofb", enc_main, enc_options},
+    {FT_cipher, "des-ede-ofb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_DES
-    {FT_cipher, "des-ede3-ofb", enc_main, enc_options},
+    {FT_cipher, "des-ede3-ofb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_IDEA
-    {FT_cipher, "idea-cbc", enc_main, enc_options},
+    {FT_cipher, "idea-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_IDEA
-    {FT_cipher, "idea-ecb", enc_main, enc_options},
+    {FT_cipher, "idea-ecb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_IDEA
-    {FT_cipher, "idea-cfb", enc_main, enc_options},
+    {FT_cipher, "idea-cfb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_IDEA
-    {FT_cipher, "idea-ofb", enc_main, enc_options},
+    {FT_cipher, "idea-ofb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_SEED
-    {FT_cipher, "seed-cbc", enc_main, enc_options},
+    {FT_cipher, "seed-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_SEED
-    {FT_cipher, "seed-ecb", enc_main, enc_options},
+    {FT_cipher, "seed-ecb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_SEED
-    {FT_cipher, "seed-cfb", enc_main, enc_options},
+    {FT_cipher, "seed-cfb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_SEED
-    {FT_cipher, "seed-ofb", enc_main, enc_options},
+    {FT_cipher, "seed-ofb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_RC2
-    {FT_cipher, "rc2-cbc", enc_main, enc_options},
+    {FT_cipher, "rc2-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_RC2
-    {FT_cipher, "rc2-ecb", enc_main, enc_options},
+    {FT_cipher, "rc2-ecb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_RC2
-    {FT_cipher, "rc2-cfb", enc_main, enc_options},
+    {FT_cipher, "rc2-cfb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_RC2
-    {FT_cipher, "rc2-ofb", enc_main, enc_options},
+    {FT_cipher, "rc2-ofb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_RC2
-    {FT_cipher, "rc2-64-cbc", enc_main, enc_options},
+    {FT_cipher, "rc2-64-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_RC2
-    {FT_cipher, "rc2-40-cbc", enc_main, enc_options},
+    {FT_cipher, "rc2-40-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_BF
-    {FT_cipher, "bf-cbc", enc_main, enc_options},
+    {FT_cipher, "bf-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_BF
-    {FT_cipher, "bf-ecb", enc_main, enc_options},
+    {FT_cipher, "bf-ecb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_BF
-    {FT_cipher, "bf-cfb", enc_main, enc_options},
+    {FT_cipher, "bf-cfb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_BF
-    {FT_cipher, "bf-ofb", enc_main, enc_options},
+    {FT_cipher, "bf-ofb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_CAST
-    {FT_cipher, "cast5-cbc", enc_main, enc_options},
+    {FT_cipher, "cast5-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_CAST
-    {FT_cipher, "cast5-ecb", enc_main, enc_options},
+    {FT_cipher, "cast5-ecb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_CAST
-    {FT_cipher, "cast5-cfb", enc_main, enc_options},
+    {FT_cipher, "cast5-cfb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_CAST
-    {FT_cipher, "cast5-ofb", enc_main, enc_options},
+    {FT_cipher, "cast5-ofb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_CAST
-    {FT_cipher, "cast-cbc", enc_main, enc_options},
+    {FT_cipher, "cast-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_RC5
-    {FT_cipher, "rc5-cbc", enc_main, enc_options},
+    {FT_cipher, "rc5-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_RC5
-    {FT_cipher, "rc5-ecb", enc_main, enc_options},
+    {FT_cipher, "rc5-ecb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_RC5
-    {FT_cipher, "rc5-cfb", enc_main, enc_options},
+    {FT_cipher, "rc5-cfb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_RC5
-    {FT_cipher, "rc5-ofb", enc_main, enc_options},
+    {FT_cipher, "rc5-ofb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_SM4
-    {FT_cipher, "sm4-cbc", enc_main, enc_options},
+    {FT_cipher, "sm4-cbc", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_SM4
-    {FT_cipher, "sm4-ecb", enc_main, enc_options},
+    {FT_cipher, "sm4-ecb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_SM4
-    {FT_cipher, "sm4-cfb", enc_main, enc_options},
+    {FT_cipher, "sm4-cfb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_SM4
-    {FT_cipher, "sm4-ofb", enc_main, enc_options},
+    {FT_cipher, "sm4-ofb", enc_main, enc_options, NULL},
 #endif
 #ifndef OPENSSL_NO_SM4
-    {FT_cipher, "sm4-ctr", enc_main, enc_options},
+    {FT_cipher, "sm4-ctr", enc_main, enc_options, NULL},
 #endif
-    {0, NULL, NULL}
+    {0, NULL, NULL, NULL, NULL}
 };
index 1b304a03a70ac6185bead84409fa153103fc7eff..4f1d1c29af25867c2a4796e19dbb1dcec7b50e65 100644 (file)
@@ -94,20 +94,33 @@ EOF
         ciphers  => "sock",
         genrsa   => "rsa",
         rsautl   => "rsa",
-        gendsa   => "dsa",
-        dsaparam => "dsa",
         gendh    => "dh",
-        dhparam  => "dh",
         ecparam  => "ec",
         pkcs12   => "des",
     );
+    my %cmd_deprecated = (
+        dhparam  => [ "3_0", "pkeyparam", "dh" ],
+        dsaparam => [ "3_0", "pkeyparam", "dsa" ],
+        dsa      => [ "3_0", "pkey",      "dsa" ],
+        gendsa   => [ "3_0", "genpkey",   "dsa" ],
+    );
 
     print "FUNCTION functions[] = {\n";
     foreach my $cmd ( @ARGV ) {
         my $str =
-            "    {FT_general, \"$cmd\", ${cmd}_main, ${cmd}_options},\n";
+            "    {FT_general, \"$cmd\", ${cmd}_main, ${cmd}_options, NULL},\n";
         if ($cmd =~ /^s_/) {
             print "#ifndef OPENSSL_NO_SOCK\n${str}#endif\n";
+        } elsif (my $deprecated = $cmd_deprecated{$cmd}) {
+            my @dep = @{$deprecated};
+            print "#if ";
+            if ($dep[2]) {
+                print "!defined(OPENSSL_NO_" . uc($dep[2]) . ") && ";
+            }
+            print "!defined(OPENSSL_NO_DEPRECATED_" . $dep[0] . ")";
+            my $dalt = "\"" . $dep[1] . "\"";
+            $str =~ s/NULL/$dalt/;
+            print "\n${str}#endif\n";
         } elsif (grep { $cmd eq $_ } @disablables) {
             print "#ifndef OPENSSL_NO_" . uc($cmd) . "\n${str}#endif\n";
         } elsif (my $disabler = $cmd_disabler{$cmd}) {
@@ -131,7 +144,7 @@ EOF
         "mdc2", "rmd160", "blake2b512", "blake2s256",
         "sm3"
     ) {
-        my $str = "    {FT_md, \"$cmd\", dgst_main},\n";
+        my $str = "    {FT_md, \"$cmd\", dgst_main, NULL, NULL},\n";
         if (grep { $cmd eq $_ } @disablables) {
             print "#ifndef OPENSSL_NO_" . uc($cmd) . "\n${str}#endif\n";
         } elsif (my $disabler = $md_disabler{$cmd}) {
@@ -177,7 +190,7 @@ EOF
         "cast-cbc", "rc5-cbc", "rc5-ecb", "rc5-cfb", "rc5-ofb",
         "sm4-cbc", "sm4-ecb", "sm4-cfb", "sm4-ofb", "sm4-ctr"
     ) {
-        my $str = "    {FT_cipher, \"$cmd\", enc_main, enc_options},\n";
+        my $str = "    {FT_cipher, \"$cmd\", enc_main, enc_options, NULL},\n";
         (my $algo = $cmd) =~ s/-.*//g;
         if ($cmd eq "zlib") {
             print "#ifdef ZLIB\n${str}#endif\n";
@@ -190,5 +203,5 @@ EOF
         }
     }
 
-    print "    {0, NULL, NULL}\n};\n";
+    print "    {0, NULL, NULL, NULL, NULL}\n};\n";
 }