static uint32_t SafeWrite(uint32_t index, uint8_t* data, uint32_t length) { uint32_t result = TlclWrite(index, data, length); if (result == TPM_E_MAXNVWRITES) { RETURN_ON_FAILURE(TPMClearAndReenable()); result = TlclWrite(index, data, length); tpm_was_just_cleared = 0; } return result; }
int main(int argc, char** argv) { uint32_t x; uint8_t in[20], out[20]; int time_limit_exceeded = 0; int errors = 0; TlclLibInit(); TTPM_CHECK(0, 50); TTPM_CHECK(TlclStartupIfNeeded(), 50); TTPM_CHECK(TlclContinueSelfTest(), 100); TTPM_CHECK(TlclSelfTestFull(), 1000); TTPM_CHECK(TlclAssertPhysicalPresence(), 100); TTPM_CHECK(TlclWrite(INDEX0, (uint8_t*) &x, sizeof(x)), 100); TTPM_CHECK(TlclRead(INDEX0, (uint8_t*) &x, sizeof(x)), 100); TTPM_CHECK(TlclExtend(0, in, out), 200); TTPM_CHECK(TlclSetGlobalLock(), 50); TTPM_CHECK(TlclLockPhysicalPresence(), 100); if (time_limit_exceeded || errors > 0) { printf("TEST FAILED\n"); exit(1); } else { printf("TEST SUCCEEDED\n"); return 0; } }
/** * NV spaces test * * TODO: check params/data read/written. */ static void ReadWriteTest(void) { uint8_t buf[32]; ResetMocks(); TEST_EQ(TlclDefineSpace(1, 2, 3), 0, "DefineSpace"); TEST_EQ(calls[0].req_cmd, TPM_ORD_NV_DefineSpace, " cmd"); ResetMocks(); TEST_EQ(TlclSetNvLocked(), 0, "SetNvLocked"); TEST_EQ(calls[0].req_cmd, TPM_ORD_NV_DefineSpace, " cmd"); ResetMocks(); TEST_EQ(TlclWrite(1, buf, 3), 0, "Write"); TEST_EQ(calls[0].req_cmd, TPM_ORD_NV_WriteValue, " cmd"); ResetMocks(); TEST_EQ(TlclRead(1, buf, 3), 0, "Read"); TEST_EQ(calls[0].req_cmd, TPM_ORD_NV_ReadValue, " cmd"); ResetMocks(); TEST_EQ(TlclWriteLock(1), 0, "WriteLock"); TEST_EQ(calls[0].req_cmd, TPM_ORD_NV_WriteValue, " cmd"); ResetMocks(); TEST_EQ(TlclReadLock(1), 0, "ReadLock"); TEST_EQ(calls[0].req_cmd, TPM_ORD_NV_ReadValue, " cmd"); ResetMocks(); TEST_EQ(TlclSetGlobalLock(), 0, "SetGlobalLock"); TEST_EQ(calls[0].req_cmd, TPM_ORD_NV_WriteValue, " cmd"); }
int main(int argc, char** argv) { uint32_t x; TlclLibInit(); TPM_CHECK(TlclStartup()); TPM_CHECK(TlclContinueSelfTest()); TPM_CHECK(TlclAssertPhysicalPresence()); TPM_CHECK(TlclWrite(INDEX0, (uint8_t*) &x, sizeof(x))); printf("TEST SUCCEEDED\n"); return 0; }