*/
chunk_t auth_payload;
+ /**
+ * Peer init message chunk.
+ */
+ chunk_t other_init_msg;
+
};
/**
private_tkm_keymat_t *this, bool verify, chunk_t ike_sa_init,
chunk_t nonce, identification_t *id, char reserved[3], chunk_t *octets)
{
+ if (verify)
+ {
+ /* store peer init message for authentication step */
+ this->other_init_msg = chunk_clone(ike_sa_init);
+ }
DBG1(DBG_IKE, "returning auth octets");
*octets = chunk_empty;
return TRUE;
DESTROY_IF(this->aead_in);
DESTROY_IF(this->aead_out);
chunk_free(&this->auth_payload);
+ chunk_free(&this->other_init_msg);
free(this);
}
return &this->auth_payload;
}
+METHOD(tkm_keymat_t, get_peer_init_msg, chunk_t*,
+ private_tkm_keymat_t *this)
+{
+ return &this->other_init_msg;
+}
+
/**
* See header.
*/
.get_isa_id = _get_isa_id,
.set_auth_payload = _set_auth_payload,
.get_auth_payload = _get_auth_payload,
+ .get_peer_init_msg = _get_peer_init_msg,
},
.initiator = initiator,
.isa_ctx_id = tkm->idmgr->acquire_id(tkm->idmgr, TKM_CTX_ISA),
.ae_ctx_id = 0,
.auth_payload = chunk_empty,
+ .other_init_msg = chunk_empty,
);
if (!this->isa_ctx_id)