Index: src/tlcl/tlcl.c |
diff --git a/src/tlcl/tlcl.c b/src/tlcl/tlcl.c |
index 3d34d6c32b551dbf5b668b69258fd08d57ea9d0a..a932a36f3885d8b941a574e3b321c20988a6c6ea 100644 |
--- a/src/tlcl/tlcl.c |
+++ b/src/tlcl/tlcl.c |
@@ -251,6 +251,10 @@ void TlclSelftestfull(void) { |
Send(tpm_selftestfull_cmd.buffer); |
} |
+void TlclContinueSelfTest(void) { |
+ Send(tpm_continueselftest_cmd.buffer); |
+} |
+ |
void TlclDefineSpace(uint32_t index, uint32_t perm, uint32_t size) { |
ToTpmUint32(tpm_nv_definespace_cmd.index, index); |
ToTpmUint32(tpm_nv_definespace_cmd.perm, perm); |
@@ -258,6 +262,15 @@ void TlclDefineSpace(uint32_t index, uint32_t perm, uint32_t size) { |
Send(tpm_nv_definespace_cmd.buffer); |
} |
+uint32_t TlclDefineSpaceResult(uint32_t index, uint32_t perm, uint32_t size) { |
+ uint8_t response[TPM_LARGE_ENOUGH_COMMAND_SIZE]; |
+ ToTpmUint32(tpm_nv_definespace_cmd.index, index); |
+ ToTpmUint32(tpm_nv_definespace_cmd.perm, perm); |
+ ToTpmUint32(tpm_nv_definespace_cmd.size, size); |
+ SendReceive(tpm_nv_definespace_cmd.buffer, response, sizeof(response)); |
+ return TpmReturnCode(response); |
+} |
+ |
uint32_t TlclWrite(uint32_t index, uint8_t* data, uint32_t length) { |
uint8_t response[TPM_LARGE_ENOUGH_COMMAND_SIZE]; |
const int total_length = |
@@ -312,6 +325,12 @@ void TlclAssertPhysicalPresence(void) { |
Send(tpm_ppassert_cmd.buffer); |
} |
+uint32_t TlclAssertPhysicalPresenceResult(void) { |
+ uint8_t response[TPM_LARGE_ENOUGH_COMMAND_SIZE]; |
+ SendReceive(tpm_ppassert_cmd.buffer, response, sizeof(response)); |
+ return TpmReturnCode(response); |
+} |
+ |
uint32_t TlclLockPhysicalPresence(void) { |
uint8_t response[TPM_LARGE_ENOUGH_COMMAND_SIZE]; |
SendReceive(tpm_pplock_cmd.buffer, response, sizeof(response)); |
@@ -378,3 +397,12 @@ uint32_t TlclSetGlobalLock(void) { |
uint32_t x; |
return TlclWrite(TPM_NV_INDEX0, (uint8_t*) &x, 0); |
} |
+ |
+uint32_t TlclExtend(int pcr_num, uint8_t* in_digest, uint8_t* out_digest) { |
+ uint8_t response[kTpmResponseHeaderLength + kPcrDigestLength]; |
+ ToTpmUint32(tpm_extend_cmd.pcrNum, pcr_num); |
+ memcpy(tpm_extend_cmd.inDigest, in_digest, kPcrDigestLength); |
+ SendReceive(tpm_extend_cmd.buffer, response, sizeof(response)); |
+ memcpy(out_digest, response + kTpmResponseHeaderLength, kPcrDigestLength); |
+ return TpmReturnCode(response); |
+} |