]> git.ipfire.org Git - thirdparty/openssl.git/blobdiff - apps/dsa.c
dsa: deprecate applications that depend on the low level DSA functions.
[thirdparty/openssl.git] / apps / dsa.c
index 8ba93050303846765a370601f9f56b2ef3c1265e..0156ff83734dd20cdcd8e33c4cf67b11141a7030 100644 (file)
@@ -7,8 +7,11 @@
  * https://www.openssl.org/source/license.html
  */
 
+/* We need to use the deprecated DSA_print */
+#define OPENSSL_SUPPRESS_DEPRECATED
+
 #include <openssl/opensslconf.h>
-#ifdef OPENSSL_NO_DSA
+#if defined(OPENSSL_NO_DSA) || defined(OPENSSL_NO_DEPRECATED_3_0)
 NON_EMPTY_TRANSLATION_UNIT
 #else
 
@@ -81,7 +84,6 @@ int dsa_main(int argc, char **argv)
     int pvk_encr = 2;
 # endif
     int private = 0;
-    EVP_PKEY *pkey = NULL;
 
     prog = opt_init(argc, argv, dsa_options);
     while ((o = opt_next()) != OPT_EOF) {
@@ -161,13 +163,19 @@ int dsa_main(int argc, char **argv)
     }
 
     BIO_printf(bio_err, "read DSA key\n");
-    if (pubin)
-        pkey = load_pubkey(infile, informat, 1, passin, e, "Public Key");
-    else
-        pkey = load_key(infile, informat, 1, passin, e, "Private Key");
+    {
+        EVP_PKEY *pkey;
+
+        if (pubin)
+            pkey = load_pubkey(infile, informat, 1, passin, e, "Public Key");
+        else
+            pkey = load_key(infile, informat, 1, passin, e, "Private Key");
 
-    if (pkey != NULL)
-        dsa = EVP_PKEY_get1_DSA(pkey);
+        if (pkey != NULL) {
+            dsa = EVP_PKEY_get1_DSA(pkey);
+            EVP_PKEY_free(pkey);
+        }
+    }
 
     if (dsa == NULL) {
         BIO_printf(bio_err, "unable to load Key\n");
@@ -181,7 +189,7 @@ int dsa_main(int argc, char **argv)
 
     if (text) {
         assert(pubin || private);
-        if (!EVP_PKEY_print_private(out, pkey, 0, NULL)) {
+        if (!DSA_print(out, dsa, 0)) {
             perror(outfile);
             ERR_print_errors(bio_err);
             goto end;
@@ -257,7 +265,6 @@ int dsa_main(int argc, char **argv)
     }
     ret = 0;
  end:
-    EVP_PKEY_free(pkey);
     BIO_free_all(out);
     DSA_free(dsa);
     release_engine(e);