⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tpm.h

📁 TCG软件栈 linux系统上使用 为可信应用软件提供和 TPM通信的 接口 其网站上有很多关于使用此软件的测试用例
💻 H
📖 第 1 页 / 共 4 页
字号:
} 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 + -