1// This file was extracted from the TCG Published
2// Trusted Platform Module Library
3// Part 4: Supporting Routines
4// Family "2.0"
5// Level 00 Revision 01.16
6// October 30, 2014
7
8#ifndef _TPMB_H
9#define _TPMB_H
10//
11//     This macro helps avoid having to type in the structure in order to create a new TPM2B type that is used in
12//     a function.
13//
14#define TPM2B_TYPE(name, bytes)                           \
15   typedef union {                                       \
16       struct {                                          \
17            UINT16 size;                                 \
18            BYTE    buffer[(bytes)];                     \
19       } t;                                              \
20       TPM2B     b;                                      \
21   } TPM2B_##name
22//
23//     Macro to instance and initialize a TPM2B value
24//
25#define TPM2B_INIT(TYPE, name) \
26   TPM2B_##TYPE    name = {sizeof(name.t.buffer), {0}}
27#define TPM2B_BYTE_VALUE(bytes) TPM2B_TYPE(bytes##_BYTE_VALUE, bytes)
28#endif
29