define tpm_version_info as a chunk

This commit is contained in:
Andreas Steffen
2011-09-08 12:08:12 +02:00
parent 54fb8162a4
commit b875bcf70e
@@ -154,38 +154,34 @@ TNC_Result TNC_IMC_NotifyConnectionChange(TNC_IMCID imc_id,
/** /**
* Get the TPM Version Information * Get the TPM Version Information
*/ */
static TSS_RESULT get_tpm_version_info(BYTE *tpm_version_info) static TSS_RESULT get_tpm_version_info(chunk_t *info)
{ {
TSS_HCONTEXT hContext; TSS_HCONTEXT hContext;
TSS_HTPM hTPM; TSS_HTPM hTPM;
TSS_RESULT uiResult; TSS_RESULT result;
UINT32 uiResultLen;
/* TODO: Needed for parsing version info on IMV side */ /* TODO: Needed for parsing version info on IMV side */
//TPM_CAP_VERSION_INFO versionInfo; //TPM_CAP_VERSION_INFO versionInfo;
//UINT64 offset = 0; //UINT64 offset = 0;
uiResult = Tspi_Context_Create(&hContext); result = Tspi_Context_Create(&hContext);
if (uiResult != TSS_SUCCESS) { if (result != TSS_SUCCESS)
DBG1(DBG_IMC,"Error 0x%x on Tspi_Context_Create\n", uiResult); {
return uiResult; return result;
} }
uiResult = Tspi_Context_Connect(hContext, NULL); result = Tspi_Context_Connect(hContext, NULL);
if (uiResult != TSS_SUCCESS) { if (result != TSS_SUCCESS)
DBG1(DBG_IMC,"Error 0x%x on Tspi_Context_Connect\n", uiResult); {
return uiResult; return result;
} }
uiResult = Tspi_Context_GetTpmObject (hContext, &hTPM); result = Tspi_Context_GetTpmObject (hContext, &hTPM);
if (uiResult != TSS_SUCCESS) { if (result != TSS_SUCCESS)
DBG1(DBG_IMC,"Error 0x%x on Tspi_Context_GetTpmObject\n", uiResult); {
return uiResult; return result;
}
uiResult = Tspi_TPM_GetCapability(hTPM, TSS_TPMCAP_VERSION_VAL, 0, NULL, &uiResultLen,
&tpm_version_info);
if (uiResult != TSS_SUCCESS) {
DBG1(DBG_IMC,"Error 0x%x on Tspi_TPM_GetCapability\n", uiResult);
return uiResult;
} }
result = Tspi_TPM_GetCapability(hTPM, TSS_TPMCAP_VERSION_VAL, 0, NULL,
&info->len, &info->ptr);
return result;
} }
/** /**
@@ -314,18 +310,17 @@ static TNC_Result send_message(TNC_ConnectionID connection_id)
} }
case IMC_ATTESTATION_STATE_GET_TPM_INFO: case IMC_ATTESTATION_STATE_GET_TPM_INFO:
{ {
TSS_RESULT uiResult; TSS_RESULT result;
BYTE *tpm_version_info; chunk_t tpm_version_info;
uiResult = get_tpm_version_info(tpm_version_info); result = get_tpm_version_info(&tpm_version_info);
if (uiResult != TSS_SUCCESS) { if (result != TSS_SUCCESS)
DBG1(DBG_IMC,"Error 0x%x on get_tpm_version_info\n", uiResult); {
return uiResult; DBG1(DBG_IMC,"Error 0x%x on get_tpm_version_info\n", result);
return TNC_RESULT_FATAL;
} }
attr = tcg_pts_attr_tpm_version_info_create( attr = tcg_pts_attr_tpm_version_info_create(tpm_version_info);
chunk_create((char *)tpm_version_info,
strlen(tpm_version_info)));
break; break;
} }
case IMC_ATTESTATION_STATE_REQ_FILE_MEAS: case IMC_ATTESTATION_STATE_REQ_FILE_MEAS: