security/tpm/tss/tcg-2.0: Add support for algorithms

Function marshal_TPMT_HA() supports SHA-256 only.
Add support for more algorithms.

BUG=N/A
TEST=Build binary and verified logging on Facebook FBG-1701

Change-Id: Ife8d44484c7a7cb717035e5ae0870bbee205661b
Signed-off-by: Frans Hendriks <fhendriks@eltan.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/35276
Reviewed-by: Lance Zhao <lance.zhao@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
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 ec3cd8b..1bf211a 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 @@
 	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;
 }