| /* Licenses and Notices |
| 1. Copyright Licenses: |
| |
| Trusted Computing Group (TCG) grants to the user of the source code in |
| this specification (the "Source Code") a worldwide, irrevocable, nonexclusive, |
| royalty free, copyright license to reproduce, create derivative works, |
| distribute, display and perform the Source Code and derivative works |
| thereof, and to grant others the rights granted herein. |
| |
| The TCG grants to the user of the other parts of the specification |
| (other than the Source Code) the rights to reproduce, distribute, |
| display, and perform the specification solely for the purpose of |
| developing products based on such documents. |
| |
| 2. Source Code Distribution Conditions: |
| |
| Redistributions of Source Code must retain the above copyright licenses, |
| this list of conditions and the following disclaimers. |
| |
| Redistributions in binary form must reproduce the above copyright |
| licenses, this list of conditions and the following disclaimers in |
| the documentation and/or other materials provided with the distribution. |
| |
| 3. Disclaimers: |
| |
| THE COPYRIGHT LICENSES SET FORTH ABOVE DO NOT REPRESENT ANY FORM OF LICENSE |
| OR WAIVER, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, WITH RESPECT TO |
| PATENT RIGHTS HELD BY TCG MEMBERS (OR OTHER THIRD PARTIES) THAT MAY BE NECESSARY |
| TO IMPLEMENT THIS SPECIFICATION OR OTHERWISE. Contact TCG Administration |
| (admin@trustedcomputinggroup.org) for information on specification licensing |
| rights available through TCG membership agreements. |
| |
| THIS SPECIFICATION IS PROVIDED "AS IS" WITH NO EXPRESS OR IMPLIED WARRANTIES |
| WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR |
| PURPOSE, ACCURACY, COMPLETENESS, OR NONINFRINGEMENT OF INTELLECTUAL PROPERTY |
| RIGHTS, OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION |
| OR SAMPLE. |
| |
| Without limitation, TCG and its members and licensors disclaim all liability, |
| including liability for infringement of any proprietary rights, relating to |
| use of information in this specification and to the implementation of this |
| specification, and TCG disclaims all liability for cost of procurement of |
| substitute goods or services, lost profits, loss of use, loss of data or any |
| incidental, consequential, direct, indirect, or special damages, whether |
| under contract, tort, warranty or otherwise, arising in any way out of use |
| or reliance upon this specification or any information herein. |
| |
| Any marks and brands contained herein are the property of their respective owner. |
| */ |
| |
| // This file contains extra TPM2B structures |
| #ifndef _TPMB_H |
| #define _TPMB_H |
| |
| #ifndef TPM20_H |
| #error Do not include this file, #include <tss2/tpm20.h> instead. |
| #endif |
| |
| #if ! ( TPM20_MAJOR_VERSION == @TPM20_MAJOR_VERSION@ && \ |
| TPM20_MINOR_VERSION == @TPM20_MINOR_VERSION@ ) |
| #error Version mismatch among TSS2 header files. |
| #endif |
| |
| typedef struct { |
| UINT16 size; |
| BYTE buffer[1]; |
| } TPM2B; |
| |
| // This macro helps avoid having to type in the structure in order to create a new TPM2B type that |
| // is used in a function. |
| |
| #define TPM2B_TYPE(name, bytes) \ |
| typedef union { \ |
| struct { \ |
| UINT16 size; \ |
| BYTE buffer[(bytes)]; \ |
| } t; \ |
| TPM2B b; \ |
| } TPM2B_##name |
| |
| #define TPM2B_TYPE1(name, bytes, bufferName) \ |
| typedef union { \ |
| struct { \ |
| UINT16 size; \ |
| BYTE bufferName[(bytes)]; \ |
| } t; \ |
| TPM2B b; \ |
| } TPM2B_##name |
| |
| #define TPM2B_TYPE2(name, type, bufferName ) \ |
| typedef union { \ |
| struct { \ |
| UINT16 size; \ |
| type bufferName; \ |
| } t; \ |
| TPM2B b; \ |
| } TPM2B_##name |
| |
| |
| // Macro to instance and initialize a TPM2B value |
| |
| #define TPM2B_INIT(TYPE, name) \ |
| TPM2B_##TYPE name = {sizeof(name.t.buffer), {0}} |
| |
| #define TPM2B_BYTE_VALUE(bytes) TPM2B_TYPE(bytes##_BYTE_VALUE, bytes) |
| |
| #endif |