summaryrefslogtreecommitdiff
path: root/src/security/tpm
diff options
context:
space:
mode:
Diffstat (limited to 'src/security/tpm')
-rw-r--r--src/security/tpm/tspi.h6
-rw-r--r--src/security/tpm/tspi/tspi.c16
2 files changed, 16 insertions, 6 deletions
diff --git a/src/security/tpm/tspi.h b/src/security/tpm/tspi.h
index 01b2984599..43254c13d1 100644
--- a/src/security/tpm/tspi.h
+++ b/src/security/tpm/tspi.h
@@ -35,10 +35,12 @@ int tcpa_log_add_table_entry(const char *name, const uint32_t pcr,
* Ask vboot for a digest and extend a TPM PCR with it.
* @param pcr sets the pcr index
* @param digest sets the hash to extend into the tpm
- * @param out_digest get extended hash
+ * @param digest_len the length of the digest
+ * @param name sets additional info where the digest comes from
* @return TPM_SUCCESS on success. If not a tpm error is returned
*/
-uint32_t tpm_extend_pcr(int pcr, uint8_t *digest, uint8_t *out_digest);
+uint32_t tpm_extend_pcr(int pcr, uint8_t *digest, size_t digest_len,
+ const char *name);
/**
* Issue a TPM_Clear and reenable/reactivate the TPM.
diff --git a/src/security/tpm/tspi/tspi.c b/src/security/tpm/tspi/tspi.c
index 407e1fa1e0..48b6219547 100644
--- a/src/security/tpm/tspi/tspi.c
+++ b/src/security/tpm/tspi/tspi.c
@@ -178,13 +178,21 @@ uint32_t tpm_clear_and_reenable(void)
return TPM_SUCCESS;
}
-uint32_t tpm_extend_pcr(int pcr, uint8_t *digest, uint8_t *out_digest)
+uint32_t tpm_extend_pcr(int pcr, uint8_t *digest,
+ size_t digest_len, const char *name)
{
+ uint32_t result;
+
if (!digest)
return TPM_E_IOERROR;
- if (out_digest)
- return tlcl_extend(pcr, digest, out_digest);
+ result = tlcl_extend(pcr, digest, NULL);
+ if (result != TPM_SUCCESS)
+ return result;
+
+ result = tcpa_log_add_table_entry(name, pcr, digest, digest_len);
+ if (result != 0)
+ printk(BIOS_ERR, "ERROR: Couldn't create TCPA log entry\n");
- return tlcl_extend(pcr, digest, NULL);
+ return 0;
}