libpts: Parse TPM version info without TrouSerS helper function

Trspi_UnloadBlob_CAP_VERSION_INFO() is a TrouSerS specific function, not
available on all platforms.
This commit is contained in:
Martin Willi 2014-01-09 17:25:37 +01:00
parent becc382101
commit c9891716b8
1 changed files with 11 additions and 17 deletions

View File

@ -305,29 +305,23 @@ METHOD(pts_t, calculate_secret, bool,
*/
static void print_tpm_version_info(private_pts_t *this)
{
TPM_CAP_VERSION_INFO versionInfo;
UINT64 offset = 0;
TSS_RESULT result;
TPM_CAP_VERSION_INFO *info;
result = Trspi_UnloadBlob_CAP_VERSION_INFO(&offset,
this->tpm_version_info.ptr, &versionInfo);
if (result != TSS_SUCCESS)
info = (TPM_CAP_VERSION_INFO*)this->tpm_version_info.ptr;
if (this->tpm_version_info.len >=
sizeof(*info) - sizeof(info->vendorSpecific))
{
DBG1(DBG_PTS, "could not parse tpm version info: tss error 0x%x",
result);
DBG2(DBG_PTS, "TPM Version Info: Chip Version: %u.%u.%u.%u, "
"Spec Level: %u, Errata Rev: %u, Vendor ID: %.4s",
info->version.major, info->version.minor,
info->version.revMajor, info->version.revMinor,
untoh16(&info->specLevel), info->errataRev, info->tpmVendorID);
}
else
{
DBG2(DBG_PTS, "TPM 1.2 Version Info: Chip Version: %hhu.%hhu.%hhu.%hhu,"
" Spec Level: %hu, Errata Rev: %hhu, Vendor ID: %.4s [%.*s]",
versionInfo.version.major, versionInfo.version.minor,
versionInfo.version.revMajor, versionInfo.version.revMinor,
versionInfo.specLevel, versionInfo.errataRev,
versionInfo.tpmVendorID, versionInfo.vendorSpecificSize,
versionInfo.vendorSpecificSize ?
(char*)versionInfo.vendorSpecific : "");
DBG1(DBG_PTS, "could not parse tpm version info");
}
free(versionInfo.vendorSpecific);
}
#else