]> xenbits.xensource.com Git - people/andrewcoop/seabios.git/commitdiff
tcgbios: Use table to convert hash to buffer size
authorStefan Berger <stefanb@linux.ibm.com>
Wed, 30 Jan 2019 19:06:06 +0000 (14:06 -0500)
committerKevin O'Connor <kevin@koconnor.net>
Tue, 5 Feb 2019 02:23:37 +0000 (21:23 -0500)
Use a table to convert the hash to the buffer size it needs.

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
src/tcgbios.c

index 24846d3b14d4619a9504d87956875eb5d0d56b70..0eabc60605eca4b0fecb0c96b6d39eb181a6e669 100644 (file)
@@ -161,23 +161,38 @@ struct tpm_log_entry {
            + SHA512_BUFSIZE + SM3_256_BUFSIZE];
 } PACKED;
 
+static const struct hash_parameters {
+    u16 hashalg;
+    u8  hash_buffersize;
+} hash_parameters[] = {
+    {
+        .hashalg = TPM2_ALG_SHA1,
+        .hash_buffersize = SHA1_BUFSIZE,
+    }, {
+        .hashalg = TPM2_ALG_SHA256,
+        .hash_buffersize = SHA256_BUFSIZE,
+    }, {
+        .hashalg = TPM2_ALG_SHA384,
+        .hash_buffersize = SHA384_BUFSIZE,
+    }, {
+        .hashalg = TPM2_ALG_SHA512,
+        .hash_buffersize = SHA512_BUFSIZE,
+    }, {
+        .hashalg = TPM2_ALG_SM3_256,
+        .hash_buffersize = SM3_256_BUFSIZE,
+    }
+};
+
 static int
 tpm20_get_hash_buffersize(u16 hashAlg)
 {
-    switch (hashAlg) {
-    case TPM2_ALG_SHA1:
-        return SHA1_BUFSIZE;
-    case TPM2_ALG_SHA256:
-        return SHA256_BUFSIZE;
-    case TPM2_ALG_SHA384:
-        return SHA384_BUFSIZE;
-    case TPM2_ALG_SHA512:
-        return SHA512_BUFSIZE;
-    case TPM2_ALG_SM3_256:
-        return SM3_256_BUFSIZE;
-    default:
-        return -1;
+    unsigned i;
+
+    for (i = 0; i < ARRAY_SIZE(hash_parameters); i++) {
+        if (hash_parameters[i].hashalg == hashAlg)
+            return hash_parameters[i].hash_buffersize;
     }
+    return -1;
 }
 
 // Add an entry at the start of the log describing digest formats