📄 tpm.h
字号:
{
TPM_KEY_PARMS algorithmParms;
TPM_STORE_PUBKEY pubKey;
} TPM_PUBKEY;
typedef struct tdTPM_STORE_PRIVKEY /* 1.1b */
{
UINT32 keyLength;
SIZEIS(keyLength)
BYTE *key;
} TPM_STORE_PRIVKEY;
typedef struct tdTPM_STORE_ASYMKEY /* 1.1b */
{
TPM_PAYLOAD_TYPE payload;
TPM_SECRET usageAuth;
TPM_SECRET migrationAuth;
TPM_DIGEST pubDataDigest;
TPM_STORE_PRIVKEY privKey;
} TPM_STORE_ASYMKEY;
typedef struct tdTPM_KEY /* 1.1b */
{
TPM_STRUCT_VER ver;
TPM_KEY_USAGE keyUsage;
TPM_KEY_FLAGS keyFlags;
TPM_AUTH_DATA_USAGE authDataUsage;
TPM_KEY_PARMS algorithmParms;
UINT32 PCRInfoSize;
SIZEIS(PCRInfoSize)
BYTE *PCRInfo;
TPM_STORE_PUBKEY pubKey;
UINT32 encSize;
SIZEIS(encSize)
BYTE *encData;
} TPM_KEY;
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;
SIZEIS(PCRInfoSize)
BYTE *PCRInfo;
TPM_STORE_PUBKEY pubKey;
UINT32 encSize;
SIZEIS(encSize)
BYTE *encData;
} TPM_KEY12;
typedef struct tdTPM_MIGRATE_ASYMKEY
{
TPM_PAYLOAD_TYPE payload;
TPM_SECRET usageAuth;
TPM_DIGEST pubDataDigest;
UINT32 partPrivKeyLen;
SIZEIS(partPrivKeyLen)
BYTE *partPrivKey;
} TPM_MIGRATE_ASYMKEY;
typedef UINT32 TPM_KEY_CONTROL;
#define TPM_KEY_CONTROL_OWNER_EVICT ((UINT32)0x00000001)
//-------------------------------------------------------------------
// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH
typedef struct tdTPM_MIGRATIONKEYAUTH /* 1.1b */
{
TPM_PUBKEY migrationKey;
TPM_MIGRATE_SCHEME migrationScheme;
TPM_DIGEST digest;
} TPM_MIGRATIONKEYAUTH;
//-------------------------------------------------------------------
// Part 2, section 11: Signed Structures
typedef struct tdTPM_CERTIFY_INFO /* 1.1b */
{
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;
TPM_BOOL parentPCRStatus;
UINT32 PCRInfoSize;
SIZEIS(PCRInfoSize)
BYTE *PCRInfo;
} TPM_CERTIFY_INFO;
typedef struct tdTPM_CERTIFY_INFO2
{
TPM_STRUCTURE_TAG tag;
BYTE 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;
TPM_BOOL parentPCRStatus;
UINT32 PCRInfoSize;
SIZEIS(PCRInfoSize)
BYTE *PCRInfo;
UINT32 migrationAuthoritySize;
SIZEIS(migrationAuthoritySize)
BYTE *migrationAuthority;
} TPM_CERTIFY_INFO2;
typedef struct tdTPM_QUOTE_INFO /* 1.1b */
{
TPM_STRUCT_VER version;
BYTE fixed[4];
TPM_COMPOSITE_HASH compositeHash; /* in 1.2 TPM spec, named digestValue */
TPM_NONCE externalData;
} TPM_QUOTE_INFO;
typedef struct tdTPM_QUOTE_INFO2
{
TPM_STRUCTURE_TAG tag;
BYTE 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;
SIZEIS(blobSize)
BYTE *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;
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 /* 1.1b */
{
UINT32 asymSize;
UINT32 symSize;
TPM_KEY_PARMS asymAlgorithm;
TPM_KEY_PARMS symAlgorithm;
SIZEIS(asymSize)
BYTE *asymBlob;
SIZEIS(symSize)
BYTE *symBlob;
} TPM_IDENTITY_REQ;
typedef struct tdTPM_IDENTITY_PROOF /* 1.1b */
{
TPM_STRUCT_VER ver;
UINT32 labelSize;
UINT32 identityBindingSize;
UINT32 endorsementSize;
UINT32 platformSize;
UINT32 conformanceSize;
TPM_PUBKEY identityKey;
SIZEIS(labelSize)
BYTE *labelArea;
SIZEIS(identityBindingSize)
BYTE *identityBinding;
SIZEIS(endorsementSize)
BYTE *endorsementCredential;
SIZEIS(platformSize)
BYTE *platformCredential;
SIZEIS(conformanceSize)
BYTE *conformanceCredential;
} TPM_IDENTITY_PROOF;
typedef struct tdTPM_ASYM_CA_CONTENTS /* 1.1b */
{
TPM_SYMMETRIC_KEY sessionKey;
TPM_DIGEST idDigest;
} TPM_ASYM_CA_CONTENTS;
typedef struct tdTPM_SYM_CA_ATTESTATION
{
UINT32 credSize;
TPM_KEY_PARMS algorithm;
SIZEIS(credSize)
BYTE *credential;
} TPM_SYM_CA_ATTESTATION;
//-------------------------------------------------------------------
// Part 2, section 15: Tick Structures
// 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
typedef UINT32 TPM_TRANSPORT_ATTRIBUTES;
#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
typedef struct tdTPM_AUDIT_EVENT_IN
{
TPM_STRUCTURE_TAG tag;
TPM_DIGEST inputParms;
TPM_COUNTER_VALUE auditCount;
} TPM_AUDIT_EVENT_IN;
typedef struct tdTPM_AUDIT_EVENT_OUT
{
TPM_STRUCTURE_TAG tag;
TPM_COMMAND_CODE ordinal;
TPM_DIGEST outputParms;
TPM_COUNTER_VALUE auditCount;
TPM_RESULT returnCode;
} TPM_AUDIT_EVENT_OUT;
//-------------------------------------------------------------------
// Part 2, section 16: Return codes
#include <tss/tpm_error.h>
//-------------------------------------------------------------------
// Part 2, section 17: Ordinals
#include <tss/tpm_ordinal.h>
//-------------------------------------------------------------------
// Part 2, section 18: Context structures
typedef struct tdTPM_CONTEXT_BLOB
{
TPM_STRUCTURE_TAG tag;
TPM_RESOURCE_TYPE resourceType;
TPM_HANDLE handle;
BYTE label[16];
UINT32 contextCount;
TPM_DIGEST integrityDigest;
UINT32 additionalSize;
SIZEIS(additionalSize)
BYTE *additionalData;
UINT32 sensitiveSize;
SIZEIS(sensitiveSize)
BYTE *sensitiveData;
} TPM_CONTEXT_BLOB;
typedef struct tdTPM_CONTEXT_SENSITIVE
{
TPM_STRUCTURE_TAG tag;
TPM_NONCE contextNonce;
UINT32 internalSize;
SIZEIS(internalSize)
BYTE *internalData;
} TPM_CONTEXT_SENSITIVE;
//-------------------------------------------------------------------
// Part 2, section 19: NV Structures
typedef UINT32 TPM_NV_INDEX;
#define TPM_NV_INDEX_LOCK ((UINT32)0xffffffff)
#define TPM_NV_INDEX0 ((UINT32)0x00000000)
#define TPM_NV_INDEX_DIR ((UINT32)0x10000001)
#define TPM_NV_INDEX_EKCert ((UINT32)0x0000f000)
#define TPM_NV_INDEX_TPM_CC ((UINT32)0x0000f001)
#define TPM_NV_INDEX_PlatformCert ((UINT32)0x0000f002)
#define TPM_NV_INDEX_Platform_CC ((UINT32)0x0000f003)
// The following define ranges of reserved indices.
#define TPM_NV_INDEX_TSS_BASE ((UINT32)0x00011100)
#define TPM_NV_INDEX_PC_BASE ((UINT32)0x00011200)
#define TPM_NV_INDEX_SERVER_BASE ((UINT32)0x00011300)
#define TPM_NV_INDEX_MOBILE_BASE ((UINT32)0x00011400)
#define TPM_NV_INDEX_PERIPHERAL_BASE ((UINT32)0x00011500)
#define TPM_NV_INDEX_GROUP_RESV_BASE ((UINT32)0x00010000)
typedef UINT32 TPM_NV_PER_ATTRIBUTES;
#define TPM_NV_PER_READ_STCLEAR (((UINT32)1)<<31)
#define TPM_NV_PER_AUTHREAD (((UINT32)1)<<18)
#define TPM_NV_PER_OWNERREAD (((UINT32)1)<<17)
#define TPM_NV_PER_PPREAD (((UINT32)1)<<16)
#define TPM_NV_PER_GLOBALLOCK (((UINT32)1)<<15)
#define TPM_NV_PER_WRITE_STCLEAR (((UINT32)1)<<14)
#define TPM_NV_PER_WRITEDEFINE (((UINT32)1)<<13)
#define TPM_NV_PER_WRITEALL (((UINT32)1)<<12)
#define TPM_NV_PER_AUTHWRITE (((UINT32)1)<<2)
#define TPM_NV_PER_OWNERWRITE (((UINT32)1)<<1)
#define TPM_NV_PER_PPWRITE (((UINT32)1)<<0)
typedef struct tdTPM_NV_ATTRIBUTES
{
TPM_STRUCTURE_TAG tag;
TPM_NV_PER_ATTRIBUTES attributes;
} TPM_NV_ATTRIBUTES;
typedef struct tdTPM_NV_DATA_PUBLIC
{
TPM_STRUCTURE_TAG tag;
TPM_NV_INDEX nvIndex;
TPM_PCR_INFO_SHORT pcrInfoRead;
TPM_PCR_INFO_SHORT pcrInfoWrite;
TPM_NV_ATTRIBUTES permission;
TPM_BOOL bReadSTClear;
TPM_BOOL bWriteSTClear;
TPM_BOOL bWriteDefine;
UINT32 dataSize;
} TPM_NV_DATA_PUBLIC;
#if 0
// Internal to TPM:
typedef struct tdTPM_NV_DATA_SENSITIVE
{
TPM_STRUCTURE_TAG tag;
TPM_NV_DATA_PUBLIC pubInfo;
TPM_AUTHDATA authValue;
SIZEIS(pubInfo.dataSize)
BYTE *data;
} TPM_NV_DATA_SENSITIVE;
#endif
//-------------------------------------------------------------------
// Part 2, section 20: Delegation
//-------------------------------------------------------------------
// Part 2, section 20.3: Owner Permissions Settings for per1 bits
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -