libimcv: Allow pts_t.get_my_public_value() to fail
This commit is contained in:
@@ -137,7 +137,11 @@ bool imc_attestation_process(pa_tnc_attr_t *attr, imc_msg_t *msg,
|
|||||||
{
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
pts->get_my_public_value(pts, &responder_value, &responder_nonce);
|
if (!pts->get_my_public_value(pts, &responder_value,
|
||||||
|
&responder_nonce))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/* Send DH Nonce Parameters Response attribute */
|
/* Send DH Nonce Parameters Response attribute */
|
||||||
attr = tcg_pts_attr_dh_nonce_params_resp_create(selected_dh_group,
|
attr = tcg_pts_attr_dh_nonce_params_resp_create(selected_dh_group,
|
||||||
|
|||||||
@@ -69,7 +69,11 @@ bool imv_attestation_build(imv_msg_t *out_msg, imv_state_t *state,
|
|||||||
|
|
||||||
/* Send DH nonce finish attribute */
|
/* Send DH nonce finish attribute */
|
||||||
selected_algorithm = pts->get_meas_algorithm(pts);
|
selected_algorithm = pts->get_meas_algorithm(pts);
|
||||||
pts->get_my_public_value(pts, &initiator_value, &initiator_nonce);
|
if (!pts->get_my_public_value(pts, &initiator_value,
|
||||||
|
&initiator_nonce))
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
attr = tcg_pts_attr_dh_nonce_finish_create(selected_algorithm,
|
attr = tcg_pts_attr_dh_nonce_finish_create(selected_algorithm,
|
||||||
initiator_value, initiator_nonce);
|
initiator_value, initiator_nonce);
|
||||||
attr->set_noskip_flag(attr, TRUE);
|
attr->set_noskip_flag(attr, TRUE);
|
||||||
|
|||||||
@@ -224,11 +224,12 @@ METHOD(pts_t, create_dh_nonce, bool,
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(pts_t, get_my_public_value, void,
|
METHOD(pts_t, get_my_public_value, bool,
|
||||||
private_pts_t *this, chunk_t *value, chunk_t *nonce)
|
private_pts_t *this, chunk_t *value, chunk_t *nonce)
|
||||||
{
|
{
|
||||||
this->dh->get_my_public_value(this->dh, value);
|
this->dh->get_my_public_value(this->dh, value);
|
||||||
*nonce = this->is_imc ? this->responder_nonce : this->initiator_nonce;
|
*nonce = this->is_imc ? this->responder_nonce : this->initiator_nonce;
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
METHOD(pts_t, set_peer_public_value, void,
|
METHOD(pts_t, set_peer_public_value, void,
|
||||||
|
|||||||
@@ -143,8 +143,9 @@ struct pts_t {
|
|||||||
*
|
*
|
||||||
* @param value My public DH value
|
* @param value My public DH value
|
||||||
* @param nonce My DH nonce
|
* @param nonce My DH nonce
|
||||||
|
* @return TRUE if public value retrieved successfully
|
||||||
*/
|
*/
|
||||||
void (*get_my_public_value)(pts_t *this, chunk_t *value, chunk_t *nonce);
|
bool (*get_my_public_value)(pts_t *this, chunk_t *value, chunk_t *nonce);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set peer Diffie.Hellman public value
|
* Set peer Diffie.Hellman public value
|
||||||
|
|||||||
Reference in New Issue
Block a user