UINT32 TSS_GetTpmProperty()

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;
}