7 #include "wvautoconf.h"
9 void print_details(
WvX509 *x509)
12 wvcon->print(
"Issuer: %s\n", x509->
get_issuer());
13 wvcon->print(
"Serial: %s\n", x509->
get_serial());
15 time_t t2 = x509->get_notvalid_after();
17 wvcon->print(
"Not Valid Before: %s\n", ctime(&t1));
18 wvcon->print(
"Not Valid After: %s\n", ctime(&t2));
21 wvcon->print(
"Authority Info Access: \n%s\n", x509->
get_aia());
24 wvcon->print(
"CA Issuers available from:\n%s\n", list.
join(
"\n"));
27 wvcon->print(
"OCSP Responders available from:\n%s\n", list.
join(
"\n"));
30 wvcon->print(
"CRL Distribution Points:\n%s\n", list.
join(
"\n"));
33 wvcon->print(
"Certificate Policy OIDs:\n%s\n", list.
join(
"\n"));
35 #ifdef HAVE_OPENSSL_POLICY_MAPPING
36 int requireExplicitPolicy, inhibitPolicyMapping;
38 wvcon->print(
"Certificate Policy Constraints: requireExplicitPolicy: %s "
39 "inhibitPolicyMapping: %s\n", requireExplicitPolicy,
40 inhibitPolicyMapping);
42 WvX509::PolicyMapList maplist;
44 wvcon->print(
"Policy mappings:\n");
45 WvX509::PolicyMapList::Iter i(maplist);
46 for (i.rewind(); i.next();)
47 wvcon->print(
"%s -> %s\n", i().issuer_domain, i().subject_domain);
52 int main(
int argc,
char **argv)
54 wvcrash_setup(argv[0]);
61 args.
add_option(
't',
"type",
"Certificate type: der or pem (default: pem)",
63 if (!args.
process(argc, argv, &remaining_args) || remaining_args.count() < 1)
71 if (certtype ==
"der")
72 x509.load(WvX509Mgr::CertDER, remaining_args.
popstr());
73 else if (certtype ==
"pem")
74 x509.load(WvX509Mgr::CertPEM, remaining_args.
popstr());
77 wverr->print(
"Invalid certificate type '%s'\n", certtype);
84 wverr->print(
"X509 certificate not valid\n");
void print_help(int argc, char **argv)
Output the long usage message based on the provided options.
void get_crl_urls(WvStringList &urls) const
Get a list of URLs that are valid CRL distribution points for this certificate.
WvString popstr()
get the first string in the list, or an empty string if the list is empty.
WvString get_subject() const
get and set the Subject field of the certificate
bool process(int argc, char **argv, WvStringList *remaining_args=NULL)
Process the command line arguments passed to main() using the options provided through calls to add_o...
bool get_policy_constraints(int &require_explicit_policy, int &inhibit_policy_mapping) const
Get the values in the policy constraints extension.
WvArgs - Sane command-line argument processing for WvStreams.
WvString get_issuer() const
Get and set the Certificate Issuer (usually the CA who signed the certificate).
WvString join(const char *joinchars=" ") const
concatenates all elements of the list seperating on joinchars
bool get_policies(WvStringList &policy_oids) const
Get any certificate Policy OIDs.
void get_ca_urls(WvStringList &urls) const
Get a list of urls that have the Certificate of the CA that issued this certificate.
WvString get_aia() const
Get the authority info access information.
X509 Class to handle certificates and their related functions.
void add_required_arg(WvStringParm desc, bool multiple=false)
Add a required argument to the list of parameters.
WvString get_ext_key_usage() const
Get and set the extendedKeyUsage field.
WvString get_serial(bool hex=false) const
get and set the serialNumber field of the certificate
void add_option(char short_option, WvStringParm long_option, WvStringParm desc, WvStringParm arg_desc, int &val)
Add a switch that takes an integer argument.
bool get_policy_mapping(PolicyMapList &list) const
Get the policy mappings for this certificate.
virtual bool isok() const
Is the certificate object valid?
This is a WvList of WvStrings, and is a really handy way to parse strings.
void get_ocsp(WvStringList &responders) const
Get a list of OCSP Responders for this certificate.
Various little string functions.
time_t get_notvalid_before() const
Return the not before and not after in a format we're more able to easily use.
WvString is an implementation of a simple and efficient printable-string class.
WvString get_key_usage() const
Get and set the keyUsage field.