refactored AIK functionality
This commit is contained in:
@@ -288,30 +288,17 @@ TNC_Result TNC_IMC_ReceiveMessage(TNC_IMCID imc_id,
|
||||
|
||||
case TCG_PTS_GET_AIK:
|
||||
{
|
||||
certificate_t *aik_cert;
|
||||
public_key_t *aik_key;
|
||||
bool is_naked_key;
|
||||
certificate_t *aik;
|
||||
|
||||
if (!pts->get_aik(pts, &aik_cert, &aik_key, &is_naked_key))
|
||||
aik = pts->get_aik(pts);
|
||||
if (!aik)
|
||||
{
|
||||
DBG1(DBG_IMC, "Obtaining AIK Certificate failed");
|
||||
DBG1(DBG_IMC, "no AIK certificate or public key available");
|
||||
break;
|
||||
}
|
||||
|
||||
/* Send AIK attribute */
|
||||
if(!is_naked_key && aik_cert)
|
||||
{
|
||||
attr = tcg_pts_attr_aik_create(is_naked_key, chunk_from_thing(aik_cert));
|
||||
}
|
||||
else if(is_naked_key && aik_key)
|
||||
{
|
||||
attr = tcg_pts_attr_aik_create(is_naked_key, chunk_from_thing(aik_key));
|
||||
}
|
||||
else
|
||||
{
|
||||
DBG1(DBG_IMC, "Neither AIK Certificate nor AIK public was provided");
|
||||
break;
|
||||
}
|
||||
attr = tcg_pts_attr_aik_create(aik);
|
||||
attr_list->insert_last(attr_list, attr);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -415,32 +415,16 @@ TNC_Result TNC_IMV_ReceiveMessage(TNC_IMVID imv_id,
|
||||
case TCG_PTS_AIK:
|
||||
{
|
||||
tcg_pts_attr_aik_t *attr_cast;
|
||||
chunk_t aik;
|
||||
bool is_naked_key;
|
||||
|
||||
certificate_t *aik;
|
||||
|
||||
attr_cast = (tcg_pts_attr_aik_t*)attr;
|
||||
aik = attr_cast->get_aik(attr_cast);
|
||||
is_naked_key = attr_cast->get_naked_flag(attr_cast);
|
||||
|
||||
if(!is_naked_key)
|
||||
if (!aik)
|
||||
{
|
||||
certificate_t *aik_cert;
|
||||
|
||||
aik_cert = lib->creds->create(lib->creds, CRED_CERTIFICATE, CERT_X509,
|
||||
BUILD_BLOB_PEM, aik,
|
||||
BUILD_END);
|
||||
pts->set_aik_cert(pts, aik_cert);
|
||||
/* TODO generate error attribute */
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
public_key_t *aik_key;
|
||||
|
||||
aik_key = lib->creds->create(lib->creds, CRED_PUBLIC_KEY, KEY_ANY,
|
||||
BUILD_BLOB_PEM, aik,
|
||||
BUILD_END);
|
||||
pts->set_aik_key(pts, aik_key);
|
||||
}
|
||||
|
||||
pts->set_aik(pts, aik);
|
||||
attestation_state->set_handshake_state(attestation_state,
|
||||
IMV_ATTESTATION_STATE_END);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user