Commit 95874603 authored by Richard Levitte's avatar Richard Levitte
Browse files

Add -keyform.

parent ed2e24d5
Loading
Loading
Loading
Loading
+20 −5
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ int MAIN(int argc, char **argv)
	char *inrand = NULL;
	int need_rand = 0;
	int informat = FORMAT_SMIME, outformat = FORMAT_SMIME;
        int keyform = FORMAT_PEM;
	char *engine=NULL;

	args = argv + 1;
@@ -195,6 +196,11 @@ int MAIN(int argc, char **argv)
				args++;
				keyfile = *args;
			} else badarg = 1;
		} else if (!strcmp (*args, "-keyform")) {
			if (args[1]) {
				args++;
				keyform = str2fmt(*args);
			} else badarg = 1;
		} else if (!strcmp (*args, "-certfile")) {
			if (args[1]) {
				args++;
@@ -288,6 +294,7 @@ int MAIN(int argc, char **argv)
		BIO_printf (bio_err, "-in file       input file\n");
		BIO_printf (bio_err, "-inform arg    input format SMIME (default), PEM or DER\n");
		BIO_printf (bio_err, "-inkey file    input private key (if not signer or recipient)\n");
		BIO_printf (bio_err, "-keyform arg   input private key format (PEM or ENGINE)\n");
		BIO_printf (bio_err, "-out file      output file\n");
		BIO_printf (bio_err, "-outform arg   output format SMIME (default), PEM or DER\n");
		BIO_printf (bio_err, "-content file  supply or override content for detached signature\n");
@@ -399,12 +406,20 @@ int MAIN(int argc, char **argv)
	} else keyfile = NULL;

	if(keyfile) {
                if (keyform == FORMAT_ENGINE) {
        		if (!e) {
        			BIO_printf(bio_err,"no engine specified\n");
                		goto err;
			}
                        key = ENGINE_load_private_key(e, keyfile, passin);
                } else {
                        if(!(key = load_key(bio_err,keyfile, FORMAT_PEM, passin, NULL))) {
                                BIO_printf(bio_err, "Can't read recipient certificate file %s\n", keyfile);
        			ERR_print_errors(bio_err);
                		goto end;
                        }
                }
	}

	if (infile) {
		if (!(in = BIO_new_file(infile, inmode))) {