summaryrefslogtreecommitdiff
path: root/firmware/lib/tpm2_lite/tlcl.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/lib/tpm2_lite/tlcl.c')
-rw-r--r--firmware/lib/tpm2_lite/tlcl.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/firmware/lib/tpm2_lite/tlcl.c b/firmware/lib/tpm2_lite/tlcl.c
index 70d584f0..9c0ab887 100644
--- a/firmware/lib/tpm2_lite/tlcl.c
+++ b/firmware/lib/tpm2_lite/tlcl.c
@@ -313,6 +313,29 @@ uint32_t TlclGetPermissions(uint32_t index, uint32_t *permissions)
return rv;
}
+uint32_t TlclGetSpaceInfo(uint32_t index, uint32_t *attributes, uint32_t *size,
+ void* auth_policy, uint32_t* auth_policy_size)
+{
+ uint32_t rv;
+ struct nv_read_public_response *resp;
+
+ rv = tlcl_nv_read_public(index, &resp);
+ if (rv != TPM_SUCCESS)
+ return rv;
+
+ *attributes = resp->nvPublic.attributes;
+ *size = resp->nvPublic.dataSize;
+ if (resp->nvPublic.authPolicy.size > *auth_policy_size) {
+ return TPM_E_BUFFER_SIZE;
+ }
+
+ *auth_policy_size = resp->nvPublic.authPolicy.size;
+ memcpy(auth_policy, resp->nvPublic.authPolicy.buffer,
+ *auth_policy_size);
+
+ return TPM_SUCCESS;
+}
+
static uint32_t tlcl_get_capability(TPM_CAP cap, TPM_PT property,
struct get_capability_response **presp)
{