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 + -
显示快捷键?