diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2008-04-01 12:11:09 +0000 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2008-04-01 12:11:09 +0000 |
commit | 392f4e17c2c949338411345196bab5f7068131e9 (patch) | |
tree | d19a544076e69165d9f2b009cc46a33cc6a3b9c1 | |
parent | 9c2a905d63886ddc0423ec84ed1435475dce2155 (diff) | |
download | strongswan-392f4e17c2c949338411345196bab5f7068131e9.tar.bz2 strongswan-392f4e17c2c949338411345196bab5f7068131e9.tar.xz |
minimal stroke_list_ocsp() implementation
-rw-r--r-- | src/charon/plugins/stroke/stroke_list.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/charon/plugins/stroke/stroke_list.c b/src/charon/plugins/stroke/stroke_list.c index da0a5e9a6..024e95b62 100644 --- a/src/charon/plugins/stroke/stroke_list.c +++ b/src/charon/plugins/stroke/stroke_list.c @@ -276,6 +276,7 @@ static void status(private_stroke_list_t *this, stroke_msg_t *msg, FILE *out, bo /** * create a unique certificate list without duplicates + * certicates having the same issuer are grouped together. */ static linked_list_t* create_unique_cert_list(certificate_type_t type) { @@ -523,9 +524,26 @@ static void stroke_list_crls(linked_list_t *list, bool utc, FILE *out) /** * list all OCSP responses */ -static void stroke_list_ocsp(bool utc, FILE *out) +static void stroke_list_ocsp(linked_list_t* list, bool utc, FILE *out) { + bool first = TRUE; + time_t thisUpdate, nextUpdate, now = time(NULL); + enumerator_t *enumerator = list->create_enumerator(list); + certificate_t *cert; + + while (enumerator->enumerate(enumerator, (void**)&cert)) + { + if (first) + { + fprintf(out, "\n"); + fprintf(out, "List of OCSP responses:\n"); + fprintf(out, "\n"); + first = FALSE; + } + fprintf(out, " signer: \"%D\"\n", cert->get_issuer(cert)); + } + enumerator->destroy(enumerator); } /** @@ -572,7 +590,10 @@ static void list(private_stroke_list_t *this, stroke_msg_t *msg, FILE *out) } if (msg->list.flags & LIST_OCSP) { - stroke_list_ocsp(msg->list.utc, out); + linked_list_t *ocsp_list = create_unique_cert_list(CERT_X509_OCSP_RESPONSE); + + stroke_list_ocsp(ocsp_list, msg->list.utc, out); + ocsp_list->destroy_offset(ocsp_list, offsetof(certificate_t, destroy)); } DESTROY_OFFSET_IF(cert_list, offsetof(certificate_t, destroy)); } |