tpm12.h
来自「EFI BIOS是Intel提出的下一代的BIOS标准。这里上传的Edk源代码是」· C头文件 代码 · 共 1,398 行 · 第 1/5 页
H
1,398 行
TPM_ENC_SCHEME encScheme;
UINT16 dataSize;
UINT8 *data;
} TPM_SYMMETRIC_KEY;
//
// Part 2, section 9.5: TPM_BOUND_DATA
//
typedef struct tdTPM_BOUND_DATA {
TPM_STRUCT_VER ver;
TPM_PAYLOAD_TYPE payload;
UINT8 payloadData[1];
} TPM_BOUND_DATA;
//
// Part 2 section 10: TPM_KEY complex
//
//
// Part 2, section 10.2: TPM_KEY
// [size_is(encDataSize)] BYTE* encData;
//
typedef struct tdTPM_KEY{
TPM_STRUCT_VER ver;
TPM_KEY_USAGE keyUsage;
TPM_KEY_FLAGS keyFlags;
TPM_AUTH_DATA_USAGE authDataUsage;
TPM_KEY_PARMS algorithmParms;
UINT32 PCRInfoSize;
UINT8 *PCRInfo;
TPM_STORE_PUBKEY pubKey;
UINT32 encDataSize;
UINT8 *encData;
} TPM_KEY;
//
// Part 2, section 10.3: TPM_KEY12
// [size_is(encDataSize)] BYTE* encData;
//
typedef struct tdTPM_KEY12{
TPM_STRUCTURE_TAG tag;
UINT16 fill;
TPM_KEY_USAGE keyUsage;
TPM_KEY_FLAGS keyFlags;
TPM_AUTH_DATA_USAGE authDataUsage;
TPM_KEY_PARMS algorithmParms;
UINT32 PCRInfoSize;
UINT8 *PCRInfo;
TPM_STORE_PUBKEY pubKey;
UINT32 encDataSize;
UINT8 *encData;
} TPM_KEY12;
//
// Part 2, section 10.7: TPM_STORE_PRIVKEY
// [size_is(keyLength)] BYTE* key;
//
typedef struct tdTPM_STORE_PRIVKEY {
UINT32 keyLength;
UINT8 *key;
} TPM_STORE_PRIVKEY;
//
// Part 2, section 10.6: TPM_STORE_ASYMKEY
//
typedef struct tdTPM_STORE_ASYMKEY { // pos len total
TPM_PAYLOAD_TYPE payload; // 0 1 1
TPM_SECRET usageAuth; // 1 20 21
TPM_SECRET migrationAuth; // 21 20 41
TPM_DIGEST pubDataDigest; // 41 20 61
TPM_STORE_PRIVKEY privKey; // 61 132-151 193-214
} TPM_STORE_ASYMKEY;
//
// Part 2, section 10.8: TPM_MIGRATE_ASYMKEY
// [size_is(partPrivKeyLen)] BYTE* partPrivKey;
//
typedef struct tdTPM_MIGRATE_ASYMKEY { // pos len total
TPM_PAYLOAD_TYPE payload; // 0 1 1
TPM_SECRET usageAuth; // 1 20 21
TPM_DIGEST pubDataDigest; // 21 20 41
UINT32 partPrivKeyLen; // 41 4 45
UINT8 *partPrivKey; // 45 112-127 157-172
} TPM_MIGRATE_ASYMKEY;
//
// Part 2, section 10.9: TPM_KEY_CONTROL
//
#define TPM_KEY_CONTROL_OWNER_EVICT ((UINT32) 0x00000001)
//
// Part 2, section 11: Signed Structures
//
typedef struct tdTPM_CERTIFY_INFO
{
TPM_STRUCT_VER version;
TPM_KEY_USAGE keyUsage;
TPM_KEY_FLAGS keyFlags;
TPM_AUTH_DATA_USAGE authDataUsage;
TPM_KEY_PARMS algorithmParms;
TPM_DIGEST pubkeyDigest;
TPM_NONCE data;
BOOLEAN parentPCRStatus;
UINT32 PCRInfoSize;
UINT8 *PCRInfo;
} TPM_CERTIFY_INFO;
typedef struct tdTPM_CERTIFY_INFO2
{
TPM_STRUCTURE_TAG tag;
UINT8 fill;
TPM_PAYLOAD_TYPE payloadType;
TPM_KEY_USAGE keyUsage;
TPM_KEY_FLAGS keyFlags;
TPM_AUTH_DATA_USAGE authDataUsage;
TPM_KEY_PARMS algorithmParms;
TPM_DIGEST pubkeyDigest;
TPM_NONCE data;
BOOLEAN parentPCRStatus;
UINT32 PCRInfoSize;
UINT8 *PCRInfo;
UINT32 migrationAuthoritySize;
UINT8 *migrationAuthority;
} TPM_CERTIFY_INFO2;
typedef struct tdTPM_QUOTE_INFO
{
TPM_STRUCT_VER version;
UINT8 fixed[4];
TPM_COMPOSITE_HASH digestValue;
TPM_NONCE externalData;
} TPM_QUOTE_INFO;
typedef struct tdTPM_QUOTE_INFO2
{
TPM_STRUCTURE_TAG tag;
UINT8 fixed[4];
TPM_NONCE externalData;
TPM_PCR_INFO_SHORT infoShort;
} TPM_QUOTE_INFO2;
//
// Part 2, section 12: Identity Structures
//
typedef struct tdTPM_EK_BLOB
{
TPM_STRUCTURE_TAG tag;
TPM_EK_TYPE ekType;
UINT32 blobSize;
UINT8 *blob;
} TPM_EK_BLOB;
typedef struct tdTPM_EK_BLOB_ACTIVATE
{
TPM_STRUCTURE_TAG tag;
TPM_SYMMETRIC_KEY sessionKey;
TPM_DIGEST idDigest;
TPM_PCR_INFO_SHORT pcrInfo;
} TPM_EK_BLOB_ACTIVATE;
typedef struct tdTPM_EK_BLOB_AUTH
{
TPM_STRUCTURE_TAG tag;
TPM_SECRET authValue;
} TPM_EK_BLOB_AUTH;
// TPM_CHOSENID_HASH = SHA(identityLabel || privacyCA)
typedef TPM_DIGEST TPM_CHOSENID_HASH;
typedef struct tdTPM_IDENTITY_CONTENTS
{
TPM_STRUCT_VER ver;
UINT32 ordinal;
TPM_CHOSENID_HASH labelPrivCADigest;
TPM_PUBKEY identityPubKey;
} TPM_IDENTITY_CONTENTS;
typedef struct tdTPM_IDENTITY_REQ
{
UINT32 asymSize;
UINT32 symSize;
TPM_KEY_PARMS asymAlgorithm;
TPM_KEY_PARMS symAlgorithm;
UINT8 *asymBlob;
UINT8 *symBlob;
} TPM_IDENTITY_REQ;
typedef struct tdTPM_IDENTITY_PROOF
{
TPM_STRUCT_VER ver;
UINT32 labelSize;
UINT32 identityBindingSize;
UINT32 endorsementSize;
UINT32 platformSize;
UINT32 conformanceSize;
TPM_PUBKEY identityKey;
UINT8 *labelArea;
UINT8 *identityBinding;
UINT8 *endorsementCredential;
UINT8 *platformCredential;
UINT8 *conformanceCredential;
} TPM_IDENTITY_PROOF;
typedef struct tdTPM_ASYM_CA_CONTENTS
{
TPM_SYMMETRIC_KEY sessionKey;
TPM_DIGEST idDigest;
} TPM_ASYM_CA_CONTENTS;
typedef struct tdTPM_SYM_CA_ATTESTATION
{
UINT32 credSize;
TPM_KEY_PARMS algorithm;
UINT8 *credential;
} TPM_SYM_CA_ATTESTATION;
//
// Part 2, section 15: TPM_CURRENT_TICKS
// Placed here out of order because definitions are used in section 13.
//
typedef struct tdTPM_CURRENT_TICKS {
TPM_STRUCTURE_TAG tag;
UINT64 currentTicks;
UINT16 tickRate;
TPM_NONCE tickNonce;
} TPM_CURRENT_TICKS;
//
// Part 2, section 13: Transport structures
//
#define TPM_TRANSPORT_ENCRYPT ((UINT32)0x00000001)
#define TPM_TRANSPORT_LOG ((UINT32)0x00000002)
#define TPM_TRANSPORT_EXCLUSIVE ((UINT32)0x00000004)
typedef struct tdTPM_TRANSPORT_PUBLIC
{
TPM_STRUCTURE_TAG tag;
TPM_TRANSPORT_ATTRIBUTES transAttributes;
TPM_ALGORITHM_ID algId;
TPM_ENC_SCHEME encScheme;
} TPM_TRANSPORT_PUBLIC;
typedef struct tdTPM_TRANSPORT_INTERNAL
{
TPM_STRUCTURE_TAG tag;
TPM_AUTHDATA authData;
TPM_TRANSPORT_PUBLIC transPublic;
TPM_TRANSHANDLE transHandle;
TPM_NONCE transNonceEven;
TPM_DIGEST transDigest;
} TPM_TRANSPORT_INTERNAL;
typedef struct tdTPM_TRANSPORT_LOG_IN
{
TPM_STRUCTURE_TAG tag;
TPM_DIGEST parameters;
TPM_DIGEST pubKeyHash;
} TPM_TRANSPORT_LOG_IN;
typedef struct tdTPM_TRANSPORT_LOG_OUT
{
TPM_STRUCTURE_TAG tag;
TPM_CURRENT_TICKS currentTicks;
TPM_DIGEST parameters;
TPM_MODIFIER_INDICATOR locality;
} TPM_TRANSPORT_LOG_OUT;
typedef struct tdTPM_TRANSPORT_AUTH
{
TPM_STRUCTURE_TAG tag;
TPM_AUTHDATA authData;
} TPM_TRANSPORT_AUTH;
//
// Part 2, section 14: Audit Structures
//
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?