libimcv: Allow pts_t.set_peer_public_value() to fail

This commit is contained in:
Martin Willi
2015-03-23 17:54:02 +01:00
parent 83cda57e2d
commit 8a7dbf3c2a
4 changed files with 11 additions and 7 deletions
@@ -178,8 +178,10 @@ bool imc_attestation_process(pa_tnc_attr_t *attr, imc_msg_t *msg,
return FALSE; return FALSE;
} }
pts->set_peer_public_value(pts, initiator_value, initiator_nonce);
if (!pts->calculate_secret(pts)) if (!pts->set_peer_public_value(pts, initiator_value,
initiator_nonce) ||
!pts->calculate_secret(pts))
{ {
return FALSE; return FALSE;
} }
@@ -134,11 +134,11 @@ bool imv_attestation_process(pa_tnc_attr_t *attr, imv_msg_t *out_msg,
} }
responder_value = attr_cast->get_responder_value(attr_cast); responder_value = attr_cast->get_responder_value(attr_cast);
pts->set_peer_public_value(pts, responder_value,
responder_nonce);
/* Calculate secret assessment value */ /* Calculate secret assessment value */
if (!pts->calculate_secret(pts)) if (!pts->set_peer_public_value(pts, responder_value,
responder_nonce) ||
!pts->calculate_secret(pts))
{ {
return FALSE; return FALSE;
} }
+2 -1
View File
@@ -232,7 +232,7 @@ METHOD(pts_t, get_my_public_value, bool,
return TRUE; return TRUE;
} }
METHOD(pts_t, set_peer_public_value, void, METHOD(pts_t, set_peer_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->set_other_public_value(this->dh, value); this->dh->set_other_public_value(this->dh, value);
@@ -246,6 +246,7 @@ METHOD(pts_t, set_peer_public_value, void,
{ {
this->responder_nonce = nonce; this->responder_nonce = nonce;
} }
return TRUE;
} }
METHOD(pts_t, calculate_secret, bool, METHOD(pts_t, calculate_secret, bool,
+2 -1
View File
@@ -152,8 +152,9 @@ struct pts_t {
* *
* @param value Peer public DH value * @param value Peer public DH value
* @param nonce Peer DH nonce * @param nonce Peer DH nonce
* @return TRUE if public value set successfully
*/ */
void (*set_peer_public_value) (pts_t *this, chunk_t value, chunk_t nonce); bool (*set_peer_public_value) (pts_t *this, chunk_t value, chunk_t nonce);
/** /**
* Calculates assessment secret to be used for TPM Quote as ExternalData * Calculates assessment secret to be used for TPM Quote as ExternalData