Stefan Thom / SPITIS_TPM20
Revision:
3:4b9ad18eae02
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Marshal.h	Sat Apr 11 04:01:54 2015 +0000
@@ -0,0 +1,1411 @@
+/* mbed TCG SPI TPM 2.0 TIS 1.3 driver,
+ * Copyright (c) 2015, Microsoft Coprporation Inc.
+ * by Stefan Thom (LordOfDorks) StefanTh@Microsoft.com, Stefan@ThomsR.Us
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ */
+
+// Table 3 -- BaseTypes BaseTypes <I/O>
+UINT16 
+UINT8_Marshal(UINT8 *source, BYTE **buffer, INT32 *size);
+
+TPM_RC  
+UINT8_Unmarshal(UINT8 *target, BYTE **buffer, INT32 *size);
+
+UINT16 
+BYTE_Marshal(BYTE *source, BYTE **buffer, INT32 *size);
+
+TPM_RC  
+BYTE_Unmarshal(BYTE *target, BYTE **buffer, INT32 *size);
+
+UINT16 
+INT8_Marshal(INT8 *source, BYTE **buffer, INT32 *size);
+
+TPM_RC  
+INT8_Unmarshal(INT8 *target, BYTE **buffer, INT32 *size);
+
+UINT16 
+BOOL_Marshal(BOOL *source, BYTE **buffer, INT32 *size);
+
+TPM_RC  
+BOOL_Unmarshal(BOOL *target, BYTE **buffer, INT32 *size);
+
+UINT16 
+UINT16_Marshal(UINT16 *source, BYTE **buffer, INT32 *size);
+
+TPM_RC  
+UINT16_Unmarshal(UINT16 *target, BYTE **buffer, INT32 *size);
+
+UINT16 
+INT16_Marshal(INT16 *source, BYTE **buffer, INT32 *size);
+
+TPM_RC  
+INT16_Unmarshal(INT16 *target, BYTE **buffer, INT32 *size);
+
+UINT16 
+UINT32_Marshal(UINT32 *source, BYTE **buffer, INT32 *size);
+
+TPM_RC  
+UINT32_Unmarshal(UINT32 *target, BYTE **buffer, INT32 *size);
+
+UINT16 
+INT32_Marshal(INT32 *source, BYTE **buffer, INT32 *size);
+
+TPM_RC  
+INT32_Unmarshal(INT32 *target, BYTE **buffer, INT32 *size);
+
+UINT16 
+UINT64_Marshal(UINT64 *source, BYTE **buffer, INT32 *size);
+
+TPM_RC  
+UINT64_Unmarshal(UINT64 *target, BYTE **buffer, INT32 *size);
+
+UINT16 
+INT64_Marshal(INT64 *source, BYTE **buffer, INT32 *size);
+
+TPM_RC  
+INT64_Unmarshal(INT64 *target, BYTE **buffer, INT32 *size);
+
+
+
+// Table 4 -- DocumentationClarity Types <I/O>
+UINT16
+TPM_ALGORITHM_ID_Marshal(TPM_ALGORITHM_ID *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_ALGORITHM_ID_Unmarshal(TPM_ALGORITHM_ID *target, BYTE **buffer, INT32 *size);
+UINT16
+TPM_MODIFIER_INDICATOR_Marshal(TPM_MODIFIER_INDICATOR *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_MODIFIER_INDICATOR_Unmarshal(TPM_MODIFIER_INDICATOR *target, BYTE **buffer, INT32 *size);
+UINT16
+TPM_AUTHORIZATION_SIZE_Marshal(TPM_AUTHORIZATION_SIZE *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_AUTHORIZATION_SIZE_Unmarshal(TPM_AUTHORIZATION_SIZE *target, BYTE **buffer, INT32 *size);
+UINT16
+TPM_PARAMETER_SIZE_Marshal(TPM_PARAMETER_SIZE *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_PARAMETER_SIZE_Unmarshal(TPM_PARAMETER_SIZE *target, BYTE **buffer, INT32 *size);
+UINT16
+TPM_KEY_SIZE_Marshal(TPM_KEY_SIZE *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_KEY_SIZE_Unmarshal(TPM_KEY_SIZE *target, BYTE **buffer, INT32 *size);
+UINT16
+TPM_KEY_BITS_Marshal(TPM_KEY_BITS *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_KEY_BITS_Unmarshal(TPM_KEY_BITS *target, BYTE **buffer, INT32 *size);
+
+
+
+
+// Table 6 -- TPM_GENERATED Constants <O,S>
+UINT16
+TPM_GENERATED_Marshal(TPM_GENERATED *source, BYTE **buffer, INT32 *size);
+
+
+// Table 7 -- TPM_ALG_ID Constants <I/O,S>
+UINT16
+TPM_ALG_ID_Marshal(TPM_ALG_ID *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_ALG_ID_Unmarshal(TPM_ALG_ID *target, BYTE **buffer, INT32 *size);
+
+
+// Table 8 -- TPM_ECC_CURVE Constants <I/O,S>
+UINT16
+TPM_ECC_CURVE_Marshal(TPM_ECC_CURVE *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_ECC_CURVE_Unmarshal(TPM_ECC_CURVE *target, BYTE **buffer, INT32 *size);
+
+
+// Table 11 -- TPM_CC Constants <I/O,S>
+UINT16
+TPM_CC_Marshal(TPM_CC *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_CC_Unmarshal(TPM_CC *target, BYTE **buffer, INT32 *size);
+
+
+// Table 15 -- TPM_RC Constants <O,S>
+UINT16
+TPM_RC_Marshal(TPM_RC *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_RC_Unmarshal(TPM_RC *target, BYTE **buffer, INT32 *size);
+
+// Table 16 -- TPM_CLOCK_ADJUST Constants <I>
+TPM_RC
+TPM_CLOCK_ADJUST_Unmarshal(TPM_CLOCK_ADJUST *target, BYTE **buffer, INT32 *size);
+UINT16
+TPM_CLOCK_ADJUST_Marshal(TPM_CLOCK_ADJUST *source, BYTE **buffer, INT32 *size);
+
+// Table 17 -- TPM_EO Constants <I/O>
+UINT16
+TPM_EO_Marshal(TPM_EO *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_EO_Unmarshal(TPM_EO *target, BYTE **buffer, INT32 *size);
+
+
+// Table 18 -- TPM_ST Constants <I/O,S>
+UINT16
+TPM_ST_Marshal(TPM_ST *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_ST_Unmarshal(TPM_ST *target, BYTE **buffer, INT32 *size);
+
+
+// Table 19 -- TPM_SU Constants <I>
+TPM_RC
+TPM_SU_Unmarshal(TPM_SU *target, BYTE **buffer, INT32 *size);
+UINT16
+TPM_SU_Marshal(TPM_SU *source, BYTE **buffer, INT32 *size);
+
+// Table 20 -- TPM_SE Constants <I>
+TPM_RC
+TPM_SE_Unmarshal(TPM_SE *target, BYTE **buffer, INT32 *size);
+UINT16
+TPM_SE_Marshal(TPM_SE *source, BYTE **buffer, INT32 *size);
+
+// Table 21 -- TPM_CAP Constants <I/O>
+UINT16
+TPM_CAP_Marshal(TPM_CAP *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_CAP_Unmarshal(TPM_CAP *target, BYTE **buffer, INT32 *size);
+
+
+// Table 22 -- TPM_PT Constants <I/O,S>
+UINT16
+TPM_PT_Marshal(TPM_PT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_PT_Unmarshal(TPM_PT *target, BYTE **buffer, INT32 *size);
+
+
+// Table 23 -- TPM_PT_PCR Constants <I/O,S>
+UINT16
+TPM_PT_PCR_Marshal(TPM_PT_PCR *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_PT_PCR_Unmarshal(TPM_PT_PCR *target, BYTE **buffer, INT32 *size);
+
+
+// Table 24 -- TPM_PS Constants <O,S>
+UINT16
+TPM_PS_Marshal(TPM_PS *source, BYTE **buffer, INT32 *size);
+
+
+// Table 25 -- Handles Types <I/O>
+UINT16
+TPM_HANDLE_Marshal(TPM_HANDLE *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM_HANDLE_Unmarshal(TPM_HANDLE *target, BYTE **buffer, INT32 *size);
+
+
+
+
+// Table 27 -- TPM_RH Constants <I,S>
+TPM_RC
+TPM_RH_Unmarshal(TPM_RH *target, BYTE **buffer, INT32 *size);
+
+
+// Table 28 -- TPM_HC Constants <I,S>
+TPM_RC
+TPM_HC_Unmarshal(TPM_HC *target, BYTE **buffer, INT32 *size);
+
+
+// Table 29 -- TPMA_ALGORITHM Bits <I/O>
+UINT16
+TPMA_ALGORITHM_Marshal(TPMA_ALGORITHM *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMA_ALGORITHM_Unmarshal(TPMA_ALGORITHM *target, BYTE **buffer, INT32 *size);
+
+
+// Table 30 -- TPMA_OBJECT Bits <I/O>
+UINT16
+TPMA_OBJECT_Marshal(TPMA_OBJECT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMA_OBJECT_Unmarshal(TPMA_OBJECT *target, BYTE **buffer, INT32 *size);
+
+
+// Table 31 -- TPMA_SESSION Bits <I/O>
+UINT16
+TPMA_SESSION_Marshal(TPMA_SESSION *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMA_SESSION_Unmarshal(TPMA_SESSION *target, BYTE **buffer, INT32 *size);
+
+
+// Table 32 -- TPMA_LOCALITY Bits <I/O>
+UINT16
+TPMA_LOCALITY_Marshal(TPMA_LOCALITY *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMA_LOCALITY_Unmarshal(TPMA_LOCALITY *target, BYTE **buffer, INT32 *size);
+
+
+// Table 33 -- TPMA_PERMANENT Bits <O,S>
+UINT16
+TPMA_PERMANENT_Marshal(TPMA_PERMANENT *source, BYTE **buffer, INT32 *size);
+
+
+// Table 34 -- TPMA_STARTUP_CLEAR Bits <O,S>
+UINT16
+TPMA_STARTUP_CLEAR_Marshal(TPMA_STARTUP_CLEAR *source, BYTE **buffer, INT32 *size);
+
+
+// Table 35 -- TPMA_MEMORY Bits <O,S>
+UINT16
+TPMA_MEMORY_Marshal(TPMA_MEMORY *source, BYTE **buffer, INT32 *size);
+
+
+// Table 36 -- TPMA_CC Bits <O,S>
+UINT16
+TPMA_CC_Marshal(TPMA_CC *source, BYTE **buffer, INT32 *size);
+
+
+// Table 37 -- TPMI_YES_NO Type <I/O>
+UINT16
+TPMI_YES_NO_Marshal(TPMI_YES_NO *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_YES_NO_Unmarshal(TPMI_YES_NO *target, BYTE **buffer, INT32 *size);
+
+
+// Table 38 -- TPMI_DH_OBJECT Type <I/O>
+UINT16
+TPMI_DH_OBJECT_Marshal(TPMI_DH_OBJECT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_DH_OBJECT_Unmarshal(TPMI_DH_OBJECT *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 39 -- TPMI_DH_PERSISTENT Type <I/O>
+UINT16
+TPMI_DH_PERSISTENT_Marshal(TPMI_DH_PERSISTENT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_DH_PERSISTENT_Unmarshal(TPMI_DH_PERSISTENT *target, BYTE **buffer, INT32 *size);
+
+
+// Table 40 -- TPMI_DH_ENTITY Type <I>
+TPM_RC
+TPMI_DH_ENTITY_Unmarshal(TPMI_DH_ENTITY *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 41 -- TPMI_DH_PCR Type <I>
+TPM_RC
+TPMI_DH_PCR_Unmarshal(TPMI_DH_PCR *target, BYTE **buffer, INT32 *size, BOOL flag);
+UINT16
+TPMI_DH_PCR_Marshal(TPMI_DH_PCR *source, BYTE **buffer, INT32 *size);
+
+// Table 42 -- TPMI_SH_AUTH_SESSION Type <I/O>
+UINT16
+TPMI_SH_AUTH_SESSION_Marshal(TPMI_SH_AUTH_SESSION *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_SH_AUTH_SESSION_Unmarshal(TPMI_SH_AUTH_SESSION *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 43 -- TPMI_SH_HMAC Type <I/O>
+UINT16
+TPMI_SH_HMAC_Marshal(TPMI_SH_HMAC *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_SH_HMAC_Unmarshal(TPMI_SH_HMAC *target, BYTE **buffer, INT32 *size);
+
+
+// Table 44 -- TPMI_SH_POLICY Type <I/O>
+UINT16
+TPMI_SH_POLICY_Marshal(TPMI_SH_POLICY *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_SH_POLICY_Unmarshal(TPMI_SH_POLICY *target, BYTE **buffer, INT32 *size);
+
+
+// Table 45 -- TPMI_DH_CONTEXT Type <I/O>
+UINT16
+TPMI_DH_CONTEXT_Marshal(TPMI_DH_CONTEXT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_DH_CONTEXT_Unmarshal(TPMI_DH_CONTEXT *target, BYTE **buffer, INT32 *size);
+
+
+// Table 46 -- TPMI_RH_HIERARCHY Type <I/O>
+UINT16
+TPMI_RH_HIERARCHY_Marshal(TPMI_RH_HIERARCHY *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_RH_HIERARCHY_Unmarshal(TPMI_RH_HIERARCHY *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 47 -- TPMI_RH_HIERARCHY_AUTH Type <I>
+TPM_RC
+TPMI_RH_HIERARCHY_AUTH_Unmarshal(TPMI_RH_HIERARCHY_AUTH *target, BYTE **buffer, INT32 *size);
+
+
+// Table 48 -- TPMI_RH_PLATFORM Type <I>
+TPM_RC
+TPMI_RH_PLATFORM_Unmarshal(TPMI_RH_PLATFORM *target, BYTE **buffer, INT32 *size);
+
+
+// Table 49 -- TPMI_RH_OWNER Type <I>
+TPM_RC
+TPMI_RH_OWNER_Unmarshal(TPMI_RH_OWNER *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 50 -- TPMI_RH_ENDORSEMENT Type <I>
+TPM_RC
+TPMI_RH_ENDORSEMENT_Unmarshal(TPMI_RH_ENDORSEMENT *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 51 -- TPMI_RH_PROVISION Type <I>
+TPM_RC
+TPMI_RH_PROVISION_Unmarshal(TPMI_RH_PROVISION *target, BYTE **buffer, INT32 *size);
+
+
+// Table 52 -- TPMI_RH_CLEAR Type <I>
+TPM_RC
+TPMI_RH_CLEAR_Unmarshal(TPMI_RH_CLEAR *target, BYTE **buffer, INT32 *size);
+
+
+// Table 53 -- TPMI_RH_NV_AUTH Type <I>
+TPM_RC
+TPMI_RH_NV_AUTH_Unmarshal(TPMI_RH_NV_AUTH *target, BYTE **buffer, INT32 *size);
+
+
+// Table 54 -- TPMI_RH_LOCKOUT Type <I>
+TPM_RC
+TPMI_RH_LOCKOUT_Unmarshal(TPMI_RH_LOCKOUT *target, BYTE **buffer, INT32 *size);
+
+
+// Table 55 -- TPMI_RH_NV_INDEX Type <I/O>
+UINT16
+TPMI_RH_NV_INDEX_Marshal(TPMI_RH_NV_INDEX *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_RH_NV_INDEX_Unmarshal(TPMI_RH_NV_INDEX *target, BYTE **buffer, INT32 *size);
+
+
+// Table 56 -- TPMI_ALG_HASH Type <I/O>
+UINT16
+TPMI_ALG_HASH_Marshal(TPMI_ALG_HASH *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ALG_HASH_Unmarshal(TPMI_ALG_HASH *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 57 -- TPMI_ALG_ASYM Type <I/O>
+UINT16
+TPMI_ALG_ASYM_Marshal(TPMI_ALG_ASYM *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ALG_ASYM_Unmarshal(TPMI_ALG_ASYM *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 58 -- TPMI_ALG_SYM Type <I/O>
+UINT16
+TPMI_ALG_SYM_Marshal(TPMI_ALG_SYM *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ALG_SYM_Unmarshal(TPMI_ALG_SYM *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 59 -- TPMI_ALG_SYM_OBJECT Type <I/O>
+UINT16
+TPMI_ALG_SYM_OBJECT_Marshal(TPMI_ALG_SYM_OBJECT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ALG_SYM_OBJECT_Unmarshal(TPMI_ALG_SYM_OBJECT *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 60 -- TPMI_ALG_SYM_MODE Type <I/O>
+UINT16
+TPMI_ALG_SYM_MODE_Marshal(TPMI_ALG_SYM_MODE *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ALG_SYM_MODE_Unmarshal(TPMI_ALG_SYM_MODE *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 61 -- TPMI_ALG_KDF Type <I/O>
+UINT16
+TPMI_ALG_KDF_Marshal(TPMI_ALG_KDF *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ALG_KDF_Unmarshal(TPMI_ALG_KDF *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 62 -- TPMI_ALG_SIG_SCHEME Type <I/O>
+UINT16
+TPMI_ALG_SIG_SCHEME_Marshal(TPMI_ALG_SIG_SCHEME *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ALG_SIG_SCHEME_Unmarshal(TPMI_ALG_SIG_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 63 -- TPMI_ECC_KEY_EXCHANGE Type <I/O>
+UINT16
+TPMI_ECC_KEY_EXCHANGE_Marshal(TPMI_ECC_KEY_EXCHANGE *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ECC_KEY_EXCHANGE_Unmarshal(TPMI_ECC_KEY_EXCHANGE *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 64 -- TPMI_ST_COMMAND_TAG Type <I/O>
+UINT16
+TPMI_ST_COMMAND_TAG_Marshal(TPMI_ST_COMMAND_TAG *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ST_COMMAND_TAG_Unmarshal(TPMI_ST_COMMAND_TAG *target, BYTE **buffer, INT32 *size);
+
+
+// Table 65 -- TPMS_ALGORITHM_DESCRIPTION Structure <O,S>
+UINT16
+TPMS_ALGORITHM_DESCRIPTION_Marshal(TPMS_ALGORITHM_DESCRIPTION *source, BYTE **buffer, INT32 *size);
+
+
+// Table 66 -- TPMU_HA Union <I/O,S>
+UINT16
+TPMU_HA_Marshal(TPMU_HA *source, BYTE **buffer, INT32 *size, UINT32 selector);
+TPM_RC
+TPMU_HA_Unmarshal(TPMU_HA *target, BYTE **buffer, INT32 *size, UINT32 selector);
+
+
+// Table 67 -- TPMT_HA Structure <I/O>
+UINT16
+TPMT_HA_Marshal(TPMT_HA *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_HA_Unmarshal(TPMT_HA *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 68 -- TPM2B_DIGEST Structure <I/O>
+UINT16
+TPM2B_DIGEST_Marshal(TPM2B_DIGEST *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_DIGEST_Unmarshal(TPM2B_DIGEST *target, BYTE **buffer, INT32 *size);
+
+
+// Table 69 -- TPM2B_DATA Structure <I/O>
+UINT16
+TPM2B_DATA_Marshal(TPM2B_DATA *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_DATA_Unmarshal(TPM2B_DATA *target, BYTE **buffer, INT32 *size);
+
+
+// Table 70 -- TPM2B_NONCE Types <I/O>
+UINT16
+TPM2B_NONCE_Marshal(TPM2B_NONCE *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_NONCE_Unmarshal(TPM2B_NONCE *target, BYTE **buffer, INT32 *size);
+
+
+
+// Table 71 -- TPM2B_AUTH Types <I/O>
+UINT16
+TPM2B_AUTH_Marshal(TPM2B_AUTH *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_AUTH_Unmarshal(TPM2B_AUTH *target, BYTE **buffer, INT32 *size);
+
+
+
+// Table 72 -- TPM2B_OPERAND Types <I/O>
+UINT16
+TPM2B_OPERAND_Marshal(TPM2B_OPERAND *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_OPERAND_Unmarshal(TPM2B_OPERAND *target, BYTE **buffer, INT32 *size);
+
+
+
+// Table 73 -- TPM2B_EVENT Structure <I/O>
+UINT16
+TPM2B_EVENT_Marshal(TPM2B_EVENT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_EVENT_Unmarshal(TPM2B_EVENT *target, BYTE **buffer, INT32 *size);
+
+
+// Table 74 -- TPM2B_MAX_BUFFER Structure <I/O>
+UINT16
+TPM2B_MAX_BUFFER_Marshal(TPM2B_MAX_BUFFER *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_MAX_BUFFER_Unmarshal(TPM2B_MAX_BUFFER *target, BYTE **buffer, INT32 *size);
+
+
+// Table 75 -- TPM2B_MAX_NV_BUFFER Structure <I/O>
+UINT16
+TPM2B_MAX_NV_BUFFER_Marshal(TPM2B_MAX_NV_BUFFER *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_MAX_NV_BUFFER_Unmarshal(TPM2B_MAX_NV_BUFFER *target, BYTE **buffer, INT32 *size);
+
+
+// Table 76 -- TPM2B_TIMEOUT Structure <I/O>
+UINT16
+TPM2B_TIMEOUT_Marshal(TPM2B_TIMEOUT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_TIMEOUT_Unmarshal(TPM2B_TIMEOUT *target, BYTE **buffer, INT32 *size);
+
+
+// Table 77 -- TPM2B_IV Structure <I/O>
+UINT16
+TPM2B_IV_Marshal(TPM2B_IV *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_IV_Unmarshal(TPM2B_IV *target, BYTE **buffer, INT32 *size);
+
+
+
+// Table 79 -- TPM2B_NAME Structure <I/O>
+UINT16
+TPM2B_NAME_Marshal(TPM2B_NAME *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_NAME_Unmarshal(TPM2B_NAME *target, BYTE **buffer, INT32 *size);
+
+
+// Table 80 -- TPMS_PCR_SELECT Structure <I/O>
+UINT16
+TPMS_PCR_SELECT_Marshal(TPMS_PCR_SELECT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_PCR_SELECT_Unmarshal(TPMS_PCR_SELECT *target, BYTE **buffer, INT32 *size);
+
+
+// Table 81 -- TPMS_PCR_SELECTION Structure <I/O>
+UINT16
+TPMS_PCR_SELECTION_Marshal(TPMS_PCR_SELECTION *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_PCR_SELECTION_Unmarshal(TPMS_PCR_SELECTION *target, BYTE **buffer, INT32 *size);
+
+
+// Table 84 -- TPMT_TK_CREATION Structure <I/O>
+UINT16
+TPMT_TK_CREATION_Marshal(TPMT_TK_CREATION *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_TK_CREATION_Unmarshal(TPMT_TK_CREATION *target, BYTE **buffer, INT32 *size);
+
+
+// Table 85 -- TPMT_TK_VERIFIED Structure <I/O>
+UINT16
+TPMT_TK_VERIFIED_Marshal(TPMT_TK_VERIFIED *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_TK_VERIFIED_Unmarshal(TPMT_TK_VERIFIED *target, BYTE **buffer, INT32 *size);
+
+
+// Table 86 -- TPMT_TK_AUTH Structure <I/O>
+UINT16
+TPMT_TK_AUTH_Marshal(TPMT_TK_AUTH *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_TK_AUTH_Unmarshal(TPMT_TK_AUTH *target, BYTE **buffer, INT32 *size);
+
+
+// Table 87 -- TPMT_TK_HASHCHECK Structure <I/O>
+UINT16
+TPMT_TK_HASHCHECK_Marshal(TPMT_TK_HASHCHECK *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_TK_HASHCHECK_Unmarshal(TPMT_TK_HASHCHECK *target, BYTE **buffer, INT32 *size);
+
+
+// Table 88 -- TPMS_ALG_PROPERTY Structure <O,S>
+UINT16
+TPMS_ALG_PROPERTY_Marshal(TPMS_ALG_PROPERTY *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_ALG_PROPERTY_Unmarshal(TPMS_ALG_PROPERTY *target, BYTE **buffer, INT32 *size);
+
+
+// Table 89 -- TPMS_TAGGED_PROPERTY Structure <O,S>
+TPM_RC
+TPMS_TAGGED_PROPERTY_Unmarshal(TPMS_TAGGED_PROPERTY *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_TAGGED_PROPERTY_Marshal(TPMS_TAGGED_PROPERTY *source, BYTE **buffer, INT32 *size);
+
+
+// Table 90 -- TPMS_TAGGED_PCR_SELECT Structure <O,S>
+TPM_RC
+TPMS_TAGGED_PCR_SELECT_Unmarshal(TPMS_TAGGED_PCR_SELECT *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_TAGGED_PCR_SELECT_Marshal(TPMS_TAGGED_PCR_SELECT *source, BYTE **buffer, INT32 *size);
+
+
+// Table 91 -- TPML_CC Structure <I/O>
+UINT16
+TPML_CC_Marshal(TPML_CC *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPML_CC_Unmarshal(TPML_CC *target, BYTE **buffer, INT32 *size);
+
+
+// Table 92 -- TPML_CCA Structure <O,S>
+UINT16
+TPML_CCA_Marshal(TPML_CCA *source, BYTE **buffer, INT32 *size);
+
+
+// Table 93 -- TPML_ALG Structure <I/O>
+UINT16
+TPML_ALG_Marshal(TPML_ALG *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPML_ALG_Unmarshal(TPML_ALG *target, BYTE **buffer, INT32 *size);
+
+
+// Table 94 -- TPML_HANDLE Structure <O,S>
+UINT16
+TPML_HANDLE_Marshal(TPML_HANDLE *source, BYTE **buffer, INT32 *size);
+
+
+// Table 95 -- TPML_DIGEST Structure <I/O>
+UINT16
+TPML_DIGEST_Marshal(TPML_DIGEST *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPML_DIGEST_Unmarshal(TPML_DIGEST *target, BYTE **buffer, INT32 *size);
+
+
+// Table 96 -- TPML_DIGEST_VALUES Structure <I/O>
+UINT16
+TPML_DIGEST_VALUES_Marshal(TPML_DIGEST_VALUES *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPML_DIGEST_VALUES_Unmarshal(TPML_DIGEST_VALUES *target, BYTE **buffer, INT32 *size);
+
+
+// Table 97 -- TPM2B_DIGEST_VALUES Structure <I/O>
+UINT16
+TPM2B_DIGEST_VALUES_Marshal(TPM2B_DIGEST_VALUES *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_DIGEST_VALUES_Unmarshal(TPM2B_DIGEST_VALUES *target, BYTE **buffer, INT32 *size);
+
+
+// Table 98 -- TPML_PCR_SELECTION Structure <I/O>
+UINT16
+TPML_PCR_SELECTION_Marshal(TPML_PCR_SELECTION *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPML_PCR_SELECTION_Unmarshal(TPML_PCR_SELECTION *target, BYTE **buffer, INT32 *size);
+
+
+// Table 99 -- TPML_ALG_PROPERTY Structure <O,S>
+UINT16
+TPML_ALG_PROPERTY_Marshal(TPML_ALG_PROPERTY *source, BYTE **buffer, INT32 *size);
+
+
+// Table 100 -- TPML_TAGGED_TPM_PROPERTY Structure <O,S>
+TPM_RC
+TPML_TAGGED_TPM_PROPERTY_Unmarshal(TPML_TAGGED_TPM_PROPERTY *target, BYTE **buffer, INT32 *size);
+UINT16
+TPML_TAGGED_TPM_PROPERTY_Marshal(TPML_TAGGED_TPM_PROPERTY *source, BYTE **buffer, INT32 *size);
+
+
+// Table 101 -- TPML_TAGGED_PCR_PROPERTY Structure <O,S>
+UINT16
+TPML_TAGGED_PCR_PROPERTY_Marshal(TPML_TAGGED_PCR_PROPERTY *source, BYTE **buffer, INT32 *size);
+
+
+// Table 102 -- TPML_ECC_CURVE Structure <O,S>
+UINT16
+TPML_ECC_CURVE_Marshal(TPML_ECC_CURVE *source, BYTE **buffer, INT32 *size);
+
+
+// Table 103 -- TPMU_CAPABILITIES Union <O,S>
+UINT16
+TPMU_CAPABILITIES_Marshal(TPMU_CAPABILITIES *source, BYTE **buffer, INT32 *size, UINT32 selector);
+
+
+// Table 104 -- TPMS_CAPABILITY_DATA Structure <O,S>
+TPM_RC
+TPMS_CAPABILITY_DATA_Unmarshal(TPMS_CAPABILITY_DATA *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_CAPABILITY_DATA_Marshal(TPMS_CAPABILITY_DATA *source, BYTE **buffer, INT32 *size);
+
+
+// Table 105 -- TPMS_CLOCK_INFO Structure <I/O>
+UINT16
+TPMS_CLOCK_INFO_Marshal(TPMS_CLOCK_INFO *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_CLOCK_INFO_Unmarshal(TPMS_CLOCK_INFO *target, BYTE **buffer, INT32 *size);
+
+
+// Table 106 -- TPMS_TIME_INFO Structure <I/O>
+UINT16
+TPMS_TIME_INFO_Marshal(TPMS_TIME_INFO *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_TIME_INFO_Unmarshal(TPMS_TIME_INFO *target, BYTE **buffer, INT32 *size);
+
+
+// Table 107 -- TPMS_TIME_ATTEST_INFO Structure <O,S>
+TPM_RC
+TPMS_TIME_ATTEST_INFO_Unmarshal(TPMS_TIME_ATTEST_INFO *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_TIME_ATTEST_INFO_Marshal(TPMS_TIME_ATTEST_INFO *source, BYTE **buffer, INT32 *size);
+
+
+// Table 108 -- TPMS_CERTIFY_INFO Structure <O,S>
+TPM_RC
+TPMS_CERTIFY_INFO_Unmarshal(TPMS_CERTIFY_INFO *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_CERTIFY_INFO_Marshal(TPMS_CERTIFY_INFO *source, BYTE **buffer, INT32 *size);
+
+
+// Table 109 -- TPMS_QUOTE_INFO Structure <O,S>
+TPM_RC
+TPMS_QUOTE_INFO_Unmarshal(TPMS_QUOTE_INFO *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_QUOTE_INFO_Marshal(TPMS_QUOTE_INFO *source, BYTE **buffer, INT32 *size);
+
+
+// Table 110 -- TPMS_COMMAND_AUDIT_INFO Structure <O,S>
+TPM_RC
+TPMS_COMMAND_AUDIT_INFO_Unmarshal(TPMS_COMMAND_AUDIT_INFO *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_COMMAND_AUDIT_INFO_Marshal(TPMS_COMMAND_AUDIT_INFO *source, BYTE **buffer, INT32 *size);
+
+
+// Table 111 -- TPMS_SESSION_AUDIT_INFO Structure <O,S>
+TPM_RC
+TPMS_SESSION_AUDIT_INFO_Unmarshal(TPMS_SESSION_AUDIT_INFO *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_SESSION_AUDIT_INFO_Marshal(TPMS_SESSION_AUDIT_INFO *source, BYTE **buffer, INT32 *size);
+
+
+// Table 112 -- TPMS_CREATION_INFO Structure <O,S>
+TPM_RC
+TPMS_CREATION_INFO_Unmarshal(TPMS_CREATION_INFO *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_CREATION_INFO_Marshal(TPMS_CREATION_INFO *source, BYTE **buffer, INT32 *size);
+
+
+// Table 113 -- TPMS_NV_CERTIFY_INFO Structure <O,S>
+TPM_RC
+TPMS_NV_CERTIFY_INFO_Unmarshal(TPMS_NV_CERTIFY_INFO *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_NV_CERTIFY_INFO_Marshal(TPMS_NV_CERTIFY_INFO *source, BYTE **buffer, INT32 *size);
+
+
+// Table 114 -- TPMI_ST_ATTEST Type <O,S>
+TPM_RC
+TPMI_ST_ATTEST_Unmarshal(TPMI_ST_ATTEST *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMI_ST_ATTEST_Marshal(TPMI_ST_ATTEST *source, BYTE **buffer, INT32 *size);
+
+
+// Table 115 -- TPMU_ATTEST Union <O,S>
+TPM_RC
+TPMU_ATTEST_Unmarshal(TPMU_ATTEST *target, BYTE **buffer, INT32 *size, UINT32 selector);
+UINT16
+TPMU_ATTEST_Marshal(TPMU_ATTEST *source, BYTE **buffer, INT32 *size, UINT32 selector);
+
+
+// Table 116 -- TPMS_ATTEST Structure <O,S>
+TPM_RC
+TPMS_ATTEST_Unmarshal(TPMS_ATTEST *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_ATTEST_Marshal(TPMS_ATTEST *source, BYTE **buffer, INT32 *size);
+
+
+// Table 117 -- TPM2B_ATTEST Structure <O,S>
+TPM_RC
+TPM2B_ATTEST_Unmarshal(TPM2B_ATTEST *target, BYTE **buffer, INT32 *size);
+UINT16
+TPM2B_ATTEST_Marshal(TPM2B_ATTEST *source, BYTE **buffer, INT32 *size);
+
+
+// Table 118 -- TPMS_AUTH_COMMAND Structure <I>
+TPM_RC
+TPMS_AUTH_COMMAND_Unmarshal(TPMS_AUTH_COMMAND *target, BYTE **buffer, INT32 *size);
+
+
+// Table 119 -- TPMS_AUTH_RESPONSE Structure <O,S>
+UINT16
+TPMS_AUTH_RESPONSE_Marshal(TPMS_AUTH_RESPONSE *source, BYTE **buffer, INT32 *size);
+
+
+// Table 120 -- TPMI_AES_KEY_BITS Type <I/O>
+UINT16
+TPMI_AES_KEY_BITS_Marshal(TPMI_AES_KEY_BITS *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_AES_KEY_BITS_Unmarshal(TPMI_AES_KEY_BITS *target, BYTE **buffer, INT32 *size);
+
+
+// Table 121 -- TPMI_SM4_KEY_BITS Type <I/O>
+UINT16
+TPMI_SM4_KEY_BITS_Marshal(TPMI_SM4_KEY_BITS *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_SM4_KEY_BITS_Unmarshal(TPMI_SM4_KEY_BITS *target, BYTE **buffer, INT32 *size);
+
+
+// Table 122 -- TPMU_SYM_KEY_BITS Union <I/O>
+UINT16
+TPMU_SYM_KEY_BITS_Marshal(TPMU_SYM_KEY_BITS *source, BYTE **buffer, INT32 *size, UINT32 selector);
+TPM_RC
+TPMU_SYM_KEY_BITS_Unmarshal(TPMU_SYM_KEY_BITS *target, BYTE **buffer, INT32 *size, UINT32 selector);
+
+
+// Table 123 -- TPMU_SYM_MODE Union <I/O>
+UINT16
+TPMU_SYM_MODE_Marshal(TPMU_SYM_MODE *source, BYTE **buffer, INT32 *size, UINT32 selector);
+TPM_RC
+TPMU_SYM_MODE_Unmarshal(TPMU_SYM_MODE *target, BYTE **buffer, INT32 *size, UINT32 selector);
+
+
+// Table 125 -- TPMT_SYM_DEF Structure <I/O>
+UINT16
+TPMT_SYM_DEF_Marshal(TPMT_SYM_DEF *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_SYM_DEF_Unmarshal(TPMT_SYM_DEF *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 126 -- TPMT_SYM_DEF_OBJECT Structure <I/O>
+UINT16
+TPMT_SYM_DEF_OBJECT_Marshal(TPMT_SYM_DEF_OBJECT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_SYM_DEF_OBJECT_Unmarshal(TPMT_SYM_DEF_OBJECT *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 127 -- TPM2B_SYM_KEY Structure <I/O>
+UINT16
+TPM2B_SYM_KEY_Marshal(TPM2B_SYM_KEY *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_SYM_KEY_Unmarshal(TPM2B_SYM_KEY *target, BYTE **buffer, INT32 *size);
+
+
+// Table 128 -- TPMS_SYMCIPHER_PARMS Structure <I/O>
+UINT16
+TPMS_SYMCIPHER_PARMS_Marshal(TPMS_SYMCIPHER_PARMS *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SYMCIPHER_PARMS_Unmarshal(TPMS_SYMCIPHER_PARMS *target, BYTE **buffer, INT32 *size);
+
+
+// Table 129 -- TPM2B_SENSITIVE_DATA Structure <I/O>
+UINT16
+TPM2B_SENSITIVE_DATA_Marshal(TPM2B_SENSITIVE_DATA *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_SENSITIVE_DATA_Unmarshal(TPM2B_SENSITIVE_DATA *target, BYTE **buffer, INT32 *size);
+
+
+// Table 130 -- TPMS_SENSITIVE_CREATE Structure <I>
+TPM_RC
+TPMS_SENSITIVE_CREATE_Unmarshal(TPMS_SENSITIVE_CREATE *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_SENSITIVE_CREATE_Marshal(TPMS_SENSITIVE_CREATE *source, BYTE **buffer, INT32 *size);
+
+
+// Table 131 -- TPM2B_SENSITIVE_CREATE Structure <I,S>
+TPM_RC
+TPM2B_SENSITIVE_CREATE_Unmarshal(TPM2B_SENSITIVE_CREATE *target, BYTE **buffer, INT32 *size);
+UINT16
+TPM2B_SENSITIVE_CREATE_Marshal(TPM2B_SENSITIVE_CREATE *source, BYTE **buffer, INT32 *size);
+
+// Table 132 -- TPMS_SCHEME_SIGHASH Structure <I/O>
+UINT16
+TPMS_SCHEME_SIGHASH_Marshal(TPMS_SCHEME_SIGHASH *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_SIGHASH_Unmarshal(TPMS_SCHEME_SIGHASH *target, BYTE **buffer, INT32 *size);
+
+
+// Table 133 -- TPMI_ALG_KEYEDHASH_SCHEME Type <I/O>
+UINT16
+TPMI_ALG_KEYEDHASH_SCHEME_Marshal(TPMI_ALG_KEYEDHASH_SCHEME *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ALG_KEYEDHASH_SCHEME_Unmarshal(TPMI_ALG_KEYEDHASH_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 134 -- HMAC_SIG_SCHEME Types <I/O>
+UINT16
+TPMS_SCHEME_HMAC_Marshal(TPMS_SCHEME_HMAC *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_HMAC_Unmarshal(TPMS_SCHEME_HMAC *target, BYTE **buffer, INT32 *size);
+
+
+
+// Table 135 -- TPMS_SCHEME_XOR Structure <I/O>
+UINT16
+TPMS_SCHEME_XOR_Marshal(TPMS_SCHEME_XOR *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_XOR_Unmarshal(TPMS_SCHEME_XOR *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 136 -- TPMU_SCHEME_KEYEDHASH Union <I/O,S>
+UINT16
+TPMU_SCHEME_KEYEDHASH_Marshal(TPMU_SCHEME_KEYEDHASH *source, BYTE **buffer, INT32 *size, UINT32 selector);
+TPM_RC
+TPMU_SCHEME_KEYEDHASH_Unmarshal(TPMU_SCHEME_KEYEDHASH *target, BYTE **buffer, INT32 *size, UINT32 selector);
+
+
+// Table 137 -- TPMT_KEYEDHASH_SCHEME Structure <I/O>
+UINT16
+TPMT_KEYEDHASH_SCHEME_Marshal(TPMT_KEYEDHASH_SCHEME *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_KEYEDHASH_SCHEME_Unmarshal(TPMT_KEYEDHASH_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 138 -- RSA_SIG_SCHEMES Types <I/O>
+UINT16
+TPMS_SCHEME_RSASSA_Marshal(TPMS_SCHEME_RSASSA *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_RSASSA_Unmarshal(TPMS_SCHEME_RSASSA *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_SCHEME_RSAPSS_Marshal(TPMS_SCHEME_RSAPSS *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_RSAPSS_Unmarshal(TPMS_SCHEME_RSAPSS *target, BYTE **buffer, INT32 *size);
+
+
+
+// Table 139 -- ECC_SIG_SCHEMES Types <I/O>
+UINT16
+TPMS_SCHEME_ECDSA_Marshal(TPMS_SCHEME_ECDSA *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_ECDSA_Unmarshal(TPMS_SCHEME_ECDSA *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_SCHEME_SM2_Marshal(TPMS_SCHEME_SM2 *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_SM2_Unmarshal(TPMS_SCHEME_SM2 *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_SCHEME_ECSCHNORR_Marshal(TPMS_SCHEME_ECSCHNORR *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_ECSCHNORR_Unmarshal(TPMS_SCHEME_ECSCHNORR *target, BYTE **buffer, INT32 *size);
+
+
+
+// Table 140 -- TPMS_SCHEME_ECDAA Structure <I/O>
+UINT16
+TPMS_SCHEME_ECDAA_Marshal(TPMS_SCHEME_ECDAA *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_ECDAA_Unmarshal(TPMS_SCHEME_ECDAA *target, BYTE **buffer, INT32 *size);
+
+
+// Table 141 -- TPMU_SIG_SCHEME Union <I/O,S>
+UINT16
+TPMU_SIG_SCHEME_Marshal(TPMU_SIG_SCHEME *source, BYTE **buffer, INT32 *size, UINT32 selector);
+TPM_RC
+TPMU_SIG_SCHEME_Unmarshal(TPMU_SIG_SCHEME *target, BYTE **buffer, INT32 *size, UINT32 selector);
+
+
+// Table 142 -- TPMT_SIG_SCHEME Structure <I/O>
+UINT16
+TPMT_SIG_SCHEME_Marshal(TPMT_SIG_SCHEME *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_SIG_SCHEME_Unmarshal(TPMT_SIG_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 143 -- TPMS_SCHEME_OAEP Structure <I/O>
+UINT16
+TPMS_SCHEME_OAEP_Marshal(TPMS_SCHEME_OAEP *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_OAEP_Unmarshal(TPMS_SCHEME_OAEP *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 144 -- TPMS_SCHEME_ECDH Structure <I/O>
+UINT16
+TPMS_SCHEME_ECDH_Marshal(TPMS_SCHEME_ECDH *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_ECDH_Unmarshal(TPMS_SCHEME_ECDH *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 145 -- TPMS_SCHEME_MGF1 Structure <I/O>
+UINT16
+TPMS_SCHEME_MGF1_Marshal(TPMS_SCHEME_MGF1 *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_MGF1_Unmarshal(TPMS_SCHEME_MGF1 *target, BYTE **buffer, INT32 *size);
+
+
+// Table 146 -- TPMS_SCHEME_KDF1_SP800_56a Structure <I/O>
+UINT16
+TPMS_SCHEME_KDF1_SP800_56a_Marshal(TPMS_SCHEME_KDF1_SP800_56a *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_KDF1_SP800_56a_Unmarshal(TPMS_SCHEME_KDF1_SP800_56a *target, BYTE **buffer, INT32 *size);
+
+
+// Table 147 -- TPMS_SCHEME_KDF2 Structure <I/O>
+UINT16
+TPMS_SCHEME_KDF2_Marshal(TPMS_SCHEME_KDF2 *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_KDF2_Unmarshal(TPMS_SCHEME_KDF2 *target, BYTE **buffer, INT32 *size);
+
+
+// Table 148 -- TPMS_SCHEME_KDF1_SP800_108 Structure <I/O>
+UINT16
+TPMS_SCHEME_KDF1_SP800_108_Marshal(TPMS_SCHEME_KDF1_SP800_108 *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SCHEME_KDF1_SP800_108_Unmarshal(TPMS_SCHEME_KDF1_SP800_108 *target, BYTE **buffer, INT32 *size);
+
+
+// Table 149 -- TPMU_KDF_SCHEME Union <I/O,S>
+UINT16
+TPMU_KDF_SCHEME_Marshal(TPMU_KDF_SCHEME *source, BYTE **buffer, INT32 *size, UINT32 selector);
+TPM_RC
+TPMU_KDF_SCHEME_Unmarshal(TPMU_KDF_SCHEME *target, BYTE **buffer, INT32 *size, UINT32 selector);
+
+
+// Table 150 -- TPMT_KDF_SCHEME Structure <I/O>
+UINT16
+TPMT_KDF_SCHEME_Marshal(TPMT_KDF_SCHEME *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_KDF_SCHEME_Unmarshal(TPMT_KDF_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+
+// Table 152 -- TPMU_ASYM_SCHEME Union <I/O>
+UINT16
+TPMU_ASYM_SCHEME_Marshal(TPMU_ASYM_SCHEME *source, BYTE **buffer, INT32 *size, UINT32 selector);
+TPM_RC
+TPMU_ASYM_SCHEME_Unmarshal(TPMU_ASYM_SCHEME *target, BYTE **buffer, INT32 *size, UINT32 selector);
+
+
+
+// Table 154 -- TPMI_ALG_RSA_SCHEME Type <I/O>
+UINT16
+TPMI_ALG_RSA_SCHEME_Marshal(TPMI_ALG_RSA_SCHEME *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ALG_RSA_SCHEME_Unmarshal(TPMI_ALG_RSA_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 155 -- TPMT_RSA_SCHEME Structure <I/O>
+UINT16
+TPMT_RSA_SCHEME_Marshal(TPMT_RSA_SCHEME *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_RSA_SCHEME_Unmarshal(TPMT_RSA_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 156 -- TPMI_ALG_RSA_DECRYPT Type <I/O>
+UINT16
+TPMI_ALG_RSA_DECRYPT_Marshal(TPMI_ALG_RSA_DECRYPT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ALG_RSA_DECRYPT_Unmarshal(TPMI_ALG_RSA_DECRYPT *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 157 -- TPMT_RSA_DECRYPT Structure <I/O>
+UINT16
+TPMT_RSA_DECRYPT_Marshal(TPMT_RSA_DECRYPT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_RSA_DECRYPT_Unmarshal(TPMT_RSA_DECRYPT *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 158 -- TPM2B_PUBLIC_KEY_RSA Structure <I/O>
+UINT16
+TPM2B_PUBLIC_KEY_RSA_Marshal(TPM2B_PUBLIC_KEY_RSA *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_PUBLIC_KEY_RSA_Unmarshal(TPM2B_PUBLIC_KEY_RSA *target, BYTE **buffer, INT32 *size);
+
+
+// Table 159 -- TPMI_RSA_KEY_BITS Type <I/O>
+UINT16
+TPMI_RSA_KEY_BITS_Marshal(TPMI_RSA_KEY_BITS *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_RSA_KEY_BITS_Unmarshal(TPMI_RSA_KEY_BITS *target, BYTE **buffer, INT32 *size);
+
+
+// Table 160 -- TPM2B_PRIVATE_KEY_RSA Structure <I/O>
+UINT16
+TPM2B_PRIVATE_KEY_RSA_Marshal(TPM2B_PRIVATE_KEY_RSA *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_PRIVATE_KEY_RSA_Unmarshal(TPM2B_PRIVATE_KEY_RSA *target, BYTE **buffer, INT32 *size);
+
+
+// Table 161 -- TPM2B_ECC_PARAMETER Structure <I/O>
+UINT16
+TPM2B_ECC_PARAMETER_Marshal(TPM2B_ECC_PARAMETER *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_ECC_PARAMETER_Unmarshal(TPM2B_ECC_PARAMETER *target, BYTE **buffer, INT32 *size);
+
+
+// Table 162 -- TPMS_ECC_POINT Structure <I/O>
+UINT16
+TPMS_ECC_POINT_Marshal(TPMS_ECC_POINT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_ECC_POINT_Unmarshal(TPMS_ECC_POINT *target, BYTE **buffer, INT32 *size);
+
+
+// Table 163 -- TPM2B_ECC_POINT Structure <I/O>
+UINT16
+TPM2B_ECC_POINT_Marshal(TPM2B_ECC_POINT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_ECC_POINT_Unmarshal(TPM2B_ECC_POINT *target, BYTE **buffer, INT32 *size);
+
+
+// Table 164 -- TPMI_ALG_ECC_SCHEME Type <I/O>
+UINT16
+TPMI_ALG_ECC_SCHEME_Marshal(TPMI_ALG_ECC_SCHEME *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ALG_ECC_SCHEME_Unmarshal(TPMI_ALG_ECC_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 165 -- TPMI_ECC_CURVE Type <I/O>
+UINT16
+TPMI_ECC_CURVE_Marshal(TPMI_ECC_CURVE *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ECC_CURVE_Unmarshal(TPMI_ECC_CURVE *target, BYTE **buffer, INT32 *size);
+
+
+// Table 166 -- TPMT_ECC_SCHEME Structure <I/O>
+UINT16
+TPMT_ECC_SCHEME_Marshal(TPMT_ECC_SCHEME *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_ECC_SCHEME_Unmarshal(TPMT_ECC_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 167 -- TPMS_ALGORITHM_DETAIL_ECC Structure <O,S>
+UINT16
+TPMS_ALGORITHM_DETAIL_ECC_Marshal(TPMS_ALGORITHM_DETAIL_ECC *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_ALGORITHM_DETAIL_ECC_Unmarshal(TPMS_ALGORITHM_DETAIL_ECC *target, BYTE **buffer, INT32 *size);
+
+
+// Table 168 -- TPMS_SIGNATURE_RSASSA Structure <I/O>
+UINT16
+TPMS_SIGNATURE_RSASSA_Marshal(TPMS_SIGNATURE_RSASSA *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SIGNATURE_RSASSA_Unmarshal(TPMS_SIGNATURE_RSASSA *target, BYTE **buffer, INT32 *size);
+
+
+// Table 169 -- TPMS_SIGNATURE_RSAPSS Structure <I/O>
+UINT16
+TPMS_SIGNATURE_RSAPSS_Marshal(TPMS_SIGNATURE_RSAPSS *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SIGNATURE_RSAPSS_Unmarshal(TPMS_SIGNATURE_RSAPSS *target, BYTE **buffer, INT32 *size);
+
+
+// Table 170 -- TPMS_SIGNATURE_ECDSA Structure <I/O>
+UINT16
+TPMS_SIGNATURE_ECDSA_Marshal(TPMS_SIGNATURE_ECDSA *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_SIGNATURE_ECDSA_Unmarshal(TPMS_SIGNATURE_ECDSA *target, BYTE **buffer, INT32 *size);
+
+
+// Table 171 -- TPMU_SIGNATURE Union <I/O,S>
+UINT16
+TPMU_SIGNATURE_Marshal(TPMU_SIGNATURE *source, BYTE **buffer, INT32 *size, UINT32 selector);
+TPM_RC
+TPMU_SIGNATURE_Unmarshal(TPMU_SIGNATURE *target, BYTE **buffer, INT32 *size, UINT32 selector);
+
+
+// Table 172 -- TPMT_SIGNATURE Structure <I/O>
+UINT16
+TPMT_SIGNATURE_Marshal(TPMT_SIGNATURE *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_SIGNATURE_Unmarshal(TPMT_SIGNATURE *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+
+// Table 174 -- TPM2B_ENCRYPTED_SECRET Structure <I/O>
+UINT16
+TPM2B_ENCRYPTED_SECRET_Marshal(TPM2B_ENCRYPTED_SECRET *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_ENCRYPTED_SECRET_Unmarshal(TPM2B_ENCRYPTED_SECRET *target, BYTE **buffer, INT32 *size);
+
+
+// Table 175 -- TPMI_ALG_PUBLIC Type <I/O>
+UINT16
+TPMI_ALG_PUBLIC_Marshal(TPMI_ALG_PUBLIC *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMI_ALG_PUBLIC_Unmarshal(TPMI_ALG_PUBLIC *target, BYTE **buffer, INT32 *size);
+
+
+// Table 176 -- TPMU_PUBLIC_ID Union <I/O,S>
+UINT16
+TPMU_PUBLIC_ID_Marshal(TPMU_PUBLIC_ID *source, BYTE **buffer, INT32 *size, UINT32 selector);
+TPM_RC
+TPMU_PUBLIC_ID_Unmarshal(TPMU_PUBLIC_ID *target, BYTE **buffer, INT32 *size, UINT32 selector);
+
+
+// Table 177 -- TPMS_KEYEDHASH_PARMS Structure <I/O>
+UINT16
+TPMS_KEYEDHASH_PARMS_Marshal(TPMS_KEYEDHASH_PARMS *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_KEYEDHASH_PARMS_Unmarshal(TPMS_KEYEDHASH_PARMS *target, BYTE **buffer, INT32 *size);
+
+
+
+// Table 179 -- TPMS_RSA_PARMS Structure <I/O>
+UINT16
+TPMS_RSA_PARMS_Marshal(TPMS_RSA_PARMS *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_RSA_PARMS_Unmarshal(TPMS_RSA_PARMS *target, BYTE **buffer, INT32 *size);
+
+
+// Table 180 -- TPMS_ECC_PARMS Structure <I/O>
+UINT16
+TPMS_ECC_PARMS_Marshal(TPMS_ECC_PARMS *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_ECC_PARMS_Unmarshal(TPMS_ECC_PARMS *target, BYTE **buffer, INT32 *size);
+
+
+// Table 181 -- TPMU_PUBLIC_PARMS Union <I/O,S>
+UINT16
+TPMU_PUBLIC_PARMS_Marshal(TPMU_PUBLIC_PARMS *source, BYTE **buffer, INT32 *size, UINT32 selector);
+TPM_RC
+TPMU_PUBLIC_PARMS_Unmarshal(TPMU_PUBLIC_PARMS *target, BYTE **buffer, INT32 *size, UINT32 selector);
+
+
+// Table 182 -- TPMT_PUBLIC_PARMS Structure <I/O>
+UINT16
+TPMT_PUBLIC_PARMS_Marshal(TPMT_PUBLIC_PARMS *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_PUBLIC_PARMS_Unmarshal(TPMT_PUBLIC_PARMS *target, BYTE **buffer, INT32 *size);
+
+
+// Table 183 -- TPMT_PUBLIC Structure <I/O>
+UINT16
+TPMT_PUBLIC_Marshal(TPMT_PUBLIC *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_PUBLIC_Unmarshal(TPMT_PUBLIC *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+// Table 184 -- TPM2B_PUBLIC Structure <I/O>
+UINT16
+TPM2B_PUBLIC_Marshal(TPM2B_PUBLIC *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_PUBLIC_Unmarshal(TPM2B_PUBLIC *target, BYTE **buffer, INT32 *size, BOOL flag);
+
+
+
+// Table 186 -- TPMU_SENSITIVE_COMPOSITE Union <I/O,S>
+UINT16
+TPMU_SENSITIVE_COMPOSITE_Marshal(TPMU_SENSITIVE_COMPOSITE *source, BYTE **buffer, INT32 *size, UINT32 selector);
+TPM_RC
+TPMU_SENSITIVE_COMPOSITE_Unmarshal(TPMU_SENSITIVE_COMPOSITE *target, BYTE **buffer, INT32 *size, UINT32 selector);
+
+
+// Table 187 -- TPMT_SENSITIVE Structure <I/O>
+UINT16
+TPMT_SENSITIVE_Marshal(TPMT_SENSITIVE *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMT_SENSITIVE_Unmarshal(TPMT_SENSITIVE *target, BYTE **buffer, INT32 *size);
+
+
+// Table 188 -- TPM2B_SENSITIVE Structure <I/O>
+UINT16
+TPM2B_SENSITIVE_Marshal(TPM2B_SENSITIVE *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_SENSITIVE_Unmarshal(TPM2B_SENSITIVE *target, BYTE **buffer, INT32 *size);
+
+
+
+// Table 190 -- TPM2B_PRIVATE Structure <I/O,S>
+UINT16
+TPM2B_PRIVATE_Marshal(TPM2B_PRIVATE *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_PRIVATE_Unmarshal(TPM2B_PRIVATE *target, BYTE **buffer, INT32 *size);
+
+
+
+// Table 192 -- TPM2B_ID_OBJECT Structure <I/O>
+UINT16
+TPM2B_ID_OBJECT_Marshal(TPM2B_ID_OBJECT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_ID_OBJECT_Unmarshal(TPM2B_ID_OBJECT *target, BYTE **buffer, INT32 *size);
+
+
+
+// Table 195 -- TPMA_NV Bits <I/O>
+UINT16
+TPMA_NV_Marshal(TPMA_NV *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMA_NV_Unmarshal(TPMA_NV *target, BYTE **buffer, INT32 *size);
+
+
+// Table 196 -- TPMS_NV_PUBLIC Structure <I/O>
+UINT16
+TPMS_NV_PUBLIC_Marshal(TPMS_NV_PUBLIC *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_NV_PUBLIC_Unmarshal(TPMS_NV_PUBLIC *target, BYTE **buffer, INT32 *size);
+
+
+// Table 197 -- TPM2B_NV_PUBLIC Structure <I/O>
+UINT16
+TPM2B_NV_PUBLIC_Marshal(TPM2B_NV_PUBLIC *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_NV_PUBLIC_Unmarshal(TPM2B_NV_PUBLIC *target, BYTE **buffer, INT32 *size);
+
+
+// Table 198 -- TPM2B_CONTEXT_SENSITIVE Structure <I/O>
+UINT16
+TPM2B_CONTEXT_SENSITIVE_Marshal(TPM2B_CONTEXT_SENSITIVE *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_CONTEXT_SENSITIVE_Unmarshal(TPM2B_CONTEXT_SENSITIVE *target, BYTE **buffer, INT32 *size);
+
+
+// Table 199 -- TPMS_CONTEXT_DATA Structure <I/O,S>
+UINT16
+TPMS_CONTEXT_DATA_Marshal(TPMS_CONTEXT_DATA *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_CONTEXT_DATA_Unmarshal(TPMS_CONTEXT_DATA *target, BYTE **buffer, INT32 *size);
+
+
+// Table 200 -- TPM2B_CONTEXT_DATA Structure <I/O>
+UINT16
+TPM2B_CONTEXT_DATA_Marshal(TPM2B_CONTEXT_DATA *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPM2B_CONTEXT_DATA_Unmarshal(TPM2B_CONTEXT_DATA *target, BYTE **buffer, INT32 *size);
+
+
+// Table 201 -- TPMS_CONTEXT Structure <I/O>
+UINT16
+TPMS_CONTEXT_Marshal(TPMS_CONTEXT *source, BYTE **buffer, INT32 *size);
+TPM_RC
+TPMS_CONTEXT_Unmarshal(TPMS_CONTEXT *target, BYTE **buffer, INT32 *size);
+
+
+// Table 203 -- TPMS_CREATION_DATA Structure <O,S>
+TPM_RC
+TPMS_CREATION_DATA_Unmarshal(TPMS_CREATION_DATA *target, BYTE **buffer, INT32 *size);
+UINT16
+TPMS_CREATION_DATA_Marshal(TPMS_CREATION_DATA *source, BYTE **buffer, INT32 *size);
+
+
+// Table 204 -- TPM2B_CREATION_DATA Structure <O,S>
+TPM_RC
+TPM2B_CREATION_DATA_Unmarshal(TPM2B_CREATION_DATA *target, BYTE **buffer, INT32 *size);
+UINT16
+TPM2B_CREATION_DATA_Marshal(TPM2B_CREATION_DATA *source, BYTE **buffer, INT32 *size);
+
+// Array Marshal/Unmarshal for TPMS_TAGGED_PROPERTY
+TPM_RC
+TPMS_TAGGED_PROPERTY_Array_Unmarshal(TPMS_TAGGED_PROPERTY *target, BYTE **buffer, INT32 *size, INT32 count);
+UINT16
+TPMS_TAGGED_PROPERTY_Array_Marshal(TPMS_TAGGED_PROPERTY *source, BYTE **buffer, INT32 *size, INT32 count);
+
+// Array Marshal/Unmarshal for TPMS_ALG_PROPERTY
+TPM_RC
+TPMS_ALG_PROPERTY_Array_Unmarshal(TPMS_ALG_PROPERTY *target, BYTE **buffer, INT32 *size, INT32 count);
+UINT16
+TPMS_ALG_PROPERTY_Array_Marshal(TPMS_ALG_PROPERTY *source, BYTE **buffer, INT32 *size, INT32 count);
+
+// Array Marshal/Unmarshal for TPMS_PCR_SELECTION
+TPM_RC
+TPMS_PCR_SELECTION_Array_Unmarshal(TPMS_PCR_SELECTION *target, BYTE **buffer, INT32 *size, INT32 count);
+UINT16
+TPMS_PCR_SELECTION_Array_Marshal(TPMS_PCR_SELECTION *source, BYTE **buffer, INT32 *size, INT32 count);
+
+// Array Marshal/Unmarshal for TPMT_HA
+TPM_RC
+TPMT_HA_Array_Unmarshal(TPMT_HA *target, BYTE **buffer, INT32 *size, BOOL flag, INT32 count);
+UINT16
+TPMT_HA_Array_Marshal(TPMT_HA *source, BYTE **buffer, INT32 *size, INT32 count);
+
+// Array Marshal/Unmarshal for BYTE
+TPM_RC
+BYTE_Array_Unmarshal(BYTE *target, BYTE **buffer, INT32 *size, INT32 count);
+UINT16
+BYTE_Array_Marshal(BYTE *source, BYTE **buffer, INT32 *size, INT32 count);
+
+// Array Marshal/Unmarshal for TPM_HANDLE
+TPM_RC
+TPM_HANDLE_Array_Unmarshal(TPM_HANDLE *target, BYTE **buffer, INT32 *size, INT32 count);
+UINT16
+TPM_HANDLE_Array_Marshal(TPM_HANDLE *source, BYTE **buffer, INT32 *size, INT32 count);
+
+// Array Marshal/Unmarshal for TPMA_CC
+TPM_RC
+TPMA_CC_Array_Unmarshal(TPMA_CC *target, BYTE **buffer, INT32 *size, INT32 count);
+UINT16
+TPMA_CC_Array_Marshal(TPMA_CC *source, BYTE **buffer, INT32 *size, INT32 count);
+
+// Array Marshal/Unmarshal for TPMS_TAGGED_PCR_SELECT
+TPM_RC
+TPMS_TAGGED_PCR_SELECT_Array_Unmarshal(TPMS_TAGGED_PCR_SELECT *target, BYTE **buffer, INT32 *size, INT32 count);
+UINT16
+TPMS_TAGGED_PCR_SELECT_Array_Marshal(TPMS_TAGGED_PCR_SELECT *source, BYTE **buffer, INT32 *size, INT32 count);
+
+// Array Marshal/Unmarshal for TPM_ECC_CURVE
+TPM_RC
+TPM_ECC_CURVE_Array_Unmarshal(TPM_ECC_CURVE *target, BYTE **buffer, INT32 *size, INT32 count);
+UINT16
+TPM_ECC_CURVE_Array_Marshal(TPM_ECC_CURVE *source, BYTE **buffer, INT32 *size, INT32 count);
+
+// Array Marshal/Unmarshal for TPM2B_DIGEST
+TPM_RC
+TPM2B_DIGEST_Array_Unmarshal(TPM2B_DIGEST *target, BYTE **buffer, INT32 *size, INT32 count);
+UINT16
+TPM2B_DIGEST_Array_Marshal(TPM2B_DIGEST *source, BYTE **buffer, INT32 *size, INT32 count);
+
+// Array Marshal/Unmarshal for TPM_CC
+TPM_RC
+TPM_CC_Array_Unmarshal(TPM_CC *target, BYTE **buffer, INT32 *size, INT32 count);
+UINT16
+TPM_CC_Array_Marshal(TPM_CC *source, BYTE **buffer, INT32 *size, INT32 count);
+
+// Array Marshal/Unmarshal for TPM_ALG_ID
+TPM_RC
+TPM_ALG_ID_Array_Unmarshal(TPM_ALG_ID *target, BYTE **buffer, INT32 *size, INT32 count);
+UINT16
+TPM_ALG_ID_Array_Marshal(TPM_ALG_ID *source, BYTE **buffer, INT32 *size, INT32 count);
+