2 * Copyright 2018 Intel Corporation
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 // Author: Arun Kumar Sekar
17 #include <tss2/tss2_sys.h>
18 #include <tss2/tss2_common.h>
19 #include <tss2/tss2_esys.h>
20 #include <tss2/tss2_mu.h>
21 #include <tss2/tss2_tcti.h>
22 #include <tss2/tss2_tcti_mssim.h>
23 #include <tss2/tss2_tpm2_types.h>
24 #include <tss2/tpm2b.h>
30 #define pAssert(a) ((void)0)
31 #define UNREFERENCED(a) ((void)(a))
33 #define MAX_NV_INDEX_SIZE 2048
42 #if NO_AUTO_ALIGN == YES || LITTLE_ENDIAN_TPM2_ == YES
43 #define BYTE_ARRAY_TO_UINT8(b) (UINT8)((b)[0])
45 #define BYTE_ARRAY_TO_UINT16(b) (UINT16)( ((b)[0] << 8) \
48 #define BYTE_ARRAY_TO_UINT32(b) (UINT32)( ((b)[0] << 24) \
53 #define BYTE_ARRAY_TO_UINT64(b) (UINT64)( ((UINT64)(b)[0] << 56) \
54 + ((UINT64)(b)[1] << 48) \
55 + ((UINT64)(b)[2] << 40) \
56 + ((UINT64)(b)[3] << 32) \
57 + ((UINT64)(b)[4] << 24) \
58 + ((UINT64)(b)[5] << 16) \
59 + ((UINT64)(b)[6] << 8) \
62 // Disaggregate a UINT into a byte array
63 #define UINT8_TO_BYTE_ARRAY(i, b) ((b)[0] = (BYTE)(i), i)
65 #define UINT16_TO_BYTE_ARRAY(i, b) ((b)[0] = (BYTE)((i) >> 8), \
66 (b)[1] = (BYTE) (i), \
69 #define UINT32_TO_BYTE_ARRAY(i, b) ((b)[0] = (BYTE)((i) >> 24), \
70 (b)[1] = (BYTE)((i) >> 16), \
71 (b)[2] = (BYTE)((i) >> 8), \
72 (b)[3] = (BYTE) (i), \
75 #define UINT64_TO_BYTE_ARRAY(i, b) ((b)[0] = (BYTE)((i) >> 56), \
76 (b)[1] = (BYTE)((i) >> 48), \
77 (b)[2] = (BYTE)((i) >> 40), \
78 (b)[3] = (BYTE)((i) >> 32), \
79 (b)[4] = (BYTE)((i) >> 24), \
80 (b)[5] = (BYTE)((i) >> 16), \
81 (b)[6] = (BYTE)((i) >> 8), \
82 (b)[7] = (BYTE) (i), \
87 // the big-endian macros for machines that allow unaligned memory access
88 // Aggregate a byte array into a UINT
89 #define BYTE_ARRAY_TO_UINT8(b) *((UINT8 *)(b))
90 #define BYTE_ARRAY_TO_UINT16(b) *((UINT16 *)(b))
91 #define BYTE_ARRAY_TO_UINT32(b) *((UINT32 *)(b))
92 #define BYTE_ARRAY_TO_UINT64(b) *((UINT64 *)(b))
94 // Disaggregate a UINT into a byte array
97 #define UINT8_TO_BYTE_ARRAY(i, b) (*((UINT8 *)(b)) = (i))
98 #define UINT16_TO_BYTE_ARRAY(i, b) (*((UINT16 *)(b)) = (i))
99 #define UINT32_TO_BYTE_ARRAY(i, b) (*((UINT32 *)(b)) = (i))
100 #define UINT64_TO_BYTE_ARRAY(i, b) (*((UINT64 *)(b)) = (i))
103 #endif // NO_AUTO_ALIGN == YES
108 // Table 2:3 - Definition of Base Types (BaseTypes)
109 // UINT8 definition from table 2:3
111 UINT8_Unmarshal(UINT8 *target, BYTE **buffer, INT32 *size);
113 UINT8_Marshal(UINT8 *source, BYTE **buffer, INT32 *size);
115 // BYTE definition from table 2:3
116 #define BYTE_Unmarshal(target, buffer, size) \
117 UINT8_Unmarshal((UINT8 *)(target), buffer, size)
118 #define BYTE_Marshal(source, buffer, size) \
119 UINT8_Marshal((UINT8 *)(source), buffer, size)
120 // INT8 definition from table 2:3
121 #define INT8_Unmarshal(target, buffer, size) \
122 UINT8_Unmarshal((UINT8 *)(target), buffer, size)
123 // INT8_Marshal not referenced
124 // UINT16 definition from table 2:3
126 UINT16_Unmarshal(UINT16 *target, BYTE **buffer, INT32 *size);
128 UINT16_Marshal(UINT16 *source, BYTE **buffer, INT32 *size);
130 // INT16 definition from table 2:3
131 // INT16_Unmarshal not referenced
132 // INT16_Marshal not referenced
133 // UINT32 definition from table 2:3
135 UINT32_Unmarshal(UINT32 *target, BYTE **buffer, INT32 *size);
137 UINT32_Marshal(UINT32 *source, BYTE **buffer, INT32 *size);
139 // INT32 definition from table 2:3
140 #define INT32_Unmarshal(target, buffer, size) \
141 UINT32_Unmarshal((UINT32 *)(target), buffer, size)
142 // INT32_Marshal not referenced
143 // UINT64 definition from table 2:3
145 UINT64_Unmarshal(UINT64 *target, BYTE **buffer, INT32 *size);
147 UINT64_Marshal(UINT64 *source, BYTE **buffer, INT32 *size);
149 // INT64 definition from table 2:3
150 // INT64_Unmarshal not referenced
151 // INT64_Marshal not referenced
154 // Table 2:4 - Defines for Logic Values (DefinesTable)
157 // Table 2:5 - Definition of Types for Documentation Clarity (TypesTable)
158 // UINT32 definition from table 2:5
159 // TPM2_ALGORITHM_ID_Unmarshal not referenced
160 // TPM2_ALGORITHM_ID_Marshal not referenced
161 // UINT32 definition from table 2:5
162 // TPM2_MODIFIER_INDICATOR_Unmarshal not referenced
163 // TPM2_MODIFIER_INDICATOR_Marshal not referenced
164 // UINT32 definition from table 2:5
165 // TPM2_AUTHORIZATION_SIZE_Unmarshal not referenced
166 // TPM2_AUTHORIZATION_SIZE_Marshal not referenced
167 // UINT32 definition from table 2:5
168 // TPM2_PARAMETER_SIZE_Unmarshal not referenced
169 // TPM2_PARAMETER_SIZE_Marshal not referenced
170 // UINT16 definition from table 2:5
171 // TPM2_KEY_SIZE_Unmarshal not referenced
172 // TPM2_KEY_SIZE_Marshal not referenced
173 // UINT16 definition from table 2:5
174 #define TPM_KEY_BITS_Unmarshal(target, buffer, size) \
175 UINT16_Unmarshal((UINT16 *)(target), buffer, size)
176 #define TPM_KEY_BITS_Marshal(source, buffer, size) \
177 UINT16_Marshal((UINT16 *)(source), buffer, size)
180 // Table 2:6 - Definition of TPM2_SPEC Constants (ConstantsTable)
181 // TPM2_SPEC_Unmarshal not referenced
182 // TPM2_SPEC_Marshal not referenced
185 // Table 2:7 - Definition of TPM2_GENERATED Constants (ConstantsTable)
186 // TPM2_GENERATED_Unmarshal not referenced
187 #define TPM_GENERATED_Marshal(source, buffer, size) \
188 UINT32_Marshal((UINT32 *)(source), buffer, size)
191 // Table 2:9 - Definition of TPM_ALG_ID Constants (ConstantsTable)
192 #define TPM2_ALG_ID_Unmarshal(target, buffer, size) \
193 UINT16_Unmarshal((UINT16 *)(target), buffer, size)
194 #define TPM2_ALG_ID_Marshal(source, buffer, size) \
195 UINT16_Marshal((UINT16 *)(source), buffer, size)
198 // Table 2:10 - Definition of TPM_ECC_CURVE Constants (ConstantsTable)
200 #define TPM_ECC_CURVE_Unmarshal(target, buffer, size) \
201 UINT16_Unmarshal((UINT16 *)(target), buffer, size)
202 #define TPM_ECC_CURVE_Marshal(source, buffer, size) \
203 UINT16_Marshal((UINT16 *)(source), buffer, size)
204 #endif // TPM2_ALG_ECC
207 // Table 2:13 - Definition of TPM_CC Constants (ConstantsTable)
208 #define TPM_CC_Unmarshal(target, buffer, size) \
209 UINT32_Unmarshal((UINT32 *)(target), buffer, size)
210 #define TPM_CC_Marshal(source, buffer, size) \
211 UINT32_Marshal((UINT32 *)(source), buffer, size)
214 // Table 2:17 - Definition of TPM_RC Constants (ConstantsTable)
215 // TPM_RC_Unmarshal not referenced
216 #define TPM_RC_Marshal(source, buffer, size) \
217 UINT32_Marshal((UINT32 *)(source), buffer, size)
220 // Table 2:18 - Definition of TPM_CLOCK_ADJUST Constants (ConstantsTable)
222 TPM_CLOCK_ADJUST_Unmarshal(TPM2_CLOCK_ADJUST *target, BYTE **buffer, INT32 *size);
224 // TPM_CLOCK_ADJUST_Marshal not referenced
227 // Table 2:19 - Definition of TPM_EO Constants (ConstantsTable)
229 TPM_EO_Unmarshal(TPM2_EO *target, BYTE **buffer, INT32 *size);
231 // TPM_EO_Marshal not referenced
234 // Table 2:20 - Definition of TPM_ST Constants (ConstantsTable)
235 #define TPM_ST_Unmarshal(target, buffer, size) \
236 UINT16_Unmarshal((UINT16 *)(target), buffer, size)
237 #define TPM_ST_Marshal(source, buffer, size) \
238 UINT16_Marshal((UINT16 *)(source), buffer, size)
241 // Table 2:21 - Definition of TPM_SU Constants (ConstantsTable)
243 TPM_SU_Unmarshal(TPM2_SU *target, BYTE **buffer, INT32 *size);
245 // TPM_SU_Marshal not referenced
248 // Table 2:22 - Definition of TPM_SE Constants (ConstantsTable)
250 TPM_SE_Unmarshal(TPM2_SE *target, BYTE **buffer, INT32 *size);
252 // TPM_SE_Marshal not referenced
255 // Table 2:23 - Definition of TPM_CAP Constants (ConstantsTable)
257 TPM_CAP_Unmarshal(TPM2_CAP *target, BYTE **buffer, INT32 *size);
259 #define TPM_CAP_Marshal(source, buffer, size) \
260 UINT32_Marshal((UINT32 *)(source), buffer, size)
263 // Table 2:24 - Definition of TPM_PT Constants (ConstantsTable)
264 // TPM_PT_Unmarshal not referenced
265 #define TPM_PT_Marshal(source, buffer, size) \
266 UINT32_Marshal((UINT32 *)(source), buffer, size)
269 // Table 2:25 - Definition of TPM_PT_PCR Constants (ConstantsTable)
270 // TPM_PT_PCR_Unmarshal not referenced
271 // TPM_PT_PCR_Marshal not referenced
274 // Table 2:26 - Definition of TPM_PS Constants (ConstantsTable)
275 // TPM_PS_Unmarshal not referenced
276 // TPM_PS_Marshal not referenced
279 // Table 2:27 - Definition of Types for Handles (TypesTable)
280 // UINT32 definition from table 2:27
281 #define TPM_HANDLE_Unmarshal(target, buffer, size) \
282 UINT32_Unmarshal((UINT32 *)(target), buffer, size)
283 #define TPM_HANDLE_Marshal(source, buffer, size) \
284 UINT32_Marshal((UINT32 *)(source), buffer, size)
287 // Table 2:28 - Definition of TPM_HT Constants (ConstantsTable)
288 // TPM_HT_Unmarshal not referenced
289 // TPM_HT_Marshal not referenced
292 // Table 2:29 - Definition of TPM_RH Constants (ConstantsTable)
293 // TPM_RH_Unmarshal not referenced
294 // TPM_RH_Marshal not referenced
297 // Table 2:30 - Definition of TPM_HC Constants (ConstantsTable)
298 // TPM_HC_Unmarshal not referenced
299 // TPM_HC_Marshal not referenced
302 // Table 2:31 - Definition of TPMA_ALGORITHM Bits (BitsTable)
303 // TPMA_ALGORITHM_Unmarshal not referenced
304 #define TPMA_ALGORITHM_Marshal(source, buffer, size) \
305 UINT32_Marshal((UINT32 *)(source), buffer, size)
308 // Table 2:32 - Definition of TPMA_OBJECT Bits (BitsTable)
310 TPMA_OBJECT_Unmarshal(TPMA_OBJECT *target, BYTE **buffer, INT32 *size);
312 #define TPMA_OBJECT_Marshal(source, buffer, size) \
313 UINT32_Marshal((UINT32 *)(source), buffer, size)
316 // Table 2:33 - Definition of TPMA_SESSION Bits (BitsTable)
318 TPMA_SESSION_Unmarshal(TPMA_SESSION *target, BYTE **buffer, INT32 *size);
320 #define TPMA_SESSION_Marshal(source, buffer, size) \
321 UINT8_Marshal((UINT8 *)(source), buffer, size)
324 // Table 2:34 - Definition of TPMA_LOCALITY Bits (BitsTable)
325 #define TPMA_LOCALITY_Unmarshal(target, buffer, size) \
326 UINT8_Unmarshal((UINT8 *)(target), buffer, size)
327 #define TPMA_LOCALITY_Marshal(source, buffer, size) \
328 UINT8_Marshal((UINT8 *)(source), buffer, size)
331 // Table 2:35 - Definition of TPMA_PERMANENT Bits (BitsTable)
332 // TPMA_PERMANENT_Unmarshal not referenced
333 // TPMA_PERMANENT_Marshal not referenced
336 // Table 2:36 - Definition of TPMA_STARTUP_CLEAR Bits (BitsTable)
337 // TPMA_STARTUP_CLEAR_Unmarshal not referenced
338 // TPMA_STARTUP_CLEAR_Marshal not referenced
341 // Table 2:37 - Definition of TPMA_MEMORY Bits (BitsTable)
342 // TPMA_MEMORY_Unmarshal not referenced
343 // TPMA_MEMORY_Marshal not referenced
346 // Table 2:38 - Definition of TPMA_CC Bits (BitsTable)
347 // TPMA_CC_Unmarshal not referenced
348 #define TPMA_CC_Marshal(source, buffer, size) \
349 UINT32_Marshal((UINT32 *)(source), buffer, size)
352 // Table 2:39 - Definition of TPMI_YES_NO Type (TypeTable)
354 TPMI_YES_NO_Unmarshal(TPMI_YES_NO *target, BYTE **buffer, INT32 *size);
356 #define TPMI_YES_NO_Marshal(source, buffer, size) \
357 BYTE_Marshal((BYTE *)(source), buffer, size)
360 // Table 2:40 - Definition of TPMI_DH_OBJECT Type (TypeTable)
362 TPMI_DH_OBJECT_Unmarshal(TPMI_DH_OBJECT *target, BYTE **buffer, INT32 *size, BOOL flag);
364 #define TPMI_DH_OBJECT_Marshal(source, buffer, size) \
365 TPM_HANDLE_Marshal((TPM2_HANDLE *)(source), buffer, size)
368 // Table 2:41 - Definition of TPMI_DH_PERSISTENT Type (TypeTable)
370 TPMI_DH_PERSISTENT_Unmarshal(TPMI_DH_PERSISTENT *target, BYTE **buffer, INT32 *size);
372 // TPMI_DH_PERSISTENT_Marshal not referenced
375 // Table 2:42 - Definition of TPMI_DH_ENTITY Type (TypeTable)
377 TPMI_DH_ENTITY_Unmarshal(TPMI_DH_ENTITY *target, BYTE **buffer, INT32 *size, BOOL flag);
379 // TPMI_DH_ENTITY_Marshal not referenced
382 // Table 2:43 - Definition of TPMI_DH_PCR Type (TypeTable)
384 TPMI_DH_PCR_Unmarshal(TPMI_DH_PCR *target, BYTE **buffer, INT32 *size, BOOL flag);
386 // TPMI_DH_PCR_Marshal not referenced
389 // Table 2:44 - Definition of TPMI_SH_AUTH_SESSION Type (TypeTable)
391 TPMI_SH_AUTH_SESSION_Unmarshal(TPMI_SH_AUTH_SESSION *target, BYTE **buffer, INT32 *size, BOOL flag);
393 #define TPMI_SH_AUTH_SESSION_Marshal(source, buffer, size) \
394 TPM_HANDLE_Marshal((TPM2_HANDLE *)(source), buffer, size)
397 // Table 2:45 - Definition of TPMI_SH_HMAC Type (TypeTable)
399 TPMI_SH_HMAC_Unmarshal(TPMI_SH_HMAC *target, BYTE **buffer, INT32 *size);
401 // TPMI_SH_HMAC_Marshal not referenced
404 // Table 2:46 - Definition of TPMI_SH_POLICY Type (TypeTable)
406 TPMI_SH_POLICY_Unmarshal(TPMI_SH_POLICY *target, BYTE **buffer, INT32 *size);
408 // TPMI_SH_POLICY_Marshal not referenced
411 // Table 2:47 - Definition of TPMI_DH_CONTEXT Type (TypeTable)
413 TPMI_DH_CONTEXT_Unmarshal(TPMI_DH_CONTEXT *target, BYTE **buffer, INT32 *size);
415 #define TPMI_DH_CONTEXT_Marshal(source, buffer, size) \
416 TPM_HANDLE_Marshal((TPM2_HANDLE *)(source), buffer, size)
419 // Table 2:48 - Definition of TPMI_RH_HIERARCHY Type (TypeTable)
421 TPMI_RH_HIERARCHY_Unmarshal(TPMI_RH_HIERARCHY *target, BYTE **buffer, INT32 *size, BOOL flag);
423 #define TPMI_RH_HIERARCHY_Marshal(source, buffer, size) \
424 TPM_HANDLE_Marshal((TPM2_HANDLE *)(source), buffer, size)
427 // Table 2:49 - Definition of TPMI_RH_ENABLES Type (TypeTable)
429 TPMI_RH_ENABLES_Unmarshal(TPMI_RH_ENABLES *target, BYTE **buffer, INT32 *size, BOOL flag);
431 // TPMI_RH_ENABLES_Marshal not referenced
434 // Table 2:50 - Definition of TPMI_RH_HIERARCHY_AUTH Type (TypeTable)
436 TPMI_RH_HIERARCHY_AUTH_Unmarshal(TPMI_RH_HIERARCHY_AUTH *target, BYTE **buffer, INT32 *size);
438 // TPMI_RH_HIERARCHY_AUTH_Marshal not referenced
441 // Table 2:51 - Definition of TPMI_RH_PLATFORM Type (TypeTable)
443 TPMI_RH_PLATFORM_Unmarshal(TPMI_RH_PLATFORM *target, BYTE **buffer, INT32 *size);
445 // TPMI_RH_PLATFORM_Marshal not referenced
448 // Table 2:52 - Definition of TPMI_RH_OWNER Type (TypeTable)
449 // TPMI_RH_OWNER_Unmarshal not referenced
450 // TPMI_RH_OWNER_Marshal not referenced
453 // Table 2:53 - Definition of TPMI_RH_ENDORSEMENT Type (TypeTable)
455 TPMI_RH_ENDORSEMENT_Unmarshal(TPMI_RH_ENDORSEMENT *target, BYTE **buffer, INT32 *size, BOOL flag);
457 // TPMI_RH_ENDORSEMENT_Marshal not referenced
460 // Table 2:54 - Definition of TPMI_RH_PROVISION Type (TypeTable)
462 TPMI_RH_PROVISION_Unmarshal(TPMI_RH_PROVISION *target, BYTE **buffer, INT32 *size);
464 // TPMI_RH_PROVISION_Marshal not referenced
467 // Table 2:55 - Definition of TPMI_RH_CLEAR Type (TypeTable)
469 TPMI_RH_CLEAR_Unmarshal(TPMI_RH_CLEAR *target, BYTE **buffer, INT32 *size);
471 // TPMI_RH_CLEAR_Marshal not referenced
474 // Table 2:56 - Definition of TPMI_RH_NV_AUTH Type (TypeTable)
476 TPMI_RH_NV_AUTH_Unmarshal(TPMI_RH_NV_AUTH *target, BYTE **buffer, INT32 *size);
478 // TPMI_RH_NV_AUTH_Marshal not referenced
481 // Table 2:57 - Definition of TPMI_RH_LOCKOUT Type (TypeTable)
483 TPMI_RH_LOCKOUT_Unmarshal(TPMI_RH_LOCKOUT *target, BYTE **buffer, INT32 *size);
485 // TPMI_RH_LOCKOUT_Marshal not referenced
488 // Table 2:58 - Definition of TPMI_RH_NV_INDEX Type (TypeTable)
490 TPMI_RH_NV_INDEX_Unmarshal(TPMI_RH_NV_INDEX *target, BYTE **buffer, INT32 *size);
492 #define TPMI_RH_NV_INDEX_Marshal(source, buffer, size) \
493 TPM_HANDLE_Marshal((TPM2_HANDLE *)(source), buffer, size)
496 // Table 2:59 - Definition of TPMI_ALG_HASH Type (TypeTable)
498 TPMI_ALG_HASH_Unmarshal(TPMI_ALG_HASH *target, BYTE **buffer, INT32 *size, BOOL flag);
500 #define TPMI_ALG_HASH_Marshal(source, buffer, size) \
501 TPM2_ALG_ID_Marshal((TPM2_ALG_ID *)(source), buffer, size)
504 // Table 2:60 - Definition of TPMI_ALG_ASYM Type (TypeTable)
505 // TPMI_ALG_ASYM_Unmarshal not referenced
506 // TPMI_ALG_ASYM_Marshal not referenced
509 // Table 2:61 - Definition of TPMI_ALG_SYM Type (TypeTable)
511 TPMI_ALG_SYM_Unmarshal(TPMI_ALG_SYM *target, BYTE **buffer, INT32 *size, BOOL flag);
513 // TPMI_ALG_SYM_Marshal not referenced
516 // Table 2:62 - Definition of TPMI_ALG_SYM_OBJECT Type (TypeTable)
518 TPMI_ALG_SYM_OBJECT_Unmarshal(TPMI_ALG_SYM_OBJECT *target, BYTE **buffer, INT32 *size, BOOL flag);
520 #define TPMI_ALG_SYM_OBJECT_Marshal(source, buffer, size) \
521 TPM2_ALG_ID_Marshal((TPM2_ALG_ID *)(source), buffer, size)
524 // Table 2:63 - Definition of TPMI_ALG_SYM_MODE Type (TypeTable)
526 TPMI_ALG_SYM_MODE_Unmarshal(TPMI_ALG_SYM_MODE *target, BYTE **buffer, INT32 *size, BOOL flag);
528 #define TPMI_ALG_SYM_MODE_Marshal(source, buffer, size) \
529 TPM2_ALG_ID_Marshal((TPM2_ALG_ID *)(source), buffer, size)
532 // Table 2:64 - Definition of TPMI_ALG_KDF Type (TypeTable)
534 TPMI_ALG_KDF_Unmarshal(TPMI_ALG_KDF *target, BYTE **buffer, INT32 *size, BOOL flag);
536 #define TPMI_ALG_KDF_Marshal(source, buffer, size) \
537 TPM2_ALG_ID_Marshal((TPM2_ALG_ID *)(source), buffer, size)
540 // Table 2:65 - Definition of TPMI_ALG_SIG_SCHEME Type (TypeTable)
542 TPMI_ALG_SIG_SCHEME_Unmarshal(TPMI_ALG_SIG_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
544 #define TPMI_ALG_SIG_SCHEME_Marshal(source, buffer, size) \
545 TPM2_ALG_ID_Marshal((TPM2_ALG_ID *)(source), buffer, size)
548 // Table 2:66 - Definition of TPMI_ECC_KEY_EXCHANGE Type (TypeTable)
551 TPMI_ECC_KEY_EXCHANGE_Unmarshal(TPMI_ECC_KEY_EXCHANGE *target, BYTE **buffer, INT32 *size, BOOL flag);
553 // TPMI_ECC_KEY_EXCHANGE_Marshal not referenced
554 #endif // TPM2_ALG_ECC
557 // Table 2:67 - Definition of TPMI_ST_COMMAND_TAG Type (TypeTable)
559 TPMI_ST_COMMAND_TAG_Unmarshal(TPMI_ST_COMMAND_TAG *target, BYTE **buffer, INT32 *size);
561 // TPMI_ST_COMMAND_TAG_Marshal not referenced
563 TPMS_EMPTY_Unmarshal(TPMS_EMPTY *target, BYTE **buffer, INT32 *size);
565 TPMS_EMPTY_Marshal(TPMS_EMPTY *source, BYTE **buffer, INT32 *size);
568 // Table 2:69 - Definition of TPMS_ALGORITHM_DESCRIPTION Structure (StructureTable)
569 // TPMS_ALGORITHM_DESCRIPTION_Unmarshal not referenced
570 // TPMS_ALGORITHM_DESCRIPTION_Marshal not referenced
573 // Table 2:70 - Definition of TPMU_HA Union (UnionTable)
575 TPMU_HA_Unmarshal(TPMU_HA *target, BYTE **buffer, INT32 *size, UINT32 selector);
577 TPMU_HA_Marshal(TPMU_HA *source, BYTE **buffer, INT32 *size, UINT32 selector);
580 // Table 2:71 - Definition of TPMT_HA Structure (StructureTable)
582 TPMT_HA_Unmarshal(TPMT_HA *target, BYTE **buffer, INT32 *size, BOOL flag);
584 TPMT_HA_Marshal(TPMT_HA *source, BYTE **buffer, INT32 *size);
587 // Table 2:72 - Definition of TPM2B_DIGEST Structure (StructureTable)
589 TPM2B_DIGEST_Unmarshal(TPM2B_DIGEST *target, BYTE **buffer, INT32 *size);
591 TPM2B_DIGEST_Marshal(TPM2B_DIGEST *source, BYTE **buffer, INT32 *size);
594 // Table 2:73 - Definition of TPM2B_DATA Structure (StructureTable)
596 TPM2B_DATA_Unmarshal(TPM2B_DATA *target, BYTE **buffer, INT32 *size);
598 TPM2B_DATA_Marshal(TPM2B_DATA *source, BYTE **buffer, INT32 *size);
601 // Table 2:74 - Definition of Types for TPM2B_NONCE (TypesTable)
602 // TPM2B_DIGEST definition from table 2:74
603 #define TPM2B_NONCE_Unmarshal(target, buffer, size) \
604 TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)(target), buffer, size)
605 #define TPM2B_NONCE_Marshal(source, buffer, size) \
606 TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)(source), buffer, size)
609 // Table 2:75 - Definition of Types for TPM2B_AUTH (TypesTable)
610 // TPM2B_DIGEST definition from table 2:75
611 #define TPM2B_AUTH_Unmarshal(target, buffer, size) \
612 TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)(target), buffer, size)
613 #define TPM2B_AUTH_Marshal(source, buffer, size) \
614 TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)(source), buffer, size)
617 // Table 2:76 - Definition of Types for TPM2B_OPERAND (TypesTable)
618 // TPM2B_DIGEST definition from table 2:76
619 #define TPM2B_OPERAND_Unmarshal(target, buffer, size) \
620 TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)(target), buffer, size)
621 // TPM2B_OPERAND_Marshal not referenced
624 // Table 2:77 - Definition of TPM2B_EVENT Structure (StructureTable)
626 TPM2B_EVENT_Unmarshal(TPM2B_EVENT *target, BYTE **buffer, INT32 *size);
628 // TPM2B_EVENT_Marshal not referenced
631 // Table 2:78 - Definition of TPM2B_MAX_BUFFER Structure (StructureTable)
633 TPM2B_MAX_BUFFER_Unmarshal(TPM2B_MAX_BUFFER *target, BYTE **buffer, INT32 *size);
635 TPM2B_MAX_BUFFER_Marshal(TPM2B_MAX_BUFFER *source, BYTE **buffer, INT32 *size);
638 // Table 2:79 - Definition of TPM2B_MAX_NV_BUFFER Structure (StructureTable)
640 TPM2B_MAX_NV_BUFFER_Unmarshal(TPM2B_MAX_NV_BUFFER *target, BYTE **buffer, INT32 *size);
642 TPM2B_MAX_NV_BUFFER_Marshal(TPM2B_MAX_NV_BUFFER *source, BYTE **buffer, INT32 *size);
645 // Table 2:80 - Definition of TPM2B_TIMEOUT Structure (StructureTable)
647 TPM2B_TIMEOUT_Unmarshal(TPM2B_TIMEOUT *target, BYTE **buffer, INT32 *size);
649 TPM2B_TIMEOUT_Marshal(TPM2B_TIMEOUT *source, BYTE **buffer, INT32 *size);
652 // Table 2:81 - Definition of TPM2B_IV Structure (StructureTable)
654 TPM2B_IV_Unmarshal(TPM2B_IV *target, BYTE **buffer, INT32 *size);
656 TPM2B_IV_Marshal(TPM2B_IV *source, BYTE **buffer, INT32 *size);
659 // Table 2:82 - Definition of TPMU_NAME Union (UnionTable)
662 // Table 2:83 - Definition of TPM2B_NAME Structure (StructureTable)
664 TPM2B_NAME_Unmarshal(TPM2B_NAME *target, BYTE **buffer, INT32 *size);
666 TPM2B_NAME_Marshal(TPM2B_NAME *source, BYTE **buffer, INT32 *size);
669 // Table 2:84 - Definition of TPMS_PCR_SELECT Structure (StructureTable)
670 // TPMS_PCR_SELECT_Unmarshal not referenced
671 // TPMS_PCR_SELECT_Marshal not referenced
674 // Table 2:85 - Definition of TPMS_PCR_SELECTION Structure (StructureTable)
676 TPMS_PCR_SELECTION_Unmarshal(TPMS_PCR_SELECTION *target, BYTE **buffer, INT32 *size);
678 TPMS_PCR_SELECTION_Marshal(TPMS_PCR_SELECTION *source, BYTE **buffer, INT32 *size);
681 // Table 2:88 - Definition of TPMT_TK_CREATION Structure (StructureTable)
683 TPMT_TK_CREATION_Unmarshal(TPMT_TK_CREATION *target, BYTE **buffer, INT32 *size);
685 TPMT_TK_CREATION_Marshal(TPMT_TK_CREATION *source, BYTE **buffer, INT32 *size);
688 // Table 2:89 - Definition of TPMT_TK_VERIFIED Structure (StructureTable)
690 TPMT_TK_VERIFIED_Unmarshal(TPMT_TK_VERIFIED *target, BYTE **buffer, INT32 *size);
692 TPMT_TK_VERIFIED_Marshal(TPMT_TK_VERIFIED *source, BYTE **buffer, INT32 *size);
695 // Table 2:90 - Definition of TPMT_TK_AUTH Structure (StructureTable)
697 TPMT_TK_AUTH_Unmarshal(TPMT_TK_AUTH *target, BYTE **buffer, INT32 *size);
699 TPMT_TK_AUTH_Marshal(TPMT_TK_AUTH *source, BYTE **buffer, INT32 *size);
702 // Table 2:91 - Definition of TPMT_TK_HASHCHECK Structure (StructureTable)
704 TPMT_TK_HASHCHECK_Unmarshal(TPMT_TK_HASHCHECK *target, BYTE **buffer, INT32 *size);
706 TPMT_TK_HASHCHECK_Marshal(TPMT_TK_HASHCHECK *source, BYTE **buffer, INT32 *size);
709 // Table 2:92 - Definition of TPMS_ALG_PROPERTY Structure (StructureTable)
710 // TPMS_ALG_PROPERTY_Unmarshal not referenced
712 TPMS_ALG_PROPERTY_Marshal(TPMS_ALG_PROPERTY *source, BYTE **buffer, INT32 *size);
715 // Table 2:93 - Definition of TPMS_TAGGED_PROPERTY Structure (StructureTable)
716 // TPMS_TAGGED_PROPERTY_Unmarshal not referenced
718 TPMS_TAGGED_PROPERTY_Marshal(TPMS_TAGGED_PROPERTY *source, BYTE **buffer, INT32 *size);
721 // Table 2:94 - Definition of TPMS_TAGGED_PCR_SELECT Structure (StructureTable)
722 // TPMS_TAGGED_PCR_SELECT_Unmarshal not referenced
724 TPMS_TAGGED_PCR_SELECT_Marshal(TPMS_TAGGED_PCR_SELECT *source, BYTE **buffer, INT32 *size);
727 // Table 2:95 - Definition of TPML_CC Structure (StructureTable)
729 TPML_CC_Unmarshal(TPML_CC *target, BYTE **buffer, INT32 *size);
731 TPML_CC_Marshal(TPML_CC *source, BYTE **buffer, INT32 *size);
734 // Table 2:96 - Definition of TPML_CCA Structure (StructureTable)
735 // TPML_CCA_Unmarshal not referenced
737 TPML_CCA_Marshal(TPML_CCA *source, BYTE **buffer, INT32 *size);
740 // Table 2:97 - Definition of TPML_ALG Structure (StructureTable)
742 TPML_ALG_Unmarshal(TPML_ALG *target, BYTE **buffer, INT32 *size);
744 TPML_ALG_Marshal(TPML_ALG *source, BYTE **buffer, INT32 *size);
747 // Table 2:98 - Definition of TPML_HANDLE Structure (StructureTable)
748 // TPML_HANDLE_Unmarshal not referenced
750 TPML_HANDLE_Marshal(TPML_HANDLE *source, BYTE **buffer, INT32 *size);
753 // Table 2:99 - Definition of TPML_DIGEST Structure (StructureTable)
755 TPML_DIGEST_Unmarshal(TPML_DIGEST *target, BYTE **buffer, INT32 *size);
757 TPML_DIGEST_Marshal(TPML_DIGEST *source, BYTE **buffer, INT32 *size);
760 // Table 2:100 - Definition of TPML_DIGEST_VALUES Structure (StructureTable)
762 TPML_DIGEST_VALUES_Unmarshal(TPML_DIGEST_VALUES *target, BYTE **buffer, INT32 *size);
764 TPML_DIGEST_VALUES_Marshal(TPML_DIGEST_VALUES *source, BYTE **buffer, INT32 *size);
767 // Table 2:101 - Definition of TPM2B_DIGEST_VALUES Structure (StructureTable)
768 // TPM2B_DIGEST_VALUES_Unmarshal not referenced
769 // TPM2B_DIGEST_VALUES_Marshal not referenced
772 // Table 2:102 - Definition of TPML_PCR_SELECTION Structure (StructureTable)
774 TPML_PCR_SELECTION_Unmarshal(TPML_PCR_SELECTION *target, BYTE **buffer, INT32 *size);
776 TPML_PCR_SELECTION_Marshal(TPML_PCR_SELECTION *source, BYTE **buffer, INT32 *size);
779 // Table 2:103 - Definition of TPML_ALG_PROPERTY Structure (StructureTable)
780 // TPML_ALG_PROPERTY_Unmarshal not referenced
782 TPML_ALG_PROPERTY_Marshal(TPML_ALG_PROPERTY *source, BYTE **buffer, INT32 *size);
785 // Table 2:104 - Definition of TPML_TAGGED_TPM_PROPERTY Structure (StructureTable)
786 // TPML_TAGGED_TPM_PROPERTY_Unmarshal not referenced
788 TPML_TAGGED_TPM_PROPERTY_Marshal(TPML_TAGGED_TPM_PROPERTY *source, BYTE **buffer, INT32 *size);
791 // Table 2:105 - Definition of TPML_TAGGED_PCR_PROPERTY Structure (StructureTable)
792 // TPML_TAGGED_PCR_PROPERTY_Unmarshal not referenced
794 TPML_TAGGED_PCR_PROPERTY_Marshal(TPML_TAGGED_PCR_PROPERTY *source, BYTE **buffer, INT32 *size);
797 // Table 2:106 - Definition of TPML_ECC_CURVE Structure (StructureTable)
799 // TPML_ECC_CURVE_Unmarshal not referenced
801 TPML_ECC_CURVE_Marshal(TPML_ECC_CURVE *source, BYTE **buffer, INT32 *size);
803 #endif // TPM2_ALG_ECC
806 // Table 2:107 - Definition of TPMU_CAPABILITIES Union (UnionTable)
807 // TPMU_CAPABILITIES_Unmarshal not referenced
809 TPMU_CAPABILITIES_Marshal(TPMU_CAPABILITIES *source, BYTE **buffer, INT32 *size, UINT32 selector);
812 // Table 2:108 - Definition of TPMS_CAPABILITY_DATA Structure (StructureTable)
813 // TPMS_CAPABILITY_DATA_Unmarshal not referenced
815 TPMS_CAPABILITY_DATA_Marshal(TPMS_CAPABILITY_DATA *source, BYTE **buffer, INT32 *size);
818 // Table 2:109 - Definition of TPMS_CLOCK_INFO Structure (StructureTable)
819 // TPMS_CLOCK_INFO_Unmarshal not referenced
821 TPMS_CLOCK_INFO_Marshal(TPMS_CLOCK_INFO *source, BYTE **buffer, INT32 *size);
824 // Table 2:110 - Definition of TPMS_TIME_INFO Structure (StructureTable)
825 // TPMS_TIME_INFO_Unmarshal not referenced
827 TPMS_TIME_INFO_Marshal(TPMS_TIME_INFO *source, BYTE **buffer, INT32 *size);
830 // Table 2:111 - Definition of TPMS_TIME_ATTEST_INFO Structure (StructureTable)
831 // TPMS_TIME_ATTEST_INFO_Unmarshal not referenced
833 TPMS_TIME_ATTEST_INFO_Marshal(TPMS_TIME_ATTEST_INFO *source, BYTE **buffer, INT32 *size);
836 // Table 2:112 - Definition of TPMS_CERTIFY_INFO Structure (StructureTable)
837 // TPMS_CERTIFY_INFO_Unmarshal not referenced
839 TPMS_CERTIFY_INFO_Marshal(TPMS_CERTIFY_INFO *source, BYTE **buffer, INT32 *size);
842 // Table 2:113 - Definition of TPMS_QUOTE_INFO Structure (StructureTable)
843 // TPMS_QUOTE_INFO_Unmarshal not referenced
845 TPMS_QUOTE_INFO_Marshal(TPMS_QUOTE_INFO *source, BYTE **buffer, INT32 *size);
848 // Table 2:114 - Definition of TPMS_COMMAND_AUDIT_INFO Structure (StructureTable)
849 // TPMS_COMMAND_AUDIT_INFO_Unmarshal not referenced
851 TPMS_COMMAND_AUDIT_INFO_Marshal(TPMS_COMMAND_AUDIT_INFO *source, BYTE **buffer, INT32 *size);
854 // Table 2:115 - Definition of TPMS_SESSION_AUDIT_INFO Structure (StructureTable)
855 // TPMS_SESSION_AUDIT_INFO_Unmarshal not referenced
857 TPMS_SESSION_AUDIT_INFO_Marshal(TPMS_SESSION_AUDIT_INFO *source, BYTE **buffer, INT32 *size);
860 // Table 2:116 - Definition of TPMS_CREATION_INFO Structure (StructureTable)
861 // TPMS_CREATION_INFO_Unmarshal not referenced
863 TPMS_CREATION_INFO_Marshal(TPMS_CREATION_INFO *source, BYTE **buffer, INT32 *size);
866 // Table 2:117 - Definition of TPMS_NV_CERTIFY_INFO Structure (StructureTable)
867 // TPMS_NV_CERTIFY_INFO_Unmarshal not referenced
869 TPMS_NV_CERTIFY_INFO_Marshal(TPMS_NV_CERTIFY_INFO *source, BYTE **buffer, INT32 *size);
872 // Table 2:118 - Definition of TPMI_ST_ATTEST Type (TypeTable)
873 // TPMI_ST_ATTEST_Unmarshal not referenced
874 #define TPMI_ST_ATTEST_Marshal(source, buffer, size) \
875 TPM_ST_Marshal((TPM2_ST *)(source), buffer, size)
878 // Table 2:119 - Definition of TPMU_ATTEST Union (UnionTable)
879 // TPMU_ATTEST_Unmarshal not referenced
881 TPMU_ATTEST_Marshal(TPMU_ATTEST *source, BYTE **buffer, INT32 *size, UINT32 selector);
884 // Table 2:120 - Definition of TPMS_ATTEST Structure (StructureTable)
885 // TPMS_ATTEST_Unmarshal not referenced
887 TPMS_ATTEST_Marshal(TPMS_ATTEST *source, BYTE **buffer, INT32 *size);
890 // Table 2:121 - Definition of TPM2B_ATTEST Structure (StructureTable)
891 // TPM2B_ATTEST_Unmarshal not referenced
893 TPM2B_ATTEST_Marshal(TPM2B_ATTEST *source, BYTE **buffer, INT32 *size);
896 // Table 2:122 - Definition of TPMS_AUTH_COMMAND Structure (StructureTable)
897 // TPMS_AUTH_COMMAND_Unmarshal not referenced
898 // TPMS_AUTH_COMMAND_Marshal not referenced
901 // Table 2:123 - Definition of TPMS_AUTH_RESPONSE Structure (StructureTable)
902 // TPMS_AUTH_RESPONSE_Unmarshal not referenced
903 // TPMS_AUTH_RESPONSE_Marshal not referenced
906 // Table 2:124 - Definition of TPMI_AES_KEY_BITS Type (TypeTable)
909 TPMI_AES_KEY_BITS_Unmarshal(TPMI_AES_KEY_BITS *target, BYTE **buffer, INT32 *size);
911 #define TPMI_AES_KEY_BITS_Marshal(source, buffer, size) \
912 TPM_KEY_BITS_Marshal((TPM2_KEY_BITS *)(source), buffer, size)
913 #endif // TPM2_ALG_AES
915 #define HASH_COUNT (TPM2_ALG_SHA1+TPM2_ALG_SHA256+TPM2_ALG_SHA384+TPM2_ALG_SM3_256+TPM2_ALG_SHA512)
917 // Table 2:124 - Definition of TPMI_SM4_KEY_BITS Type (TypeTable)
920 TPMI_SM4_KEY_BITS_Unmarshal(TPMI_SM4_KEY_BITS *target, BYTE **buffer, INT32 *size);
922 #define TPMI_SM4_KEY_BITS_Marshal(source, buffer, size) \
923 TPM_KEY_BITS_Marshal((TPM2_KEY_BITS *)(source), buffer, size)
924 #endif // TPM2_ALG_SM4
927 // Table 2:124 - Definition of TPMI_CAMELLIA_KEY_BITS Type (TypeTable)
928 #ifdef TPM2_ALG_CAMELLIA
930 TPMI_CAMELLIA_KEY_BITS_Unmarshal(TPMI_TPM2_CAMELLIA_KEY_BITS *target, BYTE **buffer, INT32 *size);
932 #define TPMI_CAMELLIA_KEY_BITS_Marshal(source, buffer, size) \
933 TPM_KEY_BITS_Marshal((TPM2_KEY_BITS *)(source), buffer, size)
934 #endif // TPM2_ALG_CAMELLIA
937 // Table 2:125 - Definition of TPMU_SYM_KEY_BITS Union (UnionTable)
939 TPMU_SYM_KEY_BITS_Unmarshal(TPMU_SYM_KEY_BITS *target, BYTE **buffer, INT32 *size, UINT32 selector);
941 TPMU_SYM_KEY_BITS_Marshal(TPMU_SYM_KEY_BITS *source, BYTE **buffer, INT32 *size, UINT32 selector);
944 // Table 2:126 - Definition of TPMU_SYM_MODE Union (UnionTable)
946 TPMU_SYM_MODE_Unmarshal(TPMU_SYM_MODE *target, BYTE **buffer, INT32 *size, UINT32 selector);
948 TPMU_SYM_MODE_Marshal(TPMU_SYM_MODE *source, BYTE **buffer, INT32 *size, UINT32 selector);
951 // Table 2:128 - Definition of TPMT_SYM_DEF Structure (StructureTable)
953 TPMT_SYM_DEF_Unmarshal(TPMT_SYM_DEF *target, BYTE **buffer, INT32 *size, BOOL flag);
955 // TPMT_SYM_DEF_Marshal not referenced
958 // Table 2:129 - Definition of TPMT_SYM_DEF_OBJECT Structure (StructureTable)
960 TPMT_SYM_DEF_OBJECT_Unmarshal(TPMT_SYM_DEF_OBJECT *target, BYTE **buffer, INT32 *size, BOOL flag);
962 TPMT_SYM_DEF_OBJECT_Marshal(TPMT_SYM_DEF_OBJECT *source, BYTE **buffer, INT32 *size);
965 // Table 2:130 - Definition of TPM2B_SYM_KEY Structure (StructureTable)
967 TPM2B_SYM_KEY_Unmarshal(TPM2B_SYM_KEY *target, BYTE **buffer, INT32 *size);
969 TPM2B_SYM_KEY_Marshal(TPM2B_SYM_KEY *source, BYTE **buffer, INT32 *size);
972 // Table 2:131 - Definition of TPMS_SYMCIPHER_PARMS Structure (StructureTable)
973 #define TPMS_SYMCIPHER_PARMS_Unmarshal(target, buffer, size) \
974 TPMT_SYM_DEF_OBJECT_Unmarshal((TPMT_SYM_DEF_OBJECT *)&((target)->sym), buffer, size, 0)
975 #define TPMS_SYMCIPHER_PARMS_Marshal(source, buffer, size) \
976 TPMT_SYM_DEF_OBJECT_Marshal((TPMT_SYM_DEF_OBJECT *)&((source)->sym), buffer, size)
979 // Table 2:132 - Definition of TPM2B_SENSITIVE_DATA Structure (StructureTable)
981 TPM2B_SENSITIVE_DATA_Unmarshal(TPM2B_SENSITIVE_DATA *target, BYTE **buffer, INT32 *size);
983 TPM2B_SENSITIVE_DATA_Marshal(TPM2B_SENSITIVE_DATA *source, BYTE **buffer, INT32 *size);
986 // Table 2:133 - Definition of TPMS_SENSITIVE_CREATE Structure (StructureTable)
988 TPMS_SENSITIVE_CREATE_Unmarshal(TPMS_SENSITIVE_CREATE *target, BYTE **buffer, INT32 *size);
990 // TPMS_SENSITIVE_CREATE_Marshal not referenced
993 // Table 2:134 - Definition of TPM2B_SENSITIVE_CREATE Structure (StructureTable)
995 TPM2B_SENSITIVE_CREATE_Unmarshal(TPM2B_SENSITIVE_CREATE *target, BYTE **buffer, INT32 *size);
997 // TPM2B_SENSITIVE_CREATE_Marshal not referenced
1000 // Table 2:135 - Definition of TPMS_SCHEME_HASH Structure (StructureTable)
1001 #define TPMS_SCHEME_HASH_Unmarshal(target, buffer, size) \
1002 TPMI_ALG_HASH_Unmarshal((TPMI_ALG_HASH *)&((target)->hashAlg), buffer, size, 0)
1003 #define TPMS_SCHEME_HASH_Marshal(source, buffer, size) \
1004 TPMI_ALG_HASH_Marshal((TPMI_ALG_HASH *)&((source)->hashAlg), buffer, size)
1007 // Table 2:136 - Definition of TPMS_SCHEME_ECDAA Structure (StructureTable)
1010 TPMS_SCHEME_ECDAA_Unmarshal(TPMS_SCHEME_ECDAA *target, BYTE **buffer, INT32 *size);
1012 TPMS_SCHEME_ECDAA_Marshal(TPMS_SCHEME_ECDAA *source, BYTE **buffer, INT32 *size);
1014 #endif // TPM2_ALG_ECC
1017 // Table 2:137 - Definition of TPMI_ALG_KEYEDHASH_SCHEME Type (TypeTable)
1019 TPMI_ALG_KEYEDHASH_SCHEME_Unmarshal(TPMI_ALG_KEYEDHASH_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1021 #define TPMI_ALG_KEYEDHASH_SCHEME_Marshal(source, buffer, size) \
1022 TPM2_ALG_ID_Marshal((TPM2_ALG_ID *)(source), buffer, size)
1025 // Table 2:138 - Definition of Types for HMAC_SIG_SCHEME (TypesTable)
1026 // TPMS_SCHEME_HASH definition from table 2:138
1027 #define TPMS_SCHEME_HMAC_Unmarshal(target, buffer, size) \
1028 TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1029 #define TPMS_SCHEME_HMAC_Marshal(source, buffer, size) \
1030 TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1033 // Table 2:139 - Definition of TPMS_SCHEME_XOR Structure (StructureTable)
1035 TPMS_SCHEME_XOR_Unmarshal(TPMS_SCHEME_XOR *target, BYTE **buffer, INT32 *size, BOOL flag);
1037 TPMS_SCHEME_XOR_Marshal(TPMS_SCHEME_XOR *source, BYTE **buffer, INT32 *size);
1040 // Table 2:140 - Definition of TPMU_SCHEME_KEYEDHASH Union (UnionTable)
1042 TPMU_SCHEME_KEYEDHASH_Unmarshal(TPMU_SCHEME_KEYEDHASH *target, BYTE **buffer, INT32 *size, UINT32 selector);
1044 TPMU_SCHEME_KEYEDHASH_Marshal(TPMU_SCHEME_KEYEDHASH *source, BYTE **buffer, INT32 *size, UINT32 selector);
1047 // Table 2:141 - Definition of TPMT_KEYEDHASH_SCHEME Structure (StructureTable)
1049 TPMT_KEYEDHASH_SCHEME_Unmarshal(TPMT_KEYEDHASH_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1051 TPMT_KEYEDHASH_SCHEME_Marshal(TPMT_KEYEDHASH_SCHEME *source, BYTE **buffer, INT32 *size);
1054 // Table 2:142 - Definition of Types for RSA Signature Schemes (TypesTable)
1056 // TPMS_SCHEME_HASH definition from table 2:142
1058 #define TPMS_SIG_SCHEME_RSASSA_Unmarshal(target, buffer, size) \
1059 TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1060 #define TPMS_SIG_SCHEME_RSASSA_Marshal(source, buffer, size) \
1061 TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1062 #endif // TPM2_ALG_RSA
1063 // TPMS_SCHEME_HASH definition from table 2:142
1065 #define TPMS_SIG_SCHEME_RSAPSS_Unmarshal(target, buffer, size) \
1066 TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1067 #define TPMS_SIG_SCHEME_RSAPSS_Marshal(source, buffer, size) \
1068 TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1069 #endif // TPM2_ALG_RSA
1070 #endif // TPM2_ALG_RSA
1073 // Table 2:143 - Definition of Types for ECC Signature Schemes (TypesTable)
1075 // TPMS_SCHEME_HASH definition from table 2:143
1077 #define TPMS_SIG_SCHEME_ECDSA_Unmarshal(target, buffer, size) \
1078 TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1079 #define TPMS_SIG_SCHEME_ECDSA_Marshal(source, buffer, size) \
1080 TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1081 #endif // TPM2_ALG_ECC
1082 // TPMS_SCHEME_HASH definition from table 2:143
1084 #define TPMS_SIG_SCHEME_SM2_Unmarshal(target, buffer, size) \
1085 TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1086 #define TPMS_SIG_SCHEME_SM2_Marshal(source, buffer, size) \
1087 TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1088 #endif // TPM2_ALG_ECC
1089 // TPMS_SCHEME_HASH definition from table 2:143
1091 #define TPMS_SIG_SCHEME_ECSCHNORR_Unmarshal(target, buffer, size) \
1092 TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1093 #define TPMS_SIG_SCHEME_ECSCHNORR_Marshal(source, buffer, size) \
1094 TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1095 #endif // TPM2_ALG_ECC
1096 // TPMS_SCHEME_ECDAA definition from table 2:143
1098 #define TPMS_SIG_SCHEME_ECDAA_Unmarshal(target, buffer, size) \
1099 TPMS_SCHEME_ECDAA_Unmarshal((TPMS_SCHEME_ECDAA *)(target), buffer, size)
1100 #define TPMS_SIG_SCHEME_ECDAA_Marshal(source, buffer, size) \
1101 TPMS_SCHEME_ECDAA_Marshal((TPMS_SCHEME_ECDAA *)(source), buffer, size)
1102 #endif // TPM2_ALG_ECC
1103 #endif // TPM2_ALG_ECC
1106 // Table 2:144 - Definition of TPMU_SIG_SCHEME Union (UnionTable)
1108 TPMU_SIG_SCHEME_Unmarshal(TPMU_SIG_SCHEME *target, BYTE **buffer, INT32 *size, UINT32 selector);
1110 // TPMU_SIG_SCHEME_Marshal not referenced
1113 // Table 2:145 - Definition of TPMT_SIG_SCHEME Structure (StructureTable)
1115 TPMT_SIG_SCHEME_Unmarshal(TPMT_SIG_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1117 // TPMT_SIG_SCHEME_Marshal not referenced
1120 // Table 2:146 - Definition of Types for Encryption Schemes (TypesTable)
1122 // TPMS_SCHEME_HASH definition from table 2:146
1124 #define TPMS_ENC_SCHEME_OAEP_Unmarshal(target, buffer, size) \
1125 TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1126 #define TPMS_ENC_SCHEME_OAEP_Marshal(source, buffer, size) \
1127 TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1128 #endif // TPM2_ALG_RSA
1129 // TPMS_EMPTY definition from table 2:146
1131 #define TPMS_ENC_SCHEME_RSAES_Unmarshal(target, buffer, size) \
1132 TPMS_EMPTY_Unmarshal((TPMS_EMPTY *)(target), buffer, size)
1133 #define TPMS_ENC_SCHEME_RSAES_Marshal(source, buffer, size) \
1134 TPMS_EMPTY_Marshal((TPMS_EMPTY *)(source), buffer, size)
1135 #endif // TPM2_ALG_RSA
1136 #endif // TPM2_ALG_RSA
1139 // Table 2:147 - Definition of Types for ECC Key Exchange (TypesTable)
1141 // TPMS_SCHEME_HASH definition from table 2:147
1143 #define TPMS_KEY_SCHEME_ECDH_Unmarshal(target, buffer, size) \
1144 TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1145 #define TPMS_KEY_SCHEME_ECDH_Marshal(source, buffer, size) \
1146 TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1147 #endif // TPM2_ALG_ECC
1148 // TPMS_SCHEME_HASH definition from table 2:147
1150 #define TPMS_KEY_SCHEME_ECMQV_Unmarshal(target, buffer, size) \
1151 TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1152 #define TPMS_KEY_SCHEME_ECMQV_Marshal(source, buffer, size) \
1153 TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1154 #endif // TPM2_ALG_ECC
1155 #endif // TPM2_ALG_ECC
1158 // Table 2:148 - Definition of Types for KDF Schemes (TypesTable)
1159 // TPMS_SCHEME_HASH definition from table 2:148
1160 #define TPMS_SCHEME_MGF1_Unmarshal(target, buffer, size) \
1161 TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1162 #define TPMS_SCHEME_MGF1_Marshal(source, buffer, size) \
1163 TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1164 // TPMS_SCHEME_HASH definition from table 2:148
1165 #define TPMS_SCHEME_KDF1_SP800_56A_Unmarshal(target, buffer, size) \
1166 TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1167 #define TPMS_SCHEME_KDF1_SP800_56A_Marshal(source, buffer, size) \
1168 TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1169 // TPMS_SCHEME_HASH definition from table 2:148
1170 #define TPMS_SCHEME_KDF2_Unmarshal(target, buffer, size) \
1171 TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1172 #define TPMS_SCHEME_KDF2_Marshal(source, buffer, size) \
1173 TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1174 // TPMS_SCHEME_HASH definition from table 2:148
1175 #define TPMS_SCHEME_KDF1_SP800_108_Unmarshal(target, buffer, size) \
1176 TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1177 #define TPMS_SCHEME_KDF1_SP800_108_Marshal(source, buffer, size) \
1178 TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1181 // Table 2:149 - Definition of TPMU_KDF_SCHEME Union (UnionTable)
1183 TPMU_KDF_SCHEME_Unmarshal(TPMU_KDF_SCHEME *target, BYTE **buffer, INT32 *size, UINT32 selector);
1185 TPMU_KDF_SCHEME_Marshal(TPMU_KDF_SCHEME *source, BYTE **buffer, INT32 *size, UINT32 selector);
1188 // Table 2:150 - Definition of TPMT_KDF_SCHEME Structure (StructureTable)
1190 TPMT_KDF_SCHEME_Unmarshal(TPMT_KDF_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1192 TPMT_KDF_SCHEME_Marshal(TPMT_KDF_SCHEME *source, BYTE **buffer, INT32 *size);
1195 // Table 2:151 - Definition of TPMI_ALG_ASYM_SCHEME Type (TypeTable)
1196 // TPMI_ALG_ASYM_SCHEME_Unmarshal not referenced
1197 // TPMI_ALG_ASYM_SCHEME_Marshal not referenced
1200 // Table 2:152 - Definition of TPMU_ASYM_SCHEME Union (UnionTable)
1202 TPMU_ASYM_SCHEME_Unmarshal(TPMU_ASYM_SCHEME *target, BYTE **buffer, INT32 *size, UINT32 selector);
1204 TPMU_ASYM_SCHEME_Marshal(TPMU_ASYM_SCHEME *source, BYTE **buffer, INT32 *size, UINT32 selector);
1207 // Table 2:153 - Definition of TPMT_ASYM_SCHEME Structure (StructureTable)
1208 // TPMT_ASYM_SCHEME_Unmarshal not referenced
1209 // TPMT_ASYM_SCHEME_Marshal not referenced
1212 // Table 2:154 - Definition of TPMI_ALG_RSA_SCHEME Type (TypeTable)
1215 TPMI_ALG_RSA_SCHEME_Unmarshal(TPMI_ALG_RSA_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1217 #define TPMI_ALG_RSA_SCHEME_Marshal(source, buffer, size) \
1218 TPM2_ALG_ID_Marshal((TPM2_ALG_ID *)(source), buffer, size)
1219 #endif // TPM2_ALG_RSA
1222 // Table 2:155 - Definition of TPMT_RSA_SCHEME Structure (StructureTable)
1225 TPMT_RSA_SCHEME_Unmarshal(TPMT_RSA_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1227 TPMT_RSA_SCHEME_Marshal(TPMT_RSA_SCHEME *source, BYTE **buffer, INT32 *size);
1229 #endif // TPM2_ALG_RSA
1232 // Table 2:156 - Definition of TPMI_ALG_RSA_DECRYPT Type (TypeTable)
1235 TPMI_ALG_RSA_DECRYPT_Unmarshal(TPMI_ALG_RSA_DECRYPT *target, BYTE **buffer, INT32 *size, BOOL flag);
1237 // TPMI_ALG_RSA_DECRYPT_Marshal not referenced
1238 #endif // TPM2_ALG_RSA
1241 // Table 2:157 - Definition of TPMT_RSA_DECRYPT Structure (StructureTable)
1244 TPMT_RSA_DECRYPT_Unmarshal(TPMT_RSA_DECRYPT *target, BYTE **buffer, INT32 *size, BOOL flag);
1246 // TPMT_RSA_DECRYPT_Marshal not referenced
1247 #endif // TPM2_ALG_RSA
1250 // Table 2:158 - Definition of TPM2B_PUBLIC_KEY_RSA Structure (StructureTable)
1253 TPM2B_PUBLIC_KEY_RSA_Unmarshal(TPM2B_PUBLIC_KEY_RSA *target, BYTE **buffer, INT32 *size);
1255 TPM2B_PUBLIC_KEY_RSA_Marshal(TPM2B_PUBLIC_KEY_RSA *source, BYTE **buffer, INT32 *size);
1257 #endif // TPM2_ALG_RSA
1260 // Table 2:159 - Definition of TPMI_RSA_KEY_BITS Type (TypeTable)
1263 TPMI_RSA_KEY_BITS_Unmarshal(TPMI_RSA_KEY_BITS *target, BYTE **buffer, INT32 *size);
1265 #define TPMI_RSA_KEY_BITS_Marshal(source, buffer, size) \
1266 TPM_KEY_BITS_Marshal((TPM2_KEY_BITS *)(source), buffer, size)
1267 #endif // TPM2_ALG_RSA
1270 // Table 2:160 - Definition of TPM2B_PRIVATE_KEY_RSA Structure (StructureTable)
1273 TPM2B_PRIVATE_KEY_RSA_Unmarshal(TPM2B_PRIVATE_KEY_RSA *target, BYTE **buffer, INT32 *size);
1275 TPM2B_PRIVATE_KEY_RSA_Marshal(TPM2B_PRIVATE_KEY_RSA *source, BYTE **buffer, INT32 *size);
1277 #endif // TPM2_ALG_RSA
1280 // Table 2:161 - Definition of TPM2B_ECC_PARAMETER Structure (StructureTable)
1283 TPM2B_ECC_PARAMETER_Unmarshal(TPM2B_ECC_PARAMETER *target, BYTE **buffer, INT32 *size);
1285 TPM2B_ECC_PARAMETER_Marshal(TPM2B_ECC_PARAMETER *source, BYTE **buffer, INT32 *size);
1287 #endif // TPM2_ALG_ECC
1290 // Table 2:162 - Definition of TPMS_ECC_POINT Structure (StructureTable)
1293 TPMS_ECC_POINT_Unmarshal(TPMS_ECC_POINT *target, BYTE **buffer, INT32 *size);
1295 TPMS_ECC_POINT_Marshal(TPMS_ECC_POINT *source, BYTE **buffer, INT32 *size);
1297 #endif // TPM2_ALG_ECC
1300 // Table 2:163 - Definition of TPM2B_ECC_POINT Structure (StructureTable)
1303 TPM2B_ECC_POINT_Unmarshal(TPM2B_ECC_POINT *target, BYTE **buffer, INT32 *size);
1305 TPM2B_ECC_POINT_Marshal(TPM2B_ECC_POINT *source, BYTE **buffer, INT32 *size);
1307 #endif // TPM2_ALG_ECC
1310 // Table 2:164 - Definition of TPMI_ALG_ECC_SCHEME Type (TypeTable)
1313 TPMI_ALG_ECC_SCHEME_Unmarshal(TPMI_ALG_ECC_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1315 #define TPMI_ALG_ECC_SCHEME_Marshal(source, buffer, size) \
1316 TPM2_ALG_ID_Marshal((TPM2_ALG_ID *)(source), buffer, size)
1317 #endif // TPM2_ALG_ECC
1320 // Table 2:165 - Definition of TPMI_ECC_CURVE Type (TypeTable)
1323 TPMI_ECC_CURVE_Unmarshal(TPMI_ECC_CURVE *target, BYTE **buffer, INT32 *size);
1325 #define TPMI_ECC_CURVE_Marshal(source, buffer, size) \
1326 TPM_ECC_CURVE_Marshal((TPM2_ECC_CURVE *)(source), buffer, size)
1327 #endif // TPM2_ALG_ECC
1330 // Table 2:166 - Definition of TPMT_ECC_SCHEME Structure (StructureTable)
1333 TPMT_ECC_SCHEME_Unmarshal(TPMT_ECC_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1335 TPMT_ECC_SCHEME_Marshal(TPMT_ECC_SCHEME *source, BYTE **buffer, INT32 *size);
1337 #endif // TPM2_ALG_ECC
1340 // Table 2:167 - Definition of TPMS_ALGORITHM_DETAIL_ECC Structure (StructureTable)
1342 // TPMS_ALGORITHM_DETAIL_ECC_Unmarshal not referenced
1344 TPMS_ALGORITHM_DETAIL_ECC_Marshal(TPMS_ALGORITHM_DETAIL_ECC *source, BYTE **buffer, INT32 *size);
1346 #endif // TPM2_ALG_ECC
1349 // Table 2:168 - Definition of TPMS_SIGNATURE_RSA Structure (StructureTable)
1352 TPMS_SIGNATURE_RSA_Unmarshal(TPMS_SIGNATURE_RSA *target, BYTE **buffer, INT32 *size);
1354 TPMS_SIGNATURE_RSA_Marshal(TPMS_SIGNATURE_RSA *source, BYTE **buffer, INT32 *size);
1356 #endif // TPM2_ALG_RSA
1359 // Table 2:169 - Definition of Types for Signature (TypesTable)
1361 // TPMS_SIGNATURE_RSA definition from table 2:169
1363 #define TPMS_SIGNATURE_RSASSA_Unmarshal(target, buffer, size) \
1364 TPMS_SIGNATURE_RSA_Unmarshal((TPMS_SIGNATURE_RSA *)(target), buffer, size)
1365 #define TPMS_SIGNATURE_RSASSA_Marshal(source, buffer, size) \
1366 TPMS_SIGNATURE_RSA_Marshal((TPMS_SIGNATURE_RSA *)(source), buffer, size)
1367 #endif // TPM2_ALG_RSA
1368 // TPMS_SIGNATURE_RSA definition from table 2:169
1370 #define TPMS_SIGNATURE_RSAPSS_Unmarshal(target, buffer, size) \
1371 TPMS_SIGNATURE_RSA_Unmarshal((TPMS_SIGNATURE_RSA *)(target), buffer, size)
1372 #define TPMS_SIGNATURE_RSAPSS_Marshal(source, buffer, size) \
1373 TPMS_SIGNATURE_RSA_Marshal((TPMS_SIGNATURE_RSA *)(source), buffer, size)
1374 #endif // TPM2_ALG_RSA
1375 #endif // TPM2_ALG_RSA
1378 // Table 2:170 - Definition of TPMS_SIGNATURE_ECC Structure (StructureTable)
1381 TPMS_SIGNATURE_ECC_Unmarshal(TPMS_SIGNATURE_ECC *target, BYTE **buffer, INT32 *size);
1383 TPMS_SIGNATURE_ECC_Marshal(TPMS_SIGNATURE_ECC *source, BYTE **buffer, INT32 *size);
1385 #endif // TPM2_ALG_ECC
1388 // Table 2:171 - Definition of Types for TPMS_SIGNATUE_ECC (TypesTable)
1390 // TPMS_SIGNATURE_ECC definition from table 2:171
1392 #define TPMS_SIGNATURE_ECDSA_Unmarshal(target, buffer, size) \
1393 TPMS_SIGNATURE_ECC_Unmarshal((TPMS_SIGNATURE_ECC *)(target), buffer, size)
1394 #define TPMS_SIGNATURE_ECDSA_Marshal(source, buffer, size) \
1395 TPMS_SIGNATURE_ECC_Marshal((TPMS_SIGNATURE_ECC *)(source), buffer, size)
1396 #endif // TPM2_ALG_ECC
1397 // TPMS_SIGNATURE_ECC definition from table 2:171
1399 #define TPMS_SIGNATURE_SM2_Unmarshal(target, buffer, size) \
1400 TPMS_SIGNATURE_ECC_Unmarshal((TPMS_SIGNATURE_ECC *)(target), buffer, size)
1401 #define TPMS_SIGNATURE_SM2_Marshal(source, buffer, size) \
1402 TPMS_SIGNATURE_ECC_Marshal((TPMS_SIGNATURE_ECC *)(source), buffer, size)
1403 #endif // TPM2_ALG_ECC
1404 // TPMS_SIGNATURE_ECC definition from table 2:171
1406 #define TPMS_SIGNATURE_ECSCHNORR_Unmarshal(target, buffer, size) \
1407 TPMS_SIGNATURE_ECC_Unmarshal((TPMS_SIGNATURE_ECC *)(target), buffer, size)
1408 #define TPMS_SIGNATURE_ECSCHNORR_Marshal(source, buffer, size) \
1409 TPMS_SIGNATURE_ECC_Marshal((TPMS_SIGNATURE_ECC *)(source), buffer, size)
1410 #endif // TPM2_ALG_ECC
1411 // TPMS_SIGNATURE_ECC definition from table 2:171
1413 #define TPMS_SIGNATURE_ECDAA_Unmarshal(target, buffer, size) \
1414 TPMS_SIGNATURE_ECC_Unmarshal((TPMS_SIGNATURE_ECC *)(target), buffer, size)
1415 #define TPMS_SIGNATURE_ECDAA_Marshal(source, buffer, size) \
1416 TPMS_SIGNATURE_ECC_Marshal((TPMS_SIGNATURE_ECC *)(source), buffer, size)
1417 #endif // TPM2_ALG_ECC
1418 #endif // TPM2_ALG_ECC
1421 // Table 2:172 - Definition of TPMU_SIGNATURE Union (UnionTable)
1423 TPMU_SIGNATURE_Unmarshal(TPMU_SIGNATURE *target, BYTE **buffer, INT32 *size, UINT32 selector);
1425 TPMU_SIGNATURE_Marshal(TPMU_SIGNATURE *source, BYTE **buffer, INT32 *size, UINT32 selector);
1428 // Table 2:173 - Definition of TPMT_SIGNATURE Structure (StructureTable)
1430 TPMT_SIGNATURE_Unmarshal(TPMT_SIGNATURE *target, BYTE **buffer, INT32 *size, BOOL flag);
1432 TPMT_SIGNATURE_Marshal(TPMT_SIGNATURE *source, BYTE **buffer, INT32 *size);
1435 // Table 2:174 - Definition of TPMU_ENCRYPTED_SECRET Union (UnionTable)
1436 // TPMU_ENCRYPTED_SECRET_Unmarshal not referenced
1437 // TPMU_ENCRYPTED_SECRET_Marshal not referenced
1440 // Table 2:175 - Definition of TPM2B_ENCRYPTED_SECRET Structure (StructureTable)
1442 TPM2B_ENCRYPTED_SECRET_Unmarshal(TPM2B_ENCRYPTED_SECRET *target, BYTE **buffer, INT32 *size);
1444 TPM2B_ENCRYPTED_SECRET_Marshal(TPM2B_ENCRYPTED_SECRET *source, BYTE **buffer, INT32 *size);
1447 // Table 2:176 - Definition of TPMI_ALG_PUBLIC Type (TypeTable)
1449 TPMI_ALG_PUBLIC_Unmarshal(TPMI_ALG_PUBLIC *target, BYTE **buffer, INT32 *size);
1451 #define TPM_ALG_ID_Unmarshal(target, buffer, size) \
1452 UINT16_Unmarshal((UINT16 *)(target), buffer, size)
1453 #define TPM_ALG_ID_Marshal(source, buffer, size) \
1454 UINT16_Marshal((UINT16 *)(source), buffer, size)
1455 #define TPMI_ALG_PUBLIC_Marshal(source, buffer, size) \
1456 TPM_ALG_ID_Marshal((TPM2_ALG_ID *)(source), buffer, size)
1459 // Table 2:177 - Definition of TPMU_PUBLIC_ID Union (UnionTable)
1461 TPMU_PUBLIC_ID_Unmarshal(TPMU_PUBLIC_ID *target, BYTE **buffer, INT32 *size, UINT32 selector);
1463 TPMU_PUBLIC_ID_Marshal(TPMU_PUBLIC_ID *source, BYTE **buffer, INT32 *size, UINT32 selector);
1466 // Table 2:178 - Definition of TPMS_KEYEDHASH_PARMS Structure (StructureTable)
1467 #define TPMS_KEYEDHASH_PARMS_Unmarshal(target, buffer, size) \
1468 TPMT_KEYEDHASH_SCHEME_Unmarshal((TPMT_KEYEDHASH_SCHEME *)&((target)->scheme), buffer, size, 1)
1469 #define TPMS_KEYEDHASH_PARMS_Marshal(source, buffer, size) \
1470 TPMT_KEYEDHASH_SCHEME_Marshal((TPMT_KEYEDHASH_SCHEME *)&((source)->scheme), buffer, size)
1473 // Table 2:179 - Definition of TPMS_ASYM_PARMS Structure (StructureTable)
1474 // TPMS_ASYM_PARMS_Unmarshal not referenced
1475 // TPMS_ASYM_PARMS_Marshal not referenced
1478 // Table 2:180 - Definition of TPMS_RSA_PARMS Structure (StructureTable)
1481 TPMS_RSA_PARMS_Unmarshal(TPMS_RSA_PARMS *target, BYTE **buffer, INT32 *size);
1483 TPMS_RSA_PARMS_Marshal(TPMS_RSA_PARMS *source, BYTE **buffer, INT32 *size);
1485 #endif // TPM2_ALG_RSA
1488 // Table 2:181 - Definition of TPMS_ECC_PARMS Structure (StructureTable)
1491 TPMS_ECC_PARMS_Unmarshal(TPMS_ECC_PARMS *target, BYTE **buffer, INT32 *size);
1493 TPMS_ECC_PARMS_Marshal(TPMS_ECC_PARMS *source, BYTE **buffer, INT32 *size);
1495 #endif // TPM2_ALG_ECC
1498 // Table 2:182 - Definition of TPMU_PUBLIC_PARMS Union (UnionTable)
1500 TPMU_PUBLIC_PARMS_Unmarshal(TPMU_PUBLIC_PARMS *target, BYTE **buffer, INT32 *size, UINT32 selector);
1502 TPMU_PUBLIC_PARMS_Marshal(TPMU_PUBLIC_PARMS *source, BYTE **buffer, INT32 *size, UINT32 selector);
1505 // Table 2:183 - Definition of TPMT_PUBLIC_PARMS Structure (StructureTable)
1507 TPMT_PUBLIC_PARMS_Unmarshal(TPMT_PUBLIC_PARMS *target, BYTE **buffer, INT32 *size);
1509 // TPMT_PUBLIC_PARMS_Marshal not referenced
1512 // Table 2:184 - Definition of TPMT_PUBLIC Structure (StructureTable)
1514 TPMT_PUBLIC_Unmarshal(TPMT_PUBLIC *target, BYTE **buffer, INT32 *size, BOOL flag);
1516 TPMT_PUBLIC_Marshal(TPMT_PUBLIC *source, BYTE **buffer, INT32 *size);
1519 // Table 2:185 - Definition of TPM2B_PUBLIC Structure (StructureTable)
1521 TPM2B_PUBLIC_Unmarshal(TPM2B_PUBLIC *target, BYTE **buffer, INT32 *size, BOOL flag);
1523 TPM2B_PUBLIC_Marshal(TPM2B_PUBLIC *source, BYTE **buffer, INT32 *size);
1526 // Table 2:186 - Definition of TPM2B_PRIVATE_VENDOR_SPECIFIC Structure (StructureTable)
1527 // TPM2B_PRIVATE_VENDOR_SPECIFIC_Unmarshal not referenced
1528 // TPM2B_PRIVATE_VENDOR_SPECIFIC_Marshal not referenced
1531 // Table 2:187 - Definition of TPMU_SENSITIVE_COMPOSITE Union (UnionTable)
1533 TPMU_SENSITIVE_COMPOSITE_Unmarshal(TPMU_SENSITIVE_COMPOSITE *target, BYTE **buffer, INT32 *size, UINT32 selector);
1535 TPMU_SENSITIVE_COMPOSITE_Marshal(TPMU_SENSITIVE_COMPOSITE *source, BYTE **buffer, INT32 *size, UINT32 selector);
1538 // Table 2:188 - Definition of TPMT_SENSITIVE Structure (StructureTable)
1540 TPMT_SENSITIVE_Unmarshal(TPMT_SENSITIVE *target, BYTE **buffer, INT32 *size);
1542 TPMT_SENSITIVE_Marshal(TPMT_SENSITIVE *source, BYTE **buffer, INT32 *size);
1545 // Table 2:189 - Definition of TPM2B_SENSITIVE Structure (StructureTable)
1547 TPM2B_SENSITIVE_Unmarshal(TPM2B_SENSITIVE *target, BYTE **buffer, INT32 *size);
1549 // TPM2B_SENSITIVE_Marshal not referenced
1552 // Table 2:190 - Definition of _PRIVATE Structure (StructureTable)
1553 // _PRIVATE_Unmarshal not referenced
1554 // _PRIVATE_Marshal not referenced
1557 // Table 2:191 - Definition of TPM2B_PRIVATE Structure (StructureTable)
1559 TPM2B_PRIVATE_Unmarshal(TPM2B_PRIVATE *target, BYTE **buffer, INT32 *size);
1561 TPM2B_PRIVATE_Marshal(TPM2B_PRIVATE *source, BYTE **buffer, INT32 *size);
1564 // Table 2:192 - Definition of _ID_OBJECT Structure (StructureTable)
1565 // _ID_OBJECT_Unmarshal not referenced
1566 // _ID_OBJECT_Marshal not referenced
1569 // Table 2:193 - Definition of TPM2B_ID_OBJECT Structure (StructureTable)
1571 TPM2B_ID_OBJECT_Unmarshal(TPM2B_ID_OBJECT *target, BYTE **buffer, INT32 *size);
1573 TPM2B_ID_OBJECT_Marshal(TPM2B_ID_OBJECT *source, BYTE **buffer, INT32 *size);
1576 // Table 2:194 - Definition of TPM2_NV_INDEX Bits (BitsTable)
1577 // TPM2_NV_INDEX_Unmarshal not referenced
1578 // TPM2_NV_INDEX_Marshal not referenced
1581 // Table 2:195 - Definition of TPMA_NV Bits (BitsTable)
1583 TPMA_NV_Unmarshal(TPMA_NV *target, BYTE **buffer, INT32 *size);
1585 #define TPMA_NV_Marshal(source, buffer, size) \
1586 UINT32_Marshal((UINT32 *)(source), buffer, size)
1589 // Table 2:196 - Definition of TPMS_NV_PUBLIC Structure (StructureTable)
1591 TPMS_NV_PUBLIC_Unmarshal(TPMS_NV_PUBLIC *target, BYTE **buffer, INT32 *size);
1593 TPMS_NV_PUBLIC_Marshal(TPMS_NV_PUBLIC *source, BYTE **buffer, INT32 *size);
1596 // Table 2:197 - Definition of TPM2B_NV_PUBLIC Structure (StructureTable)
1598 TPM2B_NV_PUBLIC_Unmarshal(TPM2B_NV_PUBLIC *target, BYTE **buffer, INT32 *size);
1600 TPM2B_NV_PUBLIC_Marshal(TPM2B_NV_PUBLIC *source, BYTE **buffer, INT32 *size);
1603 // Table 2:198 - Definition of TPM2B_CONTEXT_SENSITIVE Structure (StructureTable)
1604 // TPM2B_CONTEXT_SENSITIVE_Unmarshal not referenced
1605 // TPM2B_CONTEXT_SENSITIVE_Marshal not referenced
1608 // Table 2:199 - Definition of TPMS_CONTEXT_DATA Structure (StructureTable)
1609 // TPMS_CONTEXT_DATA_Unmarshal not referenced
1610 // TPMS_CONTEXT_DATA_Marshal not referenced
1613 // Table 2:200 - Definition of TPM2B_CONTEXT_DATA Structure (StructureTable)
1615 TPM2B_CONTEXT_DATA_Unmarshal(TPM2B_CONTEXT_DATA *target, BYTE **buffer, INT32 *size);
1617 TPM2B_CONTEXT_DATA_Marshal(TPM2B_CONTEXT_DATA *source, BYTE **buffer, INT32 *size);
1620 // Table 2:201 - Definition of TPMS_CONTEXT Structure (StructureTable)
1622 TPMS_CONTEXT_Unmarshal(TPMS_CONTEXT *target, BYTE **buffer, INT32 *size);
1624 TPMS_CONTEXT_Marshal(TPMS_CONTEXT *source, BYTE **buffer, INT32 *size);
1627 // Table 2:203 - Definition of TPMS_CREATION_DATA Structure (StructureTable)
1628 // TPMS_CREATION_DATA_Unmarshal not referenced
1630 TPMS_CREATION_DATA_Marshal(TPMS_CREATION_DATA *source, BYTE **buffer, INT32 *size);
1633 // Table 2:204 - Definition of TPM2B_CREATION_DATA Structure (StructureTable)
1634 // TPM2B_CREATION_DATA_Unmarshal not referenced
1636 TPM2B_CREATION_DATA_Marshal(TPM2B_CREATION_DATA *source, BYTE **buffer, INT32 *size);
1638 // Array Marshal/Unmarshal for TPMS_TAGGED_PROPERTY
1639 // TPMS_TAGGED_PROPERTY_Array_Unmarshal not referenced
1641 TPMS_TAGGED_PROPERTY_Array_Marshal(TPMS_TAGGED_PROPERTY *source, BYTE **buffer, INT32 *size, INT32 count);
1643 // Array Marshal/Unmarshal for TPMS_ALG_PROPERTY
1644 // TPMS_ALG_PROPERTY_Array_Unmarshal not referenced
1646 TPMS_ALG_PROPERTY_Array_Marshal(TPMS_ALG_PROPERTY *source, BYTE **buffer, INT32 *size, INT32 count);
1648 // Array Marshal/Unmarshal for TPMS_PCR_SELECTION
1650 TPMS_PCR_SELECTION_Array_Unmarshal(TPMS_PCR_SELECTION *target, BYTE **buffer, INT32 *size, INT32 count);
1652 TPMS_PCR_SELECTION_Array_Marshal(TPMS_PCR_SELECTION *source, BYTE **buffer, INT32 *size, INT32 count);
1654 // Array Marshal/Unmarshal for TPMT_HA
1656 TPMT_HA_Array_Unmarshal(TPMT_HA *target, BYTE **buffer, INT32 *size, BOOL flag, INT32 count);
1658 TPMT_HA_Array_Marshal(TPMT_HA *source, BYTE **buffer, INT32 *size, INT32 count);
1660 // Array Marshal/Unmarshal for BYTE
1662 BYTE_Array_Unmarshal(BYTE *target, BYTE **buffer, INT32 *size, INT32 count);
1664 BYTE_Array_Marshal(BYTE *source, BYTE **buffer, INT32 *size, INT32 count);
1666 // Array Marshal/Unmarshal for TPM2_HANDLE
1667 // TPM2_HANDLE_Array_Unmarshal not referenced
1669 TPM_HANDLE_Array_Marshal(TPM2_HANDLE *source, BYTE **buffer, INT32 *size, INT32 count);
1671 // Array Marshal/Unmarshal for TPMA_CC
1672 // TPMA_CC_Array_Unmarshal not referenced
1674 TPMA_CC_Array_Marshal(TPMA_CC *source, BYTE **buffer, INT32 *size, INT32 count);
1676 // Array Marshal/Unmarshal for TPMS_TAGGED_PCR_SELECT
1677 // TPMS_TAGGED_PCR_SELECT_Array_Unmarshal not referenced
1679 TPMS_TAGGED_PCR_SELECT_Array_Marshal(TPMS_TAGGED_PCR_SELECT *source, BYTE **buffer, INT32 *size, INT32 count);
1681 // Array Marshal/Unmarshal for TPM2_ECC_CURVE
1683 // TPM2_ECC_CURVE_Array_Unmarshal not referenced
1685 TPM_ECC_CURVE_Array_Marshal(TPM2_ECC_CURVE *source, BYTE **buffer, INT32 *size, INT32 count);
1687 #endif // TPM2_ALG_ECC
1688 // Array Marshal/Unmarshal for TPM2B_DIGEST
1690 TPM2B_DIGEST_Array_Unmarshal(TPM2B_DIGEST *target, BYTE **buffer, INT32 *size, INT32 count);
1692 TPM2B_DIGEST_Array_Marshal(TPM2B_DIGEST *source, BYTE **buffer, INT32 *size, INT32 count);
1694 // Array Marshal/Unmarshal for TPM2_CC
1696 TPM_CC_Array_Unmarshal(TPM2_CC *target, BYTE **buffer, INT32 *size, INT32 count);
1698 TPM_CC_Array_Marshal(TPM2_CC *source, BYTE **buffer, INT32 *size, INT32 count);
1700 // Array Marshal/Unmarshal for TPM2_ALG_ID
1702 TPM_ALG_ID_Array_Unmarshal(TPM2_ALG_ID *target, BYTE **buffer, INT32 *size, INT32 count);
1704 TPM_ALG_ID_Array_Marshal(TPM2_ALG_ID *source, BYTE **buffer, INT32 *size, INT32 count);
1706 #endif // _MARSHAL_FP_H