]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/IndustryStandard/Tpm12.h
Add comments for enumeration, structure data members those are referred by UefiServic...
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / Tpm12.h
index 32afb6bc07d264cd4fc9bc2f39f5171f8ef1db68..7f8bf1f6a0925d9877578bb8eaa818c8a7ab706b 100644 (file)
@@ -22,7 +22,7 @@
 #define TPM_BASE                    (EFI_MAX_BIT + (EFI_MAX_BIT >> 1))\r
 \r
 //\r
-// Structures are all packed on 1-byte alignment\r
+// All structures MUST be packed on a byte boundary.\r
 //\r
 \r
 #pragma pack (1)\r
 //\r
 // Part 2, section 2.2.3: Helper redefinitions\r
 //\r
+///\r
+/// Indicates the conditions where it is required that authorization be presented\r
+///\r
 typedef UINT8                       TPM_AUTH_DATA_USAGE;\r
+///\r
+/// The information as to what the payload is in an encrypted structure\r
+///\r
 typedef UINT8                       TPM_PAYLOAD_TYPE;\r
+///\r
+/// The version info breakdown\r
+///\r
 typedef UINT8                       TPM_VERSION_BYTE;\r
+///\r
+/// The request or response authorization type\r
+///\r
 typedef UINT16                      TPM_TAG;\r
+///\r
+/// The protocol in use\r
+///\r
 typedef UINT16                      TPM_PROTOCOL_ID;\r
+///\r
+/// Indicates the start state\r
+///\r
 typedef UINT16                      TPM_STARTUP_TYPE;\r
+///\r
+/// The definition of the encryption scheme\r
+///\r
 typedef UINT16                      TPM_ENC_SCHEME;\r
+///\r
+/// The definition of the signature scheme\r
+///\r
 typedef UINT16                      TPM_SIG_SCHEME;\r
+///\r
+/// The definition of the migration scheme\r
+///\r
 typedef UINT16                      TPM_MIGRATE_SCHEME;\r
+///\r
+/// Sets the state of the physical presence mechanism\r
+///\r
 typedef UINT16                      TPM_PHYSICAL_PRESENCE;\r
+///\r
+/// Indicates the types of entity that are supported by the TPM\r
+///\r
 typedef UINT16                      TPM_ENTITY_TYPE;\r
+///\r
+/// Indicates the permitted usage of the key\r
+///\r
 typedef UINT16                      TPM_KEY_USAGE;\r
+///\r
+/// The type of asymmetric encrypted structure in use by the endorsement key\r
+///\r
 typedef UINT16                      TPM_EK_TYPE;\r
+///\r
+/// The tag for the structure\r
+///\r
 typedef UINT16                      TPM_STRUCTURE_TAG;\r
+///\r
+/// The platform specific spec to which the information relates to\r
+///\r
 typedef UINT16                      TPM_PLATFORM_SPECIFIC;\r
+///\r
+/// The command ordinal\r
+///\r
 typedef UINT32                      TPM_COMMAND_CODE;\r
+///\r
+/// Identifies a TPM capability area\r
+///\r
 typedef UINT32                      TPM_CAPABILITY_AREA;\r
+///\r
+/// Indicates information regarding a key\r
+///\r
 typedef UINT32                      TPM_KEY_FLAGS;\r
+///\r
+/// Indicates the type of algorithm\r
+///\r
 typedef UINT32                      TPM_ALGORITHM_ID;\r
+///\r
+/// The locality modifier\r
+///\r
 typedef UINT32                      TPM_MODIFIER_INDICATOR;\r
+///\r
+/// The actual number of a counter\r
+///\r
 typedef UINT32                      TPM_ACTUAL_COUNT;\r
+///\r
+/// Attributes that define what options are in use for a transport session\r
+///\r
 typedef UINT32                      TPM_TRANSPORT_ATTRIBUTES;\r
+///\r
+/// Handle to an authorization session\r
+///\r
 typedef UINT32                      TPM_AUTHHANDLE;\r
+///\r
+/// Index to a DIR register\r
+///\r
 typedef UINT32                      TPM_DIRINDEX;\r
+///\r
+/// The area where a key is held assigned by the TPM\r
+///\r
 typedef UINT32                      TPM_KEY_HANDLE;\r
+///\r
+/// Index to a PCR register\r
+///\r
 typedef UINT32                      TPM_PCRINDEX;\r
+///\r
+/// The return code from a function\r
+///\r
 typedef UINT32                      TPM_RESULT;\r
+///\r
+/// The types of resources that a TPM may have using internal resources\r
+///\r
 typedef UINT32                      TPM_RESOURCE_TYPE;\r
+///\r
+/// Allows for controlling of the key when loaded and how to handle TPM_Startup issues\r
+///\r
 typedef UINT32                      TPM_KEY_CONTROL;\r
+///\r
+/// The index into the NV storage area\r
+///\r
 typedef UINT32                      TPM_NV_INDEX;\r
+///\r
+/// The family ID. Families ID's are automatically assigned a sequence number by the TPM. \r
+/// A trusted process can set the FamilyID value in an individual row to NULL, which \r
+/// invalidates that row. The family ID resets to NULL on each change of TPM Owner.\r
+///\r
 typedef UINT32                      TPM_FAMILY_ID;\r
+///\r
+/// IA value used as a label for the most recent verification of this family. Set to zero when not in use.\r
+///\r
 typedef UINT32                      TPM_FAMILY_VERIFICATION;\r
+///\r
+/// How the TPM handles var\r
+///\r
 typedef UINT32                      TPM_STARTUP_EFFECTS;\r
+///\r
+/// The mode of a symmetric encryption\r
+///\r
 typedef UINT32                      TPM_SYM_MODE;\r
+///\r
+/// The family flags\r
+///\r
 typedef UINT32                      TPM_FAMILY_FLAGS;\r
+///\r
+/// The index value for the delegate NV table\r
+///\r
 typedef UINT32                      TPM_DELEGATE_INDEX;\r
+///\r
+/// The restrictions placed on delegation of CMK commands\r
+///\r
 typedef UINT32                      TPM_CMK_DELEGATE;\r
+///\r
+/// The ID value of a monotonic counter\r
+///\r
 typedef UINT32                      TPM_COUNT_ID;\r
+///\r
+/// A command to execute\r
+///\r
 typedef UINT32                      TPM_REDIT_COMMAND;\r
+///\r
+/// A transport session handle\r
+///\r
 typedef UINT32                      TPM_TRANSHANDLE;\r
+///\r
+/// A generic handle could be key, transport etc\r
+///\r
 typedef UINT32                      TPM_HANDLE;\r
+///\r
+/// What operation is happening\r
+///\r
 typedef UINT32                      TPM_FAMILY_OPERATION;\r
 \r
 //\r
@@ -281,9 +409,9 @@ typedef UINT32                      TPM_FAMILY_OPERATION;
 // Part 2, section 5: Basic Structures\r
 //\r
 \r
