From: Martin Willi Date: Thu, 24 Apr 2014 12:15:49 +0000 (+0200) Subject: proposal: Use an additional "default" constructor specific to AEAD algorithms X-Git-Tag: 5.2.0dr5~38^2~5 X-Git-Url: http://git.ipfire.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=8642f8bdb782e35be84183351a20a3df33e55586;p=thirdparty%2Fstrongswan.git 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. --- diff --git a/src/libcharon/config/proposal.c b/src/libcharon/config/proposal.c index fcfaebeb4c..48313b753a 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 7733143a88..78b8688682 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. *