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
23 UINT8 *target, BYTE **buffer, INT32 *size
27 return TPM_RC_INSUFFICIENT;
28 *target = BYTE_ARRAY_TO_UINT8(*buffer);
30 return TPM_RC_SUCCESS;
35 UINT8 *source, BYTE **buffer, INT32 *size
40 if ((size == 0) || ((*size -= 1) >= 0))
42 UINT8_TO_BYTE_ARRAY(*source, *buffer);
45 pAssert(size == 0 || (*size >= 0));
50 // BYTE definition from table 2:3
51 // BYTE_Unmarshal changed to #define
52 // BYTE_Marshal changed to #define
53 // INT8 definition from table 2:3
54 // INT8_Unmarshal changed to #define
55 // INT8_Marshal not referenced
56 // UINT16 definition from table 2:3
59 UINT16 *target, BYTE **buffer, INT32 *size
63 return TPM_RC_INSUFFICIENT;
64 *target = BYTE_ARRAY_TO_UINT16(*buffer);
66 return TPM_RC_SUCCESS;
71 UINT16 *source, BYTE **buffer, INT32 *size
76 if ((size == 0) || ((*size -= 2) >= 0))
78 UINT16_TO_BYTE_ARRAY(*source, *buffer);
81 pAssert(size == 0 || (*size >= 0));
86 // INT16 definition from table 2:3
87 // INT16_Unmarshal not referenced
88 // INT16_Marshal not referenced
89 // UINT32 definition from table 2:3
92 UINT32 *target, BYTE **buffer, INT32 *size
96 return TPM_RC_INSUFFICIENT;
97 *target = BYTE_ARRAY_TO_UINT32(*buffer);
99 return TPM_RC_SUCCESS;
104 UINT32 *source, BYTE **buffer, INT32 *size
109 if ((size == 0) || ((*size -= 4) >= 0))
111 UINT32_TO_BYTE_ARRAY(*source, *buffer);
114 pAssert(size == 0 || (*size >= 0));
119 // INT32 definition from table 2:3
120 // INT32_Unmarshal changed to #define
121 // INT32_Marshal not referenced
122 // UINT64 definition from table 2:3
125 UINT64 *target, BYTE **buffer, INT32 *size
129 return TPM_RC_INSUFFICIENT;
130 *target = BYTE_ARRAY_TO_UINT64(*buffer);
132 return TPM_RC_SUCCESS;
137 UINT64 *source, BYTE **buffer, INT32 *size
142 if ((size == 0) || ((*size -= 8) >= 0))
144 UINT64_TO_BYTE_ARRAY(*source, *buffer);
147 pAssert(size == 0 || (*size >= 0));
152 // INT64 definition from table 2:3
153 // INT64_Unmarshal not referenced
154 // INT64_Marshal not referenced
157 // Table 2:4 - Defines for Logic Values (DefinesTable)
160 // Table 2:5 - Definition of Types for Documentation Clarity (TypesTable)
161 // UINT32 definition from table 2:5
162 // TPM_ALGORITHM_ID_Unmarshal not referenced
163 // TPM_ALGORITHM_ID_Marshal not referenced
164 // UINT32 definition from table 2:5
165 // TPM_MODIFIER_INDICATOR_Unmarshal not referenced
166 // TPM_MODIFIER_INDICATOR_Marshal not referenced
167 // UINT32 definition from table 2:5
168 // TPM_AUTHORIZATION_SIZE_Unmarshal not referenced
169 // TPM_AUTHORIZATION_SIZE_Marshal not referenced
170 // UINT32 definition from table 2:5
171 // TPM_PARAMETER_SIZE_Unmarshal not referenced
172 // TPM_PARAMETER_SIZE_Marshal not referenced
173 // UINT16 definition from table 2:5
174 // TPM_KEY_SIZE_Unmarshal not referenced
175 // TPM_KEY_SIZE_Marshal not referenced
176 // UINT16 definition from table 2:5
177 // TPM_KEY_BITS_Unmarshal changed to #define
178 // TPM_KEY_BITS_Marshal changed to #define
181 // Table 2:6 - Definition of TPM_SPEC Constants (ConstantsTable)
182 // TPM_SPEC_Unmarshal not referenced
183 // TPM_SPEC_Marshal not referenced
186 // Table 2:7 - Definition of TPM_GENERATED Constants (ConstantsTable)
187 // TPM_GENERATED_Unmarshal not referenced
188 // TPM_GENERATED_Marshal changed to #define
191 // Table 2:9 - Definition of TPM_ALG_ID Constants (ConstantsTable)
192 // TPM_ALG_ID_Unmarshal changed to #define
193 // TPM_ALG_ID_Marshal changed to #define
196 // Table 2:10 - Definition of TPM_ECC_CURVE Constants (ConstantsTable)
198 // TPM_ECC_CURVE_Unmarshal changed to #define
199 // TPM_ECC_CURVE_Marshal changed to #define
200 #endif // TPM_ALG_ECC
203 // Table 2:13 - Definition of TPM_CC Constants (ConstantsTable)
204 // TPM_CC_Unmarshal changed to #define
205 // TPM_CC_Marshal changed to #define
208 // Table 2:17 - Definition of TPM_RC Constants (ConstantsTable)
209 // TPM_RC_Unmarshal not referenced
210 // TPM_RC_Marshal changed to #define
213 // Table 2:18 - Definition of TPM_CLOCK_ADJUST Constants (ConstantsTable)
215 TPM_CLOCK_ADJUST_Unmarshal(
216 TPM_CLOCK_ADJUST *target, BYTE **buffer, INT32 *size
219 return TPM_RC_SUCCESS;
222 // TPM_CLOCK_ADJUST_Marshal not referenced
225 // Table 2:19 - Definition of TPM_EO Constants (ConstantsTable)
228 TPM_EO *target, BYTE **buffer, INT32 *size
232 result = UINT16_Unmarshal((UINT16 *)target, buffer, size);
233 if(result != TPM_RC_SUCCESS)
238 case TPM_EO_SIGNED_GT :
239 case TPM_EO_UNSIGNED_GT :
240 case TPM_EO_SIGNED_LT :
241 case TPM_EO_UNSIGNED_LT :
242 case TPM_EO_SIGNED_GE :
243 case TPM_EO_UNSIGNED_GE :
244 case TPM_EO_SIGNED_LE :
245 case TPM_EO_UNSIGNED_LE :
247 case TPM_EO_BITCLEAR :
253 return TPM_RC_SUCCESS;
256 // TPM_EO_Marshal not referenced
259 // Table 2:20 - Definition of TPM_ST Constants (ConstantsTable)
260 // TPM_ST_Unmarshal changed to #define
261 // TPM_ST_Marshal changed to #define
264 // Table 2:21 - Definition of TPM_SU Constants (ConstantsTable)
267 TPM_SU *target, BYTE **buffer, INT32 *size
271 result = UINT16_Unmarshal((UINT16 *)target, buffer, size);
272 if(result != TPM_RC_SUCCESS)
282 return TPM_RC_SUCCESS;
285 // TPM_SU_Marshal not referenced
288 // Table 2:22 - Definition of TPM_SE Constants (ConstantsTable)
291 TPM_SE *target, BYTE **buffer, INT32 *size
295 result = UINT8_Unmarshal((UINT8 *)target, buffer, size);
296 if(result != TPM_RC_SUCCESS)
307 return TPM_RC_SUCCESS;
310 // TPM_SE_Marshal not referenced
313 // Table 2:23 - Definition of TPM_CAP Constants (ConstantsTable)
316 TPM_CAP *target, BYTE **buffer, INT32 *size
320 result = UINT32_Unmarshal((UINT32 *)target, buffer, size);
321 if(result != TPM_RC_SUCCESS)
325 case TPM_CAP_HANDLES :
326 case TPM_CAP_COMMANDS :
327 case TPM_CAP_PP_COMMANDS :
328 case TPM_CAP_AUDIT_COMMANDS :
330 case TPM_CAP_TPM_PROPERTIES :
331 case TPM_CAP_PCR_PROPERTIES :
332 case TPM_CAP_ECC_CURVES :
333 case TPM_CAP_VENDOR_PROPERTY :
339 return TPM_RC_SUCCESS;
342 // TPM_CAP_Marshal changed to #define
345 // Table 2:24 - Definition of TPM_PT Constants (ConstantsTable)
346 // TPM_PT_Unmarshal not referenced
347 // TPM_PT_Marshal changed to #define
350 // Table 2:25 - Definition of TPM_PT_PCR Constants (ConstantsTable)
351 // TPM_PT_PCR_Unmarshal not referenced
352 // TPM_PT_PCR_Marshal not referenced
355 // Table 2:26 - Definition of TPM_PS Constants (ConstantsTable)
356 // TPM_PS_Unmarshal not referenced
357 // TPM_PS_Marshal not referenced
360 // Table 2:27 - Definition of Types for Handles (TypesTable)
361 // UINT32 definition from table 2:27
362 // TPM_HANDLE_Unmarshal changed to #define
363 // TPM_HANDLE_Marshal changed to #define
366 // Table 2:28 - Definition of TPM_HT Constants (ConstantsTable)
367 // TPM_HT_Unmarshal not referenced
368 // TPM_HT_Marshal not referenced
371 // Table 2:29 - Definition of TPM_RH Constants (ConstantsTable)
372 // TPM_RH_Unmarshal not referenced
373 // TPM_RH_Marshal not referenced
376 // Table 2:30 - Definition of TPM_HC Constants (ConstantsTable)
377 // TPM_HC_Unmarshal not referenced
378 // TPM_HC_Marshal not referenced
381 // Table 2:31 - Definition of TPMA_ALGORITHM Bits (BitsTable)
382 // TPMA_ALGORITHM_Unmarshal not referenced
383 // TPMA_ALGORITHM_Marshal changed to #define
386 // Table 2:32 - Definition of TPMA_OBJECT Bits (BitsTable)
388 TPMA_OBJECT_Unmarshal(
389 TPMA_OBJECT *target, BYTE **buffer, INT32 *size
393 result = UINT32_Unmarshal((UINT32 *)target, buffer, size);
394 if(result != TPM_RC_SUCCESS)
396 if(*((UINT32 *)target) & (UINT32)0xfff8f309)
397 return TPM_RC_RESERVED_BITS;
398 return TPM_RC_SUCCESS;
401 // TPMA_OBJECT_Marshal changed to #define
404 // Table 2:33 - Definition of TPMA_SESSION Bits (BitsTable)
406 TPMA_SESSION_Unmarshal(
407 TPMA_SESSION *target, BYTE **buffer, INT32 *size
411 result = UINT8_Unmarshal((UINT8 *)target, buffer, size);
412 if(result != TPM_RC_SUCCESS)
414 if(*((UINT8 *)target) & (UINT8)0x18)
415 return TPM_RC_RESERVED_BITS;
416 return TPM_RC_SUCCESS;
419 // TPMA_SESSION_Marshal changed to #define
422 // Table 2:34 - Definition of TPMA_LOCALITY Bits (BitsTable)
423 // TPMA_LOCALITY_Unmarshal changed to #define
424 // TPMA_LOCALITY_Marshal changed to #define
427 // Table 2:35 - Definition of TPMA_PERMANENT Bits (BitsTable)
428 // TPMA_PERMANENT_Unmarshal not referenced
429 // TPMA_PERMANENT_Marshal not referenced
432 // Table 2:36 - Definition of TPMA_STARTUP_CLEAR Bits (BitsTable)
433 // TPMA_STARTUP_CLEAR_Unmarshal not referenced
434 // TPMA_STARTUP_CLEAR_Marshal not referenced
437 // Table 2:37 - Definition of TPMA_MEMORY Bits (BitsTable)
438 // TPMA_MEMORY_Unmarshal not referenced
439 // TPMA_MEMORY_Marshal not referenced
442 // Table 2:38 - Definition of TPMA_CC Bits (BitsTable)
443 // TPMA_CC_Unmarshal not referenced
444 // TPMA_CC_Marshal changed to #define
447 // Table 2:39 - Definition of TPMI_YES_NO Type (TypeTable)
449 TPMI_YES_NO_Unmarshal(
450 TPMI_YES_NO *target, BYTE **buffer, INT32 *size
454 result = BYTE_Unmarshal((BYTE *)target, buffer, size);
455 if(result != TPM_RC_SUCCESS)
464 return TPM_RC_SUCCESS;
467 // TPMI_YES_NO_Marshal changed to #define
470 // Table 2:40 - Definition of TPMI_DH_OBJECT Type (TypeTable)
472 TPMI_DH_OBJECT_Unmarshal(
473 TPMI_DH_OBJECT *target, BYTE **buffer, INT32 *size, BOOL flag
477 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
478 if(result != TPM_RC_SUCCESS)
480 if (*target == TPM_RH_NULL) {
482 return TPM_RC_SUCCESS;
487 return TPM_RC_SUCCESS;
490 // TPMI_DH_OBJECT_Marshal changed to #define
493 // Table 2:41 - Definition of TPMI_DH_PERSISTENT Type (TypeTable)
495 TPMI_DH_PERSISTENT_Unmarshal(
496 TPMI_DH_PERSISTENT *target, BYTE **buffer, INT32 *size
500 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
501 if(result != TPM_RC_SUCCESS)
503 if((*target < PERSISTENT_FIRST) || (*target > PERSISTENT_LAST))
505 return TPM_RC_SUCCESS;
508 // TPMI_DH_PERSISTENT_Marshal not referenced
511 // Table 2:42 - Definition of TPMI_DH_ENTITY Type (TypeTable)
513 TPMI_DH_ENTITY_Unmarshal(
514 TPMI_DH_ENTITY *target, BYTE **buffer, INT32 *size, BOOL flag
518 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
519 if(result != TPM_RC_SUCCESS)
522 return TPM_RC_SUCCESS;
525 // TPMI_DH_ENTITY_Marshal not referenced
528 // Table 2:43 - Definition of TPMI_DH_PCR Type (TypeTable)
530 TPMI_DH_PCR_Unmarshal(
531 TPMI_DH_PCR *target, BYTE **buffer, INT32 *size, BOOL flag
535 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
536 if(result != TPM_RC_SUCCESS)
538 if (*target == TPM_RH_NULL) {
540 return TPM_RC_SUCCESS;
545 return TPM_RC_SUCCESS;
548 // TPMI_DH_PCR_Marshal not referenced
551 // Table 2:44 - Definition of TPMI_SH_AUTH_SESSION Type (TypeTable)
553 TPMI_SH_AUTH_SESSION_Unmarshal(
554 TPMI_SH_AUTH_SESSION *target, BYTE **buffer, INT32 *size, BOOL flag
558 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
559 if(result != TPM_RC_SUCCESS)
561 if (*target == TPM_RS_PW) {
563 return TPM_RC_SUCCESS;
568 return TPM_RC_SUCCESS;
571 // TPMI_SH_AUTH_SESSION_Marshal changed to #define
574 // Table 2:45 - Definition of TPMI_SH_HMAC Type (TypeTable)
576 TPMI_SH_HMAC_Unmarshal(
577 TPMI_SH_HMAC *target, BYTE **buffer, INT32 *size
581 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
582 if(result != TPM_RC_SUCCESS)
585 return TPM_RC_SUCCESS;
588 // TPMI_SH_HMAC_Marshal not referenced
591 // Table 2:46 - Definition of TPMI_SH_POLICY Type (TypeTable)
593 TPMI_SH_POLICY_Unmarshal(
594 TPMI_SH_POLICY *target, BYTE **buffer, INT32 *size
598 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
600 return TPM_RC_SUCCESS;
603 // TPMI_SH_POLICY_Marshal not referenced
606 // Table 2:47 - Definition of TPMI_DH_CONTEXT Type (TypeTable)
608 TPMI_DH_CONTEXT_Unmarshal(
609 TPMI_DH_CONTEXT *target, BYTE **buffer, INT32 *size
613 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
614 if(result != TPM_RC_SUCCESS)
617 return TPM_RC_SUCCESS;
620 // TPMI_DH_CONTEXT_Marshal changed to #define
623 // Table 2:48 - Definition of TPMI_RH_HIERARCHY Type (TypeTable)
625 TPMI_RH_HIERARCHY_Unmarshal(
626 TPMI_RH_HIERARCHY *target, BYTE **buffer, INT32 *size, BOOL flag
630 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
631 if(result != TPM_RC_SUCCESS)
635 case TPM_RH_PLATFORM:
636 case TPM_RH_ENDORSEMENT:
645 return TPM_RC_SUCCESS;
648 // TPMI_RH_HIERARCHY_Marshal changed to #define
651 // Table 2:49 - Definition of TPMI_RH_ENABLES Type (TypeTable)
653 TPMI_RH_ENABLES_Unmarshal(
654 TPMI_RH_ENABLES *target, BYTE **buffer, INT32 *size, BOOL flag
658 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
659 if(result != TPM_RC_SUCCESS)
663 case TPM_RH_PLATFORM:
664 case TPM_RH_ENDORSEMENT:
665 case TPM_RH_PLATFORM_NV:
674 return TPM_RC_SUCCESS;
677 // TPMI_RH_ENABLES_Marshal not referenced
680 // Table 2:50 - Definition of TPMI_RH_HIERARCHY_AUTH Type (TypeTable)
682 TPMI_RH_HIERARCHY_AUTH_Unmarshal(
683 TPMI_RH_HIERARCHY_AUTH *target, BYTE **buffer, INT32 *size
687 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
688 if(result != TPM_RC_SUCCESS)
692 case TPM_RH_PLATFORM:
693 case TPM_RH_ENDORSEMENT:
699 return TPM_RC_SUCCESS;
702 // TPMI_RH_HIERARCHY_AUTH_Marshal not referenced
705 // Table 2:51 - Definition of TPMI_RH_PLATFORM Type (TypeTable)
707 TPMI_RH_PLATFORM_Unmarshal(
708 TPMI_RH_PLATFORM *target, BYTE **buffer, INT32 *size
712 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
713 if(result != TPM_RC_SUCCESS)
716 case TPM_RH_PLATFORM:
721 return TPM_RC_SUCCESS;
724 // TPMI_RH_PLATFORM_Marshal not referenced
727 // Table 2:52 - Definition of TPMI_RH_OWNER Type (TypeTable)
728 // TPMI_RH_OWNER_Unmarshal not referenced
729 // TPMI_RH_OWNER_Marshal not referenced
732 // Table 2:53 - Definition of TPMI_RH_ENDORSEMENT Type (TypeTable)
734 TPMI_RH_ENDORSEMENT_Unmarshal(
735 TPMI_RH_ENDORSEMENT *target, BYTE **buffer, INT32 *size, BOOL flag
739 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
740 if(result != TPM_RC_SUCCESS)
743 case TPM_RH_ENDORSEMENT:
752 return TPM_RC_SUCCESS;
755 // TPMI_RH_ENDORSEMENT_Marshal not referenced
758 // Table 2:54 - Definition of TPMI_RH_PROVISION Type (TypeTable)
760 TPMI_RH_PROVISION_Unmarshal(
761 TPMI_RH_PROVISION *target, BYTE **buffer, INT32 *size
765 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
766 if(result != TPM_RC_SUCCESS)
770 case TPM_RH_PLATFORM:
775 return TPM_RC_SUCCESS;
778 // TPMI_RH_PROVISION_Marshal not referenced
781 // Table 2:55 - Definition of TPMI_RH_CLEAR Type (TypeTable)
783 TPMI_RH_CLEAR_Unmarshal(
784 TPMI_RH_CLEAR *target, BYTE **buffer, INT32 *size
788 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
789 if(result != TPM_RC_SUCCESS)
793 case TPM_RH_PLATFORM:
798 return TPM_RC_SUCCESS;
801 // TPMI_RH_CLEAR_Marshal not referenced
804 // Table 2:56 - Definition of TPMI_RH_NV_AUTH Type (TypeTable)
806 TPMI_RH_NV_AUTH_Unmarshal(
807 TPMI_RH_NV_AUTH *target, BYTE **buffer, INT32 *size
811 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
812 if(result != TPM_RC_SUCCESS)
815 case TPM_RH_PLATFORM:
819 if((*target < NV_INDEX_FIRST) || (*target > NV_INDEX_LAST))
822 return TPM_RC_SUCCESS;
825 // TPMI_RH_NV_AUTH_Marshal not referenced
828 // Table 2:57 - Definition of TPMI_RH_LOCKOUT Type (TypeTable)
830 TPMI_RH_LOCKOUT_Unmarshal(
831 TPMI_RH_LOCKOUT *target, BYTE **buffer, INT32 *size
835 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
836 if(result != TPM_RC_SUCCESS)
844 return TPM_RC_SUCCESS;
847 // TPMI_RH_LOCKOUT_Marshal not referenced
850 // Table 2:58 - Definition of TPMI_RH_NV_INDEX Type (TypeTable)
852 TPMI_RH_NV_INDEX_Unmarshal(
853 TPMI_RH_NV_INDEX *target, BYTE **buffer, INT32 *size
857 result = TPM_HANDLE_Unmarshal((TPM_HANDLE *)target, buffer, size);
858 if(result != TPM_RC_SUCCESS)
860 if((*target < NV_INDEX_FIRST) || (*target > NV_INDEX_LAST))
862 return TPM_RC_SUCCESS;
865 // TPMI_RH_NV_INDEX_Marshal changed to #define
868 // Table 2:59 - Definition of TPMI_ALG_HASH Type (TypeTable)
870 TPMI_ALG_HASH_Unmarshal(
871 TPMI_ALG_HASH *target, BYTE **buffer, INT32 *size, BOOL flag
875 result = TPM_ALG_ID_Unmarshal((TPM_ALG_ID *)target, buffer, size);
876 if(result != TPM_RC_SUCCESS)
881 #endif // TPM_ALG_SHA1
882 #ifdef TPM_ALG_SHA256
884 #endif // TPM_ALG_SHA256
885 #ifdef TPM_ALG_SHA384
887 #endif // TPM_ALG_SHA384
888 #ifdef TPM_ALG_SHA512
890 #endif // TPM_ALG_SHA512
891 #ifdef TPM_ALG_SM3_256
892 case TPM_ALG_SM3_256:
893 #endif // TPM_ALG_SM3_256
902 return TPM_RC_SUCCESS;
905 // TPMI_ALG_HASH_Marshal changed to #define
908 // Table 2:60 - Definition of TPMI_ALG_ASYM Type (TypeTable)
909 // TPMI_ALG_ASYM_Unmarshal not referenced
910 // TPMI_ALG_ASYM_Marshal not referenced
913 // Table 2:61 - Definition of TPMI_ALG_SYM Type (TypeTable)
915 TPMI_ALG_SYM_Unmarshal(
916 TPMI_ALG_SYM *target, BYTE **buffer, INT32 *size, BOOL flag
920 result = TPM_ALG_ID_Unmarshal((TPM_ALG_ID *)target, buffer, size);
921 if(result != TPM_RC_SUCCESS)
926 #endif // TPM_ALG_AES
929 #endif // TPM_ALG_SM4
930 #ifdef TPM_ALG_CAMELLIA
931 case TPM_ALG_CAMELLIA:
932 #endif // TPM_ALG_CAMELLIA
935 #endif // TPM_ALG_XOR
940 return TPM_RC_SYMMETRIC;
942 return TPM_RC_SYMMETRIC;
944 return TPM_RC_SUCCESS;
947 // TPMI_ALG_SYM_Marshal not referenced
950 // Table 2:62 - Definition of TPMI_ALG_SYM_OBJECT Type (TypeTable)
952 TPMI_ALG_SYM_OBJECT_Unmarshal(
953 TPMI_ALG_SYM_OBJECT *target, BYTE **buffer, INT32 *size, BOOL flag
957 result = TPM_ALG_ID_Unmarshal((TPM_ALG_ID *)target, buffer, size);
958 if(result != TPM_RC_SUCCESS)
963 #endif // TPM_ALG_AES
966 #endif // TPM_ALG_SM4
967 #ifdef TPM_ALG_CAMELLIA
968 case TPM_ALG_CAMELLIA:
969 #endif // TPM_ALG_CAMELLIA
974 return TPM_RC_SYMMETRIC;
976 return TPM_RC_SYMMETRIC;
978 return TPM_RC_SUCCESS;
981 // TPMI_ALG_SYM_OBJECT_Marshal changed to #define
984 // Table 2:63 - Definition of TPMI_ALG_SYM_MODE Type (TypeTable)
986 TPMI_ALG_SYM_MODE_Unmarshal(
987 TPMI_ALG_SYM_MODE *target, BYTE **buffer, INT32 *size, BOOL flag
991 result = TPM_ALG_ID_Unmarshal((TPM_ALG_ID *)target, buffer, size);
992 if(result != TPM_RC_SUCCESS)
997 #endif // TPM_ALG_CTR
1000 #endif // TPM_ALG_OFB
1003 #endif // TPM_ALG_CBC
1006 #endif // TPM_ALG_CFB
1009 #endif // TPM_ALG_ECB
1018 return TPM_RC_SUCCESS;
1021 // TPMI_ALG_SYM_MODE_Marshal changed to #define
1024 // Table 2:64 - Definition of TPMI_ALG_KDF Type (TypeTable)
1026 TPMI_ALG_KDF_Unmarshal(
1027 TPMI_ALG_KDF *target, BYTE **buffer, INT32 *size, BOOL flag
1031 result = TPM_ALG_ID_Unmarshal((TPM_ALG_ID *)target, buffer, size);
1032 if(result != TPM_RC_SUCCESS)
1037 #endif // TPM_ALG_MGF1
1038 #ifdef TPM_ALG_KDF1_SP800_56A
1039 case TPM_ALG_KDF1_SP800_56A:
1040 #endif // TPM_ALG_KDF1_SP800_56A
1043 #endif // TPM_ALG_KDF2
1044 #ifdef TPM_ALG_KDF1_SP800_108
1045 case TPM_ALG_KDF1_SP800_108:
1046 #endif // TPM_ALG_KDF1_SP800_108
1055 return TPM_RC_SUCCESS;
1058 // TPMI_ALG_KDF_Marshal changed to #define
1061 // Table 2:65 - Definition of TPMI_ALG_SIG_SCHEME Type (TypeTable)
1063 TPMI_ALG_SIG_SCHEME_Unmarshal(
1064 TPMI_ALG_SIG_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag
1068 result = TPM_ALG_ID_Unmarshal((TPM_ALG_ID *)target, buffer, size);
1069 if(result != TPM_RC_SUCCESS)
1072 #ifdef TPM_ALG_RSASSA
1073 case TPM_ALG_RSASSA:
1074 #endif // TPM_ALG_RSASSA
1075 #ifdef TPM_ALG_RSAPSS
1076 case TPM_ALG_RSAPSS:
1077 #endif // TPM_ALG_RSAPSS
1078 #ifdef TPM_ALG_ECDSA
1080 #endif // TPM_ALG_ECDSA
1083 #endif // TPM_ALG_SM2
1084 #ifdef TPM_ALG_ECSCHNORR
1085 case TPM_ALG_ECSCHNORR:
1086 #endif // TPM_ALG_ECSCHNORR
1087 #ifdef TPM_ALG_ECDAA
1089 #endif // TPM_ALG_ECDAA
1092 #endif // TPM_ALG_HMAC
1097 return TPM_RC_SCHEME;
1099 return TPM_RC_SCHEME;
1101 return TPM_RC_SUCCESS;
1104 // TPMI_ALG_SIG_SCHEME_Marshal changed to #define
1107 // Table 2:66 - Definition of TPMI_ECC_KEY_EXCHANGE Type (TypeTable)
1110 TPMI_ECC_KEY_EXCHANGE_Unmarshal(
1111 TPMI_ECC_KEY_EXCHANGE *target, BYTE **buffer, INT32 *size, BOOL flag
1115 result = TPM_ALG_ID_Unmarshal((TPM_ALG_ID *)target, buffer, size);
1116 if(result != TPM_RC_SUCCESS)
1121 #endif // TPM_ALG_ECDH
1122 #ifdef TPM_ALG_ECMQV
1124 #endif // TPM_ALG_ECMQV
1127 #endif // TPM_ALG_SM2
1132 return TPM_RC_SCHEME;
1134 return TPM_RC_SCHEME;
1136 return TPM_RC_SUCCESS;
1139 // TPMI_ECC_KEY_EXCHANGE_Marshal not referenced
1140 #endif // TPM_ALG_ECC
1143 // Table 2:67 - Definition of TPMI_ST_COMMAND_TAG Type (TypeTable)
1145 TPMI_ST_COMMAND_TAG_Unmarshal(
1146 TPMI_ST_COMMAND_TAG *target, BYTE **buffer, INT32 *size
1150 result = TPM_ST_Unmarshal((TPM_ST *)target, buffer, size);
1151 if(result != TPM_RC_SUCCESS)
1154 case TPM_ST_NO_SESSIONS:
1155 case TPM_ST_SESSIONS:
1158 return TPM_RC_BAD_TAG;
1160 return TPM_RC_SUCCESS;
1163 // TPMI_ST_COMMAND_TAG_Marshal not referenced
1165 TPMS_EMPTY_Unmarshal(
1166 TPMS_EMPTY *target, BYTE **buffer, INT32 *size
1169 // to prevent the compiler from complaining
1170 UNREFERENCED(target);
1171 UNREFERENCED(buffer);
1173 return TPM_RC_SUCCESS;
1178 TPMS_EMPTY *source, BYTE **buffer, INT32 *size
1181 // to prevent the compiler from complaining
1182 UNREFERENCED(source);
1183 UNREFERENCED(buffer);
1189 // Table 2:69 - Definition of TPMS_ALGORITHM_DESCRIPTION Structure (StructureTable)
1190 // TPMS_ALGORITHM_DESCRIPTION_Unmarshal not referenced
1191 // TPMS_ALGORITHM_DESCRIPTION_Marshal not referenced
1194 // Table 2:70 - Definition of TPMU_HA Union (UnionTable)
1197 TPMU_HA *target, BYTE **buffer, INT32 *size, UINT32 selector
1203 return BYTE_Array_Unmarshal((BYTE *)(target->sha1), buffer, size, (INT32)SHA1_DIGEST_SIZE);
1204 #endif // TPM_ALG_SHA1
1205 #ifdef TPM_ALG_SHA256
1206 case TPM_ALG_SHA256:
1207 return BYTE_Array_Unmarshal((BYTE *)(target->sha256), buffer, size, (INT32)SHA256_DIGEST_SIZE);
1208 #endif // TPM_ALG_SHA256
1209 #ifdef TPM_ALG_SHA384
1210 case TPM_ALG_SHA384:
1211 return BYTE_Array_Unmarshal((BYTE *)(target->sha384), buffer, size, (INT32)SHA384_DIGEST_SIZE);
1212 #endif // TPM_ALG_SHA384
1213 #ifdef TPM_ALG_SHA512
1214 case TPM_ALG_SHA512:
1215 return BYTE_Array_Unmarshal((BYTE *)(target->sha512), buffer, size, (INT32)SHA512_DIGEST_SIZE);
1216 #endif // TPM_ALG_SHA512
1217 #ifdef TPM_ALG_SM3_256
1218 case TPM_ALG_SM3_256:
1219 return BYTE_Array_Unmarshal((BYTE *)(target->sm3_256), buffer, size, (INT32)SM3_256_DIGEST_SIZE);
1220 #endif // TPM_ALG_SM3_256
1222 return TPM_RC_SUCCESS;
1224 return TPM_RC_SELECTOR;
1229 TPMU_HA *source, BYTE **buffer, INT32 *size, UINT32 selector
1235 return BYTE_Array_Marshal((BYTE *)(source->sha1), buffer, size, (INT32)SHA1_DIGEST_SIZE);
1236 #endif // TPM_ALG_SHA1
1237 #ifdef TPM_ALG_SHA256
1238 case TPM_ALG_SHA256:
1239 return BYTE_Array_Marshal((BYTE *)(source->sha256), buffer, size, (INT32)SHA256_DIGEST_SIZE);
1240 #endif // TPM_ALG_SHA256
1241 #ifdef TPM_ALG_SHA384
1242 case TPM_ALG_SHA384:
1243 return BYTE_Array_Marshal((BYTE *)(source->sha384), buffer, size, (INT32)SHA384_DIGEST_SIZE);
1244 #endif // TPM_ALG_SHA384
1245 #ifdef TPM_ALG_SHA512
1246 case TPM_ALG_SHA512:
1247 return BYTE_Array_Marshal((BYTE *)(source->sha512), buffer, size, (INT32)SHA512_DIGEST_SIZE);
1248 #endif // TPM_ALG_SHA512
1249 #ifdef TPM_ALG_SM3_256
1250 case TPM_ALG_SM3_256:
1251 return BYTE_Array_Marshal((BYTE *)(source->sm3_256), buffer, size, (INT32)SM3_256_DIGEST_SIZE);
1252 #endif // TPM_ALG_SM3_256
1260 // Table 2:71 - Definition of TPMT_HA Structure (StructureTable)
1263 TPMT_HA *target, BYTE **buffer, INT32 *size, BOOL flag
1267 result = TPMI_ALG_HASH_Unmarshal((TPMI_ALG_HASH *)&(target->hashAlg), buffer, size, flag);
1268 if(result != TPM_RC_SUCCESS)
1270 result = TPMU_HA_Unmarshal((TPMU_HA *)&(target->digest), buffer, size, (UINT32)target->hashAlg);
1276 TPMT_HA *source, BYTE **buffer, INT32 *size
1280 result = (UINT16)(result + TPMI_ALG_HASH_Marshal((TPMI_ALG_HASH *)&(source->hashAlg), buffer, size));
1281 result = (UINT16)(result + TPMU_HA_Marshal((TPMU_HA *)&(source->digest), buffer, size, (UINT32)source->hashAlg));
1286 // Table 2:72 - Definition of TPM2B_DIGEST Structure (StructureTable)
1288 TPM2B_DIGEST_Unmarshal(
1289 TPM2B_DIGEST *target, BYTE **buffer, INT32 *size
1293 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
1294 if(result != TPM_RC_SUCCESS)
1296 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1297 if(target->t.size == 0)
1298 return TPM_RC_SUCCESS;
1299 if((target->t.size) > sizeof(TPMU_HA))
1301 result = BYTE_Array_Unmarshal((BYTE *)(target->t.buffer), buffer, size, (INT32)(target->t.size));
1306 TPM2B_DIGEST_Marshal(
1307 TPM2B_DIGEST *source, BYTE **buffer, INT32 *size
1311 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
1312 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1313 if(source->t.size == 0)
1315 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.buffer), buffer, size, (INT32)(source->t.size)));
1320 // Table 2:73 - Definition of TPM2B_DATA Structure (StructureTable)
1322 TPM2B_DATA_Unmarshal(
1323 TPM2B_DATA *target, BYTE **buffer, INT32 *size
1327 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
1328 if(result != TPM_RC_SUCCESS)
1330 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1331 if(target->t.size == 0)
1332 return TPM_RC_SUCCESS;
1333 if((target->t.size) > sizeof(TPMT_HA))
1335 result = BYTE_Array_Unmarshal((BYTE *)(target->t.buffer), buffer, size, (INT32)(target->t.size));
1341 TPM2B_DATA *source, BYTE **buffer, INT32 *size
1345 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
1346 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1347 if(source->t.size == 0)
1349 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.buffer), buffer, size, (INT32)(source->t.size)));
1354 // Table 2:74 - Definition of Types for TPM2B_NONCE (TypesTable)
1355 // TPM2B_DIGEST definition from table 2:74
1356 // TPM2B_NONCE_Unmarshal changed to #define
1357 // TPM2B_NONCE_Marshal changed to #define
1360 // Table 2:75 - Definition of Types for TPM2B_AUTH (TypesTable)
1361 // TPM2B_DIGEST definition from table 2:75
1362 // TPM2B_AUTH_Unmarshal changed to #define
1363 // TPM2B_AUTH_Marshal changed to #define
1366 // Table 2:76 - Definition of Types for TPM2B_OPERAND (TypesTable)
1367 // TPM2B_DIGEST definition from table 2:76
1368 // TPM2B_OPERAND_Unmarshal changed to #define
1369 // TPM2B_OPERAND_Marshal not referenced
1372 // Table 2:77 - Definition of TPM2B_EVENT Structure (StructureTable)
1374 TPM2B_EVENT_Unmarshal(
1375 TPM2B_EVENT *target, BYTE **buffer, INT32 *size
1379 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
1380 if(result != TPM_RC_SUCCESS)
1382 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1383 if(target->t.size == 0)
1384 return TPM_RC_SUCCESS;
1385 if((target->t.size) > 1024)
1387 result = BYTE_Array_Unmarshal((BYTE *)(target->t.buffer), buffer, size, (INT32)(target->t.size));
1391 // TPM2B_EVENT_Marshal not referenced
1394 // Table 2:78 - Definition of TPM2B_MAX_BUFFER Structure (StructureTable)
1396 TPM2B_MAX_BUFFER_Unmarshal(
1397 TPM2B_MAX_BUFFER *target, BYTE **buffer, INT32 *size
1401 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
1402 if(result != TPM_RC_SUCCESS)
1404 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1405 if(target->t.size == 0)
1406 return TPM_RC_SUCCESS;
1407 if((target->t.size) > MAX_DIGEST_BUFFER)
1409 result = BYTE_Array_Unmarshal((BYTE *)(target->t.buffer), buffer, size, (INT32)(target->t.size));
1414 TPM2B_MAX_BUFFER_Marshal(
1415 TPM2B_MAX_BUFFER *source, BYTE **buffer, INT32 *size
1419 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
1420 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1421 if(source->t.size == 0)
1423 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.buffer), buffer, size, (INT32)(source->t.size)));
1428 // Table 2:79 - Definition of TPM2B_MAX_NV_BUFFER Structure (StructureTable)
1430 TPM2B_MAX_NV_BUFFER_Unmarshal(
1431 TPM2B_MAX_NV_BUFFER *target, BYTE **buffer, INT32 *size
1435 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
1436 if(result != TPM_RC_SUCCESS)
1438 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1439 if(target->t.size == 0)
1440 return TPM_RC_SUCCESS;
1441 if((target->t.size) > MAX_NV_BUFFER_SIZE)
1443 result = BYTE_Array_Unmarshal((BYTE *)(target->t.buffer), buffer, size, (INT32)(target->t.size));
1448 TPM2B_MAX_NV_BUFFER_Marshal(
1449 TPM2B_MAX_NV_BUFFER *source, BYTE **buffer, INT32 *size
1453 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
1454 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1455 if(source->t.size == 0)
1457 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.buffer), buffer, size, (INT32)(source->t.size)));
1462 // Table 2:80 - Definition of TPM2B_TIMEOUT Structure (StructureTable)
1464 TPM2B_TIMEOUT_Unmarshal(
1465 TPM2B_TIMEOUT *target, BYTE **buffer, INT32 *size
1469 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
1470 if(result != TPM_RC_SUCCESS)
1472 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1473 if(target->t.size == 0)
1474 return TPM_RC_SUCCESS;
1475 if((target->t.size) > sizeof(UINT64))
1477 result = BYTE_Array_Unmarshal((BYTE *)(target->t.buffer), buffer, size, (INT32)(target->t.size));
1482 TPM2B_TIMEOUT_Marshal(
1483 TPM2B_TIMEOUT *source, BYTE **buffer, INT32 *size
1487 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
1488 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1489 if(source->t.size == 0)
1491 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.buffer), buffer, size, (INT32)(source->t.size)));
1496 // Table 2:81 - Definition of TPM2B_IV Structure (StructureTable)
1499 TPM2B_IV *target, BYTE **buffer, INT32 *size
1503 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
1504 if(result != TPM_RC_SUCCESS)
1506 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1507 if(target->t.size == 0)
1508 return TPM_RC_SUCCESS;
1509 if((target->t.size) > MAX_SYM_BLOCK_SIZE)
1511 result = BYTE_Array_Unmarshal((BYTE *)(target->t.buffer), buffer, size, (INT32)(target->t.size));
1517 TPM2B_IV *source, BYTE **buffer, INT32 *size
1521 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
1522 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1523 if(source->t.size == 0)
1525 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.buffer), buffer, size, (INT32)(source->t.size)));
1530 // Table 2:82 - Definition of TPMU_NAME Union (UnionTable)
1533 // Table 2:83 - Definition of TPM2B_NAME Structure (StructureTable)
1535 TPM2B_NAME_Unmarshal(
1536 TPM2B_NAME *target, BYTE **buffer, INT32 *size
1540 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
1541 if(result != TPM_RC_SUCCESS)
1543 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1544 if(target->t.size == 0)
1545 return TPM_RC_SUCCESS;
1546 if((target->t.size) > sizeof(TPMU_NAME))
1548 result = BYTE_Array_Unmarshal((BYTE *)(target->t.name), buffer, size, (INT32)(target->t.size));
1554 TPM2B_NAME *source, BYTE **buffer, INT32 *size
1558 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
1559 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
1560 if(source->t.size == 0)
1562 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.name), buffer, size, (INT32)(source->t.size)));
1567 // Table 2:84 - Definition of TPMS_PCR_SELECT Structure (StructureTable)
1568 // TPMS_PCR_SELECT_Unmarshal not referenced
1569 // TPMS_PCR_SELECT_Marshal not referenced
1572 // Table 2:85 - Definition of TPMS_PCR_SELECTION Structure (StructureTable)
1574 TPMS_PCR_SELECTION_Unmarshal(
1575 TPMS_PCR_SELECTION *target, BYTE **buffer, INT32 *size
1579 result = TPMI_ALG_HASH_Unmarshal((TPMI_ALG_HASH *)&(target->hash), buffer, size, 0);
1580 if(result != TPM_RC_SUCCESS)
1582 result = UINT8_Unmarshal((UINT8 *)&(target->sizeofSelect), buffer, size);
1583 if(result != TPM_RC_SUCCESS)
1585 if( (target->sizeofSelect < PCR_SELECT_MIN))
1586 return TPM_RC_VALUE;
1587 if((target->sizeofSelect) > PCR_SELECT_MAX)
1588 return TPM_RC_VALUE;
1589 result = BYTE_Array_Unmarshal((BYTE *)(target->pcrSelect), buffer, size, (INT32)(target->sizeofSelect));
1594 TPMS_PCR_SELECTION_Marshal(
1595 TPMS_PCR_SELECTION *source, BYTE **buffer, INT32 *size
1599 result = (UINT16)(result + TPMI_ALG_HASH_Marshal((TPMI_ALG_HASH *)&(source->hash), buffer, size));
1600 result = (UINT16)(result + UINT8_Marshal((UINT8 *)&(source->sizeofSelect), buffer, size));
1601 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->pcrSelect), buffer, size, (INT32)(source->sizeofSelect)));
1606 // Table 2:88 - Definition of TPMT_TK_CREATION Structure (StructureTable)
1608 TPMT_TK_CREATION_Unmarshal(
1609 TPMT_TK_CREATION *target, BYTE **buffer, INT32 *size
1613 result = TPM_ST_Unmarshal((TPM_ST *)&(target->tag), buffer, size);
1614 if(result != TPM_RC_SUCCESS)
1616 if( ((target->tag) != TPM_ST_CREATION))
1618 result = TPMI_RH_HIERARCHY_Unmarshal((TPMI_RH_HIERARCHY *)&(target->hierarchy), buffer, size, 1);
1619 if(result != TPM_RC_SUCCESS)
1621 result = TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)&(target->digest), buffer, size);
1626 TPMT_TK_CREATION_Marshal(
1627 TPMT_TK_CREATION *source, BYTE **buffer, INT32 *size
1631 result = (UINT16)(result + TPM_ST_Marshal((TPM_ST *)&(source->tag), buffer, size));
1632 result = (UINT16)(result + TPMI_RH_HIERARCHY_Marshal((TPMI_RH_HIERARCHY *)&(source->hierarchy), buffer, size));
1633 result = (UINT16)(result + TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->digest), buffer, size));
1638 // Table 2:89 - Definition of TPMT_TK_VERIFIED Structure (StructureTable)
1640 TPMT_TK_VERIFIED_Unmarshal(
1641 TPMT_TK_VERIFIED *target, BYTE **buffer, INT32 *size
1645 result = TPM_ST_Unmarshal((TPM_ST *)&(target->tag), buffer, size);
1646 if(result != TPM_RC_SUCCESS)
1648 if( ((target->tag) != TPM_ST_VERIFIED))
1650 result = TPMI_RH_HIERARCHY_Unmarshal((TPMI_RH_HIERARCHY *)&(target->hierarchy), buffer, size, 1);
1651 if(result != TPM_RC_SUCCESS)
1653 result = TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)&(target->digest), buffer, size);
1658 TPMT_TK_VERIFIED_Marshal(
1659 TPMT_TK_VERIFIED *source, BYTE **buffer, INT32 *size
1663 result = (UINT16)(result + TPM_ST_Marshal((TPM_ST *)&(source->tag), buffer, size));
1664 result = (UINT16)(result + TPMI_RH_HIERARCHY_Marshal((TPMI_RH_HIERARCHY *)&(source->hierarchy), buffer, size));
1665 result = (UINT16)(result + TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->digest), buffer, size));
1670 // Table 2:90 - Definition of TPMT_TK_AUTH Structure (StructureTable)
1672 TPMT_TK_AUTH_Unmarshal(
1673 TPMT_TK_AUTH *target, BYTE **buffer, INT32 *size
1677 result = TPM_ST_Unmarshal((TPM_ST *)&(target->tag), buffer, size);
1678 if(result != TPM_RC_SUCCESS)
1680 if( ((target->tag) != TPM_ST_AUTH_SIGNED)
1681 && ((target->tag) != TPM_ST_AUTH_SECRET))
1683 result = TPMI_RH_HIERARCHY_Unmarshal((TPMI_RH_HIERARCHY *)&(target->hierarchy), buffer, size, 1);
1684 if(result != TPM_RC_SUCCESS)
1686 result = TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)&(target->digest), buffer, size);
1691 TPMT_TK_AUTH_Marshal(
1692 TPMT_TK_AUTH *source, BYTE **buffer, INT32 *size
1696 result = (UINT16)(result + TPM_ST_Marshal((TPM_ST *)&(source->tag), buffer, size));
1697 result = (UINT16)(result + TPMI_RH_HIERARCHY_Marshal((TPMI_RH_HIERARCHY *)&(source->hierarchy), buffer, size));
1698 result = (UINT16)(result + TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->digest), buffer, size));
1703 // Table 2:91 - Definition of TPMT_TK_HASHCHECK Structure (StructureTable)
1705 TPMT_TK_HASHCHECK_Unmarshal(
1706 TPMT_TK_HASHCHECK *target, BYTE **buffer, INT32 *size
1710 result = TPM_ST_Unmarshal((TPM_ST *)&(target->tag), buffer, size);
1711 if(result != TPM_RC_SUCCESS)
1713 if( ((target->tag) != TPM_ST_HASHCHECK))
1715 result = TPMI_RH_HIERARCHY_Unmarshal((TPMI_RH_HIERARCHY *)&(target->hierarchy), buffer, size, 1);
1716 if(result != TPM_RC_SUCCESS)
1718 result = TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)&(target->digest), buffer, size);
1723 TPMT_TK_HASHCHECK_Marshal(
1724 TPMT_TK_HASHCHECK *source, BYTE **buffer, INT32 *size
1728 result = (UINT16)(result + TPM_ST_Marshal((TPM_ST *)&(source->tag), buffer, size));
1729 result = (UINT16)(result + TPMI_RH_HIERARCHY_Marshal((TPMI_RH_HIERARCHY *)&(source->hierarchy), buffer, size));
1730 result = (UINT16)(result + TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->digest), buffer, size));
1735 // Table 2:92 - Definition of TPMS_ALG_PROPERTY Structure (StructureTable)
1736 // TPMS_ALG_PROPERTY_Unmarshal not referenced
1738 TPMS_ALG_PROPERTY_Marshal(
1739 TPMS_ALG_PROPERTY *source, BYTE **buffer, INT32 *size
1743 result = (UINT16)(result + TPM_ALG_ID_Marshal((TPM_ALG_ID *)&(source->alg), buffer, size));
1744 result = (UINT16)(result + TPMA_ALGORITHM_Marshal((TPMA_ALGORITHM *)&(source->algProperties), buffer, size));
1749 // Table 2:93 - Definition of TPMS_TAGGED_PROPERTY Structure (StructureTable)
1750 // TPMS_TAGGED_PROPERTY_Unmarshal not referenced
1752 TPMS_TAGGED_PROPERTY_Marshal(
1753 TPMS_TAGGED_PROPERTY *source, BYTE **buffer, INT32 *size
1757 result = (UINT16)(result + TPM_PT_Marshal((TPM_PT *)&(source->property), buffer, size));
1758 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->value), buffer, size));
1763 // Table 2:94 - Definition of TPMS_TAGGED_PCR_SELECT Structure (StructureTable)
1764 // TPMS_TAGGED_PCR_SELECT_Unmarshal not referenced
1766 TPMS_TAGGED_PCR_SELECT_Marshal(
1767 TPMS_TAGGED_PCR_SELECT *source, BYTE **buffer, INT32 *size
1771 result = (UINT16)(result + TPM_PT_Marshal((TPM_PT *)&(source->tag), buffer, size));
1772 result = (UINT16)(result + UINT8_Marshal((UINT8 *)&(source->sizeofSelect), buffer, size));
1773 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->pcrSelect), buffer, size, (INT32)(source->sizeofSelect)));
1778 // Table 2:95 - Definition of TPML_CC Structure (StructureTable)
1781 TPML_CC *target, BYTE **buffer, INT32 *size
1785 result = UINT32_Unmarshal((UINT32 *)&(target->count), buffer, size);
1786 if(result != TPM_RC_SUCCESS)
1788 if((target->count) > MAX_CAP_CC)
1790 result = TPM_CC_Array_Unmarshal((TPM_CC *)(target->commandCodes), buffer, size, (INT32)(target->count));
1796 TPML_CC *source, BYTE **buffer, INT32 *size
1800 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->count), buffer, size));
1801 result = (UINT16)(result + TPM_CC_Array_Marshal((TPM_CC *)(source->commandCodes), buffer, size, (INT32)(source->count)));
1806 // Table 2:96 - Definition of TPML_CCA Structure (StructureTable)
1807 // TPML_CCA_Unmarshal not referenced
1810 TPML_CCA *source, BYTE **buffer, INT32 *size
1814 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->count), buffer, size));
1815 result = (UINT16)(result + TPMA_CC_Array_Marshal((TPMA_CC *)(source->commandAttributes), buffer, size, (INT32)(source->count)));
1820 // Table 2:97 - Definition of TPML_ALG Structure (StructureTable)
1823 TPML_ALG *target, BYTE **buffer, INT32 *size
1827 result = UINT32_Unmarshal((UINT32 *)&(target->count), buffer, size);
1828 if(result != TPM_RC_SUCCESS)
1830 if((target->count) > MAX_ALG_LIST_SIZE)
1832 result = TPM_ALG_ID_Array_Unmarshal((TPM_ALG_ID *)(target->algorithms), buffer, size, (INT32)(target->count));
1838 TPML_ALG *source, BYTE **buffer, INT32 *size
1842 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->count), buffer, size));
1843 result = (UINT16)(result + TPM_ALG_ID_Array_Marshal((TPM_ALG_ID *)(source->algorithms), buffer, size, (INT32)(source->count)));
1848 // Table 2:98 - Definition of TPML_HANDLE Structure (StructureTable)
1849 // TPML_HANDLE_Unmarshal not referenced
1851 TPML_HANDLE_Marshal(
1852 TPML_HANDLE *source, BYTE **buffer, INT32 *size
1856 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->count), buffer, size));
1857 result = (UINT16)(result + TPM_HANDLE_Array_Marshal((TPM_HANDLE *)(source->handle), buffer, size, (INT32)(source->count)));
1862 // Table 2:99 - Definition of TPML_DIGEST Structure (StructureTable)
1864 TPML_DIGEST_Unmarshal(
1865 TPML_DIGEST *target, BYTE **buffer, INT32 *size
1869 result = UINT32_Unmarshal((UINT32 *)&(target->count), buffer, size);
1870 if(result != TPM_RC_SUCCESS)
1872 if( (target->count < 2))
1874 if((target->count) > 8)
1876 result = TPM2B_DIGEST_Array_Unmarshal((TPM2B_DIGEST *)(target->digests), buffer, size, (INT32)(target->count));
1881 TPML_DIGEST_Marshal(
1882 TPML_DIGEST *source, BYTE **buffer, INT32 *size
1886 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->count), buffer, size));
1887 result = (UINT16)(result + TPM2B_DIGEST_Array_Marshal((TPM2B_DIGEST *)(source->digests), buffer, size, (INT32)(source->count)));
1892 // Table 2:100 - Definition of TPML_DIGEST_VALUES Structure (StructureTable)
1894 TPML_DIGEST_VALUES_Unmarshal(
1895 TPML_DIGEST_VALUES *target, BYTE **buffer, INT32 *size
1899 result = UINT32_Unmarshal((UINT32 *)&(target->count), buffer, size);
1900 if(result != TPM_RC_SUCCESS)
1902 if((target->count) > HASH_COUNT)
1904 result = TPMT_HA_Array_Unmarshal((TPMT_HA *)(target->digests), buffer, size, 0, (INT32)(target->count));
1909 TPML_DIGEST_VALUES_Marshal(
1910 TPML_DIGEST_VALUES *source, BYTE **buffer, INT32 *size
1914 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->count), buffer, size));
1915 result = (UINT16)(result + TPMT_HA_Array_Marshal((TPMT_HA *)(source->digests), buffer, size, (INT32)(source->count)));
1920 // Table 2:101 - Definition of TPM2B_DIGEST_VALUES Structure (StructureTable)
1921 // TPM2B_DIGEST_VALUES_Unmarshal not referenced
1922 // TPM2B_DIGEST_VALUES_Marshal not referenced
1925 // Table 2:102 - Definition of TPML_PCR_SELECTION Structure (StructureTable)
1927 TPML_PCR_SELECTION_Unmarshal(
1928 TPML_PCR_SELECTION *target, BYTE **buffer, INT32 *size
1932 result = UINT32_Unmarshal((UINT32 *)&(target->count), buffer, size);
1933 if(result != TPM_RC_SUCCESS)
1935 if((target->count) > HASH_COUNT)
1937 result = TPMS_PCR_SELECTION_Array_Unmarshal((TPMS_PCR_SELECTION *)(target->pcrSelections), buffer, size, (INT32)(target->count));
1942 TPML_PCR_SELECTION_Marshal(
1943 TPML_PCR_SELECTION *source, BYTE **buffer, INT32 *size
1947 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->count), buffer, size));
1948 result = (UINT16)(result + TPMS_PCR_SELECTION_Array_Marshal((TPMS_PCR_SELECTION *)(source->pcrSelections), buffer, size, (INT32)(source->count)));
1953 // Table 2:103 - Definition of TPML_ALG_PROPERTY Structure (StructureTable)
1954 // TPML_ALG_PROPERTY_Unmarshal not referenced
1956 TPML_ALG_PROPERTY_Marshal(
1957 TPML_ALG_PROPERTY *source, BYTE **buffer, INT32 *size
1961 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->count), buffer, size));
1962 result = (UINT16)(result + TPMS_ALG_PROPERTY_Array_Marshal((TPMS_ALG_PROPERTY *)(source->algProperties), buffer, size, (INT32)(source->count)));
1967 // Table 2:104 - Definition of TPML_TAGGED_TPM_PROPERTY Structure (StructureTable)
1968 // TPML_TAGGED_TPM_PROPERTY_Unmarshal not referenced
1970 TPML_TAGGED_TPM_PROPERTY_Marshal(
1971 TPML_TAGGED_TPM_PROPERTY *source, BYTE **buffer, INT32 *size
1975 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->count), buffer, size));
1976 result = (UINT16)(result + TPMS_TAGGED_PROPERTY_Array_Marshal((TPMS_TAGGED_PROPERTY *)(source->tpmProperty), buffer, size, (INT32)(source->count)));
1981 // Table 2:105 - Definition of TPML_TAGGED_PCR_PROPERTY Structure (StructureTable)
1982 // TPML_TAGGED_PCR_PROPERTY_Unmarshal not referenced
1984 TPML_TAGGED_PCR_PROPERTY_Marshal(
1985 TPML_TAGGED_PCR_PROPERTY *source, BYTE **buffer, INT32 *size
1989 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->count), buffer, size));
1990 result = (UINT16)(result + TPMS_TAGGED_PCR_SELECT_Array_Marshal((TPMS_TAGGED_PCR_SELECT *)(source->pcrProperty), buffer, size, (INT32)(source->count)));
1995 // Table 2:106 - Definition of TPML_ECC_CURVE Structure (StructureTable)
1997 // TPML_ECC_CURVE_Unmarshal not referenced
1999 TPML_ECC_CURVE_Marshal(
2000 TPML_ECC_CURVE *source, BYTE **buffer, INT32 *size
2004 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->count), buffer, size));
2005 result = (UINT16)(result + TPM_ECC_CURVE_Array_Marshal((TPM_ECC_CURVE *)(source->eccCurves), buffer, size, (INT32)(source->count)));
2009 #endif // TPM_ALG_ECC
2013 INTEL_PROP_VALUE_Marshal(INTEL_PROP_VALUE *source, BYTE **buffer, INT32 *size)
2016 result = (UINT16)(result + UINT32_Marshal((UINT32 *)source, buffer, size));
2021 INTEL_PROPERTY_Marshal(INTEL_PROPERTY *source, BYTE **buffer, INT32 *size)
2024 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->count), buffer, size));
2025 result = (UINT16)(result + INTEL_PROP_VALUE_Marshal(&(source->property), buffer, size));
2031 // Table 2:107 - Definition of TPMU_CAPABILITIES Union (UnionTable)
2032 // TPMU_CAPABILITIES_Unmarshal not referenced
2034 TPMU_CAPABILITIES_Marshal(
2035 TPMU_CAPABILITIES *source, BYTE **buffer, INT32 *size, UINT32 selector
2040 return TPML_ALG_PROPERTY_Marshal((TPML_ALG_PROPERTY *)&(source->algorithms), buffer, size);
2041 case TPM_CAP_HANDLES:
2042 return TPML_HANDLE_Marshal((TPML_HANDLE *)&(source->handles), buffer, size);
2043 case TPM_CAP_COMMANDS:
2044 return TPML_CCA_Marshal((TPML_CCA *)&(source->command), buffer, size);
2045 case TPM_CAP_PP_COMMANDS:
2046 return TPML_CC_Marshal((TPML_CC *)&(source->ppCommands), buffer, size);
2047 case TPM_CAP_AUDIT_COMMANDS:
2048 return TPML_CC_Marshal((TPML_CC *)&(source->auditCommands), buffer, size);
2050 return TPML_PCR_SELECTION_Marshal((TPML_PCR_SELECTION *)&(source->assignedPCR), buffer, size);
2051 case TPM_CAP_TPM_PROPERTIES:
2052 return TPML_TAGGED_TPM_PROPERTY_Marshal((TPML_TAGGED_TPM_PROPERTY *)&(source->tpmProperties), buffer, size);
2053 case TPM_CAP_PCR_PROPERTIES:
2054 return TPML_TAGGED_PCR_PROPERTY_Marshal((TPML_TAGGED_PCR_PROPERTY *)&(source->pcrProperties), buffer, size);
2056 case TPM_CAP_ECC_CURVES:
2057 return TPML_ECC_CURVE_Marshal((TPML_ECC_CURVE *)&(source->eccCurves), buffer, size);
2058 #endif // TPM_ALG_ECC
2060 case TPM_CAP_VENDOR_PROPERTY:
2061 return INTEL_PROPERTY_Marshal((INTEL_PROPERTY *)&(source->intelProperty), buffer, size);
2068 // Table 2:108 - Definition of TPMS_CAPABILITY_DATA Structure (StructureTable)
2069 // TPMS_CAPABILITY_DATA_Unmarshal not referenced
2071 TPMS_CAPABILITY_DATA_Marshal(
2072 TPMS_CAPABILITY_DATA *source, BYTE **buffer, INT32 *size
2076 result = (UINT16)(result + TPM_CAP_Marshal((TPM_CAP *)&(source->capability), buffer, size));
2077 result = (UINT16)(result + TPMU_CAPABILITIES_Marshal((TPMU_CAPABILITIES *)&(source->data), buffer, size, (UINT32)source->capability));
2082 // Table 2:109 - Definition of TPMS_CLOCK_INFO Structure (StructureTable)
2083 // TPMS_CLOCK_INFO_Unmarshal not referenced
2085 TPMS_CLOCK_INFO_Marshal(
2086 TPMS_CLOCK_INFO *source, BYTE **buffer, INT32 *size
2090 result = (UINT16)(result + UINT64_Marshal((UINT64 *)&(source->clock), buffer, size));
2091 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->resetCount), buffer, size));
2092 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->restartCount), buffer, size));
2093 result = (UINT16)(result + TPMI_YES_NO_Marshal((TPMI_YES_NO *)&(source->safe), buffer, size));
2098 // Table 2:110 - Definition of TPMS_TIME_INFO Structure (StructureTable)
2099 // TPMS_TIME_INFO_Unmarshal not referenced
2101 TPMS_TIME_INFO_Marshal(
2102 TPMS_TIME_INFO *source, BYTE **buffer, INT32 *size
2106 result = (UINT16)(result + UINT64_Marshal((UINT64 *)&(source->time), buffer, size));
2107 result = (UINT16)(result + TPMS_CLOCK_INFO_Marshal((TPMS_CLOCK_INFO *)&(source->clockInfo), buffer, size));
2112 // Table 2:111 - Definition of TPMS_TIME_ATTEST_INFO Structure (StructureTable)
2113 // TPMS_TIME_ATTEST_INFO_Unmarshal not referenced
2115 TPMS_TIME_ATTEST_INFO_Marshal(
2116 TPMS_TIME_ATTEST_INFO *source, BYTE **buffer, INT32 *size
2120 result = (UINT16)(result + TPMS_TIME_INFO_Marshal((TPMS_TIME_INFO *)&(source->time), buffer, size));
2121 result = (UINT16)(result + UINT64_Marshal((UINT64 *)&(source->firmwareVersion), buffer, size));
2126 // Table 2:112 - Definition of TPMS_CERTIFY_INFO Structure (StructureTable)
2127 // TPMS_CERTIFY_INFO_Unmarshal not referenced
2129 TPMS_CERTIFY_INFO_Marshal(
2130 TPMS_CERTIFY_INFO *source, BYTE **buffer, INT32 *size
2134 result = (UINT16)(result + TPM2B_NAME_Marshal((TPM2B_NAME *)&(source->name), buffer, size));
2135 result = (UINT16)(result + TPM2B_NAME_Marshal((TPM2B_NAME *)&(source->qualifiedName), buffer, size));
2140 // Table 2:113 - Definition of TPMS_QUOTE_INFO Structure (StructureTable)
2141 // TPMS_QUOTE_INFO_Unmarshal not referenced
2143 TPMS_QUOTE_INFO_Marshal(
2144 TPMS_QUOTE_INFO *source, BYTE **buffer, INT32 *size
2148 result = (UINT16)(result + TPML_PCR_SELECTION_Marshal((TPML_PCR_SELECTION *)&(source->pcrSelect), buffer, size));
2149 result = (UINT16)(result + TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->pcrDigest), buffer, size));
2154 // Table 2:114 - Definition of TPMS_COMMAND_AUDIT_INFO Structure (StructureTable)
2155 // TPMS_COMMAND_AUDIT_INFO_Unmarshal not referenced
2157 TPMS_COMMAND_AUDIT_INFO_Marshal(
2158 TPMS_COMMAND_AUDIT_INFO *source, BYTE **buffer, INT32 *size
2162 result = (UINT16)(result + UINT64_Marshal((UINT64 *)&(source->auditCounter), buffer, size));
2163 result = (UINT16)(result + TPM_ALG_ID_Marshal((TPM_ALG_ID *)&(source->digestAlg), buffer, size));
2164 result = (UINT16)(result + TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->auditDigest), buffer, size));
2165 result = (UINT16)(result + TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->commandDigest), buffer, size));
2170 // Table 2:115 - Definition of TPMS_SESSION_AUDIT_INFO Structure (StructureTable)
2171 // TPMS_SESSION_AUDIT_INFO_Unmarshal not referenced
2173 TPMS_SESSION_AUDIT_INFO_Marshal(
2174 TPMS_SESSION_AUDIT_INFO *source, BYTE **buffer, INT32 *size
2178 result = (UINT16)(result + TPMI_YES_NO_Marshal((TPMI_YES_NO *)&(source->exclusiveSession), buffer, size));
2179 result = (UINT16)(result + TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->sessionDigest), buffer, size));
2184 // Table 2:116 - Definition of TPMS_CREATION_INFO Structure (StructureTable)
2185 // TPMS_CREATION_INFO_Unmarshal not referenced
2187 TPMS_CREATION_INFO_Marshal(
2188 TPMS_CREATION_INFO *source, BYTE **buffer, INT32 *size
2192 result = (UINT16)(result + TPM2B_NAME_Marshal((TPM2B_NAME *)&(source->objectName), buffer, size));
2193 result = (UINT16)(result + TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->creationHash), buffer, size));
2198 // Table 2:117 - Definition of TPMS_NV_CERTIFY_INFO Structure (StructureTable)
2199 // TPMS_NV_CERTIFY_INFO_Unmarshal not referenced
2201 TPMS_NV_CERTIFY_INFO_Marshal(
2202 TPMS_NV_CERTIFY_INFO *source, BYTE **buffer, INT32 *size
2206 result = (UINT16)(result + TPM2B_NAME_Marshal((TPM2B_NAME *)&(source->indexName), buffer, size));
2207 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->offset), buffer, size));
2208 result = (UINT16)(result + TPM2B_MAX_NV_BUFFER_Marshal((TPM2B_MAX_NV_BUFFER *)&(source->nvContents), buffer, size));
2213 // Table 2:118 - Definition of TPMI_ST_ATTEST Type (TypeTable)
2214 // TPMI_ST_ATTEST_Unmarshal not referenced
2215 // TPMI_ST_ATTEST_Marshal changed to #define
2218 // Table 2:119 - Definition of TPMU_ATTEST Union (UnionTable)
2219 // TPMU_ATTEST_Unmarshal not referenced
2221 TPMU_ATTEST_Marshal(
2222 TPMU_ATTEST *source, BYTE **buffer, INT32 *size, UINT32 selector
2226 case TPM_ST_ATTEST_CERTIFY:
2227 return TPMS_CERTIFY_INFO_Marshal((TPMS_CERTIFY_INFO *)&(source->certify), buffer, size);
2228 case TPM_ST_ATTEST_CREATION:
2229 return TPMS_CREATION_INFO_Marshal((TPMS_CREATION_INFO *)&(source->creation), buffer, size);
2230 case TPM_ST_ATTEST_QUOTE:
2231 return TPMS_QUOTE_INFO_Marshal((TPMS_QUOTE_INFO *)&(source->quote), buffer, size);
2232 case TPM_ST_ATTEST_COMMAND_AUDIT:
2233 return TPMS_COMMAND_AUDIT_INFO_Marshal((TPMS_COMMAND_AUDIT_INFO *)&(source->commandAudit), buffer, size);
2234 case TPM_ST_ATTEST_SESSION_AUDIT:
2235 return TPMS_SESSION_AUDIT_INFO_Marshal((TPMS_SESSION_AUDIT_INFO *)&(source->sessionAudit), buffer, size);
2236 case TPM_ST_ATTEST_TIME:
2237 return TPMS_TIME_ATTEST_INFO_Marshal((TPMS_TIME_ATTEST_INFO *)&(source->time), buffer, size);
2238 case TPM_ST_ATTEST_NV:
2239 return TPMS_NV_CERTIFY_INFO_Marshal((TPMS_NV_CERTIFY_INFO *)&(source->nv), buffer, size);
2245 // Table 2:120 - Definition of TPMS_ATTEST Structure (StructureTable)
2246 // TPMS_ATTEST_Unmarshal not referenced
2248 TPMS_ATTEST_Marshal(
2249 TPMS_ATTEST *source, BYTE **buffer, INT32 *size
2253 result = (UINT16)(result + TPM_GENERATED_Marshal((TPM_GENERATED *)&(source->magic), buffer, size));
2254 result = (UINT16)(result + TPMI_ST_ATTEST_Marshal((TPMI_ST_ATTEST *)&(source->type), buffer, size));
2255 result = (UINT16)(result + TPM2B_NAME_Marshal((TPM2B_NAME *)&(source->qualifiedSigner), buffer, size));
2256 result = (UINT16)(result + TPM2B_DATA_Marshal((TPM2B_DATA *)&(source->extraData), buffer, size));
2257 result = (UINT16)(result + TPMS_CLOCK_INFO_Marshal((TPMS_CLOCK_INFO *)&(source->clockInfo), buffer, size));
2258 result = (UINT16)(result + UINT64_Marshal((UINT64 *)&(source->firmwareVersion), buffer, size));
2259 result = (UINT16)(result + TPMU_ATTEST_Marshal((TPMU_ATTEST *)&(source->attested), buffer, size, (UINT32)source->type));
2264 // Table 2:121 - Definition of TPM2B_ATTEST Structure (StructureTable)
2265 // TPM2B_ATTEST_Unmarshal not referenced
2267 TPM2B_ATTEST_Marshal(
2268 TPM2B_ATTEST *source, BYTE **buffer, INT32 *size
2272 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
2273 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
2274 if(source->t.size == 0)
2276 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.attestationData), buffer, size, (INT32)(source->t.size)));
2281 // Table 2:122 - Definition of TPMS_AUTH_COMMAND Structure (StructureTable)
2282 // TPMS_AUTH_COMMAND_Unmarshal not referenced
2283 // TPMS_AUTH_COMMAND_Marshal not referenced
2286 // Table 2:123 - Definition of TPMS_AUTH_RESPONSE Structure (StructureTable)
2287 // TPMS_AUTH_RESPONSE_Unmarshal not referenced
2288 // TPMS_AUTH_RESPONSE_Marshal not referenced
2291 // Table 2:124 - Definition of TPMI_AES_KEY_BITS Type (TypeTable)
2294 TPMI_AES_KEY_BITS_Unmarshal(
2295 TPMI_AES_KEY_BITS *target, BYTE **buffer, INT32 *size
2299 result = TPM_KEY_BITS_Unmarshal((TPM_KEY_BITS *)target, buffer, size);
2300 if(result != TPM_RC_SUCCESS)
2307 return TPM_RC_VALUE;
2309 return TPM_RC_SUCCESS;
2312 // TPMI_AES_KEY_BITS_Marshal changed to #define
2313 #endif // TPM_ALG_AES
2316 // Table 2:124 - Definition of TPMI_SM4_KEY_BITS Type (TypeTable)
2319 TPMI_SM4_KEY_BITS_Unmarshal(
2320 TPMI_SM4_KEY_BITS *target, BYTE **buffer, INT32 *size
2324 result = TPM_KEY_BITS_Unmarshal((TPM_KEY_BITS *)target, buffer, size);
2325 if(result != TPM_RC_SUCCESS)
2331 return TPM_RC_VALUE;
2333 return TPM_RC_SUCCESS;
2336 // TPMI_SM4_KEY_BITS_Marshal changed to #define
2337 #endif // TPM_ALG_SM4
2340 // Table 2:124 - Definition of TPMI_CAMELLIA_KEY_BITS Type (TypeTable)
2341 #ifdef TPM_ALG_CAMELLIA
2343 TPMI_CAMELLIA_KEY_BITS_Unmarshal(
2344 TPMI_CAMELLIA_KEY_BITS *target, BYTE **buffer, INT32 *size
2348 result = TPM_KEY_BITS_Unmarshal((TPM_KEY_BITS *)target, buffer, size);
2349 if(result != TPM_RC_SUCCESS)
2355 return TPM_RC_VALUE;
2357 return TPM_RC_SUCCESS;
2360 // TPMI_CAMELLIA_KEY_BITS_Marshal changed to #define
2361 #endif // TPM_ALG_CAMELLIA
2364 // Table 2:125 - Definition of TPMU_SYM_KEY_BITS Union (UnionTable)
2366 TPMU_SYM_KEY_BITS_Unmarshal(
2367 TPMU_SYM_KEY_BITS *target, BYTE **buffer, INT32 *size, UINT32 selector
2373 return TPMI_AES_KEY_BITS_Unmarshal((TPMI_AES_KEY_BITS *)&(target->aes), buffer, size);
2374 #endif // TPM_ALG_AES
2377 return TPMI_SM4_KEY_BITS_Unmarshal((TPMI_SM4_KEY_BITS *)&(target->sm4), buffer, size);
2378 #endif // TPM_ALG_SM4
2379 #ifdef TPM_ALG_CAMELLIA
2380 case TPM_ALG_CAMELLIA:
2381 return TPMI_CAMELLIA_KEY_BITS_Unmarshal((TPMI_CAMELLIA_KEY_BITS *)&(target->camellia), buffer, size);
2382 #endif // TPM_ALG_CAMELLIA
2385 return TPMI_ALG_HASH_Unmarshal((TPMI_ALG_HASH *)&(target->exclusiveOr
2386 ), buffer, size, 0);
2387 #endif // TPM_ALG_XOR
2389 return TPM_RC_SUCCESS;
2391 return TPM_RC_SELECTOR;
2395 TPMU_SYM_KEY_BITS_Marshal(
2396 TPMU_SYM_KEY_BITS *source, BYTE **buffer, INT32 *size, UINT32 selector
2402 return TPMI_AES_KEY_BITS_Marshal((TPMI_AES_KEY_BITS *)&(source->aes), buffer, size);
2403 #endif // TPM_ALG_AES
2406 return TPMI_SM4_KEY_BITS_Marshal((TPMI_SM4_KEY_BITS *)&(source->sm4), buffer, size);
2407 #endif // TPM_ALG_SM4
2408 #ifdef TPM_ALG_CAMELLIA
2409 case TPM_ALG_CAMELLIA:
2410 return TPMI_CAMELLIA_KEY_BITS_Marshal((TPMI_CAMELLIA_KEY_BITS *)&(source->camellia), buffer, size);
2411 #endif // TPM_ALG_CAMELLIA
2414 return TPMI_ALG_HASH_Marshal((TPMI_ALG_HASH *)&(source->exclusiveOr
2416 #endif // TPM_ALG_XOR
2424 // Table 2:126 - Definition of TPMU_SYM_MODE Union (UnionTable)
2426 TPMU_SYM_MODE_Unmarshal(
2427 TPMU_SYM_MODE *target, BYTE **buffer, INT32 *size, UINT32 selector
2433 return TPMI_ALG_SYM_MODE_Unmarshal((TPMI_ALG_SYM_MODE *)&(target->aes), buffer, size, 1);
2434 #endif // TPM_ALG_AES
2437 return TPMI_ALG_SYM_MODE_Unmarshal((TPMI_ALG_SYM_MODE *)&(target->sm4), buffer, size, 1);
2438 #endif // TPM_ALG_SM4
2439 #ifdef TPM_ALG_CAMELLIA
2440 case TPM_ALG_CAMELLIA:
2441 return TPMI_ALG_SYM_MODE_Unmarshal((TPMI_ALG_SYM_MODE *)&(target->camellia), buffer, size, 1);
2442 #endif // TPM_ALG_CAMELLIA
2445 return TPM_RC_SUCCESS;
2446 #endif // TPM_ALG_XOR
2448 return TPM_RC_SUCCESS;
2450 return TPM_RC_SELECTOR;
2454 TPMU_SYM_MODE_Marshal(
2455 TPMU_SYM_MODE *source, BYTE **buffer, INT32 *size, UINT32 selector
2461 return TPMI_ALG_SYM_MODE_Marshal((TPMI_ALG_SYM_MODE *)&(source->aes), buffer, size);
2462 #endif // TPM_ALG_AES
2465 return TPMI_ALG_SYM_MODE_Marshal((TPMI_ALG_SYM_MODE *)&(source->sm4), buffer, size);
2466 #endif // TPM_ALG_SM4
2467 #ifdef TPM_ALG_CAMELLIA
2468 case TPM_ALG_CAMELLIA:
2469 return TPMI_ALG_SYM_MODE_Marshal((TPMI_ALG_SYM_MODE *)&(source->camellia), buffer, size);
2470 #endif // TPM_ALG_CAMELLIA
2474 #endif // TPM_ALG_XOR
2482 // Table 2:128 - Definition of TPMT_SYM_DEF Structure (StructureTable)
2484 TPMT_SYM_DEF_Unmarshal(
2485 TPMT_SYM_DEF *target, BYTE **buffer, INT32 *size, BOOL flag
2489 result = TPMI_ALG_SYM_Unmarshal((TPMI_ALG_SYM *)&(target->algorithm), buffer, size, flag);
2490 if(result != TPM_RC_SUCCESS)
2492 result = TPMU_SYM_KEY_BITS_Unmarshal((TPMU_SYM_KEY_BITS *)&(target->keyBits), buffer, size, (UINT32)target->algorithm);
2493 if(result != TPM_RC_SUCCESS)
2495 result = TPMU_SYM_MODE_Unmarshal((TPMU_SYM_MODE *)&(target->mode), buffer, size, (UINT32)target->algorithm);
2499 // TPMT_SYM_DEF_Marshal not referenced
2502 // Table 2:129 - Definition of TPMT_SYM_DEF_OBJECT Structure (StructureTable)
2504 TPMT_SYM_DEF_OBJECT_Unmarshal(
2505 TPMT_SYM_DEF_OBJECT *target, BYTE **buffer, INT32 *size, BOOL flag
2509 result = TPMI_ALG_SYM_OBJECT_Unmarshal((TPMI_ALG_SYM_OBJECT *)&(target->algorithm), buffer, size, flag);
2510 if(result != TPM_RC_SUCCESS)
2512 result = TPMU_SYM_KEY_BITS_Unmarshal((TPMU_SYM_KEY_BITS *)&(target->keyBits), buffer, size, (UINT32)target->algorithm);
2513 if(result != TPM_RC_SUCCESS)
2515 result = TPMU_SYM_MODE_Unmarshal((TPMU_SYM_MODE *)&(target->mode), buffer, size, (UINT32)target->algorithm);
2520 TPMT_SYM_DEF_OBJECT_Marshal(
2521 TPMT_SYM_DEF_OBJECT *source, BYTE **buffer, INT32 *size
2525 result = (UINT16)(result + TPMI_ALG_SYM_OBJECT_Marshal((TPMI_ALG_SYM_OBJECT *)&(source->algorithm), buffer, size));
2526 result = (UINT16)(result + TPMU_SYM_KEY_BITS_Marshal((TPMU_SYM_KEY_BITS *)&(source->keyBits), buffer, size, (UINT32)source->algorithm));
2527 result = (UINT16)(result + TPMU_SYM_MODE_Marshal((TPMU_SYM_MODE *)&(source->mode), buffer, size, (UINT32)source->algorithm));
2532 // Table 2:130 - Definition of TPM2B_SYM_KEY Structure (StructureTable)
2534 TPM2B_SYM_KEY_Unmarshal(
2535 TPM2B_SYM_KEY *target, BYTE **buffer, INT32 *size
2539 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
2540 if(result != TPM_RC_SUCCESS)
2542 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
2543 if(target->t.size == 0)
2544 return TPM_RC_SUCCESS;
2545 if((target->t.size) > MAX_SYM_KEY_BYTES)
2547 result = BYTE_Array_Unmarshal((BYTE *)(target->t.buffer), buffer, size, (INT32)(target->t.size));
2552 TPM2B_SYM_KEY_Marshal(
2553 TPM2B_SYM_KEY *source, BYTE **buffer, INT32 *size
2557 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
2558 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
2559 if(source->t.size == 0)
2561 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.buffer), buffer, size, (INT32)(source->t.size)));
2566 // Table 2:131 - Definition of TPMS_SYMCIPHER_PARMS Structure (StructureTable)
2567 // TPMS_SYMCIPHER_PARMS_Unmarshal changed to #define
2568 // TPMS_SYMCIPHER_PARMS_Marshal changed to #define
2571 // Table 2:132 - Definition of TPM2B_SENSITIVE_DATA Structure (StructureTable)
2573 TPM2B_SENSITIVE_DATA_Unmarshal(
2574 TPM2B_SENSITIVE_DATA *target, BYTE **buffer, INT32 *size
2578 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
2579 if(result != TPM_RC_SUCCESS)
2581 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
2582 if(target->t.size == 0)
2583 return TPM_RC_SUCCESS;
2584 if((target->t.size) > MAX_SYM_DATA)
2586 result = BYTE_Array_Unmarshal((BYTE *)(target->t.buffer), buffer, size, (INT32)(target->t.size));
2591 TPM2B_SENSITIVE_DATA_Marshal(
2592 TPM2B_SENSITIVE_DATA *source, BYTE **buffer, INT32 *size
2596 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
2597 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
2598 if(source->t.size == 0)
2600 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.buffer), buffer, size, (INT32)(source->t.size)));
2605 // Table 2:133 - Definition of TPMS_SENSITIVE_CREATE Structure (StructureTable)
2607 TPMS_SENSITIVE_CREATE_Unmarshal(
2608 TPMS_SENSITIVE_CREATE *target, BYTE **buffer, INT32 *size
2612 result = TPM2B_AUTH_Unmarshal((TPM2B_AUTH *)&(target->userAuth), buffer, size);
2613 if(result != TPM_RC_SUCCESS)
2615 result = TPM2B_SENSITIVE_DATA_Unmarshal((TPM2B_SENSITIVE_DATA *)&(target->data), buffer, size);
2619 // TPMS_SENSITIVE_CREATE_Marshal not referenced
2622 // Table 2:134 - Definition of TPM2B_SENSITIVE_CREATE Structure (StructureTable)
2624 TPM2B_SENSITIVE_CREATE_Unmarshal(
2625 TPM2B_SENSITIVE_CREATE *target, BYTE **buffer, INT32 *size
2630 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
2631 if(result != TPM_RC_SUCCESS)
2633 // if size is zero, then the required structure is missing
2634 if(target->t.size == 0)
2637 result = TPMS_SENSITIVE_CREATE_Unmarshal((TPMS_SENSITIVE_CREATE *)&(target->t.sensitive), buffer, size);
2638 if(result != TPM_RC_SUCCESS)
2640 if(target->t.size != (startSize - *size)) return TPM_RC_SIZE;
2641 return TPM_RC_SUCCESS;
2644 // TPM2B_SENSITIVE_CREATE_Marshal not referenced
2647 // Table 2:135 - Definition of TPMS_SCHEME_HASH Structure (StructureTable)
2648 // TPMS_SCHEME_HASH_Unmarshal changed to #define
2649 // TPMS_SCHEME_HASH_Marshal changed to #define
2652 // Table 2:136 - Definition of TPMS_SCHEME_ECDAA Structure (StructureTable)
2655 TPMS_SCHEME_ECDAA_Unmarshal(
2656 TPMS_SCHEME_ECDAA *target, BYTE **buffer, INT32 *size
2660 result = TPMI_ALG_HASH_Unmarshal((TPMI_ALG_HASH *)&(target->hashAlg), buffer, size, 0);
2661 if(result != TPM_RC_SUCCESS)
2663 result = UINT16_Unmarshal((UINT16 *)&(target->count), buffer, size);
2668 TPMS_SCHEME_ECDAA_Marshal(
2669 TPMS_SCHEME_ECDAA *source, BYTE **buffer, INT32 *size
2673 result = (UINT16)(result + TPMI_ALG_HASH_Marshal((TPMI_ALG_HASH *)&(source->hashAlg), buffer, size));
2674 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->count), buffer, size));
2678 #endif // TPM_ALG_ECC
2681 // Table 2:137 - Definition of TPMI_ALG_KEYEDHASH_SCHEME Type (TypeTable)
2683 TPMI_ALG_KEYEDHASH_SCHEME_Unmarshal(
2684 TPMI_ALG_KEYEDHASH_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag
2688 result = TPM_ALG_ID_Unmarshal((TPM_ALG_ID *)target, buffer, size);
2689 if(result != TPM_RC_SUCCESS)
2694 #endif // TPM_ALG_HMAC
2697 #endif // TPM_ALG_XOR
2702 return TPM_RC_VALUE;
2704 return TPM_RC_VALUE;
2706 return TPM_RC_SUCCESS;
2709 // TPMI_ALG_KEYEDHASH_SCHEME_Marshal changed to #define
2712 // Table 2:138 - Definition of Types for HMAC_SIG_SCHEME (TypesTable)
2713 // TPMS_SCHEME_HASH definition from table 2:138
2714 // TPMS_SCHEME_HMAC_Unmarshal changed to #define
2715 // TPMS_SCHEME_HMAC_Marshal changed to #define
2718 // Table 2:139 - Definition of TPMS_SCHEME_XOR Structure (StructureTable)
2720 TPMS_SCHEME_XOR_Unmarshal(
2721 TPMS_SCHEME_XOR *target, BYTE **buffer, INT32 *size, BOOL flag
2725 result = TPMI_ALG_HASH_Unmarshal((TPMI_ALG_HASH *)&(target->hashAlg), buffer, size, flag);
2726 if(result != TPM_RC_SUCCESS)
2728 result = TPMI_ALG_KDF_Unmarshal((TPMI_ALG_KDF *)&(target->kdf), buffer, size, 1);
2733 TPMS_SCHEME_XOR_Marshal(
2734 TPMS_SCHEME_XOR *source, BYTE **buffer, INT32 *size
2738 result = (UINT16)(result + TPMI_ALG_HASH_Marshal((TPMI_ALG_HASH *)&(source->hashAlg), buffer, size));
2739 result = (UINT16)(result + TPMI_ALG_KDF_Marshal((TPMI_ALG_KDF *)&(source->kdf), buffer, size));
2744 // Table 2:140 - Definition of TPMU_SCHEME_KEYEDHASH Union (UnionTable)
2746 TPMU_SCHEME_KEYEDHASH_Unmarshal(
2747 TPMU_SCHEME_KEYEDHASH *target, BYTE **buffer, INT32 *size, UINT32 selector
2753 return TPMS_SCHEME_HMAC_Unmarshal((TPMS_SCHEME_HMAC *)&(target->hmac), buffer, size);
2754 #endif // TPM_ALG_HMAC
2757 return TPMS_SCHEME_XOR_Unmarshal((TPMS_SCHEME_XOR *)&(target->exclusiveOr
2758 ), buffer, size, 1);
2759 #endif // TPM_ALG_XOR
2761 return TPM_RC_SUCCESS;
2763 return TPM_RC_SELECTOR;
2767 TPMU_SCHEME_KEYEDHASH_Marshal(
2768 TPMU_SCHEME_KEYEDHASH *source, BYTE **buffer, INT32 *size, UINT32 selector
2774 return TPMS_SCHEME_HMAC_Marshal((TPMS_SCHEME_HMAC *)&(source->hmac), buffer, size);
2775 #endif // TPM_ALG_HMAC
2778 return TPMS_SCHEME_XOR_Marshal((TPMS_SCHEME_XOR *)&(source->exclusiveOr
2780 #endif // TPM_ALG_XOR
2788 // Table 2:141 - Definition of TPMT_KEYEDHASH_SCHEME Structure (StructureTable)
2790 TPMT_KEYEDHASH_SCHEME_Unmarshal(
2791 TPMT_KEYEDHASH_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag
2795 result = TPMI_ALG_KEYEDHASH_SCHEME_Unmarshal((TPMI_ALG_KEYEDHASH_SCHEME *)&(target->scheme), buffer, size, flag);
2796 if(result != TPM_RC_SUCCESS)
2798 result = TPMU_SCHEME_KEYEDHASH_Unmarshal((TPMU_SCHEME_KEYEDHASH *)&(target->details), buffer, size, (UINT32)target->scheme);
2803 TPMT_KEYEDHASH_SCHEME_Marshal(
2804 TPMT_KEYEDHASH_SCHEME *source, BYTE **buffer, INT32 *size
2808 result = (UINT16)(result + TPMI_ALG_KEYEDHASH_SCHEME_Marshal((TPMI_ALG_KEYEDHASH_SCHEME *)&(source->scheme), buffer, size));
2809 result = (UINT16)(result + TPMU_SCHEME_KEYEDHASH_Marshal((TPMU_SCHEME_KEYEDHASH *)&(source->details), buffer, size, (UINT32)source->scheme));
2814 // Table 2:142 - Definition of Types for RSA Signature Schemes (TypesTable)
2816 // TPMS_SCHEME_HASH definition from table 2:142
2818 // TPMS_SIG_SCHEME_RSASSA_Unmarshal changed to #define
2819 // TPMS_SIG_SCHEME_RSASSA_Marshal changed to #define
2820 #endif // TPM_ALG_RSA
2821 // TPMS_SCHEME_HASH definition from table 2:142
2823 // TPMS_SIG_SCHEME_RSAPSS_Unmarshal changed to #define
2824 // TPMS_SIG_SCHEME_RSAPSS_Marshal changed to #define
2825 #endif // TPM_ALG_RSA
2826 #endif // TPM_ALG_RSA
2829 // Table 2:143 - Definition of Types for ECC Signature Schemes (TypesTable)
2831 // TPMS_SCHEME_HASH definition from table 2:143
2833 // TPMS_SIG_SCHEME_ECDSA_Unmarshal changed to #define
2834 // TPMS_SIG_SCHEME_ECDSA_Marshal changed to #define
2835 #endif // TPM_ALG_ECC
2836 // TPMS_SCHEME_HASH definition from table 2:143
2838 // TPMS_SIG_SCHEME_SM2_Unmarshal changed to #define
2839 // TPMS_SIG_SCHEME_SM2_Marshal changed to #define
2840 #endif // TPM_ALG_ECC
2841 // TPMS_SCHEME_HASH definition from table 2:143
2843 // TPMS_SIG_SCHEME_ECSCHNORR_Unmarshal changed to #define
2844 // TPMS_SIG_SCHEME_ECSCHNORR_Marshal changed to #define
2845 #endif // TPM_ALG_ECC
2846 // TPMS_SCHEME_ECDAA definition from table 2:143
2848 // TPMS_SIG_SCHEME_ECDAA_Unmarshal changed to #define
2849 // TPMS_SIG_SCHEME_ECDAA_Marshal changed to #define
2850 #endif // TPM_ALG_ECC
2851 #endif // TPM_ALG_ECC
2854 // Table 2:144 - Definition of TPMU_SIG_SCHEME Union (UnionTable)
2856 TPMU_SIG_SCHEME_Unmarshal(
2857 TPMU_SIG_SCHEME *target, BYTE **buffer, INT32 *size, UINT32 selector
2861 #ifdef TPM_ALG_RSASSA
2862 case TPM_ALG_RSASSA:
2863 return TPMS_SIG_SCHEME_RSASSA_Unmarshal((TPMS_SIG_SCHEME_RSASSA *)&(target->rsassa), buffer, size);
2864 #endif // TPM_ALG_RSASSA
2865 #ifdef TPM_ALG_RSAPSS
2866 case TPM_ALG_RSAPSS:
2867 return TPMS_SIG_SCHEME_RSAPSS_Unmarshal((TPMS_SIG_SCHEME_RSAPSS *)&(target->rsapss), buffer, size);
2868 #endif // TPM_ALG_RSAPSS
2869 #ifdef TPM_ALG_ECDSA
2871 return TPMS_SIG_SCHEME_ECDSA_Unmarshal((TPMS_SIG_SCHEME_ECDSA *)&(target->ecdsa), buffer, size);
2872 #endif // TPM_ALG_ECDSA
2875 return TPMS_SIG_SCHEME_SM2_Unmarshal((TPMS_SIG_SCHEME_SM2 *)&(target->sm2), buffer, size);
2876 #endif // TPM_ALG_SM2
2877 #ifdef TPM_ALG_ECSCHNORR
2878 case TPM_ALG_ECSCHNORR:
2879 return TPMS_SIG_SCHEME_ECSCHNORR_Unmarshal((TPMS_SIG_SCHEME_ECSCHNORR *)&(target->ecschnorr), buffer, size);
2880 #endif // TPM_ALG_ECSCHNORR
2881 #ifdef TPM_ALG_ECDAA
2883 return TPMS_SIG_SCHEME_ECDAA_Unmarshal((TPMS_SIG_SCHEME_ECDAA *)&(target->ecdaa), buffer, size);
2884 #endif // TPM_ALG_ECDAA
2887 return TPMS_SCHEME_HMAC_Unmarshal((TPMS_SCHEME_HMAC *)&(target->hmac), buffer, size);
2888 #endif // TPM_ALG_HMAC
2890 return TPM_RC_SUCCESS;
2892 return TPM_RC_SELECTOR;
2895 // TPMU_SIG_SCHEME_Marshal not referenced
2898 // Table 2:145 - Definition of TPMT_SIG_SCHEME Structure (StructureTable)
2900 TPMT_SIG_SCHEME_Unmarshal(
2901 TPMT_SIG_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag
2905 result = TPMI_ALG_SIG_SCHEME_Unmarshal((TPMI_ALG_SIG_SCHEME *)&(target->scheme), buffer, size, flag);
2906 if(result != TPM_RC_SUCCESS)
2908 result = TPMU_SIG_SCHEME_Unmarshal((TPMU_SIG_SCHEME *)&(target->details), buffer, size, (UINT32)target->scheme);
2912 // TPMT_SIG_SCHEME_Marshal not referenced
2915 // Table 2:146 - Definition of Types for Encryption Schemes (TypesTable)
2917 // TPMS_SCHEME_HASH definition from table 2:146
2919 // TPMS_ENC_SCHEME_OAEP_Unmarshal changed to #define
2920 // TPMS_ENC_SCHEME_OAEP_Marshal changed to #define
2921 #endif // TPM_ALG_RSA
2922 // TPMS_EMPTY definition from table 2:146
2924 // TPMS_ENC_SCHEME_RSAES_Unmarshal changed to #define
2925 // TPMS_ENC_SCHEME_RSAES_Marshal changed to #define
2926 #endif // TPM_ALG_RSA
2927 #endif // TPM_ALG_RSA
2930 // Table 2:147 - Definition of Types for ECC Key Exchange (TypesTable)
2932 // TPMS_SCHEME_HASH definition from table 2:147
2934 // TPMS_KEY_SCHEME_ECDH_Unmarshal changed to #define
2935 // TPMS_KEY_SCHEME_ECDH_Marshal changed to #define
2936 #endif // TPM_ALG_ECC
2937 // TPMS_SCHEME_HASH definition from table 2:147
2939 // TPMS_KEY_SCHEME_ECMQV_Unmarshal changed to #define
2940 // TPMS_KEY_SCHEME_ECMQV_Marshal changed to #define
2941 #endif // TPM_ALG_ECC
2942 #endif // TPM_ALG_ECC
2945 // Table 2:148 - Definition of Types for KDF Schemes (TypesTable)
2946 // TPMS_SCHEME_HASH definition from table 2:148
2947 // TPMS_SCHEME_MGF1_Unmarshal changed to #define
2948 // TPMS_SCHEME_MGF1_Marshal changed to #define
2949 // TPMS_SCHEME_HASH definition from table 2:148
2950 // TPMS_SCHEME_KDF1_SP800_56A_Unmarshal changed to #define
2951 // TPMS_SCHEME_KDF1_SP800_56A_Marshal changed to #define
2952 // TPMS_SCHEME_HASH definition from table 2:148
2953 // TPMS_SCHEME_KDF2_Unmarshal changed to #define
2954 // TPMS_SCHEME_KDF2_Marshal changed to #define
2955 // TPMS_SCHEME_HASH definition from table 2:148
2956 // TPMS_SCHEME_KDF1_SP800_108_Unmarshal changed to #define
2957 // TPMS_SCHEME_KDF1_SP800_108_Marshal changed to #define
2960 // Table 2:149 - Definition of TPMU_KDF_SCHEME Union (UnionTable)
2962 TPMU_KDF_SCHEME_Unmarshal(
2963 TPMU_KDF_SCHEME *target, BYTE **buffer, INT32 *size, UINT32 selector
2969 return TPMS_SCHEME_MGF1_Unmarshal((TPMS_SCHEME_MGF1 *)&(target->mgf1), buffer, size);
2970 #endif // TPM_ALG_MGF1
2971 #ifdef TPM_ALG_KDF1_SP800_56A
2972 case TPM_ALG_KDF1_SP800_56A:
2973 return TPMS_SCHEME_KDF1_SP800_56A_Unmarshal((TPMS_SCHEME_KDF1_SP800_56A *)&(target->kdf1_sp800_56a), buffer, size);
2974 #endif // TPM_ALG_KDF1_SP800_56A
2977 return TPMS_SCHEME_KDF2_Unmarshal((TPMS_SCHEME_KDF2 *)&(target->kdf2), buffer, size);
2978 #endif // TPM_ALG_KDF2
2979 #ifdef TPM_ALG_KDF1_SP800_108
2980 case TPM_ALG_KDF1_SP800_108:
2981 return TPMS_SCHEME_KDF1_SP800_108_Unmarshal((TPMS_SCHEME_KDF1_SP800_108 *)&(target->kdf1_sp800_108), buffer, size);
2982 #endif // TPM_ALG_KDF1_SP800_108
2984 return TPM_RC_SUCCESS;
2986 return TPM_RC_SELECTOR;
2990 TPMU_KDF_SCHEME_Marshal(
2991 TPMU_KDF_SCHEME *source, BYTE **buffer, INT32 *size, UINT32 selector
2997 return TPMS_SCHEME_MGF1_Marshal((TPMS_SCHEME_MGF1 *)&(source->mgf1), buffer, size);
2998 #endif // TPM_ALG_MGF1
2999 #ifdef TPM_ALG_KDF1_SP800_56A
3000 case TPM_ALG_KDF1_SP800_56A:
3001 return TPMS_SCHEME_KDF1_SP800_56A_Marshal((TPMS_SCHEME_KDF1_SP800_56A *)&(source->kdf1_sp800_56a), buffer, size);
3002 #endif // TPM_ALG_KDF1_SP800_56A
3005 return TPMS_SCHEME_KDF2_Marshal((TPMS_SCHEME_KDF2 *)&(source->kdf2), buffer, size);
3006 #endif // TPM_ALG_KDF2
3007 #ifdef TPM_ALG_KDF1_SP800_108
3008 case TPM_ALG_KDF1_SP800_108:
3009 return TPMS_SCHEME_KDF1_SP800_108_Marshal((TPMS_SCHEME_KDF1_SP800_108 *)&(source->kdf1_sp800_108), buffer, size);
3010 #endif // TPM_ALG_KDF1_SP800_108
3018 // Table 2:150 - Definition of TPMT_KDF_SCHEME Structure (StructureTable)
3020 TPMT_KDF_SCHEME_Unmarshal(
3021 TPMT_KDF_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag
3025 result = TPMI_ALG_KDF_Unmarshal((TPMI_ALG_KDF *)&(target->scheme), buffer, size, flag);
3026 if(result != TPM_RC_SUCCESS)
3028 result = TPMU_KDF_SCHEME_Unmarshal((TPMU_KDF_SCHEME *)&(target->details), buffer, size, (UINT32)target->scheme);
3033 TPMT_KDF_SCHEME_Marshal(
3034 TPMT_KDF_SCHEME *source, BYTE **buffer, INT32 *size
3038 result = (UINT16)(result + TPMI_ALG_KDF_Marshal((TPMI_ALG_KDF *)&(source->scheme), buffer, size));
3039 result = (UINT16)(result + TPMU_KDF_SCHEME_Marshal((TPMU_KDF_SCHEME *)&(source->details), buffer, size, (UINT32)source->scheme));
3044 // Table 2:151 - Definition of TPMI_ALG_ASYM_SCHEME Type (TypeTable)
3045 // TPMI_ALG_ASYM_SCHEME_Unmarshal not referenced
3046 // TPMI_ALG_ASYM_SCHEME_Marshal not referenced
3049 // Table 2:152 - Definition of TPMU_ASYM_SCHEME Union (UnionTable)
3051 TPMU_ASYM_SCHEME_Unmarshal(
3052 TPMU_ASYM_SCHEME *target, BYTE **buffer, INT32 *size, UINT32 selector
3058 return TPMS_KEY_SCHEME_ECDH_Unmarshal((TPMS_KEY_SCHEME_ECDH *)&(target->ecdh), buffer, size);
3059 #endif // TPM_ALG_ECDH
3060 #ifdef TPM_ALG_ECMQV
3062 return TPMS_KEY_SCHEME_ECMQV_Unmarshal((TPMS_KEY_SCHEME_ECMQV *)&(target->ecmqv), buffer, size);
3063 #endif // TPM_ALG_ECMQV
3064 #ifdef TPM_ALG_RSASSA
3065 case TPM_ALG_RSASSA:
3066 return TPMS_SIG_SCHEME_RSASSA_Unmarshal((TPMS_SIG_SCHEME_RSASSA *)&(target->rsassa), buffer, size);
3067 #endif // TPM_ALG_RSASSA
3068 #ifdef TPM_ALG_RSAPSS
3069 case TPM_ALG_RSAPSS:
3070 return TPMS_SIG_SCHEME_RSAPSS_Unmarshal((TPMS_SIG_SCHEME_RSAPSS *)&(target->rsapss), buffer, size);
3071 #endif // TPM_ALG_RSAPSS
3072 #ifdef TPM_ALG_ECDSA
3074 return TPMS_SIG_SCHEME_ECDSA_Unmarshal((TPMS_SIG_SCHEME_ECDSA *)&(target->ecdsa), buffer, size);
3075 #endif // TPM_ALG_ECDSA
3078 return TPMS_SIG_SCHEME_SM2_Unmarshal((TPMS_SIG_SCHEME_SM2 *)&(target->sm2), buffer, size);
3079 #endif // TPM_ALG_SM2
3080 #ifdef TPM_ALG_ECSCHNORR
3081 case TPM_ALG_ECSCHNORR:
3082 return TPMS_SIG_SCHEME_ECSCHNORR_Unmarshal((TPMS_SIG_SCHEME_ECSCHNORR *)&(target->ecschnorr), buffer, size);
3083 #endif // TPM_ALG_ECSCHNORR
3084 #ifdef TPM_ALG_ECDAA
3086 return TPMS_SIG_SCHEME_ECDAA_Unmarshal((TPMS_SIG_SCHEME_ECDAA *)&(target->ecdaa), buffer, size);
3087 #endif // TPM_ALG_ECDAA
3090 return TPMS_ENC_SCHEME_OAEP_Unmarshal((TPMS_ENC_SCHEME_OAEP *)&(target->oaep), buffer, size);
3091 #endif // TPM_ALG_OAEP
3092 #ifdef TPM_ALG_RSAES
3094 return TPMS_ENC_SCHEME_RSAES_Unmarshal((TPMS_ENC_SCHEME_RSAES *)&(target->rsaes), buffer, size);
3095 #endif // TPM_ALG_RSAES
3097 return TPM_RC_SUCCESS;
3099 return TPM_RC_SELECTOR;
3103 TPMU_ASYM_SCHEME_Marshal(
3104 TPMU_ASYM_SCHEME *source, BYTE **buffer, INT32 *size, UINT32 selector
3110 return TPMS_KEY_SCHEME_ECDH_Marshal((TPMS_KEY_SCHEME_ECDH *)&(source->ecdh), buffer, size);
3111 #endif // TPM_ALG_ECDH
3112 #ifdef TPM_ALG_ECMQV
3114 return TPMS_KEY_SCHEME_ECMQV_Marshal((TPMS_KEY_SCHEME_ECMQV *)&(source->ecmqv), buffer, size);
3115 #endif // TPM_ALG_ECMQV
3116 #ifdef TPM_ALG_RSASSA
3117 case TPM_ALG_RSASSA:
3118 return TPMS_SIG_SCHEME_RSASSA_Marshal((TPMS_SIG_SCHEME_RSASSA *)&(source->rsassa), buffer, size);
3119 #endif // TPM_ALG_RSASSA
3120 #ifdef TPM_ALG_RSAPSS
3121 case TPM_ALG_RSAPSS:
3122 return TPMS_SIG_SCHEME_RSAPSS_Marshal((TPMS_SIG_SCHEME_RSAPSS *)&(source->rsapss), buffer, size);
3123 #endif // TPM_ALG_RSAPSS
3124 #ifdef TPM_ALG_ECDSA
3126 return TPMS_SIG_SCHEME_ECDSA_Marshal((TPMS_SIG_SCHEME_ECDSA *)&(source->ecdsa), buffer, size);
3127 #endif // TPM_ALG_ECDSA
3130 return TPMS_SIG_SCHEME_SM2_Marshal((TPMS_SIG_SCHEME_SM2 *)&(source->sm2), buffer, size);
3131 #endif // TPM_ALG_SM2
3132 #ifdef TPM_ALG_ECSCHNORR
3133 case TPM_ALG_ECSCHNORR:
3134 return TPMS_SIG_SCHEME_ECSCHNORR_Marshal((TPMS_SIG_SCHEME_ECSCHNORR *)&(source->ecschnorr), buffer, size);
3135 #endif // TPM_ALG_ECSCHNORR
3136 #ifdef TPM_ALG_ECDAA
3138 return TPMS_SIG_SCHEME_ECDAA_Marshal((TPMS_SIG_SCHEME_ECDAA *)&(source->ecdaa), buffer, size);
3139 #endif // TPM_ALG_ECDAA
3142 return TPMS_ENC_SCHEME_OAEP_Marshal((TPMS_ENC_SCHEME_OAEP *)&(source->oaep), buffer, size);
3143 #endif // TPM_ALG_OAEP
3144 #ifdef TPM_ALG_RSAES
3146 return TPMS_ENC_SCHEME_RSAES_Marshal((TPMS_ENC_SCHEME_RSAES *)&(source->rsaes), buffer, size);
3147 #endif // TPM_ALG_RSAES
3155 // Table 2:153 - Definition of TPMT_ASYM_SCHEME Structure (StructureTable)
3156 // TPMT_ASYM_SCHEME_Unmarshal not referenced
3157 // TPMT_ASYM_SCHEME_Marshal not referenced
3160 // Table 2:154 - Definition of TPMI_ALG_RSA_SCHEME Type (TypeTable)
3163 TPMI_ALG_RSA_SCHEME_Unmarshal(
3164 TPMI_ALG_RSA_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag
3168 result = TPM_ALG_ID_Unmarshal((TPM_ALG_ID *)target, buffer, size);
3169 if(result != TPM_RC_SUCCESS)
3174 #endif // TPM_ALG_OAEP
3175 #ifdef TPM_ALG_RSASSA
3176 case TPM_ALG_RSASSA:
3177 #endif // TPM_ALG_RSASSA
3178 #ifdef TPM_ALG_RSAPSS
3179 case TPM_ALG_RSAPSS:
3180 #endif // TPM_ALG_RSAPSS
3181 #ifdef TPM_ALG_RSAES
3183 #endif // TPM_ALG_RSAES
3188 return TPM_RC_VALUE;
3190 return TPM_RC_VALUE;
3192 return TPM_RC_SUCCESS;
3195 // TPMI_ALG_RSA_SCHEME_Marshal changed to #define
3196 #endif // TPM_ALG_RSA
3199 // Table 2:155 - Definition of TPMT_RSA_SCHEME Structure (StructureTable)
3202 TPMT_RSA_SCHEME_Unmarshal(
3203 TPMT_RSA_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag
3207 result = TPMI_ALG_RSA_SCHEME_Unmarshal((TPMI_ALG_RSA_SCHEME *)&(target->scheme), buffer, size, flag);
3208 if(result != TPM_RC_SUCCESS)
3210 result = TPMU_ASYM_SCHEME_Unmarshal((TPMU_ASYM_SCHEME *)&(target->details), buffer, size, (UINT32)target->scheme);
3215 TPMT_RSA_SCHEME_Marshal(
3216 TPMT_RSA_SCHEME *source, BYTE **buffer, INT32 *size
3220 result = (UINT16)(result + TPMI_ALG_RSA_SCHEME_Marshal((TPMI_ALG_RSA_SCHEME *)&(source->scheme), buffer, size));
3221 result = (UINT16)(result + TPMU_ASYM_SCHEME_Marshal((TPMU_ASYM_SCHEME *)&(source->details), buffer, size, (UINT32)source->scheme));
3225 #endif // TPM_ALG_RSA
3228 // Table 2:156 - Definition of TPMI_ALG_RSA_DECRYPT Type (TypeTable)
3231 TPMI_ALG_RSA_DECRYPT_Unmarshal(
3232 TPMI_ALG_RSA_DECRYPT *target, BYTE **buffer, INT32 *size, BOOL flag
3236 result = TPM_ALG_ID_Unmarshal((TPM_ALG_ID *)target, buffer, size);
3237 if(result != TPM_RC_SUCCESS)
3242 #endif // TPM_ALG_OAEP
3243 #ifdef TPM_ALG_RSAES
3245 #endif // TPM_ALG_RSAES
3250 return TPM_RC_VALUE;
3252 return TPM_RC_VALUE;
3254 return TPM_RC_SUCCESS;
3257 // TPMI_ALG_RSA_DECRYPT_Marshal not referenced
3258 #endif // TPM_ALG_RSA
3261 // Table 2:157 - Definition of TPMT_RSA_DECRYPT Structure (StructureTable)
3264 TPMT_RSA_DECRYPT_Unmarshal(
3265 TPMT_RSA_DECRYPT *target, BYTE **buffer, INT32 *size, BOOL flag
3269 result = TPMI_ALG_RSA_DECRYPT_Unmarshal((TPMI_ALG_RSA_DECRYPT *)&(target->scheme), buffer, size, flag);
3270 if(result != TPM_RC_SUCCESS)
3272 result = TPMU_ASYM_SCHEME_Unmarshal((TPMU_ASYM_SCHEME *)&(target->details), buffer, size, (UINT32)target->scheme);
3276 // TPMT_RSA_DECRYPT_Marshal not referenced
3277 #endif // TPM_ALG_RSA
3280 // Table 2:158 - Definition of TPM2B_PUBLIC_KEY_RSA Structure (StructureTable)
3283 TPM2B_PUBLIC_KEY_RSA_Unmarshal(
3284 TPM2B_PUBLIC_KEY_RSA *target, BYTE **buffer, INT32 *size
3288 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
3289 if(result != TPM_RC_SUCCESS)
3291 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
3292 if(target->t.size == 0)
3293 return TPM_RC_SUCCESS;
3294 if((target->t.size) > MAX_RSA_KEY_BYTES)
3296 result = BYTE_Array_Unmarshal((BYTE *)(target->t.buffer), buffer, size, (INT32)(target->t.size));
3301 TPM2B_PUBLIC_KEY_RSA_Marshal(
3302 TPM2B_PUBLIC_KEY_RSA *source, BYTE **buffer, INT32 *size
3306 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
3307 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
3308 if(source->t.size == 0)
3310 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.buffer), buffer, size, (INT32)(source->t.size)));
3314 #endif // TPM_ALG_RSA
3317 // Table 2:159 - Definition of TPMI_RSA_KEY_BITS Type (TypeTable)
3320 TPMI_RSA_KEY_BITS_Unmarshal(
3321 TPMI_RSA_KEY_BITS *target, BYTE **buffer, INT32 *size
3325 result = TPM_KEY_BITS_Unmarshal((TPM_KEY_BITS *)target, buffer, size);
3326 if(result != TPM_RC_SUCCESS)
3333 return TPM_RC_VALUE;
3335 return TPM_RC_SUCCESS;
3338 // TPMI_RSA_KEY_BITS_Marshal changed to #define
3339 #endif // TPM_ALG_RSA
3342 // Table 2:160 - Definition of TPM2B_PRIVATE_KEY_RSA Structure (StructureTable)
3345 TPM2B_PRIVATE_KEY_RSA_Unmarshal(
3346 TPM2B_PRIVATE_KEY_RSA *target, BYTE **buffer, INT32 *size
3350 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
3351 if(result != TPM_RC_SUCCESS)
3353 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
3354 if(target->t.size == 0)
3355 return TPM_RC_SUCCESS;
3356 if((target->t.size) > MAX_RSA_KEY_BYTES/2)
3358 result = BYTE_Array_Unmarshal((BYTE *)(target->t.buffer), buffer, size, (INT32)(target->t.size));
3363 TPM2B_PRIVATE_KEY_RSA_Marshal(
3364 TPM2B_PRIVATE_KEY_RSA *source, BYTE **buffer, INT32 *size
3368 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
3369 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
3370 if(source->t.size == 0)
3372 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.buffer), buffer, size, (INT32)(source->t.size)));
3376 #endif // TPM_ALG_RSA
3379 // Table 2:161 - Definition of TPM2B_ECC_PARAMETER Structure (StructureTable)
3382 TPM2B_ECC_PARAMETER_Unmarshal(
3383 TPM2B_ECC_PARAMETER *target, BYTE **buffer, INT32 *size
3387 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
3388 if(result != TPM_RC_SUCCESS)
3390 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
3391 if(target->t.size == 0)
3392 return TPM_RC_SUCCESS;
3393 if((target->t.size) > MAX_ECC_KEY_BYTES)
3395 result = BYTE_Array_Unmarshal((BYTE *)(target->t.buffer), buffer, size, (INT32)(target->t.size));
3400 TPM2B_ECC_PARAMETER_Marshal(
3401 TPM2B_ECC_PARAMETER *source, BYTE **buffer, INT32 *size
3405 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
3406 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
3407 if(source->t.size == 0)
3409 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.buffer), buffer, size, (INT32)(source->t.size)));
3413 #endif // TPM_ALG_ECC
3416 // Table 2:162 - Definition of TPMS_ECC_POINT Structure (StructureTable)
3419 TPMS_ECC_POINT_Unmarshal(
3420 TPMS_ECC_POINT *target, BYTE **buffer, INT32 *size
3424 result = TPM2B_ECC_PARAMETER_Unmarshal((TPM2B_ECC_PARAMETER *)&(target->x), buffer, size);
3425 if(result != TPM_RC_SUCCESS)
3427 result = TPM2B_ECC_PARAMETER_Unmarshal((TPM2B_ECC_PARAMETER *)&(target->y), buffer, size);
3432 TPMS_ECC_POINT_Marshal(
3433 TPMS_ECC_POINT *source, BYTE **buffer, INT32 *size
3437 result = (UINT16)(result + TPM2B_ECC_PARAMETER_Marshal((TPM2B_ECC_PARAMETER *)&(source->x), buffer, size));
3438 result = (UINT16)(result + TPM2B_ECC_PARAMETER_Marshal((TPM2B_ECC_PARAMETER *)&(source->y), buffer, size));
3442 #endif // TPM_ALG_ECC
3445 // Table 2:163 - Definition of TPM2B_ECC_POINT Structure (StructureTable)
3448 TPM2B_ECC_POINT_Unmarshal(
3449 TPM2B_ECC_POINT *target, BYTE **buffer, INT32 *size
3454 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
3455 if(result != TPM_RC_SUCCESS)
3457 // if size is zero, then the required structure is missing
3458 if(target->t.size == 0)
3461 result = TPMS_ECC_POINT_Unmarshal((TPMS_ECC_POINT *)&(target->t.point), buffer, size);
3462 if(result != TPM_RC_SUCCESS)
3464 if(target->t.size != (startSize - *size)) return TPM_RC_SIZE;
3465 return TPM_RC_SUCCESS;
3469 TPM2B_ECC_POINT_Marshal(
3470 TPM2B_ECC_POINT *source, BYTE **buffer, INT32 *size
3474 BYTE *sizeField = *buffer;
3475 // Advance buffer pointer by cononical size of a UINT16
3477 // Marshal the structure
3478 result = (UINT16)(result + TPMS_ECC_POINT_Marshal((TPMS_ECC_POINT *)&(source->t.point), buffer, size));
3480 result = (UINT16)(result + UINT16_Marshal(&result, &sizeField, size));
3484 #endif // TPM_ALG_ECC
3487 // Table 2:164 - Definition of TPMI_ALG_ECC_SCHEME Type (TypeTable)
3490 TPMI_ALG_ECC_SCHEME_Unmarshal(
3491 TPMI_ALG_ECC_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag
3495 result = TPM_ALG_ID_Unmarshal((TPM_ALG_ID *)target, buffer, size);
3496 if(result != TPM_RC_SUCCESS)
3499 #ifdef TPM_ALG_ECDSA
3501 #endif // TPM_ALG_ECDSA
3504 #endif // TPM_ALG_SM2
3505 #ifdef TPM_ALG_ECSCHNORR
3506 case TPM_ALG_ECSCHNORR:
3507 #endif // TPM_ALG_ECSCHNORR
3508 #ifdef TPM_ALG_ECDAA
3510 #endif // TPM_ALG_ECDAA
3513 #endif // TPM_ALG_ECDH
3514 #ifdef TPM_ALG_ECMQV
3516 #endif // TPM_ALG_ECMQV
3521 return TPM_RC_SCHEME;
3523 return TPM_RC_SCHEME;
3525 return TPM_RC_SUCCESS;
3528 // TPMI_ALG_ECC_SCHEME_Marshal changed to #define
3529 #endif // TPM_ALG_ECC
3532 // Table 2:165 - Definition of TPMI_ECC_CURVE Type (TypeTable)
3535 TPMI_ECC_CURVE_Unmarshal(
3536 TPMI_ECC_CURVE *target, BYTE **buffer, INT32 *size
3540 result = TPM_ECC_CURVE_Unmarshal((TPM_ECC_CURVE *)target, buffer, size);
3541 if(result != TPM_RC_SUCCESS)
3544 case TPM_ECC_BN_P256:
3545 case TPM_ECC_NIST_P256:
3546 #if defined ME11_SIM
3547 #elif defined INTEL_SMX
3548 case TPM_ECC_SM2_P256:
3550 case TPM_ECC_NIST_P384:
3554 return TPM_RC_CURVE;
3556 return TPM_RC_SUCCESS;
3559 // TPMI_ECC_CURVE_Marshal changed to #define
3560 #endif // TPM_ALG_ECC
3563 // Table 2:166 - Definition of TPMT_ECC_SCHEME Structure (StructureTable)
3566 TPMT_ECC_SCHEME_Unmarshal(
3567 TPMT_ECC_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag
3571 result = TPMI_ALG_ECC_SCHEME_Unmarshal((TPMI_ALG_ECC_SCHEME *)&(target->scheme), buffer, size, flag);
3572 if(result != TPM_RC_SUCCESS)
3574 result = TPMU_ASYM_SCHEME_Unmarshal((TPMU_ASYM_SCHEME *)&(target->details), buffer, size, (UINT32)target->scheme);
3579 TPMT_ECC_SCHEME_Marshal(
3580 TPMT_ECC_SCHEME *source, BYTE **buffer, INT32 *size
3584 result = (UINT16)(result + TPMI_ALG_ECC_SCHEME_Marshal((TPMI_ALG_ECC_SCHEME *)&(source->scheme), buffer, size));
3585 result = (UINT16)(result + TPMU_ASYM_SCHEME_Marshal((TPMU_ASYM_SCHEME *)&(source->details), buffer, size, (UINT32)source->scheme));
3589 #endif // TPM_ALG_ECC
3592 // Table 2:167 - Definition of TPMS_ALGORITHM_DETAIL_ECC Structure (StructureTable)
3594 // TPMS_ALGORITHM_DETAIL_ECC_Unmarshal not referenced
3596 TPMS_ALGORITHM_DETAIL_ECC_Marshal(
3597 TPMS_ALGORITHM_DETAIL_ECC *source, BYTE **buffer, INT32 *size
3601 result = (UINT16)(result + TPM_ECC_CURVE_Marshal((TPM_ECC_CURVE *)&(source->curveID), buffer, size));
3602 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->keySize), buffer, size));
3603 result = (UINT16)(result + TPMT_KDF_SCHEME_Marshal((TPMT_KDF_SCHEME *)&(source->kdf), buffer, size));
3604 result = (UINT16)(result + TPMT_ECC_SCHEME_Marshal((TPMT_ECC_SCHEME *)&(source->sign), buffer, size));
3605 result = (UINT16)(result + TPM2B_ECC_PARAMETER_Marshal((TPM2B_ECC_PARAMETER *)&(source->p), buffer, size));
3606 result = (UINT16)(result + TPM2B_ECC_PARAMETER_Marshal((TPM2B_ECC_PARAMETER *)&(source->a), buffer, size));
3607 result = (UINT16)(result + TPM2B_ECC_PARAMETER_Marshal((TPM2B_ECC_PARAMETER *)&(source->b), buffer, size));
3608 result = (UINT16)(result + TPM2B_ECC_PARAMETER_Marshal((TPM2B_ECC_PARAMETER *)&(source->gX), buffer, size));
3609 result = (UINT16)(result + TPM2B_ECC_PARAMETER_Marshal((TPM2B_ECC_PARAMETER *)&(source->gY), buffer, size));
3610 result = (UINT16)(result + TPM2B_ECC_PARAMETER_Marshal((TPM2B_ECC_PARAMETER *)&(source->n), buffer, size));
3611 result = (UINT16)(result + TPM2B_ECC_PARAMETER_Marshal((TPM2B_ECC_PARAMETER *)&(source->h), buffer, size));
3615 #endif // TPM_ALG_ECC
3618 // Table 2:168 - Definition of TPMS_SIGNATURE_RSA Structure (StructureTable)
3621 TPMS_SIGNATURE_RSA_Unmarshal(
3622 TPMS_SIGNATURE_RSA *target, BYTE **buffer, INT32 *size
3626 result = TPMI_ALG_HASH_Unmarshal((TPMI_ALG_HASH *)&(target->hash), buffer, size, 0);
3627 if(result != TPM_RC_SUCCESS)
3629 result = TPM2B_PUBLIC_KEY_RSA_Unmarshal((TPM2B_PUBLIC_KEY_RSA *)&(target->sig), buffer, size);
3634 TPMS_SIGNATURE_RSA_Marshal(
3635 TPMS_SIGNATURE_RSA *source, BYTE **buffer, INT32 *size
3639 result = (UINT16)(result + TPMI_ALG_HASH_Marshal((TPMI_ALG_HASH *)&(source->hash), buffer, size));
3640 result = (UINT16)(result + TPM2B_PUBLIC_KEY_RSA_Marshal((TPM2B_PUBLIC_KEY_RSA *)&(source->sig), buffer, size));
3644 #endif // TPM_ALG_RSA
3647 // Table 2:169 - Definition of Types for Signature (TypesTable)
3649 // TPMS_SIGNATURE_RSA definition from table 2:169
3651 // TPMS_SIGNATURE_RSASSA_Unmarshal changed to #define
3652 // TPMS_SIGNATURE_RSASSA_Marshal changed to #define
3653 #endif // TPM_ALG_RSA
3654 // TPMS_SIGNATURE_RSA definition from table 2:169
3656 // TPMS_SIGNATURE_RSAPSS_Unmarshal changed to #define
3657 // TPMS_SIGNATURE_RSAPSS_Marshal changed to #define
3658 #endif // TPM_ALG_RSA
3659 #endif // TPM_ALG_RSA
3662 // Table 2:170 - Definition of TPMS_SIGNATURE_ECC Structure (StructureTable)
3665 TPMS_SIGNATURE_ECC_Unmarshal(
3666 TPMS_SIGNATURE_ECC *target, BYTE **buffer, INT32 *size
3670 result = TPMI_ALG_HASH_Unmarshal((TPMI_ALG_HASH *)&(target->hash), buffer, size, 0);
3671 if(result != TPM_RC_SUCCESS)
3673 result = TPM2B_ECC_PARAMETER_Unmarshal((TPM2B_ECC_PARAMETER *)&(target->signatureR), buffer, size);
3674 if(result != TPM_RC_SUCCESS)
3676 result = TPM2B_ECC_PARAMETER_Unmarshal((TPM2B_ECC_PARAMETER *)&(target->signatureS), buffer, size);
3681 TPMS_SIGNATURE_ECC_Marshal(
3682 TPMS_SIGNATURE_ECC *source, BYTE **buffer, INT32 *size
3686 result = (UINT16)(result + TPMI_ALG_HASH_Marshal((TPMI_ALG_HASH *)&(source->hash), buffer, size));
3687 result = (UINT16)(result + TPM2B_ECC_PARAMETER_Marshal((TPM2B_ECC_PARAMETER *)&(source->signatureR), buffer, size));
3688 result = (UINT16)(result + TPM2B_ECC_PARAMETER_Marshal((TPM2B_ECC_PARAMETER *)&(source->signatureS), buffer, size));
3692 #endif // TPM_ALG_ECC
3695 // Table 2:171 - Definition of Types for TPMS_SIGNATUE_ECC (TypesTable)
3697 // TPMS_SIGNATURE_ECC definition from table 2:171
3699 // TPMS_SIGNATURE_ECDSA_Unmarshal changed to #define
3700 // TPMS_SIGNATURE_ECDSA_Marshal changed to #define
3701 #endif // TPM_ALG_ECC
3702 // TPMS_SIGNATURE_ECC definition from table 2:171
3704 // TPMS_SIGNATURE_SM2_Unmarshal changed to #define
3705 // TPMS_SIGNATURE_SM2_Marshal changed to #define
3706 #endif // TPM_ALG_ECC
3707 // TPMS_SIGNATURE_ECC definition from table 2:171
3709 // TPMS_SIGNATURE_ECSCHNORR_Unmarshal changed to #define
3710 // TPMS_SIGNATURE_ECSCHNORR_Marshal changed to #define
3711 #endif // TPM_ALG_ECC
3712 // TPMS_SIGNATURE_ECC definition from table 2:171
3714 // TPMS_SIGNATURE_ECDAA_Unmarshal changed to #define
3715 // TPMS_SIGNATURE_ECDAA_Marshal changed to #define
3716 #endif // TPM_ALG_ECC
3717 #endif // TPM_ALG_ECC
3720 // Table 2:172 - Definition of TPMU_SIGNATURE Union (UnionTable)
3722 TPMU_SIGNATURE_Unmarshal(
3723 TPMU_SIGNATURE *target, BYTE **buffer, INT32 *size, UINT32 selector
3727 #ifdef TPM_ALG_RSASSA
3728 case TPM_ALG_RSASSA:
3729 return TPMS_SIGNATURE_RSASSA_Unmarshal((TPMS_SIGNATURE_RSASSA *)&(target->rsassa), buffer, size);
3730 #endif // TPM_ALG_RSASSA
3731 #ifdef TPM_ALG_RSAPSS
3732 case TPM_ALG_RSAPSS:
3733 return TPMS_SIGNATURE_RSAPSS_Unmarshal((TPMS_SIGNATURE_RSAPSS *)&(target->rsapss), buffer, size);
3734 #endif // TPM_ALG_RSAPSS
3735 #ifdef TPM_ALG_ECDSA
3737 return TPMS_SIGNATURE_ECDSA_Unmarshal((TPMS_SIGNATURE_ECDSA *)&(target->ecdsa), buffer, size);
3738 #endif // TPM_ALG_ECDSA
3741 return TPMS_SIGNATURE_SM2_Unmarshal((TPMS_SIGNATURE_SM2 *)&(target->sm2), buffer, size);
3742 #endif // TPM_ALG_SM2
3743 #ifdef TPM_ALG_ECSCHNORR
3744 case TPM_ALG_ECSCHNORR:
3745 return TPMS_SIGNATURE_ECSCHNORR_Unmarshal((TPMS_SIGNATURE_ECSCHNORR *)&(target->ecschnorr), buffer, size);
3746 #endif // TPM_ALG_ECSCHNORR
3747 #ifdef TPM_ALG_ECDAA
3749 return TPMS_SIGNATURE_ECDAA_Unmarshal((TPMS_SIGNATURE_ECDAA *)&(target->ecdaa), buffer, size);
3750 #endif // TPM_ALG_ECDAA
3753 return TPMT_HA_Unmarshal((TPMT_HA *)&(target->hmac), buffer, size, 0);
3754 #endif // TPM_ALG_HMAC
3756 return TPM_RC_SUCCESS;
3758 return TPM_RC_SELECTOR;
3762 TPMU_SIGNATURE_Marshal(
3763 TPMU_SIGNATURE *source, BYTE **buffer, INT32 *size, UINT32 selector
3767 #ifdef TPM_ALG_RSASSA
3768 case TPM_ALG_RSASSA:
3769 return TPMS_SIGNATURE_RSASSA_Marshal((TPMS_SIGNATURE_RSASSA *)&(source->rsassa), buffer, size);
3770 #endif // TPM_ALG_RSASSA
3771 #ifdef TPM_ALG_RSAPSS
3772 case TPM_ALG_RSAPSS:
3773 return TPMS_SIGNATURE_RSAPSS_Marshal((TPMS_SIGNATURE_RSAPSS *)&(source->rsapss), buffer, size);
3774 #endif // TPM_ALG_RSAPSS
3775 #ifdef TPM_ALG_ECDSA
3777 return TPMS_SIGNATURE_ECDSA_Marshal((TPMS_SIGNATURE_ECDSA *)&(source->ecdsa), buffer, size);
3778 #endif // TPM_ALG_ECDSA
3781 return TPMS_SIGNATURE_SM2_Marshal((TPMS_SIGNATURE_SM2 *)&(source->sm2), buffer, size);
3782 #endif // TPM_ALG_SM2
3783 #ifdef TPM_ALG_ECSCHNORR
3784 case TPM_ALG_ECSCHNORR:
3785 return TPMS_SIGNATURE_ECSCHNORR_Marshal((TPMS_SIGNATURE_ECSCHNORR *)&(source->ecschnorr), buffer, size);
3786 #endif // TPM_ALG_ECSCHNORR
3787 #ifdef TPM_ALG_ECDAA
3789 return TPMS_SIGNATURE_ECDAA_Marshal((TPMS_SIGNATURE_ECDAA *)&(source->ecdaa), buffer, size);
3790 #endif // TPM_ALG_ECDAA
3793 return TPMT_HA_Marshal((TPMT_HA *)&(source->hmac), buffer, size);
3794 #endif // TPM_ALG_HMAC
3802 // Table 2:173 - Definition of TPMT_SIGNATURE Structure (StructureTable)
3804 TPMT_SIGNATURE_Unmarshal(
3805 TPMT_SIGNATURE *target, BYTE **buffer, INT32 *size, BOOL flag
3809 result = TPMI_ALG_SIG_SCHEME_Unmarshal((TPMI_ALG_SIG_SCHEME *)&(target->sigAlg), buffer, size, flag);
3810 if(result != TPM_RC_SUCCESS)
3812 result = TPMU_SIGNATURE_Unmarshal((TPMU_SIGNATURE *)&(target->signature), buffer, size, (UINT32)target->sigAlg);
3817 TPMT_SIGNATURE_Marshal(
3818 TPMT_SIGNATURE *source, BYTE **buffer, INT32 *size
3822 result = (UINT16)(result + TPMI_ALG_SIG_SCHEME_Marshal((TPMI_ALG_SIG_SCHEME *)&(source->sigAlg), buffer, size));
3823 result = (UINT16)(result + TPMU_SIGNATURE_Marshal((TPMU_SIGNATURE *)&(source->signature), buffer, size, (UINT32)source->sigAlg));
3828 // Table 2:174 - Definition of TPMU_ENCRYPTED_SECRET Union (UnionTable)
3829 // TPMU_ENCRYPTED_SECRET_Unmarshal not referenced
3830 // TPMU_ENCRYPTED_SECRET_Marshal not referenced
3833 // Table 2:175 - Definition of TPM2B_ENCRYPTED_SECRET Structure (StructureTable)
3835 TPM2B_ENCRYPTED_SECRET_Unmarshal(
3836 TPM2B_ENCRYPTED_SECRET *target, BYTE **buffer, INT32 *size
3840 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
3841 if(result != TPM_RC_SUCCESS)
3843 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
3844 if(target->t.size == 0)
3845 return TPM_RC_SUCCESS;
3846 if((target->t.size) > sizeof(TPMU_ENCRYPTED_SECRET))
3848 result = BYTE_Array_Unmarshal((BYTE *)(target->t.secret), buffer, size, (INT32)(target->t.size));
3853 TPM2B_ENCRYPTED_SECRET_Marshal(
3854 TPM2B_ENCRYPTED_SECRET *source, BYTE **buffer, INT32 *size
3858 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
3859 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
3860 if(source->t.size == 0)
3862 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.secret), buffer, size, (INT32)(source->t.size)));
3867 // Table 2:176 - Definition of TPMI_ALG_PUBLIC Type (TypeTable)
3869 TPMI_ALG_PUBLIC_Unmarshal(
3870 TPMI_ALG_PUBLIC *target, BYTE **buffer, INT32 *size
3874 result = TPM_ALG_ID_Unmarshal((TPM_ALG_ID *)target, buffer, size);
3875 if(result != TPM_RC_SUCCESS)
3878 #ifdef TPM_ALG_SYMCIPHER
3879 case TPM_ALG_SYMCIPHER:
3880 #endif // TPM_ALG_SYMCIPHER
3883 #endif // TPM_ALG_RSA
3886 #endif // TPM_ALG_ECC
3887 #ifdef TPM_ALG_KEYEDHASH
3888 case TPM_ALG_KEYEDHASH:
3889 #endif // TPM_ALG_KEYEDHASH
3894 return TPM_RC_SUCCESS;
3897 // TPMI_ALG_PUBLIC_Marshal changed to #define
3900 // Table 2:177 - Definition of TPMU_PUBLIC_ID Union (UnionTable)
3902 TPMU_PUBLIC_ID_Unmarshal(
3903 TPMU_PUBLIC_ID *target, BYTE **buffer, INT32 *size, UINT32 selector
3907 #ifdef TPM_ALG_KEYEDHASH
3908 case TPM_ALG_KEYEDHASH:
3909 return TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)&(target->keyedHash), buffer, size);
3910 #endif // TPM_ALG_KEYEDHASH
3911 #ifdef TPM_ALG_SYMCIPHER
3912 case TPM_ALG_SYMCIPHER:
3913 return TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)&(target->sym), buffer, size);
3914 #endif // TPM_ALG_SYMCIPHER
3917 return TPM2B_PUBLIC_KEY_RSA_Unmarshal((TPM2B_PUBLIC_KEY_RSA *)&(target->rsa), buffer, size);
3918 #endif // TPM_ALG_RSA
3921 return TPMS_ECC_POINT_Unmarshal((TPMS_ECC_POINT *)&(target->ecc), buffer, size);
3922 #endif // TPM_ALG_ECC
3924 return TPM_RC_SELECTOR;
3928 TPMU_PUBLIC_ID_Marshal(
3929 TPMU_PUBLIC_ID *source, BYTE **buffer, INT32 *size, UINT32 selector
3933 #ifdef TPM_ALG_KEYEDHASH
3934 case TPM_ALG_KEYEDHASH:
3935 return TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->keyedHash), buffer, size);
3936 #endif // TPM_ALG_KEYEDHASH
3937 #ifdef TPM_ALG_SYMCIPHER
3938 case TPM_ALG_SYMCIPHER:
3939 return TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->sym), buffer, size);
3940 #endif // TPM_ALG_SYMCIPHER
3943 return TPM2B_PUBLIC_KEY_RSA_Marshal((TPM2B_PUBLIC_KEY_RSA *)&(source->rsa), buffer, size);
3944 #endif // TPM_ALG_RSA
3947 return TPMS_ECC_POINT_Marshal((TPMS_ECC_POINT *)&(source->ecc), buffer, size);
3948 #endif // TPM_ALG_ECC
3954 // Table 2:178 - Definition of TPMS_KEYEDHASH_PARMS Structure (StructureTable)
3955 // TPMS_KEYEDHASH_PARMS_Unmarshal changed to #define
3956 // TPMS_KEYEDHASH_PARMS_Marshal changed to #define
3959 // Table 2:179 - Definition of TPMS_ASYM_PARMS Structure (StructureTable)
3960 // TPMS_ASYM_PARMS_Unmarshal not referenced
3961 // TPMS_ASYM_PARMS_Marshal not referenced
3964 // Table 2:180 - Definition of TPMS_RSA_PARMS Structure (StructureTable)
3967 TPMS_RSA_PARMS_Unmarshal(
3968 TPMS_RSA_PARMS *target, BYTE **buffer, INT32 *size
3972 result = TPMT_SYM_DEF_OBJECT_Unmarshal((TPMT_SYM_DEF_OBJECT *)&(target->symmetric), buffer, size, 1);
3973 if(result != TPM_RC_SUCCESS)
3975 result = TPMT_RSA_SCHEME_Unmarshal((TPMT_RSA_SCHEME *)&(target->scheme), buffer, size, 1);
3976 if(result != TPM_RC_SUCCESS)
3978 result = TPMI_RSA_KEY_BITS_Unmarshal((TPMI_RSA_KEY_BITS *)&(target->keyBits), buffer, size);
3979 if(result != TPM_RC_SUCCESS)
3981 result = UINT32_Unmarshal((UINT32 *)&(target->exponent), buffer, size);
3986 TPMS_RSA_PARMS_Marshal(
3987 TPMS_RSA_PARMS *source, BYTE **buffer, INT32 *size
3991 result = (UINT16)(result + TPMT_SYM_DEF_OBJECT_Marshal((TPMT_SYM_DEF_OBJECT *)&(source->symmetric), buffer, size));
3992 result = (UINT16)(result + TPMT_RSA_SCHEME_Marshal((TPMT_RSA_SCHEME *)&(source->scheme), buffer, size));
3993 result = (UINT16)(result + TPMI_RSA_KEY_BITS_Marshal((TPMI_RSA_KEY_BITS *)&(source->keyBits), buffer, size));
3994 result = (UINT16)(result + UINT32_Marshal((UINT32 *)&(source->exponent), buffer, size));
3998 #endif // TPM_ALG_RSA
4001 // Table 2:181 - Definition of TPMS_ECC_PARMS Structure (StructureTable)
4004 TPMS_ECC_PARMS_Unmarshal(
4005 TPMS_ECC_PARMS *target, BYTE **buffer, INT32 *size
4009 result = TPMT_SYM_DEF_OBJECT_Unmarshal((TPMT_SYM_DEF_OBJECT *)&(target->symmetric), buffer, size, 1);
4010 if(result != TPM_RC_SUCCESS)
4012 result = TPMT_ECC_SCHEME_Unmarshal((TPMT_ECC_SCHEME *)&(target->scheme), buffer, size, 1);
4013 if(result != TPM_RC_SUCCESS)
4015 result = TPMI_ECC_CURVE_Unmarshal((TPMI_ECC_CURVE *)&(target->curveID), buffer, size);
4016 if(result != TPM_RC_SUCCESS)
4018 result = TPMT_KDF_SCHEME_Unmarshal((TPMT_KDF_SCHEME *)&(target->kdf), buffer, size, 1);
4023 TPMS_ECC_PARMS_Marshal(
4024 TPMS_ECC_PARMS *source, BYTE **buffer, INT32 *size
4028 result = (UINT16)(result + TPMT_SYM_DEF_OBJECT_Marshal((TPMT_SYM_DEF_OBJECT *)&(source->symmetric), buffer, size));
4029 result = (UINT16)(result + TPMT_ECC_SCHEME_Marshal((TPMT_ECC_SCHEME *)&(source->scheme), buffer, size));
4030 result = (UINT16)(result + TPMI_ECC_CURVE_Marshal((TPMI_ECC_CURVE *)&(source->curveID), buffer, size));
4031 result = (UINT16)(result + TPMT_KDF_SCHEME_Marshal((TPMT_KDF_SCHEME *)&(source->kdf), buffer, size));
4035 #endif // TPM_ALG_ECC
4038 // Table 2:182 - Definition of TPMU_PUBLIC_PARMS Union (UnionTable)
4040 TPMU_PUBLIC_PARMS_Unmarshal(
4041 TPMU_PUBLIC_PARMS *target, BYTE **buffer, INT32 *size, UINT32 selector
4045 #ifdef TPM_ALG_KEYEDHASH
4046 case TPM_ALG_KEYEDHASH:
4047 return TPMS_KEYEDHASH_PARMS_Unmarshal((TPMS_KEYEDHASH_PARMS *)&(target->keyedHashDetail), buffer, size);
4048 #endif // TPM_ALG_KEYEDHASH
4049 #ifdef TPM_ALG_SYMCIPHER
4050 case TPM_ALG_SYMCIPHER:
4051 return TPMS_SYMCIPHER_PARMS_Unmarshal((TPMS_SYMCIPHER_PARMS *)&(target->symDetail), buffer, size);
4052 #endif // TPM_ALG_SYMCIPHER
4055 return TPMS_RSA_PARMS_Unmarshal((TPMS_RSA_PARMS *)&(target->rsaDetail), buffer, size);
4056 #endif // TPM_ALG_RSA
4059 return TPMS_ECC_PARMS_Unmarshal((TPMS_ECC_PARMS *)&(target->eccDetail), buffer, size);
4060 #endif // TPM_ALG_ECC
4062 return TPM_RC_SELECTOR;
4066 TPMU_PUBLIC_PARMS_Marshal(
4067 TPMU_PUBLIC_PARMS *source, BYTE **buffer, INT32 *size, UINT32 selector
4071 #ifdef TPM_ALG_KEYEDHASH
4072 case TPM_ALG_KEYEDHASH:
4073 return TPMS_KEYEDHASH_PARMS_Marshal((TPMS_KEYEDHASH_PARMS *)&(source->keyedHashDetail), buffer, size);
4074 #endif // TPM_ALG_KEYEDHASH
4075 #ifdef TPM_ALG_SYMCIPHER
4076 case TPM_ALG_SYMCIPHER:
4077 return TPMS_SYMCIPHER_PARMS_Marshal((TPMS_SYMCIPHER_PARMS *)&(source->symDetail), buffer, size);
4078 #endif // TPM_ALG_SYMCIPHER
4081 return TPMS_RSA_PARMS_Marshal((TPMS_RSA_PARMS *)&(source->rsaDetail), buffer, size);
4082 #endif // TPM_ALG_RSA
4085 return TPMS_ECC_PARMS_Marshal((TPMS_ECC_PARMS *)&(source->eccDetail), buffer, size);
4086 #endif // TPM_ALG_ECC
4092 // Table 2:183 - Definition of TPMT_PUBLIC_PARMS Structure (StructureTable)
4094 TPMT_PUBLIC_PARMS_Unmarshal(
4095 TPMT_PUBLIC_PARMS *target, BYTE **buffer, INT32 *size
4099 result = TPMI_ALG_PUBLIC_Unmarshal((TPMI_ALG_PUBLIC *)&(target->type), buffer, size);
4100 if(result != TPM_RC_SUCCESS)
4102 result = TPMU_PUBLIC_PARMS_Unmarshal((TPMU_PUBLIC_PARMS *)&(target->parameters), buffer, size, (UINT32)target->type);
4106 // TPMT_PUBLIC_PARMS_Marshal not referenced
4109 // Table 2:184 - Definition of TPMT_PUBLIC Structure (StructureTable)
4111 TPMT_PUBLIC_Unmarshal(
4112 TPMT_PUBLIC *target, BYTE **buffer, INT32 *size, BOOL flag
4116 result = TPMI_ALG_PUBLIC_Unmarshal((TPMI_ALG_PUBLIC *)&(target->type), buffer, size);
4117 if(result != TPM_RC_SUCCESS)
4119 result = TPMI_ALG_HASH_Unmarshal((TPMI_ALG_HASH *)&(target->nameAlg), buffer, size, flag);
4120 if(result != TPM_RC_SUCCESS)
4122 result = TPMA_OBJECT_Unmarshal((TPMA_OBJECT *)&(target->objectAttributes), buffer, size);
4123 if(result != TPM_RC_SUCCESS)
4125 result = TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)&(target->authPolicy), buffer, size);
4126 if(result != TPM_RC_SUCCESS)
4128 result = TPMU_PUBLIC_PARMS_Unmarshal((TPMU_PUBLIC_PARMS *)&(target->parameters), buffer, size, (UINT32)target->type);
4129 if(result != TPM_RC_SUCCESS)
4131 result = TPMU_PUBLIC_ID_Unmarshal((TPMU_PUBLIC_ID *)&(target->unique), buffer, size, (UINT32)target->type);
4136 TPMT_PUBLIC_Marshal(
4137 TPMT_PUBLIC *source, BYTE **buffer, INT32 *size
4141 result = (UINT16)(result + TPMI_ALG_PUBLIC_Marshal((TPMI_ALG_PUBLIC *)&(source->type), buffer, size));
4142 result = (UINT16)(result + TPMI_ALG_HASH_Marshal((TPMI_ALG_HASH *)&(source->nameAlg), buffer, size));
4143 result = (UINT16)(result + TPMA_OBJECT_Marshal((TPMA_OBJECT *)&(source->objectAttributes), buffer, size));
4144 result = (UINT16)(result + TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->authPolicy), buffer, size));
4145 result = (UINT16)(result + TPMU_PUBLIC_PARMS_Marshal((TPMU_PUBLIC_PARMS *)&(source->parameters), buffer, size, (UINT32)source->type));
4146 result = (UINT16)(result + TPMU_PUBLIC_ID_Marshal((TPMU_PUBLIC_ID *)&(source->unique), buffer, size, (UINT32)source->type));
4151 // Table 2:185 - Definition of TPM2B_PUBLIC Structure (StructureTable)
4153 TPM2B_PUBLIC_Unmarshal(
4154 TPM2B_PUBLIC *target, BYTE **buffer, INT32 *size, BOOL flag
4159 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
4160 if(result != TPM_RC_SUCCESS)
4162 // if size is zero, then the required structure is missing
4163 if(target->t.size == 0)
4166 result = TPMT_PUBLIC_Unmarshal((TPMT_PUBLIC *)&(target->t.publicArea), buffer, size, flag);
4167 if(result != TPM_RC_SUCCESS)
4169 if(target->t.size != (startSize - *size)) return TPM_RC_SIZE;
4170 return TPM_RC_SUCCESS;
4174 TPM2B_PUBLIC_Marshal(
4175 TPM2B_PUBLIC *source, BYTE **buffer, INT32 *size
4179 BYTE *sizeField = *buffer;
4180 // Advance buffer pointer by cononical size of a UINT16
4182 // Marshal the structure
4183 result = (UINT16)(result + TPMT_PUBLIC_Marshal((TPMT_PUBLIC *)&(source->t.publicArea), buffer, size));
4185 result = (UINT16)(result + UINT16_Marshal(&result, &sizeField, size));
4190 // Table 2:186 - Definition of TPM2B_PRIVATE_VENDOR_SPECIFIC Structure (StructureTable)
4191 // TPM2B_PRIVATE_VENDOR_SPECIFIC_Unmarshal not referenced
4192 // TPM2B_PRIVATE_VENDOR_SPECIFIC_Marshal not referenced
4195 // Table 2:187 - Definition of TPMU_SENSITIVE_COMPOSITE Union (UnionTable)
4197 TPMU_SENSITIVE_COMPOSITE_Unmarshal(
4198 TPMU_SENSITIVE_COMPOSITE *target, BYTE **buffer, INT32 *size, UINT32 selector
4204 return TPM2B_PRIVATE_KEY_RSA_Unmarshal((TPM2B_PRIVATE_KEY_RSA *)&(target->rsa), buffer, size);
4205 #endif // TPM_ALG_RSA
4208 return TPM2B_ECC_PARAMETER_Unmarshal((TPM2B_ECC_PARAMETER *)&(target->ecc), buffer, size);
4209 #endif // TPM_ALG_ECC
4210 #ifdef TPM_ALG_KEYEDHASH
4211 case TPM_ALG_KEYEDHASH:
4212 return TPM2B_SENSITIVE_DATA_Unmarshal((TPM2B_SENSITIVE_DATA *)&(target->bits), buffer, size);
4213 #endif // TPM_ALG_KEYEDHASH
4214 #ifdef TPM_ALG_SYMCIPHER
4215 case TPM_ALG_SYMCIPHER:
4216 return TPM2B_SYM_KEY_Unmarshal((TPM2B_SYM_KEY *)&(target->sym), buffer, size);
4217 #endif // TPM_ALG_SYMCIPHER
4219 return TPM_RC_SELECTOR;
4223 TPMU_SENSITIVE_COMPOSITE_Marshal(
4224 TPMU_SENSITIVE_COMPOSITE *source, BYTE **buffer, INT32 *size, UINT32 selector
4230 return TPM2B_PRIVATE_KEY_RSA_Marshal((TPM2B_PRIVATE_KEY_RSA *)&(source->rsa), buffer, size);
4231 #endif // TPM_ALG_RSA
4234 return TPM2B_ECC_PARAMETER_Marshal((TPM2B_ECC_PARAMETER *)&(source->ecc), buffer, size);
4235 #endif // TPM_ALG_ECC
4236 #ifdef TPM_ALG_KEYEDHASH
4237 case TPM_ALG_KEYEDHASH:
4238 return TPM2B_SENSITIVE_DATA_Marshal((TPM2B_SENSITIVE_DATA *)&(source->bits), buffer, size);
4239 #endif // TPM_ALG_KEYEDHASH
4240 #ifdef TPM_ALG_SYMCIPHER
4241 case TPM_ALG_SYMCIPHER:
4242 return TPM2B_SYM_KEY_Marshal((TPM2B_SYM_KEY *)&(source->sym), buffer, size);
4243 #endif // TPM_ALG_SYMCIPHER
4249 // Table 2:188 - Definition of TPMT_SENSITIVE Structure (StructureTable)
4251 TPMT_SENSITIVE_Unmarshal(
4252 TPMT_SENSITIVE *target, BYTE **buffer, INT32 *size
4256 result = TPMI_ALG_PUBLIC_Unmarshal((TPMI_ALG_PUBLIC *)&(target->sensitiveType), buffer, size);
4257 if(result != TPM_RC_SUCCESS)
4259 result = TPM2B_AUTH_Unmarshal((TPM2B_AUTH *)&(target->authValue), buffer, size);
4260 if(result != TPM_RC_SUCCESS)
4262 result = TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)&(target->seedValue), buffer, size);
4263 if(result != TPM_RC_SUCCESS)
4265 result = TPMU_SENSITIVE_COMPOSITE_Unmarshal((TPMU_SENSITIVE_COMPOSITE *)&(target->sensitive), buffer, size, (UINT32)target->sensitiveType);
4270 TPMT_SENSITIVE_Marshal(
4271 TPMT_SENSITIVE *source, BYTE **buffer, INT32 *size
4275 result = (UINT16)(result + TPMI_ALG_PUBLIC_Marshal((TPMI_ALG_PUBLIC *)&(source->sensitiveType), buffer, size));
4276 result = (UINT16)(result + TPM2B_AUTH_Marshal((TPM2B_AUTH *)&(source->authValue), buffer, size));
4277 result = (UINT16)(result + TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->seedValue), buffer, size));
4278 result = (UINT16)(result + TPMU_SENSITIVE_COMPOSITE_Marshal((TPMU_SENSITIVE_COMPOSITE *)&(source->sensitive), buffer, size, (UINT32)source->sensitiveType));
4283 // Table 2:189 - Definition of TPM2B_SENSITIVE Structure (StructureTable)
4285 TPM2B_SENSITIVE_Unmarshal(
4286 TPM2B_SENSITIVE *target, BYTE **buffer, INT32 *size
4291 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
4292 if(result != TPM_RC_SUCCESS)
4294 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
4295 if(target->t.size == 0)
4296 return TPM_RC_SUCCESS;
4298 result = TPMT_SENSITIVE_Unmarshal((TPMT_SENSITIVE *)&(target->t.sensitiveArea), buffer, size);
4299 if(result != TPM_RC_SUCCESS)
4301 if(target->t.size != (startSize - *size)) return TPM_RC_SIZE;
4302 return TPM_RC_SUCCESS;
4305 // TPM2B_SENSITIVE_Marshal not referenced
4308 // Table 2:190 - Definition of _PRIVATE Structure (StructureTable)
4309 // _PRIVATE_Unmarshal not referenced
4310 // _PRIVATE_Marshal not referenced
4313 // Table 2:191 - Definition of TPM2B_PRIVATE Structure (StructureTable)
4315 TPM2B_PRIVATE_Unmarshal(
4316 TPM2B_PRIVATE *target, BYTE **buffer, INT32 *size
4320 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
4321 if(result != TPM_RC_SUCCESS)
4323 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
4324 if(target->t.size == 0)
4325 return TPM_RC_SUCCESS;
4326 if((target->t.size) > sizeof(_PRIVATE))
4328 result = BYTE_Array_Unmarshal((BYTE *)(target->t.buffer), buffer, size, (INT32)(target->t.size));
4333 TPM2B_PRIVATE_Marshal(
4334 TPM2B_PRIVATE *source, BYTE **buffer, INT32 *size
4338 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
4339 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
4340 if(source->t.size == 0)
4342 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.buffer), buffer, size, (INT32)(source->t.size)));
4347 // Table 2:192 - Definition of _ID_OBJECT Structure (StructureTable)
4348 // _ID_OBJECT_Unmarshal not referenced
4349 // _ID_OBJECT_Marshal not referenced
4352 // Table 2:193 - Definition of TPM2B_ID_OBJECT Structure (StructureTable)
4354 TPM2B_ID_OBJECT_Unmarshal(
4355 TPM2B_ID_OBJECT *target, BYTE **buffer, INT32 *size
4359 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
4360 if(result != TPM_RC_SUCCESS)
4362 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
4363 if(target->t.size == 0)
4364 return TPM_RC_SUCCESS;
4365 if((target->t.size) > sizeof(_ID_OBJECT))
4367 result = BYTE_Array_Unmarshal((BYTE *)(target->t.credential), buffer, size, (INT32)(target->t.size));
4372 TPM2B_ID_OBJECT_Marshal(
4373 TPM2B_ID_OBJECT *source, BYTE **buffer, INT32 *size
4377 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
4378 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
4379 if(source->t.size == 0)
4381 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.credential), buffer, size, (INT32)(source->t.size)));
4386 // Table 2:194 - Definition of TPM_NV_INDEX Bits (BitsTable)
4387 // TPM_NV_INDEX_Unmarshal not referenced
4388 // TPM_NV_INDEX_Marshal not referenced
4391 // Table 2:195 - Definition of TPMA_NV Bits (BitsTable)
4394 TPMA_NV *target, BYTE **buffer, INT32 *size
4398 result = UINT32_Unmarshal((UINT32 *)target, buffer, size);
4399 if(result != TPM_RC_SUCCESS)
4401 if(*((UINT32 *)target) & (UINT32)0x01f00380)
4402 return TPM_RC_RESERVED_BITS;
4403 return TPM_RC_SUCCESS;
4406 // TPMA_NV_Marshal changed to #define
4409 // Table 2:196 - Definition of TPMS_NV_PUBLIC Structure (StructureTable)
4411 TPMS_NV_PUBLIC_Unmarshal(
4412 TPMS_NV_PUBLIC *target, BYTE **buffer, INT32 *size
4416 result = TPMI_RH_NV_INDEX_Unmarshal((TPMI_RH_NV_INDEX *)&(target->nvIndex), buffer, size);
4417 if(result != TPM_RC_SUCCESS)
4419 result = TPMI_ALG_HASH_Unmarshal((TPMI_ALG_HASH *)&(target->nameAlg), buffer, size, 0);
4420 if(result != TPM_RC_SUCCESS)
4422 result = TPMA_NV_Unmarshal((TPMA_NV *)&(target->attributes), buffer, size);
4423 if(result != TPM_RC_SUCCESS)
4425 result = TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)&(target->authPolicy), buffer, size);
4426 if(result != TPM_RC_SUCCESS)
4428 result = UINT16_Unmarshal((UINT16 *)&(target->dataSize), buffer, size);
4429 if(result != TPM_RC_SUCCESS)
4431 if( (target->dataSize> MAX_NV_INDEX_SIZE))
4433 return TPM_RC_SUCCESS;
4437 TPMS_NV_PUBLIC_Marshal(
4438 TPMS_NV_PUBLIC *source, BYTE **buffer, INT32 *size
4442 result = (UINT16)(result + TPMI_RH_NV_INDEX_Marshal((TPMI_RH_NV_INDEX *)&(source->nvIndex), buffer, size));
4443 result = (UINT16)(result + TPMI_ALG_HASH_Marshal((TPMI_ALG_HASH *)&(source->nameAlg), buffer, size));
4444 result = (UINT16)(result + TPMA_NV_Marshal((TPMA_NV *)&(source->attributes), buffer, size));
4445 result = (UINT16)(result + TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->authPolicy), buffer, size));
4446 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->dataSize), buffer, size));
4451 // Table 2:197 - Definition of TPM2B_NV_PUBLIC Structure (StructureTable)
4453 TPM2B_NV_PUBLIC_Unmarshal(
4454 TPM2B_NV_PUBLIC *target, BYTE **buffer, INT32 *size
4459 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
4460 if(result != TPM_RC_SUCCESS)
4462 // if size is zero, then the required structure is missing
4463 if(target->t.size == 0)
4466 result = TPMS_NV_PUBLIC_Unmarshal((TPMS_NV_PUBLIC *)&(target->t.nvPublic), buffer, size);
4467 if(result != TPM_RC_SUCCESS)
4469 if(target->t.size != (startSize - *size)) return TPM_RC_SIZE;
4470 return TPM_RC_SUCCESS;
4474 TPM2B_NV_PUBLIC_Marshal(
4475 TPM2B_NV_PUBLIC *source, BYTE **buffer, INT32 *size
4479 BYTE *sizeField = *buffer;
4480 // Advance buffer pointer by cononical size of a UINT16
4482 // Marshal the structure
4483 result = (UINT16)(result + TPMS_NV_PUBLIC_Marshal((TPMS_NV_PUBLIC *)&(source->t.nvPublic), buffer, size));
4485 result = (UINT16)(result + UINT16_Marshal(&result, &sizeField, size));
4490 // Table 2:198 - Definition of TPM2B_CONTEXT_SENSITIVE Structure (StructureTable)
4491 // TPM2B_CONTEXT_SENSITIVE_Unmarshal not referenced
4492 // TPM2B_CONTEXT_SENSITIVE_Marshal not referenced
4495 // Table 2:199 - Definition of TPMS_CONTEXT_DATA Structure (StructureTable)
4496 // TPMS_CONTEXT_DATA_Unmarshal not referenced
4497 // TPMS_CONTEXT_DATA_Marshal not referenced
4500 // Table 2:200 - Definition of TPM2B_CONTEXT_DATA Structure (StructureTable)
4502 TPM2B_CONTEXT_DATA_Unmarshal(
4503 TPM2B_CONTEXT_DATA *target, BYTE **buffer, INT32 *size
4507 result = UINT16_Unmarshal((UINT16 *)&(target->t.size), buffer, size);
4508 if(result != TPM_RC_SUCCESS)
4510 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
4511 if(target->t.size == 0)
4512 return TPM_RC_SUCCESS;
4513 if((target->t.size) > sizeof(TPMS_CONTEXT_DATA))
4515 result = BYTE_Array_Unmarshal((BYTE *)(target->t.buffer), buffer, size, (INT32)(target->t.size));
4520 TPM2B_CONTEXT_DATA_Marshal(
4521 TPM2B_CONTEXT_DATA *source, BYTE **buffer, INT32 *size
4525 result = (UINT16)(result + UINT16_Marshal((UINT16 *)&(source->t.size), buffer, size));
4526 // if size equal to 0, the rest of the structure is a zero buffer. Stop processing
4527 if(source->t.size == 0)
4529 result = (UINT16)(result + BYTE_Array_Marshal((BYTE *)(source->t.buffer), buffer, size, (INT32)(source->t.size)));
4534 // Table 2:201 - Definition of TPMS_CONTEXT Structure (StructureTable)
4536 TPMS_CONTEXT_Unmarshal(
4537 TPMS_CONTEXT *target, BYTE **buffer, INT32 *size
4541 result = UINT64_Unmarshal((UINT64 *)&(target->sequence), buffer, size);
4542 if(result != TPM_RC_SUCCESS)
4544 result = TPMI_DH_CONTEXT_Unmarshal((TPMI_DH_CONTEXT *)&(target->savedHandle), buffer, size);
4545 if(result != TPM_RC_SUCCESS)
4547 result = TPMI_RH_HIERARCHY_Unmarshal((TPMI_RH_HIERARCHY *)&(target->hierarchy), buffer, size, 1);
4548 if(result != TPM_RC_SUCCESS)
4550 result = TPM2B_CONTEXT_DATA_Unmarshal((TPM2B_CONTEXT_DATA *)&(target->contextBlob), buffer, size);
4555 TPMS_CONTEXT_Marshal(
4556 TPMS_CONTEXT *source, BYTE **buffer, INT32 *size
4560 result = (UINT16)(result + UINT64_Marshal((UINT64 *)&(source->sequence), buffer, size));
4561 result = (UINT16)(result + TPMI_DH_CONTEXT_Marshal((TPMI_DH_CONTEXT *)&(source->savedHandle), buffer, size));
4562 result = (UINT16)(result + TPMI_RH_HIERARCHY_Marshal((TPMI_RH_HIERARCHY *)&(source->hierarchy), buffer, size));
4563 result = (UINT16)(result + TPM2B_CONTEXT_DATA_Marshal((TPM2B_CONTEXT_DATA *)&(source->contextBlob), buffer, size));
4568 // Table 2:203 - Definition of TPMS_CREATION_DATA Structure (StructureTable)
4569 // TPMS_CREATION_DATA_Unmarshal not referenced
4571 TPMS_CREATION_DATA_Marshal(
4572 TPMS_CREATION_DATA *source, BYTE **buffer, INT32 *size
4576 result = (UINT16)(result + TPML_PCR_SELECTION_Marshal((TPML_PCR_SELECTION *)&(source->pcrSelect), buffer, size));
4577 result = (UINT16)(result + TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)&(source->pcrDigest), buffer, size));
4578 result = (UINT16)(result + TPMA_LOCALITY_Marshal((TPMA_LOCALITY *)&(source->locality), buffer, size));
4579 result = (UINT16)(result + TPM_ALG_ID_Marshal((TPM_ALG_ID *)&(source->parentNameAlg), buffer, size));
4580 result = (UINT16)(result + TPM2B_NAME_Marshal((TPM2B_NAME *)&(source->parentName), buffer, size));
4581 result = (UINT16)(result + TPM2B_NAME_Marshal((TPM2B_NAME *)&(source->parentQualifiedName), buffer, size));
4582 result = (UINT16)(result + TPM2B_DATA_Marshal((TPM2B_DATA *)&(source->outsideInfo), buffer, size));
4587 // Table 2:204 - Definition of TPM2B_CREATION_DATA Structure (StructureTable)
4588 // TPM2B_CREATION_DATA_Unmarshal not referenced
4590 TPM2B_CREATION_DATA_Marshal(
4591 TPM2B_CREATION_DATA *source, BYTE **buffer, INT32 *size
4595 BYTE *sizeField = *buffer;
4596 // Advance buffer pointer by cononical size of a UINT16
4598 // Marshal the structure
4599 result = (UINT16)(result + TPMS_CREATION_DATA_Marshal((TPMS_CREATION_DATA *)&(source->t.creationData), buffer, size));
4601 result = (UINT16)(result + UINT16_Marshal(&result, &sizeField, size));
4605 // Array Marshal/Unmarshal for TPMS_TAGGED_PROPERTY
4606 // TPMS_TAGGED_PROPERTY_Array_Unmarshal not referenced
4608 TPMS_TAGGED_PROPERTY_Array_Marshal(
4609 TPMS_TAGGED_PROPERTY *source, BYTE **buffer, INT32 *size, INT32 count
4614 for(i = 0; i < count; i++) {
4615 result = (UINT16)(result + TPMS_TAGGED_PROPERTY_Marshal(&source[i], buffer, size));
4620 // Array Marshal/Unmarshal for TPMS_ALG_PROPERTY
4621 // TPMS_ALG_PROPERTY_Array_Unmarshal not referenced
4623 TPMS_ALG_PROPERTY_Array_Marshal(
4624 TPMS_ALG_PROPERTY *source, BYTE **buffer, INT32 *size, INT32 count
4629 for(i = 0; i < count; i++) {
4630 result = (UINT16)(result + TPMS_ALG_PROPERTY_Marshal(&source[i], buffer, size));
4635 // Array Marshal/Unmarshal for TPMS_PCR_SELECTION
4637 TPMS_PCR_SELECTION_Array_Unmarshal(
4638 TPMS_PCR_SELECTION *target, BYTE **buffer, INT32 *size, INT32 count
4643 for(i = 0; i < count; i++) {
4644 result = TPMS_PCR_SELECTION_Unmarshal(&target[i], buffer, size);
4645 if(result != TPM_RC_SUCCESS)
4648 return TPM_RC_SUCCESS;
4652 TPMS_PCR_SELECTION_Array_Marshal(
4653 TPMS_PCR_SELECTION *source, BYTE **buffer, INT32 *size, INT32 count
4658 for(i = 0; i < count; i++) {
4659 result = (UINT16)(result + TPMS_PCR_SELECTION_Marshal(&source[i], buffer, size));
4664 // Array Marshal/Unmarshal for TPMT_HA
4666 TPMT_HA_Array_Unmarshal(
4667 TPMT_HA *target, BYTE **buffer, INT32 *size, BOOL flag, INT32 count
4672 for(i = 0; i < count; i++) {
4673 result = TPMT_HA_Unmarshal(&target[i], buffer, size, flag);
4674 if(result != TPM_RC_SUCCESS)
4677 return TPM_RC_SUCCESS;
4681 TPMT_HA_Array_Marshal(
4682 TPMT_HA *source, BYTE **buffer, INT32 *size, INT32 count
4687 for(i = 0; i < count; i++) {
4688 result = (UINT16)(result + TPMT_HA_Marshal(&source[i], buffer, size));
4693 // Array Marshal/Unmarshal for BYTE
4695 BYTE_Array_Unmarshal(
4696 BYTE *target, BYTE **buffer, INT32 *size, INT32 count
4701 for(i = 0; i < count; i++) {
4702 result = BYTE_Unmarshal(&target[i], buffer, size);
4703 if(result != TPM_RC_SUCCESS)
4706 return TPM_RC_SUCCESS;
4711 BYTE *source, BYTE **buffer, INT32 *size, INT32 count
4716 for(i = 0; i < count; i++) {
4717 result = (UINT16)(result + BYTE_Marshal(&source[i], buffer, size));
4722 // Array Marshal/Unmarshal for TPM_HANDLE
4723 // TPM_HANDLE_Array_Unmarshal not referenced
4725 TPM_HANDLE_Array_Marshal(
4726 TPM_HANDLE *source, BYTE **buffer, INT32 *size, INT32 count
4731 for(i = 0; i < count; i++) {
4732 result = (UINT16)(result + TPM_HANDLE_Marshal(&source[i], buffer, size));
4737 // Array Marshal/Unmarshal for TPMA_CC
4738 // TPMA_CC_Array_Unmarshal not referenced
4740 TPMA_CC_Array_Marshal(
4741 TPMA_CC *source, BYTE **buffer, INT32 *size, INT32 count
4746 for(i = 0; i < count; i++) {
4747 result = (UINT16)(result + TPMA_CC_Marshal(&source[i], buffer, size));
4752 // Array Marshal/Unmarshal for TPMS_TAGGED_PCR_SELECT
4753 // TPMS_TAGGED_PCR_SELECT_Array_Unmarshal not referenced
4755 TPMS_TAGGED_PCR_SELECT_Array_Marshal(
4756 TPMS_TAGGED_PCR_SELECT *source, BYTE **buffer, INT32 *size, INT32 count
4761 for(i = 0; i < count; i++) {
4762 result = (UINT16)(result + TPMS_TAGGED_PCR_SELECT_Marshal(&source[i], buffer, size));
4767 // Array Marshal/Unmarshal for TPM_ECC_CURVE
4769 // TPM_ECC_CURVE_Array_Unmarshal not referenced
4771 TPM_ECC_CURVE_Array_Marshal(
4772 TPM_ECC_CURVE *source, BYTE **buffer, INT32 *size, INT32 count
4777 for(i = 0; i < count; i++) {
4778 result = (UINT16)(result + TPM_ECC_CURVE_Marshal(&source[i], buffer, size));
4783 #endif // TPM_ALG_ECC
4784 // Array Marshal/Unmarshal for TPM2B_DIGEST
4786 TPM2B_DIGEST_Array_Unmarshal(
4787 TPM2B_DIGEST *target, BYTE **buffer, INT32 *size, INT32 count
4792 for(i = 0; i < count; i++) {
4793 result = TPM2B_DIGEST_Unmarshal(&target[i], buffer, size);
4794 if(result != TPM_RC_SUCCESS)
4797 return TPM_RC_SUCCESS;
4801 TPM2B_DIGEST_Array_Marshal(
4802 TPM2B_DIGEST *source, BYTE **buffer, INT32 *size, INT32 count
4807 for(i = 0; i < count; i++) {
4808 result = (UINT16)(result + TPM2B_DIGEST_Marshal(&source[i], buffer, size));
4813 // Array Marshal/Unmarshal for TPM_CC
4815 TPM_CC_Array_Unmarshal(
4816 TPM_CC *target, BYTE **buffer, INT32 *size, INT32 count
4821 for(i = 0; i < count; i++) {
4822 result = TPM_CC_Unmarshal(&target[i], buffer, size);
4823 if(result != TPM_RC_SUCCESS)
4826 return TPM_RC_SUCCESS;
4830 TPM_CC_Array_Marshal(
4831 TPM_CC *source, BYTE **buffer, INT32 *size, INT32 count
4836 for(i = 0; i < count; i++) {
4837 result = (UINT16)(result + TPM_CC_Marshal(&source[i], buffer, size));
4842 // Array Marshal/Unmarshal for TPM_ALG_ID
4844 TPM_ALG_ID_Array_Unmarshal(
4845 TPM_ALG_ID *target, BYTE **buffer, INT32 *size, INT32 count
4850 for(i = 0; i < count; i++) {
4851 result = TPM_ALG_ID_Unmarshal(&target[i], buffer, size);
4852 if(result != TPM_RC_SUCCESS)
4855 return TPM_RC_SUCCESS;
4859 TPM_ALG_ID_Array_Marshal(
4860 TPM_ALG_ID *source, BYTE **buffer, INT32 *size, INT32 count
4865 for(i = 0; i < count; i++) {
4866 result = (UINT16)(result + TPM_ALG_ID_Marshal(&source[i], buffer, size));