Index: firmware/lib/rollback_index.c |
diff --git a/firmware/lib/rollback_index.c b/firmware/lib/rollback_index.c |
index 94693856a3e03913a2596c2a8f3b4f1560f9a3c6..9442b7792c3004483475d9465f8ae01a4a4a264a 100644 |
--- a/firmware/lib/rollback_index.c |
+++ b/firmware/lib/rollback_index.c |
@@ -103,6 +103,15 @@ static uint32_t OneTimeInitializeTPM(RollbackSpaceFirmware* rsf, |
VBDEBUG(("TPM: One-time initialization\n")); |
+ /* Do a full test. This only happens the first time the device is turned on |
+ * in the factory, so performance is not an issue. This is almost certainly |
+ * not necessary, but it gives us more confidence about some code paths below |
+ * that are difficult to test---specifically the ones that set lifetime |
+ * flags, and are only executed once per physical TPM. */ |
+ result = TlclSelfTestFull(); |
+ if (result != TPM_SUCCESS) |
+ return result; |
+ |
result = TlclGetPermanentFlags(&pflags); |
if (result != TPM_SUCCESS) |
return result; |