Signed-off-by: Quan Xu <quan...@intel.com> --- stubdom/vtpmmgr/disk_read.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-)
diff --git a/stubdom/vtpmmgr/disk_read.c b/stubdom/vtpmmgr/disk_read.c index 33aacdd..57573e4 100644 --- a/stubdom/vtpmmgr/disk_read.c +++ b/stubdom/vtpmmgr/disk_read.c @@ -10,7 +10,6 @@ #include "vtpm_manager.h" #include "log.h" #include "uuid.h" - #include "vtpmmgr.h" #include "vtpm_disk.h" #include "disk_tpm.h" @@ -67,6 +66,7 @@ static int find_group_key(struct mem_group *dst, const struct mem_tpm_mgr *parent) { int i, rc, rv = 1; + unsigned int olen; struct hash160 buf; struct disk_group_sealed_data sealed; @@ -82,13 +82,19 @@ static int find_group_key(struct mem_group *dst, for(i=0; i < dst->nr_seals; i++) { const struct disk_seal_entry *cfg = &group->v.boot_configs.entry[i]; - dst->seals[i].pcr_selection = cfg->pcr_selection; - memcpy(&dst->seals[i].digest_release, &cfg->digest_release, 20); - TPM_pcr_digest(&buf, cfg->pcr_selection); - if (memcmp(&buf, &cfg->digest_release, 20)) - continue; - rc = TPM_disk_unseal(&sealed, sizeof(sealed), cfg); + /*TPM 2.0 unbind | TPM 1.x unseal*/ + if (hw_is_tpm2()) { + rc = TPM2_disk_unbind(&sealed, &olen, cfg); + } else { + dst->seals[i].pcr_selection = cfg->pcr_selection; + memcpy(&dst->seals[i].digest_release, &cfg->digest_release, 20); + + TPM_pcr_digest(&buf, cfg->pcr_selection); + if (memcmp(&buf, &cfg->digest_release, 20)) + continue; + rc = TPM_disk_unseal(&sealed, sizeof(sealed), cfg); + } if (rc) continue; if (memcmp(&sealed.magic, DISK_GROUP_BOUND_MAGIC, 4)) @@ -112,9 +118,15 @@ static int find_group_key(struct mem_group *dst, static int parse_root_key(struct mem_tpm_mgr *dst, struct disk_seal_entry *src) { int rc; + unsigned int olen; struct disk_root_sealed_data sealed; - rc = TPM_disk_unseal(&sealed, sizeof(sealed), src); + /*TPM 2.0 unbind | TPM 1.x unseal*/ + if (hw_is_tpm2()) + rc = TPM2_disk_unbind(&sealed, &olen, src); + else + rc = TPM_disk_unseal(&sealed, sizeof(sealed), src); + if (rc) return rc; -- 1.8.3.2 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org http://lists.xen.org/xen-devel