mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-23 17:34:00 +03:00
boot: move TCG/TPM protocol definitions into missing_efi.h
That's what it is for...
This commit is contained in:
parent
2da0a7e154
commit
b4f25c649d
@ -7,175 +7,7 @@
|
||||
|
||||
#include "macro-fundamental.h"
|
||||
#include "measure.h"
|
||||
|
||||
#define EFI_TCG_GUID \
|
||||
&(const EFI_GUID) { 0xf541796d, 0xa62e, 0x4954, { 0xa7, 0x75, 0x95, 0x84, 0xf6, 0x1b, 0x9c, 0xdd } }
|
||||
|
||||
typedef struct _TCG_VERSION {
|
||||
UINT8 Major;
|
||||
UINT8 Minor;
|
||||
UINT8 RevMajor;
|
||||
UINT8 RevMinor;
|
||||
} TCG_VERSION;
|
||||
|
||||
typedef struct tdEFI_TCG2_VERSION {
|
||||
UINT8 Major;
|
||||
UINT8 Minor;
|
||||
} EFI_TCG2_VERSION;
|
||||
|
||||
typedef struct _TCG_BOOT_SERVICE_CAPABILITY {
|
||||
UINT8 Size;
|
||||
struct _TCG_VERSION StructureVersion;
|
||||
struct _TCG_VERSION ProtocolSpecVersion;
|
||||
UINT8 HashAlgorithmBitmap;
|
||||
BOOLEAN TPMPresentFlag;
|
||||
BOOLEAN TPMDeactivatedFlag;
|
||||
} TCG_BOOT_SERVICE_CAPABILITY;
|
||||
|
||||
typedef struct tdTREE_BOOT_SERVICE_CAPABILITY {
|
||||
UINT8 Size;
|
||||
EFI_TCG2_VERSION StructureVersion;
|
||||
EFI_TCG2_VERSION ProtocolVersion;
|
||||
UINT32 HashAlgorithmBitmap;
|
||||
UINT32 SupportedEventLogs;
|
||||
BOOLEAN TrEEPresentFlag;
|
||||
UINT16 MaxCommandSize;
|
||||
UINT16 MaxResponseSize;
|
||||
UINT32 ManufacturerID;
|
||||
} TREE_BOOT_SERVICE_CAPABILITY;
|
||||
|
||||
typedef UINT32 TCG_ALGORITHM_ID;
|
||||
#define TCG_ALG_SHA 0x00000004 // The SHA1 algorithm
|
||||
|
||||
#define SHA1_DIGEST_SIZE 20
|
||||
|
||||
typedef struct _TCG_DIGEST {
|
||||
UINT8 Digest[SHA1_DIGEST_SIZE];
|
||||
} TCG_DIGEST;
|
||||
|
||||
#define EV_IPL 13
|
||||
|
||||
typedef struct _TCG_PCR_EVENT {
|
||||
UINT32 PCRIndex;
|
||||
UINT32 EventType;
|
||||
struct _TCG_DIGEST digest;
|
||||
UINT32 EventSize;
|
||||
UINT8 Event[1];
|
||||
} TCG_PCR_EVENT;
|
||||
|
||||
INTERFACE_DECL(_EFI_TCG);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG_STATUS_CHECK) (IN struct _EFI_TCG * This,
|
||||
OUT struct _TCG_BOOT_SERVICE_CAPABILITY * ProtocolCapability,
|
||||
OUT UINT32 * TCGFeatureFlags,
|
||||
OUT EFI_PHYSICAL_ADDRESS * EventLogLocation,
|
||||
OUT EFI_PHYSICAL_ADDRESS * EventLogLastEntry);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG_HASH_ALL) (IN struct _EFI_TCG * This,
|
||||
IN UINT8 * HashData,
|
||||
IN UINT64 HashDataLen,
|
||||
IN TCG_ALGORITHM_ID AlgorithmId,
|
||||
IN OUT UINT64 * HashedDataLen, IN OUT UINT8 ** HashedDataResult);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG_LOG_EVENT) (IN struct _EFI_TCG * This,
|
||||
IN struct _TCG_PCR_EVENT * TCGLogData,
|
||||
IN OUT UINT32 * EventNumber, IN UINT32 Flags);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG_PASS_THROUGH_TO_TPM) (IN struct _EFI_TCG * This,
|
||||
IN UINT32 TpmInputParameterBlockSize,
|
||||
IN UINT8 * TpmInputParameterBlock,
|
||||
IN UINT32 TpmOutputParameterBlockSize,
|
||||
IN UINT8 * TpmOutputParameterBlock);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG_HASH_LOG_EXTEND_EVENT) (IN struct _EFI_TCG * This,
|
||||
IN EFI_PHYSICAL_ADDRESS HashData,
|
||||
IN UINT64 HashDataLen,
|
||||
IN TCG_ALGORITHM_ID AlgorithmId,
|
||||
IN struct _TCG_PCR_EVENT * TCGLogData,
|
||||
IN OUT UINT32 * EventNumber,
|
||||
OUT EFI_PHYSICAL_ADDRESS * EventLogLastEntry);
|
||||
|
||||
typedef struct _EFI_TCG {
|
||||
EFI_TCG_STATUS_CHECK StatusCheck;
|
||||
EFI_TCG_HASH_ALL HashAll;
|
||||
EFI_TCG_LOG_EVENT LogEvent;
|
||||
EFI_TCG_PASS_THROUGH_TO_TPM PassThroughToTPM;
|
||||
EFI_TCG_HASH_LOG_EXTEND_EVENT HashLogExtendEvent;
|
||||
} EFI_TCG;
|
||||
|
||||
#define EFI_TCG2_GUID \
|
||||
&(const EFI_GUID) { 0x607f766c, 0x7455, 0x42be, { 0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72, 0x0f } }
|
||||
|
||||
typedef struct tdEFI_TCG2_PROTOCOL EFI_TCG2_PROTOCOL;
|
||||
|
||||
typedef UINT32 EFI_TCG2_EVENT_LOG_BITMAP;
|
||||
typedef UINT32 EFI_TCG2_EVENT_LOG_FORMAT;
|
||||
typedef UINT32 EFI_TCG2_EVENT_ALGORITHM_BITMAP;
|
||||
|
||||
typedef struct tdEFI_TCG2_BOOT_SERVICE_CAPABILITY {
|
||||
UINT8 Size;
|
||||
EFI_TCG2_VERSION StructureVersion;
|
||||
EFI_TCG2_VERSION ProtocolVersion;
|
||||
EFI_TCG2_EVENT_ALGORITHM_BITMAP HashAlgorithmBitmap;
|
||||
EFI_TCG2_EVENT_LOG_BITMAP SupportedEventLogs;
|
||||
BOOLEAN TPMPresentFlag;
|
||||
UINT16 MaxCommandSize;
|
||||
UINT16 MaxResponseSize;
|
||||
UINT32 ManufacturerID;
|
||||
UINT32 NumberOfPCRBanks;
|
||||
EFI_TCG2_EVENT_ALGORITHM_BITMAP ActivePcrBanks;
|
||||
} EFI_TCG2_BOOT_SERVICE_CAPABILITY;
|
||||
|
||||
#define EFI_TCG2_EVENT_HEADER_VERSION 1
|
||||
|
||||
typedef struct {
|
||||
UINT32 HeaderSize;
|
||||
UINT16 HeaderVersion;
|
||||
UINT32 PCRIndex;
|
||||
UINT32 EventType;
|
||||
} _packed_ EFI_TCG2_EVENT_HEADER;
|
||||
|
||||
typedef struct tdEFI_TCG2_EVENT {
|
||||
UINT32 Size;
|
||||
EFI_TCG2_EVENT_HEADER Header;
|
||||
UINT8 Event[1];
|
||||
} _packed_ EFI_TCG2_EVENT;
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_CAPABILITY) (IN EFI_TCG2_PROTOCOL * This,
|
||||
IN OUT EFI_TCG2_BOOT_SERVICE_CAPABILITY * ProtocolCapability);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_EVENT_LOG) (IN EFI_TCG2_PROTOCOL * This,
|
||||
IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat,
|
||||
OUT EFI_PHYSICAL_ADDRESS * EventLogLocation,
|
||||
OUT EFI_PHYSICAL_ADDRESS * EventLogLastEntry,
|
||||
OUT BOOLEAN * EventLogTruncated);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG2_HASH_LOG_EXTEND_EVENT) (IN EFI_TCG2_PROTOCOL * This,
|
||||
IN UINT64 Flags,
|
||||
IN EFI_PHYSICAL_ADDRESS DataToHash,
|
||||
IN UINT64 DataToHashLen, IN EFI_TCG2_EVENT * EfiTcgEvent);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG2_SUBMIT_COMMAND) (IN EFI_TCG2_PROTOCOL * This,
|
||||
IN UINT32 InputParameterBlockSize,
|
||||
IN UINT8 * InputParameterBlock,
|
||||
IN UINT32 OutputParameterBlockSize, IN UINT8 * OutputParameterBlock);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL * This, OUT UINT32 * ActivePcrBanks);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG2_SET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL * This, IN UINT32 ActivePcrBanks);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_RESULT_OF_SET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL * This,
|
||||
OUT UINT32 * OperationPresent, OUT UINT32 * Response);
|
||||
|
||||
typedef struct tdEFI_TCG2_PROTOCOL {
|
||||
EFI_TCG2_GET_CAPABILITY GetCapability;
|
||||
EFI_TCG2_GET_EVENT_LOG GetEventLog;
|
||||
EFI_TCG2_HASH_LOG_EXTEND_EVENT HashLogExtendEvent;
|
||||
EFI_TCG2_SUBMIT_COMMAND SubmitCommand;
|
||||
EFI_TCG2_GET_ACTIVE_PCR_BANKS GetActivePcrBanks;
|
||||
EFI_TCG2_SET_ACTIVE_PCR_BANKS SetActivePcrBanks;
|
||||
EFI_TCG2_GET_RESULT_OF_SET_ACTIVE_PCR_BANKS GetResultOfSetActivePcrBanks;
|
||||
} EFI_TCG2;
|
||||
#include "missing_efi.h"
|
||||
|
||||
static EFI_STATUS tpm1_measure_to_pcr_and_event_log(const EFI_TCG *tcg, UINT32 pcrindex, const EFI_PHYSICAL_ADDRESS buffer,
|
||||
UINTN buffer_size, const CHAR16 *description) {
|
||||
|
@ -3,6 +3,8 @@
|
||||
|
||||
#include <efi.h>
|
||||
|
||||
#include "macro-fundamental.h"
|
||||
|
||||
#ifndef EFI_RNG_PROTOCOL_GUID
|
||||
|
||||
#define EFI_RNG_PROTOCOL_GUID \
|
||||
@ -159,4 +161,173 @@ struct _EFI_DT_FIXUP_PROTOCOL {
|
||||
EFI_DT_FIXUP Fixup;
|
||||
};
|
||||
|
||||
#define EFI_TCG_GUID \
|
||||
&(const EFI_GUID) { 0xf541796d, 0xa62e, 0x4954, { 0xa7, 0x75, 0x95, 0x84, 0xf6, 0x1b, 0x9c, 0xdd } }
|
||||
|
||||
typedef struct _TCG_VERSION {
|
||||
UINT8 Major;
|
||||
UINT8 Minor;
|
||||
UINT8 RevMajor;
|
||||
UINT8 RevMinor;
|
||||
} TCG_VERSION;
|
||||
|
||||
typedef struct tdEFI_TCG2_VERSION {
|
||||
UINT8 Major;
|
||||
UINT8 Minor;
|
||||
} EFI_TCG2_VERSION;
|
||||
|
||||
typedef struct _TCG_BOOT_SERVICE_CAPABILITY {
|
||||
UINT8 Size;
|
||||
struct _TCG_VERSION StructureVersion;
|
||||
struct _TCG_VERSION ProtocolSpecVersion;
|
||||
UINT8 HashAlgorithmBitmap;
|
||||
BOOLEAN TPMPresentFlag;
|
||||
BOOLEAN TPMDeactivatedFlag;
|
||||
} TCG_BOOT_SERVICE_CAPABILITY;
|
||||
|
||||
typedef struct tdTREE_BOOT_SERVICE_CAPABILITY {
|
||||
UINT8 Size;
|
||||
EFI_TCG2_VERSION StructureVersion;
|
||||
EFI_TCG2_VERSION ProtocolVersion;
|
||||
UINT32 HashAlgorithmBitmap;
|
||||
UINT32 SupportedEventLogs;
|
||||
BOOLEAN TrEEPresentFlag;
|
||||
UINT16 MaxCommandSize;
|
||||
UINT16 MaxResponseSize;
|
||||
UINT32 ManufacturerID;
|
||||
} TREE_BOOT_SERVICE_CAPABILITY;
|
||||
|
||||
typedef UINT32 TCG_ALGORITHM_ID;
|
||||
#define TCG_ALG_SHA 0x00000004 // The SHA1 algorithm
|
||||
|
||||
#define SHA1_DIGEST_SIZE 20
|
||||
|
||||
typedef struct _TCG_DIGEST {
|
||||
UINT8 Digest[SHA1_DIGEST_SIZE];
|
||||
} TCG_DIGEST;
|
||||
|
||||
#define EV_IPL 13
|
||||
|
||||
typedef struct _TCG_PCR_EVENT {
|
||||
UINT32 PCRIndex;
|
||||
UINT32 EventType;
|
||||
struct _TCG_DIGEST digest;
|
||||
UINT32 EventSize;
|
||||
UINT8 Event[1];
|
||||
} TCG_PCR_EVENT;
|
||||
|
||||
INTERFACE_DECL(_EFI_TCG);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG_STATUS_CHECK) (IN struct _EFI_TCG * This,
|
||||
OUT struct _TCG_BOOT_SERVICE_CAPABILITY * ProtocolCapability,
|
||||
OUT UINT32 * TCGFeatureFlags,
|
||||
OUT EFI_PHYSICAL_ADDRESS * EventLogLocation,
|
||||
OUT EFI_PHYSICAL_ADDRESS * EventLogLastEntry);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG_HASH_ALL) (IN struct _EFI_TCG * This,
|
||||
IN UINT8 * HashData,
|
||||
IN UINT64 HashDataLen,
|
||||
IN TCG_ALGORITHM_ID AlgorithmId,
|
||||
IN OUT UINT64 * HashedDataLen, IN OUT UINT8 ** HashedDataResult);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG_LOG_EVENT) (IN struct _EFI_TCG * This,
|
||||
IN struct _TCG_PCR_EVENT * TCGLogData,
|
||||
IN OUT UINT32 * EventNumber, IN UINT32 Flags);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG_PASS_THROUGH_TO_TPM) (IN struct _EFI_TCG * This,
|
||||
IN UINT32 TpmInputParameterBlockSize,
|
||||
IN UINT8 * TpmInputParameterBlock,
|
||||
IN UINT32 TpmOutputParameterBlockSize,
|
||||
IN UINT8 * TpmOutputParameterBlock);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG_HASH_LOG_EXTEND_EVENT) (IN struct _EFI_TCG * This,
|
||||
IN EFI_PHYSICAL_ADDRESS HashData,
|
||||
IN UINT64 HashDataLen,
|
||||
IN TCG_ALGORITHM_ID AlgorithmId,
|
||||
IN struct _TCG_PCR_EVENT * TCGLogData,
|
||||
IN OUT UINT32 * EventNumber,
|
||||
OUT EFI_PHYSICAL_ADDRESS * EventLogLastEntry);
|
||||
|
||||
typedef struct _EFI_TCG {
|
||||
EFI_TCG_STATUS_CHECK StatusCheck;
|
||||
EFI_TCG_HASH_ALL HashAll;
|
||||
EFI_TCG_LOG_EVENT LogEvent;
|
||||
EFI_TCG_PASS_THROUGH_TO_TPM PassThroughToTPM;
|
||||
EFI_TCG_HASH_LOG_EXTEND_EVENT HashLogExtendEvent;
|
||||
} EFI_TCG;
|
||||
|
||||
#define EFI_TCG2_GUID \
|
||||
&(const EFI_GUID) { 0x607f766c, 0x7455, 0x42be, { 0x93, 0x0b, 0xe4, 0xd7, 0x6d, 0xb2, 0x72, 0x0f } }
|
||||
|
||||
typedef struct tdEFI_TCG2_PROTOCOL EFI_TCG2_PROTOCOL;
|
||||
|
||||
typedef UINT32 EFI_TCG2_EVENT_LOG_BITMAP;
|
||||
typedef UINT32 EFI_TCG2_EVENT_LOG_FORMAT;
|
||||
typedef UINT32 EFI_TCG2_EVENT_ALGORITHM_BITMAP;
|
||||
|
||||
typedef struct tdEFI_TCG2_BOOT_SERVICE_CAPABILITY {
|
||||
UINT8 Size;
|
||||
EFI_TCG2_VERSION StructureVersion;
|
||||
EFI_TCG2_VERSION ProtocolVersion;
|
||||
EFI_TCG2_EVENT_ALGORITHM_BITMAP HashAlgorithmBitmap;
|
||||
EFI_TCG2_EVENT_LOG_BITMAP SupportedEventLogs;
|
||||
BOOLEAN TPMPresentFlag;
|
||||
UINT16 MaxCommandSize;
|
||||
UINT16 MaxResponseSize;
|
||||
UINT32 ManufacturerID;
|
||||
UINT32 NumberOfPCRBanks;
|
||||
EFI_TCG2_EVENT_ALGORITHM_BITMAP ActivePcrBanks;
|
||||
} EFI_TCG2_BOOT_SERVICE_CAPABILITY;
|
||||
|
||||
#define EFI_TCG2_EVENT_HEADER_VERSION 1
|
||||
|
||||
typedef struct {
|
||||
UINT32 HeaderSize;
|
||||
UINT16 HeaderVersion;
|
||||
UINT32 PCRIndex;
|
||||
UINT32 EventType;
|
||||
} _packed_ EFI_TCG2_EVENT_HEADER;
|
||||
|
||||
typedef struct tdEFI_TCG2_EVENT {
|
||||
UINT32 Size;
|
||||
EFI_TCG2_EVENT_HEADER Header;
|
||||
UINT8 Event[1];
|
||||
} _packed_ EFI_TCG2_EVENT;
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_CAPABILITY) (IN EFI_TCG2_PROTOCOL * This,
|
||||
IN OUT EFI_TCG2_BOOT_SERVICE_CAPABILITY * ProtocolCapability);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_EVENT_LOG) (IN EFI_TCG2_PROTOCOL * This,
|
||||
IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat,
|
||||
OUT EFI_PHYSICAL_ADDRESS * EventLogLocation,
|
||||
OUT EFI_PHYSICAL_ADDRESS * EventLogLastEntry,
|
||||
OUT BOOLEAN * EventLogTruncated);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG2_HASH_LOG_EXTEND_EVENT) (IN EFI_TCG2_PROTOCOL * This,
|
||||
IN UINT64 Flags,
|
||||
IN EFI_PHYSICAL_ADDRESS DataToHash,
|
||||
IN UINT64 DataToHashLen, IN EFI_TCG2_EVENT * EfiTcgEvent);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG2_SUBMIT_COMMAND) (IN EFI_TCG2_PROTOCOL * This,
|
||||
IN UINT32 InputParameterBlockSize,
|
||||
IN UINT8 * InputParameterBlock,
|
||||
IN UINT32 OutputParameterBlockSize, IN UINT8 * OutputParameterBlock);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL * This, OUT UINT32 * ActivePcrBanks);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG2_SET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL * This, IN UINT32 ActivePcrBanks);
|
||||
|
||||
typedef EFI_STATUS(EFIAPI * EFI_TCG2_GET_RESULT_OF_SET_ACTIVE_PCR_BANKS) (IN EFI_TCG2_PROTOCOL * This,
|
||||
OUT UINT32 * OperationPresent, OUT UINT32 * Response);
|
||||
|
||||
typedef struct tdEFI_TCG2_PROTOCOL {
|
||||
EFI_TCG2_GET_CAPABILITY GetCapability;
|
||||
EFI_TCG2_GET_EVENT_LOG GetEventLog;
|
||||
EFI_TCG2_HASH_LOG_EXTEND_EVENT HashLogExtendEvent;
|
||||
EFI_TCG2_SUBMIT_COMMAND SubmitCommand;
|
||||
EFI_TCG2_GET_ACTIVE_PCR_BANKS GetActivePcrBanks;
|
||||
EFI_TCG2_SET_ACTIVE_PCR_BANKS SetActivePcrBanks;
|
||||
EFI_TCG2_GET_RESULT_OF_SET_ACTIVE_PCR_BANKS GetResultOfSetActivePcrBanks;
|
||||
} EFI_TCG2;
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user