From 8642f8bdb782e35be84183351a20a3df33e55586 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Thu, 24 Apr 2014 14:15:49 +0200 Subject: [PATCH] proposal: Use an additional "default" constructor specific to AEAD algorithms This allows a caller to create a separated proposal for supported AEAD algorithms, as required by RFC 5996. --- src/libcharon/config/proposal.c | 23 +++++++++++++++++++++++ src/libcharon/config/proposal.h | 8 ++++++++ 2 files changed, 31 insertions(+) diff --git a/src/libcharon/config/proposal.c b/src/libcharon/config/proposal.c index fcfaebeb4..48313b753 100644 --- a/src/libcharon/config/proposal.c +++ b/src/libcharon/config/proposal.c @@ -809,6 +809,29 @@ proposal_t *proposal_create_default(protocol_id_t protocol) return &this->public; } +/* + * Describtion in header-file + */ +proposal_t *proposal_create_default_aead(protocol_id_t protocol) +{ + private_proposal_t *this; + + switch (protocol) + { + case PROTO_IKE: + this = (private_proposal_t*)proposal_create(protocol, 0); + proposal_add_supported_ike(this, TRUE); + return &this->public; + case PROTO_ESP: + /* we currently don't include any AEAD proposal for ESP, as we + * don't know if our kernel backend actually supports it. */ + return NULL; + case PROTO_AH: + default: + return NULL; + } +} + /* * Describtion in header-file */ diff --git a/src/libcharon/config/proposal.h b/src/libcharon/config/proposal.h index 7733143a8..78b868868 100644 --- a/src/libcharon/config/proposal.h +++ b/src/libcharon/config/proposal.h @@ -195,6 +195,14 @@ proposal_t *proposal_create(protocol_id_t protocol, u_int number); */ proposal_t *proposal_create_default(protocol_id_t protocol); +/** + * Create a default proposal for supported AEAD algorithms + * + * @param protocol protocol, such as PROTO_ESP + * @return proposal_t object, NULL if none supported + */ +proposal_t *proposal_create_default_aead(protocol_id_t protocol); + /** * Create a proposal from a string identifying the algorithms. *