in src/tpm_codec.c [668:699]
UINT32 TSS_GetTpmProperty(TSS_DEVICE* tpm, TPM_PT property)
{
UINT32 result;
TPMI_YES_NO more = NO;
TPMS_CAPABILITY_DATA capData;
TPML_TAGGED_TPM_PROPERTY *pProps = NULL;
TPM_RC TSS_LastResponseCode = TPM2_GetCapability(tpm, TPM_CAP_TPM_PROPERTIES, property, 1, &more, &capData);
if (TSS_LastResponseCode != TPM_RC_SUCCESS || capData.capability != TPM_CAP_TPM_PROPERTIES)
{
LogError("Get Capability failure");
result = TSS_BAD_PROPERTY;
}
else if (capData.data.tpmProperties.count != 1)
{
LogError("Capability data count does not equal 1");
result = TSS_BAD_PROPERTY;
}
else
{
pProps = &capData.data.tpmProperties;
if (pProps->tpmProperty[0].property != property)
{
result = TSS_BAD_PROPERTY;
}
else
{
result = pProps->tpmProperty[0].value;
}
}
return result;
}