Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: src/platform/tpm_lite/src/testsuite/readonly.c

Issue 870004: Many upgrades to tpm_lite. (Closed)
Patch Set: Fix makefile comment. Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/platform/tpm_lite/src/testsuite/Makefile ('k') | src/platform/tpm_lite/src/tlcl/Makefile » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/platform/tpm_lite/src/testsuite/readonly.c
diff --git a/src/platform/tpm_lite/src/testsuite/readonly.c b/src/platform/tpm_lite/src/testsuite/readonly.c
index 1707d599c9d2ac0f5022b0221535a4aa0bc00530..47ee0a4b18eec6a6196a4223bee42cde57a48fd7 100644
--- a/src/platform/tpm_lite/src/testsuite/readonly.c
+++ b/src/platform/tpm_lite/src/testsuite/readonly.c
@@ -35,20 +35,23 @@
*/
void InitializeSpaces(void) {
uint32_t zero = 0;
+ uint32_t perm = TPM_NV_PER_WRITE_STCLEAR;
+ printf("Initializing spaces\n");
TlclSetNvLocked(); /* useful only the first time */
- TlclDefineSpace(INDEX0, TPM_NV_PER_WRITE_STCLEAR, 4);
+ TlclDefineSpace(INDEX0, perm, 4);
TlclWrite(INDEX0, (uint8_t *) &zero, 4);
- TlclDefineSpace(INDEX1, TPM_NV_PER_WRITE_STCLEAR, 4);
+ TlclDefineSpace(INDEX1, perm, 4);
TlclWrite(INDEX1, (uint8_t *) &zero, 4);
- TlclDefineSpace(INDEX2, TPM_NV_PER_WRITE_STCLEAR, 4);
+ TlclDefineSpace(INDEX2, perm, 4);
TlclWrite(INDEX2, (uint8_t *) &zero, 4);
- TlclDefineSpace(INDEX3, TPM_NV_PER_WRITE_STCLEAR, 4);
+ TlclDefineSpace(INDEX3, perm, 4);
TlclWrite(INDEX3, (uint8_t *) &zero, 4);
- TlclDefineSpace(INDEX_INITIALIZED, TPM_NV_PER_READ_STCLEAR, 1);
- TlclReadLock(INDEX_INITIALIZED);
+ perm = TPM_NV_PER_READ_STCLEAR | TPM_NV_PER_WRITE_STCLEAR |
+ TPM_NV_PER_PPWRITE;
+ TlclDefineSpace(INDEX_INITIALIZED, perm, 1);
}
@@ -71,9 +74,10 @@ int main(void) {
TlclAssertPhysicalPresence();
- /* Checks if initialization has completed.
+ /* Checks if initialization has completed by trying to read-lock a space
+ * that's created at the end of initialization.
*/
- if (TlclRead(INDEX_INITIALIZED, &c, 1) != TPM_E_DISABLED_CMD) {
+ if (TlclRead(INDEX_INITIALIZED, &c, 0) == TPM_E_BADINDEX) {
/* The initialization did not complete.
*/
InitializeSpaces();
@@ -81,15 +85,27 @@ int main(void) {
/* Checks if spaces are OK or messed up.
*/
- if (TlclRead(INDEX0, (uint8_t *) &index_0, sizeof(index_0)) != TPM_SUCCESS ||
- TlclRead(INDEX1, (uint8_t *) &index_1, sizeof(index_1)) != TPM_SUCCESS ||
- TlclRead(INDEX2, (uint8_t *) &index_2, sizeof(index_2)) != TPM_SUCCESS ||
- TlclRead(INDEX3, (uint8_t *) &index_3, sizeof(index_3)) != TPM_SUCCESS) {
+ if (TlclRead(INDEX0, (uint8_t*) &index_0, sizeof(index_0)) != TPM_SUCCESS ||
+ TlclRead(INDEX1, (uint8_t*) &index_1, sizeof(index_1)) != TPM_SUCCESS ||
+ TlclRead(INDEX2, (uint8_t*) &index_2, sizeof(index_2)) != TPM_SUCCESS ||
+ TlclRead(INDEX3, (uint8_t*) &index_3, sizeof(index_3)) != TPM_SUCCESS) {
EnterRecoveryMode();
}
+ /* Writes space, and locks it. Then attempts to write again. I really wish
+ * I could use the imperative.
+ */
+ index_0 += 1;
+ if (TlclWrite(INDEX0, (uint8_t*) &index_0, sizeof(index_0) != TPM_SUCCESS)) {
+ error("could not write index 0\n");
+ }
+ TlclWriteLock(INDEX0);
+ if (TlclWrite(INDEX0, (uint8_t*) &index_0, sizeof(index_0)) == TPM_SUCCESS) {
+ error("index 0 is not locked\n");
+ }
+
/* Done for now.
*/
+ printf("Test completed successfully\n");
exit(0);
}
-
« no previous file with comments | « src/platform/tpm_lite/src/testsuite/Makefile ('k') | src/platform/tpm_lite/src/tlcl/Makefile » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698