pretty up the main() getopt loop
parent
48a2a5afec
commit
5a46b4505e
|
@ -22,10 +22,15 @@
|
|||
|
||||
/* Enumerated types for long arguments */
|
||||
enum {
|
||||
/* @temporary: implement modes as arguments */
|
||||
ENCRYPT = 1000,
|
||||
DECRYPT,
|
||||
BENCHMARK,
|
||||
HASH,
|
||||
X509,
|
||||
REQUEST,
|
||||
GEN_KEY,
|
||||
|
||||
INFILE,
|
||||
OUTFILE,
|
||||
PASSWORD,
|
||||
|
@ -37,26 +42,27 @@ enum {
|
|||
TIME,
|
||||
VERIFY,
|
||||
VERBOSE,
|
||||
X509,
|
||||
INFORM,
|
||||
OUTFORM,
|
||||
NOOUT,
|
||||
TEXT_OUT,
|
||||
SILENT,
|
||||
REQUEST,
|
||||
GEN_KEY,
|
||||
OUTPUT,
|
||||
HELP1, /* "-help" */
|
||||
HELP2, /* "-h" */
|
||||
HELP,
|
||||
};
|
||||
|
||||
/* Structure for holding long arguments */
|
||||
static struct option long_options[] = {
|
||||
|
||||
{"encrypt", required_argument, 0, ENCRYPT },
|
||||
{"decrypt", required_argument, 0, DECRYPT },
|
||||
{"bench", required_argument, 0, BENCHMARK },
|
||||
{"hash", required_argument, 0, HASH },
|
||||
/* @temporary: implement modes as flags */
|
||||
{"encrypt", optional_argument, 0, ENCRYPT },
|
||||
{"decrypt", optional_argument, 0, DECRYPT },
|
||||
{"bench", optional_argument, 0, BENCHMARK },
|
||||
{"hash", optional_argument, 0, HASH },
|
||||
{"x509", no_argument, 0, X509 },
|
||||
{"req", optional_argument, 0, REQUEST },
|
||||
{"genkey", optional_argument, 0, GEN_KEY },
|
||||
|
||||
{"in", required_argument, 0, INFILE },
|
||||
{"out", required_argument, 0, OUTFILE },
|
||||
{"pwd", required_argument, 0, PASSWORD },
|
||||
|
@ -68,21 +74,18 @@ static struct option long_options[] = {
|
|||
{"time", required_argument, 0, TIME },
|
||||
{"verify", 0, 0, VERIFY },
|
||||
{"verbose", 0, 0, VERBOSE },
|
||||
{"x509", 0, 0, X509 },
|
||||
{"inform", required_argument, 0, INFORM },
|
||||
{"outform", required_argument, 0, OUTFORM },
|
||||
{"noout", 0, 0, NOOUT },
|
||||
{"text", 0, 0, TEXT_OUT },
|
||||
{"silent", 0, 0, SILENT },
|
||||
{"req", 0, 0, REQUEST },
|
||||
{"genkey", 0, 0, GEN_KEY },
|
||||
{"output", 0, 0, OUTPUT },
|
||||
{"help", 0, 0, HELP1 },
|
||||
{"h", 0, 0, HELP2 },
|
||||
{"help", 0, 0, HELP },
|
||||
{"h", 0, 0, HELP },
|
||||
{"v", 0, 0, 'v' },
|
||||
{"version", 0, 0, 'v' },
|
||||
{0, 0, 0, 0}
|
||||
|
||||
{0, 0, 0, 0} /* terminal element */
|
||||
};
|
||||
|
||||
/* method for converting arguments to lower case */
|
||||
|
|
|
@ -31,6 +31,8 @@
|
|||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
int flag = 0;
|
||||
char* mode = "";
|
||||
int ret = 0;
|
||||
int option = 0;
|
||||
int ignoreIn = 0;
|
||||
|
@ -42,6 +44,7 @@ int main(int argc, char** argv)
|
|||
printf("Main Help.\n");
|
||||
wolfCLU_help();
|
||||
}
|
||||
|
||||
/* Set ignore variables for -in and -out files */
|
||||
ret = wolfCLU_checkForArg("-in", 3, argc, argv);
|
||||
if (ret > 0) {
|
||||
|
@ -52,9 +55,8 @@ int main(int argc, char** argv)
|
|||
ignoreOut = ret + 1;
|
||||
}
|
||||
|
||||
|
||||
/* flexibility: allow users to input any CAPS or lower case,
|
||||
* we will do all processing on lower case only. */
|
||||
/* flexibility: allow users to input any CAPS or lower case, we will do all
|
||||
* processing on lower case only. except where ignored */
|
||||
for (i = 0; i < argc; i++) {
|
||||
if (i != ignoreIn && i != ignoreOut) {
|
||||
convert_to_lower(argv[i], (int) XSTRLEN(argv[i]));
|
||||
|
@ -65,86 +67,107 @@ int main(int argc, char** argv)
|
|||
long_options, &long_index )) != -1) {
|
||||
|
||||
switch (option) {
|
||||
/* Encrypt */
|
||||
case ENCRYPT: ret = wolfCLU_setup(argc, argv, 'e');
|
||||
break;
|
||||
/* Decrypt */
|
||||
case DECRYPT: ret = wolfCLU_setup(argc, argv, 'd');;
|
||||
break;
|
||||
/* Benchmark */
|
||||
case BENCHMARK:ret = wolfCLU_benchSetup(argc, argv);
|
||||
break;
|
||||
/* Hash */
|
||||
case HASH: ret = wolfCLU_hashSetup(argc, argv);
|
||||
break;
|
||||
/* x509 Certificate processing */
|
||||
case X509: ret = wolfCLU_certSetup(argc, argv);
|
||||
break;
|
||||
/* x509 Certificate request */
|
||||
case REQUEST: ret = wolfCLU_requestSetup(argc, argv);
|
||||
break;
|
||||
case GEN_KEY: ret = wolfCLU_genKeySetup(argc, argv);
|
||||
break;
|
||||
/* Ignore the following arguments for now. Will be handled by their respective
|
||||
* setups IE Crypto setup, Benchmark setup, or Hash Setup */
|
||||
|
||||
/* File passed in by user */
|
||||
case INFILE: break;
|
||||
/* Output file */
|
||||
case OUTFILE: break;
|
||||
/* Password */
|
||||
case PASSWORD: break;
|
||||
/* Key if used must be in hex */
|
||||
case KEY: break;
|
||||
/* IV if used must be in hex */
|
||||
case IV: break;
|
||||
/* Opt to benchmark all available algorithms */
|
||||
case ALL: break;
|
||||
/* size for hash or key to output */
|
||||
case SIZE: break;
|
||||
/* exponent for generating RSA key */
|
||||
case EXPONENT: break;
|
||||
/* Time to benchmark for 1-10 seconds optional default: 3s */
|
||||
case TIME: break;
|
||||
/* Verify results, used with -iv and -key */
|
||||
case VERIFY: break;
|
||||
/* Certificate Stuff*/
|
||||
case INFORM: break;
|
||||
case OUTFORM: break;
|
||||
case OUTPUT: break;
|
||||
case NOOUT: break;
|
||||
case TEXT_OUT: break;
|
||||
case SILENT: break;
|
||||
case HELP1:
|
||||
if (argc == 2) {
|
||||
printf("Main help menu:\n");
|
||||
wolfCLU_help();
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case HELP2:
|
||||
if (argc == 2) {
|
||||
printf("Main help menu:\n");
|
||||
wolfCLU_help();
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
/* which version of clu am I using */
|
||||
case VERBOSE:
|
||||
wolfCLU_verboseHelp();
|
||||
return 0;
|
||||
/*End of ignored arguments */
|
||||
/* @temporary: implement the modes as arguments */
|
||||
case ENCRYPT:
|
||||
case DECRYPT:
|
||||
case BENCHMARK:
|
||||
case HASH:
|
||||
case X509:
|
||||
case REQUEST:
|
||||
case GEN_KEY:
|
||||
if (!flag) flag = option;
|
||||
break;
|
||||
|
||||
case 'v': wolfCLU_version();
|
||||
return 0;
|
||||
/*
|
||||
* Ignore the following arguments for now. They will be handled by
|
||||
* their respective setups (e.g. Crypto setup, Benchmark setup, or
|
||||
* Hash Setup)
|
||||
*/
|
||||
|
||||
default:
|
||||
printf("Main help default.\n");
|
||||
wolfCLU_help();
|
||||
return 0;
|
||||
case INFILE: /* File passed in by user */
|
||||
case OUTFILE: /* Output file */
|
||||
case PASSWORD: /* Password */
|
||||
case KEY: /* Key if used must be in hex */
|
||||
case IV: /* IV if used must be in hex */
|
||||
case ALL: /* Opt to benchmark all available algorithms */
|
||||
case SIZE: /* size for hash or key to output */
|
||||
case EXPONENT: /* exponent for generating RSA key */
|
||||
case TIME: /* Time to benchmark for */
|
||||
case VERIFY: /* Verify results, used with -iv and -key */
|
||||
case INFORM: /* Certificate Stuff */
|
||||
case OUTFORM:
|
||||
case OUTPUT:
|
||||
case NOOUT:
|
||||
case TEXT_OUT:
|
||||
case SILENT:
|
||||
/* do nothing. */
|
||||
break;
|
||||
|
||||
/*
|
||||
* End of ignored arguments
|
||||
*/
|
||||
|
||||
case HELP:
|
||||
/* only print for -help if no mode has been declared */
|
||||
if (!flag) {
|
||||
printf("Main help menu:\n");
|
||||
wolfCLU_help();
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case VERBOSE:
|
||||
wolfCLU_verboseHelp();
|
||||
return 0;
|
||||
|
||||
case 'v':
|
||||
wolfCLU_version();
|
||||
return 0;
|
||||
|
||||
default:
|
||||
printf("Main help default.\n");
|
||||
wolfCLU_help();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* @temporary: implement mode as a flag */
|
||||
switch (flag) {
|
||||
case 0:
|
||||
printf("No mode provided.\n");
|
||||
ret = 0;
|
||||
break;
|
||||
|
||||
case ENCRYPT:
|
||||
ret = wolfCLU_setup(argc, argv, 'e');
|
||||
break;
|
||||
|
||||
case DECRYPT:
|
||||
ret = wolfCLU_setup(argc, argv, 'd');
|
||||
break;
|
||||
|
||||
case BENCHMARK:
|
||||
ret = wolfCLU_benchSetup(argc, argv);
|
||||
break;
|
||||
|
||||
case HASH:
|
||||
ret = wolfCLU_hashSetup(argc, argv);
|
||||
break;
|
||||
|
||||
case X509:
|
||||
ret = wolfCLU_certSetup(argc, argv);
|
||||
break;
|
||||
|
||||
case REQUEST:
|
||||
ret = wolfCLU_requestSetup(argc, argv);
|
||||
break;
|
||||
|
||||
case GEN_KEY:
|
||||
ret = wolfCLU_genKeySetup(argc, argv);
|
||||
break;
|
||||
}
|
||||
|
||||
if (ret != 0)
|
||||
printf("Error returned: %d.\n", ret);
|
||||
|
||||
|
|
Loading…
Reference in New Issue