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.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/firmware/lib/tpm2_lite/tlcl.c b/firmware/lib/tpm2_lite/tlcl.c
index a05ef77f..8e5fbeac 100644
--- a/firmware/lib/tpm2_lite/tlcl.c
+++ b/firmware/lib/tpm2_lite/tlcl.c
@@ -193,6 +193,37 @@ uint32_t TlclDefineSpace(uint32_t index, uint32_t perm, uint32_t size)
return TlclDefineSpaceEx(NULL, 0, index, perm, size, NULL, 0);
}
+#ifdef CHROMEOS_ENVIRONMENT
+
+uint32_t TlclUndefineSpace(uint32_t index)
+{
+ return TlclUndefineSpaceEx(NULL, 0, index);
+}
+
+uint32_t TlclUndefineSpaceEx(const uint8_t* owner_auth,
+ uint32_t owner_auth_size,
+ uint32_t index)
+{
+ struct tpm2_nv_undefine_space_cmd undefine_space;
+ uint32_t permissions;
+ uint32_t rv;
+
+ /* Authentication support is not implemented. */
+ VbAssert(owner_auth == NULL && owner_auth_size == 0);
+
+ /* get the publicInfo of index */
+ rv = TlclGetPermissions(index, &permissions);
+ if (rv != TPM_SUCCESS) {
+ return rv;
+ }
+ undefine_space.nvIndex = HR_NV_INDEX + index;
+ undefine_space.use_platform_auth =
+ (permissions & TPMA_NV_PLATFORMCREATE) > 0;
+ return tpm_get_response_code(TPM2_NV_UndefineSpace, &undefine_space);
+}
+
+#endif /* CHROMEOS_ENVIRONMENT */
+
uint32_t TlclDefineSpaceEx(const uint8_t* owner_auth, uint32_t owner_auth_size,
uint32_t index, uint32_t perm, uint32_t size,
const void* auth_policy, uint32_t auth_policy_size)