1 /* Microsoft Reference Implementation for TPM 2.0
2  *
3  *  The copyright in this software is being made available under the BSD License,
4  *  included below. This software may be subject to other third party and
5  *  contributor rights, including patent rights, and no such rights are granted
6  *  under this license.
7  *
8  *  Copyright (c) Microsoft Corporation
9  *
10  *  All rights reserved.
11  *
12  *  BSD License
13  *
14  *  Redistribution and use in source and binary forms, with or without modification,
15  *  are permitted provided that the following conditions are met:
16  *
17  *  Redistributions of source code must retain the above copyright notice, this list
18  *  of conditions and the following disclaimer.
19  *
20  *  Redistributions in binary form must reproduce the above copyright notice, this
21  *  list of conditions and the following disclaimer in the documentation and/or
22  *  other materials provided with the distribution.
23  *
24  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ""AS IS""
25  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26  *  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27  *  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
28  *  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29  *  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30  *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
31  *  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32  *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
33  *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34  */
35 /*(Auto-generated)
36  *  Created by NewMarshal; Version 1.4 Apr 7, 2019
37  *  Date: Mar  6, 2020  Time: 01:50:10PM
38  */
39 
40 #ifndef _TABLE_MARSHAL_TYPES_H_
41 #define _TABLE_MARSHAL_TYPES_H_
42 
43 typedef UINT16      marshalIndex_t;
44 
45 //*** Structure Entries
46 // A structure contains a list of elements to unmarshal. Each of the entries is a
47 // UINT16. The structure descriptor is:
48 
49 // The 'values' array contains indicators for the things to marshal. The 'elements'
50 // parameter indicates how many different entities are unmarshaled. This number
51 // nominally corresponds to the number of rows in the Part 2 table that describes
52 // the structure (the number of rows minus the title row and any error code rows).
53 
54 // A schematic of a simple structure entry is shown here but the values are not
55 // actually in a structure. As shown, the third value is the offset in the structure
56 // where the value is placed when unmarshaled, or fetched from when marshaling. This
57 // is sufficient when the element type indicated by 'index' is always a simple type
58 // and never a union or array.This is just shown for illustrative purposes.
59 typedef struct simpleStructureEntry_t {
60     UINT16          qualifiers;         // indicates the type of entry (array, union
61                                         // etc.)
62     marshalIndex_t  index;              // the index into the appropriate array of
63                                         //  the descriptor of this type
64     UINT16          offset;             // where this comes from or is placed
65 } simpleStructureEntry_t;
66 
67 typedef const struct UintMarshal_mst
68 {
69     UINT8           marshalType;        // UINT_MTYPE
70     UINT8           modifiers;          // size and signed indicator.
71 } UintMarshal_mst;
72 
73 typedef struct UnionMarshal_mst
74 {
75     UINT8           countOfselectors;
76     UINT8           modifiers;          // NULL_SELECTOR
77     UINT16          offsetOfUnmarshalTypes;
78     UINT32          selectors[1];
79 //    UINT16          marshalingTypes[1]; // This is not part of the prototypical
80                                           //    entry. It is here to show where the
81                                           //    marshaling types will be in a union
82 } UnionMarshal_mst;
83 
84 typedef struct NullUnionMarshal_mst
85 {
86     UINT8           count;
87 } NullUnionMarshal_mst;
88 
89 typedef struct MarshalHeader_mst
90 {
91     UINT8           marshalType;        // VALUES_MTYPE
92     UINT8           modifiers;
93     UINT8           errorCode;
94 } MarshalHeader_mst;
95 
96 typedef const struct ArrayMarshal_mst   // used in a structure
97 {
98     marshalIndex_t  type;
99     UINT16          stride;
100 } ArrayMarshal_mst;
101 
102 typedef const struct StructMarshal_mst
103 {
104     UINT8           marshalType;        // STRUCTURE_MTYPE
105     UINT8           elements;
106     UINT16          values[1];          // three times elements
107 } StructMarshal_mst;
108 
109 typedef const struct ValuesMarshal_mst
110 {
111     UINT8           marshalType;        // VALUES_MTYPE
112     UINT8           modifiers;
113     UINT8           errorCode;
114     UINT8           ranges;
115     UINT8           singles;
116     UINT32          values[1];
117 } ValuesMarshal_mst;
118 
119 typedef const struct TableMarshal_mst
120 {
121     UINT8           marshalType;        // TABLE_MTYPE
122     UINT8           modifiers;
123     UINT8           errorCode;
124     UINT8           singles;
125     UINT32          values[1];
126 } TableMarshal_mst;
127 
128 typedef const struct MinMaxMarshal_mst
129 {
130     UINT8           marshalType;        // MIN_MAX_MTYPE
131     UINT8           modifiers;
132     UINT8           errorCode;
133     UINT32          values[2];
134 } MinMaxMarshal_mst;
135 
136 typedef const struct Tpm2bMarshal_mst
137 {
138     UINT8           unmarshalType;      // TPM2B_MTYPE
139     UINT16          sizeIndex;          // reference to type for this size value
140 } Tpm2bMarshal_mst;
141 
142 typedef const struct Tpm2bsMarshal_mst
143 {
144     UINT8           unmarshalType;      // TPM2BS_MTYPE
145     UINT8           modifiers;          // size= and offset (2 - 7)
146     UINT16          sizeIndex;          // index of the size value;
147     UINT16          dataIndex;          // the structure
148 } Tpm2bsMarshal_mst;
149 
150 typedef const struct ListMarshal_mst
151 {
152     UINT8           unmarshalType;      // LIST_MTYPE (for TPML)
153     UINT8           modifiers;          // size offset 2-7
154     UINT16          sizeIndex;          // reference to the minmax structure that
155                                         //      unmarshals the size parameter
156     UINT16          arrayRef;           // reference to an array definition (type
157                                         //  and stride)
158 } ListMarshal_mst;
159 
160 typedef const struct AttributesMarshal_mst
161 {
162     UINT8           unmarashalType;     // ATTRIBUTE_MTYPE
163     UINT8           modifiers;          // size (ONE_BYTES, TWO_BYTES, or FOUR_BYTES
164     UINT32          attributeMask;      // the values that must be zero.
165 } AttributesMarshal_mst;
166 
167 typedef const struct CompositeMarshal_mst
168 {
169     UINT8           unmashalType;       // COMPOSITE_MTYPE
170     UINT8           modifiers;          // number of entries and size
171     marshalIndex_t  types[1];           // array of unmarshaling types
172 } CompositeMarshal_mst;
173 
174 typedef const struct TPM_ECC_CURVE_mst {
175     UINT8       marshalType;
176     UINT8       modifiers;
177     UINT8       errorCode;
178     UINT32      values[4];
179 } TPM_ECC_CURVE_mst;
180 
181 typedef const struct TPM_CLOCK_ADJUST_mst {
182     UINT8       marshalType;
183     UINT8       modifiers;
184     UINT8       errorCode;
185     UINT32      values[2];
186 } TPM_CLOCK_ADJUST_mst;
187 
188 typedef const struct TPM_EO_mst {
189     UINT8       marshalType;
190     UINT8       modifiers;
191     UINT8       errorCode;
192     UINT32      values[2];
193 } TPM_EO_mst;
194 
195 typedef const struct TPM_SU_mst {
196     UINT8         marshalType;
197     UINT8         modifiers;
198     UINT8         errorCode;
199     UINT8         entries;
200     UINT32        values[2];
201 } TPM_SU_mst;
202 
203 typedef const struct TPM_SE_mst {
204     UINT8         marshalType;
205     UINT8         modifiers;
206     UINT8         errorCode;
207     UINT8         entries;
208     UINT32        values[3];
209 } TPM_SE_mst;
210 
211 typedef const struct TPM_CAP_mst {
212     UINT8         marshalType;
213     UINT8         modifiers;
214     UINT8         errorCode;
215     UINT8         ranges;
216     UINT8         singles;
217     UINT32        values[3];
218 } TPM_CAP_mst;
219 
220 typedef const struct TPMI_YES_NO_mst {
221     UINT8         marshalType;
222     UINT8         modifiers;
223     UINT8         errorCode;
224     UINT8         entries;
225     UINT32        values[2];
226 } TPMI_YES_NO_mst;
227 
228 typedef const struct TPMI_DH_OBJECT_mst {
229     UINT8         marshalType;
230     UINT8         modifiers;
231     UINT8         errorCode;
232     UINT8         ranges;
233     UINT8         singles;
234     UINT32        values[5];
235 } TPMI_DH_OBJECT_mst;
236 
237 typedef const struct TPMI_DH_PARENT_mst {
238     UINT8         marshalType;
239     UINT8         modifiers;
240     UINT8         errorCode;
241     UINT8         ranges;
242     UINT8         singles;
243     UINT32        values[8];
244 } TPMI_DH_PARENT_mst;
245 
246 typedef const struct TPMI_DH_PERSISTENT_mst {
247     UINT8       marshalType;
248     UINT8       modifiers;
249     UINT8       errorCode;
250     UINT32      values[2];
251 } TPMI_DH_PERSISTENT_mst;
252 
253 typedef const struct TPMI_DH_ENTITY_mst {
254     UINT8         marshalType;
255     UINT8         modifiers;
256     UINT8         errorCode;
257     UINT8         ranges;
258     UINT8         singles;
259     UINT32        values[15];
260 } TPMI_DH_ENTITY_mst;
261 
262 typedef const struct TPMI_DH_PCR_mst {
263     UINT8       marshalType;
264     UINT8       modifiers;
265     UINT8       errorCode;
266     UINT32      values[3];
267 } TPMI_DH_PCR_mst;
268 
269 typedef const struct TPMI_SH_AUTH_SESSION_mst {
270     UINT8         marshalType;
271     UINT8         modifiers;
272     UINT8         errorCode;
273     UINT8         ranges;
274     UINT8         singles;
275     UINT32        values[5];
276 } TPMI_SH_AUTH_SESSION_mst;
277 
278 typedef const struct TPMI_SH_HMAC_mst {
279     UINT8       marshalType;
280     UINT8       modifiers;
281     UINT8       errorCode;
282     UINT32      values[2];
283 } TPMI_SH_HMAC_mst;
284 
285 typedef const struct TPMI_SH_POLICY_mst {
286     UINT8       marshalType;
287     UINT8       modifiers;
288     UINT8       errorCode;
289     UINT32      values[2];
290 } TPMI_SH_POLICY_mst;
291 
292 typedef const struct TPMI_DH_CONTEXT_mst {
293     UINT8         marshalType;
294     UINT8         modifiers;
295     UINT8         errorCode;
296     UINT8         ranges;
297     UINT8         singles;
298     UINT32        values[6];
299 } TPMI_DH_CONTEXT_mst;
300 
301 typedef const struct TPMI_DH_SAVED_mst {
302     UINT8         marshalType;
303     UINT8         modifiers;
304     UINT8         errorCode;
305     UINT8         ranges;
306     UINT8         singles;
307     UINT32        values[7];
308 } TPMI_DH_SAVED_mst;
309 
310 typedef const struct TPMI_RH_HIERARCHY_mst {
311     UINT8         marshalType;
312     UINT8         modifiers;
313     UINT8         errorCode;
314     UINT8         entries;
315     UINT32        values[4];
316 } TPMI_RH_HIERARCHY_mst;
317 
318 typedef const struct TPMI_RH_ENABLES_mst {
319     UINT8         marshalType;
320     UINT8         modifiers;
321     UINT8         errorCode;
322     UINT8         entries;
323     UINT32        values[5];
324 } TPMI_RH_ENABLES_mst;
325 
326 typedef const struct TPMI_RH_HIERARCHY_AUTH_mst {
327     UINT8         marshalType;
328     UINT8         modifiers;
329     UINT8         errorCode;
330     UINT8         entries;
331     UINT32        values[4];
332 } TPMI_RH_HIERARCHY_AUTH_mst;
333 
334 typedef const struct TPMI_RH_HIERARCHY_POLICY_mst {
335     UINT8         marshalType;
336     UINT8         modifiers;
337     UINT8         errorCode;
338     UINT8         ranges;
339     UINT8         singles;
340     UINT32        values[6];
341 } TPMI_RH_HIERARCHY_POLICY_mst;
342 
343 typedef const struct TPMI_RH_PLATFORM_mst {
344     UINT8         marshalType;
345     UINT8         modifiers;
346     UINT8         errorCode;
347     UINT8         entries;
348     UINT32        values[1];
349 } TPMI_RH_PLATFORM_mst;
350 
351 typedef const struct TPMI_RH_OWNER_mst {
352     UINT8         marshalType;
353     UINT8         modifiers;
354     UINT8         errorCode;
355     UINT8         entries;
356     UINT32        values[2];
357 } TPMI_RH_OWNER_mst;
358 
359 typedef const struct TPMI_RH_ENDORSEMENT_mst {
360     UINT8         marshalType;
361     UINT8         modifiers;
362     UINT8         errorCode;
363     UINT8         entries;
364     UINT32        values[2];
365 } TPMI_RH_ENDORSEMENT_mst;
366 
367 typedef const struct TPMI_RH_PROVISION_mst {
368     UINT8         marshalType;
369     UINT8         modifiers;
370     UINT8         errorCode;
371     UINT8         entries;
372     UINT32        values[2];
373 } TPMI_RH_PROVISION_mst;
374 
375 typedef const struct TPMI_RH_CLEAR_mst {
376     UINT8         marshalType;
377     UINT8         modifiers;
378     UINT8         errorCode;
379     UINT8         entries;
380     UINT32        values[2];
381 } TPMI_RH_CLEAR_mst;
382 
383 typedef const struct TPMI_RH_NV_AUTH_mst {
384     UINT8         marshalType;
385     UINT8         modifiers;
386     UINT8         errorCode;
387     UINT8         ranges;
388     UINT8         singles;
389     UINT32        values[4];
390 } TPMI_RH_NV_AUTH_mst;
391 
392 typedef const struct TPMI_RH_LOCKOUT_mst {
393     UINT8         marshalType;
394     UINT8         modifiers;
395     UINT8         errorCode;
396     UINT8         entries;
397     UINT32        values[1];
398 } TPMI_RH_LOCKOUT_mst;
399 
400 typedef const struct TPMI_RH_NV_INDEX_mst {
401     UINT8       marshalType;
402     UINT8       modifiers;
403     UINT8       errorCode;
404     UINT32      values[2];
405 } TPMI_RH_NV_INDEX_mst;
406 
407 typedef const struct TPMI_RH_AC_mst {
408     UINT8       marshalType;
409     UINT8       modifiers;
410     UINT8       errorCode;
411     UINT32      values[2];
412 } TPMI_RH_AC_mst;
413 
414 typedef const struct TPMI_RH_ACT_mst {
415     UINT8       marshalType;
416     UINT8       modifiers;
417     UINT8       errorCode;
418     UINT32      values[2];
419 } TPMI_RH_ACT_mst;
420 
421 typedef const struct TPMI_ALG_HASH_mst {
422     UINT8       marshalType;
423     UINT8       modifiers;
424     UINT8       errorCode;
425     UINT32      values[5];
426 } TPMI_ALG_HASH_mst;
427 
428 typedef const struct TPMI_ALG_ASYM_mst {
429     UINT8       marshalType;
430     UINT8       modifiers;
431     UINT8       errorCode;
432     UINT32      values[5];
433 } TPMI_ALG_ASYM_mst;
434 
435 typedef const struct TPMI_ALG_SYM_mst {
436     UINT8       marshalType;
437     UINT8       modifiers;
438     UINT8       errorCode;
439     UINT32      values[5];
440 } TPMI_ALG_SYM_mst;
441 
442 typedef const struct TPMI_ALG_SYM_OBJECT_mst {
443     UINT8       marshalType;
444     UINT8       modifiers;
445     UINT8       errorCode;
446     UINT32      values[5];
447 } TPMI_ALG_SYM_OBJECT_mst;
448 
449 typedef const struct TPMI_ALG_SYM_MODE_mst {
450     UINT8       marshalType;
451     UINT8       modifiers;
452     UINT8       errorCode;
453     UINT32      values[4];
454 } TPMI_ALG_SYM_MODE_mst;
455 
456 typedef const struct TPMI_ALG_KDF_mst {
457     UINT8       marshalType;
458     UINT8       modifiers;
459     UINT8       errorCode;
460     UINT32      values[4];
461 } TPMI_ALG_KDF_mst;
462 
463 typedef const struct TPMI_ALG_SIG_SCHEME_mst {
464     UINT8       marshalType;
465     UINT8       modifiers;
466     UINT8       errorCode;
467     UINT32      values[4];
468 } TPMI_ALG_SIG_SCHEME_mst;
469 
470 typedef const struct TPMI_ECC_KEY_EXCHANGE_mst {
471     UINT8       marshalType;
472     UINT8       modifiers;
473     UINT8       errorCode;
474     UINT32      values[4];
475 } TPMI_ECC_KEY_EXCHANGE_mst;
476 
477 typedef const struct TPMI_ST_COMMAND_TAG_mst {
478     UINT8         marshalType;
479     UINT8         modifiers;
480     UINT8         errorCode;
481     UINT8         entries;
482     UINT32        values[2];
483 } TPMI_ST_COMMAND_TAG_mst;
484 
485 typedef const struct TPMI_ALG_MAC_SCHEME_mst {
486     UINT8       marshalType;
487     UINT8       modifiers;
488     UINT8       errorCode;
489     UINT32      values[5];
490 } TPMI_ALG_MAC_SCHEME_mst;
491 
492 typedef const struct TPMI_ALG_CIPHER_MODE_mst {
493     UINT8       marshalType;
494     UINT8       modifiers;
495     UINT8       errorCode;
496     UINT32      values[4];
497 } TPMI_ALG_CIPHER_MODE_mst;
498 
499 typedef const struct TPMS_EMPTY_mst
500 {
501     UINT8     marshalType;
502     UINT8     elements;
503     UINT16    values[3];
504 } TPMS_EMPTY_mst;
505 
506 typedef const struct TPMS_ALGORITHM_DESCRIPTION_mst
507 {
508     UINT8     marshalType;
509     UINT8     elements;
510     UINT16    values[6];
511 } TPMS_ALGORITHM_DESCRIPTION_mst;
512 
513 typedef struct TPMU_HA_mst
514 {
515     BYTE            countOfselectors;
516     BYTE            modifiers;
517     UINT16        offsetOfUnmarshalTypes;
518     UINT32        selectors[9];
519     UINT16        marshalingTypes[9];
520 } TPMU_HA_mst;
521 
522 typedef const struct TPMT_HA_mst
523 {
524     UINT8     marshalType;
525     UINT8     elements;
526     UINT16    values[6];
527 } TPMT_HA_mst;
528 
529 typedef const struct TPMS_PCR_SELECT_mst
530 {
531     UINT8     marshalType;
532     UINT8     elements;
533     UINT16    values[6];
534 } TPMS_PCR_SELECT_mst;
535 
536 typedef const struct TPMS_PCR_SELECTION_mst
537 {
538     UINT8     marshalType;
539     UINT8     elements;
540     UINT16    values[9];
541 } TPMS_PCR_SELECTION_mst;
542 
543 typedef const struct TPMT_TK_CREATION_mst
544 {
545     UINT8     marshalType;
546     UINT8     elements;
547     UINT16    values[9];
548 } TPMT_TK_CREATION_mst;
549 
550 typedef const struct TPMT_TK_VERIFIED_mst
551 {
552     UINT8     marshalType;
553     UINT8     elements;
554     UINT16    values[9];
555 } TPMT_TK_VERIFIED_mst;
556 
557 typedef const struct TPMT_TK_AUTH_mst
558 {
559     UINT8     marshalType;
560     UINT8     elements;
561     UINT16    values[9];
562 } TPMT_TK_AUTH_mst;
563 
564 typedef const struct TPMT_TK_HASHCHECK_mst
565 {
566     UINT8     marshalType;
567     UINT8     elements;
568     UINT16    values[9];
569 } TPMT_TK_HASHCHECK_mst;
570 
571 typedef const struct TPMS_ALG_PROPERTY_mst
572 {
573     UINT8     marshalType;
574     UINT8     elements;
575     UINT16    values[6];
576 } TPMS_ALG_PROPERTY_mst;
577 
578 typedef const struct TPMS_TAGGED_PROPERTY_mst
579 {
580     UINT8     marshalType;
581     UINT8     elements;
582     UINT16    values[6];
583 } TPMS_TAGGED_PROPERTY_mst;
584 
585 typedef const struct TPMS_TAGGED_PCR_SELECT_mst
586 {
587     UINT8     marshalType;
588     UINT8     elements;
589     UINT16    values[9];
590 } TPMS_TAGGED_PCR_SELECT_mst;
591 
592 typedef const struct TPMS_TAGGED_POLICY_mst
593 {
594     UINT8     marshalType;
595     UINT8     elements;
596     UINT16    values[6];
597 } TPMS_TAGGED_POLICY_mst;
598 
599 typedef const struct TPMS_ACT_DATA_mst
600 {
601     UINT8     marshalType;
602     UINT8     elements;
603     UINT16    values[9];
604 } TPMS_ACT_DATA_mst;
605 
606 typedef struct TPMU_CAPABILITIES_mst
607 {
608     BYTE            countOfselectors;
609     BYTE            modifiers;
610     UINT16        offsetOfUnmarshalTypes;
611     UINT32        selectors[11];
612     UINT16        marshalingTypes[11];
613 } TPMU_CAPABILITIES_mst;
614 
615 typedef const struct TPMS_CAPABILITY_DATA_mst
616 {
617     UINT8     marshalType;
618     UINT8     elements;
619     UINT16    values[6];
620 } TPMS_CAPABILITY_DATA_mst;
621 
622 typedef const struct TPMS_CLOCK_INFO_mst
623 {
624     UINT8     marshalType;
625     UINT8     elements;
626     UINT16    values[12];
627 } TPMS_CLOCK_INFO_mst;
628 
629 typedef const struct TPMS_TIME_INFO_mst
630 {
631     UINT8     marshalType;
632     UINT8     elements;
633     UINT16    values[6];
634 } TPMS_TIME_INFO_mst;
635 
636 typedef const struct TPMS_TIME_ATTEST_INFO_mst
637 {
638     UINT8     marshalType;
639     UINT8     elements;
640     UINT16    values[6];
641 } TPMS_TIME_ATTEST_INFO_mst;
642 
643 typedef const struct TPMS_CERTIFY_INFO_mst
644 {
645     UINT8     marshalType;
646     UINT8     elements;
647     UINT16    values[6];
648 } TPMS_CERTIFY_INFO_mst;
649 
650 typedef const struct TPMS_QUOTE_INFO_mst
651 {
652     UINT8     marshalType;
653     UINT8     elements;
654     UINT16    values[6];
655 } TPMS_QUOTE_INFO_mst;
656 
657 typedef const struct TPMS_COMMAND_AUDIT_INFO_mst
658 {
659     UINT8     marshalType;
660     UINT8     elements;
661     UINT16    values[12];
662 } TPMS_COMMAND_AUDIT_INFO_mst;
663 
664 typedef const struct TPMS_SESSION_AUDIT_INFO_mst
665 {
666     UINT8     marshalType;
667     UINT8     elements;
668     UINT16    values[6];
669 } TPMS_SESSION_AUDIT_INFO_mst;
670 
671 typedef const struct TPMS_CREATION_INFO_mst
672 {
673     UINT8     marshalType;
674     UINT8     elements;
675     UINT16    values[6];
676 } TPMS_CREATION_INFO_mst;
677 
678 typedef const struct TPMS_NV_CERTIFY_INFO_mst
679 {
680     UINT8     marshalType;
681     UINT8     elements;
682     UINT16    values[9];
683 } TPMS_NV_CERTIFY_INFO_mst;
684 
685 typedef const struct TPMS_NV_DIGEST_CERTIFY_INFO_mst
686 {
687     UINT8     marshalType;
688     UINT8     elements;
689     UINT16    values[6];
690 } TPMS_NV_DIGEST_CERTIFY_INFO_mst;
691 
692 typedef const struct TPMI_ST_ATTEST_mst {
693     UINT8         marshalType;
694     UINT8         modifiers;
695     UINT8         errorCode;
696     UINT8         ranges;
697     UINT8         singles;
698     UINT32        values[3];
699 } TPMI_ST_ATTEST_mst;
700 
701 typedef struct TPMU_ATTEST_mst
702 {
703     BYTE            countOfselectors;
704     BYTE            modifiers;
705     UINT16        offsetOfUnmarshalTypes;
706     UINT32        selectors[8];
707     UINT16        marshalingTypes[8];
708 } TPMU_ATTEST_mst;
709 
710 typedef const struct TPMS_ATTEST_mst
711 {
712     UINT8     marshalType;
713     UINT8     elements;
714     UINT16    values[21];
715 } TPMS_ATTEST_mst;
716 
717 typedef const struct TPMS_AUTH_COMMAND_mst
718 {
719     UINT8     marshalType;
720     UINT8     elements;
721     UINT16    values[12];
722 } TPMS_AUTH_COMMAND_mst;
723 
724 typedef const struct TPMS_AUTH_RESPONSE_mst
725 {
726     UINT8     marshalType;
727     UINT8     elements;
728     UINT16    values[9];
729 } TPMS_AUTH_RESPONSE_mst;
730 
731 typedef const struct TPMI_TDES_KEY_BITS_mst {
732     UINT8         marshalType;
733     UINT8         modifiers;
734     UINT8         errorCode;
735     UINT8         entries;
736     UINT32        values[1];
737 } TPMI_TDES_KEY_BITS_mst;
738 
739 typedef const struct TPMI_AES_KEY_BITS_mst {
740     UINT8         marshalType;
741     UINT8         modifiers;
742     UINT8         errorCode;
743     UINT8         entries;
744     UINT32        values[3];
745 } TPMI_AES_KEY_BITS_mst;
746 
747 typedef const struct TPMI_SM4_KEY_BITS_mst {
748     UINT8         marshalType;
749     UINT8         modifiers;
750     UINT8         errorCode;
751     UINT8         entries;
752     UINT32        values[1];
753 } TPMI_SM4_KEY_BITS_mst;
754 
755 typedef const struct TPMI_CAMELLIA_KEY_BITS_mst {
756     UINT8         marshalType;
757     UINT8         modifiers;
758     UINT8         errorCode;
759     UINT8         entries;
760     UINT32        values[3];
761 } TPMI_CAMELLIA_KEY_BITS_mst;
762 
763 typedef struct TPMU_SYM_KEY_BITS_mst
764 {
765     BYTE            countOfselectors;
766     BYTE            modifiers;
767     UINT16        offsetOfUnmarshalTypes;
768     UINT32        selectors[6];
769     UINT16        marshalingTypes[6];
770 } TPMU_SYM_KEY_BITS_mst;
771 
772 typedef struct TPMU_SYM_MODE_mst
773 {
774     BYTE            countOfselectors;
775     BYTE            modifiers;
776     UINT16        offsetOfUnmarshalTypes;
777     UINT32        selectors[6];
778     UINT16        marshalingTypes[6];
779 } TPMU_SYM_MODE_mst;
780 
781 typedef const struct TPMT_SYM_DEF_mst
782 {
783     UINT8     marshalType;
784     UINT8     elements;
785     UINT16    values[9];
786 } TPMT_SYM_DEF_mst;
787 
788 typedef const struct TPMT_SYM_DEF_OBJECT_mst
789 {
790     UINT8     marshalType;
791     UINT8     elements;
792     UINT16    values[9];
793 } TPMT_SYM_DEF_OBJECT_mst;
794 
795 typedef const struct TPMS_SYMCIPHER_PARMS_mst
796 {
797     UINT8     marshalType;
798     UINT8     elements;
799     UINT16    values[3];
800 } TPMS_SYMCIPHER_PARMS_mst;
801 
802 typedef const struct TPMS_DERIVE_mst
803 {
804     UINT8     marshalType;
805     UINT8     elements;
806     UINT16    values[6];
807 } TPMS_DERIVE_mst;
808 
809 typedef const struct TPMS_SENSITIVE_CREATE_mst
810 {
811     UINT8     marshalType;
812     UINT8     elements;
813     UINT16    values[6];
814 } TPMS_SENSITIVE_CREATE_mst;
815 
816 typedef const struct TPMS_SCHEME_HASH_mst
817 {
818     UINT8     marshalType;
819     UINT8     elements;
820     UINT16    values[3];
821 } TPMS_SCHEME_HASH_mst;
822 
823 typedef const struct TPMS_SCHEME_ECDAA_mst
824 {
825     UINT8     marshalType;
826     UINT8     elements;
827     UINT16    values[6];
828 } TPMS_SCHEME_ECDAA_mst;
829 
830 typedef const struct TPMI_ALG_KEYEDHASH_SCHEME_mst {
831     UINT8       marshalType;
832     UINT8       modifiers;
833     UINT8       errorCode;
834     UINT32      values[4];
835 } TPMI_ALG_KEYEDHASH_SCHEME_mst;
836 
837 typedef const struct TPMS_SCHEME_XOR_mst
838 {
839     UINT8     marshalType;
840     UINT8     elements;
841     UINT16    values[6];
842 } TPMS_SCHEME_XOR_mst;
843 
844 typedef struct TPMU_SCHEME_KEYEDHASH_mst
845 {
846     BYTE            countOfselectors;
847     BYTE            modifiers;
848     UINT16        offsetOfUnmarshalTypes;
849     UINT32        selectors[3];
850     UINT16        marshalingTypes[3];
851 } TPMU_SCHEME_KEYEDHASH_mst;
852 
853 typedef const struct TPMT_KEYEDHASH_SCHEME_mst
854 {
855     UINT8     marshalType;
856     UINT8     elements;
857     UINT16    values[6];
858 } TPMT_KEYEDHASH_SCHEME_mst;
859 
860 typedef struct TPMU_SIG_SCHEME_mst
861 {
862     BYTE            countOfselectors;
863     BYTE            modifiers;
864     UINT16        offsetOfUnmarshalTypes;
865     UINT32        selectors[8];
866     UINT16        marshalingTypes[8];
867 } TPMU_SIG_SCHEME_mst;
868 
869 typedef const struct TPMT_SIG_SCHEME_mst
870 {
871     UINT8     marshalType;
872     UINT8     elements;
873     UINT16    values[6];
874 } TPMT_SIG_SCHEME_mst;
875 
876 typedef struct TPMU_KDF_SCHEME_mst
877 {
878     BYTE            countOfselectors;
879     BYTE            modifiers;
880     UINT16        offsetOfUnmarshalTypes;
881     UINT32        selectors[5];
882     UINT16        marshalingTypes[5];
883 } TPMU_KDF_SCHEME_mst;
884 
885 typedef const struct TPMT_KDF_SCHEME_mst
886 {
887     UINT8     marshalType;
888     UINT8     elements;
889     UINT16    values[6];
890 } TPMT_KDF_SCHEME_mst;
891 
892 typedef const struct TPMI_ALG_ASYM_SCHEME_mst {
893     UINT8       marshalType;
894     UINT8       modifiers;
895     UINT8       errorCode;
896     UINT32      values[4];
897 } TPMI_ALG_ASYM_SCHEME_mst;
898 
899 typedef struct TPMU_ASYM_SCHEME_mst
900 {
901     BYTE            countOfselectors;
902     BYTE            modifiers;
903     UINT16        offsetOfUnmarshalTypes;
904     UINT32        selectors[11];
905     UINT16        marshalingTypes[11];
906 } TPMU_ASYM_SCHEME_mst;
907 
908 typedef const struct TPMI_ALG_RSA_SCHEME_mst {
909     UINT8       marshalType;
910     UINT8       modifiers;
911     UINT8       errorCode;
912     UINT32      values[4];
913 } TPMI_ALG_RSA_SCHEME_mst;
914 
915 typedef const struct TPMT_RSA_SCHEME_mst
916 {
917     UINT8     marshalType;
918     UINT8     elements;
919     UINT16    values[6];
920 } TPMT_RSA_SCHEME_mst;
921 
922 typedef const struct TPMI_ALG_RSA_DECRYPT_mst {
923     UINT8       marshalType;
924     UINT8       modifiers;
925     UINT8       errorCode;
926     UINT32      values[4];
927 } TPMI_ALG_RSA_DECRYPT_mst;
928 
929 typedef const struct TPMT_RSA_DECRYPT_mst
930 {
931     UINT8     marshalType;
932     UINT8     elements;
933     UINT16    values[6];
934 } TPMT_RSA_DECRYPT_mst;
935 
936 typedef const struct TPMI_RSA_KEY_BITS_mst {
937     UINT8         marshalType;
938     UINT8         modifiers;
939     UINT8         errorCode;
940     UINT8         entries;
941     UINT32        values[3];
942 } TPMI_RSA_KEY_BITS_mst;
943 
944 typedef const struct TPMS_ECC_POINT_mst
945 {
946     UINT8     marshalType;
947     UINT8     elements;
948     UINT16    values[6];
949 } TPMS_ECC_POINT_mst;
950 
951 typedef const struct TPMI_ALG_ECC_SCHEME_mst {
952     UINT8       marshalType;
953     UINT8       modifiers;
954     UINT8       errorCode;
955     UINT32      values[4];
956 } TPMI_ALG_ECC_SCHEME_mst;
957 
958 typedef const struct TPMI_ECC_CURVE_mst {
959     UINT8       marshalType;
960     UINT8       modifiers;
961     UINT8       errorCode;
962     UINT32      values[3];
963 } TPMI_ECC_CURVE_mst;
964 
965 typedef const struct TPMT_ECC_SCHEME_mst
966 {
967     UINT8     marshalType;
968     UINT8     elements;
969     UINT16    values[6];
970 } TPMT_ECC_SCHEME_mst;
971 
972 typedef const struct TPMS_ALGORITHM_DETAIL_ECC_mst
973 {
974     UINT8     marshalType;
975     UINT8     elements;
976     UINT16    values[33];
977 } TPMS_ALGORITHM_DETAIL_ECC_mst;
978 
979 typedef const struct TPMS_SIGNATURE_RSA_mst
980 {
981     UINT8     marshalType;
982     UINT8     elements;
983     UINT16    values[6];
984 } TPMS_SIGNATURE_RSA_mst;
985 
986 typedef const struct TPMS_SIGNATURE_ECC_mst
987 {
988     UINT8     marshalType;
989     UINT8     elements;
990     UINT16    values[9];
991 } TPMS_SIGNATURE_ECC_mst;
992 
993 typedef struct TPMU_SIGNATURE_mst
994 {
995     BYTE            countOfselectors;
996     BYTE            modifiers;
997     UINT16        offsetOfUnmarshalTypes;
998     UINT32        selectors[8];
999     UINT16        marshalingTypes[8];
1000 } TPMU_SIGNATURE_mst;
1001 
1002 typedef const struct TPMT_SIGNATURE_mst
1003 {
1004     UINT8     marshalType;
1005     UINT8     elements;
1006     UINT16    values[6];
1007 } TPMT_SIGNATURE_mst;
1008 
1009 typedef struct TPMU_ENCRYPTED_SECRET_mst
1010 {
1011     BYTE            countOfselectors;
1012     BYTE            modifiers;
1013     UINT16        offsetOfUnmarshalTypes;
1014     UINT32        selectors[4];
1015     UINT16        marshalingTypes[4];
1016 } TPMU_ENCRYPTED_SECRET_mst;
1017 
1018 typedef const struct TPMI_ALG_PUBLIC_mst {
1019     UINT8       marshalType;
1020     UINT8       modifiers;
1021     UINT8       errorCode;
1022     UINT32      values[4];
1023 } TPMI_ALG_PUBLIC_mst;
1024 
1025 typedef struct TPMU_PUBLIC_ID_mst
1026 {
1027     BYTE            countOfselectors;
1028     BYTE            modifiers;
1029     UINT16        offsetOfUnmarshalTypes;
1030     UINT32        selectors[4];
1031     UINT16        marshalingTypes[4];
1032 } TPMU_PUBLIC_ID_mst;
1033 
1034 typedef const struct TPMS_KEYEDHASH_PARMS_mst
1035 {
1036     UINT8     marshalType;
1037     UINT8     elements;
1038     UINT16    values[3];
1039 } TPMS_KEYEDHASH_PARMS_mst;
1040 
1041 typedef const struct TPMS_RSA_PARMS_mst
1042 {
1043     UINT8     marshalType;
1044     UINT8     elements;
1045     UINT16    values[12];
1046 } TPMS_RSA_PARMS_mst;
1047 
1048 typedef const struct TPMS_ECC_PARMS_mst
1049 {
1050     UINT8     marshalType;
1051     UINT8     elements;
1052     UINT16    values[12];
1053 } TPMS_ECC_PARMS_mst;
1054 
1055 typedef struct TPMU_PUBLIC_PARMS_mst
1056 {
1057     BYTE            countOfselectors;
1058     BYTE            modifiers;
1059     UINT16        offsetOfUnmarshalTypes;
1060     UINT32        selectors[4];
1061     UINT16        marshalingTypes[4];
1062 } TPMU_PUBLIC_PARMS_mst;
1063 
1064 typedef const struct TPMT_PUBLIC_PARMS_mst
1065 {
1066     UINT8     marshalType;
1067     UINT8     elements;
1068     UINT16    values[6];
1069 } TPMT_PUBLIC_PARMS_mst;
1070 
1071 typedef const struct TPMT_PUBLIC_mst
1072 {
1073     UINT8     marshalType;
1074     UINT8     elements;
1075     UINT16    values[18];
1076 } TPMT_PUBLIC_mst;
1077 
1078 typedef struct TPMU_SENSITIVE_COMPOSITE_mst
1079 {
1080     BYTE            countOfselectors;
1081     BYTE            modifiers;
1082     UINT16        offsetOfUnmarshalTypes;
1083     UINT32        selectors[4];
1084     UINT16        marshalingTypes[4];
1085 } TPMU_SENSITIVE_COMPOSITE_mst;
1086 
1087 typedef const struct TPMT_SENSITIVE_mst
1088 {
1089     UINT8     marshalType;
1090     UINT8     elements;
1091     UINT16    values[12];
1092 } TPMT_SENSITIVE_mst;
1093 
1094 typedef const struct TPMS_NV_PIN_COUNTER_PARAMETERS_mst
1095 {
1096     UINT8     marshalType;
1097     UINT8     elements;
1098     UINT16    values[6];
1099 } TPMS_NV_PIN_COUNTER_PARAMETERS_mst;
1100 
1101 typedef const struct TPMS_NV_PUBLIC_mst
1102 {
1103     UINT8     marshalType;
1104     UINT8     elements;
1105     UINT16    values[15];
1106 } TPMS_NV_PUBLIC_mst;
1107 
1108 typedef const struct TPMS_CONTEXT_DATA_mst
1109 {
1110     UINT8     marshalType;
1111     UINT8     elements;
1112     UINT16    values[6];
1113 } TPMS_CONTEXT_DATA_mst;
1114 
1115 typedef const struct TPMS_CONTEXT_mst
1116 {
1117     UINT8     marshalType;
1118     UINT8     elements;
1119     UINT16    values[12];
1120 } TPMS_CONTEXT_mst;
1121 
1122 typedef const struct TPMS_CREATION_DATA_mst
1123 {
1124     UINT8     marshalType;
1125     UINT8     elements;
1126     UINT16    values[21];
1127 } TPMS_CREATION_DATA_mst;
1128 
1129 typedef const struct TPM_AT_mst {
1130     UINT8         marshalType;
1131     UINT8         modifiers;
1132     UINT8         errorCode;
1133     UINT8         entries;
1134     UINT32        values[4];
1135 } TPM_AT_mst;
1136 
1137 typedef const struct TPMS_AC_OUTPUT_mst
1138 {
1139     UINT8     marshalType;
1140     UINT8     elements;
1141     UINT16    values[6];
1142 } TPMS_AC_OUTPUT_mst;
1143 
1144 typedef const struct Type02_mst {
1145     UINT8       marshalType;
1146     UINT8       modifiers;
1147     UINT8       errorCode;
1148     UINT32      values[2];
1149 } Type02_mst;
1150 
1151 typedef const struct Type03_mst {
1152     UINT8       marshalType;
1153     UINT8       modifiers;
1154     UINT8       errorCode;
1155     UINT32      values[2];
1156 } Type03_mst;
1157 
1158 typedef const struct Type04_mst {
1159     UINT8       marshalType;
1160     UINT8       modifiers;
1161     UINT8       errorCode;
1162     UINT32      values[2];
1163 } Type04_mst;
1164 
1165 typedef const struct Type06_mst {
1166     UINT8       marshalType;
1167     UINT8       modifiers;
1168     UINT8       errorCode;
1169     UINT32      values[2];
1170 } Type06_mst;
1171 
1172 typedef const struct Type08_mst {
1173     UINT8       marshalType;
1174     UINT8       modifiers;
1175     UINT8       errorCode;
1176     UINT32      values[2];
1177 } Type08_mst;
1178 
1179 typedef const struct Type10_mst {
1180     UINT8         marshalType;
1181     UINT8         modifiers;
1182     UINT8         errorCode;
1183     UINT8         entries;
1184     UINT32        values[1];
1185 } Type10_mst;
1186 
1187 typedef const struct Type11_mst {
1188     UINT8         marshalType;
1189     UINT8         modifiers;
1190     UINT8         errorCode;
1191     UINT8         entries;
1192     UINT32        values[1];
1193 } Type11_mst;
1194 
1195 typedef const struct Type12_mst {
1196     UINT8         marshalType;
1197     UINT8         modifiers;
1198     UINT8         errorCode;
1199     UINT8         entries;
1200     UINT32        values[2];
1201 } Type12_mst;
1202 
1203 typedef const struct Type13_mst {
1204     UINT8         marshalType;
1205     UINT8         modifiers;
1206     UINT8         errorCode;
1207     UINT8         entries;
1208     UINT32        values[1];
1209 } Type13_mst;
1210 
1211 typedef const struct Type15_mst {
1212     UINT8       marshalType;
1213     UINT8       modifiers;
1214     UINT8       errorCode;
1215     UINT32      values[2];
1216 } Type15_mst;
1217 
1218 typedef const struct Type17_mst {
1219     UINT8       marshalType;
1220     UINT8       modifiers;
1221     UINT8       errorCode;
1222     UINT32      values[2];
1223 } Type17_mst;
1224 
1225 typedef const struct Type18_mst {
1226     UINT8       marshalType;
1227     UINT8       modifiers;
1228     UINT8       errorCode;
1229     UINT32      values[2];
1230 } Type18_mst;
1231 
1232 typedef const struct Type19_mst {
1233     UINT8       marshalType;
1234     UINT8       modifiers;
1235     UINT8       errorCode;
1236     UINT32      values[2];
1237 } Type19_mst;
1238 
1239 typedef const struct Type20_mst {
1240     UINT8       marshalType;
1241     UINT8       modifiers;
1242     UINT8       errorCode;
1243     UINT32      values[2];
1244 } Type20_mst;
1245 
1246 typedef const struct Type22_mst {
1247     UINT8       marshalType;
1248     UINT8       modifiers;
1249     UINT8       errorCode;
1250     UINT32      values[2];
1251 } Type22_mst;
1252 
1253 typedef const struct Type23_mst {
1254     UINT8       marshalType;
1255     UINT8       modifiers;
1256     UINT8       errorCode;
1257     UINT32      values[2];
1258 } Type23_mst;
1259 
1260 typedef const struct Type24_mst {
1261     UINT8       marshalType;
1262     UINT8       modifiers;
1263     UINT8       errorCode;
1264     UINT32      values[2];
1265 } Type24_mst;
1266 
1267 typedef const struct Type25_mst {
1268     UINT8       marshalType;
1269     UINT8       modifiers;
1270     UINT8       errorCode;
1271     UINT32      values[2];
1272 } Type25_mst;
1273 
1274 typedef const struct Type26_mst {
1275     UINT8       marshalType;
1276     UINT8       modifiers;
1277     UINT8       errorCode;
1278     UINT32      values[2];
1279 } Type26_mst;
1280 
1281 typedef const struct Type27_mst {
1282     UINT8       marshalType;
1283     UINT8       modifiers;
1284     UINT8       errorCode;
1285     UINT32      values[2];
1286 } Type27_mst;
1287 
1288 typedef const struct Type29_mst {
1289     UINT8       marshalType;
1290     UINT8       modifiers;
1291     UINT8       errorCode;
1292     UINT32      values[2];
1293 } Type29_mst;
1294 
1295 typedef const struct Type30_mst {
1296     UINT8       marshalType;
1297     UINT8       modifiers;
1298     UINT8       errorCode;
1299     UINT32      values[2];
1300 } Type30_mst;
1301 
1302 typedef const struct Type33_mst {
1303     UINT8       marshalType;
1304     UINT8       modifiers;
1305     UINT8       errorCode;
1306     UINT32      values[2];
1307 } Type33_mst;
1308 
1309 typedef const struct Type34_mst {
1310     UINT8       marshalType;
1311     UINT8       modifiers;
1312     UINT8       errorCode;
1313     UINT32      values[2];
1314 } Type34_mst;
1315 
1316 typedef const struct Type35_mst {
1317     UINT8       marshalType;
1318     UINT8       modifiers;
1319     UINT8       errorCode;
1320     UINT32      values[2];
1321 } Type35_mst;
1322 
1323 typedef const struct Type38_mst {
1324     UINT8       marshalType;
1325     UINT8       modifiers;
1326     UINT8       errorCode;
1327     UINT32      values[2];
1328 } Type38_mst;
1329 
1330 typedef const struct Type41_mst {
1331     UINT8       marshalType;
1332     UINT8       modifiers;
1333     UINT8       errorCode;
1334     UINT32      values[2];
1335 } Type41_mst;
1336 
1337 typedef const struct Type42_mst {
1338     UINT8       marshalType;
1339     UINT8       modifiers;
1340     UINT8       errorCode;
1341     UINT32      values[2];
1342 } Type42_mst;
1343 
1344 typedef const struct Type44_mst {
1345     UINT8       marshalType;
1346     UINT8       modifiers;
1347     UINT8       errorCode;
1348     UINT32      values[2];
1349 } Type44_mst;
1350 
1351 // This structure combines all the individual marshaling structures to build
1352 // something that can be referenced by offset rather than full address
1353 typedef const struct MarshalData_st {
1354     UintMarshal_mst                 UINT8_DATA;
1355     UintMarshal_mst                 UINT16_DATA;
1356     UintMarshal_mst                 UINT32_DATA;
1357     UintMarshal_mst                 UINT64_DATA;
1358     UintMarshal_mst                 INT8_DATA;
1359     UintMarshal_mst                 INT16_DATA;
1360     UintMarshal_mst                 INT32_DATA;
1361     UintMarshal_mst                 INT64_DATA;
1362     UintMarshal_mst                 UINT0_DATA;
1363     TPM_ECC_CURVE_mst               TPM_ECC_CURVE_DATA;
1364     TPM_CLOCK_ADJUST_mst            TPM_CLOCK_ADJUST_DATA;
1365     TPM_EO_mst                      TPM_EO_DATA;
1366     TPM_SU_mst                      TPM_SU_DATA;
1367     TPM_SE_mst                      TPM_SE_DATA;
1368     TPM_CAP_mst                     TPM_CAP_DATA;
1369     AttributesMarshal_mst           TPMA_ALGORITHM_DATA;
1370     AttributesMarshal_mst           TPMA_OBJECT_DATA;
1371     AttributesMarshal_mst           TPMA_SESSION_DATA;
1372     AttributesMarshal_mst           TPMA_ACT_DATA;
1373     TPMI_YES_NO_mst                 TPMI_YES_NO_DATA;
1374     TPMI_DH_OBJECT_mst              TPMI_DH_OBJECT_DATA;
1375     TPMI_DH_PARENT_mst              TPMI_DH_PARENT_DATA;
1376     TPMI_DH_PERSISTENT_mst          TPMI_DH_PERSISTENT_DATA;
1377     TPMI_DH_ENTITY_mst              TPMI_DH_ENTITY_DATA;
1378     TPMI_DH_PCR_mst                 TPMI_DH_PCR_DATA;
1379     TPMI_SH_AUTH_SESSION_mst        TPMI_SH_AUTH_SESSION_DATA;
1380     TPMI_SH_HMAC_mst                TPMI_SH_HMAC_DATA;
1381     TPMI_SH_POLICY_mst              TPMI_SH_POLICY_DATA;
1382     TPMI_DH_CONTEXT_mst             TPMI_DH_CONTEXT_DATA;
1383     TPMI_DH_SAVED_mst               TPMI_DH_SAVED_DATA;
1384     TPMI_RH_HIERARCHY_mst           TPMI_RH_HIERARCHY_DATA;
1385     TPMI_RH_ENABLES_mst             TPMI_RH_ENABLES_DATA;
1386     TPMI_RH_HIERARCHY_AUTH_mst      TPMI_RH_HIERARCHY_AUTH_DATA;
1387     TPMI_RH_HIERARCHY_POLICY_mst    TPMI_RH_HIERARCHY_POLICY_DATA;
1388     TPMI_RH_PLATFORM_mst            TPMI_RH_PLATFORM_DATA;
1389     TPMI_RH_OWNER_mst               TPMI_RH_OWNER_DATA;
1390     TPMI_RH_ENDORSEMENT_mst         TPMI_RH_ENDORSEMENT_DATA;
1391     TPMI_RH_PROVISION_mst           TPMI_RH_PROVISION_DATA;
1392     TPMI_RH_CLEAR_mst               TPMI_RH_CLEAR_DATA;
1393     TPMI_RH_NV_AUTH_mst             TPMI_RH_NV_AUTH_DATA;
1394     TPMI_RH_LOCKOUT_mst             TPMI_RH_LOCKOUT_DATA;
1395     TPMI_RH_NV_INDEX_mst            TPMI_RH_NV_INDEX_DATA;
1396     TPMI_RH_AC_mst                  TPMI_RH_AC_DATA;
1397     TPMI_RH_ACT_mst                 TPMI_RH_ACT_DATA;
1398     TPMI_ALG_HASH_mst               TPMI_ALG_HASH_DATA;
1399     TPMI_ALG_ASYM_mst               TPMI_ALG_ASYM_DATA;
1400     TPMI_ALG_SYM_mst                TPMI_ALG_SYM_DATA;
1401     TPMI_ALG_SYM_OBJECT_mst         TPMI_ALG_SYM_OBJECT_DATA;
1402     TPMI_ALG_SYM_MODE_mst           TPMI_ALG_SYM_MODE_DATA;
1403     TPMI_ALG_KDF_mst                TPMI_ALG_KDF_DATA;
1404     TPMI_ALG_SIG_SCHEME_mst         TPMI_ALG_SIG_SCHEME_DATA;
1405     TPMI_ECC_KEY_EXCHANGE_mst       TPMI_ECC_KEY_EXCHANGE_DATA;
1406     TPMI_ST_COMMAND_TAG_mst         TPMI_ST_COMMAND_TAG_DATA;
1407     TPMI_ALG_MAC_SCHEME_mst         TPMI_ALG_MAC_SCHEME_DATA;
1408     TPMI_ALG_CIPHER_MODE_mst        TPMI_ALG_CIPHER_MODE_DATA;
1409     TPMS_EMPTY_mst                  TPMS_EMPTY_DATA;
1410     TPMS_ALGORITHM_DESCRIPTION_mst  TPMS_ALGORITHM_DESCRIPTION_DATA;
1411     TPMU_HA_mst                     TPMU_HA_DATA;
1412     TPMT_HA_mst                     TPMT_HA_DATA;
1413     Tpm2bMarshal_mst                TPM2B_DIGEST_DATA;
1414     Tpm2bMarshal_mst                TPM2B_DATA_DATA;
1415     Tpm2bMarshal_mst                TPM2B_EVENT_DATA;
1416     Tpm2bMarshal_mst                TPM2B_MAX_BUFFER_DATA;
1417     Tpm2bMarshal_mst                TPM2B_MAX_NV_BUFFER_DATA;
1418     Tpm2bMarshal_mst                TPM2B_TIMEOUT_DATA;
1419     Tpm2bMarshal_mst                TPM2B_IV_DATA;
1420     NullUnionMarshal_mst            NULL_UNION_DATA;
1421     Tpm2bMarshal_mst                TPM2B_NAME_DATA;
1422     TPMS_PCR_SELECT_mst             TPMS_PCR_SELECT_DATA;
1423     TPMS_PCR_SELECTION_mst          TPMS_PCR_SELECTION_DATA;
1424     TPMT_TK_CREATION_mst            TPMT_TK_CREATION_DATA;
1425     TPMT_TK_VERIFIED_mst            TPMT_TK_VERIFIED_DATA;
1426     TPMT_TK_AUTH_mst                TPMT_TK_AUTH_DATA;
1427     TPMT_TK_HASHCHECK_mst           TPMT_TK_HASHCHECK_DATA;
1428     TPMS_ALG_PROPERTY_mst           TPMS_ALG_PROPERTY_DATA;
1429     TPMS_TAGGED_PROPERTY_mst        TPMS_TAGGED_PROPERTY_DATA;
1430     TPMS_TAGGED_PCR_SELECT_mst      TPMS_TAGGED_PCR_SELECT_DATA;
1431     TPMS_TAGGED_POLICY_mst          TPMS_TAGGED_POLICY_DATA;
1432     TPMS_ACT_DATA_mst               TPMS_ACT_DATA_DATA;
1433     ListMarshal_mst                 TPML_CC_DATA;
1434     ListMarshal_mst                 TPML_CCA_DATA;
1435     ListMarshal_mst                 TPML_ALG_DATA;
1436     ListMarshal_mst                 TPML_HANDLE_DATA;
1437     ListMarshal_mst                 TPML_DIGEST_DATA;
1438     ListMarshal_mst                 TPML_DIGEST_VALUES_DATA;
1439     ListMarshal_mst                 TPML_PCR_SELECTION_DATA;
1440     ListMarshal_mst                 TPML_ALG_PROPERTY_DATA;
1441     ListMarshal_mst                 TPML_TAGGED_TPM_PROPERTY_DATA;
1442     ListMarshal_mst                 TPML_TAGGED_PCR_PROPERTY_DATA;
1443     ListMarshal_mst                 TPML_ECC_CURVE_DATA;
1444     ListMarshal_mst                 TPML_TAGGED_POLICY_DATA;
1445     ListMarshal_mst                 TPML_ACT_DATA_DATA;
1446     TPMU_CAPABILITIES_mst           TPMU_CAPABILITIES_DATA;
1447     TPMS_CAPABILITY_DATA_mst        TPMS_CAPABILITY_DATA_DATA;
1448     TPMS_CLOCK_INFO_mst             TPMS_CLOCK_INFO_DATA;
1449     TPMS_TIME_INFO_mst              TPMS_TIME_INFO_DATA;
1450     TPMS_TIME_ATTEST_INFO_mst       TPMS_TIME_ATTEST_INFO_DATA;
1451     TPMS_CERTIFY_INFO_mst           TPMS_CERTIFY_INFO_DATA;
1452     TPMS_QUOTE_INFO_mst             TPMS_QUOTE_INFO_DATA;
1453     TPMS_COMMAND_AUDIT_INFO_mst     TPMS_COMMAND_AUDIT_INFO_DATA;
1454     TPMS_SESSION_AUDIT_INFO_mst     TPMS_SESSION_AUDIT_INFO_DATA;
1455     TPMS_CREATION_INFO_mst          TPMS_CREATION_INFO_DATA;
1456     TPMS_NV_CERTIFY_INFO_mst        TPMS_NV_CERTIFY_INFO_DATA;
1457     TPMS_NV_DIGEST_CERTIFY_INFO_mst TPMS_NV_DIGEST_CERTIFY_INFO_DATA;
1458     TPMI_ST_ATTEST_mst              TPMI_ST_ATTEST_DATA;
1459     TPMU_ATTEST_mst                 TPMU_ATTEST_DATA;
1460     TPMS_ATTEST_mst                 TPMS_ATTEST_DATA;
1461     Tpm2bMarshal_mst                TPM2B_ATTEST_DATA;
1462     TPMS_AUTH_COMMAND_mst           TPMS_AUTH_COMMAND_DATA;
1463     TPMS_AUTH_RESPONSE_mst          TPMS_AUTH_RESPONSE_DATA;
1464     TPMI_TDES_KEY_BITS_mst          TPMI_TDES_KEY_BITS_DATA;
1465     TPMI_AES_KEY_BITS_mst           TPMI_AES_KEY_BITS_DATA;
1466     TPMI_SM4_KEY_BITS_mst           TPMI_SM4_KEY_BITS_DATA;
1467     TPMI_CAMELLIA_KEY_BITS_mst      TPMI_CAMELLIA_KEY_BITS_DATA;
1468     TPMU_SYM_KEY_BITS_mst           TPMU_SYM_KEY_BITS_DATA;
1469     TPMU_SYM_MODE_mst               TPMU_SYM_MODE_DATA;
1470     TPMT_SYM_DEF_mst                TPMT_SYM_DEF_DATA;
1471     TPMT_SYM_DEF_OBJECT_mst         TPMT_SYM_DEF_OBJECT_DATA;
1472     Tpm2bMarshal_mst                TPM2B_SYM_KEY_DATA;
1473     TPMS_SYMCIPHER_PARMS_mst        TPMS_SYMCIPHER_PARMS_DATA;
1474     Tpm2bMarshal_mst                TPM2B_LABEL_DATA;
1475     TPMS_DERIVE_mst                 TPMS_DERIVE_DATA;
1476     Tpm2bMarshal_mst                TPM2B_DERIVE_DATA;
1477     Tpm2bMarshal_mst                TPM2B_SENSITIVE_DATA_DATA;
1478     TPMS_SENSITIVE_CREATE_mst       TPMS_SENSITIVE_CREATE_DATA;
1479     Tpm2bsMarshal_mst               TPM2B_SENSITIVE_CREATE_DATA;
1480     TPMS_SCHEME_HASH_mst            TPMS_SCHEME_HASH_DATA;
1481     TPMS_SCHEME_ECDAA_mst           TPMS_SCHEME_ECDAA_DATA;
1482     TPMI_ALG_KEYEDHASH_SCHEME_mst   TPMI_ALG_KEYEDHASH_SCHEME_DATA;
1483     TPMS_SCHEME_XOR_mst             TPMS_SCHEME_XOR_DATA;
1484     TPMU_SCHEME_KEYEDHASH_mst       TPMU_SCHEME_KEYEDHASH_DATA;
1485     TPMT_KEYEDHASH_SCHEME_mst       TPMT_KEYEDHASH_SCHEME_DATA;
1486     TPMU_SIG_SCHEME_mst             TPMU_SIG_SCHEME_DATA;
1487     TPMT_SIG_SCHEME_mst             TPMT_SIG_SCHEME_DATA;
1488     TPMU_KDF_SCHEME_mst             TPMU_KDF_SCHEME_DATA;
1489     TPMT_KDF_SCHEME_mst             TPMT_KDF_SCHEME_DATA;
1490     TPMI_ALG_ASYM_SCHEME_mst        TPMI_ALG_ASYM_SCHEME_DATA;
1491     TPMU_ASYM_SCHEME_mst            TPMU_ASYM_SCHEME_DATA;
1492     TPMI_ALG_RSA_SCHEME_mst         TPMI_ALG_RSA_SCHEME_DATA;
1493     TPMT_RSA_SCHEME_mst             TPMT_RSA_SCHEME_DATA;
1494     TPMI_ALG_RSA_DECRYPT_mst        TPMI_ALG_RSA_DECRYPT_DATA;
1495     TPMT_RSA_DECRYPT_mst            TPMT_RSA_DECRYPT_DATA;
1496     Tpm2bMarshal_mst                TPM2B_PUBLIC_KEY_RSA_DATA;
1497     TPMI_RSA_KEY_BITS_mst           TPMI_RSA_KEY_BITS_DATA;
1498     Tpm2bMarshal_mst                TPM2B_PRIVATE_KEY_RSA_DATA;
1499     Tpm2bMarshal_mst                TPM2B_ECC_PARAMETER_DATA;
1500     TPMS_ECC_POINT_mst              TPMS_ECC_POINT_DATA;
1501     Tpm2bsMarshal_mst               TPM2B_ECC_POINT_DATA;
1502     TPMI_ALG_ECC_SCHEME_mst         TPMI_ALG_ECC_SCHEME_DATA;
1503     TPMI_ECC_CURVE_mst              TPMI_ECC_CURVE_DATA;
1504     TPMT_ECC_SCHEME_mst             TPMT_ECC_SCHEME_DATA;
1505     TPMS_ALGORITHM_DETAIL_ECC_mst   TPMS_ALGORITHM_DETAIL_ECC_DATA;
1506     TPMS_SIGNATURE_RSA_mst          TPMS_SIGNATURE_RSA_DATA;
1507     TPMS_SIGNATURE_ECC_mst          TPMS_SIGNATURE_ECC_DATA;
1508     TPMU_SIGNATURE_mst              TPMU_SIGNATURE_DATA;
1509     TPMT_SIGNATURE_mst              TPMT_SIGNATURE_DATA;
1510     TPMU_ENCRYPTED_SECRET_mst       TPMU_ENCRYPTED_SECRET_DATA;
1511     Tpm2bMarshal_mst                TPM2B_ENCRYPTED_SECRET_DATA;
1512     TPMI_ALG_PUBLIC_mst             TPMI_ALG_PUBLIC_DATA;
1513     TPMU_PUBLIC_ID_mst              TPMU_PUBLIC_ID_DATA;
1514     TPMS_KEYEDHASH_PARMS_mst        TPMS_KEYEDHASH_PARMS_DATA;
1515     TPMS_RSA_PARMS_mst              TPMS_RSA_PARMS_DATA;
1516     TPMS_ECC_PARMS_mst              TPMS_ECC_PARMS_DATA;
1517     TPMU_PUBLIC_PARMS_mst           TPMU_PUBLIC_PARMS_DATA;
1518     TPMT_PUBLIC_PARMS_mst           TPMT_PUBLIC_PARMS_DATA;
1519     TPMT_PUBLIC_mst                 TPMT_PUBLIC_DATA;
1520     Tpm2bsMarshal_mst               TPM2B_PUBLIC_DATA;
1521     Tpm2bMarshal_mst                TPM2B_TEMPLATE_DATA;
1522     Tpm2bMarshal_mst                TPM2B_PRIVATE_VENDOR_SPECIFIC_DATA;
1523     TPMU_SENSITIVE_COMPOSITE_mst    TPMU_SENSITIVE_COMPOSITE_DATA;
1524     TPMT_SENSITIVE_mst              TPMT_SENSITIVE_DATA;
1525     Tpm2bsMarshal_mst               TPM2B_SENSITIVE_DATA;
1526     Tpm2bMarshal_mst                TPM2B_PRIVATE_DATA;
1527     Tpm2bMarshal_mst                TPM2B_ID_OBJECT_DATA;
1528     TPMS_NV_PIN_COUNTER_PARAMETERS_mst TPMS_NV_PIN_COUNTER_PARAMETERS_DATA;
1529     AttributesMarshal_mst           TPMA_NV_DATA;
1530     TPMS_NV_PUBLIC_mst              TPMS_NV_PUBLIC_DATA;
1531     Tpm2bsMarshal_mst               TPM2B_NV_PUBLIC_DATA;
1532     Tpm2bMarshal_mst                TPM2B_CONTEXT_SENSITIVE_DATA;
1533     TPMS_CONTEXT_DATA_mst           TPMS_CONTEXT_DATA_DATA;
1534     Tpm2bMarshal_mst                TPM2B_CONTEXT_DATA_DATA;
1535     TPMS_CONTEXT_mst                TPMS_CONTEXT_DATA;
1536     TPMS_CREATION_DATA_mst          TPMS_CREATION_DATA_DATA;
1537     Tpm2bsMarshal_mst               TPM2B_CREATION_DATA_DATA;
1538     TPM_AT_mst                      TPM_AT_DATA;
1539     TPMS_AC_OUTPUT_mst              TPMS_AC_OUTPUT_DATA;
1540     ListMarshal_mst                 TPML_AC_CAPABILITIES_DATA;
1541     MinMaxMarshal_mst               Type00_DATA;
1542     MinMaxMarshal_mst               Type01_DATA;
1543     Type02_mst                      Type02_DATA;
1544     Type03_mst                      Type03_DATA;
1545     Type04_mst                      Type04_DATA;
1546     MinMaxMarshal_mst               Type05_DATA;
1547     Type06_mst                      Type06_DATA;
1548     MinMaxMarshal_mst               Type07_DATA;
1549     Type08_mst                      Type08_DATA;
1550     Type10_mst                      Type10_DATA;
1551     Type11_mst                      Type11_DATA;
1552     Type12_mst                      Type12_DATA;
1553     Type13_mst                      Type13_DATA;
1554     Type15_mst                      Type15_DATA;
1555     Type17_mst                      Type17_DATA;
1556     Type18_mst                      Type18_DATA;
1557     Type19_mst                      Type19_DATA;
1558     Type20_mst                      Type20_DATA;
1559     Type22_mst                      Type22_DATA;
1560     Type23_mst                      Type23_DATA;
1561     Type24_mst                      Type24_DATA;
1562     Type25_mst                      Type25_DATA;
1563     Type26_mst                      Type26_DATA;
1564     Type27_mst                      Type27_DATA;
1565     MinMaxMarshal_mst               Type28_DATA;
1566     Type29_mst                      Type29_DATA;
1567     Type30_mst                      Type30_DATA;
1568     MinMaxMarshal_mst               Type31_DATA;
1569     MinMaxMarshal_mst               Type32_DATA;
1570     Type33_mst                      Type33_DATA;
1571     Type34_mst                      Type34_DATA;
1572     Type35_mst                      Type35_DATA;
1573     MinMaxMarshal_mst               Type36_DATA;
1574     MinMaxMarshal_mst               Type37_DATA;
1575     Type38_mst                      Type38_DATA;
1576     MinMaxMarshal_mst               Type39_DATA;
1577     MinMaxMarshal_mst               Type40_DATA;
1578     Type41_mst                      Type41_DATA;
1579     Type42_mst                      Type42_DATA;
1580     MinMaxMarshal_mst               Type43_DATA;
1581     Type44_mst                      Type44_DATA;
1582 } MarshalData_st;
1583 
1584 #endif // _TABLE_MARSHAL_TYPES_H_
1585