summaryrefslogtreecommitdiff
path: root/apps/spkac.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/spkac.c')
-rw-r--r--apps/spkac.c130
1 files changed, 64 insertions, 66 deletions
diff --git a/apps/spkac.c b/apps/spkac.c
index 64ff6bd3a0..2237080859 100644
--- a/apps/spkac.c
+++ b/apps/spkac.c
@@ -87,92 +87,90 @@ const char* spkac_help[] = {
NULL
};
+enum options {
+ OPT_ERR = -1, OPT_EOF = 0,
+ OPT_NOOUT, OPT_PUBKEY, OPT_VERIFY, OPT_IN, OPT_OUT,
+ OPT_ENGINE, OPT_KEY, OPT_CHALLENGE, OPT_PASSIN, OPT_SPKAC,
+ OPT_SPKSECT,
+};
+static OPTIONS options[] = {
+ { "noout", OPT_NOOUT, '-' },
+ { "pubkey", OPT_PUBKEY, '-' },
+ { "verify", OPT_VERIFY, '-' },
+ { "in", OPT_IN, '<' },
+ { "out", OPT_OUT, '>' },
+ { "engine", OPT_ENGINE, 's' },
+ { "key", OPT_KEY, '<' },
+ { "challenge", OPT_CHALLENGE, 's' },
+ { "passin", OPT_PASSIN, 's' },
+ { "spkac", OPT_SPKAC, 's' },
+ { "spksect", OPT_SPKSECT, 's' },
+ { NULL }
+};
+
int spkac_main(int argc, char **argv)
{
ENGINE *e = NULL;
- int i,badops=0, ret = 1;
+ int i, ret = 1;
BIO *in = NULL,*out = NULL;
int verify=0,noout=0,pubkey=0;
char *infile = NULL,*outfile = NULL,*prog;
- char *passargin = NULL, *passin = NULL;
+ char *passinarg = NULL, *passin = NULL;
const char *spkac = "SPKAC", *spksect = "default";
char *spkstr = NULL;
char *challenge = NULL, *keyfile = NULL;
CONF *conf = NULL;
NETSCAPE_SPKI *spki = NULL;
EVP_PKEY *pkey = NULL;
-#ifndef OPENSSL_NO_ENGINE
char *engine=NULL;
-#endif
+ enum options o;
- prog=argv[0];
- argc--;
- argv++;
- while (argc >= 1)
- {
- if (strcmp(*argv,"-in") == 0)
- {
- if (--argc < 1) goto bad;
- infile= *(++argv);
- }
- else if (strcmp(*argv,"-out") == 0)
- {
- if (--argc < 1) goto bad;
- outfile= *(++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;
- keyfile= *(++argv);
- }
- else if (strcmp(*argv,"-challenge") == 0)
- {
- if (--argc < 1) goto bad;
- challenge= *(++argv);
- }
- else if (strcmp(*argv,"-spkac") == 0)
- {
- if (--argc < 1) goto bad;
- spkac= *(++argv);
- }
- else if (strcmp(*argv,"-spksect") == 0)
- {
- if (--argc < 1) goto bad;
- spksect= *(++argv);
- }
-#ifndef OPENSSL_NO_ENGINE
- else if (strcmp(*argv,"-engine") == 0)
- {
- if (--argc < 1) goto bad;
- engine= *(++argv);
- }
-#endif
- else if (strcmp(*argv,"-noout") == 0)
+ prog = opt_init(argc, argv, options);
+ while ((o = opt_next()) != OPT_EOF) {
+ switch (o) {
+ case OPT_EOF:
+ case OPT_ERR:
+ BIO_printf(bio_err,"Valid options are:\n");
+ printhelp(spkac_help);
+ goto end;
+ case OPT_IN:
+ infile = opt_arg();
+ break;
+ case OPT_OUT:
+ outfile = opt_arg();
+ break;
+ case OPT_NOOUT:
noout=1;
- else if (strcmp(*argv,"-pubkey") == 0)
+ break;
+ case OPT_PUBKEY:
pubkey=1;
- else if (strcmp(*argv,"-verify") == 0)
+ break;
+ case OPT_VERIFY:
verify=1;
- else badops = 1;
- argc--;
- argv++;
- }
+ break;
+ case OPT_PASSIN:
+ passinarg= opt_arg();
+ break;
+ case OPT_KEY:
+ keyfile= opt_arg();
+ break;
+ case OPT_CHALLENGE:
+ challenge= opt_arg();
+ break;
+ case OPT_SPKAC:
+ spkac= opt_arg();
+ break;
+ case OPT_SPKSECT:
+ spksect= opt_arg();
+ break;
+ case OPT_ENGINE:
+ engine= opt_arg();
+ break;
- if (badops)
- {
-bad:
- BIO_printf(bio_err,"spkac [options]\n");
- BIO_printf(bio_err,"where options are\n");
- printhelp(spkac_help);
- goto end;
}
+ }
- if(!app_passwd(bio_err, passargin, NULL, &passin, NULL)) {
+ if(!app_passwd(bio_err, passinarg, NULL, &passin, NULL)) {
BIO_printf(bio_err, "Error getting password\n");
goto end;
}