summaryrefslogtreecommitdiff
path: root/firmware/lib/tpm2_lite
diff options
context:
space:
mode:
authorAndrey Pronin <apronin@google.com>2016-07-06 19:10:46 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-07-15 19:23:56 -0700
commit1becb0dabecf6d15b0e7d88704fda86b3912be4c (patch)
treeb4169adb80f6470d9ed08c6e5ff3af19bee3194c /firmware/lib/tpm2_lite
parentd5820a79fc1354d68ead43a3bf88bdee8a6a2f3d (diff)
downloadvboot-1becb0dabecf6d15b0e7d88704fda86b3912be4c.tar.gz
Stub tlcl implementation for tpm2 case
Build a special version of TPM Lightweight Command Library in libvboot_host for TPM2. Create the framework for implementation, stub functions for now. libvboot_host is used by tpmc and other user-space utilities that talk directly to tpm bypassing trunks/trousers. BRANCH=none BUG=chrome-os-partner:54981 BUG=chrome-os-partner:55210 TEST=Boot on kevin, verify that 'tpmc read' works. Change-Id: I4cc41028041193041defc319687697eb9edb1f3e Reviewed-on: https://chromium-review.googlesource.com/358623 Commit-Ready: Andrey Pronin <apronin@chromium.org> Tested-by: Stephen Barber <smbarber@chromium.org> Tested-by: Andrey Pronin <apronin@chromium.org> Reviewed-by: Stephen Barber <smbarber@chromium.org>
Diffstat (limited to 'firmware/lib/tpm2_lite')
-rw-r--r--firmware/lib/tpm2_lite/tlcl.c128
1 files changed, 128 insertions, 0 deletions
diff --git a/firmware/lib/tpm2_lite/tlcl.c b/firmware/lib/tpm2_lite/tlcl.c
index efd73928..f335ffb6 100644
--- a/firmware/lib/tpm2_lite/tlcl.c
+++ b/firmware/lib/tpm2_lite/tlcl.c
@@ -42,6 +42,65 @@ static struct tpm2_response *tpm_process_command(TPM_CC command,
return response;
}
+uint32_t TlclLibInit(void)
+{
+ return VbExTpmInit();
+}
+
+uint32_t TlclLibClose(void)
+{
+ return VbExTpmClose();
+}
+
+uint32_t TlclSendReceive(const uint8_t *request, uint8_t *response,
+ int max_length)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_SUCCESS;
+}
+
+int TlclPacketSize(const uint8_t *packet)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return 0;
+}
+
+uint32_t TlclStartup(void)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_SUCCESS;
+}
+
+uint32_t TlclSaveState(void)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_SUCCESS;
+}
+
+uint32_t TlclResume(void)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_SUCCESS;
+}
+
+uint32_t TlclSelfTestFull(void)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_SUCCESS;
+}
+
+uint32_t TlclContinueSelfTest(void)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_SUCCESS;
+}
+
+int32_t TlclDefineSpace(uint32_t index, uint32_t perm, uint32_t size)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_SUCCESS;
+}
+
/**
* Issue a ForceClear. The TPM error code is returned.
*/
@@ -63,6 +122,31 @@ uint32_t TlclSetEnable(void)
return TPM_SUCCESS;
}
+uint32_t TlclGetFlags(uint8_t* disable,
+ uint8_t* deactivated,
+ uint8_t *nvlocked)
+{
+ /* For TPM2 the flags are always the same */
+ if (disable)
+ *disable = 0;
+ if (deactivated)
+ *deactivated = 0;
+ if (nvlocked)
+ *nvlocked = 1;
+ return TPM_SUCCESS;
+}
+
+int TlclIsOwned(void)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return 0;
+}
+
+uint32_t TlclExtend(int pcr_num, const uint8_t *in_digest, uint8_t *out_digest)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_SUCCESS;
+}
/**
* Get the permission bits for the NVRAM space with |index|.
@@ -74,6 +158,25 @@ uint32_t TlclGetPermissions(uint32_t index, uint32_t *permissions)
return TPM_SUCCESS;
}
+uint32_t TlclGetPermanentFlags(TPM_PERMANENT_FLAGS *pflags)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_SUCCESS;
+}
+
+uint32_t TlclGetSTClearFlags(TPM_STCLEAR_FLAGS *pflags)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_SUCCESS;
+}
+
+uint32_t TlclGetOwnership(uint8_t *owned)
+{
+ *owned = 0;
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_SUCCESS;
+}
+
static uint32_t tlcl_lock_nv_write(uint32_t index)
{
struct tpm2_response *response;
@@ -184,3 +287,28 @@ uint32_t TlclWrite(uint32_t index, const void *data, uint32_t length)
return TPM_SUCCESS;
}
+
+int32_t TlclPCRRead(uint32_t index, void *data, uint32_t length)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_SUCCESS;
+}
+
+uint32_t TlclWriteLock(uint32_t index)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_SUCCESS;
+}
+
+uint32_t TlclReadLock(uint32_t index)
+{
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_SUCCESS;
+}
+
+uint32_t TlclGetRandom(uint8_t *data, uint32_t length, uint32_t *size)
+{
+ *size = 0;
+ VBDEBUG(("%s called, NOT YET IMPLEMENTED\n", __func__));
+ return TPM_E_IOERROR;
+}