diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2008-03-03 10:53:43 +0000 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2008-03-03 10:53:43 +0000 |
commit | 7dd1649cdbd9af9356c21698f77ea50d2b1fea75 (patch) | |
tree | 1012769c6c6ce51a572c1dfb88c503890ffa3acc /tools/vtpm | |
parent | 0e2661a9738d001b2b407c48e48f79484e8a584b (diff) | |
download | xen-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.patch | 27 |
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>, |