-//\r
-// Part 2, section 5.1: TPM_STRUCT_VER\r
-//\r
+///\r
+/// Part 2, section 5.1: TPM_STRUCT_VER\r
+///\r
 typedef struct tdTPM_STRUCT_VER {\r
   UINT8                             major;\r
   UINT8                             minor;\r
@@ -291,9 +419,9 @@ typedef struct tdTPM_STRUCT_VER {
   UINT8                             revMinor;\r
 } TPM_STRUCT_VER;\r
 \r
-//\r
-// Part 2, section 5.3: TPM_VERSION\r
-//\r
+///\r
+/// Part 2, section 5.3: TPM_VERSION\r
+///\r
 typedef struct tdTPM_VERSION {\r
   TPM_VERSION_BYTE                  major;\r
   TPM_VERSION_BYTE                  minor;\r
@@ -301,28 +429,52 @@ typedef struct tdTPM_VERSION {
   UINT8                             revMinor;\r
 } TPM_VERSION;\r
 \r
-//\r
-// Part 2, section 5.4: TPM_DIGEST\r
-//\r
+\r
 #define TPM_SHA1_160_HASH_LEN       0x14\r
 #define TPM_SHA1BASED_NONCE_LEN     TPM_SHA1_160_HASH_LEN\r
 \r
+///\r
+/// Part 2, section 5.4: TPM_DIGEST\r
+///\r
 typedef struct tdTPM_DIGEST{\r
   UINT8                             digest[TPM_SHA1_160_HASH_LEN];\r
 } TPM_DIGEST;\r
 \r
+///\r
+/// This SHALL be the digest of the chosen identityLabel and privacyCA for a new TPM identity\r
+///\r
 typedef TPM_DIGEST                  TPM_CHOSENID_HASH;\r
+///\r
+/// This SHALL be the hash of a list of PCR indexes and PCR values that a key or data is bound to\r
+///\r
 typedef TPM_DIGEST                  TPM_COMPOSITE_HASH;\r
+///\r
+/// This SHALL be the value of a DIR register\r
+///\r
 typedef TPM_DIGEST                  TPM_DIRVALUE;\r
+\r
 typedef TPM_DIGEST                  TPM_HMAC;\r
+///\r
+/// The value inside of the PCR\r
+///\r
 typedef TPM_DIGEST                  TPM_PCRVALUE;\r
+///\r
+/// This SHALL be the value of the current internal audit state\r
+///\r
 typedef TPM_DIGEST                  TPM_AUDITDIGEST;\r
+///\r
+/// This SHALL be a random value generated by a TPM immediately after the EK is installed\r
+/// in that TPM, whenever an EK is installed in that TPM\r
+///\r
 typedef TPM_DIGEST                  TPM_DAA_TPM_SEED;\r
+///\r
+/// This SHALL be a random value\r
+///\r
 typedef TPM_DIGEST                  TPM_DAA_CONTEXT_SEED;\r
 \r
-//\r
-// Part 2, section 5.5: TPM_NONCE\r
-//\r
+///\r
+/// Part 2, section 5.5: TPM_NONCE\r
+///\r
 typedef struct tdTPM_NONCE{\r
   UINT8                             nonce[20];\r
 } TPM_NONCE;\r
@@ -330,15 +482,26 @@ typedef struct tdTPM_NONCE{
 //\r
 // Part 2, section 5.6: TPM_AUTHDATA\r
 //\r
+///\r
+/// The AuthData data is the information that is saved or passed to provide proof of ownership\r
+/// 296 of an entity\r
+///\r
 typedef UINT8                       tdTPM_AUTHDATA[20];\r
+\r
 typedef tdTPM_AUTHDATA              TPM_AUTHDATA;\r
+///\r
+/// A secret plaintext value used in the authorization process\r
+///\r
 typedef TPM_AUTHDATA                TPM_SECRET;\r
+///\r
+/// A ciphertext (encrypted) version of AuthData data. The encryption mechanism depends on the context\r
+///\r
 typedef TPM_AUTHDATA                TPM_ENCAUTH;\r
 \r
-//\r
-// Part 2, section 5.7: TPM_KEY_HANDLE_LIST\r
-// Size of handle is loaded * sizeof(TPM_KEY_HANDLE)\r
-//\r
+///\r
+/// Part 2, section 5.7: TPM_KEY_HANDLE_LIST\r
+/// Size of handle is loaded * sizeof(TPM_KEY_HANDLE)\r
+///\r
 typedef struct tdTPM_KEY_HANDLE_LIST {\r
   UINT16                            loaded;\r
   TPM_KEY_HANDLE                    handle[1];\r
@@ -409,9 +572,9 @@ typedef struct tdTPM_KEY_HANDLE_LIST {
 #define TPM_AUTH_ALWAYS             ((TPM_AUTH_DATA_USAGE) 0x01)\r
 #define TPM_AUTH_PRIV_USE_ONLY      ((TPM_AUTH_DATA_USAGE) 0x03)\r
 \r
-//\r
-// Part 2, section 5.10: TPM_KEY_FLAGS\r
-//\r
+///\r
+/// Part 2, section 5.10: TPM_KEY_FLAGS\r
+///\r
 typedef enum tdTPM_KEY_FLAGS {\r
   redirection                       = 0x00000001,\r
   migratable                        = 0x00000002,\r
@@ -420,21 +583,21 @@ typedef enum tdTPM_KEY_FLAGS {
   migrateAuthority                  = 0x00000010\r
 } TPM_KEY_FLAGS_BITS;\r
 \r
-//\r
-// Part 2, section 5.11: TPM_CHANGEAUTH_VALIDATE\r
-//\r
+///\r
+/// Part 2, section 5.11: TPM_CHANGEAUTH_VALIDATE\r
+///\r
 typedef struct tdTPM_CHANGEAUTH_VALIDATE {\r
   TPM_SECRET                        newAuthSecret;\r
   TPM_NONCE                         n1;\r
 } TPM_CHANGEAUTH_VALIDATE;\r
 \r
-//\r
-// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH\r
-//   decalared after section 10 to catch declaration of TPM_PUBKEY\r
-//\r
-// Part 2 section 10.1: TPM_KEY_PARMS\r
-//   [size_is(parmSize)] BYTE* parms;\r
-//\r
+///\r
+/// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH\r
+///   decalared after section 10 to catch declaration of TPM_PUBKEY\r
+///\r
+/// Part 2 section 10.1: TPM_KEY_PARMS\r
+///   [size_is(parmSize)] BYTE* parms;\r
+///\r
 typedef struct tdTPM_KEY_PARMS {\r
   TPM_ALGORITHM_ID                  algorithmID;\r
   TPM_ENC_SCHEME                    encScheme;\r
@@ -443,44 +606,44 @@ typedef struct tdTPM_KEY_PARMS {
   UINT8                             *parms;\r
 } TPM_KEY_PARMS;\r
 \r
-//\r
-// Part 2, section 10.4: TPM_STORE_PUBKEY\r
-//\r
+///\r
+/// Part 2, section 10.4: TPM_STORE_PUBKEY\r
+///\r
 typedef struct tdTPM_STORE_PUBKEY {\r
   UINT32                            keyLength;\r
   UINT8                             key[1];\r
 } TPM_STORE_PUBKEY;\r
 \r
-//\r
-// Part 2, section 10.5: TPM_PUBKEY\r
-//\r
+///\r
+/// Part 2, section 10.5: TPM_PUBKEY\r
+///\r
 typedef struct tdTPM_PUBKEY{\r
   TPM_KEY_PARMS                     algorithmParms;\r
   TPM_STORE_PUBKEY                  pubKey;\r
 } TPM_PUBKEY;\r
 \r
-//\r
-// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH\r
-//\r
+///\r
+/// Part 2, section 5.12: TPM_MIGRATIONKEYAUTH\r
+///\r
 typedef struct tdTPM_MIGRATIONKEYAUTH{\r
   TPM_PUBKEY                        migrationKey;\r
   TPM_MIGRATE_SCHEME                migrationScheme;\r
   TPM_DIGEST                        digest;\r
 } TPM_MIGRATIONKEYAUTH;\r
 \r
-//\r
-// Part 2, section 5.13: TPM_COUNTER_VALUE\r
-//\r
+///\r
+/// Part 2, section 5.13: TPM_COUNTER_VALUE\r
+///\r
 typedef struct tdTPM_COUNTER_VALUE{\r
   TPM_STRUCTURE_TAG                 tag;\r
   UINT8                             label[4];\r
   TPM_ACTUAL_COUNT                  counter;\r
 } TPM_COUNTER_VALUE;\r
 \r
-//\r
-// Part 2, section 5.14: TPM_SIGN_INFO\r
-//   Size of data indicated by dataLen\r
-//\r
+///\r
+/// Part 2, section 5.14: TPM_SIGN_INFO\r
+///   Size of data indicated by dataLen\r
+///\r
 typedef struct tdTPM_SIGN_INFO {\r
   TPM_STRUCTURE_TAG                 tag;\r
   UINT8                             fixed[4];\r
@@ -489,18 +652,18 @@ typedef struct tdTPM_SIGN_INFO {
   UINT8                             *data;\r
 } TPM_SIGN_INFO;\r
 \r
-//\r
-// Part 2, section 5.15: TPM_MSA_COMPOSITE\r
-//   Number of migAuthDigest indicated by MSAlist\r
-//\r
+///\r
+/// Part 2, section 5.15: TPM_MSA_COMPOSITE\r
+///   Number of migAuthDigest indicated by MSAlist\r
+///\r
 typedef struct tdTPM_MSA_COMPOSITE {\r
   UINT32                            MSAlist;\r
   TPM_DIGEST                        migAuthDigest[1];\r
 } TPM_MSA_COMPOSITE;\r
 \r
-//\r
-// Part 2, section 5.16: TPM_CMK_AUTH\r
-//\r
+///\r
+/// Part 2, section 5.16: TPM_CMK_AUTH\r
+///\r
 typedef struct tdTPM_CMK_AUTH{\r
   TPM_DIGEST                        migrationAuthorityDigest;\r
   TPM_DIGEST                        destinationKeyDigest;\r
@@ -516,36 +679,36 @@ typedef struct tdTPM_CMK_AUTH{
 #define TPM_CMK_DELEGATE_LEGACY     ((TPM_CMK_DELEGATE) BIT28)\r
 #define TPM_CMK_DELEGATE_MIGRATE    ((TPM_CMK_DELEGATE) BIT27)\r
 \r
-//\r
-// Part 2, section 5.18: TPM_SELECT_SIZE\r
-//\r
+///\r
+/// Part 2, section 5.18: TPM_SELECT_SIZE\r
+///\r
 typedef struct tdTPM_SELECT_SIZE {\r
   UINT8                             major;\r
   UINT8                             minor;\r
   UINT16                            reqSize;\r
 } TPM_SELECT_SIZE;\r
 \r
-//\r
-// Part 2, section 5,19: TPM_CMK_MIGAUTH\r
-//\r
+///\r
+/// Part 2, section 5,19: TPM_CMK_MIGAUTH\r
+///\r
 typedef struct tdTPM_CMK_MIGAUTH{\r
   TPM_STRUCTURE_TAG                 tag;\r
   TPM_DIGEST                        msaDigest;\r
   TPM_DIGEST                        pubKeyDigest;\r
 } TPM_CMK_MIGAUTH;\r
 \r
-//\r
-// Part 2, section 5.20: TPM_CMK_SIGTICKET\r
-//\r
+///\r
+/// Part 2, section 5.20: TPM_CMK_SIGTICKET\r
+///\r
 typedef struct tdTPM_CMK_SIGTICKET{\r
   TPM_STRUCTURE_TAG                 tag;\r
   TPM_DIGEST                        verKeyDigest;\r
   TPM_DIGEST                        signedData;\r
 } TPM_CMK_SIGTICKET;\r
 \r
-//\r
-// Part 2, section 5.21: TPM_CMK_MA_APPROVAL\r
-//\r
+///\r
+/// Part 2, section 5.21: TPM_CMK_MA_APPROVAL\r
+///\r
 typedef struct tdTPM_CMK_MA_APPROVAL{\r
   TPM_STRUCTURE_TAG                 tag;\r
   TPM_DIGEST                        migrationAuthorityDigest;\r
@@ -561,9 +724,9 @@ typedef struct tdTPM_CMK_MA_APPROVAL{
 #define TPM_TAG_RSP_AUTH1_COMMAND   ((TPM_STRUCTURE_TAG) 0x00C5)\r
 #define TPM_TAG_RSP_AUTH2_COMMAND   ((TPM_STRUCTURE_TAG) 0x00C6)\r
 \r
-//\r
-// Part 2, section 7.1: TPM_PERMANENT_FLAGS\r
-//\r
+///\r
+/// Part 2, section 7.1: TPM_PERMANENT_FLAGS\r
+///\r
 typedef struct tdTPM_PERMANENT_FLAGS{\r
   TPM_STRUCTURE_TAG                 tag;\r
   BOOLEAN                           disable;\r
@@ -610,9 +773,9 @@ typedef struct tdTPM_PERMANENT_FLAGS{
 #define TPM_PF_TPMESTABLISHED               ((TPM_CAPABILITY_AREA) 18)\r
 #define TPM_PF_MAINTENANCEDONE              ((TPM_CAPABILITY_AREA) 19)\r
 \r
-//\r
-// Part 2, section 7.2: TPM_STCLEAR_FLAGS\r
-//\r
+///\r
+/// Part 2, section 7.2: TPM_STCLEAR_FLAGS\r
+///\r
 typedef struct tdTPM_STCLEAR_FLAGS{\r
   TPM_STRUCTURE_TAG                 tag;\r
   BOOLEAN                           deactivated;\r
@@ -631,9 +794,9 @@ typedef struct tdTPM_STCLEAR_FLAGS{
 #define TPM_SF_PHYSICALPRESENCELOCK ((TPM_CAPABILITY_AREA) 4)\r
 #define TPM_SF_BGLOBALLOCK          ((TPM_CAPABILITY_AREA) 5)\r
 \r
-//\r
-// Part 2, section 7.3: TPM_STANY_FLAGS\r
-//\r
+///\r
+/// Part 2, section 7.3: TPM_STANY_FLAGS\r
+///\r
 typedef struct tdTPM_STANY_FLAGS{\r
   TPM_STRUCTURE_TAG                 tag;\r
   BOOLEAN                           postInitialise;\r
@@ -659,37 +822,37 @@ typedef struct tdTPM_STANY_FLAGS{
 // Part 2, section 8: PCR Structures\r
 // \r
 \r
-//\r
-// Part 2, section 8.1: TPM_PCR_SELECTION\r
-//   Size of pcrSelect[] indicated by sizeOfSelect\r
-//\r
+///\r
+/// Part 2, section 8.1: TPM_PCR_SELECTION\r
+///   Size of pcrSelect[] indicated by sizeOfSelect\r
+///\r
 typedef struct tdTPM_PCR_SELECTION {\r
   UINT16                            sizeOfSelect;\r
   UINT8                             pcrSelect[1];\r
 } TPM_PCR_SELECTION;\r
 \r
-//\r
-// Part 2, section 8.2: TPM_PCR_COMPOSITE\r
-//   Size of pcrValue[] indicated by valueSize\r
-//\r
+///\r
+/// Part 2, section 8.2: TPM_PCR_COMPOSITE\r
+///   Size of pcrValue[] indicated by valueSize\r
+///\r
 typedef struct tdTPM_PCR_COMPOSITE {\r
   TPM_PCR_SELECTION                 select;\r
   UINT32                            valueSize;\r
   TPM_PCRVALUE                      pcrValue[1];\r
 } TPM_PCR_COMPOSITE;\r
 \r
-//\r
-// Part 2, section 8.3: TPM_PCR_INFO\r
-//\r
+///\r
+/// Part 2, section 8.3: TPM_PCR_INFO\r
+///\r
 typedef struct tdTPM_PCR_INFO {\r
   TPM_PCR_SELECTION                 pcrSelection;\r
   TPM_COMPOSITE_HASH                digestAtRelease;\r
   TPM_COMPOSITE_HASH                digestAtCreation;\r
 } TPM_PCR_INFO;\r
 \r
-//\r
-// Part 2, section 8.6: TPM_LOCALITY_SELECTION\r
-//\r
+///\r
+/// Part 2, section 8.6: TPM_LOCALITY_SELECTION\r
+///\r
 typedef UINT8                       TPM_LOCALITY_SELECTION;\r
 \r
 #define TPM_LOC_FOUR                ((UINT8) 0x10)\r
@@ -698,9 +861,9 @@ typedef UINT8                       TPM_LOCALITY_SELECTION;
 #define TPM_LOC_ONE                 ((UINT8) 0x02)\r
 #define TPM_LOC_ZERO                ((UINT8) 0x01)\r
 \r
-//\r
-// Part 2, section 8.4: TPM_PCR_INFO_LONG\r
-//\r
+///\r
+/// Part 2, section 8.4: TPM_PCR_INFO_LONG\r
+///\r
 typedef struct tdTPM_PCR_INFO_LONG {\r
   TPM_STRUCTURE_TAG                 tag;\r
   TPM_LOCALITY_SELECTION            localityAtCreation;\r
@@ -711,18 +874,18 @@ typedef struct tdTPM_PCR_INFO_LONG {
   TPM_COMPOSITE_HASH                digestAtRelease;\r
 } TPM_PCR_INFO_LONG;\r
 \r
-//\r
-// Part 2, section 8.5: TPM_PCR_INFO_SHORT\r
-//\r
+///\r
+/// Part 2, section 8.5: TPM_PCR_INFO_SHORT\r
+///\r
 typedef struct tdTPM_PCR_INFO_SHORT{\r
   TPM_PCR_SELECTION                 pcrSelection;\r
   TPM_LOCALITY_SELECTION            localityAtRelease;\r
   TPM_COMPOSITE_HASH                digestAtRelease;\r
 } TPM_PCR_INFO_SHORT;\r
 \r
-//\r
-// Part 2, section 8.8: TPM_PCR_ATTRIBUTES\r
-//\r
+///\r
+/// Part 2, section 8.8: TPM_PCR_ATTRIBUTES\r
+///\r
 typedef struct tdTPM_PCR_ATTRIBUTES{\r
   BOOLEAN                           pcrReset;\r
   TPM_LOCALITY_SELECTION            pcrExtendLocal;\r
@@ -733,11 +896,11 @@ typedef struct tdTPM_PCR_ATTRIBUTES{
 // Part 2, section 9: Storage Structures\r
 //\r
 \r
-//\r
-// Part 2, section 9.1: TPM_STORED_DATA\r
-//   [size_is(sealInfoSize)] BYTE* sealInfo;\r
-//   [size_is(encDataSize)] BYTE* encData;\r
-//\r
+///\r
+/// Part 2, section 9.1: TPM_STORED_DATA\r
+///   [size_is(sealInfoSize)] BYTE* sealInfo;\r
+///   [size_is(encDataSize)] BYTE* encData;\r
+///\r
 typedef struct tdTPM_STORED_DATA {\r
   TPM_STRUCT_VER                    ver;\r
   UINT32                            sealInfoSize;\r
@@ -746,11 +909,11 @@ typedef struct tdTPM_STORED_DATA {
   UINT8                             *encData;\r
 } TPM_STORED_DATA;\r
 \r
-//\r
-// Part 2, section 9.2: TPM_STORED_DATA12\r
-//   [size_is(sealInfoSize)] BYTE* sealInfo;\r
-//   [size_is(encDataSize)] BYTE* encData;\r
-//\r
+///\r
+/// Part 2, section 9.2: TPM_STORED_DATA12\r
+///   [size_is(sealInfoSize)] BYTE* sealInfo;\r
+///   [size_is(encDataSize)] BYTE* encData;\r
+///\r
 typedef struct tdTPM_STORED_DATA12 {\r
   TPM_STRUCTURE_TAG                 tag;\r
   TPM_ENTITY_TYPE                   et;\r
@@ -760,10 +923,10 @@ typedef struct tdTPM_STORED_DATA12 {
   UINT8                             *encData;\r
 } TPM_STORED_DATA12;\r
 \r
-//\r
-// Part 2, section 9.3: TPM_SEALED_DATA\r
-//   [size_is(dataSize)] BYTE* data;\r
-//\r
+///\r
+/// Part 2, section 9.3: TPM_SEALED_DATA\r
+///   [size_is(dataSize)] BYTE* data;\r
+///\r
 typedef struct tdTPM_SEALED_DATA {\r
   TPM_PAYLOAD_TYPE                  payload;\r
   TPM_SECRET                        authData;\r
@@ -773,10 +936,10 @@ typedef struct tdTPM_SEALED_DATA {
   UINT8                             *data;\r
 } TPM_SEALED_DATA;\r
 \r
-//\r
-// Part 2, section 9.4: TPM_SYMMETRIC_KEY\r
-//   [size_is(size)] BYTE* data;\r
-//\r
+///\r
+/// Part 2, section 9.4: TPM_SYMMETRIC_KEY\r
+///   [size_is(size)] BYTE* data;\r
+///\r
 typedef struct tdTPM_SYMMETRIC_KEY {\r
   TPM_ALGORITHM_ID                  algId;\r
   TPM_ENC_SCHEME                    encScheme;\r
@@ -784,9 +947,9 @@ typedef struct tdTPM_SYMMETRIC_KEY {
   UINT8                             *data;\r
 } TPM_SYMMETRIC_KEY;\r
 \r
-//\r
-// Part 2, section 9.5: TPM_BOUND_DATA\r
-//\r
+///\r
+/// Part 2, section 9.5: TPM_BOUND_DATA\r
+///\r
 typedef struct tdTPM_BOUND_DATA {\r
   TPM_STRUCT_VER                    ver;\r
   TPM_PAYLOAD_TYPE                  payload;\r
@@ -801,10 +964,10 @@ typedef struct tdTPM_BOUND_DATA {
 // Section 10.1, 10.4, and 10.5 have been defined previously\r
 //\r
 \r
-//\r
-// Part 2, section 10.2: TPM_KEY\r
-//   [size_is(encDataSize)] BYTE* encData;\r
-//\r
+///\r
+/// Part 2, section 10.2: TPM_KEY\r
+///   [size_is(encDataSize)] BYTE* encData;\r
+///\r
 typedef struct tdTPM_KEY{\r
   TPM_STRUCT_VER                    ver;\r
   TPM_KEY_USAGE                     keyUsage;\r
@@ -818,10 +981,10 @@ typedef struct tdTPM_KEY{
   UINT8                             *encData;\r
 } TPM_KEY;\r
 \r
-//\r
-// Part 2, section 10.3: TPM_KEY12\r
-//   [size_is(encDataSize)] BYTE* encData;\r
-//\r
+///\r
+/// Part 2, section 10.3: TPM_KEY12\r
+///   [size_is(encDataSize)] BYTE* encData;\r
+///\r
 typedef struct tdTPM_KEY12{\r
   TPM_STRUCTURE_TAG                 tag;\r
   UINT16                            fill;\r
@@ -836,18 +999,18 @@ typedef struct tdTPM_KEY12{
   UINT8                             *encData;\r
 } TPM_KEY12;\r
 \r
-//\r
-// Part 2, section 10.7: TPM_STORE_PRIVKEY\r
-//   [size_is(keyLength)] BYTE* key;\r
-//\r
+///\r
+/// Part 2, section 10.7: TPM_STORE_PRIVKEY\r
+///   [size_is(keyLength)] BYTE* key;\r
+///\r
 typedef struct tdTPM_STORE_PRIVKEY {\r
   UINT32                            keyLength;\r
   UINT8                             *key;\r
 } TPM_STORE_PRIVKEY;\r
 \r
-//\r
-// Part 2, section 10.6: TPM_STORE_ASYMKEY\r
-//\r
+///\r
+/// Part 2, section 10.6: TPM_STORE_ASYMKEY\r
+///\r
 typedef struct tdTPM_STORE_ASYMKEY {                // pos len total\r
   TPM_PAYLOAD_TYPE                  payload;        // 0    1   1\r
   TPM_SECRET                        usageAuth;      // 1    20  21\r
@@ -856,10 +1019,10 @@ typedef struct tdTPM_STORE_ASYMKEY {                // pos len total
   TPM_STORE_PRIVKEY                 privKey;        // 61 132-151 193-214\r
 } TPM_STORE_ASYMKEY;\r
 \r
-//\r
-// Part 2, section 10.8: TPM_MIGRATE_ASYMKEY\r
-//   [size_is(partPrivKeyLen)] BYTE* partPrivKey;\r
-//\r
+///\r
+/// Part 2, section 10.8: TPM_MIGRATE_ASYMKEY\r
+///   [size_is(partPrivKeyLen)] BYTE* partPrivKey;\r
+///\r
 typedef struct tdTPM_MIGRATE_ASYMKEY {              // pos  len  total\r
   TPM_PAYLOAD_TYPE                  payload;        //   0    1       1\r
   TPM_SECRET                        usageAuth;      //   1   20      21\r
@@ -868,18 +1031,18 @@ typedef struct tdTPM_MIGRATE_ASYMKEY {              // pos  len  total
   UINT8                             *partPrivKey;   //  45 112-127 157-172\r
 } TPM_MIGRATE_ASYMKEY;\r
 \r
-//\r
-// Part 2, section 10.9: TPM_KEY_CONTROL\r
-//\r
+///\r
+/// Part 2, section 10.9: TPM_KEY_CONTROL\r
+///\r
 #define TPM_KEY_CONTROL_OWNER_EVICT ((UINT32) 0x00000001)\r
 \r
 //\r
 // Part 2, section 11: Signed Structures\r
 //\r
 \r
-//\r
-// Part 2, section 11.1: TPM_CERTIFY_INFO Structure\r
-//\r
+///\r
+/// Part 2, section 11.1: TPM_CERTIFY_INFO Structure\r
+///\r
 typedef struct tdTPM_CERTIFY_INFO {\r
   TPM_STRUCT_VER                  version;\r
   TPM_KEY_USAGE                   keyUsage;\r
@@ -893,9 +1056,9 @@ typedef struct tdTPM_CERTIFY_INFO {
   UINT8                           *PCRInfo;\r
 } TPM_CERTIFY_INFO;\r
 \r
-//\r
-// Part 2, section 11.2: TPM_CERTIFY_INFO2 Structure\r
-//\r
+///\r
+/// Part 2, section 11.2: TPM_CERTIFY_INFO2 Structure\r
+///\r
 typedef struct tdTPM_CERTIFY_INFO2 {\r
   TPM_STRUCTURE_TAG               tag;\r
   UINT8                           fill;\r
@@ -913,9 +1076,9 @@ typedef struct tdTPM_CERTIFY_INFO2 {
   UINT8                           *migrationAuthority;\r
 } TPM_CERTIFY_INFO2;\r
 \r
-//\r
-// Part 2, section 11.3 TPM_QUOTE_INFO Structure\r
-//\r
+///\r
+/// Part 2, section 11.3 TPM_QUOTE_INFO Structure\r
+///\r
 typedef struct tdTPM_QUOTE_INFO {\r
   TPM_STRUCT_VER                  version;\r
   UINT8                           fixed[4];\r
@@ -923,9 +1086,9 @@ typedef struct tdTPM_QUOTE_INFO {
   TPM_NONCE                       externalData;\r
 } TPM_QUOTE_INFO;\r
 \r
-//\r
-// Part 2, section 11.4 TPM_QUOTE_INFO2 Structure\r
-//\r
+///\r
+/// Part 2, section 11.4 TPM_QUOTE_INFO2 Structure\r
+///\r
 typedef struct tdTPM_QUOTE_INFO2 {\r
   TPM_STRUCTURE_TAG               tag;\r
   UINT8                           fixed[4];\r
@@ -937,9 +1100,9 @@ typedef struct tdTPM_QUOTE_INFO2 {
 // Part 2, section 12: Identity Structures\r
 //\r
 \r
-//\r
-// Part 2, section 12.1 TPM_EK_BLOB\r
-//\r
+///\r
+/// Part 2, section 12.1 TPM_EK_BLOB\r
+///\r
 typedef struct tdTPM_EK_BLOB {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_EK_TYPE                     ekType;\r
@@ -947,9 +1110,9 @@ typedef struct tdTPM_EK_BLOB {
   UINT8                           *blob;\r
 } TPM_EK_BLOB;\r
 \r
-//\r
-// Part 2, section 12.2 TPM_EK_BLOB_ACTIVATE\r
-//\r
+///\r
+/// Part 2, section 12.2 TPM_EK_BLOB_ACTIVATE\r
+///\r
 typedef struct tdTPM_EK_BLOB_ACTIVATE {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_SYMMETRIC_KEY               sessionKey;\r
@@ -957,18 +1120,18 @@ typedef struct tdTPM_EK_BLOB_ACTIVATE {
   TPM_PCR_INFO_SHORT              pcrInfo;\r
 } TPM_EK_BLOB_ACTIVATE;\r
 \r
-//\r
-// Part 2, section 12.3 TPM_EK_BLOB_AUTH\r
-//\r
+///\r
+/// Part 2, section 12.3 TPM_EK_BLOB_AUTH\r
+///\r
 typedef struct tdTPM_EK_BLOB_AUTH {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_SECRET                      authValue;\r
 } TPM_EK_BLOB_AUTH;\r
 \r
 \r
-//\r
-// Part 2, section 12.5 TPM_IDENTITY_CONTENTS\r
-//\r
+///\r
+/// Part 2, section 12.5 TPM_IDENTITY_CONTENTS\r
+///\r
 typedef struct tdTPM_IDENTITY_CONTENTS {\r
   TPM_STRUCT_VER                  ver;\r
   UINT32                          ordinal;\r
@@ -976,9 +1139,9 @@ typedef struct tdTPM_IDENTITY_CONTENTS {
   TPM_PUBKEY                      identityPubKey;\r
 } TPM_IDENTITY_CONTENTS;\r
 \r
-//\r
-// Part 2, section 12.6 TPM_IDENTITY_REQ\r
-//\r
+///\r
+/// Part 2, section 12.6 TPM_IDENTITY_REQ\r
+///\r
 typedef struct tdTPM_IDENTITY_REQ {\r
   UINT32                          asymSize;\r
   UINT32                          symSize;\r
@@ -988,9 +1151,9 @@ typedef struct tdTPM_IDENTITY_REQ {
   UINT8                           *symBlob;\r
 } TPM_IDENTITY_REQ;\r
 \r
-//\r
-// Part 2, section 12.7 TPM_IDENTITY_PROOF\r
-//\r
+///\r
+/// Part 2, section 12.7 TPM_IDENTITY_PROOF\r
+///\r
 typedef struct tdTPM_IDENTITY_PROOF {\r
   TPM_STRUCT_VER                  ver;\r
   UINT32                          labelSize;\r
@@ -1006,27 +1169,27 @@ typedef struct tdTPM_IDENTITY_PROOF {
   UINT8                           *conformanceCredential;\r
 } TPM_IDENTITY_PROOF;\r
 \r
-//\r
-// Part 2, section 12.8 TPM_ASYM_CA_CONTENTS\r
-//\r
+///\r
+/// Part 2, section 12.8 TPM_ASYM_CA_CONTENTS\r
+///\r
 typedef struct tdTPM_ASYM_CA_CONTENTS {\r
   TPM_SYMMETRIC_KEY               sessionKey;\r
   TPM_DIGEST                      idDigest;\r
 } TPM_ASYM_CA_CONTENTS;\r
 \r
-//\r
-// Part 2, section 12.9 TPM_SYM_CA_ATTESTATION\r
-//\r
+///\r
+/// Part 2, section 12.9 TPM_SYM_CA_ATTESTATION\r
+///\r
 typedef struct tdTPM_SYM_CA_ATTESTATION {\r
   UINT32                          credSize;\r
   TPM_KEY_PARMS                   algorithm;\r
   UINT8                           *credential;\r
 } TPM_SYM_CA_ATTESTATION;\r
 \r
-//\r
-// Part 2, section 15: Tick Structures\r
-//   Placed here out of order because definitions are used in section 13.\r
-//\r
+///\r
+/// Part 2, section 15: Tick Structures\r
+///   Placed here out of order because definitions are used in section 13.\r
+///\r
 typedef struct tdTPM_CURRENT_TICKS {\r
   TPM_STRUCTURE_TAG                 tag;\r
   UINT64                            currentTicks;\r
@@ -1034,13 +1197,13 @@ typedef struct tdTPM_CURRENT_TICKS {
   TPM_NONCE                         tickNonce;\r
 } TPM_CURRENT_TICKS;\r
 \r
-//\r
-// Part 2, section 13: Transport structures\r
-//\r
+///\r
+/// Part 2, section 13: Transport structures\r
+///\r
 \r
-//\r
-// Part 2, section 13.1: TPM _TRANSPORT_PUBLIC\r
-//\r
+///\r
+/// Part 2, section 13.1: TPM _TRANSPORT_PUBLIC\r
+///\r
 typedef struct tdTPM_TRANSPORT_PUBLIC {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_TRANSPORT_ATTRIBUTES        transAttributes;\r
@@ -1051,13 +1214,13 @@ typedef struct tdTPM_TRANSPORT_PUBLIC {
 //\r
 // Part 2, section 13.1.1 TPM_TRANSPORT_ATTRIBUTES Definitions\r
 //\r
-#define TPM_TRANSPORT_ENCRYPT       ((UINT32)0x00000001)\r
-#define TPM_TRANSPORT_LOG           ((UINT32)0x00000002)\r
-#define TPM_TRANSPORT_EXCLUSIVE     ((UINT32)0x00000004)\r
+#define TPM_TRANSPORT_ENCRYPT       ((UINT32)BIT0)\r
+#define TPM_TRANSPORT_LOG           ((UINT32)BIT1)\r
+#define TPM_TRANSPORT_EXCLUSIVE     ((UINT32)BIT2)\r
 \r
-//\r
-// Part 2, section 13.2 TPM_TRANSPORT_INTERNAL\r
-//\r
+///\r
+/// Part 2, section 13.2 TPM_TRANSPORT_INTERNAL\r
+///\r
 typedef struct tdTPM_TRANSPORT_INTERNAL {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_AUTHDATA                    authData;\r
@@ -1067,18 +1230,18 @@ typedef struct tdTPM_TRANSPORT_INTERNAL {
   TPM_DIGEST                      transDigest;\r
 } TPM_TRANSPORT_INTERNAL;\r
 \r
-//\r
-// Part 2, section 13.3 TPM_TRANSPORT_LOG_IN structure\r
-//\r
+///\r
+/// Part 2, section 13.3 TPM_TRANSPORT_LOG_IN structure\r
+///\r
 typedef struct tdTPM_TRANSPORT_LOG_IN {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DIGEST                      parameters;\r
   TPM_DIGEST                      pubKeyHash;\r
 } TPM_TRANSPORT_LOG_IN;\r
 \r
-//\r
-// Part 2, section 13.4 TPM_TRANSPORT_LOG_OUT structure\r
-//\r
+///\r
+/// Part 2, section 13.4 TPM_TRANSPORT_LOG_OUT structure\r
+///\r
 typedef struct tdTPM_TRANSPORT_LOG_OUT {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_CURRENT_TICKS               currentTicks;\r
@@ -1086,9 +1249,9 @@ typedef struct tdTPM_TRANSPORT_LOG_OUT {
   TPM_MODIFIER_INDICATOR          locality;\r
 } TPM_TRANSPORT_LOG_OUT;\r
 \r
-//\r
-// Part 2, section 13.5 TPM_TRANSPORT_AUTH structure\r
-//\r
+///\r
+/// Part 2, section 13.5 TPM_TRANSPORT_AUTH structure\r
+///\r
 typedef struct tdTPM_TRANSPORT_AUTH {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_AUTHDATA                    authData;\r
@@ -1098,18 +1261,18 @@ typedef struct tdTPM_TRANSPORT_AUTH {
 // Part 2, section 14: Audit Structures\r
 //\r
 \r
-//\r
-// Part 2, section 14.1 TPM_AUDIT_EVENT_IN structure\r
-//\r
+///\r
+/// Part 2, section 14.1 TPM_AUDIT_EVENT_IN structure\r
+///\r
 typedef struct tdTPM_AUDIT_EVENT_IN {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DIGEST                      inputParms;\r
   TPM_COUNTER_VALUE               auditCount;\r
 } TPM_AUDIT_EVENT_IN;\r
 \r
-//\r
-// Part 2, section 14.2 TPM_AUDIT_EVENT_OUT structure\r
-//\r
+///\r
+/// Part 2, section 14.2 TPM_AUDIT_EVENT_OUT structure\r
+///\r
 typedef struct tdTPM_AUDIT_EVENT_OUT {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_COMMAND_CODE                ordinal;\r
@@ -1121,9 +1284,6 @@ typedef struct tdTPM_AUDIT_EVENT_OUT {
 //\r
 // Part 2, section 16: Return Codes\r
 //\r
-#ifndef TPM_BASE\r
-#error "TPM Error Codes require definition of TPM_BASE"\r
-#endif\r
 \r
 #define TPM_VENDOR_ERROR            TPM_Vendor_Specific32\r
 #define TPM_NON_FATAL               0x00000800\r
@@ -1391,9 +1551,9 @@ typedef struct tdTPM_AUDIT_EVENT_OUT {
 // Part 2, section 18: Context structures\r
 //\r
 \r
-//\r
-// Part 2, section 18.1: TPM_CONTEXT_BLOB\r
-//\r
+///\r
+/// Part 2, section 18.1: TPM_CONTEXT_BLOB\r
+///\r
 typedef struct tdTPM_CONTEXT_BLOB {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_RESOURCE_TYPE               resourceType;\r
@@ -1407,9 +1567,9 @@ typedef struct tdTPM_CONTEXT_BLOB {
   UINT8                           *sensitiveData;\r
 } TPM_CONTEXT_BLOB;\r
 \r
-//\r
-// Part 2, section 18.2 TPM_CONTEXT_SENSITIVE\r
-//\r
+///\r
+/// Part 2, section 18.2 TPM_CONTEXT_SENSITIVE\r
+///\r
 typedef struct tdTPM_CONTEXT_SENSITIVE {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_NONCE                       contextNonce;\r
@@ -1441,15 +1601,20 @@ typedef struct tdTPM_CONTEXT_SENSITIVE {
 #define TPM_NV_INDEX_PERIPHERAL_BASE   ((UINT32)0x00011500)\r
 #define TPM_NV_INDEX_GROUP_RESV_BASE   ((UINT32)0x00010000)\r
 \r
-//\r
-// The typedefs TPM_NV_PER_ATTRIBUTES (not present in TPM 1.2 Spec. have been added \r
-// and structure fields that were to hold the following values\r
-//\r
+///\r
+/// The typedefs TPM_NV_PER_ATTRIBUTES (not present in TPM 1.2 Spec. have been added \r
+/// and structure fields that were to hold the following values\r
+///\r
 typedef UINT32 TPM_NV_PER_ATTRIBUTES;\r
 \r
-//\r
-// Part 2, section 19.2: TPM_NV_ATTRIBUTES\r
-//\r
+///\r
+/// Part 2, section 19.2: TPM_NV_ATTRIBUTES\r
+///\r
+typedef struct tdTPM_NV_ATTRIBUTES {\r
+  TPM_STRUCTURE_TAG               tag;\r
+  TPM_NV_PER_ATTRIBUTES           attributes;\r
+} TPM_NV_ATTRIBUTES;\r
+\r
 #define TPM_NV_PER_READ_STCLEAR        (BIT31)\r
 #define TPM_NV_PER_AUTHREAD            (BIT18)\r
 #define TPM_NV_PER_OWNERREAD           (BIT17)\r
@@ -1462,14 +1627,9 @@ typedef UINT32 TPM_NV_PER_ATTRIBUTES;
 #define TPM_NV_PER_OWNERWRITE          (BIT1)\r
 #define TPM_NV_PER_PPWRITE             (BIT0)\r
 \r
-typedef struct tdTPM_NV_ATTRIBUTES {\r
-  TPM_STRUCTURE_TAG               tag;\r
-  TPM_NV_PER_ATTRIBUTES           attributes;\r
-} TPM_NV_ATTRIBUTES;\r
-\r
-//\r
-// Part 2, section 19.3: TPM_NV_DATA_PUBLIC\r
-//\r
+///\r
+/// Part 2, section 19.3: TPM_NV_DATA_PUBLIC\r
+///\r
 typedef struct tdTPM_NV_DATA_PUBLIC {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_NV_INDEX                    nvIndex;\r
@@ -1486,12 +1646,11 @@ typedef struct tdTPM_NV_DATA_PUBLIC {
 // Part 2, section 20: Delegate Structures\r
 //\r
 \r
-//\r
-// Part 2, section 20.2: Delegate Definitions\r
-//\r
 #define TPM_DEL_OWNER_BITS          ((UINT32)0x00000001)\r
 #define TPM_DEL_KEY_BITS            ((UINT32)0x00000002)\r
-\r
+///\r
+/// Part 2, section 20.2: Delegate Definitions\r
+///\r
 typedef struct tdTPM_DELEGATIONS {\r
   TPM_STRUCTURE_TAG               tag;\r
   UINT32                          delegateType;\r
@@ -1570,16 +1729,16 @@ typedef struct tdTPM_DELEGATIONS {
 #define TPM_DELEGATE_ADMIN_LOCK           (BIT1)\r
 #define TPM_FAMFLAG_ENABLE                (BIT0)\r
 \r
-//\r
-// Part 2, section 20.4: TPM_FAMILY_LABEL\r
-//\r
+///\r
+/// Part 2, section 20.4: TPM_FAMILY_LABEL\r
+///\r
 typedef struct tdTPM_FAMILY_LABEL {\r
   UINT8                           label;\r
 } TPM_FAMILY_LABEL;\r
 \r
-//\r
-// Part 2, section 20.5: TPM_FAMILY_TABLE_ENTRY\r
-//\r
+///\r
+/// Part 2, section 20.5: TPM_FAMILY_TABLE_ENTRY\r
+///\r
 typedef struct tdTPM_FAMILY_TABLE_ENTRY {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_FAMILY_LABEL                label;\r
@@ -1597,16 +1756,16 @@ typedef struct tdTPM_FAMILY_TABLE{
   TPM_FAMILY_TABLE_ENTRY famTableRow[TPM_NUM_FAMILY_TABLE_ENTRY_MIN];\r
 } TPM_FAMILY_TABLE;\r
 \r
-//\r
-// Part 2, section 20.7: TPM_DELEGATE_LABEL\r
-//\r
+///\r
+/// Part 2, section 20.7: TPM_DELEGATE_LABEL\r
+///\r
 typedef struct tdTPM_DELEGATE_LABEL {\r
   UINT8                           label;\r
 } TPM_DELEGATE_LABEL;\r
 \r
-//\r
-// Part 2, section 20.8: TPM_DELEGATE_PUBLIC\r
-//\r
+///\r
+/// Part 2, section 20.8: TPM_DELEGATE_PUBLIC\r
+///\r
 typedef struct tdTPM_DELEGATE_PUBLIC {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DELEGATE_LABEL              label;\r
@@ -1616,9 +1775,9 @@ typedef struct tdTPM_DELEGATE_PUBLIC {
   TPM_FAMILY_VERIFICATION         verificationCount;\r
 } TPM_DELEGATE_PUBLIC;\r
 \r
-//\r
-// Part 2, section 20.9: TPM_DELEGATE_TABLE_ROW\r
-//\r
+///\r
+/// Part 2, section 20.9: TPM_DELEGATE_TABLE_ROW\r
+///\r
 typedef struct tdTPM_DELEGATE_TABLE_ROW {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DELEGATE_PUBLIC             pub;\r
@@ -1634,17 +1793,17 @@ typedef struct tdTPM_DELEGATE_TABLE{
   TPM_DELEGATE_TABLE_ROW delRow[TPM_NUM_DELEGATE_TABLE_ENTRY_MIN];\r
 } TPM_DELEGATE_TABLE;\r
 \r
-//\r
-// Part 2, section 20.11: TPM_DELEGATE_SENSITIVE\r
-//\r
+///\r
+/// Part 2, section 20.11: TPM_DELEGATE_SENSITIVE\r
+///\r
 typedef struct tdTPM_DELEGATE_SENSITIVE {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_SECRET                      authValue;\r
 } TPM_DELEGATE_SENSITIVE;\r
 \r
-//\r
-// Part 2, section 20.12: TPM_DELEGATE_OWNER_BLOB\r
-//\r
+///\r
+/// Part 2, section 20.12: TPM_DELEGATE_OWNER_BLOB\r
+///\r
 typedef struct tdTPM_DELEGATE_OWNER_BLOB {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DELEGATE_PUBLIC             pub;\r
@@ -1655,9 +1814,9 @@ typedef struct tdTPM_DELEGATE_OWNER_BLOB {
   UINT8                           *sensitiveArea;\r
 } TPM_DELEGATE_OWNER_BLOB;\r
 \r
-//\r
-// Part 2, section 20.13: TTPM_DELEGATE_KEY_BLOB\r
-//\r
+///\r
+/// Part 2, section 20.13: TTPM_DELEGATE_KEY_BLOB\r
+///\r
 typedef struct tdTPM_DELEGATE_KEY_BLOB {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DELEGATE_PUBLIC             pub;\r
@@ -1737,10 +1896,10 @@ typedef struct tdTPM_DELEGATE_KEY_BLOB {
 #define TPM_CAP_PROP_MAX_NV_AVAILABLE   ((TPM_CAPABILITY_AREA) 0x00000123)\r
 #define TPM_CAP_PROP_INPUT_BUFFER       ((TPM_CAPABILITY_AREA) 0x00000124)\r
 \r
-//\r
-// Part 2, section 21.6: TPM_CAP_VERSION_INFO\r
-//   [size_is(vendorSpecificSize)] BYTE* vendorSpecific;\r
-//\r
+///\r
+/// Part 2, section 21.6: TPM_CAP_VERSION_INFO\r
+///   [size_is(vendorSpecificSize)] BYTE* vendorSpecific;\r
+///\r
 typedef struct tdTPM_CAP_VERSION_INFO {\r
   TPM_STRUCTURE_TAG                 tag;\r
   TPM_VERSION                       version;\r
@@ -1775,9 +1934,9 @@ typedef struct tdTPM_CAP_VERSION_INFO {
 #define TPM_DAA_power0                 (104)\r
 #define TPM_DAA_power1                 (1024)\r
 \r
-//\r
-// Part 2, section 22.3: TPM_DAA_ISSUER\r
-//\r
+///\r
+/// Part 2, section 22.3: TPM_DAA_ISSUER\r
+///\r
 typedef struct tdTPM_DAA_ISSUER {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DIGEST                      DAA_digest_R0;\r
@@ -1789,9 +1948,9 @@ typedef struct tdTPM_DAA_ISSUER {
   UINT8                           DAA_generic_q[26];\r
 } TPM_DAA_ISSUER;\r
 \r
-//\r
-// Part 2, section 22.4: TPM_DAA_TPM\r
-//\r
+///\r
+/// Part 2, section 22.4: TPM_DAA_TPM\r
+///\r
 typedef struct tdTPM_DAA_TPM {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DIGEST                      DAA_digestIssuer;\r
@@ -1801,9 +1960,9 @@ typedef struct tdTPM_DAA_TPM {
   UINT32                          DAA_count;\r
 } TPM_DAA_TPM;\r
 \r
-//\r
-// Part 2, section 22.5: TPM_DAA_CONTEXT\r
-//\r
+///\r
+/// Part 2, section 22.5: TPM_DAA_CONTEXT\r
+///\r
 typedef struct tdTPM_DAA_CONTEXT {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_DIGEST                      DAA_digestContext;\r
@@ -1813,18 +1972,18 @@ typedef struct tdTPM_DAA_CONTEXT {
   UINT8                           DAA_stage;\r
 } TPM_DAA_CONTEXT;\r
 \r
-//\r
-// Part 2, section 22.6: TPM_DAA_JOINDATA\r
-//\r
+///\r
+/// Part 2, section 22.6: TPM_DAA_JOINDATA\r
+///\r
 typedef struct tdTPM_DAA_JOINDATA {\r
   UINT8                           DAA_join_u0[128];\r
   UINT8                           DAA_join_u1[138];\r
   TPM_DIGEST                      DAA_digest_n0;\r
 } TPM_DAA_JOINDATA;\r
 \r
-//\r
-// Part 2, section 22.8: TPM_DAA_BLOB\r
-//\r
+///\r
+/// Part 2, section 22.8: TPM_DAA_BLOB\r
+///\r
 typedef struct tdTPM_DAA_BLOB {\r
   TPM_STRUCTURE_TAG               tag;\r
   TPM_RESOURCE_TYPE               resourceType;\r
@@ -1836,9 +1995,9 @@ typedef struct tdTPM_DAA_BLOB {
   UINT8                           *sensitiveData;\r
 } TPM_DAA_BLOB;\r
 \r
-//\r
-// Part 2, section 22.9: TPM_DAA_SENSITIVE\r
-//\r
+///\r
+/// Part 2, section 22.9: TPM_DAA_SENSITIVE\r
+///\r
 typedef struct tdTPM_DAA_SENSITIVE {\r
   TPM_STRUCTURE_TAG               tag;\r
   UINT32                          internalSize;\r
@@ -1850,24 +2009,27 @@ typedef struct tdTPM_DAA_SENSITIVE {
 // Part 2, section 23: Redirection\r
 //\r
 \r
-//\r
-// Part 2 section 23.1: TPM_REDIR_COMMAND\r
-// This section defines exactly one value but does not\r
-// give it a name. The definition of TPM_SetRedirection in Part3\r
-// refers to exactly one name but does not give its value. We join\r
-// them here.\r
-//\r
+///\r
+/// Part 2 section 23.1: TPM_REDIR_COMMAND\r
+/// This section defines exactly one value but does not\r
+/// give it a name. The definition of TPM_SetRedirection in Part3\r
+/// refers to exactly one name but does not give its value. We join\r
+/// them here.\r
+///\r
 #define TPM_REDIR_GPIO              (0x00000001)\r
 \r
-//\r
-// TPM Command & Response Headers defined in Part 3\r
-//\r
+///\r
+/// TPM Command Headers defined in Part 3\r
+///\r
 typedef struct tdTPM_RQU_COMMAND_HDR {\r
   TPM_STRUCTURE_TAG                 tag;\r
   UINT32                            paramSize;\r
   TPM_COMMAND_CODE                  ordinal;\r
 } TPM_RQU_COMMAND_HDR;\r
 \r
+///\r
+/// TPM Response Headers defined in Part 3\r
+///\r
 typedef struct tdTPM_RSP_COMMAND_HDR {\r
   TPM_STRUCTURE_TAG                 tag;\r
   UINT32                            paramSize;\r