int MAIN(int argc, char **argv)
{
- char *key=NULL;
+ char *key=NULL,*passargin=NULL;
int total=0;
int total_done=0;
int badops=0;
if (--argc < 1) goto bad;
keyfile= *(++argv);
}
+ else if (strcmp(*argv,"-passin") == 0)
+ {
+ if (--argc < 1) goto bad;
+ passargin= *(++argv);
+ }
else if (strcmp(*argv,"-key") == 0)
{
if (--argc < 1) goto bad;
lookup_fail(section,ENV_PRIVATE_KEY);
goto err;
}
+ if(!key && !app_passwd(bio_err, passargin, NULL, &key, NULL))
+ {
+ BIO_printf(bio_err,"Error getting password\n");
+ goto err;
+ }
if (BIO_read_filename(in,keyfile) <= 0)
{
perror(keyfile);
if (verbose)
{
BIO_set_fp(out,stdout,BIO_NOCLOSE|BIO_FP_TEXT); /* cannot fail */
+#ifdef VMS
+ {
+ BIO *tmpbio = BIO_new(BIO_f_linebuffer());
+ out = BIO_push(tmpbio, out);
+ }
+#endif
TXT_DB_write(out,db);
BIO_printf(bio_err,"%d entries loaded from the database\n",
db->data->num);
}
}
else
+ {
BIO_set_fp(Sout,stdout,BIO_NOCLOSE|BIO_FP_TEXT);
+#ifdef VMS
+ {
+ BIO *tmpbio = BIO_new(BIO_f_linebuffer());
+ Sout = BIO_push(tmpbio, Sout);
+ }
+#endif
+ }
}
if (req)
#endif
BIO_free(in);
- BIO_free(out);
+ BIO_free_all(out);
in=NULL;
out=NULL;
if (rename(serialfile,buf[2]) < 0)
ret=0;
err:
BIO_free(hex);
- BIO_free(Cout);
- BIO_free(Sout);
- BIO_free(out);
+ BIO_free_all(Cout);
+ BIO_free_all(Sout);
+ BIO_free_all(out);
BIO_free(in);
sk_X509_pop_free(cert_sk,X509_free);
BIO_puts(out,"\n");
ret=1;
err:
- if (out != NULL) BIO_free(out);
+ if (out != NULL) BIO_free_all(out);
if (ai != NULL) ASN1_INTEGER_free(ai);
return(ret);
}