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

Unified Diff: tpm/tpm_cmd_handler.c

Issue 660204: Upgrade to tpm-emulator version 0.7. (Closed)
Patch Set: Created 10 years, 10 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 | « tpm/tpm_capability.c ('k') | tpm/tpm_commands.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tpm/tpm_cmd_handler.c
diff --git a/tpm/tpm_cmd_handler.c b/tpm/tpm_cmd_handler.c
index b36d2e955c0f3af33f24474b0d0027bd46152afe..8768151298e381db8fdb52e393faa1a878c68504 100644
--- a/tpm/tpm_cmd_handler.c
+++ b/tpm/tpm_cmd_handler.c
@@ -1,6 +1,5 @@
-/* Software-Based Trusted Platform Module (TPM) Emulator for Linux
- * Copyright (C) 2004 Mario Strasser <mast@gmx.net>,
- * Swiss Federal Institute of Technology (ETH) Zurich
+/* Software-based Trusted Platform Module (TPM) Emulator
+ * Copyright (C) 2004-2010 Mario Strasser <mast@gmx.net>
*
* This module is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published
@@ -12,7 +11,7 @@
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
- * $Id$
+ * $Id: tpm_cmd_handler.c 377 2010-02-16 14:52:57Z mast $
*/
#include "tpm_marshalling.h"
@@ -22,6 +21,10 @@
#include "tpm_data.h"
#include "tpm_handles.h"
+#ifdef MTM_EMULATOR
+#include "mtm/mtm_commands.h"
+#endif
+
UINT32 tpm_get_in_param_offset(TPM_COMMAND_CODE ordinal)
{
switch (ordinal) {
@@ -361,7 +364,11 @@ static TPM_RESULT execute_TPM_GetCapability(TPM_REQUEST *req, TPM_RESPONSE *rsp)
|| tpm_unmarshal_BLOB(&ptr, &len, &subCap, subCapSize)
|| len != 0) return TPM_BAD_PARAMETER;
/* execute command */
+#ifdef MTM_EMULATOR
+ res = MTM_GetCapability(capArea, subCapSize, subCap, &respSize, &resp);
+#else
res = TPM_GetCapability(capArea, subCapSize, subCap, &respSize, &resp);
+#endif
if (res != TPM_SUCCESS) return res;
/* marshal output */
rsp->paramSize = len = 4 + respSize;
@@ -1839,7 +1846,11 @@ static TPM_RESULT execute_TPM_Extend(TPM_REQUEST *req, TPM_RESPONSE *rsp)
|| tpm_unmarshal_TPM_DIGEST(&ptr, &len, &inDigest)
|| len != 0) return TPM_BAD_PARAMETER;
/* execute command */
+#ifdef MTM_EMULATOR
+ res = MTM_Extend(pcrNum, &inDigest, &outDigest);
+#else
res = TPM_Extend(pcrNum, &inDigest, &outDigest);
+#endif
if (res != TPM_SUCCESS) return res;
/* marshal output */
rsp->paramSize = len = 20;
@@ -1926,7 +1937,11 @@ static TPM_RESULT execute_TPM_PCR_Reset(TPM_REQUEST *req, TPM_RESPONSE *rsp)
if (tpm_unmarshal_TPM_PCR_SELECTION(&ptr, &len, &pcrSelection)
|| len != 0) return TPM_BAD_PARAMETER;
/* execute command */
+#ifdef MTM_EMULATOR
+ return MTM_PCR_Reset(&pcrSelection);
+#else
return TPM_PCR_Reset(&pcrSelection);
+#endif
}
static TPM_RESULT execute_TPM_Quote2(TPM_REQUEST *req, TPM_RESPONSE *rsp)
@@ -2591,7 +2606,11 @@ static TPM_RESULT execute_TPM_FlushSpecific(TPM_REQUEST *req, TPM_RESPONSE *rsp)
|| tpm_unmarshal_TPM_RESOURCE_TYPE(&ptr, &len, &resourceType)
|| len != 0) return TPM_BAD_PARAMETER;
/* execute command */
+#ifdef MTM_EMULATOR
+ return MTM_FlushSpecific(handle, resourceType);
+#else
return TPM_FlushSpecific(handle, resourceType);
+#endif
}
static TPM_RESULT execute_TPM_GetTicks(TPM_REQUEST *req, TPM_RESPONSE *rsp)
@@ -2868,7 +2887,11 @@ static TPM_RESULT execute_TPM_ReleaseCounter(TPM_REQUEST *req, TPM_RESPONSE *rsp
if (tpm_unmarshal_TPM_COUNT_ID(&ptr, &len, &countID)
|| len != 0) return TPM_BAD_PARAMETER;
/* execute command */
+#ifdef MTM_EMULATOR
+ return MTM_ReleaseCounter(countID, &req->auth1);
+#else
return TPM_ReleaseCounter(countID, &req->auth1);
+#endif
}
static TPM_RESULT execute_TPM_ReleaseCounterOwner(TPM_REQUEST *req, TPM_RESPONSE *rsp)
@@ -2884,7 +2907,11 @@ static TPM_RESULT execute_TPM_ReleaseCounterOwner(TPM_REQUEST *req, TPM_RESPONSE
if (tpm_unmarshal_TPM_COUNT_ID(&ptr, &len, &countID)
|| len != 0) return TPM_BAD_PARAMETER;
/* execute command */
+#ifdef MTM_EMULATOR
+ return MTM_ReleaseCounterOwner(countID, &req->auth1);
+#else
return TPM_ReleaseCounterOwner(countID, &req->auth1);
+#endif
}
static TPM_RESULT execute_TPM_DAA_Join(TPM_REQUEST *req, TPM_RESPONSE *rsp)
@@ -4033,6 +4060,10 @@ void tpm_execute_command(TPM_REQUEST *req, TPM_RESPONSE *rsp)
break;
default:
+#ifdef MTM_EMULATOR
+ res = mtm_execute_command(req, rsp);
+ if (res != TPM_BAD_ORDINAL) break;
+#endif
info("The ordinal (0x%02x) was unknown or inconsistent", req->ordinal);
tpm_setup_error_response(TPM_BAD_ORDINAL, rsp);
return;
@@ -4050,11 +4081,11 @@ void tpm_execute_command(TPM_REQUEST *req, TPM_RESPONSE *rsp)
info("TPM command succeeded");
rsp->size += rsp->paramSize;
if (rsp->tag != TPM_TAG_RSP_COMMAND) tpm_setup_rsp_auth(req->ordinal, rsp);
-#ifdef TPM_STRONG_PERSISTENCE
- if (tpm_store_permanent_data() != 0) {
- error("tpm_store_permanent_data() failed");
- }
-#endif
+ if (tpmConf & TPM_CONF_STRONG_PERSISTENCE) {
+ if (tpm_store_permanent_data() != 0) {
+ error("tpm_store_permanent_data() failed");
+ }
+ }
}
/* terminate authorization sessions if necessary */
if (rsp->auth1 != NULL && !rsp->auth1->continueAuthSession)
@@ -4071,9 +4102,13 @@ void tpm_execute_command(TPM_REQUEST *req, TPM_RESPONSE *rsp)
}
}
-void tpm_emulator_init(uint32_t startup)
+void tpm_emulator_init(uint32_t startup, uint32_t conf)
{
- debug("tpm_emulator_init()");
+ debug("tpm_emulator_init(%d, 0x%08x)", startup, conf);
+ tpmConf = conf;
+#ifdef MTM_EMULATOR
+ info("MTM support enabled");
+#endif
/* try to restore data, if it fails use default values */
if (tpm_restore_permanent_data() != 0) tpm_init_data();
TPM_Init(startup);
« no previous file with comments | « tpm/tpm_capability.c ('k') | tpm/tpm_commands.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698