Add -attime.
This commit is contained in:
parent
f851acbfff
commit
be23b71e87
3
CHANGES
3
CHANGES
@ -4,6 +4,9 @@
|
|||||||
|
|
||||||
Changes between 1.0.0d and 1.0.1 [xx XXX xxxx]
|
Changes between 1.0.0d and 1.0.1 [xx XXX xxxx]
|
||||||
|
|
||||||
|
*) Add -attime option to openssl verify.
|
||||||
|
[Peter Eckersley <pde@eff.org> and Ben Laurie]
|
||||||
|
|
||||||
*) Redirect DSA and DH operations to FIPS module in FIPS mode.
|
*) Redirect DSA and DH operations to FIPS module in FIPS mode.
|
||||||
[Steve Henson]
|
[Steve Henson]
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@
|
|||||||
static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx);
|
static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx);
|
||||||
static int check(X509_STORE *ctx, char *file,
|
static int check(X509_STORE *ctx, char *file,
|
||||||
STACK_OF(X509) *uchain, STACK_OF(X509) *tchain,
|
STACK_OF(X509) *uchain, STACK_OF(X509) *tchain,
|
||||||
STACK_OF(X509_CRL) *crls, ENGINE *e);
|
STACK_OF(X509_CRL) *crls, ENGINE *e, time_t at_time);
|
||||||
static int v_verbose=0, vflags = 0;
|
static int v_verbose=0, vflags = 0;
|
||||||
|
|
||||||
int MAIN(int, char **);
|
int MAIN(int, char **);
|
||||||
@ -83,6 +83,9 @@ int MAIN(int argc, char **argv)
|
|||||||
int i,ret=1, badarg = 0;
|
int i,ret=1, badarg = 0;
|
||||||
char *CApath=NULL,*CAfile=NULL;
|
char *CApath=NULL,*CAfile=NULL;
|
||||||
char *untfile = NULL, *trustfile = NULL, *crlfile = NULL;
|
char *untfile = NULL, *trustfile = NULL, *crlfile = NULL;
|
||||||
|
char *checktime_string = NULL;
|
||||||
|
long int timestamp;
|
||||||
|
time_t t = 0;
|
||||||
STACK_OF(X509) *untrusted = NULL, *trusted = NULL;
|
STACK_OF(X509) *untrusted = NULL, *trusted = NULL;
|
||||||
STACK_OF(X509_CRL) *crls = NULL;
|
STACK_OF(X509_CRL) *crls = NULL;
|
||||||
X509_STORE *cert_ctx=NULL;
|
X509_STORE *cert_ctx=NULL;
|
||||||
@ -145,6 +148,11 @@ int MAIN(int argc, char **argv)
|
|||||||
if (argc-- < 1) goto end;
|
if (argc-- < 1) goto end;
|
||||||
crlfile= *(++argv);
|
crlfile= *(++argv);
|
||||||
}
|
}
|
||||||
|
else if (strcmp(*argv,"-attime") == 0)
|
||||||
|
{
|
||||||
|
if (argc-- < 1) goto end;
|
||||||
|
checktime_string= *(++argv);
|
||||||
|
}
|
||||||
#ifndef OPENSSL_NO_ENGINE
|
#ifndef OPENSSL_NO_ENGINE
|
||||||
else if (strcmp(*argv,"-engine") == 0)
|
else if (strcmp(*argv,"-engine") == 0)
|
||||||
{
|
{
|
||||||
@ -222,14 +230,28 @@ int MAIN(int argc, char **argv)
|
|||||||
goto end;
|
goto end;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc < 1) check(cert_ctx, NULL, untrusted, trusted, crls, e);
|
if(checktime_string)
|
||||||
|
{
|
||||||
|
/* interpret the -attime argument as seconds since Epoch */
|
||||||
|
if (sscanf(checktime_string, "%li", ×tamp) != 1)
|
||||||
|
{
|
||||||
|
BIO_printf(bio_err, "Error parsing timestamp %s\n",
|
||||||
|
checktime_string);
|
||||||
|
ERR_print_errors(bio_err);
|
||||||
|
goto end;
|
||||||
|
}
|
||||||
|
t = (time_t) timestamp; /* on some platforms time_t may be a float */
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc < 1) check(cert_ctx, NULL, untrusted, trusted, crls, e, t);
|
||||||
else
|
else
|
||||||
for (i=0; i<argc; i++)
|
for (i=0; i<argc; i++)
|
||||||
check(cert_ctx,argv[i], untrusted, trusted, crls, e);
|
check(cert_ctx,argv[i], untrusted, trusted, crls, e, t);
|
||||||
ret=0;
|
ret=0;
|
||||||
end:
|
end:
|
||||||
if (ret == 1) {
|
if (ret == 1) {
|
||||||
BIO_printf(bio_err,"usage: verify [-verbose] [-CApath path] [-CAfile file] [-purpose purpose] [-crl_check]");
|
BIO_printf(bio_err,"usage: verify [-verbose] [-CApath path] [-CAfile file] [-purpose purpose] [-crl_check]");
|
||||||
|
BIO_printf(bio_err," [-attime timestamp]");
|
||||||
#ifndef OPENSSL_NO_ENGINE
|
#ifndef OPENSSL_NO_ENGINE
|
||||||
BIO_printf(bio_err," [-engine e]");
|
BIO_printf(bio_err," [-engine e]");
|
||||||
#endif
|
#endif
|
||||||
@ -253,7 +275,7 @@ end:
|
|||||||
|
|
||||||
static int check(X509_STORE *ctx, char *file,
|
static int check(X509_STORE *ctx, char *file,
|
||||||
STACK_OF(X509) *uchain, STACK_OF(X509) *tchain,
|
STACK_OF(X509) *uchain, STACK_OF(X509) *tchain,
|
||||||
STACK_OF(X509_CRL) *crls, ENGINE *e)
|
STACK_OF(X509_CRL) *crls, ENGINE *e, time_t at_time)
|
||||||
{
|
{
|
||||||
X509 *x=NULL;
|
X509 *x=NULL;
|
||||||
int i=0,ret=0;
|
int i=0,ret=0;
|
||||||
@ -279,6 +301,9 @@ static int check(X509_STORE *ctx, char *file,
|
|||||||
if(tchain) X509_STORE_CTX_trusted_stack(csc, tchain);
|
if(tchain) X509_STORE_CTX_trusted_stack(csc, tchain);
|
||||||
if (crls)
|
if (crls)
|
||||||
X509_STORE_CTX_set0_crls(csc, crls);
|
X509_STORE_CTX_set0_crls(csc, crls);
|
||||||
|
if (at_time)
|
||||||
|
X509_STORE_CTX_set_time(csc, 0, at_time);
|
||||||
|
|
||||||
i=X509_verify_cert(csc);
|
i=X509_verify_cert(csc);
|
||||||
X509_STORE_CTX_free(csc);
|
X509_STORE_CTX_free(csc);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user