From: Martin Willi Date: Tue, 27 Nov 2012 16:10:37 +0000 (+0100) Subject: pki --pkcs7 --verify shows prints the signing time, if available X-Git-Tag: 5.0.2dr4~74 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9afbe59953889e14aa3c3846b90ae49442f2c552;p=thirdparty%2Fstrongswan.git pki --pkcs7 --verify shows prints the signing time, if available --- diff --git a/src/pki/commands/pkcs7.c b/src/pki/commands/pkcs7.c index 7e2d6aa60c..30968a6c5b 100644 --- a/src/pki/commands/pkcs7.c +++ b/src/pki/commands/pkcs7.c @@ -15,6 +15,8 @@ #include "pki.h" +#include +#include #include #include @@ -71,10 +73,12 @@ static bool write_to_stream(FILE *stream, chunk_t data) static int verify(chunk_t chunk) { container_t *container; + pkcs7_t *pkcs7; enumerator_t *enumerator; certificate_t *cert; auth_cfg_t *auth; chunk_t data; + time_t t; bool verified = FALSE; container = lib->creds->create(lib->creds, CRED_CONTAINER, CONTAINER_PKCS7, @@ -92,6 +96,7 @@ static int verify(chunk_t chunk) return 1; } + pkcs7 = (pkcs7_t*)container; enumerator = container->create_signature_enumerator(container); while (enumerator->enumerate(enumerator, &auth)) { @@ -99,7 +104,18 @@ static int verify(chunk_t chunk) cert = auth->get(auth, AUTH_RULE_SUBJECT_CERT); if (cert) { - fprintf(stderr, "signed by '%Y'\n", cert->get_subject(cert)); + fprintf(stderr, "signed by '%Y'", cert->get_subject(cert)); + + if (pkcs7->get_attribute(pkcs7, OID_PKCS9_SIGNING_TIME, + enumerator, &data)) + { + t = asn1_to_time(&data, ASN1_UTCTIME); + if (t != UNDEFINED_TIME) + { + fprintf(stderr, " at %T", &t, FALSE); + } + } + fprintf(stderr, "\n"); } } enumerator->destroy(enumerator);