1 /* Microsoft Reference Implementation for TPM 2.0 2 * 3 * The copyright in this software is being made available under the BSD License, 4 * included below. This software may be subject to other third party and 5 * contributor rights, including patent rights, and no such rights are granted 6 * under this license. 7 * 8 * Copyright (c) Microsoft Corporation 9 * 10 * All rights reserved. 11 * 12 * BSD License 13 * 14 * Redistribution and use in source and binary forms, with or without modification, 15 * are permitted provided that the following conditions are met: 16 * 17 * Redistributions of source code must retain the above copyright notice, this list 18 * of conditions and the following disclaimer. 19 * 20 * Redistributions in binary form must reproduce the above copyright notice, this 21 * list of conditions and the following disclaimer in the documentation and/or 22 * other materials provided with the distribution. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ""AS IS"" 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 28 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 29 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 31 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 33 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 */ 35 /*(Auto-generated) 36 * Created by NewMarshal; Version 1.4 Apr 7, 2019 37 * Date: Mar 6, 2020 Time: 01:50:10PM 38 */ 39 40 // This file contains the data initializer used for the table-driven marshaling code. 41 42 #include "Tpm.h" 43 44 45 #if TABLE_DRIVEN_MARSHAL 46 #include "TableMarshal.h" 47 #include "Marshal.h" 48 49 // The array marshaling table 50 ArrayMarshal_mst ArrayLookupTable[] = { 51 ARRAY_MARSHAL_ENTRY(UINT8), 52 ARRAY_MARSHAL_ENTRY(TPM_CC), 53 ARRAY_MARSHAL_ENTRY(TPMA_CC), 54 ARRAY_MARSHAL_ENTRY(TPM_ALG_ID), 55 ARRAY_MARSHAL_ENTRY(TPM_HANDLE), 56 ARRAY_MARSHAL_ENTRY(TPM2B_DIGEST), 57 ARRAY_MARSHAL_ENTRY(TPMT_HA), 58 ARRAY_MARSHAL_ENTRY(TPMS_PCR_SELECTION), 59 ARRAY_MARSHAL_ENTRY(TPMS_ALG_PROPERTY), 60 ARRAY_MARSHAL_ENTRY(TPMS_TAGGED_PROPERTY), 61 ARRAY_MARSHAL_ENTRY(TPMS_TAGGED_PCR_SELECT), 62 ARRAY_MARSHAL_ENTRY(TPM_ECC_CURVE), 63 ARRAY_MARSHAL_ENTRY(TPMS_TAGGED_POLICY), 64 ARRAY_MARSHAL_ENTRY(TPMS_ACT_DATA), 65 ARRAY_MARSHAL_ENTRY(TPMS_AC_OUTPUT)}; 66 67 // The main marshaling structure 68 MarshalData_st MarshalData = { 69 // UINT8_DATA 70 {UINT_MTYPE, 0}, 71 // UINT16_DATA 72 {UINT_MTYPE, 1}, 73 // UINT32_DATA 74 {UINT_MTYPE, 2}, 75 // UINT64_DATA 76 {UINT_MTYPE, 3}, 77 // INT8_DATA 78 {UINT_MTYPE, 0 + IS_SIGNED}, 79 // INT16_DATA 80 {UINT_MTYPE, 1 + IS_SIGNED}, 81 // INT32_DATA 82 {UINT_MTYPE, 2 + IS_SIGNED}, 83 // INT64_DATA 84 {UINT_MTYPE, 3 + IS_SIGNED}, 85 // UINT0_DATA 86 {NULL_MTYPE, 0}, 87 // TPM_ECC_CURVE_DATA 88 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_CURVE, 89 {TPM_ECC_NONE, 90 RANGE(1, 32, UINT16), 91 (UINT32)((ECC_NIST_P192 << 0) | (ECC_NIST_P224 << 1) | (ECC_NIST_P256 << 2) | 92 (ECC_NIST_P384 << 3) | (ECC_NIST_P521 << 4) | (ECC_BN_P256 << 15) | 93 (ECC_BN_P638 << 16) | (ECC_SM2_P256 << 31))}}, 94 // TPM_CLOCK_ADJUST_DATA 95 {MIN_MAX_MTYPE, ONE_BYTES|IS_SIGNED, (UINT8)TPM_RC_VALUE, 96 {RANGE(TPM_CLOCK_COARSE_SLOWER, TPM_CLOCK_COARSE_FASTER, INT8)}}, 97 // TPM_EO_DATA 98 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_VALUE, 99 {RANGE(TPM_EO_EQ, TPM_EO_BITCLEAR, UINT16)}}, 100 // TPM_SU_DATA 101 {TABLE_MTYPE, TWO_BYTES, (UINT8)TPM_RC_VALUE, 2, 102 {TPM_SU_CLEAR, TPM_SU_STATE}}, 103 // TPM_SE_DATA 104 {TABLE_MTYPE, ONE_BYTES, (UINT8)TPM_RC_VALUE, 3, 105 {TPM_SE_HMAC, TPM_SE_POLICY, TPM_SE_TRIAL}}, 106 // TPM_CAP_DATA 107 {VALUES_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 1, 1, 108 {RANGE(TPM_CAP_ALGS, TPM_CAP_ACT, UINT32), 109 TPM_CAP_VENDOR_PROPERTY}}, 110 // TPMA_ALGORITHM_DATA 111 {ATTRIBUTES_MTYPE, FOUR_BYTES, 0xFFFFF8F0}, 112 // TPMA_OBJECT_DATA 113 {ATTRIBUTES_MTYPE, FOUR_BYTES, 0xFFF0F309}, 114 // TPMA_SESSION_DATA 115 {ATTRIBUTES_MTYPE, ONE_BYTES, 0x00000018}, 116 // TPMA_ACT_DATA 117 {ATTRIBUTES_MTYPE, FOUR_BYTES, 0xFFFFFFFC}, 118 // TPMI_YES_NO_DATA 119 {TABLE_MTYPE, ONE_BYTES, (UINT8)TPM_RC_VALUE, 2, 120 {NO, YES}}, 121 // TPMI_DH_OBJECT_DATA 122 {VALUES_MTYPE, FOUR_BYTES|TAKES_NULL, (UINT8)TPM_RC_VALUE, 2, 0, 123 {TPM_RH_NULL, 124 RANGE(TRANSIENT_FIRST, TRANSIENT_LAST, UINT32), 125 RANGE(PERSISTENT_FIRST, PERSISTENT_LAST, UINT32)}}, 126 // TPMI_DH_PARENT_DATA 127 {VALUES_MTYPE, FOUR_BYTES|TAKES_NULL, (UINT8)TPM_RC_VALUE, 2, 3, 128 {TPM_RH_NULL, 129 RANGE(TRANSIENT_FIRST, TRANSIENT_LAST, UINT32), 130 RANGE(PERSISTENT_FIRST, PERSISTENT_LAST, UINT32), 131 TPM_RH_OWNER, TPM_RH_ENDORSEMENT, TPM_RH_PLATFORM}}, 132 // TPMI_DH_PERSISTENT_DATA 133 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 134 {RANGE(PERSISTENT_FIRST, PERSISTENT_LAST, UINT32)}}, 135 // TPMI_DH_ENTITY_DATA 136 {VALUES_MTYPE, FOUR_BYTES|TAKES_NULL, (UINT8)TPM_RC_VALUE, 5, 4, 137 {TPM_RH_NULL, 138 RANGE(TRANSIENT_FIRST, TRANSIENT_LAST, UINT32), 139 RANGE(PERSISTENT_FIRST, PERSISTENT_LAST, UINT32), 140 RANGE(NV_INDEX_FIRST, NV_INDEX_LAST, UINT32), 141 RANGE(PCR_FIRST, PCR_LAST, UINT32), 142 RANGE(TPM_RH_AUTH_00, TPM_RH_AUTH_FF, UINT32), 143 TPM_RH_OWNER, TPM_RH_LOCKOUT, TPM_RH_ENDORSEMENT, TPM_RH_PLATFORM}}, 144 // TPMI_DH_PCR_DATA 145 {MIN_MAX_MTYPE, FOUR_BYTES|TAKES_NULL, (UINT8)TPM_RC_VALUE, 146 {TPM_RH_NULL, 147 RANGE(PCR_FIRST, PCR_LAST, UINT32)}}, 148 // TPMI_SH_AUTH_SESSION_DATA 149 {VALUES_MTYPE, FOUR_BYTES|TAKES_NULL, (UINT8)TPM_RC_VALUE, 2, 0, 150 {TPM_RS_PW, 151 RANGE(HMAC_SESSION_FIRST, HMAC_SESSION_LAST, UINT32), 152 RANGE(POLICY_SESSION_FIRST, POLICY_SESSION_LAST, UINT32)}}, 153 // TPMI_SH_HMAC_DATA 154 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 155 {RANGE(HMAC_SESSION_FIRST, HMAC_SESSION_LAST, UINT32)}}, 156 // TPMI_SH_POLICY_DATA 157 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 158 {RANGE(POLICY_SESSION_FIRST, POLICY_SESSION_LAST, UINT32)}}, 159 // TPMI_DH_CONTEXT_DATA 160 {VALUES_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 3, 0, 161 {RANGE(HMAC_SESSION_FIRST, HMAC_SESSION_LAST, UINT32), 162 RANGE(POLICY_SESSION_FIRST, POLICY_SESSION_LAST, UINT32), 163 RANGE(TRANSIENT_FIRST, TRANSIENT_LAST, UINT32)}}, 164 // TPMI_DH_SAVED_DATA 165 {VALUES_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 2, 3, 166 {RANGE(HMAC_SESSION_FIRST, HMAC_SESSION_LAST, UINT32), 167 RANGE(POLICY_SESSION_FIRST, POLICY_SESSION_LAST, UINT32), 168 0x80000000, 0x80000001, 0x80000002}}, 169 // TPMI_RH_HIERARCHY_DATA 170 {TABLE_MTYPE, FOUR_BYTES|TAKES_NULL, (UINT8)TPM_RC_VALUE, 3, 171 {TPM_RH_NULL, 172 TPM_RH_OWNER, TPM_RH_ENDORSEMENT, TPM_RH_PLATFORM}}, 173 // TPMI_RH_ENABLES_DATA 174 {TABLE_MTYPE, FOUR_BYTES|TAKES_NULL, (UINT8)TPM_RC_VALUE, 4, 175 {TPM_RH_NULL, 176 TPM_RH_OWNER, TPM_RH_ENDORSEMENT, TPM_RH_PLATFORM, TPM_RH_PLATFORM_NV}}, 177 // TPMI_RH_HIERARCHY_AUTH_DATA 178 {TABLE_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 4, 179 {TPM_RH_OWNER, TPM_RH_LOCKOUT, TPM_RH_ENDORSEMENT, TPM_RH_PLATFORM}}, 180 // TPMI_RH_HIERARCHY_POLICY_DATA 181 {VALUES_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 1, 4, 182 {RANGE(TPM_RH_ACT_0, TPM_RH_ACT_F, UINT32), 183 TPM_RH_OWNER, TPM_RH_LOCKOUT, TPM_RH_ENDORSEMENT, TPM_RH_PLATFORM}}, 184 // TPMI_RH_PLATFORM_DATA 185 {TABLE_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 1, 186 {TPM_RH_PLATFORM}}, 187 // TPMI_RH_OWNER_DATA 188 {TABLE_MTYPE, FOUR_BYTES|TAKES_NULL, (UINT8)TPM_RC_VALUE, 1, 189 {TPM_RH_NULL, 190 TPM_RH_OWNER}}, 191 // TPMI_RH_ENDORSEMENT_DATA 192 {TABLE_MTYPE, FOUR_BYTES|TAKES_NULL, (UINT8)TPM_RC_VALUE, 1, 193 {TPM_RH_NULL, 194 TPM_RH_ENDORSEMENT}}, 195 // TPMI_RH_PROVISION_DATA 196 {TABLE_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 2, 197 {TPM_RH_OWNER, TPM_RH_PLATFORM}}, 198 // TPMI_RH_CLEAR_DATA 199 {TABLE_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 2, 200 {TPM_RH_LOCKOUT, TPM_RH_PLATFORM}}, 201 // TPMI_RH_NV_AUTH_DATA 202 {VALUES_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 1, 2, 203 {RANGE(NV_INDEX_FIRST, NV_INDEX_LAST, UINT32), 204 TPM_RH_OWNER, TPM_RH_PLATFORM}}, 205 // TPMI_RH_LOCKOUT_DATA 206 {TABLE_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 1, 207 {TPM_RH_LOCKOUT}}, 208 // TPMI_RH_NV_INDEX_DATA 209 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 210 {RANGE(NV_INDEX_FIRST, NV_INDEX_LAST, UINT32)}}, 211 // TPMI_RH_AC_DATA 212 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 213 {RANGE(AC_FIRST, AC_LAST, UINT32)}}, 214 // TPMI_RH_ACT_DATA 215 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 216 {RANGE(TPM_RH_ACT_0, TPM_RH_ACT_F, UINT32)}}, 217 // TPMI_ALG_HASH_DATA 218 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_HASH, 219 {TPM_ALG_NULL, 220 RANGE(4, 41, UINT16), 221 (UINT32)((ALG_SHA1 << 0) | (ALG_SHA256 << 7) | (ALG_SHA384 << 8) | 222 (ALG_SHA512 << 9) | (ALG_SM3_256 << 14)), 223 (UINT32)((ALG_SHA3_256 << 3)|(ALG_SHA3_384 << 4)|(ALG_SHA3_512 << 5))}}, 224 // TPMI_ALG_ASYM_DATA 225 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_ASYMMETRIC, 226 {TPM_ALG_NULL, 227 RANGE(1, 35, UINT16), 228 (UINT32)((ALG_RSA << 0)), 229 (UINT32)((ALG_ECC << 2))}}, 230 // TPMI_ALG_SYM_DATA 231 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_SYMMETRIC, 232 {TPM_ALG_NULL, 233 RANGE(3, 38, UINT16), 234 (UINT32)((ALG_TDES << 0)|(ALG_AES << 3)|(ALG_XOR << 7)|(ALG_SM4 << 16)), 235 (UINT32)((ALG_CAMELLIA << 3))}}, 236 // TPMI_ALG_SYM_OBJECT_DATA 237 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_SYMMETRIC, 238 {TPM_ALG_NULL, 239 RANGE(3, 38, UINT16), 240 (UINT32)((ALG_TDES << 0)|(ALG_AES << 3)|(ALG_SM4 << 16)), 241 (UINT32)((ALG_CAMELLIA << 3))}}, 242 // TPMI_ALG_SYM_MODE_DATA 243 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_MODE, 244 {TPM_ALG_NULL, 245 RANGE(63, 68, UINT16), 246 (UINT32)((ALG_CMAC << 0) | (ALG_CTR << 1) | (ALG_OFB << 2) | 247 (ALG_CBC << 3) | (ALG_CFB << 4) | (ALG_ECB << 5))}}, 248 // TPMI_ALG_KDF_DATA 249 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_KDF, 250 {TPM_ALG_NULL, 251 RANGE(7, 34, UINT16), 252 (UINT32)((ALG_MGF1 << 0) | (ALG_KDF1_SP800_56A << 25) | 253 (ALG_KDF2 << 26) | (ALG_KDF1_SP800_108 << 27))}}, 254 // TPMI_ALG_SIG_SCHEME_DATA 255 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_SCHEME, 256 {TPM_ALG_NULL, 257 RANGE(5, 28, UINT16), 258 (UINT32)((ALG_HMAC << 0) | (ALG_RSASSA << 15) | (ALG_RSAPSS << 17) | 259 (ALG_ECDSA << 19) | (ALG_ECDAA << 21) | (ALG_SM2 << 22) | 260 (ALG_ECSCHNORR << 23))}}, 261 // TPMI_ECC_KEY_EXCHANGE_DATA 262 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_SCHEME, 263 {TPM_ALG_NULL, 264 RANGE(25, 29, UINT16), 265 (UINT32)((ALG_ECDH << 0)|(ALG_SM2 << 2)|(ALG_ECMQV << 4))}}, 266 // TPMI_ST_COMMAND_TAG_DATA 267 {TABLE_MTYPE, TWO_BYTES, (UINT8)TPM_RC_BAD_TAG, 2, 268 {TPM_ST_NO_SESSIONS, TPM_ST_SESSIONS}}, 269 // TPMI_ALG_MAC_SCHEME_DATA 270 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_SYMMETRIC, 271 {TPM_ALG_NULL, 272 RANGE(4, 63, UINT16), 273 (UINT32)((ALG_SHA1 << 0) | (ALG_SHA256 << 7) | (ALG_SHA384 << 8) | 274 (ALG_SHA512 << 9) | (ALG_SM3_256 << 14)), 275 (UINT32)((ALG_SHA3_256 << 3) | (ALG_SHA3_384 << 4) | (ALG_SHA3_512 << 5) | 276 (ALG_CMAC << 27))}}, 277 // TPMI_ALG_CIPHER_MODE_DATA 278 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_MODE, 279 {TPM_ALG_NULL, 280 RANGE(64, 68, UINT16), 281 (UINT32)((ALG_CTR << 0) | (ALG_OFB << 1) | (ALG_CBC << 2) | (ALG_CFB << 3) | 282 (ALG_ECB << 4))}}, 283 // TPMS_EMPTY_DATA 284 {STRUCTURE_MTYPE, 1, 285 {SET_ELEMENT_TYPE(SIMPLE_STYPE), UINT0_MARSHAL_REF, 0}}, 286 // TPMS_ALGORITHM_DESCRIPTION_DATA 287 {STRUCTURE_MTYPE, 2, { 288 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 289 TPM_ALG_ID_MARSHAL_REF, 290 (UINT16)(offsetof(TPMS_ALGORITHM_DESCRIPTION, alg)), 291 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 292 TPMA_ALGORITHM_MARSHAL_REF, 293 (UINT16)(offsetof(TPMS_ALGORITHM_DESCRIPTION, attributes))}}, 294 // TPMU_HA_DATA 295 {9, IS_ARRAY_UNION, (UINT16)(offsetof(TPMU_HA_mst, marshalingTypes)), 296 {(UINT32)TPM_ALG_SHA1, (UINT32)TPM_ALG_SHA256, (UINT32)TPM_ALG_SHA384, 297 (UINT32)TPM_ALG_SHA512, (UINT32)TPM_ALG_SM3_256, (UINT32)TPM_ALG_SHA3_256, 298 (UINT32)TPM_ALG_SHA3_384, (UINT32)TPM_ALG_SHA3_512, (UINT32)TPM_ALG_NULL}, 299 {(UINT16)(SHA1_DIGEST_SIZE), (UINT16)(SHA256_DIGEST_SIZE), 300 (UINT16)(SHA384_DIGEST_SIZE), (UINT16)(SHA512_DIGEST_SIZE), 301 (UINT16)(SM3_256_DIGEST_SIZE), (UINT16)(SHA3_256_DIGEST_SIZE), 302 (UINT16)(SHA3_384_DIGEST_SIZE), (UINT16)(SHA3_512_DIGEST_SIZE), 303 (UINT16)(0)} 304 }, 305 // TPMT_HA_DATA 306 {STRUCTURE_MTYPE, 2, { 307 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES)|ELEMENT_PROPAGATE, 308 TPMI_ALG_HASH_MARSHAL_REF, 309 (UINT16)(offsetof(TPMT_HA, hashAlg)), 310 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 311 TPMU_HA_MARSHAL_REF, 312 (UINT16)(offsetof(TPMT_HA, digest))}}, 313 // TPM2B_DIGEST_DATA 314 {TPM2B_MTYPE, Type00_MARSHAL_REF}, 315 // TPM2B_DATA_DATA 316 {TPM2B_MTYPE, Type01_MARSHAL_REF}, 317 // TPM2B_EVENT_DATA 318 {TPM2B_MTYPE, Type02_MARSHAL_REF}, 319 // TPM2B_MAX_BUFFER_DATA 320 {TPM2B_MTYPE, Type03_MARSHAL_REF}, 321 // TPM2B_MAX_NV_BUFFER_DATA 322 {TPM2B_MTYPE, Type04_MARSHAL_REF}, 323 // TPM2B_TIMEOUT_DATA 324 {TPM2B_MTYPE, Type05_MARSHAL_REF}, 325 // TPM2B_IV_DATA 326 {TPM2B_MTYPE, Type06_MARSHAL_REF}, 327 // NULL_UNION_DATA 328 {0}, 329 // TPM2B_NAME_DATA 330 {TPM2B_MTYPE, Type07_MARSHAL_REF}, 331 // TPMS_PCR_SELECT_DATA 332 {STRUCTURE_MTYPE, 2, { 333 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(ONE_BYTES), 334 Type08_MARSHAL_REF, 335 (UINT16)(offsetof(TPMS_PCR_SELECT, sizeofSelect)), 336 SET_ELEMENT_TYPE(ARRAY_STYPE)|SET_ELEMENT_NUMBER(0), 337 UINT8_ARRAY_MARSHAL_INDEX, 338 (UINT16)(offsetof(TPMS_PCR_SELECT, pcrSelect))}}, 339 // TPMS_PCR_SELECTION_DATA 340 {STRUCTURE_MTYPE, 3, { 341 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 342 TPMI_ALG_HASH_MARSHAL_REF, 343 (UINT16)(offsetof(TPMS_PCR_SELECTION, hash)), 344 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(ONE_BYTES), 345 Type08_MARSHAL_REF, 346 (UINT16)(offsetof(TPMS_PCR_SELECTION, sizeofSelect)), 347 SET_ELEMENT_TYPE(ARRAY_STYPE)|SET_ELEMENT_NUMBER(1), 348 UINT8_ARRAY_MARSHAL_INDEX, 349 (UINT16)(offsetof(TPMS_PCR_SELECTION, pcrSelect))}}, 350 // TPMT_TK_CREATION_DATA 351 {STRUCTURE_MTYPE, 3, { 352 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 353 Type10_MARSHAL_REF, 354 (UINT16)(offsetof(TPMT_TK_CREATION, tag)), 355 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 356 TPMI_RH_HIERARCHY_MARSHAL_REF|NULL_FLAG, 357 (UINT16)(offsetof(TPMT_TK_CREATION, hierarchy)), 358 SET_ELEMENT_TYPE(SIMPLE_STYPE), 359 TPM2B_DIGEST_MARSHAL_REF, 360 (UINT16)(offsetof(TPMT_TK_CREATION, digest))}}, 361 // TPMT_TK_VERIFIED_DATA 362 {STRUCTURE_MTYPE, 3, { 363 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 364 Type11_MARSHAL_REF, 365 (UINT16)(offsetof(TPMT_TK_VERIFIED, tag)), 366 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 367 TPMI_RH_HIERARCHY_MARSHAL_REF|NULL_FLAG, 368 (UINT16)(offsetof(TPMT_TK_VERIFIED, hierarchy)), 369 SET_ELEMENT_TYPE(SIMPLE_STYPE), 370 TPM2B_DIGEST_MARSHAL_REF, 371 (UINT16)(offsetof(TPMT_TK_VERIFIED, digest))}}, 372 // TPMT_TK_AUTH_DATA 373 {STRUCTURE_MTYPE, 3, { 374 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 375 Type12_MARSHAL_REF, 376 (UINT16)(offsetof(TPMT_TK_AUTH, tag)), 377 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 378 TPMI_RH_HIERARCHY_MARSHAL_REF|NULL_FLAG, 379 (UINT16)(offsetof(TPMT_TK_AUTH, hierarchy)), 380 SET_ELEMENT_TYPE(SIMPLE_STYPE), 381 TPM2B_DIGEST_MARSHAL_REF, 382 (UINT16)(offsetof(TPMT_TK_AUTH, digest))}}, 383 // TPMT_TK_HASHCHECK_DATA 384 {STRUCTURE_MTYPE, 3, { 385 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 386 Type13_MARSHAL_REF, 387 (UINT16)(offsetof(TPMT_TK_HASHCHECK, tag)), 388 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 389 TPMI_RH_HIERARCHY_MARSHAL_REF|NULL_FLAG, 390 (UINT16)(offsetof(TPMT_TK_HASHCHECK, hierarchy)), 391 SET_ELEMENT_TYPE(SIMPLE_STYPE), 392 TPM2B_DIGEST_MARSHAL_REF, 393 (UINT16)(offsetof(TPMT_TK_HASHCHECK, digest))}}, 394 // TPMS_ALG_PROPERTY_DATA 395 {STRUCTURE_MTYPE, 2, { 396 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 397 TPM_ALG_ID_MARSHAL_REF, 398 (UINT16)(offsetof(TPMS_ALG_PROPERTY, alg)), 399 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 400 TPMA_ALGORITHM_MARSHAL_REF, 401 (UINT16)(offsetof(TPMS_ALG_PROPERTY, algProperties))}}, 402 // TPMS_TAGGED_PROPERTY_DATA 403 {STRUCTURE_MTYPE, 2, { 404 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 405 TPM_PT_MARSHAL_REF, 406 (UINT16)(offsetof(TPMS_TAGGED_PROPERTY, property)), 407 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 408 UINT32_MARSHAL_REF, 409 (UINT16)(offsetof(TPMS_TAGGED_PROPERTY, value))}}, 410 // TPMS_TAGGED_PCR_SELECT_DATA 411 {STRUCTURE_MTYPE, 3, { 412 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 413 TPM_PT_PCR_MARSHAL_REF, 414 (UINT16)(offsetof(TPMS_TAGGED_PCR_SELECT, tag)), 415 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(ONE_BYTES), 416 Type08_MARSHAL_REF, 417 (UINT16)(offsetof(TPMS_TAGGED_PCR_SELECT, sizeofSelect)), 418 SET_ELEMENT_TYPE(ARRAY_STYPE)|SET_ELEMENT_NUMBER(1), 419 UINT8_ARRAY_MARSHAL_INDEX, 420 (UINT16)(offsetof(TPMS_TAGGED_PCR_SELECT, pcrSelect))}}, 421 // TPMS_TAGGED_POLICY_DATA 422 {STRUCTURE_MTYPE, 2, { 423 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 424 TPM_HANDLE_MARSHAL_REF, 425 (UINT16)(offsetof(TPMS_TAGGED_POLICY, handle)), 426 SET_ELEMENT_TYPE(SIMPLE_STYPE), 427 TPMT_HA_MARSHAL_REF, 428 (UINT16)(offsetof(TPMS_TAGGED_POLICY, policyHash))}}, 429 // TPMS_ACT_DATA_DATA 430 {STRUCTURE_MTYPE, 3, { 431 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 432 TPM_HANDLE_MARSHAL_REF, 433 (UINT16)(offsetof(TPMS_ACT_DATA, handle)), 434 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 435 UINT32_MARSHAL_REF, 436 (UINT16)(offsetof(TPMS_ACT_DATA, timeout)), 437 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 438 TPMA_ACT_MARSHAL_REF, 439 (UINT16)(offsetof(TPMS_ACT_DATA, attributes))}}, 440 // TPML_CC_DATA 441 {LIST_MTYPE, 442 (UINT8)(offsetof(TPML_CC, commandCodes)), 443 Type15_MARSHAL_REF, 444 TPM_CC_ARRAY_MARSHAL_INDEX}, 445 // TPML_CCA_DATA 446 {LIST_MTYPE, 447 (UINT8)(offsetof(TPML_CCA, commandAttributes)), 448 Type15_MARSHAL_REF, 449 TPMA_CC_ARRAY_MARSHAL_INDEX}, 450 // TPML_ALG_DATA 451 {LIST_MTYPE, 452 (UINT8)(offsetof(TPML_ALG, algorithms)), 453 Type17_MARSHAL_REF, 454 TPM_ALG_ID_ARRAY_MARSHAL_INDEX}, 455 // TPML_HANDLE_DATA 456 {LIST_MTYPE, 457 (UINT8)(offsetof(TPML_HANDLE, handle)), 458 Type18_MARSHAL_REF, 459 TPM_HANDLE_ARRAY_MARSHAL_INDEX}, 460 // TPML_DIGEST_DATA 461 {LIST_MTYPE, 462 (UINT8)(offsetof(TPML_DIGEST, digests)), 463 Type19_MARSHAL_REF, 464 TPM2B_DIGEST_ARRAY_MARSHAL_INDEX}, 465 // TPML_DIGEST_VALUES_DATA 466 {LIST_MTYPE, 467 (UINT8)(offsetof(TPML_DIGEST_VALUES, digests)), 468 Type20_MARSHAL_REF, 469 TPMT_HA_ARRAY_MARSHAL_INDEX}, 470 // TPML_PCR_SELECTION_DATA 471 {LIST_MTYPE, 472 (UINT8)(offsetof(TPML_PCR_SELECTION, pcrSelections)), 473 Type20_MARSHAL_REF, 474 TPMS_PCR_SELECTION_ARRAY_MARSHAL_INDEX}, 475 // TPML_ALG_PROPERTY_DATA 476 {LIST_MTYPE, 477 (UINT8)(offsetof(TPML_ALG_PROPERTY, algProperties)), 478 Type22_MARSHAL_REF, 479 TPMS_ALG_PROPERTY_ARRAY_MARSHAL_INDEX}, 480 // TPML_TAGGED_TPM_PROPERTY_DATA 481 {LIST_MTYPE, 482 (UINT8)(offsetof(TPML_TAGGED_TPM_PROPERTY, tpmProperty)), 483 Type23_MARSHAL_REF, 484 TPMS_TAGGED_PROPERTY_ARRAY_MARSHAL_INDEX}, 485 // TPML_TAGGED_PCR_PROPERTY_DATA 486 {LIST_MTYPE, 487 (UINT8)(offsetof(TPML_TAGGED_PCR_PROPERTY, pcrProperty)), 488 Type24_MARSHAL_REF, 489 TPMS_TAGGED_PCR_SELECT_ARRAY_MARSHAL_INDEX}, 490 // TPML_ECC_CURVE_DATA 491 {LIST_MTYPE, 492 (UINT8)(offsetof(TPML_ECC_CURVE, eccCurves)), 493 Type25_MARSHAL_REF, 494 TPM_ECC_CURVE_ARRAY_MARSHAL_INDEX}, 495 // TPML_TAGGED_POLICY_DATA 496 {LIST_MTYPE, 497 (UINT8)(offsetof(TPML_TAGGED_POLICY, policies)), 498 Type26_MARSHAL_REF, 499 TPMS_TAGGED_POLICY_ARRAY_MARSHAL_INDEX}, 500 // TPML_ACT_DATA_DATA 501 {LIST_MTYPE, 502 (UINT8)(offsetof(TPML_ACT_DATA, actData)), 503 Type27_MARSHAL_REF, 504 TPMS_ACT_DATA_ARRAY_MARSHAL_INDEX}, 505 // TPMU_CAPABILITIES_DATA 506 {11, 0, (UINT16)(offsetof(TPMU_CAPABILITIES_mst, marshalingTypes)), 507 {(UINT32)TPM_CAP_ALGS, (UINT32)TPM_CAP_HANDLES, 508 (UINT32)TPM_CAP_COMMANDS, (UINT32)TPM_CAP_PP_COMMANDS, 509 (UINT32)TPM_CAP_AUDIT_COMMANDS, (UINT32)TPM_CAP_PCRS, 510 (UINT32)TPM_CAP_TPM_PROPERTIES, (UINT32)TPM_CAP_PCR_PROPERTIES, 511 (UINT32)TPM_CAP_ECC_CURVES, (UINT32)TPM_CAP_AUTH_POLICIES, 512 (UINT32)TPM_CAP_ACT}, 513 {(UINT16)(TPML_ALG_PROPERTY_MARSHAL_REF), 514 (UINT16)(TPML_HANDLE_MARSHAL_REF), 515 (UINT16)(TPML_CCA_MARSHAL_REF), 516 (UINT16)(TPML_CC_MARSHAL_REF), 517 (UINT16)(TPML_CC_MARSHAL_REF), 518 (UINT16)(TPML_PCR_SELECTION_MARSHAL_REF), 519 (UINT16)(TPML_TAGGED_TPM_PROPERTY_MARSHAL_REF), 520 (UINT16)(TPML_TAGGED_PCR_PROPERTY_MARSHAL_REF), 521 (UINT16)(TPML_ECC_CURVE_MARSHAL_REF), 522 (UINT16)(TPML_TAGGED_POLICY_MARSHAL_REF), 523 (UINT16)(TPML_ACT_DATA_MARSHAL_REF)} 524 }, 525 // TPMS_CAPABILITY_DATA_DATA 526 {STRUCTURE_MTYPE, 2, { 527 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 528 TPM_CAP_MARSHAL_REF, 529 (UINT16)(offsetof(TPMS_CAPABILITY_DATA, capability)), 530 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 531 TPMU_CAPABILITIES_MARSHAL_REF, 532 (UINT16)(offsetof(TPMS_CAPABILITY_DATA, data))}}, 533 // TPMS_CLOCK_INFO_DATA 534 {STRUCTURE_MTYPE, 4, { 535 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(EIGHT_BYTES), 536 UINT64_MARSHAL_REF, 537 (UINT16)(offsetof(TPMS_CLOCK_INFO, clock)), 538 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 539 UINT32_MARSHAL_REF, 540 (UINT16)(offsetof(TPMS_CLOCK_INFO, resetCount)), 541 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 542 UINT32_MARSHAL_REF, 543 (UINT16)(offsetof(TPMS_CLOCK_INFO, restartCount)), 544 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(ONE_BYTES), 545 TPMI_YES_NO_MARSHAL_REF, 546 (UINT16)(offsetof(TPMS_CLOCK_INFO, safe))}}, 547 // TPMS_TIME_INFO_DATA 548 {STRUCTURE_MTYPE, 2, { 549 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(EIGHT_BYTES), 550 UINT64_MARSHAL_REF, 551 (UINT16)(offsetof(TPMS_TIME_INFO, time)), 552 SET_ELEMENT_TYPE(SIMPLE_STYPE), 553 TPMS_CLOCK_INFO_MARSHAL_REF, 554 (UINT16)(offsetof(TPMS_TIME_INFO, clockInfo))}}, 555 // TPMS_TIME_ATTEST_INFO_DATA 556 {STRUCTURE_MTYPE, 2, { 557 SET_ELEMENT_TYPE(SIMPLE_STYPE), 558 TPMS_TIME_INFO_MARSHAL_REF, 559 (UINT16)(offsetof(TPMS_TIME_ATTEST_INFO, time)), 560 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(EIGHT_BYTES), 561 UINT64_MARSHAL_REF, 562 (UINT16)(offsetof(TPMS_TIME_ATTEST_INFO, firmwareVersion))}}, 563 // TPMS_CERTIFY_INFO_DATA 564 {STRUCTURE_MTYPE, 2, { 565 SET_ELEMENT_TYPE(SIMPLE_STYPE), 566 TPM2B_NAME_MARSHAL_REF, 567 (UINT16)(offsetof(TPMS_CERTIFY_INFO, name)), 568 SET_ELEMENT_TYPE(SIMPLE_STYPE), 569 TPM2B_NAME_MARSHAL_REF, 570 (UINT16)(offsetof(TPMS_CERTIFY_INFO, qualifiedName))}}, 571 // TPMS_QUOTE_INFO_DATA 572 {STRUCTURE_MTYPE, 2, { 573 SET_ELEMENT_TYPE(SIMPLE_STYPE), 574 TPML_PCR_SELECTION_MARSHAL_REF, 575 (UINT16)(offsetof(TPMS_QUOTE_INFO, pcrSelect)), 576 SET_ELEMENT_TYPE(SIMPLE_STYPE), 577 TPM2B_DIGEST_MARSHAL_REF, 578 (UINT16)(offsetof(TPMS_QUOTE_INFO, pcrDigest))}}, 579 // TPMS_COMMAND_AUDIT_INFO_DATA 580 {STRUCTURE_MTYPE, 4, { 581 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(EIGHT_BYTES), 582 UINT64_MARSHAL_REF, 583 (UINT16)(offsetof(TPMS_COMMAND_AUDIT_INFO, auditCounter)), 584 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 585 TPM_ALG_ID_MARSHAL_REF, 586 (UINT16)(offsetof(TPMS_COMMAND_AUDIT_INFO, digestAlg)), 587 SET_ELEMENT_TYPE(SIMPLE_STYPE), 588 TPM2B_DIGEST_MARSHAL_REF, 589 (UINT16)(offsetof(TPMS_COMMAND_AUDIT_INFO, auditDigest)), 590 SET_ELEMENT_TYPE(SIMPLE_STYPE), 591 TPM2B_DIGEST_MARSHAL_REF, 592 (UINT16)(offsetof(TPMS_COMMAND_AUDIT_INFO, commandDigest))}}, 593 // TPMS_SESSION_AUDIT_INFO_DATA 594 {STRUCTURE_MTYPE, 2, { 595 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(ONE_BYTES), 596 TPMI_YES_NO_MARSHAL_REF, 597 (UINT16)(offsetof(TPMS_SESSION_AUDIT_INFO, exclusiveSession)), 598 SET_ELEMENT_TYPE(SIMPLE_STYPE), 599 TPM2B_DIGEST_MARSHAL_REF, 600 (UINT16)(offsetof(TPMS_SESSION_AUDIT_INFO, sessionDigest))}}, 601 // TPMS_CREATION_INFO_DATA 602 {STRUCTURE_MTYPE, 2, { 603 SET_ELEMENT_TYPE(SIMPLE_STYPE), 604 TPM2B_NAME_MARSHAL_REF, 605 (UINT16)(offsetof(TPMS_CREATION_INFO, objectName)), 606 SET_ELEMENT_TYPE(SIMPLE_STYPE), 607 TPM2B_DIGEST_MARSHAL_REF, 608 (UINT16)(offsetof(TPMS_CREATION_INFO, creationHash))}}, 609 // TPMS_NV_CERTIFY_INFO_DATA 610 {STRUCTURE_MTYPE, 3, { 611 SET_ELEMENT_TYPE(SIMPLE_STYPE), 612 TPM2B_NAME_MARSHAL_REF, 613 (UINT16)(offsetof(TPMS_NV_CERTIFY_INFO, indexName)), 614 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 615 UINT16_MARSHAL_REF, 616 (UINT16)(offsetof(TPMS_NV_CERTIFY_INFO, offset)), 617 SET_ELEMENT_TYPE(SIMPLE_STYPE), 618 TPM2B_MAX_NV_BUFFER_MARSHAL_REF, 619 (UINT16)(offsetof(TPMS_NV_CERTIFY_INFO, nvContents))}}, 620 // TPMS_NV_DIGEST_CERTIFY_INFO_DATA 621 {STRUCTURE_MTYPE, 2, { 622 SET_ELEMENT_TYPE(SIMPLE_STYPE), 623 TPM2B_NAME_MARSHAL_REF, 624 (UINT16)(offsetof(TPMS_NV_DIGEST_CERTIFY_INFO, indexName)), 625 SET_ELEMENT_TYPE(SIMPLE_STYPE), 626 TPM2B_DIGEST_MARSHAL_REF, 627 (UINT16)(offsetof(TPMS_NV_DIGEST_CERTIFY_INFO, nvDigest))}}, 628 // TPMI_ST_ATTEST_DATA 629 {VALUES_MTYPE, TWO_BYTES, (UINT8)TPM_RC_VALUE, 1, 1, 630 {RANGE(TPM_ST_ATTEST_NV, TPM_ST_ATTEST_CREATION, UINT16), 631 TPM_ST_ATTEST_NV_DIGEST}}, 632 // TPMU_ATTEST_DATA 633 {8, 0, (UINT16)(offsetof(TPMU_ATTEST_mst, marshalingTypes)), 634 {(UINT32)TPM_ST_ATTEST_CERTIFY, (UINT32)TPM_ST_ATTEST_CREATION, 635 (UINT32)TPM_ST_ATTEST_QUOTE, (UINT32)TPM_ST_ATTEST_COMMAND_AUDIT, 636 (UINT32)TPM_ST_ATTEST_SESSION_AUDIT, (UINT32)TPM_ST_ATTEST_TIME, 637 (UINT32)TPM_ST_ATTEST_NV, (UINT32)TPM_ST_ATTEST_NV_DIGEST}, 638 {(UINT16)(TPMS_CERTIFY_INFO_MARSHAL_REF), 639 (UINT16)(TPMS_CREATION_INFO_MARSHAL_REF), 640 (UINT16)(TPMS_QUOTE_INFO_MARSHAL_REF), 641 (UINT16)(TPMS_COMMAND_AUDIT_INFO_MARSHAL_REF), 642 (UINT16)(TPMS_SESSION_AUDIT_INFO_MARSHAL_REF), 643 (UINT16)(TPMS_TIME_ATTEST_INFO_MARSHAL_REF), 644 (UINT16)(TPMS_NV_CERTIFY_INFO_MARSHAL_REF), 645 (UINT16)(TPMS_NV_DIGEST_CERTIFY_INFO_MARSHAL_REF)} 646 }, 647 // TPMS_ATTEST_DATA 648 {STRUCTURE_MTYPE, 7, { 649 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 650 TPM_CONSTANTS32_MARSHAL_REF, 651 (UINT16)(offsetof(TPMS_ATTEST, magic)), 652 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 653 TPMI_ST_ATTEST_MARSHAL_REF, 654 (UINT16)(offsetof(TPMS_ATTEST, type)), 655 SET_ELEMENT_TYPE(SIMPLE_STYPE), 656 TPM2B_NAME_MARSHAL_REF, 657 (UINT16)(offsetof(TPMS_ATTEST, qualifiedSigner)), 658 SET_ELEMENT_TYPE(SIMPLE_STYPE), 659 TPM2B_DATA_MARSHAL_REF, 660 (UINT16)(offsetof(TPMS_ATTEST, extraData)), 661 SET_ELEMENT_TYPE(SIMPLE_STYPE), 662 TPMS_CLOCK_INFO_MARSHAL_REF, 663 (UINT16)(offsetof(TPMS_ATTEST, clockInfo)), 664 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(EIGHT_BYTES), 665 UINT64_MARSHAL_REF, 666 (UINT16)(offsetof(TPMS_ATTEST, firmwareVersion)), 667 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(1), 668 TPMU_ATTEST_MARSHAL_REF, 669 (UINT16)(offsetof(TPMS_ATTEST, attested))}}, 670 // TPM2B_ATTEST_DATA 671 {TPM2B_MTYPE, Type28_MARSHAL_REF}, 672 // TPMS_AUTH_COMMAND_DATA 673 {STRUCTURE_MTYPE, 4, { 674 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 675 TPMI_SH_AUTH_SESSION_MARSHAL_REF|NULL_FLAG, 676 (UINT16)(offsetof(TPMS_AUTH_COMMAND, sessionHandle)), 677 SET_ELEMENT_TYPE(SIMPLE_STYPE), 678 TPM2B_NONCE_MARSHAL_REF, 679 (UINT16)(offsetof(TPMS_AUTH_COMMAND, nonce)), 680 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(ONE_BYTES), 681 TPMA_SESSION_MARSHAL_REF, 682 (UINT16)(offsetof(TPMS_AUTH_COMMAND, sessionAttributes)), 683 SET_ELEMENT_TYPE(SIMPLE_STYPE), 684 TPM2B_AUTH_MARSHAL_REF, 685 (UINT16)(offsetof(TPMS_AUTH_COMMAND, hmac))}}, 686 // TPMS_AUTH_RESPONSE_DATA 687 {STRUCTURE_MTYPE, 3, { 688 SET_ELEMENT_TYPE(SIMPLE_STYPE), 689 TPM2B_NONCE_MARSHAL_REF, 690 (UINT16)(offsetof(TPMS_AUTH_RESPONSE, nonce)), 691 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(ONE_BYTES), 692 TPMA_SESSION_MARSHAL_REF, 693 (UINT16)(offsetof(TPMS_AUTH_RESPONSE, sessionAttributes)), 694 SET_ELEMENT_TYPE(SIMPLE_STYPE), 695 TPM2B_AUTH_MARSHAL_REF, 696 (UINT16)(offsetof(TPMS_AUTH_RESPONSE, hmac))}}, 697 // TPMI_TDES_KEY_BITS_DATA 698 {TABLE_MTYPE, TWO_BYTES, (UINT8)TPM_RC_VALUE, 1, 699 {128*TDES_128}}, 700 // TPMI_AES_KEY_BITS_DATA 701 {TABLE_MTYPE, TWO_BYTES, (UINT8)TPM_RC_VALUE, 3, 702 {192*AES_192, 128*AES_128, 256*AES_256}}, 703 // TPMI_SM4_KEY_BITS_DATA 704 {TABLE_MTYPE, TWO_BYTES, (UINT8)TPM_RC_VALUE, 1, 705 {128*SM4_128}}, 706 // TPMI_CAMELLIA_KEY_BITS_DATA 707 {TABLE_MTYPE, TWO_BYTES, (UINT8)TPM_RC_VALUE, 3, 708 {192*CAMELLIA_192, 128*CAMELLIA_128, 256*CAMELLIA_256}}, 709 // TPMU_SYM_KEY_BITS_DATA 710 {6, 0, (UINT16)(offsetof(TPMU_SYM_KEY_BITS_mst, marshalingTypes)), 711 {(UINT32)TPM_ALG_TDES, (UINT32)TPM_ALG_AES, (UINT32)TPM_ALG_SM4, 712 (UINT32)TPM_ALG_CAMELLIA, (UINT32)TPM_ALG_XOR, (UINT32)TPM_ALG_NULL}, 713 {(UINT16)(TPMI_TDES_KEY_BITS_MARSHAL_REF), 714 (UINT16)(TPMI_AES_KEY_BITS_MARSHAL_REF), 715 (UINT16)(TPMI_SM4_KEY_BITS_MARSHAL_REF), 716 (UINT16)(TPMI_CAMELLIA_KEY_BITS_MARSHAL_REF), 717 (UINT16)(TPMI_ALG_HASH_MARSHAL_REF), 718 (UINT16)(UINT0_MARSHAL_REF)} 719 }, 720 // TPMU_SYM_MODE_DATA 721 {6, 0, (UINT16)(offsetof(TPMU_SYM_MODE_mst, marshalingTypes)), 722 {(UINT32)TPM_ALG_TDES, (UINT32)TPM_ALG_AES, (UINT32)TPM_ALG_SM4, 723 (UINT32)TPM_ALG_CAMELLIA, (UINT32)TPM_ALG_XOR, (UINT32)TPM_ALG_NULL}, 724 {(UINT16)(TPMI_ALG_SYM_MODE_MARSHAL_REF|NULL_FLAG), 725 (UINT16)(TPMI_ALG_SYM_MODE_MARSHAL_REF|NULL_FLAG), 726 (UINT16)(TPMI_ALG_SYM_MODE_MARSHAL_REF|NULL_FLAG), 727 (UINT16)(TPMI_ALG_SYM_MODE_MARSHAL_REF|NULL_FLAG), 728 (UINT16)(UINT0_MARSHAL_REF), 729 (UINT16)(UINT0_MARSHAL_REF)} 730 }, 731 // TPMT_SYM_DEF_DATA 732 {STRUCTURE_MTYPE, 3, { 733 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES)|ELEMENT_PROPAGATE, 734 TPMI_ALG_SYM_MARSHAL_REF, 735 (UINT16)(offsetof(TPMT_SYM_DEF, algorithm)), 736 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 737 TPMU_SYM_KEY_BITS_MARSHAL_REF, 738 (UINT16)(offsetof(TPMT_SYM_DEF, keyBits)), 739 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 740 TPMU_SYM_MODE_MARSHAL_REF, 741 (UINT16)(offsetof(TPMT_SYM_DEF, mode))}}, 742 // TPMT_SYM_DEF_OBJECT_DATA 743 {STRUCTURE_MTYPE, 3, { 744 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES)|ELEMENT_PROPAGATE, 745 TPMI_ALG_SYM_OBJECT_MARSHAL_REF, 746 (UINT16)(offsetof(TPMT_SYM_DEF_OBJECT, algorithm)), 747 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 748 TPMU_SYM_KEY_BITS_MARSHAL_REF, 749 (UINT16)(offsetof(TPMT_SYM_DEF_OBJECT, keyBits)), 750 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 751 TPMU_SYM_MODE_MARSHAL_REF, 752 (UINT16)(offsetof(TPMT_SYM_DEF_OBJECT, mode))}}, 753 // TPM2B_SYM_KEY_DATA 754 {TPM2B_MTYPE, Type29_MARSHAL_REF}, 755 // TPMS_SYMCIPHER_PARMS_DATA 756 {STRUCTURE_MTYPE, 1, { 757 SET_ELEMENT_TYPE(SIMPLE_STYPE), 758 TPMT_SYM_DEF_OBJECT_MARSHAL_REF, 759 (UINT16)(offsetof(TPMS_SYMCIPHER_PARMS, sym))}}, 760 // TPM2B_LABEL_DATA 761 {TPM2B_MTYPE, Type30_MARSHAL_REF}, 762 // TPMS_DERIVE_DATA 763 {STRUCTURE_MTYPE, 2, { 764 SET_ELEMENT_TYPE(SIMPLE_STYPE), 765 TPM2B_LABEL_MARSHAL_REF, 766 (UINT16)(offsetof(TPMS_DERIVE, label)), 767 SET_ELEMENT_TYPE(SIMPLE_STYPE), 768 TPM2B_LABEL_MARSHAL_REF, 769 (UINT16)(offsetof(TPMS_DERIVE, context))}}, 770 // TPM2B_DERIVE_DATA 771 {TPM2B_MTYPE, Type31_MARSHAL_REF}, 772 // TPM2B_SENSITIVE_DATA_DATA 773 {TPM2B_MTYPE, Type32_MARSHAL_REF}, 774 // TPMS_SENSITIVE_CREATE_DATA 775 {STRUCTURE_MTYPE, 2, { 776 SET_ELEMENT_TYPE(SIMPLE_STYPE), 777 TPM2B_AUTH_MARSHAL_REF, 778 (UINT16)(offsetof(TPMS_SENSITIVE_CREATE, userAuth)), 779 SET_ELEMENT_TYPE(SIMPLE_STYPE), 780 TPM2B_SENSITIVE_DATA_MARSHAL_REF, 781 (UINT16)(offsetof(TPMS_SENSITIVE_CREATE, data))}}, 782 // TPM2B_SENSITIVE_CREATE_DATA 783 {TPM2BS_MTYPE, 784 (UINT8)(offsetof(TPM2B_SENSITIVE_CREATE, sensitive))|SIZE_EQUAL, 785 UINT16_MARSHAL_REF, 786 TPMS_SENSITIVE_CREATE_MARSHAL_REF}, 787 // TPMS_SCHEME_HASH_DATA 788 {STRUCTURE_MTYPE, 1, { 789 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 790 TPMI_ALG_HASH_MARSHAL_REF, 791 (UINT16)(offsetof(TPMS_SCHEME_HASH, hashAlg))}}, 792 // TPMS_SCHEME_ECDAA_DATA 793 {STRUCTURE_MTYPE, 2, { 794 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 795 TPMI_ALG_HASH_MARSHAL_REF, 796 (UINT16)(offsetof(TPMS_SCHEME_ECDAA, hashAlg)), 797 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 798 UINT16_MARSHAL_REF, 799 (UINT16)(offsetof(TPMS_SCHEME_ECDAA, count))}}, 800 // TPMI_ALG_KEYEDHASH_SCHEME_DATA 801 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_VALUE, 802 {TPM_ALG_NULL, 803 RANGE(5, 10, UINT16), 804 (UINT32)((ALG_HMAC << 0)|(ALG_XOR << 5))}}, 805 // TPMS_SCHEME_XOR_DATA 806 {STRUCTURE_MTYPE, 2, { 807 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 808 TPMI_ALG_HASH_MARSHAL_REF, 809 (UINT16)(offsetof(TPMS_SCHEME_XOR, hashAlg)), 810 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 811 TPMI_ALG_KDF_MARSHAL_REF|NULL_FLAG, 812 (UINT16)(offsetof(TPMS_SCHEME_XOR, kdf))}}, 813 // TPMU_SCHEME_KEYEDHASH_DATA 814 {3, 0, (UINT16)(offsetof(TPMU_SCHEME_KEYEDHASH_mst, marshalingTypes)), 815 {(UINT32)TPM_ALG_HMAC, (UINT32)TPM_ALG_XOR, (UINT32)TPM_ALG_NULL}, 816 {(UINT16)(TPMS_SCHEME_HMAC_MARSHAL_REF), 817 (UINT16)(TPMS_SCHEME_XOR_MARSHAL_REF), 818 (UINT16)(UINT0_MARSHAL_REF)} 819 }, 820 // TPMT_KEYEDHASH_SCHEME_DATA 821 {STRUCTURE_MTYPE, 2, { 822 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES)|ELEMENT_PROPAGATE, 823 TPMI_ALG_KEYEDHASH_SCHEME_MARSHAL_REF, 824 (UINT16)(offsetof(TPMT_KEYEDHASH_SCHEME, scheme)), 825 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 826 TPMU_SCHEME_KEYEDHASH_MARSHAL_REF, 827 (UINT16)(offsetof(TPMT_KEYEDHASH_SCHEME, details))}}, 828 // TPMU_SIG_SCHEME_DATA 829 {8, 0, (UINT16)(offsetof(TPMU_SIG_SCHEME_mst, marshalingTypes)), 830 {(UINT32)TPM_ALG_ECDAA, (UINT32)TPM_ALG_RSASSA, 831 (UINT32)TPM_ALG_RSAPSS, (UINT32)TPM_ALG_ECDSA, 832 (UINT32)TPM_ALG_SM2, (UINT32)TPM_ALG_ECSCHNORR, 833 (UINT32)TPM_ALG_HMAC, (UINT32)TPM_ALG_NULL}, 834 {(UINT16)(TPMS_SIG_SCHEME_ECDAA_MARSHAL_REF), 835 (UINT16)(TPMS_SIG_SCHEME_RSASSA_MARSHAL_REF), 836 (UINT16)(TPMS_SIG_SCHEME_RSAPSS_MARSHAL_REF), 837 (UINT16)(TPMS_SIG_SCHEME_ECDSA_MARSHAL_REF), 838 (UINT16)(TPMS_SIG_SCHEME_SM2_MARSHAL_REF), 839 (UINT16)(TPMS_SIG_SCHEME_ECSCHNORR_MARSHAL_REF), 840 (UINT16)(TPMS_SCHEME_HMAC_MARSHAL_REF), 841 (UINT16)(UINT0_MARSHAL_REF)} 842 }, 843 // TPMT_SIG_SCHEME_DATA 844 {STRUCTURE_MTYPE, 2, { 845 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES)|ELEMENT_PROPAGATE, 846 TPMI_ALG_SIG_SCHEME_MARSHAL_REF, 847 (UINT16)(offsetof(TPMT_SIG_SCHEME, scheme)), 848 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 849 TPMU_SIG_SCHEME_MARSHAL_REF, 850 (UINT16)(offsetof(TPMT_SIG_SCHEME, details))}}, 851 // TPMU_KDF_SCHEME_DATA 852 {5, 0, (UINT16)(offsetof(TPMU_KDF_SCHEME_mst, marshalingTypes)), 853 {(UINT32)TPM_ALG_MGF1, (UINT32)TPM_ALG_KDF1_SP800_56A, 854 (UINT32)TPM_ALG_KDF2, (UINT32)TPM_ALG_KDF1_SP800_108, 855 (UINT32)TPM_ALG_NULL}, 856 {(UINT16)(TPMS_KDF_SCHEME_MGF1_MARSHAL_REF), 857 (UINT16)(TPMS_KDF_SCHEME_KDF1_SP800_56A_MARSHAL_REF), 858 (UINT16)(TPMS_KDF_SCHEME_KDF2_MARSHAL_REF), 859 (UINT16)(TPMS_KDF_SCHEME_KDF1_SP800_108_MARSHAL_REF), 860 (UINT16)(UINT0_MARSHAL_REF)} 861 }, 862 // TPMT_KDF_SCHEME_DATA 863 {STRUCTURE_MTYPE, 2, { 864 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES)|ELEMENT_PROPAGATE, 865 TPMI_ALG_KDF_MARSHAL_REF, 866 (UINT16)(offsetof(TPMT_KDF_SCHEME, scheme)), 867 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 868 TPMU_KDF_SCHEME_MARSHAL_REF, 869 (UINT16)(offsetof(TPMT_KDF_SCHEME, details))}}, 870 // TPMI_ALG_ASYM_SCHEME_DATA 871 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_VALUE, 872 {TPM_ALG_NULL, 873 RANGE(20, 29, UINT16), 874 (UINT32)((ALG_RSASSA << 0) | (ALG_RSAES << 1) | (ALG_RSAPSS << 2) | 875 (ALG_OAEP << 3) | (ALG_ECDSA << 4) | (ALG_ECDH << 5) | 876 (ALG_ECDAA << 6) | (ALG_SM2 << 7) | (ALG_ECSCHNORR << 8) | 877 (ALG_ECMQV << 9))}}, 878 // TPMU_ASYM_SCHEME_DATA 879 {11, 0, (UINT16)(offsetof(TPMU_ASYM_SCHEME_mst, marshalingTypes)), 880 {(UINT32)TPM_ALG_ECDH, (UINT32)TPM_ALG_ECMQV, 881 (UINT32)TPM_ALG_ECDAA, (UINT32)TPM_ALG_RSASSA, 882 (UINT32)TPM_ALG_RSAPSS, (UINT32)TPM_ALG_ECDSA, 883 (UINT32)TPM_ALG_SM2, (UINT32)TPM_ALG_ECSCHNORR, 884 (UINT32)TPM_ALG_RSAES, (UINT32)TPM_ALG_OAEP, 885 (UINT32)TPM_ALG_NULL}, 886 {(UINT16)(TPMS_KEY_SCHEME_ECDH_MARSHAL_REF), 887 (UINT16)(TPMS_KEY_SCHEME_ECMQV_MARSHAL_REF), 888 (UINT16)(TPMS_SIG_SCHEME_ECDAA_MARSHAL_REF), 889 (UINT16)(TPMS_SIG_SCHEME_RSASSA_MARSHAL_REF), 890 (UINT16)(TPMS_SIG_SCHEME_RSAPSS_MARSHAL_REF), 891 (UINT16)(TPMS_SIG_SCHEME_ECDSA_MARSHAL_REF), 892 (UINT16)(TPMS_SIG_SCHEME_SM2_MARSHAL_REF), 893 (UINT16)(TPMS_SIG_SCHEME_ECSCHNORR_MARSHAL_REF), 894 (UINT16)(TPMS_ENC_SCHEME_RSAES_MARSHAL_REF), 895 (UINT16)(TPMS_ENC_SCHEME_OAEP_MARSHAL_REF), 896 (UINT16)(UINT0_MARSHAL_REF)} 897 }, 898 // TPMI_ALG_RSA_SCHEME_DATA 899 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_VALUE, 900 {TPM_ALG_NULL, 901 RANGE(20, 23, UINT16), 902 (UINT32)((ALG_RSASSA << 0)|(ALG_RSAES << 1)|(ALG_RSAPSS << 2)|(ALG_OAEP << 3))}}, 903 // TPMT_RSA_SCHEME_DATA 904 {STRUCTURE_MTYPE, 2, { 905 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES)|ELEMENT_PROPAGATE, 906 TPMI_ALG_RSA_SCHEME_MARSHAL_REF, 907 (UINT16)(offsetof(TPMT_RSA_SCHEME, scheme)), 908 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 909 TPMU_ASYM_SCHEME_MARSHAL_REF, 910 (UINT16)(offsetof(TPMT_RSA_SCHEME, details))}}, 911 // TPMI_ALG_RSA_DECRYPT_DATA 912 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_VALUE, 913 {TPM_ALG_NULL, 914 RANGE(21, 23, UINT16), 915 (UINT32)((ALG_RSAES << 0)|(ALG_OAEP << 2))}}, 916 // TPMT_RSA_DECRYPT_DATA 917 {STRUCTURE_MTYPE, 2, { 918 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES)|ELEMENT_PROPAGATE, 919 TPMI_ALG_RSA_DECRYPT_MARSHAL_REF, 920 (UINT16)(offsetof(TPMT_RSA_DECRYPT, scheme)), 921 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 922 TPMU_ASYM_SCHEME_MARSHAL_REF, 923 (UINT16)(offsetof(TPMT_RSA_DECRYPT, details))}}, 924 // TPM2B_PUBLIC_KEY_RSA_DATA 925 {TPM2B_MTYPE, Type33_MARSHAL_REF}, 926 // TPMI_RSA_KEY_BITS_DATA 927 {TABLE_MTYPE, TWO_BYTES, (UINT8)TPM_RC_VALUE, 3, 928 {3072*RSA_3072, 1024*RSA_1024, 2048*RSA_2048}}, 929 // TPM2B_PRIVATE_KEY_RSA_DATA 930 {TPM2B_MTYPE, Type34_MARSHAL_REF}, 931 // TPM2B_ECC_PARAMETER_DATA 932 {TPM2B_MTYPE, Type35_MARSHAL_REF}, 933 // TPMS_ECC_POINT_DATA 934 {STRUCTURE_MTYPE, 2, { 935 SET_ELEMENT_TYPE(SIMPLE_STYPE), 936 TPM2B_ECC_PARAMETER_MARSHAL_REF, 937 (UINT16)(offsetof(TPMS_ECC_POINT, x)), 938 SET_ELEMENT_TYPE(SIMPLE_STYPE), 939 TPM2B_ECC_PARAMETER_MARSHAL_REF, 940 (UINT16)(offsetof(TPMS_ECC_POINT, y))}}, 941 // TPM2B_ECC_POINT_DATA 942 {TPM2BS_MTYPE, 943 (UINT8)(offsetof(TPM2B_ECC_POINT, point))|SIZE_EQUAL, 944 UINT16_MARSHAL_REF, 945 TPMS_ECC_POINT_MARSHAL_REF}, 946 // TPMI_ALG_ECC_SCHEME_DATA 947 {MIN_MAX_MTYPE, TWO_BYTES|TAKES_NULL|HAS_BITS, (UINT8)TPM_RC_SCHEME, 948 {TPM_ALG_NULL, 949 RANGE(24, 29, UINT16), 950 (UINT32)((ALG_ECDSA << 0) | (ALG_ECDH << 1) | (ALG_ECDAA << 2) | 951 (ALG_SM2 << 3) | (ALG_ECSCHNORR << 4) | (ALG_ECMQV << 5))}}, 952 // TPMI_ECC_CURVE_DATA 953 {MIN_MAX_MTYPE, TWO_BYTES|HAS_BITS, (UINT8)TPM_RC_CURVE, 954 {RANGE(1, 32, UINT16), 955 (UINT32)((ECC_NIST_P192 << 0) | (ECC_NIST_P224 << 1) | (ECC_NIST_P256 << 2) | 956 (ECC_NIST_P384 << 3) | (ECC_NIST_P521 << 4) | (ECC_BN_P256 << 15) | 957 (ECC_BN_P638 << 16) | (ECC_SM2_P256 << 31))}}, 958 // TPMT_ECC_SCHEME_DATA 959 {STRUCTURE_MTYPE, 2, { 960 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES)|ELEMENT_PROPAGATE, 961 TPMI_ALG_ECC_SCHEME_MARSHAL_REF, 962 (UINT16)(offsetof(TPMT_ECC_SCHEME, scheme)), 963 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 964 TPMU_ASYM_SCHEME_MARSHAL_REF, 965 (UINT16)(offsetof(TPMT_ECC_SCHEME, details))}}, 966 // TPMS_ALGORITHM_DETAIL_ECC_DATA 967 {STRUCTURE_MTYPE, 11, { 968 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 969 TPM_ECC_CURVE_MARSHAL_REF, 970 (UINT16)(offsetof(TPMS_ALGORITHM_DETAIL_ECC, curveID)), 971 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 972 UINT16_MARSHAL_REF, 973 (UINT16)(offsetof(TPMS_ALGORITHM_DETAIL_ECC, keySize)), 974 SET_ELEMENT_TYPE(SIMPLE_STYPE), 975 TPMT_KDF_SCHEME_MARSHAL_REF|NULL_FLAG, 976 (UINT16)(offsetof(TPMS_ALGORITHM_DETAIL_ECC, kdf)), 977 SET_ELEMENT_TYPE(SIMPLE_STYPE), 978 TPMT_ECC_SCHEME_MARSHAL_REF|NULL_FLAG, 979 (UINT16)(offsetof(TPMS_ALGORITHM_DETAIL_ECC, sign)), 980 SET_ELEMENT_TYPE(SIMPLE_STYPE), 981 TPM2B_ECC_PARAMETER_MARSHAL_REF, 982 (UINT16)(offsetof(TPMS_ALGORITHM_DETAIL_ECC, p)), 983 SET_ELEMENT_TYPE(SIMPLE_STYPE), 984 TPM2B_ECC_PARAMETER_MARSHAL_REF, 985 (UINT16)(offsetof(TPMS_ALGORITHM_DETAIL_ECC, a)), 986 SET_ELEMENT_TYPE(SIMPLE_STYPE), 987 TPM2B_ECC_PARAMETER_MARSHAL_REF, 988 (UINT16)(offsetof(TPMS_ALGORITHM_DETAIL_ECC, b)), 989 SET_ELEMENT_TYPE(SIMPLE_STYPE), 990 TPM2B_ECC_PARAMETER_MARSHAL_REF, 991 (UINT16)(offsetof(TPMS_ALGORITHM_DETAIL_ECC, gX)), 992 SET_ELEMENT_TYPE(SIMPLE_STYPE), 993 TPM2B_ECC_PARAMETER_MARSHAL_REF, 994 (UINT16)(offsetof(TPMS_ALGORITHM_DETAIL_ECC, gY)), 995 SET_ELEMENT_TYPE(SIMPLE_STYPE), 996 TPM2B_ECC_PARAMETER_MARSHAL_REF, 997 (UINT16)(offsetof(TPMS_ALGORITHM_DETAIL_ECC, n)), 998 SET_ELEMENT_TYPE(SIMPLE_STYPE), 999 TPM2B_ECC_PARAMETER_MARSHAL_REF, 1000 (UINT16)(offsetof(TPMS_ALGORITHM_DETAIL_ECC, h))}}, 1001 // TPMS_SIGNATURE_RSA_DATA 1002 {STRUCTURE_MTYPE, 2, { 1003 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 1004 TPMI_ALG_HASH_MARSHAL_REF, 1005 (UINT16)(offsetof(TPMS_SIGNATURE_RSA, hash)), 1006 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1007 TPM2B_PUBLIC_KEY_RSA_MARSHAL_REF, 1008 (UINT16)(offsetof(TPMS_SIGNATURE_RSA, sig))}}, 1009 // TPMS_SIGNATURE_ECC_DATA 1010 {STRUCTURE_MTYPE, 3, { 1011 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 1012 TPMI_ALG_HASH_MARSHAL_REF, 1013 (UINT16)(offsetof(TPMS_SIGNATURE_ECC, hash)), 1014 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1015 TPM2B_ECC_PARAMETER_MARSHAL_REF, 1016 (UINT16)(offsetof(TPMS_SIGNATURE_ECC, signatureR)), 1017 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1018 TPM2B_ECC_PARAMETER_MARSHAL_REF, 1019 (UINT16)(offsetof(TPMS_SIGNATURE_ECC, signatureS))}}, 1020 // TPMU_SIGNATURE_DATA 1021 {8, 0, (UINT16)(offsetof(TPMU_SIGNATURE_mst, marshalingTypes)), 1022 {(UINT32)TPM_ALG_ECDAA, (UINT32)TPM_ALG_RSASSA, 1023 (UINT32)TPM_ALG_RSAPSS, (UINT32)TPM_ALG_ECDSA, 1024 (UINT32)TPM_ALG_SM2, (UINT32)TPM_ALG_ECSCHNORR, 1025 (UINT32)TPM_ALG_HMAC, (UINT32)TPM_ALG_NULL}, 1026 {(UINT16)(TPMS_SIGNATURE_ECDAA_MARSHAL_REF), 1027 (UINT16)(TPMS_SIGNATURE_RSASSA_MARSHAL_REF), 1028 (UINT16)(TPMS_SIGNATURE_RSAPSS_MARSHAL_REF), 1029 (UINT16)(TPMS_SIGNATURE_ECDSA_MARSHAL_REF), 1030 (UINT16)(TPMS_SIGNATURE_SM2_MARSHAL_REF), 1031 (UINT16)(TPMS_SIGNATURE_ECSCHNORR_MARSHAL_REF), 1032 (UINT16)(TPMT_HA_MARSHAL_REF), 1033 (UINT16)(UINT0_MARSHAL_REF)} 1034 }, 1035 // TPMT_SIGNATURE_DATA 1036 {STRUCTURE_MTYPE, 2, { 1037 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES)|ELEMENT_PROPAGATE, 1038 TPMI_ALG_SIG_SCHEME_MARSHAL_REF, 1039 (UINT16)(offsetof(TPMT_SIGNATURE, sigAlg)), 1040 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 1041 TPMU_SIGNATURE_MARSHAL_REF, 1042 (UINT16)(offsetof(TPMT_SIGNATURE, signature))}}, 1043 // TPMU_ENCRYPTED_SECRET_DATA 1044 {4, IS_ARRAY_UNION, (UINT16)(offsetof(TPMU_ENCRYPTED_SECRET_mst, marshalingTypes)), 1045 {(UINT32)TPM_ALG_ECC, (UINT32)TPM_ALG_RSA, 1046 (UINT32)TPM_ALG_SYMCIPHER, (UINT32)TPM_ALG_KEYEDHASH}, 1047 {(UINT16)(sizeof(TPMS_ECC_POINT)), (UINT16)(MAX_RSA_KEY_BYTES), 1048 (UINT16)(sizeof(TPM2B_DIGEST)), (UINT16)(sizeof(TPM2B_DIGEST))} 1049 }, 1050 // TPM2B_ENCRYPTED_SECRET_DATA 1051 {TPM2B_MTYPE, Type36_MARSHAL_REF}, 1052 // TPMI_ALG_PUBLIC_DATA 1053 {MIN_MAX_MTYPE, TWO_BYTES|HAS_BITS, (UINT8)TPM_RC_TYPE, 1054 {RANGE(1, 37, UINT16), 1055 (UINT32)((ALG_RSA << 0)|(ALG_KEYEDHASH << 7)), 1056 (UINT32)((ALG_ECC << 2)|(ALG_SYMCIPHER << 4))}}, 1057 // TPMU_PUBLIC_ID_DATA 1058 {4, 0, (UINT16)(offsetof(TPMU_PUBLIC_ID_mst, marshalingTypes)), 1059 {(UINT32)TPM_ALG_KEYEDHASH, (UINT32)TPM_ALG_SYMCIPHER, 1060 (UINT32)TPM_ALG_RSA, (UINT32)TPM_ALG_ECC}, 1061 {(UINT16)(TPM2B_DIGEST_MARSHAL_REF), 1062 (UINT16)(TPM2B_DIGEST_MARSHAL_REF), 1063 (UINT16)(TPM2B_PUBLIC_KEY_RSA_MARSHAL_REF), 1064 (UINT16)(TPMS_ECC_POINT_MARSHAL_REF)} 1065 }, 1066 // TPMS_KEYEDHASH_PARMS_DATA 1067 {STRUCTURE_MTYPE, 1, { 1068 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1069 TPMT_KEYEDHASH_SCHEME_MARSHAL_REF|NULL_FLAG, 1070 (UINT16)(offsetof(TPMS_KEYEDHASH_PARMS, scheme))}}, 1071 // TPMS_RSA_PARMS_DATA 1072 {STRUCTURE_MTYPE, 4, { 1073 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1074 TPMT_SYM_DEF_OBJECT_MARSHAL_REF|NULL_FLAG, 1075 (UINT16)(offsetof(TPMS_RSA_PARMS, symmetric)), 1076 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1077 TPMT_RSA_SCHEME_MARSHAL_REF|NULL_FLAG, 1078 (UINT16)(offsetof(TPMS_RSA_PARMS, scheme)), 1079 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 1080 TPMI_RSA_KEY_BITS_MARSHAL_REF, 1081 (UINT16)(offsetof(TPMS_RSA_PARMS, keyBits)), 1082 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 1083 UINT32_MARSHAL_REF, 1084 (UINT16)(offsetof(TPMS_RSA_PARMS, exponent))}}, 1085 // TPMS_ECC_PARMS_DATA 1086 {STRUCTURE_MTYPE, 4, { 1087 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1088 TPMT_SYM_DEF_OBJECT_MARSHAL_REF|NULL_FLAG, 1089 (UINT16)(offsetof(TPMS_ECC_PARMS, symmetric)), 1090 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1091 TPMT_ECC_SCHEME_MARSHAL_REF|NULL_FLAG, 1092 (UINT16)(offsetof(TPMS_ECC_PARMS, scheme)), 1093 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 1094 TPMI_ECC_CURVE_MARSHAL_REF, 1095 (UINT16)(offsetof(TPMS_ECC_PARMS, curveID)), 1096 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1097 TPMT_KDF_SCHEME_MARSHAL_REF|NULL_FLAG, 1098 (UINT16)(offsetof(TPMS_ECC_PARMS, kdf))}}, 1099 // TPMU_PUBLIC_PARMS_DATA 1100 {4, 0, (UINT16)(offsetof(TPMU_PUBLIC_PARMS_mst, marshalingTypes)), 1101 {(UINT32)TPM_ALG_KEYEDHASH, (UINT32)TPM_ALG_SYMCIPHER, 1102 (UINT32)TPM_ALG_RSA, (UINT32)TPM_ALG_ECC}, 1103 {(UINT16)(TPMS_KEYEDHASH_PARMS_MARSHAL_REF), 1104 (UINT16)(TPMS_SYMCIPHER_PARMS_MARSHAL_REF), 1105 (UINT16)(TPMS_RSA_PARMS_MARSHAL_REF), 1106 (UINT16)(TPMS_ECC_PARMS_MARSHAL_REF)} 1107 }, 1108 // TPMT_PUBLIC_PARMS_DATA 1109 {STRUCTURE_MTYPE, 2, { 1110 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 1111 TPMI_ALG_PUBLIC_MARSHAL_REF, 1112 (UINT16)(offsetof(TPMT_PUBLIC_PARMS, type)), 1113 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 1114 TPMU_PUBLIC_PARMS_MARSHAL_REF, 1115 (UINT16)(offsetof(TPMT_PUBLIC_PARMS, parameters))}}, 1116 // TPMT_PUBLIC_DATA 1117 {STRUCTURE_MTYPE, 6, { 1118 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 1119 TPMI_ALG_PUBLIC_MARSHAL_REF, 1120 (UINT16)(offsetof(TPMT_PUBLIC, type)), 1121 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES)|ELEMENT_PROPAGATE, 1122 TPMI_ALG_HASH_MARSHAL_REF, 1123 (UINT16)(offsetof(TPMT_PUBLIC, nameAlg)), 1124 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 1125 TPMA_OBJECT_MARSHAL_REF, 1126 (UINT16)(offsetof(TPMT_PUBLIC, objectAttributes)), 1127 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1128 TPM2B_DIGEST_MARSHAL_REF, 1129 (UINT16)(offsetof(TPMT_PUBLIC, authPolicy)), 1130 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 1131 TPMU_PUBLIC_PARMS_MARSHAL_REF, 1132 (UINT16)(offsetof(TPMT_PUBLIC, parameters)), 1133 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 1134 TPMU_PUBLIC_ID_MARSHAL_REF, 1135 (UINT16)(offsetof(TPMT_PUBLIC, unique))}}, 1136 // TPM2B_PUBLIC_DATA 1137 {TPM2BS_MTYPE, 1138 (UINT8)(offsetof(TPM2B_PUBLIC, publicArea))|SIZE_EQUAL|ELEMENT_PROPAGATE, 1139 UINT16_MARSHAL_REF, 1140 TPMT_PUBLIC_MARSHAL_REF}, 1141 // TPM2B_TEMPLATE_DATA 1142 {TPM2B_MTYPE, Type37_MARSHAL_REF}, 1143 // TPM2B_PRIVATE_VENDOR_SPECIFIC_DATA 1144 {TPM2B_MTYPE, Type38_MARSHAL_REF}, 1145 // TPMU_SENSITIVE_COMPOSITE_DATA 1146 {4, 0, (UINT16)(offsetof(TPMU_SENSITIVE_COMPOSITE_mst, marshalingTypes)), 1147 {(UINT32)TPM_ALG_RSA, (UINT32)TPM_ALG_ECC, 1148 (UINT32)TPM_ALG_KEYEDHASH, (UINT32)TPM_ALG_SYMCIPHER}, 1149 {(UINT16)(TPM2B_PRIVATE_KEY_RSA_MARSHAL_REF), 1150 (UINT16)(TPM2B_ECC_PARAMETER_MARSHAL_REF), 1151 (UINT16)(TPM2B_SENSITIVE_DATA_MARSHAL_REF), 1152 (UINT16)(TPM2B_SYM_KEY_MARSHAL_REF)} 1153 }, 1154 // TPMT_SENSITIVE_DATA 1155 {STRUCTURE_MTYPE, 4, { 1156 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 1157 TPMI_ALG_PUBLIC_MARSHAL_REF, 1158 (UINT16)(offsetof(TPMT_SENSITIVE, sensitiveType)), 1159 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1160 TPM2B_AUTH_MARSHAL_REF, 1161 (UINT16)(offsetof(TPMT_SENSITIVE, authValue)), 1162 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1163 TPM2B_DIGEST_MARSHAL_REF, 1164 (UINT16)(offsetof(TPMT_SENSITIVE, seedValue)), 1165 SET_ELEMENT_TYPE(UNION_STYPE)|SET_ELEMENT_NUMBER(0), 1166 TPMU_SENSITIVE_COMPOSITE_MARSHAL_REF, 1167 (UINT16)(offsetof(TPMT_SENSITIVE, sensitive))}}, 1168 // TPM2B_SENSITIVE_DATA 1169 {TPM2BS_MTYPE, 1170 (UINT8)(offsetof(TPM2B_SENSITIVE, sensitiveArea)), 1171 UINT16_MARSHAL_REF, 1172 TPMT_SENSITIVE_MARSHAL_REF}, 1173 // TPM2B_PRIVATE_DATA 1174 {TPM2B_MTYPE, Type39_MARSHAL_REF}, 1175 // TPM2B_ID_OBJECT_DATA 1176 {TPM2B_MTYPE, Type40_MARSHAL_REF}, 1177 // TPMS_NV_PIN_COUNTER_PARAMETERS_DATA 1178 {STRUCTURE_MTYPE, 2, { 1179 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 1180 UINT32_MARSHAL_REF, 1181 (UINT16)(offsetof(TPMS_NV_PIN_COUNTER_PARAMETERS, pinCount)), 1182 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 1183 UINT32_MARSHAL_REF, 1184 (UINT16)(offsetof(TPMS_NV_PIN_COUNTER_PARAMETERS, pinLimit))}}, 1185 // TPMA_NV_DATA 1186 {ATTRIBUTES_MTYPE, FOUR_BYTES, 0x01F00300}, 1187 // TPMS_NV_PUBLIC_DATA 1188 {STRUCTURE_MTYPE, 5, { 1189 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 1190 TPMI_RH_NV_INDEX_MARSHAL_REF, 1191 (UINT16)(offsetof(TPMS_NV_PUBLIC, nvIndex)), 1192 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 1193 TPMI_ALG_HASH_MARSHAL_REF, 1194 (UINT16)(offsetof(TPMS_NV_PUBLIC, nameAlg)), 1195 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 1196 TPMA_NV_MARSHAL_REF, 1197 (UINT16)(offsetof(TPMS_NV_PUBLIC, attributes)), 1198 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1199 TPM2B_DIGEST_MARSHAL_REF, 1200 (UINT16)(offsetof(TPMS_NV_PUBLIC, authPolicy)), 1201 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 1202 Type41_MARSHAL_REF, 1203 (UINT16)(offsetof(TPMS_NV_PUBLIC, dataSize))}}, 1204 // TPM2B_NV_PUBLIC_DATA 1205 {TPM2BS_MTYPE, 1206 (UINT8)(offsetof(TPM2B_NV_PUBLIC, nvPublic))|SIZE_EQUAL, 1207 UINT16_MARSHAL_REF, 1208 TPMS_NV_PUBLIC_MARSHAL_REF}, 1209 // TPM2B_CONTEXT_SENSITIVE_DATA 1210 {TPM2B_MTYPE, Type42_MARSHAL_REF}, 1211 // TPMS_CONTEXT_DATA_DATA 1212 {STRUCTURE_MTYPE, 2, { 1213 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1214 TPM2B_DIGEST_MARSHAL_REF, 1215 (UINT16)(offsetof(TPMS_CONTEXT_DATA, integrity)), 1216 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1217 TPM2B_CONTEXT_SENSITIVE_MARSHAL_REF, 1218 (UINT16)(offsetof(TPMS_CONTEXT_DATA, encrypted))}}, 1219 // TPM2B_CONTEXT_DATA_DATA 1220 {TPM2B_MTYPE, Type43_MARSHAL_REF}, 1221 // TPMS_CONTEXT_DATA 1222 {STRUCTURE_MTYPE, 4, { 1223 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(EIGHT_BYTES), 1224 UINT64_MARSHAL_REF, 1225 (UINT16)(offsetof(TPMS_CONTEXT, sequence)), 1226 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 1227 TPMI_DH_SAVED_MARSHAL_REF, 1228 (UINT16)(offsetof(TPMS_CONTEXT, savedHandle)), 1229 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 1230 TPMI_RH_HIERARCHY_MARSHAL_REF|NULL_FLAG, 1231 (UINT16)(offsetof(TPMS_CONTEXT, hierarchy)), 1232 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1233 TPM2B_CONTEXT_DATA_MARSHAL_REF, 1234 (UINT16)(offsetof(TPMS_CONTEXT, contextBlob))}}, 1235 // TPMS_CREATION_DATA_DATA 1236 {STRUCTURE_MTYPE, 7, { 1237 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1238 TPML_PCR_SELECTION_MARSHAL_REF, 1239 (UINT16)(offsetof(TPMS_CREATION_DATA, pcrSelect)), 1240 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1241 TPM2B_DIGEST_MARSHAL_REF, 1242 (UINT16)(offsetof(TPMS_CREATION_DATA, pcrDigest)), 1243 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(ONE_BYTES), 1244 TPMA_LOCALITY_MARSHAL_REF, 1245 (UINT16)(offsetof(TPMS_CREATION_DATA, locality)), 1246 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(TWO_BYTES), 1247 TPM_ALG_ID_MARSHAL_REF, 1248 (UINT16)(offsetof(TPMS_CREATION_DATA, parentNameAlg)), 1249 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1250 TPM2B_NAME_MARSHAL_REF, 1251 (UINT16)(offsetof(TPMS_CREATION_DATA, parentName)), 1252 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1253 TPM2B_NAME_MARSHAL_REF, 1254 (UINT16)(offsetof(TPMS_CREATION_DATA, parentQualifiedName)), 1255 SET_ELEMENT_TYPE(SIMPLE_STYPE), 1256 TPM2B_DATA_MARSHAL_REF, 1257 (UINT16)(offsetof(TPMS_CREATION_DATA, outsideInfo))}}, 1258 // TPM2B_CREATION_DATA_DATA 1259 {TPM2BS_MTYPE, 1260 (UINT8)(offsetof(TPM2B_CREATION_DATA, creationData))|SIZE_EQUAL, 1261 UINT16_MARSHAL_REF, 1262 TPMS_CREATION_DATA_MARSHAL_REF}, 1263 // TPM_AT_DATA 1264 {TABLE_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_VALUE, 4, 1265 {TPM_AT_ANY, TPM_AT_ERROR, TPM_AT_PV1, TPM_AT_VEND}}, 1266 // TPMS_AC_OUTPUT_DATA 1267 {STRUCTURE_MTYPE, 2, { 1268 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 1269 TPM_AT_MARSHAL_REF, 1270 (UINT16)(offsetof(TPMS_AC_OUTPUT, tag)), 1271 SET_ELEMENT_TYPE(SIMPLE_STYPE)|SET_ELEMENT_SIZE(FOUR_BYTES), 1272 UINT32_MARSHAL_REF, 1273 (UINT16)(offsetof(TPMS_AC_OUTPUT, data))}}, 1274 // TPML_AC_CAPABILITIES_DATA 1275 {LIST_MTYPE, 1276 (UINT8)(offsetof(TPML_AC_CAPABILITIES, acCapabilities)), 1277 Type44_MARSHAL_REF, 1278 TPMS_AC_OUTPUT_ARRAY_MARSHAL_INDEX}, 1279 // Type00_DATA 1280 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1281 {RANGE(0, sizeof(TPMU_HA), UINT16)}}, 1282 // Type01_DATA 1283 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1284 {RANGE(0, sizeof(TPMT_HA), UINT16)}}, 1285 // Type02_DATA 1286 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1287 {RANGE(0, 1024, UINT16)}}, 1288 // Type03_DATA 1289 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1290 {RANGE(0, MAX_DIGEST_BUFFER, UINT16)}}, 1291 // Type04_DATA 1292 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1293 {RANGE(0, MAX_NV_BUFFER_SIZE, UINT16)}}, 1294 // Type05_DATA 1295 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1296 {RANGE(0, sizeof(UINT64), UINT16)}}, 1297 // Type06_DATA 1298 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1299 {RANGE(0, MAX_SYM_BLOCK_SIZE, UINT16)}}, 1300 // Type07_DATA 1301 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1302 {RANGE(0, sizeof(TPMU_NAME), UINT16)}}, 1303 // Type08_DATA 1304 {MIN_MAX_MTYPE, ONE_BYTES, (UINT8)TPM_RC_VALUE, 1305 {RANGE(PCR_SELECT_MIN, PCR_SELECT_MAX, UINT8)}}, 1306 // Type10_DATA 1307 {TABLE_MTYPE, TWO_BYTES, (UINT8)TPM_RC_TAG, 1, 1308 {TPM_ST_CREATION}}, 1309 // Type11_DATA 1310 {TABLE_MTYPE, TWO_BYTES, (UINT8)TPM_RC_TAG, 1, 1311 {TPM_ST_VERIFIED}}, 1312 // Type12_DATA 1313 {TABLE_MTYPE, TWO_BYTES, (UINT8)TPM_RC_TAG, 2, 1314 {TPM_ST_AUTH_SECRET, TPM_ST_AUTH_SIGNED}}, 1315 // Type13_DATA 1316 {TABLE_MTYPE, TWO_BYTES, (UINT8)TPM_RC_TAG, 1, 1317 {TPM_ST_HASHCHECK}}, 1318 // Type15_DATA 1319 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_SIZE, 1320 {RANGE(0, MAX_CAP_CC, UINT32)}}, 1321 // Type17_DATA 1322 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_SIZE, 1323 {RANGE(0, MAX_ALG_LIST_SIZE, UINT32)}}, 1324 // Type18_DATA 1325 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_SIZE, 1326 {RANGE(0, MAX_CAP_HANDLES, UINT32)}}, 1327 // Type19_DATA 1328 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_SIZE, 1329 {RANGE(2, 8, UINT32)}}, 1330 // Type20_DATA 1331 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_SIZE, 1332 {RANGE(0, HASH_COUNT, UINT32)}}, 1333 // Type22_DATA 1334 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_SIZE, 1335 {RANGE(0, MAX_CAP_ALGS, UINT32)}}, 1336 // Type23_DATA 1337 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_SIZE, 1338 {RANGE(0, MAX_TPM_PROPERTIES, UINT32)}}, 1339 // Type24_DATA 1340 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_SIZE, 1341 {RANGE(0, MAX_PCR_PROPERTIES, UINT32)}}, 1342 // Type25_DATA 1343 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_SIZE, 1344 {RANGE(0, MAX_ECC_CURVES, UINT32)}}, 1345 // Type26_DATA 1346 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_SIZE, 1347 {RANGE(0, MAX_TAGGED_POLICIES, UINT32)}}, 1348 // Type27_DATA 1349 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_SIZE, 1350 {RANGE(0, MAX_ACT_DATA, UINT32)}}, 1351 // Type28_DATA 1352 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1353 {RANGE(0, sizeof(TPMS_ATTEST), UINT16)}}, 1354 // Type29_DATA 1355 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1356 {RANGE(0, MAX_SYM_KEY_BYTES, UINT16)}}, 1357 // Type30_DATA 1358 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1359 {RANGE(0, LABEL_MAX_BUFFER, UINT16)}}, 1360 // Type31_DATA 1361 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1362 {RANGE(0, sizeof(TPMS_DERIVE), UINT16)}}, 1363 // Type32_DATA 1364 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1365 {RANGE(0, sizeof(TPMU_SENSITIVE_CREATE), UINT16)}}, 1366 // Type33_DATA 1367 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1368 {RANGE(0, MAX_RSA_KEY_BYTES, UINT16)}}, 1369 // Type34_DATA 1370 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1371 {RANGE(0, RSA_PRIVATE_SIZE, UINT16)}}, 1372 // Type35_DATA 1373 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1374 {RANGE(0, MAX_ECC_KEY_BYTES, UINT16)}}, 1375 // Type36_DATA 1376 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1377 {RANGE(0, sizeof(TPMU_ENCRYPTED_SECRET), UINT16)}}, 1378 // Type37_DATA 1379 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1380 {RANGE(0, sizeof(TPMT_PUBLIC), UINT16)}}, 1381 // Type38_DATA 1382 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1383 {RANGE(0, PRIVATE_VENDOR_SPECIFIC_BYTES, UINT16)}}, 1384 // Type39_DATA 1385 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1386 {RANGE(0, sizeof(_PRIVATE), UINT16)}}, 1387 // Type40_DATA 1388 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1389 {RANGE(0, sizeof(TPMS_ID_OBJECT), UINT16)}}, 1390 // Type41_DATA 1391 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1392 {RANGE(0, MAX_NV_INDEX_SIZE, UINT16)}}, 1393 // Type42_DATA 1394 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1395 {RANGE(0, MAX_CONTEXT_SIZE, UINT16)}}, 1396 // Type43_DATA 1397 {MIN_MAX_MTYPE, TWO_BYTES, (UINT8)TPM_RC_SIZE, 1398 {RANGE(0, sizeof(TPMS_CONTEXT_DATA), UINT16)}}, 1399 // Type44_DATA 1400 {MIN_MAX_MTYPE, FOUR_BYTES, (UINT8)TPM_RC_SIZE, 1401 {RANGE(0, MAX_AC_CAPABILITIES, UINT32)}} 1402 }; 1403 #endif // TABLE_DRIVEN_MARSHAL 1404