bus: Support multiple key exchanges in ike/child_keys() events

This commit is contained in:
Tobias Brunner
2024-08-07 16:20:18 +02:00
parent c14e4ab2a8
commit eff0c43a17
9 changed files with 42 additions and 27 deletions
+2 -3
View File
@@ -768,6 +768,8 @@ static status_t select_and_install(private_child_create_t *this,
charon->bus->child_derived_keys(charon->bus, this->child_sa,
this->initiator, encr_i, encr_r,
integ_i, integ_r);
charon->bus->child_keys(charon->bus, this->child_sa,
this->initiator, kes, nonce_i, nonce_r);
}
}
chunk_clear(&integ_i);
@@ -781,9 +783,6 @@ static status_t select_and_install(private_child_create_t *this,
return status;
}
charon->bus->child_keys(charon->bus, this->child_sa, this->initiator,
this->dh, nonce_i, nonce_r);
#if DEBUG_LEVEL >= 0
child_sa_outbound_state_t out_state;
+3 -3
View File
@@ -802,7 +802,7 @@ static bool derive_keys_internal(private_ike_init_t *this, chunk_t nonce_i,
pseudo_random_function_t prf_alg = PRF_UNDEFINED;
chunk_t skd = chunk_empty;
ike_sa_id_t *id;
array_t *kes;
array_t *kes = NULL;
id = this->ike_sa->get_id(this->ike_sa);
if (this->old_sa)
@@ -818,9 +818,9 @@ static bool derive_keys_internal(private_ike_init_t *this, chunk_t nonce_i,
array_destroy(kes);
return FALSE;
}
array_destroy(kes);
charon->bus->ike_keys(charon->bus, this->ike_sa, this->dh, chunk_empty,
charon->bus->ike_keys(charon->bus, this->ike_sa, kes, chunk_empty,
nonce_i, nonce_r, this->old_sa, NULL, AUTH_NONE);
array_destroy(kes);
return TRUE;
}