Loading...
/* SPDX-License-Identifier: BSD-3-Clause */

/* taken from https://github.com/tpm2-software/tpm2-tss/blob/master/include/tss2/tss2_tpm2_types.h */
#define TPM2_MAX_PCRS           32

/* Hash algorithm sizes */
#define TPM2_SHA_DIGEST_SIZE     20
#define TPM2_SHA1_DIGEST_SIZE    20
#define TPM2_SHA256_DIGEST_SIZE  32
#define TPM2_SHA384_DIGEST_SIZE  48
#define TPM2_SHA512_DIGEST_SIZE  64
#define TPM2_SM3_256_DIGEST_SIZE 32

/* taken from https://github.com/tpm2-software/tpm2-tools/blob/master/lib/tpm2_eventlog.h#L14 */

typedef bool (*digest2_callback)(void const *digest, size_t size, void *data);
typedef bool (*event2_callback)(void const *event_hdr, size_t size, void *data);
typedef bool (*event2data_callback)(void const *event, u32 type, void *data,
				    u32 eventlog_version);
typedef bool (*specid_callback)(void const *event, void *data);
typedef bool (*log_event_callback)(void const *event_hdr, size_t size,
				   void *data);

struct tpm2_eventlog_context {
	void *data;
	specid_callback specid_cb;
	log_event_callback log_eventhdr_cb;
	event2_callback event2hdr_cb;
	digest2_callback digest2_cb;
	event2data_callback event2_cb;
	u32 sha1_used;
	u32 sha256_used;
	u32 sha384_used;
	u32 sha512_used;
	u32 sm3_256_used;
	u8 sha1_pcrs[TPM2_MAX_PCRS][TPM2_SHA1_DIGEST_SIZE];
	u8 sha256_pcrs[TPM2_MAX_PCRS][TPM2_SHA256_DIGEST_SIZE];
	u8 sha384_pcrs[TPM2_MAX_PCRS][TPM2_SHA384_DIGEST_SIZE];
	u8 sha512_pcrs[TPM2_MAX_PCRS][TPM2_SHA512_DIGEST_SIZE];
	u8 sm3_256_pcrs[TPM2_MAX_PCRS][TPM2_SM3_256_DIGEST_SIZE];
	u32 eventlog_version;
};