summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/security/tpm/tss/tcg-2.0/tss_marshaling.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/security/tpm/tss/tcg-2.0/tss_marshaling.c b/src/security/tpm/tss/tcg-2.0/tss_marshaling.c
index ec3cd8b4b2..1bf211a898 100644
--- a/src/security/tpm/tss/tcg-2.0/tss_marshaling.c
+++ b/src/security/tpm/tss/tcg-2.0/tss_marshaling.c
@@ -83,9 +83,30 @@ static int marshal_TPMT_HA(struct obuf *ob, TPMT_HA *tpmtha)
int rc = 0;
rc |= marshal_TPMI_ALG_HASH(ob, tpmtha->hashAlg);
- rc |= obuf_write(ob, tpmtha->digest.sha256,
+ switch (tpmtha->hashAlg) {
+ case TPM_ALG_SHA1:
+ rc |= obuf_write(ob, tpmtha->digest.sha1,
tlcl_get_hash_size_from_algo(tpmtha->hashAlg));
-
+ break;
+ case TPM_ALG_SHA256:
+ rc |= obuf_write(ob, tpmtha->digest.sha256,
+ tlcl_get_hash_size_from_algo(tpmtha->hashAlg));
+ break;
+ case TPM_ALG_SM3_256:
+ rc |= obuf_write(ob, tpmtha->digest.sm3_256,
+ tlcl_get_hash_size_from_algo(tpmtha->hashAlg));
+ break;
+ case TPM_ALG_SHA384:
+ rc |= obuf_write(ob, tpmtha->digest.sha384,
+ tlcl_get_hash_size_from_algo(tpmtha->hashAlg));
+ break;
+ case TPM_ALG_SHA512:
+ rc |= obuf_write(ob, tpmtha->digest.sha512,
+ tlcl_get_hash_size_from_algo(tpmtha->hashAlg));
+ break;
+ default:
+ rc = -1;
+ }
return rc;
}