diff options
-rw-r--r-- | board/cr50/tpm_nvmem_ops.c | 6 | ||||
-rw-r--r-- | board/cr50/tpm_nvmem_ops.h | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/board/cr50/tpm_nvmem_ops.c b/board/cr50/tpm_nvmem_ops.c index 74f2ffbc79..92e8721b0a 100644 --- a/board/cr50/tpm_nvmem_ops.c +++ b/board/cr50/tpm_nvmem_ops.c @@ -14,6 +14,7 @@ #include "Global.h" #include "Implementation.h" #include "NV_fp.h" +#include "PCR_fp.h" #include "tpm_types.h" #define CPRINTF(format, args...) cprintf(CC_TASK, format, ## args) @@ -120,3 +121,8 @@ void tpm_orderly_state_restore(const char copy[TPM_ORDERLY_STATE_SIZE]) { NvStateRestore(copy); } + +bool get_tpm_pcr_value(uint32_t pcr_num, uint8_t value[SHA256_DIGEST_SIZE]) +{ + return PCRGetValue(TPM_ALG_SHA256, pcr_num, SHA256_DIGEST_SIZE, value); +} diff --git a/board/cr50/tpm_nvmem_ops.h b/board/cr50/tpm_nvmem_ops.h index 70187a2245..d157c5308b 100644 --- a/board/cr50/tpm_nvmem_ops.h +++ b/board/cr50/tpm_nvmem_ops.h @@ -7,6 +7,10 @@ #ifndef __EC_BOARD_CR50_TPM_NVMEM_OPS_H #define __EC_BOARD_CR50_TPM_NVMEM_OPS_H +#ifndef SHA256_DIGEST_SIZE +#define SHA256_DIGEST_SIZE 32 +#endif /* SHA256_DIGEST_SIZE */ + #define TPM_ORDERLY_STATE_SIZE 512 enum tpm_read_rv { @@ -52,4 +56,10 @@ void tpm_orderly_state_capture(char copy[TPM_ORDERLY_STATE_SIZE]); void tpm_orderly_state_restore(const char copy[TPM_ORDERLY_STATE_SIZE]); +/* + * Read value of the specified PCR in SHA-256 bank into a buffer, + * or return false if no such PCR + */ +bool get_tpm_pcr_value(uint32_t pcr_num, uint8_t value[SHA256_DIGEST_SIZE]); + #endif /* ! __EC_BOARD_CR50_TPM_NVMEM_OPS_H */ |