aboutsummaryrefslogtreecommitdiffstats
path: root/tools/vtpm
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2008-03-03 10:53:43 +0000
committerKeir Fraser <keir.fraser@citrix.com>2008-03-03 10:53:43 +0000
commit7dd1649cdbd9af9356c21698f77ea50d2b1fea75 (patch)
tree1012769c6c6ce51a572c1dfb88c503890ffa3acc /tools/vtpm
parent0e2661a9738d001b2b407c48e48f79484e8a584b (diff)
downloadxen-7dd1649cdbd9af9356c21698f77ea50d2b1fea75.tar.gz
xen-7dd1649cdbd9af9356c21698f77ea50d2b1fea75.tar.bz2
xen-7dd1649cdbd9af9356c21698f77ea50d2b1fea75.zip
TPM emulator: HMAC calculation fix for response from TPM_LoadKey2
Signed-off-by: Stefan Berger <stefanb@us.ibm.com>
Diffstat (limited to 'tools/vtpm')
-rw-r--r--tools/vtpm/vtpm.patch27
1 files changed, 25 insertions, 2 deletions
diff --git a/tools/vtpm/vtpm.patch b/tools/vtpm/vtpm.patch
index dccd9ed3ee..e896b258c7 100644
--- a/tools/vtpm/vtpm.patch
+++ b/tools/vtpm/vtpm.patch
@@ -125,9 +125,32 @@ diff -uprN tpm_emulator/tpm/tpm_capability.c vtpm/tpm/tpm_capability.c
return TPM_FAIL;
case TPM_CAP_PROP_ACTIVE_COUNTER:
+diff -uprN tpm_emulator/tpm/tpm_cmd_handler.c vtpm/tpm/tpm_cmd_handler.c
+--- tpm_emulator/tpm/tpm_cmd_handler.c 2008-02-27 16:35:41.000000000 -0500
++++ vtpm/tpm/tpm_cmd_handler.c 2008-02-28 14:43:28.000000000 -0500
+@@ -94,12 +94,18 @@ void tpm_compute_out_param_digest(TPM_CO
+ sha1_ctx_t sha1;
+ UINT32 res = CPU_TO_BE32(rsp->result);
+ UINT32 ord = CPU_TO_BE32(ordinal);
++ UINT32 offset = 0;
+
+ /* compute SHA1 hash */
+ sha1_init(&sha1);
+ sha1_update(&sha1, (BYTE*)&res, 4);
+ sha1_update(&sha1, (BYTE*)&ord, 4);
+- sha1_update(&sha1, rsp->param, rsp->paramSize);
++ if (ordinal == TPM_ORD_LoadKey2) {
++ offset = 4;
++ }
++ if (rsp->paramSize - offset > 0) {
++ sha1_update(&sha1, rsp->param + offset, rsp->paramSize - offset);
++ }
+ sha1_final(&sha1, rsp->auth1->digest);
+ if (rsp->auth2 != NULL) memcpy(rsp->auth2->digest,
+ rsp->auth1->digest, sizeof(rsp->auth1->digest));
diff -uprN tpm_emulator/tpm/tpm_data.c vtpm/tpm/tpm_data.c
---- tpm_emulator/tpm/tpm_data.c 2006-12-08 12:51:29.000000000 -0800
-+++ vtpm/tpm/tpm_data.c 2006-12-13 16:38:52.000000000 -0800
+--- tpm_emulator/tpm/tpm_data.c 2008-02-27 16:35:41.000000000 -0500
++++ vtpm/tpm/tpm_data.c 2008-02-27 16:35:40.000000000 -0500
@@ -1,6 +1,7 @@
/* Software-Based Trusted Platform Module (TPM) Emulator for Linux
* Copyright (C) 2004 Mario Strasser <mast@gmx.net>,