summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/include/tpm_lite/tss_constants.h5
-rw-r--r--src/lib/tpm2_tlcl.c11
2 files changed, 14 insertions, 2 deletions
diff --git a/src/include/tpm_lite/tss_constants.h b/src/include/tpm_lite/tss_constants.h
index 883a5ad85e..eda7d6b31b 100644
--- a/src/include/tpm_lite/tss_constants.h
+++ b/src/include/tpm_lite/tss_constants.h
@@ -40,6 +40,7 @@
#define TPM_E_WRITE_FAILURE ((uint32_t)0x00005008) /* vboot local */
#define TPM_E_READ_EMPTY ((uint32_t)0x00005009) /* vboot local */
#define TPM_E_READ_FAILURE ((uint32_t)0x0000500a) /* vboot local */
+#define TPM_E_NV_DEFINED ((uint32_t)0x0000500b) /* vboot local */
#define TPM_NV_INDEX0 ((uint32_t)0x00000000)
#define TPM_NV_INDEX_LOCK ((uint32_t)0xffffffff)
@@ -56,6 +57,10 @@
#define TPM_TAG_RSP_AUTH1_COMMAND ((uint16_t) 0xc5)
#define TPM_TAG_RSP_AUTH2_COMMAND ((uint16_t) 0xc6)
+/* Some TPM2 return codes used in this library. */
+#define TPM2_RC_SUCCESS 0
+#define TPM2_RC_NV_DEFINED 0x14c
+
typedef uint8_t TSS_BOOL;
typedef uint16_t TPM_STRUCTURE_TAG;
diff --git a/src/lib/tpm2_tlcl.c b/src/lib/tpm2_tlcl.c
index 457e874798..6f5243e160 100644
--- a/src/lib/tpm2_tlcl.c
+++ b/src/lib/tpm2_tlcl.c
@@ -359,6 +359,13 @@ uint32_t tlcl_define_space(uint32_t space_index, size_t space_size)
if (!response)
return TPM_E_NO_DEVICE;
- return response->hdr.tpm_code ? TPM_E_INTERNAL_INCONSISTENCY :
- TPM_SUCCESS;
+ /* Map TPM2 retrun codes into common vboot represenation. */
+ switch(response->hdr.tpm_code) {
+ case TPM2_RC_SUCCESS:
+ return TPM_SUCCESS;
+ case TPM2_RC_NV_DEFINED:
+ return TPM_E_NV_DEFINED;
+ default:
+ return TPM_E_INTERNAL_INCONSISTENCY;
+ }
}