#include <ctype.h>
#include <limits.h>
#include <openssl/bio.h>
+#include <openssl/x509v3.h>
#define MAX_OPT_HELP_WIDTH 30
const char OPT_HELP_STR[] = "--";
/*
* Return the simple name of the program; removing various platform gunk.
*/
-#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_NETWARE)
+#if defined(OPENSSL_SYS_WIN32)
char *opt_progname(const char *argv0)
{
size_t i, n;
if (n > 4 &&
(strcmp(&p[n - 4], ".exe") == 0 || strcmp(&p[n - 4], ".EXE") == 0))
n -= 4;
-#if defined(OPENSSL_SYS_NETWARE)
- if (n > 4 &&
- (strcmp(&p[n - 4], ".nlm") == 0 || strcmp(&p[n - 4], ".NLM") == 0))
- n -= 4;
-#endif
/* Copy over the name, in lowercase. */
if (n > sizeof prog - 1)
unknown = NULL;
for (; o->name; ++o) {
- const OPTIONS *next;
#ifndef NDEBUG
+ const OPTIONS *next;
int duplicated, i;
#endif
assert(o->name[0] != '-');
assert(o->retval > 0);
switch (i) {
- case 0: case '-': case '/': case '<': case '>': case 'F': case 'M':
- case 'L': case 'U': case 'f': case 'n': case 'p': case 's': case 'u':
+ case 0: case '-': case '/': case '<': case '>': case 'E': case 'F':
+ case 'M': case 'U': case 'f': case 'l': case 'n': case 'p': case 's':
+ case 'u':
break;
default:
assert(0);
long l;
char *endp;
+ errno = 0;
l = strtol(value, &endp, 0);
if (*endp
|| endp == value
intmax_t m;
char *endp;
+ errno = 0;
m = strtoimax(value, &endp, 0);
if (*endp
|| endp == value
uintmax_t m;
char *endp;
+ errno = 0;
m = strtoumax(value, &endp, 0);
if (*endp
|| endp == value
char *endptr;
unsigned long l;
+ errno = 0;
l = strtoul(value, &endptr, 0);
if (*endptr
|| endptr == value
if (i >= 0)
X509_VERIFY_PARAM_set_depth(vpm, i);
break;
+ case OPT_V_VERIFY_AUTH_LEVEL:
+ i = atoi(opt_arg());
+ if (i >= 0)
+ X509_VERIFY_PARAM_set_auth_level(vpm, i);
+ break;
case OPT_V_ATTIME:
if (!opt_imax(opt_arg(), &t))
return 0;
X509_VERIFY_PARAM_set_flags(vpm, X509_V_FLAG_IGNORE_CRITICAL);
break;
case OPT_V_ISSUER_CHECKS:
- X509_VERIFY_PARAM_set_flags(vpm, X509_V_FLAG_CB_ISSUER_CHECK);
+ /* NOP, deprecated */
break;
case OPT_V_CRL_CHECK:
X509_VERIFY_PARAM_set_flags(vpm, X509_V_FLAG_CRL_CHECK);
return -1;
}
break;
- case 'L':
+ case 'l':
if (!opt_long(arg, &lval)) {
BIO_printf(bio_err,
"%s: Invalid number \"%s\" for -%s\n",
return -1;
}
break;
- case 'f':
+ case 'E':
case 'F':
+ case 'f':
if (opt_format(arg,
+ o->valtype == 'E' ? OPT_FMT_PDE :
o->valtype == 'F' ? OPT_FMT_PEMDER
: OPT_FMT_ANY, &ival))
break;
static const char *valtype2param(const OPTIONS *o)
{
switch (o->valtype) {
+ case 0:
case '-':
return "";
case 's':
case '>':
return "outfile";
case 'p':
- return "pnum";
+ return "+int";
case 'n':
- return "num";
+ return "int";
+ case 'l':
+ return "long";
case 'u':
- return "unum";
+ return "ulong";
+ case 'E':
+ return "PEM|DER|ENGINE";
case 'F':
- return "der/pem";
+ return "PEM|DER";
case 'f':
return "format";
+ case 'M':
+ return "intmax";
+ case 'U':
+ return "uintmax";
}
return "parm";
}