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