X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=apps%2Fverify.c;h=b754fe3e0844de86bb95e25eeaf93e1baecaadcf;hp=8f897cf48563ff74fc4874d1db3266d55001ef08;hb=6b5c1d940b5a653a24b91d3c52bca935399b713c;hpb=71fa451343f97b3624374ed1359adc23fba5696e diff --git a/apps/verify.c b/apps/verify.c index 8f897cf485..b754fe3e08 100644 --- a/apps/verify.c +++ b/apps/verify.c @@ -72,7 +72,7 @@ static int MS_CALLBACK cb(int ok, X509_STORE_CTX *ctx); static int check(X509_STORE *ctx, char *file, STACK_OF(X509) *uchain, STACK_OF(X509) *tchain, - STACK_OF(X509_CRL) *crls, ENGINE *e); + STACK_OF(X509_CRL) *crls, ENGINE *e, int show_chain); static int v_verbose=0, vflags = 0; int MAIN(int, char **); @@ -88,6 +88,7 @@ int MAIN(int argc, char **argv) X509_STORE *cert_ctx=NULL; X509_LOOKUP *lookup=NULL; X509_VERIFY_PARAM *vpm = NULL; + int crl_download = 0, show_chain = 0; #ifndef OPENSSL_NO_ENGINE char *engine=NULL; #endif @@ -145,6 +146,10 @@ int MAIN(int argc, char **argv) if (argc-- < 1) goto end; crlfile= *(++argv); } + else if (strcmp(*argv,"-crl_download") == 0) + crl_download = 1; + else if (strcmp(*argv,"-show_chain") == 0) + show_chain = 1; #ifndef OPENSSL_NO_ENGINE else if (strcmp(*argv,"-engine") == 0) { @@ -222,11 +227,22 @@ int MAIN(int argc, char **argv) goto end; } - if (argc < 1) check(cert_ctx, NULL, untrusted, trusted, crls, e); + if (crl_download) + store_setup_crl_download(cert_ctx); + + ret=0; + if (argc < 1) + { + if (1 != check(cert_ctx, NULL, untrusted, trusted, crls, e, show_chain)) + ret=-1; + } else + { for (i=0; i 0 && show_chain) + chain = X509_STORE_CTX_get1_chain(csc); X509_STORE_CTX_free(csc); ret=0; @@ -304,6 +323,20 @@ end: } else ERR_print_errors(bio_err); + if (chain) + { + printf("Chain:\n"); + for (i = 0; i < sk_X509_num(chain); i++) + { + X509 *cert = sk_X509_value(chain, i); + printf("depth=%d: ", i); + X509_NAME_print_ex_fp(stdout, + X509_get_subject_name(cert), + 0, XN_FLAG_ONELINE); + printf("\n"); + } + sk_X509_pop_free(chain, X509_free); + } if (x != NULL) X509_free(x); return(ret);