tpm12.h
来自「EFI BIOS是Intel提出的下一代的BIOS标准。这里上传的Edk源代码是」· C头文件 代码 · 共 1,398 行 · 第 1/5 页
H
1,398 行
#define TPM_PS_Server_12 ((TPM_PLATFORM_SPECIFIC) 0x0004) // Server Specific version 1.2
#define TPM_PS_Mobile_12 ((TPM_PLATFORM_SPECIFIC) 0x0005) // Mobil Specific version 1.2
//
// Part 2, section 5: Basic Structures
//
//
// Part 2, section 5.1: TPM_STRUCT_VER
//
typedef struct tdTPM_STRUCT_VER {
UINT8 major;
UINT8 minor;
UINT8 revMajor;
UINT8 revMinor;
} TPM_STRUCT_VER;
//
// Part 2, section 5.3: TPM_VERSION
//
typedef struct tdTPM_VERSION {
TPM_VERSION_BYTE major;
TPM_VERSION_BYTE minor;
UINT8 revMajor;
UINT8 revMinor;
} TPM_VERSION;
//
// Part 2, section 5.4: TPM_DIGEST
//
#define TPM_SHA1_160_HASH_LEN 0x14
#define TPM_SHA1BASED_NONCE_LEN TPM_SHA1_160_HASH_LEN
typedef struct tdTPM_DIGEST{
UINT8 digest[TPM_SHA1_160_HASH_LEN];
} TPM_DIGEST;
typedef TPM_DIGEST TPM_CHOSENID_HASH; // This SHALL be the digest of the chosen identityLabel and privacyCA for a new TPM identity.
typedef TPM_DIGEST TPM_COMPOSITE_HASH; // This SHALL be the hash of a list of PCR indexes and PCR values that a key or data is bound to.
typedef TPM_DIGEST TPM_DIRVALUE; // This SHALL be the value of a DIR register
typedef TPM_DIGEST TPM_HMAC;
typedef TPM_DIGEST TPM_PCRVALUE; // The value inside of the PCR
typedef TPM_DIGEST TPM_AUDITDIGEST; // This SHALL be the value of the current internal audit state
typedef TPM_DIGEST TPM_DAA_TPM_SEED; // This SHALL be a random value generated by a TPM immediately after the EK is installed in that TPM, whenever an EK is installed in that TPM
typedef TPM_DIGEST TPM_DAA_CONTEXT_SEED; // This SHALL be a random value
//
// Part 2, section 5.5: TPM_NONCE
//
typedef struct tdTPM_NONCE{
UINT8 nonce[20];
} TPM_NONCE;
//
// Part 2, section 5.6: TPM_AUTHDATA
//
typedef UINT8 tdTPM_AUTHDATA[20];
typedef tdTPM_AUTHDATA TPM_AUTHDATA;
typedef TPM_AUTHDATA TPM_SECRET;
typedef TPM_AUTHDATA TPM_ENCAUTH;
//
// Part 2, section 5.7: TPM_KEY_HANDLE_LIST
// Size of handle is loaded * sizeof(TPM_KEY_HANDLE)
//
typedef struct tdTPM_KEY_HANDLE_LIST {
UINT16 loaded;
TPM_KEY_HANDLE handle[1];
} TPM_KEY_HANDLE_LIST;
//
// Part 2, section 5.8: TPM_KEY_USAGE values
//
#define TPM_KEY_SIGNING ((UINT16) 0x0010)
// TPM_KEY_SIGNING SHALL indicate a signing key. The [private] key SHALL be
// used for signing operations, only. This means that it MUST be a leaf of the
// Protected Storage key hierarchy.
#define TPM_KEY_STORAGE ((UINT16) 0x0011)
// TPM_KEY_STORAGE SHALL indicate a storage key. The key SHALL be used to wrap
// and unwrap other keys in the Protected Storage hierarchy
#define TPM_KEY_IDENTITY ((UINT16) 0x0012)
// TPM_KEY_IDENTITY SHALL indicate an identity key. The key SHALL be used for
// operations that require a TPM identity, only.
#define TPM_KEY_AUTHCHANGE ((UINT16) 0x0013)
// TPM_KEY_AUTHCHANGE SHALL indicate an ephemeral key that is in use during
// the ChangeAuthAsym process, only.
#define TPM_KEY_BIND ((UINT16) 0x0014)
// TPM_KEY_BIND SHALL indicate a key that can be used for TPM_Bind and
// TPM_Unbind operations only.
#define TPM_KEY_LEGACY ((UINT16) 0x0015)
// TPM_KEY_LEGACY SHALL indicate a key that can perform signing and binding
// operations. The key MAY be used for both signing and binding operations.
// The TPM_KEY_LEGACY key type is to allow for use by applications where both
// signing and encryption operations occur with the same key. The use of this
// key type is not recommended TPM_KEY_MIGRATE 0x0016 This SHALL indicate a
// key in use for TPM_MigrateKey
#define TPM_KEY_MIGRATE ((UINT16) 0x0016)
// TPM_KEY_MIGRAGE SHALL indicate a key in use for TPM_MigrateKey
//
// Part 2, section 5.8.1: Encryption/Signature schemes
//
#define TPM_ES_NONE ((TPM_ENC_SCHEME) 0x0001)
#define TPM_ES_RSAESPKCSv15 ((TPM_ENC_SCHEME) 0x0002)
#define TPM_ES_RSAESOAEP_SHA1_MGF1 ((TPM_ENC_SCHEME) 0x0003)
#define TPM_ES_SYM_CNT ((TPM_ENC_SCHEME) 0x0004)
#define TPM_ES_SYM_OFB ((TPM_ENC_SCHEME) 0x0005)
#define TPM_SS_NONE ((TPM_SIG_SCHEME) 0x0001)
#define TPM_SS_RSASSAPKCS1v15_SHA1 ((TPM_SIG_SCHEME) 0x0002)
#define TPM_SS_RSASSAPKCS1v15_DER ((TPM_SIG_SCHEME) 0x0003)
#define TPM_SS_RSASSAPKCS1v15_INFO ((TPM_SIG_SCHEME) 0x0004)
//
// Part 2, section 5.9: TPM_AUTH_DATA_USAGE values
//
#define TPM_AUTH_NEVER ((TPM_AUTH_DATA_USAGE) 0x00)
#define TPM_AUTH_ALWAYS ((TPM_AUTH_DATA_USAGE) 0x01)
#define TPM_AUTH_PRIV_USE_ONLY ((TPM_AUTH_DATA_USAGE) 0x03)
//
// Part 2, section 5.10: TPM_KEY_FLAGS
//
enum tdTPM_KEY_FLAGS {
redirection = 0x00000001,
migratable = 0x00000002,
isVolatile = 0x00000004,
pcrIgnoredOnRead = 0x00000008,
migrateAuthority = 0x00000010
};
//
// Part 2, section 5.11: TPM_CHANGEAUTH_VALIDATE
//
typedef struct tdTPM_CHANGEAUTH_VALIDATE {
TPM_SECRET newAuthSecret;
TPM_NONCE n1;
} TPM_CHANGEAUTH_VALIDATE;
//
// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH
// decalared after section 10 to catch declaration of TPM_PUBKEY
//
// Part 2 section 10.1: TPM_KEY_PARMS
// [size_is(parmSize)] BYTE* parms;
//
typedef struct tdTPM_KEY_PARMS {
TPM_ALGORITHM_ID algorithmID;
TPM_ENC_SCHEME encScheme;
TPM_SIG_SCHEME sigScheme;
UINT32 parmSize;
UINT8 *parms;
} TPM_KEY_PARMS;
//
// Part 2, section 10.4: TPM_STORE_PUBKEY
//
typedef struct tdTPM_STORE_PUBKEY {
UINT32 keyLength;
UINT8 key[1];
} TPM_STORE_PUBKEY;
//
// Part 2, section 10.5: TPM_PUBKEY
//
typedef struct tdTPM_PUBKEY{
TPM_KEY_PARMS algorithmParms;
TPM_STORE_PUBKEY pubKey;
} TPM_PUBKEY;
//
// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH
//
typedef struct tdTPM_MIGRATIONKEYAUTH{
TPM_PUBKEY migrationKey;
TPM_MIGRATE_SCHEME migrationScheme;
TPM_DIGEST digest;
} TPM_MIGRATIONKEYAUTH;
//
// Part 2, section 5.13: TPM_COUNTER_VALUE
//
typedef struct tdTPM_COUNTER_VALUE{
TPM_STRUCTURE_TAG tag;
UINT8 label[4];
TPM_ACTUAL_COUNT counter;
} TPM_COUNTER_VALUE;
//
// Part 2, section 5.14: TPM_SIGN_INFO
// Size of data indicated by dataLen
//
typedef struct tdTPM_SIGN_INFO {
TPM_STRUCTURE_TAG tag;
UINT8 fixed[4];
TPM_NONCE replay;
UINT32 dataLen;
UINT8 *data;
} TPM_SIGN_INFO;
//
// Part 2, section 5.15: TPM_MSA_COMPOSITE
// Number of migAuthDigest indicated by MSAlist
//
typedef struct tdTPM_MSA_COMPOSITE {
UINT32 MSAlist;
TPM_DIGEST migAuthDigest[1];
} 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
//
#define TPM_CMK_DELEGATE_SIGNING (((TPM_CMK_DELEGATE)1) << 31)
#define TPM_CMK_DELEGATE_STORAGE (((TPM_CMK_DELEGATE)1) << 30)
#define TPM_CMK_DELEGATE_BIND (((TPM_CMK_DELEGATE)1) << 29)
#define TPM_CMK_DELEGATE_LEGACY (((TPM_CMK_DELEGATE)1) << 28)
#define TPM_CMK_DELEGATE_MIGRATE (((TPM_CMK_DELEGATE)1) << 27)
//
// Part 2, section 5.18: TPM_SELECT_SIZE
//
typedef struct tdTPM_SELECT_SIZE {
UINT8 major;
UINT8 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
//
#define TPM_TAG_RQU_COMMAND ((TPM_STRUCTURE_TAG) 0x00C1)
#define TPM_TAG_RQU_AUTH1_COMMAND ((TPM_STRUCTURE_TAG) 0x00C2)
#define TPM_TAG_RQU_AUTH2_COMMAND ((TPM_STRUCTURE_TAG) 0x00C3)
#define TPM_TAG_RSP_COMMAND ((TPM_STRUCTURE_TAG) 0x00C4)
#define TPM_TAG_RSP_AUTH1_COMMAND ((TPM_STRUCTURE_TAG) 0x00C5)
#define TPM_TAG_RSP_AUTH2_COMMAND ((TPM_STRUCTURE_TAG) 0x00C6)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?