Workaround for Windoze weirdness.
[openssl.git] / apps / smime.c
index 0d87960d69e315cd4f686e032de2fc54f7158c9e..27e8dcfb44d7ba4e3beeea8beecde9c0a5368b71 100644 (file)
@@ -101,7 +101,8 @@ int MAIN(int argc, char **argv)
        int badarg = 0;
        int flags = PKCS7_DETACHED;
        char *to = NULL, *from = NULL, *subject = NULL;
-       char *CAfile = NULL, *CApath = NULL, *passin = NULL;
+       char *CAfile = NULL, *CApath = NULL;
+       char *passargin = NULL, *passin = NULL;
        char *inrand = NULL;
        int need_rand = 0;
        args = argv + 1;
@@ -155,17 +156,7 @@ int MAIN(int argc, char **argv)
                } else if (!strcmp(*args,"-passin")) {
                        if (args[1]) {
                                args++;
-                               passin = *args;
-                       } else badarg = 1;
-               } else if (!strcmp(*argv,"-envpassin")) {
-                       if (args[1]) {
-                               args++;
-                               if(!(passin= getenv(*args))) {
-                                       BIO_printf(bio_err,
-                                        "Can't read environment variable %s\n",
-                                                               *args);
-                                       badarg = 1;
-                               }
+                               passargin = *args;
                        } else badarg = 1;
                } else if (!strcmp (*args, "-to")) {
                        if (args[1]) {
@@ -281,13 +272,18 @@ int MAIN(int argc, char **argv)
                BIO_printf (bio_err, "-text          include or delete text MIME headers\n");
                BIO_printf (bio_err, "-CApath dir    trusted certificates directory\n");
                BIO_printf (bio_err, "-CAfile file   trusted certificates file\n");
-               BIO_printf(bio_err,  "-rand file:file:...\n");
+               BIO_printf(bio_err,  "-rand file%cfile%c...\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
                BIO_printf(bio_err,  "               load the file (or the files in the directory) into\n");
                BIO_printf(bio_err,  "               the random number generator\n");
                BIO_printf (bio_err, "cert.pem       recipient certificate(s) for encryption\n");
                goto end;
        }
 
+       if(!app_passwd(bio_err, passargin, NULL, &passin, NULL)) {
+               BIO_printf(bio_err, "Error getting password\n");
+               goto end;
+       }
+
        if (need_rand) {
                app_RAND_load_file(NULL, bio_err, (inrand != NULL));
                if (inrand != NULL)
@@ -492,9 +488,9 @@ int MAIN(int argc, char **argv)
                }
 #ifdef CRYPTO_MDEBUG
                CRYPTO_pop_info();
-               CRYPTO_push_info("PKCS7_iget_signers");
+               CRYPTO_push_info("PKCS7_get0_signers");
 #endif         
-               signers = PKCS7_iget_signers(p7, other, flags);
+               signers = PKCS7_get0_signers(p7, other, flags);
 #ifdef CRYPTO_MDEBUG
                CRYPTO_pop_info();
                CRYPTO_push_info("save_certs");
@@ -536,6 +532,7 @@ end:
        BIO_free(in);
        BIO_free(indata);
        BIO_free(out);
+       if(passin) Free(passin);
        return (ret);
 }
 
@@ -554,7 +551,7 @@ static EVP_PKEY *load_key(char *file, char *pass)
        BIO *in;
        EVP_PKEY *key;
        if(!(in = BIO_new_file(file, "r"))) return NULL;
-       key = PEM_read_bio_PrivateKey(in, NULL,PEM_cb,pass);
+       key = PEM_read_bio_PrivateKey(in, NULL,NULL,pass);
        BIO_free(in);
        return key;
 }
@@ -634,7 +631,7 @@ static X509_STORE *setup_verify(char *CAfile, char *CApath)
        return NULL;
 }
 
-int save_certs(char *signerfile, STACK_OF(X509) *signers)
+static int save_certs(char *signerfile, STACK_OF(X509) *signers)
 {
        int i;
        BIO *tmp;