diff options
author | Martin Willi <martin@revosec.ch> | 2014-01-09 17:25:37 +0100 |
---|---|---|
committer | Martin Willi <martin@revosec.ch> | 2014-06-04 15:53:07 +0200 |
commit | c9891716b8333c01857fe8a2d54a79286e281fa1 (patch) | |
tree | 4e1c17c76a8989758c1b1b05a92f2e27b8d6e9ce /src | |
parent | becc382101ed9f53b03fd6c2013d6b710d17c59b (diff) | |
download | strongswan-c9891716b8333c01857fe8a2d54a79286e281fa1.tar.bz2 strongswan-c9891716b8333c01857fe8a2d54a79286e281fa1.tar.xz |
libpts: Parse TPM version info without TrouSerS helper function
Trspi_UnloadBlob_CAP_VERSION_INFO() is a TrouSerS specific function, not
available on all platforms.
Diffstat (limited to 'src')
-rw-r--r-- | src/libpts/pts/pts.c | 28 |
1 files changed, 11 insertions, 17 deletions
diff --git a/src/libpts/pts/pts.c b/src/libpts/pts/pts.c index d2e24cbdb..075af5bcc 100644 --- a/src/libpts/pts/pts.c +++ b/src/libpts/pts/pts.c @@ -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 |