aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2010-11-02 12:13:03 +0100
committerMartin Willi <martin@revosec.ch>2011-01-05 16:45:41 +0100
commitdacf65803695a45230063e715e1b703fcbda584b (patch)
tree46dc835743edddca0f4e35aa78aad898cb4bcf57
parent3b3e5c0de54b01c54b0f2afcfa285def23a29a8d (diff)
downloadstrongswan-dacf65803695a45230063e715e1b703fcbda584b.tar.bz2
strongswan-dacf65803695a45230063e715e1b703fcbda584b.tar.xz
Implemented cert payload constructor for custom encoding types
-rw-r--r--src/libcharon/encoding/payloads/cert_payload.c12
-rw-r--r--src/libcharon/encoding/payloads/cert_payload.h9
2 files changed, 21 insertions, 0 deletions
diff --git a/src/libcharon/encoding/payloads/cert_payload.c b/src/libcharon/encoding/payloads/cert_payload.c
index 80239f654..19eb51380 100644
--- a/src/libcharon/encoding/payloads/cert_payload.c
+++ b/src/libcharon/encoding/payloads/cert_payload.c
@@ -343,3 +343,15 @@ cert_payload_t *cert_payload_create_from_hash_and_url(chunk_t hash, char *url)
return &this->public;
}
+/*
+ * Described in header
+ */
+cert_payload_t *cert_payload_create_custom(cert_encoding_t type, chunk_t data)
+{
+ private_cert_payload_t *this = (private_cert_payload_t*)cert_payload_create();
+
+ this->encoding = type;
+ this->data = data;
+ this->payload_length = CERT_PAYLOAD_HEADER_LENGTH + this->data.len;
+ return &this->public;
+}
diff --git a/src/libcharon/encoding/payloads/cert_payload.h b/src/libcharon/encoding/payloads/cert_payload.h
index aa1c7bf5a..c35d4919b 100644
--- a/src/libcharon/encoding/payloads/cert_payload.h
+++ b/src/libcharon/encoding/payloads/cert_payload.h
@@ -134,4 +134,13 @@ cert_payload_t *cert_payload_create_from_cert(certificate_t *cert);
*/
cert_payload_t *cert_payload_create_from_hash_and_url(chunk_t hash, char *url);
+/**
+ * Creates a custom certificate payload using type and associated data.
+ *
+ * @param type encoding type of certificate
+ * @param url associated data (gets owned)
+ * @return cert_payload_t object
+ */
+cert_payload_t *cert_payload_create_custom(cert_encoding_t type, chunk_t data);
+
#endif /** CERT_PAYLOAD_H_ @}*/