diff options
author | Martin Willi <martin@strongswan.org> | 2009-09-22 10:07:04 +0200 |
---|---|---|
committer | Martin Willi <martin@strongswan.org> | 2009-09-22 10:07:04 +0200 |
commit | f1092e20f48d461eef9d65d3d0176fd194f63b69 (patch) | |
tree | 49b975b4da25c106c6b0d7176c5b10b9052df6bd | |
parent | cb64b21217f7cd3d3d90c3212a951542556a2247 (diff) | |
download | strongswan-f1092e20f48d461eef9d65d3d0176fd194f63b69.tar.bz2 strongswan-f1092e20f48d461eef9d65d3d0176fd194f63b69.tar.xz |
Fixed encoding of hash-and-url cert payload
-rw-r--r-- | src/charon/sa/tasks/ike_cert_post.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/charon/sa/tasks/ike_cert_post.c b/src/charon/sa/tasks/ike_cert_post.c index e6ecce0b5..c831df975 100644 --- a/src/charon/sa/tasks/ike_cert_post.c +++ b/src/charon/sa/tasks/ike_cert_post.c @@ -58,6 +58,7 @@ static cert_payload_t *build_cert_payload(private_ike_cert_post_t *this, chunk_t hash, encoded ; enumerator_t *enumerator; char *url; + cert_payload_t *payload = NULL; if (!this->ike_sa->supports_extension(this->ike_sa, EXT_HASH_AND_URL)) { @@ -73,25 +74,24 @@ static cert_payload_t *build_cert_payload(private_ike_cert_post_t *this, encoded = cert->get_encoding(cert); hasher->allocate_hash(hasher, encoded, &hash); + chunk_free(&encoded); + hasher->destroy(hasher); id = identification_create_from_encoding(ID_KEY_ID, hash); - enumerator = charon->credentials->create_cdp_enumerator( - charon->credentials, CERT_X509, id); - if (!enumerator->enumerate(enumerator, &url)) + enumerator = charon->credentials->create_cdp_enumerator(charon->credentials, + CERT_X509, id); + if (enumerator->enumerate(enumerator, &url)) { - url = NULL; + payload = cert_payload_create_from_hash_and_url(hash, url); } - enumerator->destroy(enumerator); - - id->destroy(id); - chunk_free(&hash); - chunk_free(&encoded); - hasher->destroy(hasher); - if (url) + else { - return cert_payload_create_from_hash_and_url(hash, url); + payload = cert_payload_create_from_cert(cert); } - return cert_payload_create_from_cert(cert); + enumerator->destroy(enumerator); + chunk_free(&hash); + id->destroy(id); + return payload; } /** |