09d4aed7a48a4178170b19e32e63ca9a9b750b70
[aaf/sshsm.git] / tpm-util / duplicate / include / marshal.h
1 /*
2  * Copyright 2018 Intel Corporation
3  *
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
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16 // Author: Arun Kumar Sekar
17
18
19 #ifndef __MARSHAL_H__
20 #define __MARSHAL_H__
21
22 #include <sapi/tpm20.h>
23 #include <sapi/implementation.h>
24 #define pAssert(a)  ((void)0)
25 #define UNREFERENCED(a) ((void)(a))
26
27 #if NO_AUTO_ALIGN == YES || LITTLE_ENDIAN_TPM == YES
28 #define BYTE_ARRAY_TO_UINT8(b)   (UINT8)((b)[0])
29
30 #define BYTE_ARRAY_TO_UINT16(b)  (UINT16)(  ((b)[0] <<  8) \
31                                           +  (b)[1])
32
33 #define BYTE_ARRAY_TO_UINT32(b)  (UINT32)(  ((b)[0] << 24) \
34                                           + ((b)[1] << 16) \
35                                           + ((b)[2] << 8 ) \
36                                           +  (b)[3])
37
38 #define BYTE_ARRAY_TO_UINT64(b)  (UINT64)(  ((UINT64)(b)[0] << 56) \
39                                           + ((UINT64)(b)[1] << 48) \
40                                           + ((UINT64)(b)[2] << 40) \
41                                           + ((UINT64)(b)[3] << 32) \
42                                           + ((UINT64)(b)[4] << 24) \
43                                           + ((UINT64)(b)[5] << 16) \
44                                           + ((UINT64)(b)[6] <<  8) \
45                                           +  (UINT64)(b)[7])
46
47 // Disaggregate a UINT into a byte array
48 #define UINT8_TO_BYTE_ARRAY(i, b)     ((b)[0] = (BYTE)(i), i)
49
50 #define UINT16_TO_BYTE_ARRAY(i, b)    ((b)[0] = (BYTE)((i) >>  8), \
51                                        (b)[1] = (BYTE) (i),        \
52                                        (i))
53
54 #define UINT32_TO_BYTE_ARRAY(i, b)    ((b)[0] = (BYTE)((i) >> 24), \
55                                        (b)[1] = (BYTE)((i) >> 16), \
56                                        (b)[2] = (BYTE)((i) >>  8), \
57                                        (b)[3] = (BYTE) (i),        \
58                                        (i))
59
60 #define UINT64_TO_BYTE_ARRAY(i, b)    ((b)[0] = (BYTE)((i) >> 56), \
61                                        (b)[1] = (BYTE)((i) >> 48), \
62                                        (b)[2] = (BYTE)((i) >> 40), \
63                                        (b)[3] = (BYTE)((i) >> 32), \
64                                        (b)[4] = (BYTE)((i) >> 24), \
65                                        (b)[5] = (BYTE)((i) >> 16), \
66                                        (b)[6] = (BYTE)((i) >>  8), \
67                                        (b)[7] = (BYTE) (i),        \
68                                        (i))
69
70 #else
71
72 // the big-endian macros for machines that allow unaligned memory access
73 // Aggregate a byte array into a UINT
74 #define BYTE_ARRAY_TO_UINT8(b)        *((UINT8  *)(b))
75 #define BYTE_ARRAY_TO_UINT16(b)       *((UINT16 *)(b))
76 #define BYTE_ARRAY_TO_UINT32(b)       *((UINT32 *)(b))
77 #define BYTE_ARRAY_TO_UINT64(b)       *((UINT64 *)(b))
78
79 // Disaggregate a UINT into a byte array
80
81
82 #define UINT8_TO_BYTE_ARRAY(i, b)   (*((UINT8  *)(b)) = (i))
83 #define UINT16_TO_BYTE_ARRAY(i, b)  (*((UINT16 *)(b)) = (i))
84 #define UINT32_TO_BYTE_ARRAY(i, b)  (*((UINT32 *)(b)) = (i))
85 #define UINT64_TO_BYTE_ARRAY(i, b)  (*((UINT64 *)(b)) = (i))
86
87
88 #endif  // NO_AUTO_ALIGN == YES
89
90
91
92
93 // Table 2:3 - Definition of Base Types (BaseTypes)
94 //   UINT8 definition from table 2:3
95 TPM_RC
96 UINT8_Unmarshal(UINT8 *target, BYTE **buffer, INT32 *size);
97 UINT16
98 UINT8_Marshal(UINT8 *source, BYTE **buffer, INT32 *size);
99
100 //   BYTE definition from table 2:3
101 #define BYTE_Unmarshal(target, buffer, size) \
102             UINT8_Unmarshal((UINT8 *)(target), buffer, size)
103 #define BYTE_Marshal(source, buffer, size) \
104             UINT8_Marshal((UINT8 *)(source), buffer, size)
105 //   INT8 definition from table 2:3
106 #define INT8_Unmarshal(target, buffer, size) \
107             UINT8_Unmarshal((UINT8 *)(target), buffer, size)
108 //     INT8_Marshal not referenced
109 //   UINT16 definition from table 2:3
110 TPM_RC
111 UINT16_Unmarshal(UINT16 *target, BYTE **buffer, INT32 *size);
112 UINT16
113 UINT16_Marshal(UINT16 *source, BYTE **buffer, INT32 *size);
114
115 //   INT16 definition from table 2:3
116 //     INT16_Unmarshal not referenced
117 //     INT16_Marshal not referenced
118 //   UINT32 definition from table 2:3
119 TPM_RC
120 UINT32_Unmarshal(UINT32 *target, BYTE **buffer, INT32 *size);
121 UINT16
122 UINT32_Marshal(UINT32 *source, BYTE **buffer, INT32 *size);
123
124 //   INT32 definition from table 2:3
125 #define INT32_Unmarshal(target, buffer, size) \
126             UINT32_Unmarshal((UINT32 *)(target), buffer, size)
127 //     INT32_Marshal not referenced
128 //   UINT64 definition from table 2:3
129 TPM_RC
130 UINT64_Unmarshal(UINT64 *target, BYTE **buffer, INT32 *size);
131 UINT16
132 UINT64_Marshal(UINT64 *source, BYTE **buffer, INT32 *size);
133
134 //   INT64 definition from table 2:3
135 //     INT64_Unmarshal not referenced
136 //     INT64_Marshal not referenced
137
138
139 // Table 2:4 - Defines for Logic Values (DefinesTable)
140
141
142 // Table 2:5 - Definition of Types for Documentation Clarity (TypesTable)
143 //   UINT32 definition from table 2:5
144 //     TPM_ALGORITHM_ID_Unmarshal not referenced
145 //     TPM_ALGORITHM_ID_Marshal not referenced
146 //   UINT32 definition from table 2:5
147 //     TPM_MODIFIER_INDICATOR_Unmarshal not referenced
148 //     TPM_MODIFIER_INDICATOR_Marshal not referenced
149 //   UINT32 definition from table 2:5
150 //     TPM_AUTHORIZATION_SIZE_Unmarshal not referenced
151 //     TPM_AUTHORIZATION_SIZE_Marshal not referenced
152 //   UINT32 definition from table 2:5
153 //     TPM_PARAMETER_SIZE_Unmarshal not referenced
154 //     TPM_PARAMETER_SIZE_Marshal not referenced
155 //   UINT16 definition from table 2:5
156 //     TPM_KEY_SIZE_Unmarshal not referenced
157 //     TPM_KEY_SIZE_Marshal not referenced
158 //   UINT16 definition from table 2:5
159 #define TPM_KEY_BITS_Unmarshal(target, buffer, size) \
160             UINT16_Unmarshal((UINT16 *)(target), buffer, size)
161 #define TPM_KEY_BITS_Marshal(source, buffer, size) \
162             UINT16_Marshal((UINT16 *)(source), buffer, size)
163
164
165 // Table 2:6 - Definition of TPM_SPEC Constants  (ConstantsTable)
166 //     TPM_SPEC_Unmarshal not referenced
167 //     TPM_SPEC_Marshal not referenced
168
169
170 // Table 2:7 - Definition of TPM_GENERATED Constants  (ConstantsTable)
171 //     TPM_GENERATED_Unmarshal not referenced
172 #define TPM_GENERATED_Marshal(source, buffer, size) \
173             UINT32_Marshal((UINT32 *)(source), buffer, size)
174
175
176 // Table 2:9 - Definition of TPM_ALG_ID Constants  (ConstantsTable)
177 #define TPM_ALG_ID_Unmarshal(target, buffer, size) \
178             UINT16_Unmarshal((UINT16 *)(target), buffer, size)
179 #define TPM_ALG_ID_Marshal(source, buffer, size) \
180             UINT16_Marshal((UINT16 *)(source), buffer, size)
181
182
183 // Table 2:10 - Definition of TPM_ECC_CURVE Constants  (ConstantsTable)
184 #ifdef    TPM_ALG_ECC
185 #define TPM_ECC_CURVE_Unmarshal(target, buffer, size) \
186             UINT16_Unmarshal((UINT16 *)(target), buffer, size)
187 #define TPM_ECC_CURVE_Marshal(source, buffer, size) \
188             UINT16_Marshal((UINT16 *)(source), buffer, size)
189 #endif // TPM_ALG_ECC
190
191
192 // Table 2:13 - Definition of TPM_CC Constants  (ConstantsTable)
193 #define TPM_CC_Unmarshal(target, buffer, size) \
194             UINT32_Unmarshal((UINT32 *)(target), buffer, size)
195 #define TPM_CC_Marshal(source, buffer, size) \
196             UINT32_Marshal((UINT32 *)(source), buffer, size)
197
198
199 // Table 2:17 - Definition of TPM_RC Constants  (ConstantsTable)
200 //     TPM_RC_Unmarshal not referenced
201 #define TPM_RC_Marshal(source, buffer, size) \
202             UINT32_Marshal((UINT32 *)(source), buffer, size)
203
204
205 // Table 2:18 - Definition of TPM_CLOCK_ADJUST Constants  (ConstantsTable)
206 TPM_RC
207 TPM_CLOCK_ADJUST_Unmarshal(TPM_CLOCK_ADJUST *target, BYTE **buffer, INT32 *size);
208
209 //     TPM_CLOCK_ADJUST_Marshal not referenced
210
211
212 // Table 2:19 - Definition of TPM_EO Constants  (ConstantsTable)
213 TPM_RC
214 TPM_EO_Unmarshal(TPM_EO *target, BYTE **buffer, INT32 *size);
215
216 //     TPM_EO_Marshal not referenced
217
218
219 // Table 2:20 - Definition of TPM_ST Constants  (ConstantsTable)
220 #define TPM_ST_Unmarshal(target, buffer, size) \
221             UINT16_Unmarshal((UINT16 *)(target), buffer, size)
222 #define TPM_ST_Marshal(source, buffer, size) \
223             UINT16_Marshal((UINT16 *)(source), buffer, size)
224
225
226 // Table 2:21 - Definition of TPM_SU Constants  (ConstantsTable)
227 TPM_RC
228 TPM_SU_Unmarshal(TPM_SU *target, BYTE **buffer, INT32 *size);
229
230 //     TPM_SU_Marshal not referenced
231
232
233 // Table 2:22 - Definition of TPM_SE Constants  (ConstantsTable)
234 TPM_RC
235 TPM_SE_Unmarshal(TPM_SE *target, BYTE **buffer, INT32 *size);
236
237 //     TPM_SE_Marshal not referenced
238
239
240 // Table 2:23 - Definition of TPM_CAP Constants (ConstantsTable)
241 TPM_RC
242 TPM_CAP_Unmarshal(TPM_CAP *target, BYTE **buffer, INT32 *size);
243
244 #define TPM_CAP_Marshal(source, buffer, size) \
245             UINT32_Marshal((UINT32 *)(source), buffer, size)
246
247
248 // Table 2:24 - Definition of TPM_PT Constants  (ConstantsTable)
249 //     TPM_PT_Unmarshal not referenced
250 #define TPM_PT_Marshal(source, buffer, size) \
251             UINT32_Marshal((UINT32 *)(source), buffer, size)
252
253
254 // Table 2:25 - Definition of TPM_PT_PCR Constants  (ConstantsTable)
255 //     TPM_PT_PCR_Unmarshal not referenced
256 //     TPM_PT_PCR_Marshal not referenced
257
258
259 // Table 2:26 - Definition of TPM_PS Constants  (ConstantsTable)
260 //     TPM_PS_Unmarshal not referenced
261 //     TPM_PS_Marshal not referenced
262
263
264 // Table 2:27 - Definition of Types for Handles (TypesTable)
265 //   UINT32 definition from table 2:27
266 #define TPM_HANDLE_Unmarshal(target, buffer, size) \
267             UINT32_Unmarshal((UINT32 *)(target), buffer, size)
268 #define TPM_HANDLE_Marshal(source, buffer, size) \
269             UINT32_Marshal((UINT32 *)(source), buffer, size)
270
271
272 // Table 2:28 - Definition of TPM_HT Constants  (ConstantsTable)
273 //     TPM_HT_Unmarshal not referenced
274 //     TPM_HT_Marshal not referenced
275
276
277 // Table 2:29 - Definition of TPM_RH Constants  (ConstantsTable)
278 //     TPM_RH_Unmarshal not referenced
279 //     TPM_RH_Marshal not referenced
280
281
282 // Table 2:30 - Definition of TPM_HC Constants  (ConstantsTable)
283 //     TPM_HC_Unmarshal not referenced
284 //     TPM_HC_Marshal not referenced
285
286
287 // Table 2:31 - Definition of TPMA_ALGORITHM Bits (BitsTable)
288 //     TPMA_ALGORITHM_Unmarshal not referenced
289 #define TPMA_ALGORITHM_Marshal(source, buffer, size) \
290             UINT32_Marshal((UINT32 *)(source), buffer, size)
291
292
293 // Table 2:32 - Definition of TPMA_OBJECT Bits (BitsTable)
294 TPM_RC
295 TPMA_OBJECT_Unmarshal(TPMA_OBJECT *target, BYTE **buffer, INT32 *size);
296
297 #define TPMA_OBJECT_Marshal(source, buffer, size) \
298             UINT32_Marshal((UINT32 *)(source), buffer, size)
299
300
301 // Table 2:33 - Definition of TPMA_SESSION Bits  (BitsTable)
302 TPM_RC
303 TPMA_SESSION_Unmarshal(TPMA_SESSION *target, BYTE **buffer, INT32 *size);
304
305 #define TPMA_SESSION_Marshal(source, buffer, size) \
306             UINT8_Marshal((UINT8 *)(source), buffer, size)
307
308
309 // Table 2:34 - Definition of TPMA_LOCALITY Bits  (BitsTable)
310 #define TPMA_LOCALITY_Unmarshal(target, buffer, size) \
311             UINT8_Unmarshal((UINT8 *)(target), buffer, size)
312 #define TPMA_LOCALITY_Marshal(source, buffer, size) \
313             UINT8_Marshal((UINT8 *)(source), buffer, size)
314
315
316 // Table 2:35 - Definition of TPMA_PERMANENT Bits  (BitsTable)
317 //     TPMA_PERMANENT_Unmarshal not referenced
318 //     TPMA_PERMANENT_Marshal not referenced
319
320
321 // Table 2:36 - Definition of TPMA_STARTUP_CLEAR Bits  (BitsTable)
322 //     TPMA_STARTUP_CLEAR_Unmarshal not referenced
323 //     TPMA_STARTUP_CLEAR_Marshal not referenced
324
325
326 // Table 2:37 - Definition of TPMA_MEMORY Bits  (BitsTable)
327 //     TPMA_MEMORY_Unmarshal not referenced
328 //     TPMA_MEMORY_Marshal not referenced
329
330
331 // Table 2:38 - Definition of TPMA_CC Bits  (BitsTable)
332 //     TPMA_CC_Unmarshal not referenced
333 #define TPMA_CC_Marshal(source, buffer, size) \
334             UINT32_Marshal((UINT32 *)(source), buffer, size)
335
336
337 // Table 2:39 - Definition of TPMI_YES_NO Type (TypeTable)
338 TPM_RC
339 TPMI_YES_NO_Unmarshal(TPMI_YES_NO *target, BYTE **buffer, INT32 *size);
340
341 #define TPMI_YES_NO_Marshal(source, buffer, size) \
342             BYTE_Marshal((BYTE *)(source), buffer, size)
343
344
345 // Table 2:40 - Definition of TPMI_DH_OBJECT Type  (TypeTable)
346 TPM_RC
347 TPMI_DH_OBJECT_Unmarshal(TPMI_DH_OBJECT *target, BYTE **buffer, INT32 *size, BOOL flag);
348
349 #define TPMI_DH_OBJECT_Marshal(source, buffer, size) \
350             TPM_HANDLE_Marshal((TPM_HANDLE *)(source), buffer, size)
351
352
353 // Table 2:41 - Definition of TPMI_DH_PERSISTENT Type  (TypeTable)
354 TPM_RC
355 TPMI_DH_PERSISTENT_Unmarshal(TPMI_DH_PERSISTENT *target, BYTE **buffer, INT32 *size);
356
357 //     TPMI_DH_PERSISTENT_Marshal not referenced
358
359
360 // Table 2:42 - Definition of TPMI_DH_ENTITY Type  (TypeTable)
361 TPM_RC
362 TPMI_DH_ENTITY_Unmarshal(TPMI_DH_ENTITY *target, BYTE **buffer, INT32 *size, BOOL flag);
363
364 //     TPMI_DH_ENTITY_Marshal not referenced
365
366
367 // Table 2:43 - Definition of TPMI_DH_PCR Type  (TypeTable)
368 TPM_RC
369 TPMI_DH_PCR_Unmarshal(TPMI_DH_PCR *target, BYTE **buffer, INT32 *size, BOOL flag);
370
371 //     TPMI_DH_PCR_Marshal not referenced
372
373
374 // Table 2:44 - Definition of TPMI_SH_AUTH_SESSION Type  (TypeTable)
375 TPM_RC
376 TPMI_SH_AUTH_SESSION_Unmarshal(TPMI_SH_AUTH_SESSION *target, BYTE **buffer, INT32 *size, BOOL flag);
377
378 #define TPMI_SH_AUTH_SESSION_Marshal(source, buffer, size) \
379             TPM_HANDLE_Marshal((TPM_HANDLE *)(source), buffer, size)
380
381
382 // Table 2:45 - Definition of TPMI_SH_HMAC Type  (TypeTable)
383 TPM_RC
384 TPMI_SH_HMAC_Unmarshal(TPMI_SH_HMAC *target, BYTE **buffer, INT32 *size);
385
386 //     TPMI_SH_HMAC_Marshal not referenced
387
388
389 // Table 2:46 - Definition of TPMI_SH_POLICY Type  (TypeTable)
390 TPM_RC
391 TPMI_SH_POLICY_Unmarshal(TPMI_SH_POLICY *target, BYTE **buffer, INT32 *size);
392
393 //     TPMI_SH_POLICY_Marshal not referenced
394
395
396 // Table 2:47 - Definition of TPMI_DH_CONTEXT Type  (TypeTable)
397 TPM_RC
398 TPMI_DH_CONTEXT_Unmarshal(TPMI_DH_CONTEXT *target, BYTE **buffer, INT32 *size);
399
400 #define TPMI_DH_CONTEXT_Marshal(source, buffer, size) \
401             TPM_HANDLE_Marshal((TPM_HANDLE *)(source), buffer, size)
402
403
404 // Table 2:48 - Definition of TPMI_RH_HIERARCHY Type  (TypeTable)
405 TPM_RC
406 TPMI_RH_HIERARCHY_Unmarshal(TPMI_RH_HIERARCHY *target, BYTE **buffer, INT32 *size, BOOL flag);
407
408 #define TPMI_RH_HIERARCHY_Marshal(source, buffer, size) \
409             TPM_HANDLE_Marshal((TPM_HANDLE *)(source), buffer, size)
410
411
412 // Table 2:49 - Definition of TPMI_RH_ENABLES Type  (TypeTable)
413 TPM_RC
414 TPMI_RH_ENABLES_Unmarshal(TPMI_RH_ENABLES *target, BYTE **buffer, INT32 *size, BOOL flag);
415
416 //     TPMI_RH_ENABLES_Marshal not referenced
417
418
419 // Table 2:50 - Definition of TPMI_RH_HIERARCHY_AUTH Type  (TypeTable)
420 TPM_RC
421 TPMI_RH_HIERARCHY_AUTH_Unmarshal(TPMI_RH_HIERARCHY_AUTH *target, BYTE **buffer, INT32 *size);
422
423 //     TPMI_RH_HIERARCHY_AUTH_Marshal not referenced
424
425
426 // Table 2:51 - Definition of TPMI_RH_PLATFORM Type  (TypeTable)
427 TPM_RC
428 TPMI_RH_PLATFORM_Unmarshal(TPMI_RH_PLATFORM *target, BYTE **buffer, INT32 *size);
429
430 //     TPMI_RH_PLATFORM_Marshal not referenced
431
432
433 // Table 2:52 - Definition of TPMI_RH_OWNER Type  (TypeTable)
434 //     TPMI_RH_OWNER_Unmarshal not referenced
435 //     TPMI_RH_OWNER_Marshal not referenced
436
437
438 // Table 2:53 - Definition of TPMI_RH_ENDORSEMENT Type  (TypeTable)
439 TPM_RC
440 TPMI_RH_ENDORSEMENT_Unmarshal(TPMI_RH_ENDORSEMENT *target, BYTE **buffer, INT32 *size, BOOL flag);
441
442 //     TPMI_RH_ENDORSEMENT_Marshal not referenced
443
444
445 // Table 2:54 - Definition of TPMI_RH_PROVISION Type  (TypeTable)
446 TPM_RC
447 TPMI_RH_PROVISION_Unmarshal(TPMI_RH_PROVISION *target, BYTE **buffer, INT32 *size);
448
449 //     TPMI_RH_PROVISION_Marshal not referenced
450
451
452 // Table 2:55 - Definition of TPMI_RH_CLEAR Type  (TypeTable)
453 TPM_RC
454 TPMI_RH_CLEAR_Unmarshal(TPMI_RH_CLEAR *target, BYTE **buffer, INT32 *size);
455
456 //     TPMI_RH_CLEAR_Marshal not referenced
457
458
459 // Table 2:56 - Definition of TPMI_RH_NV_AUTH Type  (TypeTable)
460 TPM_RC
461 TPMI_RH_NV_AUTH_Unmarshal(TPMI_RH_NV_AUTH *target, BYTE **buffer, INT32 *size);
462
463 //     TPMI_RH_NV_AUTH_Marshal not referenced
464
465
466 // Table 2:57 - Definition of TPMI_RH_LOCKOUT Type  (TypeTable)
467 TPM_RC
468 TPMI_RH_LOCKOUT_Unmarshal(TPMI_RH_LOCKOUT *target, BYTE **buffer, INT32 *size);
469
470 //     TPMI_RH_LOCKOUT_Marshal not referenced
471
472
473 // Table 2:58 - Definition of TPMI_RH_NV_INDEX Type  (TypeTable)
474 TPM_RC
475 TPMI_RH_NV_INDEX_Unmarshal(TPMI_RH_NV_INDEX *target, BYTE **buffer, INT32 *size);
476
477 #define TPMI_RH_NV_INDEX_Marshal(source, buffer, size) \
478             TPM_HANDLE_Marshal((TPM_HANDLE *)(source), buffer, size)
479
480
481 // Table 2:59 - Definition of TPMI_ALG_HASH Type  (TypeTable)
482 TPM_RC
483 TPMI_ALG_HASH_Unmarshal(TPMI_ALG_HASH *target, BYTE **buffer, INT32 *size, BOOL flag);
484
485 #define TPMI_ALG_HASH_Marshal(source, buffer, size) \
486             TPM_ALG_ID_Marshal((TPM_ALG_ID *)(source), buffer, size)
487
488
489 // Table 2:60 - Definition of TPMI_ALG_ASYM Type (TypeTable)
490 //     TPMI_ALG_ASYM_Unmarshal not referenced
491 //     TPMI_ALG_ASYM_Marshal not referenced
492
493
494 // Table 2:61 - Definition of TPMI_ALG_SYM Type (TypeTable)
495 TPM_RC
496 TPMI_ALG_SYM_Unmarshal(TPMI_ALG_SYM *target, BYTE **buffer, INT32 *size, BOOL flag);
497
498 //     TPMI_ALG_SYM_Marshal not referenced
499
500
501 // Table 2:62 - Definition of TPMI_ALG_SYM_OBJECT Type (TypeTable)
502 TPM_RC
503 TPMI_ALG_SYM_OBJECT_Unmarshal(TPMI_ALG_SYM_OBJECT *target, BYTE **buffer, INT32 *size, BOOL flag);
504
505 #define TPMI_ALG_SYM_OBJECT_Marshal(source, buffer, size) \
506             TPM_ALG_ID_Marshal((TPM_ALG_ID *)(source), buffer, size)
507
508
509 // Table 2:63 - Definition of TPMI_ALG_SYM_MODE Type (TypeTable)
510 TPM_RC
511 TPMI_ALG_SYM_MODE_Unmarshal(TPMI_ALG_SYM_MODE *target, BYTE **buffer, INT32 *size, BOOL flag);
512
513 #define TPMI_ALG_SYM_MODE_Marshal(source, buffer, size) \
514             TPM_ALG_ID_Marshal((TPM_ALG_ID *)(source), buffer, size)
515
516
517 // Table 2:64 - Definition of TPMI_ALG_KDF Type (TypeTable)
518 TPM_RC
519 TPMI_ALG_KDF_Unmarshal(TPMI_ALG_KDF *target, BYTE **buffer, INT32 *size, BOOL flag);
520
521 #define TPMI_ALG_KDF_Marshal(source, buffer, size) \
522             TPM_ALG_ID_Marshal((TPM_ALG_ID *)(source), buffer, size)
523
524
525 // Table 2:65 - Definition of TPMI_ALG_SIG_SCHEME Type (TypeTable)
526 TPM_RC
527 TPMI_ALG_SIG_SCHEME_Unmarshal(TPMI_ALG_SIG_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
528
529 #define TPMI_ALG_SIG_SCHEME_Marshal(source, buffer, size) \
530             TPM_ALG_ID_Marshal((TPM_ALG_ID *)(source), buffer, size)
531
532
533 // Table 2:66 - Definition of TPMI_ECC_KEY_EXCHANGE Type (TypeTable)
534 #ifdef    TPM_ALG_ECC
535 TPM_RC
536 TPMI_ECC_KEY_EXCHANGE_Unmarshal(TPMI_ECC_KEY_EXCHANGE *target, BYTE **buffer, INT32 *size, BOOL flag);
537
538 //     TPMI_ECC_KEY_EXCHANGE_Marshal not referenced
539 #endif // TPM_ALG_ECC
540
541
542 // Table 2:67 - Definition of TPMI_ST_COMMAND_TAG Type (TypeTable)
543 TPM_RC
544 TPMI_ST_COMMAND_TAG_Unmarshal(TPMI_ST_COMMAND_TAG *target, BYTE **buffer, INT32 *size);
545
546 //     TPMI_ST_COMMAND_TAG_Marshal not referenced
547 TPM_RC
548 TPMS_EMPTY_Unmarshal(TPMS_EMPTY *target, BYTE **buffer, INT32 *size);
549 UINT16
550 TPMS_EMPTY_Marshal(TPMS_EMPTY *source, BYTE **buffer, INT32 *size);
551
552
553 // Table 2:69 - Definition of TPMS_ALGORITHM_DESCRIPTION Structure  (StructureTable)
554 //     TPMS_ALGORITHM_DESCRIPTION_Unmarshal not referenced
555 //     TPMS_ALGORITHM_DESCRIPTION_Marshal not referenced
556
557
558 // Table 2:70 - Definition of TPMU_HA Union  (UnionTable)
559 TPM_RC
560 TPMU_HA_Unmarshal(TPMU_HA *target, BYTE **buffer, INT32 *size, UINT32 selector);
561 UINT16
562 TPMU_HA_Marshal(TPMU_HA *source, BYTE **buffer, INT32 *size, UINT32 selector);
563
564
565 // Table 2:71 - Definition of TPMT_HA Structure  (StructureTable)
566 TPM_RC
567 TPMT_HA_Unmarshal(TPMT_HA *target, BYTE **buffer, INT32 *size, BOOL flag);
568 UINT16
569 TPMT_HA_Marshal(TPMT_HA *source, BYTE **buffer, INT32 *size);
570
571
572 // Table 2:72 - Definition of TPM2B_DIGEST Structure (StructureTable)
573 TPM_RC
574 TPM2B_DIGEST_Unmarshal(TPM2B_DIGEST *target, BYTE **buffer, INT32 *size);
575 UINT16
576 TPM2B_DIGEST_Marshal(TPM2B_DIGEST *source, BYTE **buffer, INT32 *size);
577
578
579 // Table 2:73 - Definition of TPM2B_DATA Structure (StructureTable)
580 TPM_RC
581 TPM2B_DATA_Unmarshal(TPM2B_DATA *target, BYTE **buffer, INT32 *size);
582 UINT16
583 TPM2B_DATA_Marshal(TPM2B_DATA *source, BYTE **buffer, INT32 *size);
584
585
586 // Table 2:74 - Definition of Types for TPM2B_NONCE (TypesTable)
587 //   TPM2B_DIGEST definition from table 2:74
588 #define TPM2B_NONCE_Unmarshal(target, buffer, size) \
589             TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)(target), buffer, size)
590 #define TPM2B_NONCE_Marshal(source, buffer, size) \
591             TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)(source), buffer, size)
592
593
594 // Table 2:75 - Definition of Types for TPM2B_AUTH (TypesTable)
595 //   TPM2B_DIGEST definition from table 2:75
596 #define TPM2B_AUTH_Unmarshal(target, buffer, size) \
597             TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)(target), buffer, size)
598 #define TPM2B_AUTH_Marshal(source, buffer, size) \
599             TPM2B_DIGEST_Marshal((TPM2B_DIGEST *)(source), buffer, size)
600
601
602 // Table 2:76 - Definition of Types for TPM2B_OPERAND (TypesTable)
603 //   TPM2B_DIGEST definition from table 2:76
604 #define TPM2B_OPERAND_Unmarshal(target, buffer, size) \
605             TPM2B_DIGEST_Unmarshal((TPM2B_DIGEST *)(target), buffer, size)
606 //     TPM2B_OPERAND_Marshal not referenced
607
608
609 // Table 2:77 - Definition of TPM2B_EVENT Structure (StructureTable)
610 TPM_RC
611 TPM2B_EVENT_Unmarshal(TPM2B_EVENT *target, BYTE **buffer, INT32 *size);
612
613 //     TPM2B_EVENT_Marshal not referenced
614
615
616 // Table 2:78 - Definition of TPM2B_MAX_BUFFER Structure (StructureTable)
617 TPM_RC
618 TPM2B_MAX_BUFFER_Unmarshal(TPM2B_MAX_BUFFER *target, BYTE **buffer, INT32 *size);
619 UINT16
620 TPM2B_MAX_BUFFER_Marshal(TPM2B_MAX_BUFFER *source, BYTE **buffer, INT32 *size);
621
622
623 // Table 2:79 - Definition of TPM2B_MAX_NV_BUFFER Structure (StructureTable)
624 TPM_RC
625 TPM2B_MAX_NV_BUFFER_Unmarshal(TPM2B_MAX_NV_BUFFER *target, BYTE **buffer, INT32 *size);
626 UINT16
627 TPM2B_MAX_NV_BUFFER_Marshal(TPM2B_MAX_NV_BUFFER *source, BYTE **buffer, INT32 *size);
628
629
630 // Table 2:80 - Definition of TPM2B_TIMEOUT Structure  (StructureTable)
631 TPM_RC
632 TPM2B_TIMEOUT_Unmarshal(TPM2B_TIMEOUT *target, BYTE **buffer, INT32 *size);
633 UINT16
634 TPM2B_TIMEOUT_Marshal(TPM2B_TIMEOUT *source, BYTE **buffer, INT32 *size);
635
636
637 // Table 2:81 - Definition of TPM2B_IV Structure  (StructureTable)
638 TPM_RC
639 TPM2B_IV_Unmarshal(TPM2B_IV *target, BYTE **buffer, INT32 *size);
640 UINT16
641 TPM2B_IV_Marshal(TPM2B_IV *source, BYTE **buffer, INT32 *size);
642
643
644 // Table 2:82 - Definition of TPMU_NAME Union  (UnionTable)
645
646
647 // Table 2:83 - Definition of TPM2B_NAME Structure (StructureTable)
648 TPM_RC
649 TPM2B_NAME_Unmarshal(TPM2B_NAME *target, BYTE **buffer, INT32 *size);
650 UINT16
651 TPM2B_NAME_Marshal(TPM2B_NAME *source, BYTE **buffer, INT32 *size);
652
653
654 // Table 2:84 - Definition of TPMS_PCR_SELECT Structure (StructureTable)
655 //     TPMS_PCR_SELECT_Unmarshal not referenced
656 //     TPMS_PCR_SELECT_Marshal not referenced
657
658
659 // Table 2:85 - Definition of TPMS_PCR_SELECTION Structure (StructureTable)
660 TPM_RC
661 TPMS_PCR_SELECTION_Unmarshal(TPMS_PCR_SELECTION *target, BYTE **buffer, INT32 *size);
662 UINT16
663 TPMS_PCR_SELECTION_Marshal(TPMS_PCR_SELECTION *source, BYTE **buffer, INT32 *size);
664
665
666 // Table 2:88 - Definition of TPMT_TK_CREATION Structure (StructureTable)
667 TPM_RC
668 TPMT_TK_CREATION_Unmarshal(TPMT_TK_CREATION *target, BYTE **buffer, INT32 *size);
669 UINT16
670 TPMT_TK_CREATION_Marshal(TPMT_TK_CREATION *source, BYTE **buffer, INT32 *size);
671
672
673 // Table 2:89 - Definition of TPMT_TK_VERIFIED Structure (StructureTable)
674 TPM_RC
675 TPMT_TK_VERIFIED_Unmarshal(TPMT_TK_VERIFIED *target, BYTE **buffer, INT32 *size);
676 UINT16
677 TPMT_TK_VERIFIED_Marshal(TPMT_TK_VERIFIED *source, BYTE **buffer, INT32 *size);
678
679
680 // Table 2:90 - Definition of TPMT_TK_AUTH Structure (StructureTable)
681 TPM_RC
682 TPMT_TK_AUTH_Unmarshal(TPMT_TK_AUTH *target, BYTE **buffer, INT32 *size);
683 UINT16
684 TPMT_TK_AUTH_Marshal(TPMT_TK_AUTH *source, BYTE **buffer, INT32 *size);
685
686
687 // Table 2:91 - Definition of TPMT_TK_HASHCHECK Structure (StructureTable)
688 TPM_RC
689 TPMT_TK_HASHCHECK_Unmarshal(TPMT_TK_HASHCHECK *target, BYTE **buffer, INT32 *size);
690 UINT16
691 TPMT_TK_HASHCHECK_Marshal(TPMT_TK_HASHCHECK *source, BYTE **buffer, INT32 *size);
692
693
694 // Table 2:92 - Definition of TPMS_ALG_PROPERTY Structure  (StructureTable)
695 //     TPMS_ALG_PROPERTY_Unmarshal not referenced
696 UINT16
697 TPMS_ALG_PROPERTY_Marshal(TPMS_ALG_PROPERTY *source, BYTE **buffer, INT32 *size);
698
699
700 // Table 2:93 - Definition of TPMS_TAGGED_PROPERTY Structure  (StructureTable)
701 //     TPMS_TAGGED_PROPERTY_Unmarshal not referenced
702 UINT16
703 TPMS_TAGGED_PROPERTY_Marshal(TPMS_TAGGED_PROPERTY *source, BYTE **buffer, INT32 *size);
704
705
706 // Table 2:94 - Definition of TPMS_TAGGED_PCR_SELECT Structure  (StructureTable)
707 //     TPMS_TAGGED_PCR_SELECT_Unmarshal not referenced
708 UINT16
709 TPMS_TAGGED_PCR_SELECT_Marshal(TPMS_TAGGED_PCR_SELECT *source, BYTE **buffer, INT32 *size);
710
711
712 // Table 2:95 - Definition of TPML_CC Structure (StructureTable)
713 TPM_RC
714 TPML_CC_Unmarshal(TPML_CC *target, BYTE **buffer, INT32 *size);
715 UINT16
716 TPML_CC_Marshal(TPML_CC *source, BYTE **buffer, INT32 *size);
717
718
719 // Table 2:96 - Definition of TPML_CCA Structure  (StructureTable)
720 //     TPML_CCA_Unmarshal not referenced
721 UINT16
722 TPML_CCA_Marshal(TPML_CCA *source, BYTE **buffer, INT32 *size);
723
724
725 // Table 2:97 - Definition of TPML_ALG Structure (StructureTable)
726 TPM_RC
727 TPML_ALG_Unmarshal(TPML_ALG *target, BYTE **buffer, INT32 *size);
728 UINT16
729 TPML_ALG_Marshal(TPML_ALG *source, BYTE **buffer, INT32 *size);
730
731
732 // Table 2:98 - Definition of TPML_HANDLE Structure  (StructureTable)
733 //     TPML_HANDLE_Unmarshal not referenced
734 UINT16
735 TPML_HANDLE_Marshal(TPML_HANDLE *source, BYTE **buffer, INT32 *size);
736
737
738 // Table 2:99 - Definition of TPML_DIGEST Structure (StructureTable)
739 TPM_RC
740 TPML_DIGEST_Unmarshal(TPML_DIGEST *target, BYTE **buffer, INT32 *size);
741 UINT16
742 TPML_DIGEST_Marshal(TPML_DIGEST *source, BYTE **buffer, INT32 *size);
743
744
745 // Table 2:100 - Definition of TPML_DIGEST_VALUES Structure (StructureTable)
746 TPM_RC
747 TPML_DIGEST_VALUES_Unmarshal(TPML_DIGEST_VALUES *target, BYTE **buffer, INT32 *size);
748 UINT16
749 TPML_DIGEST_VALUES_Marshal(TPML_DIGEST_VALUES *source, BYTE **buffer, INT32 *size);
750
751
752 // Table 2:101 - Definition of TPM2B_DIGEST_VALUES Structure (StructureTable)
753 //     TPM2B_DIGEST_VALUES_Unmarshal not referenced
754 //     TPM2B_DIGEST_VALUES_Marshal not referenced
755
756
757 // Table 2:102 - Definition of TPML_PCR_SELECTION Structure (StructureTable)
758 TPM_RC
759 TPML_PCR_SELECTION_Unmarshal(TPML_PCR_SELECTION *target, BYTE **buffer, INT32 *size);
760 UINT16
761 TPML_PCR_SELECTION_Marshal(TPML_PCR_SELECTION *source, BYTE **buffer, INT32 *size);
762
763
764 // Table 2:103 - Definition of TPML_ALG_PROPERTY Structure  (StructureTable)
765 //     TPML_ALG_PROPERTY_Unmarshal not referenced
766 UINT16
767 TPML_ALG_PROPERTY_Marshal(TPML_ALG_PROPERTY *source, BYTE **buffer, INT32 *size);
768
769
770 // Table 2:104 - Definition of TPML_TAGGED_TPM_PROPERTY Structure  (StructureTable)
771 //     TPML_TAGGED_TPM_PROPERTY_Unmarshal not referenced
772 UINT16
773 TPML_TAGGED_TPM_PROPERTY_Marshal(TPML_TAGGED_TPM_PROPERTY *source, BYTE **buffer, INT32 *size);
774
775
776 // Table 2:105 - Definition of TPML_TAGGED_PCR_PROPERTY Structure  (StructureTable)
777 //     TPML_TAGGED_PCR_PROPERTY_Unmarshal not referenced
778 UINT16
779 TPML_TAGGED_PCR_PROPERTY_Marshal(TPML_TAGGED_PCR_PROPERTY *source, BYTE **buffer, INT32 *size);
780
781
782 // Table 2:106 - Definition of TPML_ECC_CURVE Structure  (StructureTable)
783 #ifdef    TPM_ALG_ECC
784 //     TPML_ECC_CURVE_Unmarshal not referenced
785 UINT16
786 TPML_ECC_CURVE_Marshal(TPML_ECC_CURVE *source, BYTE **buffer, INT32 *size);
787
788 #endif // TPM_ALG_ECC
789
790
791 // Table 2:107 - Definition of TPMU_CAPABILITIES Union  (UnionTable)
792 //     TPMU_CAPABILITIES_Unmarshal not referenced
793 UINT16
794 TPMU_CAPABILITIES_Marshal(TPMU_CAPABILITIES *source, BYTE **buffer, INT32 *size, UINT32 selector);
795
796
797 // Table 2:108 - Definition of TPMS_CAPABILITY_DATA Structure  (StructureTable)
798 //     TPMS_CAPABILITY_DATA_Unmarshal not referenced
799 UINT16
800 TPMS_CAPABILITY_DATA_Marshal(TPMS_CAPABILITY_DATA *source, BYTE **buffer, INT32 *size);
801
802
803 // Table 2:109 - Definition of TPMS_CLOCK_INFO Structure (StructureTable)
804 //     TPMS_CLOCK_INFO_Unmarshal not referenced
805 UINT16
806 TPMS_CLOCK_INFO_Marshal(TPMS_CLOCK_INFO *source, BYTE **buffer, INT32 *size);
807
808
809 // Table 2:110 - Definition of TPMS_TIME_INFO Structure (StructureTable)
810 //     TPMS_TIME_INFO_Unmarshal not referenced
811 UINT16
812 TPMS_TIME_INFO_Marshal(TPMS_TIME_INFO *source, BYTE **buffer, INT32 *size);
813
814
815 // Table 2:111 - Definition of TPMS_TIME_ATTEST_INFO Structure  (StructureTable)
816 //     TPMS_TIME_ATTEST_INFO_Unmarshal not referenced
817 UINT16
818 TPMS_TIME_ATTEST_INFO_Marshal(TPMS_TIME_ATTEST_INFO *source, BYTE **buffer, INT32 *size);
819
820
821 // Table 2:112 - Definition of TPMS_CERTIFY_INFO Structure  (StructureTable)
822 //     TPMS_CERTIFY_INFO_Unmarshal not referenced
823 UINT16
824 TPMS_CERTIFY_INFO_Marshal(TPMS_CERTIFY_INFO *source, BYTE **buffer, INT32 *size);
825
826
827 // Table 2:113 - Definition of TPMS_QUOTE_INFO Structure  (StructureTable)
828 //     TPMS_QUOTE_INFO_Unmarshal not referenced
829 UINT16
830 TPMS_QUOTE_INFO_Marshal(TPMS_QUOTE_INFO *source, BYTE **buffer, INT32 *size);
831
832
833 // Table 2:114 - Definition of TPMS_COMMAND_AUDIT_INFO Structure  (StructureTable)
834 //     TPMS_COMMAND_AUDIT_INFO_Unmarshal not referenced
835 UINT16
836 TPMS_COMMAND_AUDIT_INFO_Marshal(TPMS_COMMAND_AUDIT_INFO *source, BYTE **buffer, INT32 *size);
837
838
839 // Table 2:115 - Definition of TPMS_SESSION_AUDIT_INFO Structure  (StructureTable)
840 //     TPMS_SESSION_AUDIT_INFO_Unmarshal not referenced
841 UINT16
842 TPMS_SESSION_AUDIT_INFO_Marshal(TPMS_SESSION_AUDIT_INFO *source, BYTE **buffer, INT32 *size);
843
844
845 // Table 2:116 - Definition of TPMS_CREATION_INFO Structure  (StructureTable)
846 //     TPMS_CREATION_INFO_Unmarshal not referenced
847 UINT16
848 TPMS_CREATION_INFO_Marshal(TPMS_CREATION_INFO *source, BYTE **buffer, INT32 *size);
849
850
851 // Table 2:117 - Definition of TPMS_NV_CERTIFY_INFO Structure  (StructureTable)
852 //     TPMS_NV_CERTIFY_INFO_Unmarshal not referenced
853 UINT16
854 TPMS_NV_CERTIFY_INFO_Marshal(TPMS_NV_CERTIFY_INFO *source, BYTE **buffer, INT32 *size);
855
856
857 // Table 2:118 - Definition of TPMI_ST_ATTEST Type  (TypeTable)
858 //     TPMI_ST_ATTEST_Unmarshal not referenced
859 #define TPMI_ST_ATTEST_Marshal(source, buffer, size) \
860             TPM_ST_Marshal((TPM_ST *)(source), buffer, size)
861
862
863 // Table 2:119 - Definition of TPMU_ATTEST Union  (UnionTable)
864 //     TPMU_ATTEST_Unmarshal not referenced
865 UINT16
866 TPMU_ATTEST_Marshal(TPMU_ATTEST *source, BYTE **buffer, INT32 *size, UINT32 selector);
867
868
869 // Table 2:120 - Definition of TPMS_ATTEST Structure  (StructureTable)
870 //     TPMS_ATTEST_Unmarshal not referenced
871 UINT16
872 TPMS_ATTEST_Marshal(TPMS_ATTEST *source, BYTE **buffer, INT32 *size);
873
874
875 // Table 2:121 - Definition of TPM2B_ATTEST Structure  (StructureTable)
876 //     TPM2B_ATTEST_Unmarshal not referenced
877 UINT16
878 TPM2B_ATTEST_Marshal(TPM2B_ATTEST *source, BYTE **buffer, INT32 *size);
879
880
881 // Table 2:122 - Definition of TPMS_AUTH_COMMAND Structure  (StructureTable)
882 //     TPMS_AUTH_COMMAND_Unmarshal not referenced
883 //     TPMS_AUTH_COMMAND_Marshal not referenced
884
885
886 // Table 2:123 - Definition of TPMS_AUTH_RESPONSE Structure  (StructureTable)
887 //     TPMS_AUTH_RESPONSE_Unmarshal not referenced
888 //     TPMS_AUTH_RESPONSE_Marshal not referenced
889
890
891 // Table 2:124 - Definition of TPMI_AES_KEY_BITS Type (TypeTable)
892 #ifdef    TPM_ALG_AES
893 TPM_RC
894 TPMI_AES_KEY_BITS_Unmarshal(TPMI_AES_KEY_BITS *target, BYTE **buffer, INT32 *size);
895
896 #define TPMI_AES_KEY_BITS_Marshal(source, buffer, size) \
897             TPM_KEY_BITS_Marshal((TPM_KEY_BITS *)(source), buffer, size)
898 #endif // TPM_ALG_AES
899
900
901 // Table 2:124 - Definition of TPMI_SM4_KEY_BITS Type (TypeTable)
902 #ifdef    TPM_ALG_SM4
903 TPM_RC
904 TPMI_SM4_KEY_BITS_Unmarshal(TPMI_SM4_KEY_BITS *target, BYTE **buffer, INT32 *size);
905
906 #define TPMI_SM4_KEY_BITS_Marshal(source, buffer, size) \
907             TPM_KEY_BITS_Marshal((TPM_KEY_BITS *)(source), buffer, size)
908 #endif // TPM_ALG_SM4
909
910
911 // Table 2:124 - Definition of TPMI_CAMELLIA_KEY_BITS Type (TypeTable)
912 #ifdef    TPM_ALG_CAMELLIA
913 TPM_RC
914 TPMI_CAMELLIA_KEY_BITS_Unmarshal(TPMI_CAMELLIA_KEY_BITS *target, BYTE **buffer, INT32 *size);
915
916 #define TPMI_CAMELLIA_KEY_BITS_Marshal(source, buffer, size) \
917             TPM_KEY_BITS_Marshal((TPM_KEY_BITS *)(source), buffer, size)
918 #endif // TPM_ALG_CAMELLIA
919
920
921 // Table 2:125 - Definition of TPMU_SYM_KEY_BITS Union (UnionTable)
922 TPM_RC
923 TPMU_SYM_KEY_BITS_Unmarshal(TPMU_SYM_KEY_BITS *target, BYTE **buffer, INT32 *size, UINT32 selector);
924 UINT16
925 TPMU_SYM_KEY_BITS_Marshal(TPMU_SYM_KEY_BITS *source, BYTE **buffer, INT32 *size, UINT32 selector);
926
927
928 // Table 2:126 - Definition of TPMU_SYM_MODE Union (UnionTable)
929 TPM_RC
930 TPMU_SYM_MODE_Unmarshal(TPMU_SYM_MODE *target, BYTE **buffer, INT32 *size, UINT32 selector);
931 UINT16
932 TPMU_SYM_MODE_Marshal(TPMU_SYM_MODE *source, BYTE **buffer, INT32 *size, UINT32 selector);
933
934
935 // Table 2:128 - Definition of TPMT_SYM_DEF Structure (StructureTable)
936 TPM_RC
937 TPMT_SYM_DEF_Unmarshal(TPMT_SYM_DEF *target, BYTE **buffer, INT32 *size, BOOL flag);
938
939 //     TPMT_SYM_DEF_Marshal not referenced
940
941
942 // Table 2:129 - Definition of TPMT_SYM_DEF_OBJECT Structure (StructureTable)
943 TPM_RC
944 TPMT_SYM_DEF_OBJECT_Unmarshal(TPMT_SYM_DEF_OBJECT *target, BYTE **buffer, INT32 *size, BOOL flag);
945 UINT16
946 TPMT_SYM_DEF_OBJECT_Marshal(TPMT_SYM_DEF_OBJECT *source, BYTE **buffer, INT32 *size);
947
948
949 // Table 2:130 - Definition of TPM2B_SYM_KEY Structure (StructureTable)
950 TPM_RC
951 TPM2B_SYM_KEY_Unmarshal(TPM2B_SYM_KEY *target, BYTE **buffer, INT32 *size);
952 UINT16
953 TPM2B_SYM_KEY_Marshal(TPM2B_SYM_KEY *source, BYTE **buffer, INT32 *size);
954
955
956 // Table 2:131 - Definition of TPMS_SYMCIPHER_PARMS Structure (StructureTable)
957 #define TPMS_SYMCIPHER_PARMS_Unmarshal(target, buffer, size) \
958             TPMT_SYM_DEF_OBJECT_Unmarshal((TPMT_SYM_DEF_OBJECT *)&((target)->sym), buffer, size, 0)
959 #define TPMS_SYMCIPHER_PARMS_Marshal(source, buffer, size) \
960             TPMT_SYM_DEF_OBJECT_Marshal((TPMT_SYM_DEF_OBJECT *)&((source)->sym), buffer, size)
961
962
963 // Table 2:132 - Definition of TPM2B_SENSITIVE_DATA Structure (StructureTable)
964 TPM_RC
965 TPM2B_SENSITIVE_DATA_Unmarshal(TPM2B_SENSITIVE_DATA *target, BYTE **buffer, INT32 *size);
966 UINT16
967 TPM2B_SENSITIVE_DATA_Marshal(TPM2B_SENSITIVE_DATA *source, BYTE **buffer, INT32 *size);
968
969
970 // Table 2:133 - Definition of TPMS_SENSITIVE_CREATE Structure  (StructureTable)
971 TPM_RC
972 TPMS_SENSITIVE_CREATE_Unmarshal(TPMS_SENSITIVE_CREATE *target, BYTE **buffer, INT32 *size);
973
974 //     TPMS_SENSITIVE_CREATE_Marshal not referenced
975
976
977 // Table 2:134 - Definition of TPM2B_SENSITIVE_CREATE Structure  (StructureTable)
978 TPM_RC
979 TPM2B_SENSITIVE_CREATE_Unmarshal(TPM2B_SENSITIVE_CREATE *target, BYTE **buffer, INT32 *size);
980
981 //     TPM2B_SENSITIVE_CREATE_Marshal not referenced
982
983
984 // Table 2:135 - Definition of TPMS_SCHEME_HASH Structure (StructureTable)
985 #define TPMS_SCHEME_HASH_Unmarshal(target, buffer, size) \
986             TPMI_ALG_HASH_Unmarshal((TPMI_ALG_HASH *)&((target)->hashAlg), buffer, size, 0)
987 #define TPMS_SCHEME_HASH_Marshal(source, buffer, size) \
988             TPMI_ALG_HASH_Marshal((TPMI_ALG_HASH *)&((source)->hashAlg), buffer, size)
989
990
991 // Table 2:136 - Definition of TPMS_SCHEME_ECDAA Structure (StructureTable)
992 #ifdef    TPM_ALG_ECC
993 TPM_RC
994 TPMS_SCHEME_ECDAA_Unmarshal(TPMS_SCHEME_ECDAA *target, BYTE **buffer, INT32 *size);
995 UINT16
996 TPMS_SCHEME_ECDAA_Marshal(TPMS_SCHEME_ECDAA *source, BYTE **buffer, INT32 *size);
997
998 #endif // TPM_ALG_ECC
999
1000
1001 // Table 2:137 - Definition of TPMI_ALG_KEYEDHASH_SCHEME Type (TypeTable)
1002 TPM_RC
1003 TPMI_ALG_KEYEDHASH_SCHEME_Unmarshal(TPMI_ALG_KEYEDHASH_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1004
1005 #define TPMI_ALG_KEYEDHASH_SCHEME_Marshal(source, buffer, size) \
1006             TPM_ALG_ID_Marshal((TPM_ALG_ID *)(source), buffer, size)
1007
1008
1009 // Table 2:138 - Definition of Types for HMAC_SIG_SCHEME (TypesTable)
1010 //   TPMS_SCHEME_HASH definition from table 2:138
1011 #define TPMS_SCHEME_HMAC_Unmarshal(target, buffer, size) \
1012             TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1013 #define TPMS_SCHEME_HMAC_Marshal(source, buffer, size) \
1014             TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1015
1016
1017 // Table 2:139 - Definition of TPMS_SCHEME_XOR Structure (StructureTable)
1018 TPM_RC
1019 TPMS_SCHEME_XOR_Unmarshal(TPMS_SCHEME_XOR *target, BYTE **buffer, INT32 *size, BOOL flag);
1020 UINT16
1021 TPMS_SCHEME_XOR_Marshal(TPMS_SCHEME_XOR *source, BYTE **buffer, INT32 *size);
1022
1023
1024 // Table 2:140 - Definition of TPMU_SCHEME_KEYEDHASH Union  (UnionTable)
1025 TPM_RC
1026 TPMU_SCHEME_KEYEDHASH_Unmarshal(TPMU_SCHEME_KEYEDHASH *target, BYTE **buffer, INT32 *size, UINT32 selector);
1027 UINT16
1028 TPMU_SCHEME_KEYEDHASH_Marshal(TPMU_SCHEME_KEYEDHASH *source, BYTE **buffer, INT32 *size, UINT32 selector);
1029
1030
1031 // Table 2:141 - Definition of TPMT_KEYEDHASH_SCHEME Structure (StructureTable)
1032 TPM_RC
1033 TPMT_KEYEDHASH_SCHEME_Unmarshal(TPMT_KEYEDHASH_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1034 UINT16
1035 TPMT_KEYEDHASH_SCHEME_Marshal(TPMT_KEYEDHASH_SCHEME *source, BYTE **buffer, INT32 *size);
1036
1037
1038 // Table 2:142 - Definition of Types for RSA Signature Schemes  (TypesTable)
1039 #ifdef    TPM_ALG_RSA
1040 //   TPMS_SCHEME_HASH definition from table 2:142
1041 #ifdef    TPM_ALG_RSA
1042 #define TPMS_SIG_SCHEME_RSASSA_Unmarshal(target, buffer, size) \
1043             TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1044 #define TPMS_SIG_SCHEME_RSASSA_Marshal(source, buffer, size) \
1045             TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1046 #endif // TPM_ALG_RSA
1047 //   TPMS_SCHEME_HASH definition from table 2:142
1048 #ifdef    TPM_ALG_RSA
1049 #define TPMS_SIG_SCHEME_RSAPSS_Unmarshal(target, buffer, size) \
1050             TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1051 #define TPMS_SIG_SCHEME_RSAPSS_Marshal(source, buffer, size) \
1052             TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1053 #endif // TPM_ALG_RSA
1054 #endif // TPM_ALG_RSA
1055
1056
1057 // Table 2:143 - Definition of Types for ECC Signature Schemes  (TypesTable)
1058 #ifdef    TPM_ALG_ECC
1059 //   TPMS_SCHEME_HASH definition from table 2:143
1060 #ifdef    TPM_ALG_ECC
1061 #define TPMS_SIG_SCHEME_ECDSA_Unmarshal(target, buffer, size) \
1062             TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1063 #define TPMS_SIG_SCHEME_ECDSA_Marshal(source, buffer, size) \
1064             TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1065 #endif // TPM_ALG_ECC
1066 //   TPMS_SCHEME_HASH definition from table 2:143
1067 #ifdef    TPM_ALG_ECC
1068 #define TPMS_SIG_SCHEME_SM2_Unmarshal(target, buffer, size) \
1069             TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1070 #define TPMS_SIG_SCHEME_SM2_Marshal(source, buffer, size) \
1071             TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1072 #endif // TPM_ALG_ECC
1073 //   TPMS_SCHEME_HASH definition from table 2:143
1074 #ifdef    TPM_ALG_ECC
1075 #define TPMS_SIG_SCHEME_ECSCHNORR_Unmarshal(target, buffer, size) \
1076             TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1077 #define TPMS_SIG_SCHEME_ECSCHNORR_Marshal(source, buffer, size) \
1078             TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1079 #endif // TPM_ALG_ECC
1080 //   TPMS_SCHEME_ECDAA definition from table 2:143
1081 #ifdef    TPM_ALG_ECC
1082 #define TPMS_SIG_SCHEME_ECDAA_Unmarshal(target, buffer, size) \
1083             TPMS_SCHEME_ECDAA_Unmarshal((TPMS_SCHEME_ECDAA *)(target), buffer, size)
1084 #define TPMS_SIG_SCHEME_ECDAA_Marshal(source, buffer, size) \
1085             TPMS_SCHEME_ECDAA_Marshal((TPMS_SCHEME_ECDAA *)(source), buffer, size)
1086 #endif // TPM_ALG_ECC
1087 #endif // TPM_ALG_ECC
1088
1089
1090 // Table 2:144 - Definition of TPMU_SIG_SCHEME Union  (UnionTable)
1091 TPM_RC
1092 TPMU_SIG_SCHEME_Unmarshal(TPMU_SIG_SCHEME *target, BYTE **buffer, INT32 *size, UINT32 selector);
1093
1094 //     TPMU_SIG_SCHEME_Marshal not referenced
1095
1096
1097 // Table 2:145 - Definition of TPMT_SIG_SCHEME Structure (StructureTable)
1098 TPM_RC
1099 TPMT_SIG_SCHEME_Unmarshal(TPMT_SIG_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1100
1101 //     TPMT_SIG_SCHEME_Marshal not referenced
1102
1103
1104 // Table 2:146 - Definition of Types for Encryption Schemes (TypesTable)
1105 #ifdef    TPM_ALG_RSA
1106 //   TPMS_SCHEME_HASH definition from table 2:146
1107 #ifdef    TPM_ALG_RSA
1108 #define TPMS_ENC_SCHEME_OAEP_Unmarshal(target, buffer, size) \
1109             TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1110 #define TPMS_ENC_SCHEME_OAEP_Marshal(source, buffer, size) \
1111             TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1112 #endif // TPM_ALG_RSA
1113 //   TPMS_EMPTY definition from table 2:146
1114 #ifdef    TPM_ALG_RSA
1115 #define TPMS_ENC_SCHEME_RSAES_Unmarshal(target, buffer, size) \
1116             TPMS_EMPTY_Unmarshal((TPMS_EMPTY *)(target), buffer, size)
1117 #define TPMS_ENC_SCHEME_RSAES_Marshal(source, buffer, size) \
1118             TPMS_EMPTY_Marshal((TPMS_EMPTY *)(source), buffer, size)
1119 #endif // TPM_ALG_RSA
1120 #endif // TPM_ALG_RSA
1121
1122
1123 // Table 2:147 - Definition of Types for ECC Key Exchange (TypesTable)
1124 #ifdef    TPM_ALG_ECC
1125 //   TPMS_SCHEME_HASH definition from table 2:147
1126 #ifdef    TPM_ALG_ECC
1127 #define TPMS_KEY_SCHEME_ECDH_Unmarshal(target, buffer, size) \
1128             TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1129 #define TPMS_KEY_SCHEME_ECDH_Marshal(source, buffer, size) \
1130             TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1131 #endif // TPM_ALG_ECC
1132 //   TPMS_SCHEME_HASH definition from table 2:147
1133 #ifdef    TPM_ALG_ECC
1134 #define TPMS_KEY_SCHEME_ECMQV_Unmarshal(target, buffer, size) \
1135             TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1136 #define TPMS_KEY_SCHEME_ECMQV_Marshal(source, buffer, size) \
1137             TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1138 #endif // TPM_ALG_ECC
1139 #endif // TPM_ALG_ECC
1140
1141
1142 // Table 2:148 - Definition of Types for KDF Schemes (TypesTable)
1143 //   TPMS_SCHEME_HASH definition from table 2:148
1144 #define TPMS_SCHEME_MGF1_Unmarshal(target, buffer, size) \
1145             TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1146 #define TPMS_SCHEME_MGF1_Marshal(source, buffer, size) \
1147             TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1148 //   TPMS_SCHEME_HASH definition from table 2:148
1149 #define TPMS_SCHEME_KDF1_SP800_56A_Unmarshal(target, buffer, size) \
1150             TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1151 #define TPMS_SCHEME_KDF1_SP800_56A_Marshal(source, buffer, size) \
1152             TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1153 //   TPMS_SCHEME_HASH definition from table 2:148
1154 #define TPMS_SCHEME_KDF2_Unmarshal(target, buffer, size) \
1155             TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1156 #define TPMS_SCHEME_KDF2_Marshal(source, buffer, size) \
1157             TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1158 //   TPMS_SCHEME_HASH definition from table 2:148
1159 #define TPMS_SCHEME_KDF1_SP800_108_Unmarshal(target, buffer, size) \
1160             TPMS_SCHEME_HASH_Unmarshal((TPMS_SCHEME_HASH *)(target), buffer, size)
1161 #define TPMS_SCHEME_KDF1_SP800_108_Marshal(source, buffer, size) \
1162             TPMS_SCHEME_HASH_Marshal((TPMS_SCHEME_HASH *)(source), buffer, size)
1163
1164
1165 // Table 2:149 - Definition of TPMU_KDF_SCHEME Union  (UnionTable)
1166 TPM_RC
1167 TPMU_KDF_SCHEME_Unmarshal(TPMU_KDF_SCHEME *target, BYTE **buffer, INT32 *size, UINT32 selector);
1168 UINT16
1169 TPMU_KDF_SCHEME_Marshal(TPMU_KDF_SCHEME *source, BYTE **buffer, INT32 *size, UINT32 selector);
1170
1171
1172 // Table 2:150 - Definition of TPMT_KDF_SCHEME Structure (StructureTable)
1173 TPM_RC
1174 TPMT_KDF_SCHEME_Unmarshal(TPMT_KDF_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1175 UINT16
1176 TPMT_KDF_SCHEME_Marshal(TPMT_KDF_SCHEME *source, BYTE **buffer, INT32 *size);
1177
1178
1179 // Table 2:151 - Definition of TPMI_ALG_ASYM_SCHEME Type  (TypeTable)
1180 //     TPMI_ALG_ASYM_SCHEME_Unmarshal not referenced
1181 //     TPMI_ALG_ASYM_SCHEME_Marshal not referenced
1182
1183
1184 // Table 2:152 - Definition of TPMU_ASYM_SCHEME Union (UnionTable)
1185 TPM_RC
1186 TPMU_ASYM_SCHEME_Unmarshal(TPMU_ASYM_SCHEME *target, BYTE **buffer, INT32 *size, UINT32 selector);
1187 UINT16
1188 TPMU_ASYM_SCHEME_Marshal(TPMU_ASYM_SCHEME *source, BYTE **buffer, INT32 *size, UINT32 selector);
1189
1190
1191 // Table 2:153 - Definition of TPMT_ASYM_SCHEME Structure  (StructureTable)
1192 //     TPMT_ASYM_SCHEME_Unmarshal not referenced
1193 //     TPMT_ASYM_SCHEME_Marshal not referenced
1194
1195
1196 // Table 2:154 - Definition of TPMI_ALG_RSA_SCHEME Type (TypeTable)
1197 #ifdef    TPM_ALG_RSA
1198 TPM_RC
1199 TPMI_ALG_RSA_SCHEME_Unmarshal(TPMI_ALG_RSA_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1200
1201 #define TPMI_ALG_RSA_SCHEME_Marshal(source, buffer, size) \
1202             TPM_ALG_ID_Marshal((TPM_ALG_ID *)(source), buffer, size)
1203 #endif // TPM_ALG_RSA
1204
1205
1206 // Table 2:155 - Definition of TPMT_RSA_SCHEME Structure (StructureTable)
1207 #ifdef    TPM_ALG_RSA
1208 TPM_RC
1209 TPMT_RSA_SCHEME_Unmarshal(TPMT_RSA_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1210 UINT16
1211 TPMT_RSA_SCHEME_Marshal(TPMT_RSA_SCHEME *source, BYTE **buffer, INT32 *size);
1212
1213 #endif // TPM_ALG_RSA
1214
1215
1216 // Table 2:156 - Definition of TPMI_ALG_RSA_DECRYPT Type (TypeTable)
1217 #ifdef    TPM_ALG_RSA
1218 TPM_RC
1219 TPMI_ALG_RSA_DECRYPT_Unmarshal(TPMI_ALG_RSA_DECRYPT *target, BYTE **buffer, INT32 *size, BOOL flag);
1220
1221 //     TPMI_ALG_RSA_DECRYPT_Marshal not referenced
1222 #endif // TPM_ALG_RSA
1223
1224
1225 // Table 2:157 - Definition of TPMT_RSA_DECRYPT Structure (StructureTable)
1226 #ifdef    TPM_ALG_RSA
1227 TPM_RC
1228 TPMT_RSA_DECRYPT_Unmarshal(TPMT_RSA_DECRYPT *target, BYTE **buffer, INT32 *size, BOOL flag);
1229
1230 //     TPMT_RSA_DECRYPT_Marshal not referenced
1231 #endif // TPM_ALG_RSA
1232
1233
1234 // Table 2:158 - Definition of TPM2B_PUBLIC_KEY_RSA Structure (StructureTable)
1235 #ifdef    TPM_ALG_RSA
1236 TPM_RC
1237 TPM2B_PUBLIC_KEY_RSA_Unmarshal(TPM2B_PUBLIC_KEY_RSA *target, BYTE **buffer, INT32 *size);
1238 UINT16
1239 TPM2B_PUBLIC_KEY_RSA_Marshal(TPM2B_PUBLIC_KEY_RSA *source, BYTE **buffer, INT32 *size);
1240
1241 #endif // TPM_ALG_RSA
1242
1243
1244 // Table 2:159 - Definition of TPMI_RSA_KEY_BITS Type (TypeTable)
1245 #ifdef    TPM_ALG_RSA
1246 TPM_RC
1247 TPMI_RSA_KEY_BITS_Unmarshal(TPMI_RSA_KEY_BITS *target, BYTE **buffer, INT32 *size);
1248
1249 #define TPMI_RSA_KEY_BITS_Marshal(source, buffer, size) \
1250             TPM_KEY_BITS_Marshal((TPM_KEY_BITS *)(source), buffer, size)
1251 #endif // TPM_ALG_RSA
1252
1253
1254 // Table 2:160 - Definition of TPM2B_PRIVATE_KEY_RSA Structure (StructureTable)
1255 #ifdef    TPM_ALG_RSA
1256 TPM_RC
1257 TPM2B_PRIVATE_KEY_RSA_Unmarshal(TPM2B_PRIVATE_KEY_RSA *target, BYTE **buffer, INT32 *size);
1258 UINT16
1259 TPM2B_PRIVATE_KEY_RSA_Marshal(TPM2B_PRIVATE_KEY_RSA *source, BYTE **buffer, INT32 *size);
1260
1261 #endif // TPM_ALG_RSA
1262
1263
1264 // Table 2:161 - Definition of TPM2B_ECC_PARAMETER Structure (StructureTable)
1265 #ifdef    TPM_ALG_ECC
1266 TPM_RC
1267 TPM2B_ECC_PARAMETER_Unmarshal(TPM2B_ECC_PARAMETER *target, BYTE **buffer, INT32 *size);
1268 UINT16
1269 TPM2B_ECC_PARAMETER_Marshal(TPM2B_ECC_PARAMETER *source, BYTE **buffer, INT32 *size);
1270
1271 #endif // TPM_ALG_ECC
1272
1273
1274 // Table 2:162 - Definition of TPMS_ECC_POINT Structure (StructureTable)
1275 #ifdef    TPM_ALG_ECC
1276 TPM_RC
1277 TPMS_ECC_POINT_Unmarshal(TPMS_ECC_POINT *target, BYTE **buffer, INT32 *size);
1278 UINT16
1279 TPMS_ECC_POINT_Marshal(TPMS_ECC_POINT *source, BYTE **buffer, INT32 *size);
1280
1281 #endif // TPM_ALG_ECC
1282
1283
1284 // Table 2:163 - Definition of TPM2B_ECC_POINT Structure (StructureTable)
1285 #ifdef    TPM_ALG_ECC
1286 TPM_RC
1287 TPM2B_ECC_POINT_Unmarshal(TPM2B_ECC_POINT *target, BYTE **buffer, INT32 *size);
1288 UINT16
1289 TPM2B_ECC_POINT_Marshal(TPM2B_ECC_POINT *source, BYTE **buffer, INT32 *size);
1290
1291 #endif // TPM_ALG_ECC
1292
1293
1294 // Table 2:164 - Definition of TPMI_ALG_ECC_SCHEME Type (TypeTable)
1295 #ifdef    TPM_ALG_ECC
1296 TPM_RC
1297 TPMI_ALG_ECC_SCHEME_Unmarshal(TPMI_ALG_ECC_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1298
1299 #define TPMI_ALG_ECC_SCHEME_Marshal(source, buffer, size) \
1300             TPM_ALG_ID_Marshal((TPM_ALG_ID *)(source), buffer, size)
1301 #endif // TPM_ALG_ECC
1302
1303
1304 // Table 2:165 - Definition of TPMI_ECC_CURVE Type (TypeTable)
1305 #ifdef    TPM_ALG_ECC
1306 TPM_RC
1307 TPMI_ECC_CURVE_Unmarshal(TPMI_ECC_CURVE *target, BYTE **buffer, INT32 *size);
1308
1309 #define TPMI_ECC_CURVE_Marshal(source, buffer, size) \
1310             TPM_ECC_CURVE_Marshal((TPM_ECC_CURVE *)(source), buffer, size)
1311 #endif // TPM_ALG_ECC
1312
1313
1314 // Table 2:166 - Definition of TPMT_ECC_SCHEME Structure (StructureTable)
1315 #ifdef    TPM_ALG_ECC
1316 TPM_RC
1317 TPMT_ECC_SCHEME_Unmarshal(TPMT_ECC_SCHEME *target, BYTE **buffer, INT32 *size, BOOL flag);
1318 UINT16
1319 TPMT_ECC_SCHEME_Marshal(TPMT_ECC_SCHEME *source, BYTE **buffer, INT32 *size);
1320
1321 #endif // TPM_ALG_ECC
1322
1323
1324 // Table 2:167 - Definition of TPMS_ALGORITHM_DETAIL_ECC Structure  (StructureTable)
1325 #ifdef    TPM_ALG_ECC
1326 //     TPMS_ALGORITHM_DETAIL_ECC_Unmarshal not referenced
1327 UINT16
1328 TPMS_ALGORITHM_DETAIL_ECC_Marshal(TPMS_ALGORITHM_DETAIL_ECC *source, BYTE **buffer, INT32 *size);
1329
1330 #endif // TPM_ALG_ECC
1331
1332
1333 // Table 2:168 - Definition of TPMS_SIGNATURE_RSA Structure (StructureTable)
1334 #ifdef    TPM_ALG_RSA
1335 TPM_RC
1336 TPMS_SIGNATURE_RSA_Unmarshal(TPMS_SIGNATURE_RSA *target, BYTE **buffer, INT32 *size);
1337 UINT16
1338 TPMS_SIGNATURE_RSA_Marshal(TPMS_SIGNATURE_RSA *source, BYTE **buffer, INT32 *size);
1339
1340 #endif // TPM_ALG_RSA
1341
1342
1343 // Table 2:169 - Definition of Types for Signature  (TypesTable)
1344 #ifdef    TPM_ALG_RSA
1345 //   TPMS_SIGNATURE_RSA definition from table 2:169
1346 #ifdef    TPM_ALG_RSA
1347 #define TPMS_SIGNATURE_RSASSA_Unmarshal(target, buffer, size) \
1348             TPMS_SIGNATURE_RSA_Unmarshal((TPMS_SIGNATURE_RSA *)(target), buffer, size)
1349 #define TPMS_SIGNATURE_RSASSA_Marshal(source, buffer, size) \
1350             TPMS_SIGNATURE_RSA_Marshal((TPMS_SIGNATURE_RSA *)(source), buffer, size)
1351 #endif // TPM_ALG_RSA
1352 //   TPMS_SIGNATURE_RSA definition from table 2:169
1353 #ifdef    TPM_ALG_RSA
1354 #define TPMS_SIGNATURE_RSAPSS_Unmarshal(target, buffer, size) \
1355             TPMS_SIGNATURE_RSA_Unmarshal((TPMS_SIGNATURE_RSA *)(target), buffer, size)
1356 #define TPMS_SIGNATURE_RSAPSS_Marshal(source, buffer, size) \
1357             TPMS_SIGNATURE_RSA_Marshal((TPMS_SIGNATURE_RSA *)(source), buffer, size)
1358 #endif // TPM_ALG_RSA
1359 #endif // TPM_ALG_RSA
1360
1361
1362 // Table 2:170 - Definition of TPMS_SIGNATURE_ECC Structure (StructureTable)
1363 #ifdef    TPM_ALG_ECC
1364 TPM_RC
1365 TPMS_SIGNATURE_ECC_Unmarshal(TPMS_SIGNATURE_ECC *target, BYTE **buffer, INT32 *size);
1366 UINT16
1367 TPMS_SIGNATURE_ECC_Marshal(TPMS_SIGNATURE_ECC *source, BYTE **buffer, INT32 *size);
1368
1369 #endif // TPM_ALG_ECC
1370
1371
1372 // Table 2:171 - Definition of Types for TPMS_SIGNATUE_ECC (TypesTable)
1373 #ifdef    TPM_ALG_ECC
1374 //   TPMS_SIGNATURE_ECC definition from table 2:171
1375 #ifdef    TPM_ALG_ECC
1376 #define TPMS_SIGNATURE_ECDSA_Unmarshal(target, buffer, size) \
1377             TPMS_SIGNATURE_ECC_Unmarshal((TPMS_SIGNATURE_ECC *)(target), buffer, size)
1378 #define TPMS_SIGNATURE_ECDSA_Marshal(source, buffer, size) \
1379             TPMS_SIGNATURE_ECC_Marshal((TPMS_SIGNATURE_ECC *)(source), buffer, size)
1380 #endif // TPM_ALG_ECC
1381 //   TPMS_SIGNATURE_ECC definition from table 2:171
1382 #ifdef    TPM_ALG_ECC
1383 #define TPMS_SIGNATURE_SM2_Unmarshal(target, buffer, size) \
1384             TPMS_SIGNATURE_ECC_Unmarshal((TPMS_SIGNATURE_ECC *)(target), buffer, size)
1385 #define TPMS_SIGNATURE_SM2_Marshal(source, buffer, size) \
1386             TPMS_SIGNATURE_ECC_Marshal((TPMS_SIGNATURE_ECC *)(source), buffer, size)
1387 #endif // TPM_ALG_ECC
1388 //   TPMS_SIGNATURE_ECC definition from table 2:171
1389 #ifdef    TPM_ALG_ECC
1390 #define TPMS_SIGNATURE_ECSCHNORR_Unmarshal(target, buffer, size) \
1391             TPMS_SIGNATURE_ECC_Unmarshal((TPMS_SIGNATURE_ECC *)(target), buffer, size)
1392 #define TPMS_SIGNATURE_ECSCHNORR_Marshal(source, buffer, size) \
1393             TPMS_SIGNATURE_ECC_Marshal((TPMS_SIGNATURE_ECC *)(source), buffer, size)
1394 #endif // TPM_ALG_ECC
1395 //   TPMS_SIGNATURE_ECC definition from table 2:171
1396 #ifdef    TPM_ALG_ECC
1397 #define TPMS_SIGNATURE_ECDAA_Unmarshal(target, buffer, size) \
1398             TPMS_SIGNATURE_ECC_Unmarshal((TPMS_SIGNATURE_ECC *)(target), buffer, size)
1399 #define TPMS_SIGNATURE_ECDAA_Marshal(source, buffer, size) \
1400             TPMS_SIGNATURE_ECC_Marshal((TPMS_SIGNATURE_ECC *)(source), buffer, size)
1401 #endif // TPM_ALG_ECC
1402 #endif // TPM_ALG_ECC
1403
1404
1405 // Table 2:172 - Definition of TPMU_SIGNATURE Union  (UnionTable)
1406 TPM_RC
1407 TPMU_SIGNATURE_Unmarshal(TPMU_SIGNATURE *target, BYTE **buffer, INT32 *size, UINT32 selector);
1408 UINT16
1409 TPMU_SIGNATURE_Marshal(TPMU_SIGNATURE *source, BYTE **buffer, INT32 *size, UINT32 selector);
1410
1411
1412 // Table 2:173 - Definition of TPMT_SIGNATURE Structure (StructureTable)
1413 TPM_RC
1414 TPMT_SIGNATURE_Unmarshal(TPMT_SIGNATURE *target, BYTE **buffer, INT32 *size, BOOL flag);
1415 UINT16
1416 TPMT_SIGNATURE_Marshal(TPMT_SIGNATURE *source, BYTE **buffer, INT32 *size);
1417
1418
1419 // Table 2:174 - Definition of TPMU_ENCRYPTED_SECRET Union  (UnionTable)
1420 //     TPMU_ENCRYPTED_SECRET_Unmarshal not referenced
1421 //     TPMU_ENCRYPTED_SECRET_Marshal not referenced
1422
1423
1424 // Table 2:175 - Definition of TPM2B_ENCRYPTED_SECRET Structure (StructureTable)
1425 TPM_RC
1426 TPM2B_ENCRYPTED_SECRET_Unmarshal(TPM2B_ENCRYPTED_SECRET *target, BYTE **buffer, INT32 *size);
1427 UINT16
1428 TPM2B_ENCRYPTED_SECRET_Marshal(TPM2B_ENCRYPTED_SECRET *source, BYTE **buffer, INT32 *size);
1429
1430
1431 // Table 2:176 - Definition of TPMI_ALG_PUBLIC Type (TypeTable)
1432 TPM_RC
1433 TPMI_ALG_PUBLIC_Unmarshal(TPMI_ALG_PUBLIC *target, BYTE **buffer, INT32 *size);
1434
1435 #define TPMI_ALG_PUBLIC_Marshal(source, buffer, size) \
1436             TPM_ALG_ID_Marshal((TPM_ALG_ID *)(source), buffer, size)
1437
1438
1439 // Table 2:177 - Definition of TPMU_PUBLIC_ID Union  (UnionTable)
1440 TPM_RC
1441 TPMU_PUBLIC_ID_Unmarshal(TPMU_PUBLIC_ID *target, BYTE **buffer, INT32 *size, UINT32 selector);
1442 UINT16
1443 TPMU_PUBLIC_ID_Marshal(TPMU_PUBLIC_ID *source, BYTE **buffer, INT32 *size, UINT32 selector);
1444
1445
1446 // Table 2:178 - Definition of TPMS_KEYEDHASH_PARMS Structure (StructureTable)
1447 #define TPMS_KEYEDHASH_PARMS_Unmarshal(target, buffer, size) \
1448             TPMT_KEYEDHASH_SCHEME_Unmarshal((TPMT_KEYEDHASH_SCHEME *)&((target)->scheme), buffer, size, 1)
1449 #define TPMS_KEYEDHASH_PARMS_Marshal(source, buffer, size) \
1450             TPMT_KEYEDHASH_SCHEME_Marshal((TPMT_KEYEDHASH_SCHEME *)&((source)->scheme), buffer, size)
1451
1452
1453 // Table 2:179 - Definition of TPMS_ASYM_PARMS Structure  (StructureTable)
1454 //     TPMS_ASYM_PARMS_Unmarshal not referenced
1455 //     TPMS_ASYM_PARMS_Marshal not referenced
1456
1457
1458 // Table 2:180 - Definition of TPMS_RSA_PARMS Structure (StructureTable)
1459 #ifdef    TPM_ALG_RSA
1460 TPM_RC
1461 TPMS_RSA_PARMS_Unmarshal(TPMS_RSA_PARMS *target, BYTE **buffer, INT32 *size);
1462 UINT16
1463 TPMS_RSA_PARMS_Marshal(TPMS_RSA_PARMS *source, BYTE **buffer, INT32 *size);
1464
1465 #endif // TPM_ALG_RSA
1466
1467
1468 // Table 2:181 - Definition of TPMS_ECC_PARMS Structure (StructureTable)
1469 #ifdef    TPM_ALG_ECC
1470 TPM_RC
1471 TPMS_ECC_PARMS_Unmarshal(TPMS_ECC_PARMS *target, BYTE **buffer, INT32 *size);
1472 UINT16
1473 TPMS_ECC_PARMS_Marshal(TPMS_ECC_PARMS *source, BYTE **buffer, INT32 *size);
1474
1475 #endif // TPM_ALG_ECC
1476
1477
1478 // Table 2:182 - Definition of TPMU_PUBLIC_PARMS Union  (UnionTable)
1479 TPM_RC
1480 TPMU_PUBLIC_PARMS_Unmarshal(TPMU_PUBLIC_PARMS *target, BYTE **buffer, INT32 *size, UINT32 selector);
1481 UINT16
1482 TPMU_PUBLIC_PARMS_Marshal(TPMU_PUBLIC_PARMS *source, BYTE **buffer, INT32 *size, UINT32 selector);
1483
1484
1485 // Table 2:183 - Definition of TPMT_PUBLIC_PARMS Structure (StructureTable)
1486 TPM_RC
1487 TPMT_PUBLIC_PARMS_Unmarshal(TPMT_PUBLIC_PARMS *target, BYTE **buffer, INT32 *size);
1488
1489 //     TPMT_PUBLIC_PARMS_Marshal not referenced
1490
1491
1492 // Table 2:184 - Definition of TPMT_PUBLIC Structure (StructureTable)
1493 TPM_RC
1494 TPMT_PUBLIC_Unmarshal(TPMT_PUBLIC *target, BYTE **buffer, INT32 *size, BOOL flag);
1495 UINT16
1496 TPMT_PUBLIC_Marshal(TPMT_PUBLIC *source, BYTE **buffer, INT32 *size);
1497
1498
1499 // Table 2:185 - Definition of TPM2B_PUBLIC Structure (StructureTable)
1500 TPM_RC
1501 TPM2B_PUBLIC_Unmarshal(TPM2B_PUBLIC *target, BYTE **buffer, INT32 *size, BOOL flag);
1502 UINT16
1503 TPM2B_PUBLIC_Marshal(TPM2B_PUBLIC *source, BYTE **buffer, INT32 *size);
1504
1505
1506 // Table 2:186 - Definition of TPM2B_PRIVATE_VENDOR_SPECIFIC Structure (StructureTable)
1507 //     TPM2B_PRIVATE_VENDOR_SPECIFIC_Unmarshal not referenced
1508 //     TPM2B_PRIVATE_VENDOR_SPECIFIC_Marshal not referenced
1509
1510
1511 // Table 2:187 - Definition of TPMU_SENSITIVE_COMPOSITE Union  (UnionTable)
1512 TPM_RC
1513 TPMU_SENSITIVE_COMPOSITE_Unmarshal(TPMU_SENSITIVE_COMPOSITE *target, BYTE **buffer, INT32 *size, UINT32 selector);
1514 UINT16
1515 TPMU_SENSITIVE_COMPOSITE_Marshal(TPMU_SENSITIVE_COMPOSITE *source, BYTE **buffer, INT32 *size, UINT32 selector);
1516
1517
1518 // Table 2:188 - Definition of TPMT_SENSITIVE Structure (StructureTable)
1519 TPM_RC
1520 TPMT_SENSITIVE_Unmarshal(TPMT_SENSITIVE *target, BYTE **buffer, INT32 *size);
1521 UINT16
1522 TPMT_SENSITIVE_Marshal(TPMT_SENSITIVE *source, BYTE **buffer, INT32 *size);
1523
1524
1525 // Table 2:189 - Definition of TPM2B_SENSITIVE Structure  (StructureTable)
1526 TPM_RC
1527 TPM2B_SENSITIVE_Unmarshal(TPM2B_SENSITIVE *target, BYTE **buffer, INT32 *size);
1528
1529 //     TPM2B_SENSITIVE_Marshal not referenced
1530
1531
1532 // Table 2:190 - Definition of _PRIVATE Structure  (StructureTable)
1533 //     _PRIVATE_Unmarshal not referenced
1534 //     _PRIVATE_Marshal not referenced
1535
1536
1537 // Table 2:191 - Definition of TPM2B_PRIVATE Structure  (StructureTable)
1538 TPM_RC
1539 TPM2B_PRIVATE_Unmarshal(TPM2B_PRIVATE *target, BYTE **buffer, INT32 *size);
1540 UINT16
1541 TPM2B_PRIVATE_Marshal(TPM2B_PRIVATE *source, BYTE **buffer, INT32 *size);
1542
1543
1544 // Table 2:192 - Definition of _ID_OBJECT Structure  (StructureTable)
1545 //     _ID_OBJECT_Unmarshal not referenced
1546 //     _ID_OBJECT_Marshal not referenced
1547
1548
1549 // Table 2:193 - Definition of TPM2B_ID_OBJECT Structure  (StructureTable)
1550 TPM_RC
1551 TPM2B_ID_OBJECT_Unmarshal(TPM2B_ID_OBJECT *target, BYTE **buffer, INT32 *size);
1552 UINT16
1553 TPM2B_ID_OBJECT_Marshal(TPM2B_ID_OBJECT *source, BYTE **buffer, INT32 *size);
1554
1555
1556 // Table 2:194 - Definition of TPM_NV_INDEX Bits  (BitsTable)
1557 //     TPM_NV_INDEX_Unmarshal not referenced
1558 //     TPM_NV_INDEX_Marshal not referenced
1559
1560
1561 // Table 2:195 - Definition of TPMA_NV Bits (BitsTable)
1562 TPM_RC
1563 TPMA_NV_Unmarshal(TPMA_NV *target, BYTE **buffer, INT32 *size);
1564
1565 #define TPMA_NV_Marshal(source, buffer, size) \
1566             UINT32_Marshal((UINT32 *)(source), buffer, size)
1567
1568
1569 // Table 2:196 - Definition of TPMS_NV_PUBLIC Structure (StructureTable)
1570 TPM_RC
1571 TPMS_NV_PUBLIC_Unmarshal(TPMS_NV_PUBLIC *target, BYTE **buffer, INT32 *size);
1572 UINT16
1573 TPMS_NV_PUBLIC_Marshal(TPMS_NV_PUBLIC *source, BYTE **buffer, INT32 *size);
1574
1575
1576 // Table 2:197 - Definition of TPM2B_NV_PUBLIC Structure (StructureTable)
1577 TPM_RC
1578 TPM2B_NV_PUBLIC_Unmarshal(TPM2B_NV_PUBLIC *target, BYTE **buffer, INT32 *size);
1579 UINT16
1580 TPM2B_NV_PUBLIC_Marshal(TPM2B_NV_PUBLIC *source, BYTE **buffer, INT32 *size);
1581
1582
1583 // Table 2:198 - Definition of TPM2B_CONTEXT_SENSITIVE Structure  (StructureTable)
1584 //     TPM2B_CONTEXT_SENSITIVE_Unmarshal not referenced
1585 //     TPM2B_CONTEXT_SENSITIVE_Marshal not referenced
1586
1587
1588 // Table 2:199 - Definition of TPMS_CONTEXT_DATA Structure  (StructureTable)
1589 //     TPMS_CONTEXT_DATA_Unmarshal not referenced
1590 //     TPMS_CONTEXT_DATA_Marshal not referenced
1591
1592
1593 // Table 2:200 - Definition of TPM2B_CONTEXT_DATA Structure  (StructureTable)
1594 TPM_RC
1595 TPM2B_CONTEXT_DATA_Unmarshal(TPM2B_CONTEXT_DATA *target, BYTE **buffer, INT32 *size);
1596 UINT16
1597 TPM2B_CONTEXT_DATA_Marshal(TPM2B_CONTEXT_DATA *source, BYTE **buffer, INT32 *size);
1598
1599
1600 // Table 2:201 - Definition of TPMS_CONTEXT Structure (StructureTable)
1601 TPM_RC
1602 TPMS_CONTEXT_Unmarshal(TPMS_CONTEXT *target, BYTE **buffer, INT32 *size);
1603 UINT16
1604 TPMS_CONTEXT_Marshal(TPMS_CONTEXT *source, BYTE **buffer, INT32 *size);
1605
1606
1607 // Table 2:203 - Definition of TPMS_CREATION_DATA Structure  (StructureTable)
1608 //     TPMS_CREATION_DATA_Unmarshal not referenced
1609 UINT16
1610 TPMS_CREATION_DATA_Marshal(TPMS_CREATION_DATA *source, BYTE **buffer, INT32 *size);
1611
1612
1613 // Table 2:204 - Definition of TPM2B_CREATION_DATA Structure  (StructureTable)
1614 //     TPM2B_CREATION_DATA_Unmarshal not referenced
1615 UINT16
1616 TPM2B_CREATION_DATA_Marshal(TPM2B_CREATION_DATA *source, BYTE **buffer, INT32 *size);
1617
1618 // Array Marshal/Unmarshal for TPMS_TAGGED_PROPERTY
1619 //     TPMS_TAGGED_PROPERTY_Array_Unmarshal not referenced
1620 UINT16
1621 TPMS_TAGGED_PROPERTY_Array_Marshal(TPMS_TAGGED_PROPERTY *source, BYTE **buffer, INT32 *size, INT32 count);
1622
1623 // Array Marshal/Unmarshal for TPMS_ALG_PROPERTY
1624 //     TPMS_ALG_PROPERTY_Array_Unmarshal not referenced
1625 UINT16
1626 TPMS_ALG_PROPERTY_Array_Marshal(TPMS_ALG_PROPERTY *source, BYTE **buffer, INT32 *size, INT32 count);
1627
1628 // Array Marshal/Unmarshal for TPMS_PCR_SELECTION
1629 TPM_RC
1630 TPMS_PCR_SELECTION_Array_Unmarshal(TPMS_PCR_SELECTION *target, BYTE **buffer, INT32 *size, INT32 count);
1631 UINT16
1632 TPMS_PCR_SELECTION_Array_Marshal(TPMS_PCR_SELECTION *source, BYTE **buffer, INT32 *size, INT32 count);
1633
1634 // Array Marshal/Unmarshal for TPMT_HA
1635 TPM_RC
1636 TPMT_HA_Array_Unmarshal(TPMT_HA *target, BYTE **buffer, INT32 *size, BOOL flag, INT32 count);
1637 UINT16
1638 TPMT_HA_Array_Marshal(TPMT_HA *source, BYTE **buffer, INT32 *size, INT32 count);
1639
1640 // Array Marshal/Unmarshal for BYTE
1641 TPM_RC
1642 BYTE_Array_Unmarshal(BYTE *target, BYTE **buffer, INT32 *size, INT32 count);
1643 UINT16
1644 BYTE_Array_Marshal(BYTE *source, BYTE **buffer, INT32 *size, INT32 count);
1645
1646 // Array Marshal/Unmarshal for TPM_HANDLE
1647 //     TPM_HANDLE_Array_Unmarshal not referenced
1648 UINT16
1649 TPM_HANDLE_Array_Marshal(TPM_HANDLE *source, BYTE **buffer, INT32 *size, INT32 count);
1650
1651 // Array Marshal/Unmarshal for TPMA_CC
1652 //     TPMA_CC_Array_Unmarshal not referenced
1653 UINT16
1654 TPMA_CC_Array_Marshal(TPMA_CC *source, BYTE **buffer, INT32 *size, INT32 count);
1655
1656 // Array Marshal/Unmarshal for TPMS_TAGGED_PCR_SELECT
1657 //     TPMS_TAGGED_PCR_SELECT_Array_Unmarshal not referenced
1658 UINT16
1659 TPMS_TAGGED_PCR_SELECT_Array_Marshal(TPMS_TAGGED_PCR_SELECT *source, BYTE **buffer, INT32 *size, INT32 count);
1660
1661 // Array Marshal/Unmarshal for TPM_ECC_CURVE
1662 #ifdef    TPM_ALG_ECC
1663 //     TPM_ECC_CURVE_Array_Unmarshal not referenced
1664 UINT16
1665 TPM_ECC_CURVE_Array_Marshal(TPM_ECC_CURVE *source, BYTE **buffer, INT32 *size, INT32 count);
1666
1667 #endif // TPM_ALG_ECC
1668 // Array Marshal/Unmarshal for TPM2B_DIGEST
1669 TPM_RC
1670 TPM2B_DIGEST_Array_Unmarshal(TPM2B_DIGEST *target, BYTE **buffer, INT32 *size, INT32 count);
1671 UINT16
1672 TPM2B_DIGEST_Array_Marshal(TPM2B_DIGEST *source, BYTE **buffer, INT32 *size, INT32 count);
1673
1674 // Array Marshal/Unmarshal for TPM_CC
1675 TPM_RC
1676 TPM_CC_Array_Unmarshal(TPM_CC *target, BYTE **buffer, INT32 *size, INT32 count);
1677 UINT16
1678 TPM_CC_Array_Marshal(TPM_CC *source, BYTE **buffer, INT32 *size, INT32 count);
1679
1680 // Array Marshal/Unmarshal for TPM_ALG_ID
1681 TPM_RC
1682 TPM_ALG_ID_Array_Unmarshal(TPM_ALG_ID *target, BYTE **buffer, INT32 *size, INT32 count);
1683 UINT16
1684 TPM_ALG_ID_Array_Marshal(TPM_ALG_ID *source, BYTE **buffer, INT32 *size, INT32 count);
1685
1686 #endif // _MARSHAL_FP_H