📄 tpm.h
字号:
#define TPM_DELEGATE_SetOrdinalAuditStatus (((UINT32)1)<<30)
#define TPM_DELEGATE_DirWriteAuth (((UINT32)1)<<29)
#define TPM_DELEGATE_CMK_ApproveMA (((UINT32)1)<<28)
#define TPM_DELEGATE_NV_WriteValue (((UINT32)1)<<27)
#define TPM_DELEGATE_CMK_CreateTicket (((UINT32)1)<<26)
#define TPM_DELEGATE_NV_ReadValue (((UINT32)1)<<25)
#define TPM_DELEGATE_Delegate_LoadOwnerDelegation (((UINT32)1)<<24)
#define TPM_DELEGATE_DAA_Join (((UINT32)1)<<23)
#define TPM_DELEGATE_AuthorizeMigrationKey (((UINT32)1)<<22)
#define TPM_DELEGATE_CreateMaintenanceArchive (((UINT32)1)<<21)
#define TPM_DELEGATE_LoadMaintenanceArchive (((UINT32)1)<<20)
#define TPM_DELEGATE_KillMaintenanceFeature (((UINT32)1)<<19)
#define TPM_DELEGATE_OwnerReadInternalPub (((UINT32)1)<<18)
#define TPM_DELEGATE_ResetLockValue (((UINT32)1)<<17)
#define TPM_DELEGATE_OwnerClear (((UINT32)1)<<16)
#define TPM_DELEGATE_DisableOwnerClear (((UINT32)1)<<15)
#define TPM_DELEGATE_NV_DefineSpace (((UINT32)1)<<14)
#define TPM_DELEGATE_OwnerSetDisable (((UINT32)1)<<13)
#define TPM_DELEGATE_SetCapability (((UINT32)1)<<12)
#define TPM_DELEGATE_MakeIdentity (((UINT32)1)<<11)
#define TPM_DELEGATE_ActivateIdentity (((UINT32)1)<<10)
#define TPM_DELEGATE_OwnerReadPubek (((UINT32)1)<<9)
#define TPM_DELEGATE_DisablePubekRead (((UINT32)1)<<8)
#define TPM_DELEGATE_SetRedirection (((UINT32)1)<<7)
#define TPM_DELEGATE_FieldUpgrade (((UINT32)1)<<6)
#define TPM_DELEGATE_Delegate_UpdateVerification (((UINT32)1)<<5)
#define TPM_DELEGATE_CreateCounter (((UINT32)1)<<4)
#define TPM_DELEGATE_ReleaseCounterOwner (((UINT32)1)<<3)
#define TPM_DELEGATE_DelegateManage (((UINT32)1)<<2)
#define TPM_DELEGATE_Delegate_CreateOwnerDelegation (((UINT32)1)<<1)
#define TPM_DELEGATE_DAA_Sign (((UINT32)1)<<0)
//-------------------------------------------------------------------
// Part 2, section 20.3: Key Permissions Settings for per1 bits
#define TPM_KEY_DELEGATE_CMK_ConvertMigration (((UINT32)1)<<28)
#define TPM_KEY_DELEGATE_TickStampBlob (((UINT32)1)<<27)
#define TPM_KEY_DELEGATE_ChangeAuthAsymStart (((UINT32)1)<<26)
#define TPM_KEY_DELEGATE_ChangeAuthAsymFinish (((UINT32)1)<<25)
#define TPM_KEY_DELEGATE_CMK_CreateKey (((UINT32)1)<<24)
#define TPM_KEY_DELEGATE_MigrateKey (((UINT32)1)<<23)
#define TPM_KEY_DELEGATE_LoadKey2 (((UINT32)1)<<22)
#define TPM_KEY_DELEGATE_EstablishTransport (((UINT32)1)<<21)
#define TPM_KEY_DELEGATE_ReleaseTransportSigned (((UINT32)1)<<20)
#define TPM_KEY_DELEGATE_Quote2 (((UINT32)1)<<19)
#define TPM_KEY_DELEGATE_Sealx (((UINT32)1)<<18)
#define TPM_KEY_DELEGATE_MakeIdentity (((UINT32)1)<<17)
#define TPM_KEY_DELEGATE_ActivateIdentity (((UINT32)1)<<16)
#define TPM_KEY_DELEGATE_GetAuditDigestSigned (((UINT32)1)<<15)
#define TPM_KEY_DELEGATE_Sign (((UINT32)1)<<14)
#define TPM_KEY_DELEGATE_CertifyKey2 (((UINT32)1)<<13)
#define TPM_KEY_DELEGATE_CertifyKey (((UINT32)1)<<12)
#define TPM_KEY_DELEGATE_CreateWrapKey (((UINT32)1)<<11)
#define TPM_KEY_DELEGATE_CMK_CreateBlob (((UINT32)1)<<10)
#define TPM_KEY_DELEGATE_CreateMigrationBlob (((UINT32)1)<<9)
#define TPM_KEY_DELEGATE_ConvertMigrationBlob (((UINT32)1)<<8)
#define TPM_KEY_DELEGATE_CreateKeyDelegation (((UINT32)1)<<7)
#define TPM_KEY_DELEGATE_ChangeAuth (((UINT32)1)<<6)
#define TPM_KEY_DELEGATE_GetPubKey (((UINT32)1)<<5)
#define TPM_KEY_DELEGATE_UnBind (((UINT32)1)<<4)
#define TPM_KEY_DELEGATE_Quote (((UINT32)1)<<3)
#define TPM_KEY_DELEGATE_Unseal (((UINT32)1)<<2)
#define TPM_KEY_DELEGATE_Seal (((UINT32)1)<<1)
#define TPM_KEY_DELEGATE_LoadKey (((UINT32)1)<<0)
typedef UINT32 TPM_FAMILY_VERIFICATION;
typedef UINT32 TPM_FAMILY_ID;
typedef UINT32 TPM_DELEGATE_INDEX;
typedef UINT32 TPM_FAMILY_OPERATION;
#define TPM_FAMILY_CREATE ((UINT32)0x00000001)
#define TPM_FAMILY_ENABLE ((UINT32)0x00000002)
#define TPM_FAMILY_ADMIN ((UINT32)0x00000003)
#define TPM_FAMILY_INVALIDATE ((UINT32)0x00000004)
typedef UINT32 TPM_FAMILY_FLAGS;
#define TPM_FAMFLAG_DELEGATE_ADMIN_LOCK (((UINT32)1)<<1)
#define TPM_FAMFLAG_ENABLE (((UINT32)1)<<0)
typedef struct tdTPM_FAMILY_LABEL
{
BYTE label;
} TPM_FAMILY_LABEL;
typedef struct tdTPM_FAMILY_TABLE_ENTRY
{
TPM_STRUCTURE_TAG tag;
TPM_FAMILY_LABEL label;
TPM_FAMILY_ID familyID;
TPM_FAMILY_VERIFICATION verificationCount;
TPM_FAMILY_FLAGS flags;
} TPM_FAMILY_TABLE_ENTRY;
#define TPM_FAMILY_TABLE_ENTRY_MIN 8
//typedef struct tdTPM_FAMILY_TABLE
//{
// TPM_FAMILY_TABLE_ENTRY FamTableRow[TPM_NUM_FAMILY_TABLE_ENTRY_MIN];
//} TPM_FAMILY_TABLE;
typedef struct tdTPM_DELEGATE_LABEL
{
BYTE label;
} TPM_DELEGATE_LABEL;
typedef UINT32 TPM_DELEGATE_TYPE;
#define TPM_DEL_OWNER_BITS ((UINT32)0x00000001)
#define TPM_DEL_KEY_BITS ((UINT32)0x00000002)
typedef struct tdTPM_DELEGATIONS
{
TPM_STRUCTURE_TAG tag;
TPM_DELEGATE_TYPE delegateType;
UINT32 per1;
UINT32 per2;
} TPM_DELEGATIONS;
typedef struct tdTPM_DELEGATE_PUBLIC
{
TPM_STRUCTURE_TAG tag;
TPM_DELEGATE_LABEL label;
TPM_PCR_INFO_SHORT pcrInfo;
TPM_DELEGATIONS permissions;
TPM_FAMILY_ID familyID;
TPM_FAMILY_VERIFICATION verificationCount;
} TPM_DELEGATE_PUBLIC;
typedef struct tdTPM_DELEGATE_TABLE_ROW
{
TPM_STRUCTURE_TAG tag;
TPM_DELEGATE_PUBLIC pub;
TPM_SECRET authValue;
} TPM_DELEGATE_TABLE_ROW;
#define TPM_NUM_DELEGATE_TABLE_ENTRY_MIN 2
//typedef struct tdTPM_DELEGATE_TABLE
//{
// TPM_DELEGATE_TABLE_ROW delRow[TPM_NUM_DELEGATE_TABLE_ENTRY_MIN];
//} TPM_DELEGATE_TABLE;
typedef struct tdTPM_DELEGATE_SENSITIVE
{
TPM_STRUCTURE_TAG tag;
TPM_SECRET authValue;
} TPM_DELEGATE_SENSITIVE;
typedef struct tdTPM_DELEGATE_OWNER_BLOB
{
TPM_STRUCTURE_TAG tag;
TPM_DELEGATE_PUBLIC pub;
TPM_DIGEST integrityDigest;
UINT32 additionalSize;
SIZEIS(additionalSize)
BYTE *additionalArea;
UINT32 sensitiveSize;
SIZEIS(sensitiveSize)
BYTE *sensitiveArea;
} TPM_DELEGATE_OWNER_BLOB;
typedef struct tdTPM_DELEGATE_KEY_BLOB
{
TPM_STRUCTURE_TAG tag;
TPM_DELEGATE_PUBLIC pub;
TPM_DIGEST integrityDigest;
TPM_DIGEST pubKeyDigest;
UINT32 additionalSize;
SIZEIS(additionalSize)
BYTE *additionalArea;
UINT32 sensitiveSize;
SIZEIS(sensitiveSize)
BYTE *sensitiveArea;
} TPM_DELEGATE_KEY_BLOB;
//-------------------------------------------------------------------
// Part 2, section 21.1: TPM_CAPABILITY_AREA
typedef UINT32 TPM_CAPABILITY_AREA; /* 1.1b */
#define TPM_CAP_ORD ((UINT32)0x00000001) /* 1.1b */
#define TPM_CAP_ALG ((UINT32)0x00000002) /* 1.1b */
#define TPM_CAP_PID ((UINT32)0x00000003) /* 1.1b */
#define TPM_CAP_FLAG ((UINT32)0x00000004) /* 1.1b */
#define TPM_CAP_PROPERTY ((UINT32)0x00000005) /* 1.1b */
#define TPM_CAP_VERSION ((UINT32)0x00000006) /* 1.1b */
#define TPM_CAP_KEY_HANDLE ((UINT32)0x00000007) /* 1.1b */
#define TPM_CAP_CHECK_LOADED ((UINT32)0x00000008) /* 1.1b */
#define TPM_CAP_SYM_MODE ((UINT32)0x00000009)
#define TPM_CAP_KEY_STATUS ((UINT32)0x0000000C)
#define TPM_CAP_NV_LIST ((UINT32)0x0000000D)
#define TPM_CAP_MFR ((UINT32)0x00000010)
#define TPM_CAP_NV_INDEX ((UINT32)0x00000011)
#define TPM_CAP_TRANS_ALG ((UINT32)0x00000012)
#define TPM_CAP_HANDLE ((UINT32)0x00000014)
#define TPM_CAP_TRANS_ES ((UINT32)0x00000015)
#define TPM_CAP_AUTH_ENCRYPT ((UINT32)0x00000017)
#define TPM_CAP_SELECT_SIZE ((UINT32)0x00000018)
#define TPM_CAP_DA_LOGIC ((UINT32)0x00000019)
#define TPM_CAP_VERSION_VAL ((UINT32)0x0000001A)
// Part 2, section 21.1: Subcap values for CAP_FLAG
#define TPM_CAP_FLAG_PERMANENT ((UINT32)0x00000108)
#define TPM_CAP_FLAG_VOLATILE ((UINT32)0x00000109)
//-------------------------------------------------------------------
// Part 2, section 21.2: Subcap values for CAP_PROPERTY
#define TPM_CAP_PROP_PCR ((UINT32)0x00000101) /* 1.1b */
#define TPM_CAP_PROP_DIR ((UINT32)0x00000102) /* 1.1b */
#define TPM_CAP_PROP_MANUFACTURER ((UINT32)0x00000103) /* 1.1b */
#define TPM_CAP_PROP_KEYS ((UINT32)0x00000104)
#define TPM_CAP_PROP_SLOTS (TPM_CAP_PROP_KEYS)
#define TPM_CAP_PROP_MIN_COUNTER ((UINT32)0x00000107)
#define TPM_CAP_PROP_AUTHSESS ((UINT32)0x0000010A)
#define TPM_CAP_PROP_TRANSSESS ((UINT32)0x0000010B)
#define TPM_CAP_PROP_COUNTERS ((UINT32)0x0000010C)
#define TPM_CAP_PROP_MAX_AUTHSESS ((UINT32)0x0000010D)
#define TPM_CAP_PROP_MAX_TRANSSESS ((UINT32)0x0000010E)
#define TPM_CAP_PROP_MAX_COUNTERS ((UINT32)0x0000010F)
#define TPM_CAP_PROP_MAX_KEYS ((UINT32)0x00000110)
#define TPM_CAP_PROP_OWNER ((UINT32)0x00000111)
#define TPM_CAP_PROP_CONTEXT ((UINT32)0x00000112)
#define TPM_CAP_PROP_MAX_CONTEXT ((UINT32)0x00000113)
#define TPM_CAP_PROP_FAMILYROWS ((UINT32)0x00000114)
#define TPM_CAP_PROP_TIS_TIMEOUT ((UINT32)0x00000115)
#define TPM_CAP_PROP_STARTUP_EFFECT ((UINT32)0x00000116)
#define TPM_CAP_PROP_DELEGATE_ROW ((UINT32)0x00000117)
#define TPM_CAP_PROP_MAX_DAASESS ((UINT32)0x00000119)
#define TPM_CAP_PROP_DAA_MAX TPM_CAP_PROP_MAX_DAASESS
#define TPM_CAP_PROP_DAASESS ((UINT32)0x0000011A)
#define TPM_CAP_PROP_SESSION_DAA TPM_CAP_PROP_DAASESS
#define TPM_CAP_PROP_CONTEXT_DIST ((UINT32)0x0000011B)
#define TPM_CAP_PROP_DAA_INTERRUPT ((UINT32)0x0000011C)
#define TPM_CAP_PROP_SESSIONS ((UINT32)0x0000011D)
#define TPM_CAP_PROP_MAX_SESSIONS ((UINT32)0x0000011E)
#define TPM_CAP_PROP_CMK_RESTRICTION ((UINT32)0x0000011F)
#define TPM_CAP_PROP_DURATION ((UINT32)0x00000120)
#define TPM_CAP_PROP_ACTIVE_COUNTER ((UINT32)0x00000122)
#define TPM_CAP_PROP_NV_AVAILABLE ((UINT32)0x00000123)
#define TPM_CAP_PROP_INPUT_BUFFER ((UINT32)0x00000124)
// Part 2, section 21.4: SetCapability Values
#define TPM_SET_PERM_FLAGS ((UINT32)0x00000001)
#define TPM_SET_PERM_DATA ((UINT32)0x00000002)
#define TPM_SET_STCLEAR_FLAGS ((UINT32)0x00000003)
#define TPM_SET_STCLEAR_DATA ((UINT32)0x00000004)
#define TPM_SET_STANY_FLAGS ((UINT32)0x00000005)
#define TPM_SET_STANY_DATA ((UINT32)0x00000006)
#define TPM_SET_VENDOR ((UINT32)0x00000007)
// Part 2, section 21.6: TPM_CAP_VERSION_INFO
typedef struct tdTPM_CAP_VERSION_INFO
{
TPM_STRUCTURE_TAG tag;
TPM_VERSION version;
UINT16 specLevel;
BYTE errataRev;
BYTE tpmVendorID[4];
UINT16 vendorSpecificSize;
SIZEIS(vendorSpecificSize)
BYTE *vendorSpecific;
} TPM_CAP_VERSION_INFO;
// Part 2, section 21.9: TPM_DA_STATE
// out of order to make it available for structure definitions
typedef BYTE TPM_DA_STATE;
#define TPM_DA_STATE_INACTIVE (0x00)
#define TPM_DA_STATE_ACTIVE (0x01)
// Part 2, section 21.10: TPM_DA_ACTION_TYPE
typedef struct tdTPM_DA_ACTION_TYPE
{
TPM_STRUCTURE_TAG tag;
UINT32 actions;
} TPM_DA_ACTION_TYPE;
#define TPM_DA_ACTION_TIMEOUT ((UINT32)0x00000001)
#define TPM_DA_ACTION_DISABLE ((UINT32)0x00000002)
#define TPM_DA_ACTION_DEACTIVATE ((UINT32)0x00000004)
#define TPM_DA_ACTION_FAILURE_MODE ((UINT32)0x00000008)
// Part 2, section 21.7: TPM_DA_INFO
typedef struct tdTPM_DA_INFO
{
TPM_STRUCTURE_TAG tag;
TPM_DA_STATE state;
UINT16 currentCount;
UINT16 threshholdCount;
TPM_DA_ACTION_TYPE actionAtThreshold;
UINT32 actionDependValue;
UINT32 vendorDataSize;
SIZEIS(vendorDataSize)
BYTE *vendorData;
} TPM_DA_INFO;
// Part 2, section 21.8: TPM_DA_INFO_LIMITED
typedef struct tdTPM_DA_INFO_LIMITED
{
TPM_STRUCTURE_TAG tag;
TPM_DA_STATE state;
TPM_DA_ACTION_TYPE actionAtThreshold;
UINT32 vendorDataSize;
SIZEIS(vendorDataSize)
BYTE *vendorData;
} TPM_DA_INFO_LIMITED;
//-------------------------------------------------------------------
// Part 2, section 22: DAA Structures
#define TPM_DAA_SIZE_r0 (43)
#define TPM_DAA_SIZE_r1 (43)
#define TPM_DAA_SIZE_r2 (128)
#define TPM_DAA_SIZE_r3 (168)
#define TPM_DAA_SIZE_r4 (219)
#define TPM_DAA_SIZE_NT (20)
#define TPM_DAA_SIZE_v0 (128)
#define TPM_DAA_SIZE_v1 (192)
#define TPM_DAA_SIZE_NE (256)
#define TPM_DAA_SIZE_w (256)
#define TPM_DAA_SIZE_issuerModulus (256)
#define TPM_DAA_power0 (104)
#define TPM_DAA_power1 (1024)
typedef struct tdTPM_DAA_ISSUER
{
TPM_STRUCTURE_TAG tag;
TPM_DIGEST DAA_digest_R0;
TPM_DIGEST DAA_digest_R1;
TPM_DIGEST DAA_digest_S0;
TPM_DIGEST DAA_digest_S1;
TPM_DIGEST DAA_digest_n;
TPM_DIGEST DAA_digest_gamma;
BYTE DAA_generic_q[26];
} TPM_DAA_ISSUER;
typedef struct tdTPM_DAA_TPM
{
TPM_STRUCTURE_TAG tag;
TPM_DIGEST DAA_digestIssuer;
TPM_DIGEST DAA_digest_v0;
TPM_DIGEST DAA_digest_v1;
TPM_DIGEST DAA_rekey;
UINT32 DAA_count;
} TPM_DAA_TPM;
typedef struct tdTPM_DAA_CONTEXT
{
TPM_STRUCTURE_TAG tag;
TPM_DIGEST DAA_digestContext;
TPM_DIGEST DAA_digest;
TPM_DAA_CONTEXT_SEED DAA_contextSeed;
BYTE DAA_scratch[256];
BYTE DAA_stage;
} TPM_DAA_CONTEXT;
typedef struct tdTPM_DAA_JOINDATA
{
BYTE DAA_join_u0[128];
BYTE DAA_join_u1[138];
TPM_DIGEST DAA_digest_n0;
} TPM_DAA_JOINDATA;
typedef struct tdTPM_DAA_BLOB
{
TPM_STRUCTURE_TAG tag;
TPM_RESOURCE_TYPE resourceType;
BYTE label[16];
TPM_DIGEST blobIntegrity;
UINT32 additionalSize;
SIZEIS(additionalSize)
BYTE *additionalData;
UINT32 sensitiveSize;
SIZEIS(sensitiveSize)
BYTE *sensitiveData;
} TPM_DAA_BLOB;
typedef struct tdTPM_DAA_SENSITIVE
{
TPM_STRUCTURE_TAG tag;
UINT32 internalSize;
SIZEIS(internalSize)
BYTE *internalData;
} TPM_DAA_SENSITIVE;
//-------------------------------------------------------------------
// Part 2, section 23: Redirection
// This section of the TPM spec defines exactly one value but does not
// give it a name. The definition of TPM_SetRedirection in Part3
// refers to exactly one name but does not give its value. We join
// them here.
#define TPM_REDIR_GPIO (0x00000001)
//-------------------------------------------------------------------
// Part 2, section 24.6: TPM_SYM_MODE
// Deprecated by TPM 1.2 spec
typedef UINT32 TPM_SYM_MODE;
#define TPM_SYM_MODE_ECB (0x00000001)
#define TPM_SYM_MODE_CBC (0x00000002)
#define TPM_SYM_MODE_CFB (0x00000003)
#endif // __TPM_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -