aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon/sa
diff options
context:
space:
mode:
Diffstat (limited to 'Source/charon/sa')
-rw-r--r--Source/charon/sa/authenticator.c10
-rw-r--r--Source/charon/sa/authenticator.h2
-rw-r--r--Source/charon/sa/ike_sa.c10
-rw-r--r--Source/charon/sa/ike_sa.h2
-rw-r--r--Source/charon/sa/states/ike_sa_init_requested.c5
-rw-r--r--Source/charon/sa/states/ike_sa_init_responded.c2
-rw-r--r--Source/charon/sa/states/initiator_init.c4
-rw-r--r--Source/charon/sa/states/responder_init.c2
8 files changed, 25 insertions, 12 deletions
diff --git a/Source/charon/sa/authenticator.c b/Source/charon/sa/authenticator.c
index 5aaa2d983..f6f09c268 100644
--- a/Source/charon/sa/authenticator.c
+++ b/Source/charon/sa/authenticator.c
@@ -67,7 +67,7 @@ struct private_authenticator_t {
/**
* @brief Creates the octets which are signed (RSA) or MACed (shared secret) as described in section
- * 2.15 of draft.
+ * 2.15 of RFC.
*
* @param this calling object
* @param last_message the last message to include in created octets
@@ -211,7 +211,7 @@ static status_t verify_auth_data (private_authenticator_t *this,
chunk_t preshared_secret;
status_t status;
- status = charon->configuration_manager->get_shared_secret(charon->configuration_manager,
+ status = charon->configuration->get_shared_secret(charon->configuration,
other_id,
&preshared_secret);
other_id->destroy(other_id);
@@ -252,7 +252,7 @@ static status_t verify_auth_data (private_authenticator_t *this,
auth_data = auth_payload->get_data(auth_payload);
- status = charon->configuration_manager->get_rsa_public_key(charon->configuration_manager,
+ status = charon->configuration->get_rsa_public_key(charon->configuration,
other_id,
&public_key);
other_id->destroy(other_id);
@@ -295,7 +295,7 @@ static status_t compute_auth_data (private_authenticator_t *this,
chunk_t preshared_secret;
status_t status;
- status = charon->configuration_manager->get_shared_secret(charon->configuration_manager,
+ status = charon->configuration->get_shared_secret(charon->configuration,
my_id,
&preshared_secret);
@@ -326,7 +326,7 @@ static status_t compute_auth_data (private_authenticator_t *this,
status_t status;
chunk_t octets, auth_data;
- status = charon->configuration_manager->get_rsa_private_key(charon->configuration_manager,
+ status = charon->configuration->get_rsa_private_key(charon->configuration,
my_id,
&private_key);
my_id->destroy(my_id);
diff --git a/Source/charon/sa/authenticator.h b/Source/charon/sa/authenticator.h
index 2160eaec5..c50ac4f32 100644
--- a/Source/charon/sa/authenticator.h
+++ b/Source/charon/sa/authenticator.h
@@ -40,7 +40,7 @@ typedef struct authenticator_t authenticator_t;
* - RSA_DIGITAL_SIGNATURE
*
* This class retrieves needed data for specific AUTH methods (RSA keys, shared secrets, etc.)
- * over an internal stored protected_ike_sa_t object or directly from the configuration_manager_t over
+ * over an internal stored protected_ike_sa_t object or directly from the configuration_t over
* the daemon_t object "charon".
*
* @b Constructors:
diff --git a/Source/charon/sa/ike_sa.c b/Source/charon/sa/ike_sa.c
index 55c03ef92..7e4f7c772 100644
--- a/Source/charon/sa/ike_sa.c
+++ b/Source/charon/sa/ike_sa.c
@@ -484,6 +484,10 @@ static void set_sa_config (private_ike_sa_t *this,sa_config_t * sa_config)
*/
static void set_my_host (private_ike_sa_t *this, host_t *my_host)
{
+ if (this->me.host)
+ {
+ this->me.host->destroy(this->me.host);
+ }
this->me.host = my_host;
}
@@ -492,6 +496,10 @@ static void set_my_host (private_ike_sa_t *this, host_t *my_host)
*/
static void set_other_host (private_ike_sa_t *this, host_t *other_host)
{
+ if (this->other.host)
+ {
+ this->other.host->destroy(this->other.host);
+ }
this->other.host = other_host;
}
@@ -814,7 +822,7 @@ static status_t send_request (private_ike_sa_t *this,message_t * message)
retransmit_job = retransmit_request_job_create(this->message_id_out,this->ike_sa_id);
- status = charon->configuration_manager->get_retransmit_timeout (charon->configuration_manager,
+ status = charon->configuration->get_retransmit_timeout (charon->configuration,
retransmit_job->get_retransmit_count(retransmit_job),&timeout);
if (status != SUCCESS)
diff --git a/Source/charon/sa/ike_sa.h b/Source/charon/sa/ike_sa.h
index b15a8eaab..e1d27e25d 100644
--- a/Source/charon/sa/ike_sa.h
+++ b/Source/charon/sa/ike_sa.h
@@ -29,7 +29,7 @@
#include <sa/ike_sa_id.h>
#include <sa/child_sa.h>
#include <sa/states/state.h>
-#include <config/configuration_manager.h>
+#include <config/configuration.h>
#include <utils/logger.h>
#include <utils/randomizer.h>
#include <transforms/prfs/prf.h>
diff --git a/Source/charon/sa/states/ike_sa_init_requested.c b/Source/charon/sa/states/ike_sa_init_requested.c
index 7f80c3477..06ff238b9 100644
--- a/Source/charon/sa/states/ike_sa_init_requested.c
+++ b/Source/charon/sa/states/ike_sa_init_requested.c
@@ -213,6 +213,7 @@ static status_t process_message(private_ike_sa_init_requested_t *this, message_t
u_int64_t responder_spi;
ike_sa_id_t *ike_sa_id;
iterator_t *payloads;
+ host_t *me;
message_t *request;
status_t status;
@@ -338,6 +339,10 @@ static status_t process_message(private_ike_sa_init_requested_t *this, message_t
return DELETE_ME;
}
+ /* apply the address on wich we really received the packet */
+ me = ike_sa_init_reply->get_destination(ike_sa_init_reply);
+ this->ike_sa->set_my_host(this->ike_sa, me->clone(me));
+
/* build empty message */
this->ike_sa->build_message(this->ike_sa, IKE_AUTH, TRUE, &request);
diff --git a/Source/charon/sa/states/ike_sa_init_responded.c b/Source/charon/sa/states/ike_sa_init_responded.c
index 379eaebe1..54e70041a 100644
--- a/Source/charon/sa/states/ike_sa_init_responded.c
+++ b/Source/charon/sa/states/ike_sa_init_responded.c
@@ -391,7 +391,7 @@ static status_t build_idr_payload(private_ike_sa_init_responded_t *this, id_payl
/* build new sa config */
init_config = this->ike_sa->get_init_config(this->ike_sa);
- status = charon->configuration_manager->get_sa_config_for_init_config_and_id(charon->configuration_manager,init_config, other_id,my_id, &(this->sa_config));
+ status = charon->configuration->get_sa_config_for_init_config_and_id(charon->configuration,init_config, other_id,my_id, &(this->sa_config));
if (status != SUCCESS)
{
if (my_id)
diff --git a/Source/charon/sa/states/initiator_init.c b/Source/charon/sa/states/initiator_init.c
index f27dcb559..46cbbcdbe 100644
--- a/Source/charon/sa/states/initiator_init.c
+++ b/Source/charon/sa/states/initiator_init.c
@@ -118,14 +118,14 @@ static status_t initiate_connection (private_initiator_init_t *this, char *name)
this->logger->log(this->logger, CONTROL, "Initializing connection %s",name);
/* get configs */
- status = charon->configuration_manager->get_init_config_for_name(charon->configuration_manager,name,&init_config);
+ status = charon->configuration->get_init_config_for_name(charon->configuration,name,&init_config);
if (status != SUCCESS)
{
this->logger->log(this->logger, ERROR | LEVEL1, "Could not retrieve INIT configuration informations for %s",name);
return DELETE_ME;
}
this->ike_sa->set_init_config(this->ike_sa,init_config);
- status = charon->configuration_manager->get_sa_config_for_name(charon->configuration_manager,name,&sa_config);
+ status = charon->configuration->get_sa_config_for_name(charon->configuration,name,&sa_config);
if (status != SUCCESS)
{
this->logger->log(this->logger, ERROR | LEVEL1, "Could not retrieve SA configuration informations for %s",name);
diff --git a/Source/charon/sa/states/responder_init.c b/Source/charon/sa/states/responder_init.c
index c85f12efc..f67e2833c 100644
--- a/Source/charon/sa/states/responder_init.c
+++ b/Source/charon/sa/states/responder_init.c
@@ -177,7 +177,7 @@ static status_t process_message(private_responder_init_t *this, message_t *messa
source = message->get_source(message);
destination = message->get_destination(message);
- status = charon->configuration_manager->get_init_config_for_host(charon->configuration_manager,destination,source,&init_config);
+ status = charon->configuration->get_init_config_for_host(charon->configuration,destination,source,&init_config);
if (status != SUCCESS)
{
/* no configuration matches given host */