📄 tpm.h
字号:
} TPM_COUNTER_VALUE;
//-------------------------------------------------------------------
// Part 2, section 5.14: TPM_SIGN_INFO structure
typedef struct tdTPM_SIGN_INFO
{
TPM_STRUCTURE_TAG tag;
BYTE fixed[4];
TPM_NONCE replay;
UINT32 dataLen;
SIZEIS(dataLen)
BYTE *data;
} TPM_SIGN_INFO;
//-------------------------------------------------------------------
// Part 2, section 5.15: TPM_MSA_COMPOSITE
typedef struct tdTPM_MSA_COMPOSITE
{
UINT32 MSAlist;
SIZEIS(MSAlist)
TPM_DIGEST *migAuthDigest;
} TPM_MSA_COMPOSITE;
//-------------------------------------------------------------------
// Part 2, section 5.16: TPM_CMK_AUTH
typedef struct tdTPM_CMK_AUTH
{
TPM_DIGEST migrationAuthorityDigest;
TPM_DIGEST destinationKeyDigest;
TPM_DIGEST sourceKeyDigest;
} TPM_CMK_AUTH;
//-------------------------------------------------------------------
// Part 2, section 5.17: TPM_CMK_DELEGATE
typedef UINT32 TPM_CMK_DELEGATE;
#define TPM_CMK_DELEGATE_SIGNING (((UINT32)1)<<31)
#define TPM_CMK_DELEGATE_STORAGE (((UINT32)1)<<30)
#define TPM_CMK_DELEGATE_BIND (((UINT32)1)<<29)
#define TPM_CMK_DELEGATE_LEGACY (((UINT32)1)<<28)
#define TPM_CMK_DELEGATE_MIGRATE (((UINT32)1)<<27)
//-------------------------------------------------------------------
// Part 2, section 5.18: TPM_SELECT_SIZE
typedef struct tdTPM_SELECT_SIZE
{
BYTE major;
BYTE minor;
UINT16 reqSize;
} TPM_SELECT_SIZE;
//-------------------------------------------------------------------
// Part 2, section 5.19: TPM_CMK_MIGAUTH
typedef struct tdTPM_CMK_MIGAUTH
{
TPM_STRUCTURE_TAG tag;
TPM_DIGEST msaDigest;
TPM_DIGEST pubKeyDigest;
} TPM_CMK_MIGAUTH;
//-------------------------------------------------------------------
// Part 2, section 5.20: TPM_CMK_SIGTICKET
typedef struct tdTPM_CMK_SIGTICKET
{
TPM_STRUCTURE_TAG tag;
TPM_DIGEST verKeyDigest;
TPM_DIGEST signedData;
} TPM_CMK_SIGTICKET;
//-------------------------------------------------------------------
// Part 2, section 5.21: TPM_CMK_MA_APPROVAL
typedef struct tdTPM_CMK_MA_APPROVAL
{
TPM_STRUCTURE_TAG tag;
TPM_DIGEST migrationAuthorityDigest;
} TPM_CMK_MA_APPROVAL;
//-------------------------------------------------------------------
// Part 2, section 6: Command Tags
typedef UINT16 TPM_TAG; /* 1.1b */
#define TPM_TAG_RQU_COMMAND ((UINT16)0x00c1)
#define TPM_TAG_RQU_AUTH1_COMMAND ((UINT16)0x00c2)
#define TPM_TAG_RQU_AUTH2_COMMAND ((UINT16)0x00c3)
#define TPM_TAG_RSP_COMMAND ((UINT16)0x00c4)
#define TPM_TAG_RSP_AUTH1_COMMAND ((UINT16)0x00c5)
#define TPM_TAG_RSP_AUTH2_COMMAND ((UINT16)0x00c6)
//-------------------------------------------------------------------
// Part 2, section 7.1: TPM_PERMANENT_FLAGS
typedef struct tdTPM_PERMANENT_FLAGS
{
TPM_STRUCTURE_TAG tag;
TSS_BOOL disable;
TSS_BOOL ownership;
TSS_BOOL deactivated;
TSS_BOOL readPubek;
TSS_BOOL disableOwnerClear;
TSS_BOOL allowMaintenance;
TSS_BOOL physicalPresenceLifetimeLock;
TSS_BOOL physicalPresenceHWEnable;
TSS_BOOL physicalPresenceCMDEnable;
TSS_BOOL CEKPUsed;
TSS_BOOL TPMpost;
TSS_BOOL TPMpostLock;
TSS_BOOL FIPS;
TSS_BOOL Operator;
TSS_BOOL enableRevokeEK;
TSS_BOOL nvLocked;
TSS_BOOL readSRKPub;
TSS_BOOL tpmEstablished;
TSS_BOOL maintenanceDone;
TSS_BOOL disableFullDALogicInfo;
} TPM_PERMANENT_FLAGS;
#define TPM_PF_DISABLE ((UINT32)0x00000001)
#define TPM_PF_OWNERSHIP ((UINT32)0x00000002)
#define TPM_PF_DEACTIVATED ((UINT32)0x00000003)
#define TPM_PF_READPUBEK ((UINT32)0x00000004)
#define TPM_PF_DISABLEOWNERCLEAR ((UINT32)0x00000005)
#define TPM_PF_ALLOWMAINTENANCE ((UINT32)0x00000006)
#define TPM_PF_PHYSICALPRESENCELIFETIMELOCK ((UINT32)0x00000007)
#define TPM_PF_PHYSICALPRESENCEHWENABLE ((UINT32)0x00000008)
#define TPM_PF_PHYSICALPRESENCECMDENABLE ((UINT32)0x00000009)
#define TPM_PF_CEKPUSED ((UINT32)0x0000000A)
#define TPM_PF_TPMPOST ((UINT32)0x0000000B)
#define TPM_PF_TPMPOSTLOCK ((UINT32)0x0000000C)
#define TPM_PF_FIPS ((UINT32)0x0000000D)
#define TPM_PF_OPERATOR ((UINT32)0x0000000E)
#define TPM_PF_ENABLEREVOKEEK ((UINT32)0x0000000F)
#define TPM_PF_NV_LOCKED ((UINT32)0x00000010)
#define TPM_PF_READSRKPUB ((UINT32)0x00000011)
#define TPM_PF_RESETESTABLISHMENTBIT ((UINT32)0x00000012)
#define TPM_PF_MAINTENANCEDONE ((UINT32)0x00000013)
#define TPM_PF_DISABLEFULLDALOGICINFO ((UINT32)0x00000014)
//-------------------------------------------------------------------
// Part 2, section 7.2: TPM_STCLEAR_FLAGS
typedef struct tdTPM_STCLEAR_FLAGS
{
TPM_STRUCTURE_TAG tag;
TSS_BOOL deactivated;
TSS_BOOL disableForceClear;
TSS_BOOL physicalPresence;
TSS_BOOL physicalPresenceLock;
TSS_BOOL bGlobalLock;
} TPM_STCLEAR_FLAGS;
#define TPM_SF_DEACTIVATED ((UINT32)0x00000001)
#define TPM_SF_DISABLEFORCECLEAR ((UINT32)0x00000002)
#define TPM_SF_PHYSICALPRESENCE ((UINT32)0x00000003)
#define TPM_SF_PHYSICALPRESENCELOCK ((UINT32)0x00000004)
#define TPM_SF_GLOBALLOCK ((UINT32)0x00000005)
//-------------------------------------------------------------------
// Part 2, section 7.3: TPM_STANY_FLAGS
typedef struct tdTPM_STANY_FLAGS
{
TPM_STRUCTURE_TAG tag;
TSS_BOOL postInitialise;
TPM_MODIFIER_INDICATOR localityModifier;
TSS_BOOL transportExclusive;
TSS_BOOL TOSPresent;
} TPM_STANY_FLAGS;
#define TPM_AF_POSTINITIALIZE ((UINT32)0x00000001)
#define TPM_AF_LOCALITYMODIFIER ((UINT32)0x00000002)
#define TPM_AF_TRANSPORTEXCLUSIVE ((UINT32)0x00000003)
#define TPM_AF_TOSPRESENT ((UINT32)0x00000004)
//-------------------------------------------------------------------
// Part 2, section 7.4: TPM_PERMANENT_DATA
// available inside TPM only
//
//#define TPM_MIN_COUNTERS 4
//#define TPM_NUM_PCR 16
//#define TPM_MAX_NV_WRITE_NOOWNER 64
//
//typedef struct tdTPM_PERMANENT_DATA
//{
// TPM_STRUCTURE_TAG tag;
// BYTE revMajor;
// BYTE revMinor;
// TPM_NONCE tpmProof;
// TPM_NONCE ekReset;
// TPM_SECRET ownerAuth;
// TPM_SECRET operatorAuth;
// TPM_DIRVALUE authDIR[1];
// TPM_PUBKEY manuMaintPub;
// TPM_KEY endorsementKey;
// TPM_KEY srk;
// TPM_KEY contextKey;
// TPM_KEY delegateKey;
// TPM_COUNTER_VALUE auditMonotonicCounter;
// TPM_COUNTER_VALUE monitonicCounter[TPM_MIN_COUNTERS];
// TPM_PCR_ATTRIBUTES pcrAttrib[TPM_NUM_PCR];
// BYTE ordinalAuditStatus[];
// BYTE *rngState;
// TPM_FAMILY_TABLE familyTable;
// TPM_DELEGATE_TABLE delegateTable;
// UINT32 maxNVBufSize;
// UINT32 lastFamilyID;
// UINT32 noOwnerNVWrite;
// TPM_CMK_DELEGATE restrictDelegate;
// TPM_DAA_TPM_SEED tpmDAASeed;
// TPM_NONCE daaProof;
// TPM_NONCE daaBlobKey;
//} TPM_PERMANENT_DATA;
//-------------------------------------------------------------------
// Part 2, section 7.5: TPM_STCLEAR_DATA
// available inside TPM only
//
//typedef struct tdTPM_STCLEAR_DATA
//{
// TPM_STRUCTURE_TAG tag;
// TPM_NONCE contextNonceKey;
// TPM_COUNT_ID countID;
// UINT32 ownerReference;
// TPM_BOOL disableResetLock;
// TPM_PCRVALUE PCR[TPM_NUM_PCR];
// UINT32 deferredPhysicalPresence;
//} TPM_STCLEAR_DATA;
//-------------------------------------------------------------------
// Part 2, section 7.5: TPM_STANY_DATA
// available inside TPM only
//
//typedef struct tdTPM_STANY_DATA
//{
// TPM_STRUCTURE_TAG tag;
// TPM_NONCE contextNonceSession;
// TPM_DIGEST auditDigest;
// TPM_CURRENT_TICKS currentTicks;
// UINT32 contextCount;
// UINT32 contextList[TPM_MIN_SESSION_LIST];
// TPM_SESSION_DATA sessions[TPM_MIN_SESSIONS];
// // The following appear in section 22.6 but not in 7.5
// TPM_DAA_ISSUER DAA_issuerSettings;
// TPM_DAA_TPM DAA_tpmSpecific;
// TPM_DAA_CONTEXT DAA_session;
// TPM_DAA_JOINDATA DAA_joinSession;
//} TPM_STANY_DATA;
//-------------------------------------------------------------------
// Part 2, section 8: PCR Structures
typedef BYTE TPM_LOCALITY_SELECTION;
#define TPM_LOC_FOUR (((UINT32)1)<<4)
#define TPM_LOC_THREE (((UINT32)1)<<3)
#define TPM_LOC_TWO (((UINT32)1)<<2)
#define TPM_LOC_ONE (((UINT32)1)<<1)
#define TPM_LOC_ZERO (((UINT32)1)<<0)
typedef struct tdTPM_PCR_SELECTION /* 1.1b */
{
UINT16 sizeOfSelect;
SIZEIS(sizeOfSelect)
BYTE *pcrSelect;
} TPM_PCR_SELECTION;
typedef struct tdTPM_PCR_COMPOSITE /* 1.1b */
{
TPM_PCR_SELECTION select;
UINT32 valueSize;
SIZEIS(valueSize)
TPM_PCRVALUE *pcrValue;
} TPM_PCR_COMPOSITE;
typedef struct tdTPM_PCR_INFO /* 1.1b */
{
TPM_PCR_SELECTION pcrSelection;
TPM_COMPOSITE_HASH digestAtRelease;
TPM_COMPOSITE_HASH digestAtCreation;
} TPM_PCR_INFO;
typedef struct tdTPM_PCR_INFO_LONG
{
TPM_STRUCTURE_TAG tag;
TPM_LOCALITY_SELECTION localityAtCreation;
TPM_LOCALITY_SELECTION localityAtRelease;
TPM_PCR_SELECTION creationPCRSelection;
TPM_PCR_SELECTION releasePCRSelection;
TPM_COMPOSITE_HASH digestAtCreation;
TPM_COMPOSITE_HASH digestAtRelease;
} TPM_PCR_INFO_LONG;
typedef struct tdTPM_PCR_INFO_SHORT
{
TPM_PCR_SELECTION pcrSelection;
TPM_LOCALITY_SELECTION localityAtRelease;
TPM_COMPOSITE_HASH digestAtRelease;
} TPM_PCR_INFO_SHORT;
typedef struct tdTPM_PCR_ATTRIBUTES
{
BYTE pcrReset;
TPM_LOCALITY_SELECTION pcrExtendLocal;
TPM_LOCALITY_SELECTION pcrResetLocal;
} TPM_PCR_ATTRIBUTES;
//-------------------------------------------------------------------
// Part 2, section 9:
typedef struct tdTPM_STORED_DATA /* 1.1b */
{
TPM_STRUCT_VER ver;
UINT32 sealInfoSize;
SIZEIS(sealInfoSize)
BYTE *sealInfo;
UINT32 encDataSize;
SIZEIS(encDataSize)
BYTE *encData;
} TPM_STORED_DATA;
typedef struct tdTPM_STORED_DATA12
{
TPM_STRUCTURE_TAG tag;
TPM_ENTITY_TYPE et;
UINT32 sealInfoSize;
SIZEIS(sealInfoSize)
BYTE *sealInfo;
UINT32 encDataSize;
SIZEIS(encDataSize)
BYTE *encData;
} TPM_STORED_DATA12;
typedef struct tdTPM_SEALED_DATA /* 1.1b */
{
TPM_PAYLOAD_TYPE payload;
TPM_SECRET authData;
TPM_NONCE tpmProof;
TPM_DIGEST storedDigest;
UINT32 dataSize;
SIZEIS(dataSize)
BYTE *data;
} TPM_SEALED_DATA;
typedef struct tdTPM_SYMMETRIC_KEY /* 1.1b */
{
TPM_ALGORITHM_ID algId;
TPM_ENC_SCHEME encScheme;
UINT16 size;
SIZEIS(size)
BYTE *data;
} TPM_SYMMETRIC_KEY;
typedef struct tdTPM_BOUND_DATA
{
TPM_STRUCT_VER ver;
TPM_PAYLOAD_TYPE payload;
BYTE *payloadData; // length is implied
} TPM_BOUND_DATA;
//-------------------------------------------------------------------
// Part 2, section 10: TPM_KEY complex
typedef struct tdTPM_KEY_PARMS /* 1.1b */
{
TPM_ALGORITHM_ID algorithmID;
TPM_ENC_SCHEME encScheme;
TPM_SIG_SCHEME sigScheme;
UINT32 parmSize;
SIZEIS(parmSize)
BYTE *parms;
} TPM_KEY_PARMS;
typedef struct tdTPM_RSA_KEY_PARMS /* 1.1b */
{
UINT32 keyLength;
UINT32 numPrimes;
UINT32 exponentSize;
SIZEIS(exponentSize)
BYTE *exponent;
} TPM_RSA_KEY_PARMS;
typedef struct tdTPM_SYMMETRIC_KEY_PARMS
{
UINT32 keyLength;
UINT32 blockSize;
UINT32 ivSize;
SIZEIS(ivSize)
BYTE *IV;
} TPM_SYMMETRIC_KEY_PARMS;
typedef struct tdTPM_STORE_PUBKEY /* 1.1b */
{
UINT32 keyLength;
SIZEIS(keyLength)
BYTE *key;
} TPM_STORE_PUBKEY;
typedef struct tdTPM_PUBKEY /* 1.1b */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -