Add -keyform. Document -engine.
[openssl.git] / apps / rsautl.c
index 662c11a70bdc1ad59524ad66932de6215f7888c6..e4bc219063a7942a3b54454d75f0174387b734ef 100644 (file)
@@ -62,7 +62,6 @@
 #include <string.h>
 #include <openssl/err.h>
 #include <openssl/pem.h>
-#include <openssl/engine.h>
 
 #define RSA_SIGN       1
 #define RSA_VERIFY     2
@@ -120,6 +119,9 @@ int MAIN(int argc, char **argv)
                } else if(!strcmp(*argv, "-inkey")) {
                        if (--argc < 1) badarg = 1;
                        keyfile = *(++argv);
+               } else if (strcmp(*argv,"-keyform") == 0) {
+                       if (--argc < 1) goto bad;
+                       keyform=str2fmt(*(++argv));
                } else if(!strcmp(*argv, "-engine")) {
                        if (--argc < 1) badarg = 1;
                        engine = *(++argv);
@@ -157,38 +159,25 @@ int MAIN(int argc, char **argv)
                goto end;
        }
 
-       if (engine != NULL)
-               {
-               if((e = ENGINE_by_id(engine)) == NULL)
-                       {
-                       BIO_printf(bio_err,"invalid engine \"%s\"\n",
-                               engine);
-                       goto end;
-                       }
-               if(!ENGINE_set_default(e, ENGINE_METHOD_ALL))
-                       {
-                       BIO_printf(bio_err,"can't use that engine\n");
-                       goto end;
-                       }
-               BIO_printf(bio_err,"engine \"%s\" set.\n", engine);
-               /* Free our "structural" reference. */
-               ENGINE_free(e);
-               }
+        e = setup_engine(bio_err, engine, 0);
 
 /* FIXME: seed PRNG only if needed */
        app_RAND_load_file(NULL, bio_err, 0);
        
        switch(key_type) {
                case KEY_PRIVKEY:
-               pkey = load_key(bio_err, keyfile, keyform, NULL, e);
+               pkey = load_key(bio_err, keyfile, keyform,
+                       NULL, e, "Private Key");
                break;
 
                case KEY_PUBKEY:
-               pkey = load_pubkey(bio_err, keyfile, keyform, e);
+               pkey = load_pubkey(bio_err, keyfile, keyform,
+                       NULL, e, "Public Key");
                break;
 
                case KEY_CERT:
-               x = load_cert(bio_err, keyfile, keyform);
+               x = load_cert(bio_err, keyfile, keyform,
+                       NULL, e, "Certificate");
                if(x) {
                        pkey = X509_get_pubkey(x);
                        X509_free(x);
@@ -197,7 +186,6 @@ int MAIN(int argc, char **argv)
        }
 
        if(!pkey) {
-               BIO_printf(bio_err, "Error loading key\n");
                return 1;
        }
 
@@ -302,6 +290,7 @@ static void usage()
        BIO_printf(bio_err, "-in file        input file\n");
        BIO_printf(bio_err, "-out file       output file\n");
        BIO_printf(bio_err, "-inkey file     input key\n");
+       BIO_printf(bio_err, "-keyform arg    private key format - default PEM\n");
        BIO_printf(bio_err, "-pubin          input is an RSA public\n");
        BIO_printf(bio_err, "-certin         input is a certificate carrying an RSA public key\n");
        BIO_printf(bio_err, "-ssl            use SSL v2 padding\n");
@@ -313,6 +302,8 @@ static void usage()
        BIO_printf(bio_err, "-encrypt        encrypt with public key\n");
        BIO_printf(bio_err, "-decrypt        decrypt with private key\n");
        BIO_printf(bio_err, "-hexdump        hex dump output\n");
+       BIO_printf(bio_err, "-engine e       use engine e, possibly a hardware device.\n");
+
 }
 
 #endif