Home | History | Annotate | Download | only in trunks
      1 //
      2 // Copyright (C) 2015 The Android Open Source Project
      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 
     17 // THIS CODE IS GENERATED - DO NOT MODIFY!
     18 
     19 #ifndef TRUNKS_TPM_GENERATED_H_
     20 #define TRUNKS_TPM_GENERATED_H_
     21 
     22 #include <string>
     23 
     24 #include <base/callback_forward.h>
     25 #include <base/macros.h>
     26 
     27 #include "trunks/trunks_export.h"
     28 
     29 namespace trunks {
     30 
     31 class AuthorizationDelegate;
     32 class CommandTransceiver;
     33 
     34 #if !defined(SHA1_DIGEST_SIZE)
     35 #define SHA1_DIGEST_SIZE 20
     36 #endif
     37 #if !defined(SHA1_BLOCK_SIZE)
     38 #define SHA1_BLOCK_SIZE 64
     39 #endif
     40 #if !defined(SHA1_DER_SIZE)
     41 #define SHA1_DER_SIZE 15
     42 #endif
     43 #if !defined(SHA1_DER)
     44 #define SHA1_DER {0x30,0x21,0x30,0x09,0x06,0x05,0x2B,0x0E,0x03,0x02,0x1A,0x05,0x00,0x04,0x14}
     45 #endif
     46 #if !defined(SHA256_DIGEST_SIZE)
     47 #define SHA256_DIGEST_SIZE 32
     48 #endif
     49 #if !defined(SHA256_BLOCK_SIZE)
     50 #define SHA256_BLOCK_SIZE 64
     51 #endif
     52 #if !defined(SHA256_DER_SIZE)
     53 #define SHA256_DER_SIZE 19
     54 #endif
     55 #if !defined(SHA256_DER)
     56 #define SHA256_DER {0x30,0x31,0x30,0x0d,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x01,0x05,0x00,0x04,0x20}
     57 #endif
     58 #if !defined(SHA384_DIGEST_SIZE)
     59 #define SHA384_DIGEST_SIZE 48
     60 #endif
     61 #if !defined(SHA384_BLOCK_SIZE)
     62 #define SHA384_BLOCK_SIZE 128
     63 #endif
     64 #if !defined(SHA384_DER_SIZE)
     65 #define SHA384_DER_SIZE 19
     66 #endif
     67 #if !defined(SHA384_DER)
     68 #define SHA384_DER {0x30,0x41,0x30,0x0d,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x02,0x05,0x00,0x04,0x30}
     69 #endif
     70 #if !defined(SHA512_DIGEST_SIZE)
     71 #define SHA512_DIGEST_SIZE 64
     72 #endif
     73 #if !defined(SHA512_BLOCK_SIZE)
     74 #define SHA512_BLOCK_SIZE 128
     75 #endif
     76 #if !defined(SHA512_DER_SIZE)
     77 #define SHA512_DER_SIZE 19
     78 #endif
     79 #if !defined(SHA512_DER)
     80 #define SHA512_DER {0x30,0x51,0x30,0x0d,0x06,0x09,0x60,0x86,0x48,0x01,0x65,0x03,0x04,0x02,0x03,0x05,0x00,0x04,0x40}
     81 #endif
     82 #if !defined(SM3_256_DIGEST_SIZE)
     83 #define SM3_256_DIGEST_SIZE 32
     84 #endif
     85 #if !defined(SM3_256_BLOCK_SIZE)
     86 #define SM3_256_BLOCK_SIZE 64
     87 #endif
     88 #if !defined(SM3_256_DER_SIZE)
     89 #define SM3_256_DER_SIZE 18
     90 #endif
     91 #if !defined(SM3_256_DER)
     92 #define SM3_256_DER {0x30,0x30,0x30,0x0c,0x06,0x08,0x2a,0x81,0x1c,0x81,0x45,0x01,0x83,0x11,0x05,0x00,0x04,0x20}
     93 #endif
     94 #if !defined(MAX_SESSION_NUMBER)
     95 #define MAX_SESSION_NUMBER 3
     96 #endif
     97 #if !defined(YES)
     98 #define YES 1
     99 #endif
    100 #if !defined(NO)
    101 #define NO 0
    102 #endif
    103 #if !defined(TRUE)
    104 #define TRUE 1
    105 #endif
    106 #if !defined(FALSE)
    107 #define FALSE 0
    108 #endif
    109 #if !defined(SET)
    110 #define SET 1
    111 #endif
    112 #if !defined(CLEAR)
    113 #define CLEAR 0
    114 #endif
    115 #if !defined(BIG_ENDIAN_TPM)
    116 #define BIG_ENDIAN_TPM NO
    117 #endif
    118 #if !defined(LITTLE_ENDIAN_TPM)
    119 #define LITTLE_ENDIAN_TPM YES
    120 #endif
    121 #if !defined(NO_AUTO_ALIGN)
    122 #define NO_AUTO_ALIGN NO
    123 #endif
    124 #if !defined(RSA_KEY_SIZES_BITS)
    125 #define RSA_KEY_SIZES_BITS {1024, 2048}
    126 #endif
    127 #if !defined(MAX_RSA_KEY_BITS)
    128 #define MAX_RSA_KEY_BITS 2048
    129 #endif
    130 #if !defined(MAX_RSA_KEY_BYTES)
    131 #define MAX_RSA_KEY_BYTES ((MAX_RSA_KEY_BITS + 7) / 8)
    132 #endif
    133 #if !defined(ECC_CURVES)
    134 #define ECC_CURVES {TPM_ECC_NIST_P256, TPM_ECC_BN_P256, TPM_ECC_SM2_P256}
    135 #endif
    136 #if !defined(ECC_KEY_SIZES_BITS)
    137 #define ECC_KEY_SIZES_BITS {256}
    138 #endif
    139 #if !defined(MAX_ECC_KEY_BITS)
    140 #define MAX_ECC_KEY_BITS 256
    141 #endif
    142 #if !defined(MAX_ECC_KEY_BYTES)
    143 #define MAX_ECC_KEY_BYTES ((MAX_ECC_KEY_BITS + 7) / 8)
    144 #endif
    145 #if !defined(AES_KEY_SIZES_BITS)
    146 #define AES_KEY_SIZES_BITS {128}
    147 #endif
    148 #if !defined(MAX_AES_KEY_BITS)
    149 #define MAX_AES_KEY_BITS 128
    150 #endif
    151 #if !defined(MAX_AES_BLOCK_SIZE_BYTES)
    152 #define MAX_AES_BLOCK_SIZE_BYTES 16
    153 #endif
    154 #if !defined(MAX_AES_KEY_BYTES)
    155 #define MAX_AES_KEY_BYTES ((MAX_AES_KEY_BITS + 7) / 8)
    156 #endif
    157 #if !defined(SM4_KEY_SIZES_BITS)
    158 #define SM4_KEY_SIZES_BITS {128}
    159 #endif
    160 #if !defined(MAX_SM4_KEY_BITS)
    161 #define MAX_SM4_KEY_BITS 128
    162 #endif
    163 #if !defined(MAX_SM4_BLOCK_SIZE_BYTES)
    164 #define MAX_SM4_BLOCK_SIZE_BYTES 16
    165 #endif
    166 #if !defined(MAX_SM4_KEY_BYTES)
    167 #define MAX_SM4_KEY_BYTES ((MAX_SM4_KEY_BITS + 7) / 8)
    168 #endif
    169 #if !defined(MAX_SYM_KEY_BITS)
    170 #define MAX_SYM_KEY_BITS MAX_AES_KEY_BITS
    171 #endif
    172 #if !defined(MAX_SYM_KEY_BYTES)
    173 #define MAX_SYM_KEY_BYTES MAX_AES_KEY_BYTES
    174 #endif
    175 #if !defined(MAX_SYM_BLOCK_SIZE)
    176 #define MAX_SYM_BLOCK_SIZE MAX_AES_BLOCK_SIZE_BYTES
    177 #endif
    178 #if !defined(FIELD_UPGRADE_IMPLEMENTED)
    179 #define FIELD_UPGRADE_IMPLEMENTED NO
    180 #endif
    181 #if !defined(BSIZE)
    182 #define BSIZE UINT16
    183 #endif
    184 #if !defined(BUFFER_ALIGNMENT)
    185 #define BUFFER_ALIGNMENT 4
    186 #endif
    187 #if !defined(IMPLEMENTATION_PCR)
    188 #define IMPLEMENTATION_PCR 24
    189 #endif
    190 #if !defined(PLATFORM_PCR)
    191 #define PLATFORM_PCR 24
    192 #endif
    193 #if !defined(DRTM_PCR)
    194 #define DRTM_PCR 17
    195 #endif
    196 #if !defined(HCRTM_PCR)
    197 #define HCRTM_PCR 0
    198 #endif
    199 #if !defined(NUM_LOCALITIES)
    200 #define NUM_LOCALITIES 5
    201 #endif
    202 #if !defined(MAX_HANDLE_NUM)
    203 #define MAX_HANDLE_NUM 3
    204 #endif
    205 #if !defined(MAX_ACTIVE_SESSIONS)
    206 #define MAX_ACTIVE_SESSIONS 64
    207 #endif
    208 #if !defined(CONTEXT_SLOT)
    209 #define CONTEXT_SLOT UINT16
    210 #endif
    211 #if !defined(CONTEXT_COUNTER)
    212 #define CONTEXT_COUNTER UINT64
    213 #endif
    214 #if !defined(MAX_LOADED_SESSIONS)
    215 #define MAX_LOADED_SESSIONS 3
    216 #endif
    217 #if !defined(MAX_SESSION_NUM)
    218 #define MAX_SESSION_NUM 3
    219 #endif
    220 #if !defined(MAX_LOADED_OBJECTS)
    221 #define MAX_LOADED_OBJECTS 3
    222 #endif
    223 #if !defined(MIN_EVICT_OBJECTS)
    224 #define MIN_EVICT_OBJECTS 2
    225 #endif
    226 #if !defined(PCR_SELECT_MIN)
    227 #define PCR_SELECT_MIN ((PLATFORM_PCR+7)/8)
    228 #endif
    229 #if !defined(PCR_SELECT_MAX)
    230 #define PCR_SELECT_MAX ((IMPLEMENTATION_PCR+7)/8)
    231 #endif
    232 #if !defined(NUM_POLICY_PCR_GROUP)
    233 #define NUM_POLICY_PCR_GROUP 1
    234 #endif
    235 #if !defined(NUM_AUTHVALUE_PCR_GROUP)
    236 #define NUM_AUTHVALUE_PCR_GROUP 1
    237 #endif
    238 #if !defined(MAX_CONTEXT_SIZE)
    239 #define MAX_CONTEXT_SIZE 4000
    240 #endif
    241 #if !defined(MAX_DIGEST_BUFFER)
    242 #define MAX_DIGEST_BUFFER 1024
    243 #endif
    244 #if !defined(MAX_NV_INDEX_SIZE)
    245 #define MAX_NV_INDEX_SIZE 2048
    246 #endif
    247 #if !defined(MAX_NV_BUFFER_SIZE)
    248 #define MAX_NV_BUFFER_SIZE 1024
    249 #endif
    250 #if !defined(MAX_CAP_BUFFER)
    251 #define MAX_CAP_BUFFER 1024
    252 #endif
    253 #if !defined(NV_MEMORY_SIZE)
    254 #define NV_MEMORY_SIZE 16384
    255 #endif
    256 #if !defined(NUM_STATIC_PCR)
    257 #define NUM_STATIC_PCR 16
    258 #endif
    259 #if !defined(MAX_ALG_LIST_SIZE)
    260 #define MAX_ALG_LIST_SIZE 64
    261 #endif
    262 #if !defined(TIMER_PRESCALE)
    263 #define TIMER_PRESCALE 100000
    264 #endif
    265 #if !defined(PRIMARY_SEED_SIZE)
    266 #define PRIMARY_SEED_SIZE 32
    267 #endif
    268 #if !defined(CONTEXT_ENCRYPT_ALG)
    269 #define CONTEXT_ENCRYPT_ALG TPM_ALG_AES
    270 #endif
    271 #if !defined(CONTEXT_ENCRYPT_KEY_BITS)
    272 #define CONTEXT_ENCRYPT_KEY_BITS MAX_SYM_KEY_BITS
    273 #endif
    274 #if !defined(CONTEXT_ENCRYPT_KEY_BYTES)
    275 #define CONTEXT_ENCRYPT_KEY_BYTES ((CONTEXT_ENCRYPT_KEY_BITS+7)/8)
    276 #endif
    277 #if !defined(CONTEXT_INTEGRITY_HASH_ALG)
    278 #define CONTEXT_INTEGRITY_HASH_ALG TPM_ALG_SHA256
    279 #endif
    280 #if !defined(CONTEXT_INTEGRITY_HASH_SIZE)
    281 #define CONTEXT_INTEGRITY_HASH_SIZE SHA256_DIGEST_SIZE
    282 #endif
    283 #if !defined(PROOF_SIZE)
    284 #define PROOF_SIZE CONTEXT_INTEGRITY_HASH_SIZE
    285 #endif
    286 #if !defined(NV_CLOCK_UPDATE_INTERVAL)
    287 #define NV_CLOCK_UPDATE_INTERVAL 12
    288 #endif
    289 #if !defined(NUM_POLICY_PCR)
    290 #define NUM_POLICY_PCR 1
    291 #endif
    292 #if !defined(MAX_COMMAND_SIZE)
    293 #define MAX_COMMAND_SIZE 4096
    294 #endif
    295 #if !defined(MAX_RESPONSE_SIZE)
    296 #define MAX_RESPONSE_SIZE 4096
    297 #endif
    298 #if !defined(ORDERLY_BITS)
    299 #define ORDERLY_BITS 8
    300 #endif
    301 #if !defined(MAX_ORDERLY_COUNT)
    302 #define MAX_ORDERLY_COUNT ((1 << ORDERLY_BITS) - 1)
    303 #endif
    304 #if !defined(ALG_ID_FIRST)
    305 #define ALG_ID_FIRST TPM_ALG_FIRST
    306 #endif
    307 #if !defined(ALG_ID_LAST)
    308 #define ALG_ID_LAST TPM_ALG_LAST
    309 #endif
    310 #if !defined(MAX_SYM_DATA)
    311 #define MAX_SYM_DATA 128
    312 #endif
    313 #if !defined(MAX_RNG_ENTROPY_SIZE)
    314 #define MAX_RNG_ENTROPY_SIZE 64
    315 #endif
    316 #if !defined(RAM_INDEX_SPACE)
    317 #define RAM_INDEX_SPACE 512
    318 #endif
    319 #if !defined(RSA_DEFAULT_PUBLIC_EXPONENT)
    320 #define RSA_DEFAULT_PUBLIC_EXPONENT 0x00010001
    321 #endif
    322 #if !defined(ENABLE_PCR_NO_INCREMENT)
    323 #define ENABLE_PCR_NO_INCREMENT YES
    324 #endif
    325 #if !defined(CRT_FORMAT_RSA)
    326 #define CRT_FORMAT_RSA YES
    327 #endif
    328 #if !defined(PRIVATE_VENDOR_SPECIFIC_BYTES)
    329 #define PRIVATE_VENDOR_SPECIFIC_BYTES ((MAX_RSA_KEY_BYTES/2) * (3 + CRT_FORMAT_RSA * 2))
    330 #endif
    331 #if !defined(MAX_CAP_DATA)
    332 #define MAX_CAP_DATA (MAX_CAP_BUFFER-sizeof(TPM_CAP)-sizeof(UINT32))
    333 #endif
    334 #if !defined(MAX_CAP_ALGS)
    335 #define MAX_CAP_ALGS (TPM_ALG_LAST - TPM_ALG_FIRST + 1)
    336 #endif
    337 #if !defined(MAX_CAP_HANDLES)
    338 #define MAX_CAP_HANDLES (MAX_CAP_DATA/sizeof(TPM_HANDLE))
    339 #endif
    340 #if !defined(MAX_CAP_CC)
    341 #define MAX_CAP_CC ((TPM_CC_LAST - TPM_CC_FIRST) + 1)
    342 #endif
    343 #if !defined(MAX_TPM_PROPERTIES)
    344 #define MAX_TPM_PROPERTIES (MAX_CAP_DATA/sizeof(TPMS_TAGGED_PROPERTY))
    345 #endif
    346 #if !defined(MAX_PCR_PROPERTIES)
    347 #define MAX_PCR_PROPERTIES (MAX_CAP_DATA/sizeof(TPMS_TAGGED_PCR_SELECT))
    348 #endif
    349 #if !defined(MAX_ECC_CURVES)
    350 #define MAX_ECC_CURVES (MAX_CAP_DATA/sizeof(TPM_ECC_CURVE))
    351 #endif
    352 #if !defined(HASH_COUNT)
    353 #define HASH_COUNT 3
    354 #endif
    355 
    356 typedef uint8_t UINT8;
    357 typedef uint8_t BYTE;
    358 typedef int8_t INT8;
    359 typedef int BOOL;
    360 typedef uint16_t UINT16;
    361 typedef int16_t INT16;
    362 typedef uint32_t UINT32;
    363 typedef int32_t INT32;
    364 typedef uint64_t UINT64;
    365 typedef int64_t INT64;
    366 typedef UINT32 TPM_ALGORITHM_ID;
    367 typedef UINT32 TPM_MODIFIER_INDICATOR;
    368 typedef UINT32 TPM_AUTHORIZATION_SIZE;
    369 typedef UINT32 TPM_PARAMETER_SIZE;
    370 typedef UINT16 TPM_KEY_SIZE;
    371 typedef UINT16 TPM_KEY_BITS;
    372 typedef UINT32 TPM_HANDLE;
    373 struct TPM2B_DIGEST;
    374 typedef TPM2B_DIGEST TPM2B_NONCE;
    375 typedef TPM2B_DIGEST TPM2B_AUTH;
    376 typedef TPM2B_DIGEST TPM2B_OPERAND;
    377 struct TPMS_SCHEME_SIGHASH;
    378 typedef TPMS_SCHEME_SIGHASH TPMS_SCHEME_HMAC;
    379 typedef TPMS_SCHEME_SIGHASH TPMS_SCHEME_RSASSA;
    380 typedef TPMS_SCHEME_SIGHASH TPMS_SCHEME_RSAPSS;
    381 typedef TPMS_SCHEME_SIGHASH TPMS_SCHEME_ECDSA;
    382 typedef TPMS_SCHEME_SIGHASH TPMS_SCHEME_SM2;
    383 typedef TPMS_SCHEME_SIGHASH TPMS_SCHEME_ECSCHNORR;
    384 typedef BYTE TPMI_YES_NO;
    385 typedef TPM_HANDLE TPMI_DH_OBJECT;
    386 typedef TPM_HANDLE TPMI_DH_PERSISTENT;
    387 typedef TPM_HANDLE TPMI_DH_ENTITY;
    388 typedef TPM_HANDLE TPMI_DH_PCR;
    389 typedef TPM_HANDLE TPMI_SH_AUTH_SESSION;
    390 typedef TPM_HANDLE TPMI_SH_HMAC;
    391 typedef TPM_HANDLE TPMI_SH_POLICY;
    392 typedef TPM_HANDLE TPMI_DH_CONTEXT;
    393 typedef TPM_HANDLE TPMI_RH_HIERARCHY;
    394 typedef TPM_HANDLE TPMI_RH_ENABLES;
    395 typedef TPM_HANDLE TPMI_RH_HIERARCHY_AUTH;
    396 typedef TPM_HANDLE TPMI_RH_PLATFORM;
    397 typedef TPM_HANDLE TPMI_RH_OWNER;
    398 typedef TPM_HANDLE TPMI_RH_ENDORSEMENT;
    399 typedef TPM_HANDLE TPMI_RH_PROVISION;
    400 typedef TPM_HANDLE TPMI_RH_CLEAR;
    401 typedef TPM_HANDLE TPMI_RH_NV_AUTH;
    402 typedef TPM_HANDLE TPMI_RH_LOCKOUT;
    403 typedef TPM_HANDLE TPMI_RH_NV_INDEX;
    404 typedef UINT16 TPM_ALG_ID;
    405 typedef TPM_ALG_ID TPMI_ALG_HASH;
    406 typedef TPM_ALG_ID TPMI_ALG_ASYM;
    407 typedef TPM_ALG_ID TPMI_ALG_SYM;
    408 typedef TPM_ALG_ID TPMI_ALG_SYM_OBJECT;
    409 typedef TPM_ALG_ID TPMI_ALG_SYM_MODE;
    410 typedef TPM_ALG_ID TPMI_ALG_KDF;
    411 typedef TPM_ALG_ID TPMI_ALG_SIG_SCHEME;
    412 typedef TPM_ALG_ID TPMI_ECC_KEY_EXCHANGE;
    413 typedef UINT16 TPM_ST;
    414 typedef TPM_ST TPMI_ST_COMMAND_TAG;
    415 typedef TPM_ST TPMI_ST_ATTEST;
    416 typedef TPM_KEY_BITS TPMI_AES_KEY_BITS;
    417 typedef TPM_KEY_BITS TPMI_SM4_KEY_BITS;
    418 typedef TPM_ALG_ID TPMI_ALG_KEYEDHASH_SCHEME;
    419 typedef TPM_ALG_ID TPMI_ALG_ASYM_SCHEME;
    420 typedef TPM_ALG_ID TPMI_ALG_RSA_SCHEME;
    421 typedef TPM_ALG_ID TPMI_ALG_RSA_DECRYPT;
    422 typedef TPM_KEY_BITS TPMI_RSA_KEY_BITS;
    423 typedef TPM_ALG_ID TPMI_ALG_ECC_SCHEME;
    424 typedef UINT16 TPM_ECC_CURVE;
    425 typedef TPM_ECC_CURVE TPMI_ECC_CURVE;
    426 typedef TPM_ALG_ID TPMI_ALG_PUBLIC;
    427 typedef UINT32 TPMA_ALGORITHM;
    428 typedef UINT32 TPMA_OBJECT;
    429 typedef UINT8 TPMA_SESSION;
    430 typedef UINT8 TPMA_LOCALITY;
    431 typedef UINT32 TPMA_PERMANENT;
    432 typedef UINT32 TPMA_STARTUP_CLEAR;
    433 typedef UINT32 TPMA_MEMORY;
    434 typedef UINT32 TPM_CC;
    435 typedef TPM_CC TPMA_CC;
    436 typedef UINT32 TPM_NV_INDEX;
    437 typedef UINT32 TPMA_NV;
    438 typedef UINT32 TPM_SPEC;
    439 typedef UINT32 TPM_GENERATED;
    440 typedef UINT32 TPM_RC;
    441 typedef INT8 TPM_CLOCK_ADJUST;
    442 typedef UINT16 TPM_EO;
    443 typedef UINT16 TPM_SU;
    444 typedef UINT8 TPM_SE;
    445 typedef UINT32 TPM_CAP;
    446 typedef UINT32 TPM_PT;
    447 typedef UINT32 TPM_PT_PCR;
    448 typedef UINT32 TPM_PS;
    449 typedef UINT8 TPM_HT;
    450 typedef UINT32 TPM_RH;
    451 typedef TPM_HANDLE TPM_HC;
    452 
    453 const TPM_SPEC TPM_SPEC_FAMILY = 0x322E3000;
    454 const TPM_SPEC TPM_SPEC_LEVEL = 00;
    455 const TPM_SPEC TPM_SPEC_VERSION = 99;
    456 const TPM_SPEC TPM_SPEC_YEAR = 2013;
    457 const TPM_SPEC TPM_SPEC_DAY_OF_YEAR = 304;
    458 const TPM_GENERATED TPM_GENERATED_VALUE = 0xff544347;
    459 const TPM_ALG_ID TPM_ALG_ERROR = 0x0000;
    460 const TPM_ALG_ID TPM_ALG_FIRST = 0x0001;
    461 const TPM_ALG_ID TPM_ALG_RSA = 0x0001;
    462 const TPM_ALG_ID TPM_ALG_SHA = 0x0004;
    463 const TPM_ALG_ID TPM_ALG_SHA1 = 0x0004;
    464 const TPM_ALG_ID TPM_ALG_HMAC = 0x0005;
    465 const TPM_ALG_ID TPM_ALG_AES = 0x0006;
    466 const TPM_ALG_ID TPM_ALG_MGF1 = 0x0007;
    467 const TPM_ALG_ID TPM_ALG_KEYEDHASH = 0x0008;
    468 const TPM_ALG_ID TPM_ALG_XOR = 0x000A;
    469 const TPM_ALG_ID TPM_ALG_SHA256 = 0x000B;
    470 const TPM_ALG_ID TPM_ALG_SHA384 = 0x000C;
    471 const TPM_ALG_ID TPM_ALG_SHA512 = 0x000D;
    472 const TPM_ALG_ID TPM_ALG_NULL = 0x0010;
    473 const TPM_ALG_ID TPM_ALG_SM3_256 = 0x0012;
    474 const TPM_ALG_ID TPM_ALG_SM4 = 0x0013;
    475 const TPM_ALG_ID TPM_ALG_RSASSA = 0x0014;
    476 const TPM_ALG_ID TPM_ALG_RSAES = 0x0015;
    477 const TPM_ALG_ID TPM_ALG_RSAPSS = 0x0016;
    478 const TPM_ALG_ID TPM_ALG_OAEP = 0x0017;
    479 const TPM_ALG_ID TPM_ALG_ECDSA = 0x0018;
    480 const TPM_ALG_ID TPM_ALG_ECDH = 0x0019;
    481 const TPM_ALG_ID TPM_ALG_ECDAA = 0x001A;
    482 const TPM_ALG_ID TPM_ALG_SM2 = 0x001B;
    483 const TPM_ALG_ID TPM_ALG_ECSCHNORR = 0x001C;
    484 const TPM_ALG_ID TPM_ALG_ECMQV = 0x001D;
    485 const TPM_ALG_ID TPM_ALG_KDF1_SP800_56a = 0x0020;
    486 const TPM_ALG_ID TPM_ALG_KDF2 = 0x0021;
    487 const TPM_ALG_ID TPM_ALG_KDF1_SP800_108 = 0x0022;
    488 const TPM_ALG_ID TPM_ALG_ECC = 0x0023;
    489 const TPM_ALG_ID TPM_ALG_SYMCIPHER = 0x0025;
    490 const TPM_ALG_ID TPM_ALG_CTR = 0x0040;
    491 const TPM_ALG_ID TPM_ALG_OFB = 0x0041;
    492 const TPM_ALG_ID TPM_ALG_CBC = 0x0042;
    493 const TPM_ALG_ID TPM_ALG_CFB = 0x0043;
    494 const TPM_ALG_ID TPM_ALG_ECB = 0x0044;
    495 const TPM_ALG_ID TPM_ALG_LAST = 0x0044;
    496 const TPM_ECC_CURVE TPM_ECC_NONE = 0x0000;
    497 const TPM_ECC_CURVE TPM_ECC_NIST_P192 = 0x0001;
    498 const TPM_ECC_CURVE TPM_ECC_NIST_P224 = 0x0002;
    499 const TPM_ECC_CURVE TPM_ECC_NIST_P256 = 0x0003;
    500 const TPM_ECC_CURVE TPM_ECC_NIST_P384 = 0x0004;
    501 const TPM_ECC_CURVE TPM_ECC_NIST_P521 = 0x0005;
    502 const TPM_ECC_CURVE TPM_ECC_BN_P256 = 0x0010;
    503 const TPM_ECC_CURVE TPM_ECC_BN_P638 = 0x0011;
    504 const TPM_ECC_CURVE TPM_ECC_SM2_P256 = 0x0020;
    505 const TPM_CC TPM_CC_FIRST = 0x0000011F;
    506 const TPM_CC TPM_CC_PP_FIRST = 0x0000011F;
    507 const TPM_CC TPM_CC_NV_UndefineSpaceSpecial = 0x0000011F;
    508 const TPM_CC TPM_CC_EvictControl = 0x00000120;
    509 const TPM_CC TPM_CC_HierarchyControl = 0x00000121;
    510 const TPM_CC TPM_CC_NV_UndefineSpace = 0x00000122;
    511 const TPM_CC TPM_CC_ChangeEPS = 0x00000124;
    512 const TPM_CC TPM_CC_ChangePPS = 0x00000125;
    513 const TPM_CC TPM_CC_Clear = 0x00000126;
    514 const TPM_CC TPM_CC_ClearControl = 0x00000127;
    515 const TPM_CC TPM_CC_ClockSet = 0x00000128;
    516 const TPM_CC TPM_CC_HierarchyChangeAuth = 0x00000129;
    517 const TPM_CC TPM_CC_NV_DefineSpace = 0x0000012A;
    518 const TPM_CC TPM_CC_PCR_Allocate = 0x0000012B;
    519 const TPM_CC TPM_CC_PCR_SetAuthPolicy = 0x0000012C;
    520 const TPM_CC TPM_CC_PP_Commands = 0x0000012D;
    521 const TPM_CC TPM_CC_SetPrimaryPolicy = 0x0000012E;
    522 const TPM_CC TPM_CC_FieldUpgradeStart = 0x0000012F;
    523 const TPM_CC TPM_CC_ClockRateAdjust = 0x00000130;
    524 const TPM_CC TPM_CC_CreatePrimary = 0x00000131;
    525 const TPM_CC TPM_CC_NV_GlobalWriteLock = 0x00000132;
    526 const TPM_CC TPM_CC_PP_LAST = 0x00000132;
    527 const TPM_CC TPM_CC_GetCommandAuditDigest = 0x00000133;
    528 const TPM_CC TPM_CC_NV_Increment = 0x00000134;
    529 const TPM_CC TPM_CC_NV_SetBits = 0x00000135;
    530 const TPM_CC TPM_CC_NV_Extend = 0x00000136;
    531 const TPM_CC TPM_CC_NV_Write = 0x00000137;
    532 const TPM_CC TPM_CC_NV_WriteLock = 0x00000138;
    533 const TPM_CC TPM_CC_DictionaryAttackLockReset = 0x00000139;
    534 const TPM_CC TPM_CC_DictionaryAttackParameters = 0x0000013A;
    535 const TPM_CC TPM_CC_NV_ChangeAuth = 0x0000013B;
    536 const TPM_CC TPM_CC_PCR_Event = 0x0000013C;
    537 const TPM_CC TPM_CC_PCR_Reset = 0x0000013D;
    538 const TPM_CC TPM_CC_SequenceComplete = 0x0000013E;
    539 const TPM_CC TPM_CC_SetAlgorithmSet = 0x0000013F;
    540 const TPM_CC TPM_CC_SetCommandCodeAuditStatus = 0x00000140;
    541 const TPM_CC TPM_CC_FieldUpgradeData = 0x00000141;
    542 const TPM_CC TPM_CC_IncrementalSelfTest = 0x00000142;
    543 const TPM_CC TPM_CC_SelfTest = 0x00000143;
    544 const TPM_CC TPM_CC_Startup = 0x00000144;
    545 const TPM_CC TPM_CC_Shutdown = 0x00000145;
    546 const TPM_CC TPM_CC_StirRandom = 0x00000146;
    547 const TPM_CC TPM_CC_ActivateCredential = 0x00000147;
    548 const TPM_CC TPM_CC_Certify = 0x00000148;
    549 const TPM_CC TPM_CC_PolicyNV = 0x00000149;
    550 const TPM_CC TPM_CC_CertifyCreation = 0x0000014A;
    551 const TPM_CC TPM_CC_Duplicate = 0x0000014B;
    552 const TPM_CC TPM_CC_GetTime = 0x0000014C;
    553 const TPM_CC TPM_CC_GetSessionAuditDigest = 0x0000014D;
    554 const TPM_CC TPM_CC_NV_Read = 0x0000014E;
    555 const TPM_CC TPM_CC_NV_ReadLock = 0x0000014F;
    556 const TPM_CC TPM_CC_ObjectChangeAuth = 0x00000150;
    557 const TPM_CC TPM_CC_PolicySecret = 0x00000151;
    558 const TPM_CC TPM_CC_Rewrap = 0x00000152;
    559 const TPM_CC TPM_CC_Create = 0x00000153;
    560 const TPM_CC TPM_CC_ECDH_ZGen = 0x00000154;
    561 const TPM_CC TPM_CC_HMAC = 0x00000155;
    562 const TPM_CC TPM_CC_Import = 0x00000156;
    563 const TPM_CC TPM_CC_Load = 0x00000157;
    564 const TPM_CC TPM_CC_Quote = 0x00000158;
    565 const TPM_CC TPM_CC_RSA_Decrypt = 0x00000159;
    566 const TPM_CC TPM_CC_HMAC_Start = 0x0000015B;
    567 const TPM_CC TPM_CC_SequenceUpdate = 0x0000015C;
    568 const TPM_CC TPM_CC_Sign = 0x0000015D;
    569 const TPM_CC TPM_CC_Unseal = 0x0000015E;
    570 const TPM_CC TPM_CC_PolicySigned = 0x00000160;
    571 const TPM_CC TPM_CC_ContextLoad = 0x00000161;
    572 const TPM_CC TPM_CC_ContextSave = 0x00000162;
    573 const TPM_CC TPM_CC_ECDH_KeyGen = 0x00000163;
    574 const TPM_CC TPM_CC_EncryptDecrypt = 0x00000164;
    575 const TPM_CC TPM_CC_FlushContext = 0x00000165;
    576 const TPM_CC TPM_CC_LoadExternal = 0x00000167;
    577 const TPM_CC TPM_CC_MakeCredential = 0x00000168;
    578 const TPM_CC TPM_CC_NV_ReadPublic = 0x00000169;
    579 const TPM_CC TPM_CC_PolicyAuthorize = 0x0000016A;
    580 const TPM_CC TPM_CC_PolicyAuthValue = 0x0000016B;
    581 const TPM_CC TPM_CC_PolicyCommandCode = 0x0000016C;
    582 const TPM_CC TPM_CC_PolicyCounterTimer = 0x0000016D;
    583 const TPM_CC TPM_CC_PolicyCpHash = 0x0000016E;
    584 const TPM_CC TPM_CC_PolicyLocality = 0x0000016F;
    585 const TPM_CC TPM_CC_PolicyNameHash = 0x00000170;
    586 const TPM_CC TPM_CC_PolicyOR = 0x00000171;
    587 const TPM_CC TPM_CC_PolicyTicket = 0x00000172;
    588 const TPM_CC TPM_CC_ReadPublic = 0x00000173;
    589 const TPM_CC TPM_CC_RSA_Encrypt = 0x00000174;
    590 const TPM_CC TPM_CC_StartAuthSession = 0x00000176;
    591 const TPM_CC TPM_CC_VerifySignature = 0x00000177;
    592 const TPM_CC TPM_CC_ECC_Parameters = 0x00000178;
    593 const TPM_CC TPM_CC_FirmwareRead = 0x00000179;
    594 const TPM_CC TPM_CC_GetCapability = 0x0000017A;
    595 const TPM_CC TPM_CC_GetRandom = 0x0000017B;
    596 const TPM_CC TPM_CC_GetTestResult = 0x0000017C;
    597 const TPM_CC TPM_CC_Hash = 0x0000017D;
    598 const TPM_CC TPM_CC_PCR_Read = 0x0000017E;
    599 const TPM_CC TPM_CC_PolicyPCR = 0x0000017F;
    600 const TPM_CC TPM_CC_PolicyRestart = 0x00000180;
    601 const TPM_CC TPM_CC_ReadClock = 0x00000181;
    602 const TPM_CC TPM_CC_PCR_Extend = 0x00000182;
    603 const TPM_CC TPM_CC_PCR_SetAuthValue = 0x00000183;
    604 const TPM_CC TPM_CC_NV_Certify = 0x00000184;
    605 const TPM_CC TPM_CC_EventSequenceComplete = 0x00000185;
    606 const TPM_CC TPM_CC_HashSequenceStart = 0x00000186;
    607 const TPM_CC TPM_CC_PolicyPhysicalPresence = 0x00000187;
    608 const TPM_CC TPM_CC_PolicyDuplicationSelect = 0x00000188;
    609 const TPM_CC TPM_CC_PolicyGetDigest = 0x00000189;
    610 const TPM_CC TPM_CC_TestParms = 0x0000018A;
    611 const TPM_CC TPM_CC_Commit = 0x0000018B;
    612 const TPM_CC TPM_CC_PolicyPassword = 0x0000018C;
    613 const TPM_CC TPM_CC_ZGen_2Phase = 0x0000018D;
    614 const TPM_CC TPM_CC_EC_Ephemeral = 0x0000018E;
    615 const TPM_CC TPM_CC_PolicyNvWritten = 0x0000018F;
    616 const TPM_CC TPM_CC_LAST = 0x0000018F;
    617 const TPM_RC TPM_RC_SUCCESS = 0x000;
    618 const TPM_RC TPM_RC_BAD_TAG = 0x01E;
    619 const TPM_RC RC_VER1 = 0x100;
    620 const TPM_RC TPM_RC_INITIALIZE = RC_VER1 + 0x000;
    621 const TPM_RC TPM_RC_FAILURE = RC_VER1 + 0x001;
    622 const TPM_RC TPM_RC_SEQUENCE = RC_VER1 + 0x003;
    623 const TPM_RC TPM_RC_PRIVATE = RC_VER1 + 0x00B;
    624 const TPM_RC TPM_RC_HMAC = RC_VER1 + 0x019;
    625 const TPM_RC TPM_RC_DISABLED = RC_VER1 + 0x020;
    626 const TPM_RC TPM_RC_EXCLUSIVE = RC_VER1 + 0x021;
    627 const TPM_RC TPM_RC_AUTH_TYPE = RC_VER1 + 0x024;
    628 const TPM_RC TPM_RC_AUTH_MISSING = RC_VER1 + 0x025;
    629 const TPM_RC TPM_RC_POLICY = RC_VER1 + 0x026;
    630 const TPM_RC TPM_RC_PCR = RC_VER1 + 0x027;
    631 const TPM_RC TPM_RC_PCR_CHANGED = RC_VER1 + 0x028;
    632 const TPM_RC TPM_RC_UPGRADE = RC_VER1 + 0x02D;
    633 const TPM_RC TPM_RC_TOO_MANY_CONTEXTS = RC_VER1 + 0x02E;
    634 const TPM_RC TPM_RC_AUTH_UNAVAILABLE = RC_VER1 + 0x02F;
    635 const TPM_RC TPM_RC_REBOOT = RC_VER1 + 0x030;
    636 const TPM_RC TPM_RC_UNBALANCED = RC_VER1 + 0x031;
    637 const TPM_RC TPM_RC_COMMAND_SIZE = RC_VER1 + 0x042;
    638 const TPM_RC TPM_RC_COMMAND_CODE = RC_VER1 + 0x043;
    639 const TPM_RC TPM_RC_AUTHSIZE = RC_VER1 + 0x044;
    640 const TPM_RC TPM_RC_AUTH_CONTEXT = RC_VER1 + 0x045;
    641 const TPM_RC TPM_RC_NV_RANGE = RC_VER1 + 0x046;
    642 const TPM_RC TPM_RC_NV_SIZE = RC_VER1 + 0x047;
    643 const TPM_RC TPM_RC_NV_LOCKED = RC_VER1 + 0x048;
    644 const TPM_RC TPM_RC_NV_AUTHORIZATION = RC_VER1 + 0x049;
    645 const TPM_RC TPM_RC_NV_UNINITIALIZED = RC_VER1 + 0x04A;
    646 const TPM_RC TPM_RC_NV_SPACE = RC_VER1 + 0x04B;
    647 const TPM_RC TPM_RC_NV_DEFINED = RC_VER1 + 0x04C;
    648 const TPM_RC TPM_RC_BAD_CONTEXT = RC_VER1 + 0x050;
    649 const TPM_RC TPM_RC_CPHASH = RC_VER1 + 0x051;
    650 const TPM_RC TPM_RC_PARENT = RC_VER1 + 0x052;
    651 const TPM_RC TPM_RC_NEEDS_TEST = RC_VER1 + 0x053;
    652 const TPM_RC TPM_RC_NO_RESULT = RC_VER1 + 0x054;
    653 const TPM_RC TPM_RC_SENSITIVE = RC_VER1 + 0x055;
    654 const TPM_RC RC_MAX_FM0 = RC_VER1 + 0x07F;
    655 const TPM_RC RC_FMT1 = 0x080;
    656 const TPM_RC TPM_RC_ASYMMETRIC = RC_FMT1 + 0x001;
    657 const TPM_RC TPM_RC_ATTRIBUTES = RC_FMT1 + 0x002;
    658 const TPM_RC TPM_RC_HASH = RC_FMT1 + 0x003;
    659 const TPM_RC TPM_RC_VALUE = RC_FMT1 + 0x004;
    660 const TPM_RC TPM_RC_HIERARCHY = RC_FMT1 + 0x005;
    661 const TPM_RC TPM_RC_KEY_SIZE = RC_FMT1 + 0x007;
    662 const TPM_RC TPM_RC_MGF = RC_FMT1 + 0x008;
    663 const TPM_RC TPM_RC_MODE = RC_FMT1 + 0x009;
    664 const TPM_RC TPM_RC_TYPE = RC_FMT1 + 0x00A;
    665 const TPM_RC TPM_RC_HANDLE = RC_FMT1 + 0x00B;
    666 const TPM_RC TPM_RC_KDF = RC_FMT1 + 0x00C;
    667 const TPM_RC TPM_RC_RANGE = RC_FMT1 + 0x00D;
    668 const TPM_RC TPM_RC_AUTH_FAIL = RC_FMT1 + 0x00E;
    669 const TPM_RC TPM_RC_NONCE = RC_FMT1 + 0x00F;
    670 const TPM_RC TPM_RC_PP = RC_FMT1 + 0x010;
    671 const TPM_RC TPM_RC_SCHEME = RC_FMT1 + 0x012;
    672 const TPM_RC TPM_RC_SIZE = RC_FMT1 + 0x015;
    673 const TPM_RC TPM_RC_SYMMETRIC = RC_FMT1 + 0x016;
    674 const TPM_RC TPM_RC_TAG = RC_FMT1 + 0x017;
    675 const TPM_RC TPM_RC_SELECTOR = RC_FMT1 + 0x018;
    676 const TPM_RC TPM_RC_INSUFFICIENT = RC_FMT1 + 0x01A;
    677 const TPM_RC TPM_RC_SIGNATURE = RC_FMT1 + 0x01B;
    678 const TPM_RC TPM_RC_KEY = RC_FMT1 + 0x01C;
    679 const TPM_RC TPM_RC_POLICY_FAIL = RC_FMT1 + 0x01D;
    680 const TPM_RC TPM_RC_INTEGRITY = RC_FMT1 + 0x01F;
    681 const TPM_RC TPM_RC_TICKET = RC_FMT1 + 0x020;
    682 const TPM_RC TPM_RC_RESERVED_BITS = RC_FMT1 + 0x021;
    683 const TPM_RC TPM_RC_BAD_AUTH = RC_FMT1 + 0x022;
    684 const TPM_RC TPM_RC_EXPIRED = RC_FMT1 + 0x023;
    685 const TPM_RC TPM_RC_POLICY_CC = RC_FMT1 + 0x024;
    686 const TPM_RC TPM_RC_BINDING = RC_FMT1 + 0x025;
    687 const TPM_RC TPM_RC_CURVE = RC_FMT1 + 0x026;
    688 const TPM_RC TPM_RC_ECC_POINT = RC_FMT1 + 0x027;
    689 const TPM_RC RC_WARN = 0x900;
    690 const TPM_RC TPM_RC_CONTEXT_GAP = RC_WARN + 0x001;
    691 const TPM_RC TPM_RC_OBJECT_MEMORY = RC_WARN + 0x002;
    692 const TPM_RC TPM_RC_SESSION_MEMORY = RC_WARN + 0x003;
    693 const TPM_RC TPM_RC_MEMORY = RC_WARN + 0x004;
    694 const TPM_RC TPM_RC_SESSION_HANDLES = RC_WARN + 0x005;
    695 const TPM_RC TPM_RC_OBJECT_HANDLES = RC_WARN + 0x006;
    696 const TPM_RC TPM_RC_LOCALITY = RC_WARN + 0x007;
    697 const TPM_RC TPM_RC_YIELDED = RC_WARN + 0x008;
    698 const TPM_RC TPM_RC_CANCELED = RC_WARN + 0x009;
    699 const TPM_RC TPM_RC_TESTING = RC_WARN + 0x00A;
    700 const TPM_RC TPM_RC_REFERENCE_H0 = RC_WARN + 0x010;
    701 const TPM_RC TPM_RC_REFERENCE_H1 = RC_WARN + 0x011;
    702 const TPM_RC TPM_RC_REFERENCE_H2 = RC_WARN + 0x012;
    703 const TPM_RC TPM_RC_REFERENCE_H3 = RC_WARN + 0x013;
    704 const TPM_RC TPM_RC_REFERENCE_H4 = RC_WARN + 0x014;
    705 const TPM_RC TPM_RC_REFERENCE_H5 = RC_WARN + 0x015;
    706 const TPM_RC TPM_RC_REFERENCE_H6 = RC_WARN + 0x016;
    707 const TPM_RC TPM_RC_REFERENCE_S0 = RC_WARN + 0x018;
    708 const TPM_RC TPM_RC_REFERENCE_S1 = RC_WARN + 0x019;
    709 const TPM_RC TPM_RC_REFERENCE_S2 = RC_WARN + 0x01A;
    710 const TPM_RC TPM_RC_REFERENCE_S3 = RC_WARN + 0x01B;
    711 const TPM_RC TPM_RC_REFERENCE_S4 = RC_WARN + 0x01C;
    712 const TPM_RC TPM_RC_REFERENCE_S5 = RC_WARN + 0x01D;
    713 const TPM_RC TPM_RC_REFERENCE_S6 = RC_WARN + 0x01E;
    714 const TPM_RC TPM_RC_NV_RATE = RC_WARN + 0x020;
    715 const TPM_RC TPM_RC_LOCKOUT = RC_WARN + 0x021;
    716 const TPM_RC TPM_RC_RETRY = RC_WARN + 0x022;
    717 const TPM_RC TPM_RC_NV_UNAVAILABLE = RC_WARN + 0x023;
    718 const TPM_RC TPM_RC_NOT_USED = RC_WARN + 0x7F;
    719 const TPM_RC TPM_RC_H = 0x000;
    720 const TPM_RC TPM_RC_P = 0x040;
    721 const TPM_RC TPM_RC_S = 0x800;
    722 const TPM_RC TPM_RC_1 = 0x100;
    723 const TPM_RC TPM_RC_2 = 0x200;
    724 const TPM_RC TPM_RC_3 = 0x300;
    725 const TPM_RC TPM_RC_4 = 0x400;
    726 const TPM_RC TPM_RC_5 = 0x500;
    727 const TPM_RC TPM_RC_6 = 0x600;
    728 const TPM_RC TPM_RC_7 = 0x700;
    729 const TPM_RC TPM_RC_8 = 0x800;
    730 const TPM_RC TPM_RC_9 = 0x900;
    731 const TPM_RC TPM_RC_A = 0xA00;
    732 const TPM_RC TPM_RC_B = 0xB00;
    733 const TPM_RC TPM_RC_C = 0xC00;
    734 const TPM_RC TPM_RC_D = 0xD00;
    735 const TPM_RC TPM_RC_E = 0xE00;
    736 const TPM_RC TPM_RC_F = 0xF00;
    737 const TPM_RC TPM_RC_N_MASK = 0xF00;
    738 const TPM_CLOCK_ADJUST TPM_CLOCK_COARSE_SLOWER = -3;
    739 const TPM_CLOCK_ADJUST TPM_CLOCK_MEDIUM_SLOWER = -2;
    740 const TPM_CLOCK_ADJUST TPM_CLOCK_FINE_SLOWER = -1;
    741 const TPM_CLOCK_ADJUST TPM_CLOCK_NO_CHANGE = 0;
    742 const TPM_CLOCK_ADJUST TPM_CLOCK_FINE_FASTER = 1;
    743 const TPM_CLOCK_ADJUST TPM_CLOCK_MEDIUM_FASTER = 2;
    744 const TPM_CLOCK_ADJUST TPM_CLOCK_COARSE_FASTER = 3;
    745 const TPM_EO TPM_EO_EQ = 0x0000;
    746 const TPM_EO TPM_EO_NEQ = 0x0001;
    747 const TPM_EO TPM_EO_SIGNED_GT = 0x0002;
    748 const TPM_EO TPM_EO_UNSIGNED_GT = 0x0003;
    749 const TPM_EO TPM_EO_SIGNED_LT = 0x0004;
    750 const TPM_EO TPM_EO_UNSIGNED_LT = 0x0005;
    751 const TPM_EO TPM_EO_SIGNED_GE = 0x0006;
    752 const TPM_EO TPM_EO_UNSIGNED_GE = 0x0007;
    753 const TPM_EO TPM_EO_SIGNED_LE = 0x0008;
    754 const TPM_EO TPM_EO_UNSIGNED_LE = 0x0009;
    755 const TPM_EO TPM_EO_BITSET = 0x000A;
    756 const TPM_EO TPM_EO_BITCLEAR = 0x000B;
    757 const TPM_ST TPM_ST_RSP_COMMAND = 0x00C4;
    758 const TPM_ST TPM_ST_NULL = 0X8000;
    759 const TPM_ST TPM_ST_NO_SESSIONS = 0x8001;
    760 const TPM_ST TPM_ST_SESSIONS = 0x8002;
    761 const TPM_ST TPM_ST_ATTEST_NV = 0x8014;
    762 const TPM_ST TPM_ST_ATTEST_COMMAND_AUDIT = 0x8015;
    763 const TPM_ST TPM_ST_ATTEST_SESSION_AUDIT = 0x8016;
    764 const TPM_ST TPM_ST_ATTEST_CERTIFY = 0x8017;
    765 const TPM_ST TPM_ST_ATTEST_QUOTE = 0x8018;
    766 const TPM_ST TPM_ST_ATTEST_TIME = 0x8019;
    767 const TPM_ST TPM_ST_ATTEST_CREATION = 0x801A;
    768 const TPM_ST TPM_ST_CREATION = 0x8021;
    769 const TPM_ST TPM_ST_VERIFIED = 0x8022;
    770 const TPM_ST TPM_ST_AUTH_SECRET = 0x8023;
    771 const TPM_ST TPM_ST_HASHCHECK = 0x8024;
    772 const TPM_ST TPM_ST_AUTH_SIGNED = 0x8025;
    773 const TPM_ST TPM_ST_FU_MANIFEST = 0x8029;
    774 const TPM_SU TPM_SU_CLEAR = 0x0000;
    775 const TPM_SU TPM_SU_STATE = 0x0001;
    776 const TPM_SE TPM_SE_HMAC = 0x00;
    777 const TPM_SE TPM_SE_POLICY = 0x01;
    778 const TPM_SE TPM_SE_TRIAL = 0x03;
    779 const TPM_CAP TPM_CAP_FIRST = 0x00000000;
    780 const TPM_CAP TPM_CAP_ALGS = 0x00000000;
    781 const TPM_CAP TPM_CAP_HANDLES = 0x00000001;
    782 const TPM_CAP TPM_CAP_COMMANDS = 0x00000002;
    783 const TPM_CAP TPM_CAP_PP_COMMANDS = 0x00000003;
    784 const TPM_CAP TPM_CAP_AUDIT_COMMANDS = 0x00000004;
    785 const TPM_CAP TPM_CAP_PCRS = 0x00000005;
    786 const TPM_CAP TPM_CAP_TPM_PROPERTIES = 0x00000006;
    787 const TPM_CAP TPM_CAP_PCR_PROPERTIES = 0x00000007;
    788 const TPM_CAP TPM_CAP_ECC_CURVES = 0x00000008;
    789 const TPM_CAP TPM_CAP_LAST = 0x00000008;
    790 const TPM_CAP TPM_CAP_VENDOR_PROPERTY = 0x00000100;
    791 const TPM_PT TPM_PT_NONE = 0x00000000;
    792 const TPM_PT PT_GROUP = 0x00000100;
    793 const TPM_PT PT_FIXED = PT_GROUP * 1;
    794 const TPM_PT TPM_PT_FAMILY_INDICATOR = PT_FIXED + 0;
    795 const TPM_PT TPM_PT_LEVEL = PT_FIXED + 1;
    796 const TPM_PT TPM_PT_REVISION = PT_FIXED + 2;
    797 const TPM_PT TPM_PT_DAY_OF_YEAR = PT_FIXED + 3;
    798 const TPM_PT TPM_PT_YEAR = PT_FIXED + 4;
    799 const TPM_PT TPM_PT_MANUFACTURER = PT_FIXED + 5;
    800 const TPM_PT TPM_PT_VENDOR_STRING_1 = PT_FIXED + 6;
    801 const TPM_PT TPM_PT_VENDOR_STRING_2 = PT_FIXED + 7;
    802 const TPM_PT TPM_PT_VENDOR_STRING_3 = PT_FIXED + 8;
    803 const TPM_PT TPM_PT_VENDOR_STRING_4 = PT_FIXED + 9;
    804 const TPM_PT TPM_PT_VENDOR_TPM_TYPE = PT_FIXED + 10;
    805 const TPM_PT TPM_PT_FIRMWARE_VERSION_1 = PT_FIXED + 11;
    806 const TPM_PT TPM_PT_FIRMWARE_VERSION_2 = PT_FIXED + 12;
    807 const TPM_PT TPM_PT_INPUT_BUFFER = PT_FIXED + 13;
    808 const TPM_PT TPM_PT_HR_TRANSIENT_MIN = PT_FIXED + 14;
    809 const TPM_PT TPM_PT_HR_PERSISTENT_MIN = PT_FIXED + 15;
    810 const TPM_PT TPM_PT_HR_LOADED_MIN = PT_FIXED + 16;
    811 const TPM_PT TPM_PT_ACTIVE_SESSIONS_MAX = PT_FIXED + 17;
    812 const TPM_PT TPM_PT_PCR_COUNT = PT_FIXED + 18;
    813 const TPM_PT TPM_PT_PCR_SELECT_MIN = PT_FIXED + 19;
    814 const TPM_PT TPM_PT_CONTEXT_GAP_MAX = PT_FIXED + 20;
    815 const TPM_PT TPM_PT_NV_COUNTERS_MAX = PT_FIXED + 22;
    816 const TPM_PT TPM_PT_NV_INDEX_MAX = PT_FIXED + 23;
    817 const TPM_PT TPM_PT_MEMORY = PT_FIXED + 24;
    818 const TPM_PT TPM_PT_CLOCK_UPDATE = PT_FIXED + 25;
    819 const TPM_PT TPM_PT_CONTEXT_HASH = PT_FIXED + 26;
    820 const TPM_PT TPM_PT_CONTEXT_SYM = PT_FIXED + 27;
    821 const TPM_PT TPM_PT_CONTEXT_SYM_SIZE = PT_FIXED + 28;
    822 const TPM_PT TPM_PT_ORDERLY_COUNT = PT_FIXED + 29;
    823 const TPM_PT TPM_PT_MAX_COMMAND_SIZE = PT_FIXED + 30;
    824 const TPM_PT TPM_PT_MAX_RESPONSE_SIZE = PT_FIXED + 31;
    825 const TPM_PT TPM_PT_MAX_DIGEST = PT_FIXED + 32;
    826 const TPM_PT TPM_PT_MAX_OBJECT_CONTEXT = PT_FIXED + 33;
    827 const TPM_PT TPM_PT_MAX_SESSION_CONTEXT = PT_FIXED + 34;
    828 const TPM_PT TPM_PT_PS_FAMILY_INDICATOR = PT_FIXED + 35;
    829 const TPM_PT TPM_PT_PS_LEVEL = PT_FIXED + 36;
    830 const TPM_PT TPM_PT_PS_REVISION = PT_FIXED + 37;
    831 const TPM_PT TPM_PT_PS_DAY_OF_YEAR = PT_FIXED + 38;
    832 const TPM_PT TPM_PT_PS_YEAR = PT_FIXED + 39;
    833 const TPM_PT TPM_PT_SPLIT_MAX = PT_FIXED + 40;
    834 const TPM_PT TPM_PT_TOTAL_COMMANDS = PT_FIXED + 41;
    835 const TPM_PT TPM_PT_LIBRARY_COMMANDS = PT_FIXED + 42;
    836 const TPM_PT TPM_PT_VENDOR_COMMANDS = PT_FIXED + 43;
    837 const TPM_PT TPM_PT_NV_BUFFER_MAX = PT_FIXED + 44;
    838 const TPM_PT PT_VAR = PT_GROUP * 2;
    839 const TPM_PT TPM_PT_PERMANENT = PT_VAR + 0;
    840 const TPM_PT TPM_PT_STARTUP_CLEAR = PT_VAR + 1;
    841 const TPM_PT TPM_PT_HR_NV_INDEX = PT_VAR + 2;
    842 const TPM_PT TPM_PT_HR_LOADED = PT_VAR + 3;
    843 const TPM_PT TPM_PT_HR_LOADED_AVAIL = PT_VAR + 4;
    844 const TPM_PT TPM_PT_HR_ACTIVE = PT_VAR + 5;
    845 const TPM_PT TPM_PT_HR_ACTIVE_AVAIL = PT_VAR + 6;
    846 const TPM_PT TPM_PT_HR_TRANSIENT_AVAIL = PT_VAR + 7;
    847 const TPM_PT TPM_PT_HR_PERSISTENT = PT_VAR + 8;
    848 const TPM_PT TPM_PT_HR_PERSISTENT_AVAIL = PT_VAR + 9;
    849 const TPM_PT TPM_PT_NV_COUNTERS = PT_VAR + 10;
    850 const TPM_PT TPM_PT_NV_COUNTERS_AVAIL = PT_VAR + 11;
    851 const TPM_PT TPM_PT_ALGORITHM_SET = PT_VAR + 12;
    852 const TPM_PT TPM_PT_LOADED_CURVES = PT_VAR + 13;
    853 const TPM_PT TPM_PT_LOCKOUT_COUNTER = PT_VAR + 14;
    854 const TPM_PT TPM_PT_MAX_AUTH_FAIL = PT_VAR + 15;
    855 const TPM_PT TPM_PT_LOCKOUT_INTERVAL = PT_VAR + 16;
    856 const TPM_PT TPM_PT_LOCKOUT_RECOVERY = PT_VAR + 17;
    857 const TPM_PT TPM_PT_NV_WRITE_RECOVERY = PT_VAR + 18;
    858 const TPM_PT TPM_PT_AUDIT_COUNTER_0 = PT_VAR + 19;
    859 const TPM_PT TPM_PT_AUDIT_COUNTER_1 = PT_VAR + 20;
    860 const TPM_PT_PCR TPM_PT_PCR_FIRST = 0x00000000;
    861 const TPM_PT_PCR TPM_PT_PCR_SAVE = 0x00000000;
    862 const TPM_PT_PCR TPM_PT_PCR_EXTEND_L0 = 0x00000001;
    863 const TPM_PT_PCR TPM_PT_PCR_RESET_L0 = 0x00000002;
    864 const TPM_PT_PCR TPM_PT_PCR_EXTEND_L1 = 0x00000003;
    865 const TPM_PT_PCR TPM_PT_PCR_RESET_L1 = 0x00000004;
    866 const TPM_PT_PCR TPM_PT_PCR_EXTEND_L2 = 0x00000005;
    867 const TPM_PT_PCR TPM_PT_PCR_RESET_L2 = 0x00000006;
    868 const TPM_PT_PCR TPM_PT_PCR_EXTEND_L3 = 0x00000007;
    869 const TPM_PT_PCR TPM_PT_PCR_RESET_L3 = 0x00000008;
    870 const TPM_PT_PCR TPM_PT_PCR_EXTEND_L4 = 0x00000009;
    871 const TPM_PT_PCR TPM_PT_PCR_RESET_L4 = 0x0000000A;
    872 const TPM_PT_PCR TPM_PT_PCR_NO_INCREMENT = 0x00000011;
    873 const TPM_PT_PCR TPM_PT_PCR_DRTM_RESET = 0x00000012;
    874 const TPM_PT_PCR TPM_PT_PCR_POLICY = 0x00000013;
    875 const TPM_PT_PCR TPM_PT_PCR_AUTH = 0x00000014;
    876 const TPM_PT_PCR TPM_PT_PCR_LAST = 0x00000014;
    877 const TPM_PS TPM_PS_MAIN = 0x00000000;
    878 const TPM_PS TPM_PS_PC = 0x00000001;
    879 const TPM_PS TPM_PS_PDA = 0x00000002;
    880 const TPM_PS TPM_PS_CELL_PHONE = 0x00000003;
    881 const TPM_PS TPM_PS_SERVER = 0x00000004;
    882 const TPM_PS TPM_PS_PERIPHERAL = 0x00000005;
    883 const TPM_PS TPM_PS_TSS = 0x00000006;
    884 const TPM_PS TPM_PS_STORAGE = 0x00000007;
    885 const TPM_PS TPM_PS_AUTHENTICATION = 0x00000008;
    886 const TPM_PS TPM_PS_EMBEDDED = 0x00000009;
    887 const TPM_PS TPM_PS_HARDCOPY = 0x0000000A;
    888 const TPM_PS TPM_PS_INFRASTRUCTURE = 0x0000000B;
    889 const TPM_PS TPM_PS_VIRTUALIZATION = 0x0000000C;
    890 const TPM_PS TPM_PS_TNC = 0x0000000D;
    891 const TPM_PS TPM_PS_MULTI_TENANT = 0x0000000E;
    892 const TPM_PS TPM_PS_TC = 0x0000000F;
    893 const TPM_HT TPM_HT_PCR = 0x00;
    894 const TPM_HT TPM_HT_NV_INDEX = 0x01;
    895 const TPM_HT TPM_HT_HMAC_SESSION = 0x02;
    896 const TPM_HT TPM_HT_LOADED_SESSION = 0x02;
    897 const TPM_HT TPM_HT_POLICY_SESSION = 0x03;
    898 const TPM_HT TPM_HT_ACTIVE_SESSION = 0x03;
    899 const TPM_HT TPM_HT_PERMANENT = 0x40;
    900 const TPM_HT TPM_HT_TRANSIENT = 0x80;
    901 const TPM_HT TPM_HT_PERSISTENT = 0x81;
    902 const TPM_RH TPM_RH_FIRST = 0x40000000;
    903 const TPM_RH TPM_RH_SRK = 0x40000000;
    904 const TPM_RH TPM_RH_OWNER = 0x40000001;
    905 const TPM_RH TPM_RH_REVOKE = 0x40000002;
    906 const TPM_RH TPM_RH_TRANSPORT = 0x40000003;
    907 const TPM_RH TPM_RH_OPERATOR = 0x40000004;
    908 const TPM_RH TPM_RH_ADMIN = 0x40000005;
    909 const TPM_RH TPM_RH_EK = 0x40000006;
    910 const TPM_RH TPM_RH_NULL = 0x40000007;
    911 const TPM_RH TPM_RH_UNASSIGNED = 0x40000008;
    912 const TPM_RH TPM_RS_PW = 0x40000009;
    913 const TPM_RH TPM_RH_LOCKOUT = 0x4000000A;
    914 const TPM_RH TPM_RH_ENDORSEMENT = 0x4000000B;
    915 const TPM_RH TPM_RH_PLATFORM = 0x4000000C;
    916 const TPM_RH TPM_RH_PLATFORM_NV = 0x4000000D;
    917 const TPM_RH TPM_RH_LAST = 0x4000000D;
    918 const TPM_HC HR_HANDLE_MASK = 0x00FFFFFF;
    919 const TPM_HC HR_RANGE_MASK = 0xFF000000;
    920 const TPM_HC HR_SHIFT = 24;
    921 const TPM_HC HR_PCR = (TPM_HT_PCR << HR_SHIFT);
    922 const TPM_HC HR_HMAC_SESSION = (TPM_HT_HMAC_SESSION << HR_SHIFT);
    923 const TPM_HC HR_POLICY_SESSION = (TPM_HT_POLICY_SESSION << HR_SHIFT);
    924 const TPM_HC HR_TRANSIENT = (TPM_HT_TRANSIENT << HR_SHIFT);
    925 const TPM_HC HR_PERSISTENT = (TPM_HT_PERSISTENT << HR_SHIFT);
    926 const TPM_HC HR_NV_INDEX = (TPM_HT_NV_INDEX << HR_SHIFT);
    927 const TPM_HC HR_PERMANENT = (TPM_HT_PERMANENT << HR_SHIFT);
    928 const TPM_HC PCR_FIRST = (HR_PCR + 0);
    929 const TPM_HC PCR_LAST = (PCR_FIRST + IMPLEMENTATION_PCR-1);
    930 const TPM_HC HMAC_SESSION_FIRST = (HR_HMAC_SESSION + 0);
    931 const TPM_HC HMAC_SESSION_LAST = (HMAC_SESSION_FIRST+MAX_ACTIVE_SESSIONS-1);
    932 const TPM_HC LOADED_SESSION_LAST = HMAC_SESSION_LAST;
    933 const TPM_HC POLICY_SESSION_FIRST = (HR_POLICY_SESSION + 0);
    934 const TPM_HC POLICY_SESSION_LAST = (POLICY_SESSION_FIRST + MAX_ACTIVE_SESSIONS-1);
    935 const TPM_HC TRANSIENT_FIRST = (HR_TRANSIENT + 0);
    936 const TPM_HC ACTIVE_SESSION_FIRST = POLICY_SESSION_FIRST;
    937 const TPM_HC ACTIVE_SESSION_LAST = POLICY_SESSION_LAST;
    938 const TPM_HC TRANSIENT_LAST = (TRANSIENT_FIRST+MAX_LOADED_OBJECTS-1);
    939 const TPM_HC PERSISTENT_FIRST = (HR_PERSISTENT + 0);
    940 const TPM_HC PERSISTENT_LAST = (PERSISTENT_FIRST + 0x00FFFFFF);
    941 const TPM_HC PLATFORM_PERSISTENT = (PERSISTENT_FIRST + 0x00800000);
    942 const TPM_HC NV_INDEX_FIRST = (HR_NV_INDEX + 0);
    943 const TPM_HC NV_INDEX_LAST = (NV_INDEX_FIRST + 0x00FFFFFF);
    944 const TPM_HC PERMANENT_FIRST = TPM_RH_FIRST;
    945 const TPM_HC PERMANENT_LAST = TPM_RH_LAST;
    946 
    947 struct TPMS_ALGORITHM_DESCRIPTION {
    948   TPM_ALG_ID alg;
    949   TPMA_ALGORITHM attributes;
    950 };
    951 
    952 union TPMU_HA {
    953   BYTE sha1[SHA1_DIGEST_SIZE];
    954   BYTE sha256[SHA256_DIGEST_SIZE];
    955   BYTE sm3_256[SM3_256_DIGEST_SIZE];
    956   BYTE sha384[SHA384_DIGEST_SIZE];
    957   BYTE sha512[SHA512_DIGEST_SIZE];
    958 };
    959 
    960 struct TPMT_HA {
    961   TPMI_ALG_HASH hash_alg;
    962   TPMU_HA digest;
    963 };
    964 
    965 struct TPM2B_DIGEST {
    966   UINT16 size;
    967   BYTE buffer[sizeof(TPMU_HA)];
    968 };
    969 
    970 struct TPM2B_DATA {
    971   UINT16 size;
    972   BYTE buffer[sizeof(TPMT_HA)];
    973 };
    974 
    975 struct TPM2B_EVENT {
    976   UINT16 size;
    977   BYTE buffer[1024];
    978 };
    979 
    980 struct TPM2B_MAX_BUFFER {
    981   UINT16 size;
    982   BYTE buffer[MAX_DIGEST_BUFFER];
    983 };
    984 
    985 struct TPM2B_MAX_NV_BUFFER {
    986   UINT16 size;
    987   BYTE buffer[MAX_NV_BUFFER_SIZE];
    988 };
    989 
    990 struct TPM2B_TIMEOUT {
    991   UINT16 size;
    992   BYTE buffer[sizeof(UINT64)];
    993 };
    994 
    995 struct TPM2B_IV {
    996   UINT16 size;
    997   BYTE buffer[MAX_SYM_BLOCK_SIZE];
    998 };
    999 
   1000 union TPMU_NAME {
   1001   TPMT_HA digest;
   1002   TPM_HANDLE handle;
   1003 };
   1004 
   1005 struct TPM2B_NAME {
   1006   UINT16 size;
   1007   BYTE name[sizeof(TPMU_NAME)];
   1008 };
   1009 
   1010 struct TPMS_PCR_SELECT {
   1011   UINT8 sizeof_select;
   1012   BYTE pcr_select[PCR_SELECT_MAX];
   1013 };
   1014 
   1015 struct TPMS_PCR_SELECTION {
   1016   TPMI_ALG_HASH hash;
   1017   UINT8 sizeof_select;
   1018   BYTE pcr_select[PCR_SELECT_MAX];
   1019 };
   1020 
   1021 struct TPMT_TK_CREATION {
   1022   TPM_ST tag;
   1023   TPMI_RH_HIERARCHY hierarchy;
   1024   TPM2B_DIGEST digest;
   1025 };
   1026 
   1027 struct TPMT_TK_VERIFIED {
   1028   TPM_ST tag;
   1029   TPMI_RH_HIERARCHY hierarchy;
   1030   TPM2B_DIGEST digest;
   1031 };
   1032 
   1033 struct TPMT_TK_AUTH {
   1034   TPMI_RH_HIERARCHY hierarchy;
   1035   TPM2B_DIGEST digest;
   1036 };
   1037 
   1038 struct TPMT_TK_HASHCHECK {
   1039   TPM_ST tag;
   1040   TPMI_RH_HIERARCHY hierarchy;
   1041   TPM2B_DIGEST digest;
   1042 };
   1043 
   1044 struct TPMS_ALG_PROPERTY {
   1045   TPM_ALG_ID alg;
   1046   TPMA_ALGORITHM alg_properties;
   1047 };
   1048 
   1049 struct TPMS_TAGGED_PROPERTY {
   1050   TPM_PT property;
   1051   UINT32 value;
   1052 };
   1053 
   1054 struct TPMS_TAGGED_PCR_SELECT {
   1055   TPM_PT tag;
   1056   UINT8 sizeof_select;
   1057   BYTE pcr_select[PCR_SELECT_MAX];
   1058 };
   1059 
   1060 struct TPML_CC {
   1061   UINT32 count;
   1062   TPM_CC command_codes[MAX_CAP_CC];
   1063 };
   1064 
   1065 struct TPML_CCA {
   1066   UINT32 count;
   1067   TPMA_CC command_attributes[MAX_CAP_CC];
   1068 };
   1069 
   1070 struct TPML_ALG {
   1071   UINT32 count;
   1072   TPM_ALG_ID algorithms[MAX_ALG_LIST_SIZE];
   1073 };
   1074 
   1075 struct TPML_HANDLE {
   1076   UINT32 count;
   1077   TPM_HANDLE handle[MAX_CAP_HANDLES];
   1078 };
   1079 
   1080 struct TPML_DIGEST {
   1081   UINT32 count;
   1082   TPM2B_DIGEST digests[8];
   1083 };
   1084 
   1085 struct TPML_DIGEST_VALUES {
   1086   UINT32 count;
   1087   TPMT_HA digests[HASH_COUNT];
   1088 };
   1089 
   1090 struct TPM2B_DIGEST_VALUES {
   1091   UINT16 size;
   1092   BYTE buffer[sizeof(TPML_DIGEST_VALUES)];
   1093 };
   1094 
   1095 struct TPML_PCR_SELECTION {
   1096   UINT32 count;
   1097   TPMS_PCR_SELECTION pcr_selections[HASH_COUNT];
   1098 };
   1099 
   1100 struct TPML_ALG_PROPERTY {
   1101   UINT32 count;
   1102   TPMS_ALG_PROPERTY alg_properties[MAX_CAP_ALGS];
   1103 };
   1104 
   1105 struct TPML_TAGGED_TPM_PROPERTY {
   1106   UINT32 count;
   1107   TPMS_TAGGED_PROPERTY tpm_property[MAX_TPM_PROPERTIES];
   1108 };
   1109 
   1110 struct TPML_TAGGED_PCR_PROPERTY {
   1111   UINT32 count;
   1112   TPMS_TAGGED_PCR_SELECT pcr_property[MAX_PCR_PROPERTIES];
   1113 };
   1114 
   1115 struct TPML_ECC_CURVE {
   1116   UINT32 count;
   1117   TPM_ECC_CURVE ecc_curves[MAX_ECC_CURVES];
   1118 };
   1119 
   1120 union TPMU_CAPABILITIES {
   1121   TPML_ALG_PROPERTY algorithms;
   1122   TPML_HANDLE handles;
   1123   TPML_CCA command;
   1124   TPML_CC pp_commands;
   1125   TPML_CC audit_commands;
   1126   TPML_PCR_SELECTION assigned_pcr;
   1127   TPML_TAGGED_TPM_PROPERTY tpm_properties;
   1128   TPML_TAGGED_PCR_PROPERTY pcr_properties;
   1129   TPML_ECC_CURVE ecc_curves;
   1130 };
   1131 
   1132 struct TPMS_CAPABILITY_DATA {
   1133   TPM_CAP capability;
   1134   TPMU_CAPABILITIES data;
   1135 };
   1136 
   1137 struct TPMS_CLOCK_INFO {
   1138   UINT64 clock;
   1139   UINT32 reset_count;
   1140   UINT32 restart_count;
   1141   TPMI_YES_NO safe;
   1142 };
   1143 
   1144 struct TPMS_TIME_INFO {
   1145   UINT64 time;
   1146   TPMS_CLOCK_INFO clock_info;
   1147 };
   1148 
   1149 struct TPMS_TIME_ATTEST_INFO {
   1150   TPMS_TIME_INFO time;
   1151   UINT64 firmware_version;
   1152 };
   1153 
   1154 struct TPMS_CERTIFY_INFO {
   1155   TPM2B_NAME name;
   1156   TPM2B_NAME qualified_name;
   1157 };
   1158 
   1159 struct TPMS_QUOTE_INFO {
   1160   TPML_PCR_SELECTION pcr_select;
   1161   TPM2B_DIGEST pcr_digest;
   1162 };
   1163 
   1164 struct TPMS_COMMAND_AUDIT_INFO {
   1165   UINT64 audit_counter;
   1166   TPM_ALG_ID digest_alg;
   1167   TPM2B_DIGEST audit_digest;
   1168   TPM2B_DIGEST command_digest;
   1169 };
   1170 
   1171 struct TPMS_SESSION_AUDIT_INFO {
   1172   TPMI_YES_NO exclusive_session;
   1173   TPM2B_DIGEST session_digest;
   1174 };
   1175 
   1176 struct TPMS_CREATION_INFO {
   1177   TPM2B_NAME object_name;
   1178   TPM2B_DIGEST creation_hash;
   1179 };
   1180 
   1181 struct TPMS_NV_CERTIFY_INFO {
   1182   TPM2B_NAME index_name;
   1183   UINT16 offset;
   1184   TPM2B_MAX_NV_BUFFER nv_contents;
   1185 };
   1186 
   1187 union TPMU_ATTEST {
   1188   TPMS_CERTIFY_INFO certify;
   1189   TPMS_CREATION_INFO creation;
   1190   TPMS_QUOTE_INFO quote;
   1191   TPMS_COMMAND_AUDIT_INFO command_audit;
   1192   TPMS_SESSION_AUDIT_INFO session_audit;
   1193   TPMS_TIME_ATTEST_INFO time;
   1194   TPMS_NV_CERTIFY_INFO nv;
   1195 };
   1196 
   1197 struct TPMS_ATTEST {
   1198   TPM_GENERATED magic;
   1199   TPMI_ST_ATTEST type;
   1200   TPM2B_NAME qualified_signer;
   1201   TPM2B_DATA extra_data;
   1202   TPMS_CLOCK_INFO clock_info;
   1203   UINT64 firmware_version;
   1204   TPMU_ATTEST attested;
   1205 };
   1206 
   1207 struct TPM2B_ATTEST {
   1208   UINT16 size;
   1209   BYTE attestation_data[sizeof(TPMS_ATTEST)];
   1210 };
   1211 
   1212 struct TPMS_AUTH_COMMAND {
   1213   TPMI_SH_AUTH_SESSION session_handle;
   1214   TPM2B_NONCE nonce;
   1215   TPMA_SESSION session_attributes;
   1216   TPM2B_AUTH hmac;
   1217 };
   1218 
   1219 struct TPMS_AUTH_RESPONSE {
   1220   TPM2B_NONCE nonce;
   1221   TPMA_SESSION session_attributes;
   1222   TPM2B_AUTH hmac;
   1223 };
   1224 
   1225 union TPMU_SYM_KEY_BITS {
   1226   TPMI_AES_KEY_BITS aes;
   1227   TPMI_SM4_KEY_BITS sm4;
   1228   TPM_KEY_BITS sym;
   1229   TPMI_ALG_HASH xor_;
   1230 };
   1231 
   1232 union TPMU_SYM_MODE {
   1233   TPMI_ALG_SYM_MODE aes;
   1234   TPMI_ALG_SYM_MODE sm4;
   1235   TPMI_ALG_SYM_MODE sym;
   1236 };
   1237 
   1238 union TPMU_SYM_DETAILS {
   1239 };
   1240 
   1241 struct TPMT_SYM_DEF {
   1242   TPMI_ALG_SYM algorithm;
   1243   TPMU_SYM_KEY_BITS key_bits;
   1244   TPMU_SYM_MODE mode;
   1245   TPMU_SYM_DETAILS details;
   1246 };
   1247 
   1248 struct TPMT_SYM_DEF_OBJECT {
   1249   TPMI_ALG_SYM_OBJECT algorithm;
   1250   TPMU_SYM_KEY_BITS key_bits;
   1251   TPMU_SYM_MODE mode;
   1252   TPMU_SYM_DETAILS details;
   1253 };
   1254 
   1255 struct TPM2B_SYM_KEY {
   1256   UINT16 size;
   1257   BYTE buffer[MAX_SYM_KEY_BYTES];
   1258 };
   1259 
   1260 struct TPMS_SYMCIPHER_PARMS {
   1261   TPMT_SYM_DEF_OBJECT sym;
   1262 };
   1263 
   1264 struct TPM2B_SENSITIVE_DATA {
   1265   UINT16 size;
   1266   BYTE buffer[MAX_SYM_DATA];
   1267 };
   1268 
   1269 struct TPMS_SENSITIVE_CREATE {
   1270   TPM2B_AUTH user_auth;
   1271   TPM2B_SENSITIVE_DATA data;
   1272 };
   1273 
   1274 struct TPM2B_SENSITIVE_CREATE {
   1275   UINT16 size;
   1276   TPMS_SENSITIVE_CREATE sensitive;
   1277 };
   1278 
   1279 struct TPMS_SCHEME_SIGHASH {
   1280   TPMI_ALG_HASH hash_alg;
   1281 };
   1282 
   1283 struct TPMS_SCHEME_XOR {
   1284   TPMI_ALG_HASH hash_alg;
   1285   TPMI_ALG_KDF kdf;
   1286 };
   1287 
   1288 union TPMU_SCHEME_KEYEDHASH {
   1289   TPMS_SCHEME_HMAC hmac;
   1290   TPMS_SCHEME_XOR xor_;
   1291 };
   1292 
   1293 struct TPMT_KEYEDHASH_SCHEME {
   1294   TPMI_ALG_KEYEDHASH_SCHEME scheme;
   1295   TPMU_SCHEME_KEYEDHASH details;
   1296 };
   1297 
   1298 struct TPMS_SCHEME_ECDAA {
   1299   TPMI_ALG_HASH hash_alg;
   1300   UINT16 count;
   1301 };
   1302 
   1303 union TPMU_SIG_SCHEME {
   1304   TPMS_SCHEME_RSASSA rsassa;
   1305   TPMS_SCHEME_RSAPSS rsapss;
   1306   TPMS_SCHEME_ECDSA ecdsa;
   1307   TPMS_SCHEME_SM2 sm2;
   1308   TPMS_SCHEME_ECDAA ecdaa;
   1309   TPMS_SCHEME_ECSCHNORR ec_schnorr;
   1310   TPMS_SCHEME_HMAC hmac;
   1311   TPMS_SCHEME_SIGHASH any;
   1312 };
   1313 
   1314 struct TPMT_SIG_SCHEME {
   1315   TPMI_ALG_SIG_SCHEME scheme;
   1316   TPMU_SIG_SCHEME details;
   1317 };
   1318 
   1319 struct TPMS_SCHEME_OAEP {
   1320   TPMI_ALG_HASH hash_alg;
   1321 };
   1322 
   1323 struct TPMS_SCHEME_ECDH {
   1324   TPMI_ALG_HASH hash_alg;
   1325 };
   1326 
   1327 struct TPMS_SCHEME_MGF1 {
   1328   TPMI_ALG_HASH hash_alg;
   1329 };
   1330 
   1331 struct TPMS_SCHEME_KDF1_SP800_56a {
   1332   TPMI_ALG_HASH hash_alg;
   1333 };
   1334 
   1335 struct TPMS_SCHEME_KDF2 {
   1336   TPMI_ALG_HASH hash_alg;
   1337 };
   1338 
   1339 struct TPMS_SCHEME_KDF1_SP800_108 {
   1340   TPMI_ALG_HASH hash_alg;
   1341 };
   1342 
   1343 union TPMU_KDF_SCHEME {
   1344   TPMS_SCHEME_MGF1 mgf1;
   1345   TPMS_SCHEME_KDF1_SP800_56a kdf1_sp800_56a;
   1346   TPMS_SCHEME_KDF2 kdf2;
   1347   TPMS_SCHEME_KDF1_SP800_108 kdf1_sp800_108;
   1348 };
   1349 
   1350 struct TPMT_KDF_SCHEME {
   1351   TPMI_ALG_KDF scheme;
   1352   TPMU_KDF_SCHEME details;
   1353 };
   1354 
   1355 union TPMU_ASYM_SCHEME {
   1356   TPMS_SCHEME_RSASSA rsassa;
   1357   TPMS_SCHEME_RSAPSS rsapss;
   1358   TPMS_SCHEME_OAEP oaep;
   1359   TPMS_SCHEME_ECDSA ecdsa;
   1360   TPMS_SCHEME_SM2 sm2;
   1361   TPMS_SCHEME_ECDAA ecdaa;
   1362   TPMS_SCHEME_ECSCHNORR ec_schnorr;
   1363   TPMS_SCHEME_ECDH ecdh;
   1364   TPMS_SCHEME_SIGHASH any_sig;
   1365 };
   1366 
   1367 struct TPMT_ASYM_SCHEME {
   1368   TPMI_ALG_ASYM_SCHEME scheme;
   1369   TPMU_ASYM_SCHEME details;
   1370 };
   1371 
   1372 struct TPMT_RSA_SCHEME {
   1373   TPMI_ALG_RSA_SCHEME scheme;
   1374   TPMU_ASYM_SCHEME details;
   1375 };
   1376 
   1377 struct TPMT_RSA_DECRYPT {
   1378   TPMI_ALG_RSA_DECRYPT scheme;
   1379   TPMU_ASYM_SCHEME details;
   1380 };
   1381 
   1382 struct TPM2B_PUBLIC_KEY_RSA {
   1383   UINT16 size;
   1384   BYTE buffer[MAX_RSA_KEY_BYTES];
   1385 };
   1386 
   1387 struct TPM2B_PRIVATE_KEY_RSA {
   1388   UINT16 size;
   1389   BYTE buffer[MAX_RSA_KEY_BYTES/2];
   1390 };
   1391 
   1392 struct TPM2B_ECC_PARAMETER {
   1393   UINT16 size;
   1394   BYTE buffer[MAX_ECC_KEY_BYTES];
   1395 };
   1396 
   1397 struct TPMS_ECC_POINT {
   1398   TPM2B_ECC_PARAMETER x;
   1399   TPM2B_ECC_PARAMETER y;
   1400 };
   1401 
   1402 struct TPM2B_ECC_POINT {
   1403   UINT16 size;
   1404   TPMS_ECC_POINT point;
   1405 };
   1406 
   1407 struct TPMT_ECC_SCHEME {
   1408   TPMI_ALG_ECC_SCHEME scheme;
   1409   TPMU_SIG_SCHEME details;
   1410 };
   1411 
   1412 struct TPMS_ALGORITHM_DETAIL_ECC {
   1413   TPM_ECC_CURVE curve_id;
   1414   UINT16 key_size;
   1415   TPMT_KDF_SCHEME kdf;
   1416   TPMT_ECC_SCHEME sign;
   1417   TPM2B_ECC_PARAMETER p;
   1418   TPM2B_ECC_PARAMETER a;
   1419   TPM2B_ECC_PARAMETER b;
   1420   TPM2B_ECC_PARAMETER g_x;
   1421   TPM2B_ECC_PARAMETER g_y;
   1422   TPM2B_ECC_PARAMETER n;
   1423   TPM2B_ECC_PARAMETER h;
   1424 };
   1425 
   1426 struct TPMS_SIGNATURE_RSASSA {
   1427   TPMI_ALG_HASH hash;
   1428   TPM2B_PUBLIC_KEY_RSA sig;
   1429 };
   1430 
   1431 struct TPMS_SIGNATURE_RSAPSS {
   1432   TPMI_ALG_HASH hash;
   1433   TPM2B_PUBLIC_KEY_RSA sig;
   1434 };
   1435 
   1436 struct TPMS_SIGNATURE_ECDSA {
   1437   TPMI_ALG_HASH hash;
   1438   TPM2B_ECC_PARAMETER signature_r;
   1439   TPM2B_ECC_PARAMETER signature_s;
   1440 };
   1441 
   1442 union TPMU_SIGNATURE {
   1443   TPMS_SIGNATURE_RSASSA rsassa;
   1444   TPMS_SIGNATURE_RSAPSS rsapss;
   1445   TPMS_SIGNATURE_ECDSA ecdsa;
   1446   TPMS_SIGNATURE_ECDSA sm2;
   1447   TPMS_SIGNATURE_ECDSA ecdaa;
   1448   TPMS_SIGNATURE_ECDSA ecschnorr;
   1449   TPMT_HA hmac;
   1450   TPMS_SCHEME_SIGHASH any;
   1451 };
   1452 
   1453 struct TPMT_SIGNATURE {
   1454   TPMI_ALG_SIG_SCHEME sig_alg;
   1455   TPMU_SIGNATURE signature;
   1456 };
   1457 
   1458 union TPMU_ENCRYPTED_SECRET {
   1459   BYTE ecc[sizeof(TPMS_ECC_POINT)];
   1460   BYTE rsa[MAX_RSA_KEY_BYTES];
   1461   BYTE symmetric[sizeof(TPM2B_DIGEST)];
   1462   BYTE keyed_hash[sizeof(TPM2B_DIGEST)];
   1463 };
   1464 
   1465 struct TPM2B_ENCRYPTED_SECRET {
   1466   UINT16 size;
   1467   BYTE secret[sizeof(TPMU_ENCRYPTED_SECRET)];
   1468 };
   1469 
   1470 struct TPMS_KEYEDHASH_PARMS {
   1471   TPMT_KEYEDHASH_SCHEME scheme;
   1472 };
   1473 
   1474 struct TPMS_ASYM_PARMS {
   1475   TPMT_SYM_DEF_OBJECT symmetric;
   1476   TPMT_ASYM_SCHEME scheme;
   1477 };
   1478 
   1479 struct TPMS_RSA_PARMS {
   1480   TPMT_SYM_DEF_OBJECT symmetric;
   1481   TPMT_RSA_SCHEME scheme;
   1482   TPMI_RSA_KEY_BITS key_bits;
   1483   UINT32 exponent;
   1484 };
   1485 
   1486 struct TPMS_ECC_PARMS {
   1487   TPMT_SYM_DEF_OBJECT symmetric;
   1488   TPMT_ECC_SCHEME scheme;
   1489   TPMI_ECC_CURVE curve_id;
   1490   TPMT_KDF_SCHEME kdf;
   1491 };
   1492 
   1493 union TPMU_PUBLIC_PARMS {
   1494   TPMS_KEYEDHASH_PARMS keyed_hash_detail;
   1495   TPMS_SYMCIPHER_PARMS sym_detail;
   1496   TPMS_RSA_PARMS rsa_detail;
   1497   TPMS_ECC_PARMS ecc_detail;
   1498   TPMS_ASYM_PARMS asym_detail;
   1499 };
   1500 
   1501 struct TPMT_PUBLIC_PARMS {
   1502   TPMI_ALG_PUBLIC type;
   1503   TPMU_PUBLIC_PARMS parameters;
   1504 };
   1505 
   1506 union TPMU_PUBLIC_ID {
   1507   TPM2B_DIGEST keyed_hash;
   1508   TPM2B_DIGEST sym;
   1509   TPM2B_PUBLIC_KEY_RSA rsa;
   1510   TPMS_ECC_POINT ecc;
   1511 };
   1512 
   1513 struct TPMT_PUBLIC {
   1514   TPMI_ALG_PUBLIC type;
   1515   TPMI_ALG_HASH name_alg;
   1516   TPMA_OBJECT object_attributes;
   1517   TPM2B_DIGEST auth_policy;
   1518   TPMU_PUBLIC_PARMS parameters;
   1519   TPMU_PUBLIC_ID unique;
   1520 };
   1521 
   1522 struct TPM2B_PUBLIC {
   1523   UINT16 size;
   1524   TPMT_PUBLIC public_area;
   1525 };
   1526 
   1527 struct TPM2B_PRIVATE_VENDOR_SPECIFIC {
   1528   UINT16 size;
   1529   BYTE buffer[PRIVATE_VENDOR_SPECIFIC_BYTES];
   1530 };
   1531 
   1532 union TPMU_SENSITIVE_COMPOSITE {
   1533   TPM2B_PRIVATE_KEY_RSA rsa;
   1534   TPM2B_ECC_PARAMETER ecc;
   1535   TPM2B_SENSITIVE_DATA bits;
   1536   TPM2B_SYM_KEY sym;
   1537   TPM2B_PRIVATE_VENDOR_SPECIFIC any;
   1538 };
   1539 
   1540 struct TPMT_SENSITIVE {
   1541   TPMI_ALG_PUBLIC sensitive_type;
   1542   TPM2B_AUTH auth_value;
   1543   TPM2B_DIGEST seed_value;
   1544   TPMU_SENSITIVE_COMPOSITE sensitive;
   1545 };
   1546 
   1547 struct TPM2B_SENSITIVE {
   1548   UINT16 size;
   1549   TPMT_SENSITIVE sensitive_area;
   1550 };
   1551 
   1552 struct _PRIVATE {
   1553   TPM2B_DIGEST integrity_outer;
   1554   TPM2B_DIGEST integrity_inner;
   1555   TPMT_SENSITIVE sensitive;
   1556 };
   1557 
   1558 struct TPM2B_PRIVATE {
   1559   UINT16 size;
   1560   BYTE buffer[sizeof(_PRIVATE)];
   1561 };
   1562 
   1563 struct _ID_OBJECT {
   1564   TPM2B_DIGEST integrity_hmac;
   1565   TPM2B_DIGEST enc_identity;
   1566 };
   1567 
   1568 struct TPM2B_ID_OBJECT {
   1569   UINT16 size;
   1570   BYTE credential[sizeof(_ID_OBJECT)];
   1571 };
   1572 
   1573 struct TPMS_NV_PUBLIC {
   1574   TPMI_RH_NV_INDEX nv_index;
   1575   TPMI_ALG_HASH name_alg;
   1576   TPMA_NV attributes;
   1577   TPM2B_DIGEST auth_policy;
   1578   UINT16 data_size;
   1579 };
   1580 
   1581 struct TPM2B_NV_PUBLIC {
   1582   UINT16 size;
   1583   TPMS_NV_PUBLIC nv_public;
   1584 };
   1585 
   1586 struct TPM2B_CONTEXT_SENSITIVE {
   1587   UINT16 size;
   1588   BYTE buffer[MAX_CONTEXT_SIZE];
   1589 };
   1590 
   1591 struct TPMS_CONTEXT_DATA {
   1592   TPM2B_DIGEST integrity;
   1593   TPM2B_CONTEXT_SENSITIVE encrypted;
   1594 };
   1595 
   1596 struct TPM2B_CONTEXT_DATA {
   1597   UINT16 size;
   1598   BYTE buffer[sizeof(TPMS_CONTEXT_DATA)];
   1599 };
   1600 
   1601 struct TPMS_CONTEXT {
   1602   UINT64 sequence;
   1603   TPMI_DH_CONTEXT saved_handle;
   1604   TPMI_RH_HIERARCHY hierarchy;
   1605   TPM2B_CONTEXT_DATA context_blob;
   1606 };
   1607 
   1608 struct TPMS_CREATION_DATA {
   1609   TPML_PCR_SELECTION pcr_select;
   1610   TPM2B_DIGEST pcr_digest;
   1611   TPMA_LOCALITY locality;
   1612   TPM_ALG_ID parent_name_alg;
   1613   TPM2B_NAME parent_name;
   1614   TPM2B_NAME parent_qualified_name;
   1615   TPM2B_DATA outside_info;
   1616 };
   1617 
   1618 struct TPM2B_CREATION_DATA {
   1619   UINT16 size;
   1620   TPMS_CREATION_DATA creation_data;
   1621 };
   1622 
   1623 
   1624 TRUNKS_EXPORT size_t GetNumberOfRequestHandles(TPM_CC command_code);
   1625 TRUNKS_EXPORT size_t GetNumberOfResponseHandles(TPM_CC command_code);
   1626 
   1627 TRUNKS_EXPORT TPM_RC Serialize_uint8_t(
   1628     const uint8_t& value,
   1629     std::string* buffer);
   1630 
   1631 TRUNKS_EXPORT TPM_RC Parse_uint8_t(
   1632     std::string* buffer,
   1633     uint8_t* value,
   1634     std::string* value_bytes);
   1635 
   1636 TRUNKS_EXPORT TPM_RC Serialize_int8_t(
   1637     const int8_t& value,
   1638     std::string* buffer);
   1639 
   1640 TRUNKS_EXPORT TPM_RC Parse_int8_t(
   1641     std::string* buffer,
   1642     int8_t* value,
   1643     std::string* value_bytes);
   1644 
   1645 TRUNKS_EXPORT TPM_RC Serialize_int(
   1646     const int& value,
   1647     std::string* buffer);
   1648 
   1649 TRUNKS_EXPORT TPM_RC Parse_int(
   1650     std::string* buffer,
   1651     int* value,
   1652     std::string* value_bytes);
   1653 
   1654 TRUNKS_EXPORT TPM_RC Serialize_uint16_t(
   1655     const uint16_t& value,
   1656     std::string* buffer);
   1657 
   1658 TRUNKS_EXPORT TPM_RC Parse_uint16_t(
   1659     std::string* buffer,
   1660     uint16_t* value,
   1661     std::string* value_bytes);
   1662 
   1663 TRUNKS_EXPORT TPM_RC Serialize_int16_t(
   1664     const int16_t& value,
   1665     std::string* buffer);
   1666 
   1667 TRUNKS_EXPORT TPM_RC Parse_int16_t(
   1668     std::string* buffer,
   1669     int16_t* value,
   1670     std::string* value_bytes);
   1671 
   1672 TRUNKS_EXPORT TPM_RC Serialize_uint32_t(
   1673     const uint32_t& value,
   1674     std::string* buffer);
   1675 
   1676 TRUNKS_EXPORT TPM_RC Parse_uint32_t(
   1677     std::string* buffer,
   1678     uint32_t* value,
   1679     std::string* value_bytes);
   1680 
   1681 TRUNKS_EXPORT TPM_RC Serialize_int32_t(
   1682     const int32_t& value,
   1683     std::string* buffer);
   1684 
   1685 TRUNKS_EXPORT TPM_RC Parse_int32_t(
   1686     std::string* buffer,
   1687     int32_t* value,
   1688     std::string* value_bytes);
   1689 
   1690 TRUNKS_EXPORT TPM_RC Serialize_uint64_t(
   1691     const uint64_t& value,
   1692     std::string* buffer);
   1693 
   1694 TRUNKS_EXPORT TPM_RC Parse_uint64_t(
   1695     std::string* buffer,
   1696     uint64_t* value,
   1697     std::string* value_bytes);
   1698 
   1699 TRUNKS_EXPORT TPM_RC Serialize_int64_t(
   1700     const int64_t& value,
   1701     std::string* buffer);
   1702 
   1703 TRUNKS_EXPORT TPM_RC Parse_int64_t(
   1704     std::string* buffer,
   1705     int64_t* value,
   1706     std::string* value_bytes);
   1707 
   1708 TRUNKS_EXPORT TPM_RC Serialize_UINT8(
   1709     const UINT8& value,
   1710     std::string* buffer);
   1711 
   1712 TRUNKS_EXPORT TPM_RC Parse_UINT8(
   1713     std::string* buffer,
   1714     UINT8* value,
   1715     std::string* value_bytes);
   1716 
   1717 TRUNKS_EXPORT TPM_RC Serialize_BYTE(
   1718     const BYTE& value,
   1719     std::string* buffer);
   1720 
   1721 TRUNKS_EXPORT TPM_RC Parse_BYTE(
   1722     std::string* buffer,
   1723     BYTE* value,
   1724     std::string* value_bytes);
   1725 
   1726 TRUNKS_EXPORT TPM_RC Serialize_INT8(
   1727     const INT8& value,
   1728     std::string* buffer);
   1729 
   1730 TRUNKS_EXPORT TPM_RC Parse_INT8(
   1731     std::string* buffer,
   1732     INT8* value,
   1733     std::string* value_bytes);
   1734 
   1735 TRUNKS_EXPORT TPM_RC Serialize_BOOL(
   1736     const BOOL& value,
   1737     std::string* buffer);
   1738 
   1739 TRUNKS_EXPORT TPM_RC Parse_BOOL(
   1740     std::string* buffer,
   1741     BOOL* value,
   1742     std::string* value_bytes);
   1743 
   1744 TRUNKS_EXPORT TPM_RC Serialize_UINT16(
   1745     const UINT16& value,
   1746     std::string* buffer);
   1747 
   1748 TRUNKS_EXPORT TPM_RC Parse_UINT16(
   1749     std::string* buffer,
   1750     UINT16* value,
   1751     std::string* value_bytes);
   1752 
   1753 TRUNKS_EXPORT TPM_RC Serialize_INT16(
   1754     const INT16& value,
   1755     std::string* buffer);
   1756 
   1757 TRUNKS_EXPORT TPM_RC Parse_INT16(
   1758     std::string* buffer,
   1759     INT16* value,
   1760     std::string* value_bytes);
   1761 
   1762 TRUNKS_EXPORT TPM_RC Serialize_UINT32(
   1763     const UINT32& value,
   1764     std::string* buffer);
   1765 
   1766 TRUNKS_EXPORT TPM_RC Parse_UINT32(
   1767     std::string* buffer,
   1768     UINT32* value,
   1769     std::string* value_bytes);
   1770 
   1771 TRUNKS_EXPORT TPM_RC Serialize_INT32(
   1772     const INT32& value,
   1773     std::string* buffer);
   1774 
   1775 TRUNKS_EXPORT TPM_RC Parse_INT32(
   1776     std::string* buffer,
   1777     INT32* value,
   1778     std::string* value_bytes);
   1779 
   1780 TRUNKS_EXPORT TPM_RC Serialize_UINT64(
   1781     const UINT64& value,
   1782     std::string* buffer);
   1783 
   1784 TRUNKS_EXPORT TPM_RC Parse_UINT64(
   1785     std::string* buffer,
   1786     UINT64* value,
   1787     std::string* value_bytes);
   1788 
   1789 TRUNKS_EXPORT TPM_RC Serialize_INT64(
   1790     const INT64& value,
   1791     std::string* buffer);
   1792 
   1793 TRUNKS_EXPORT TPM_RC Parse_INT64(
   1794     std::string* buffer,
   1795     INT64* value,
   1796     std::string* value_bytes);
   1797 
   1798 TRUNKS_EXPORT TPM_RC Serialize_TPM_ALGORITHM_ID(
   1799     const TPM_ALGORITHM_ID& value,
   1800     std::string* buffer);
   1801 
   1802 TRUNKS_EXPORT TPM_RC Parse_TPM_ALGORITHM_ID(
   1803     std::string* buffer,
   1804     TPM_ALGORITHM_ID* value,
   1805     std::string* value_bytes);
   1806 
   1807 TRUNKS_EXPORT TPM_RC Serialize_TPM_MODIFIER_INDICATOR(
   1808     const TPM_MODIFIER_INDICATOR& value,
   1809     std::string* buffer);
   1810 
   1811 TRUNKS_EXPORT TPM_RC Parse_TPM_MODIFIER_INDICATOR(
   1812     std::string* buffer,
   1813     TPM_MODIFIER_INDICATOR* value,
   1814     std::string* value_bytes);
   1815 
   1816 TRUNKS_EXPORT TPM_RC Serialize_TPM_AUTHORIZATION_SIZE(
   1817     const TPM_AUTHORIZATION_SIZE& value,
   1818     std::string* buffer);
   1819 
   1820 TRUNKS_EXPORT TPM_RC Parse_TPM_AUTHORIZATION_SIZE(
   1821     std::string* buffer,
   1822     TPM_AUTHORIZATION_SIZE* value,
   1823     std::string* value_bytes);
   1824 
   1825 TRUNKS_EXPORT TPM_RC Serialize_TPM_PARAMETER_SIZE(
   1826     const TPM_PARAMETER_SIZE& value,
   1827     std::string* buffer);
   1828 
   1829 TRUNKS_EXPORT TPM_RC Parse_TPM_PARAMETER_SIZE(
   1830     std::string* buffer,
   1831     TPM_PARAMETER_SIZE* value,
   1832     std::string* value_bytes);
   1833 
   1834 TRUNKS_EXPORT TPM_RC Serialize_TPM_KEY_SIZE(
   1835     const TPM_KEY_SIZE& value,
   1836     std::string* buffer);
   1837 
   1838 TRUNKS_EXPORT TPM_RC Parse_TPM_KEY_SIZE(
   1839     std::string* buffer,
   1840     TPM_KEY_SIZE* value,
   1841     std::string* value_bytes);
   1842 
   1843 TRUNKS_EXPORT TPM_RC Serialize_TPM_KEY_BITS(
   1844     const TPM_KEY_BITS& value,
   1845     std::string* buffer);
   1846 
   1847 TRUNKS_EXPORT TPM_RC Parse_TPM_KEY_BITS(
   1848     std::string* buffer,
   1849     TPM_KEY_BITS* value,
   1850     std::string* value_bytes);
   1851 
   1852 TRUNKS_EXPORT TPM_RC Serialize_TPM_HANDLE(
   1853     const TPM_HANDLE& value,
   1854     std::string* buffer);
   1855 
   1856 TRUNKS_EXPORT TPM_RC Parse_TPM_HANDLE(
   1857     std::string* buffer,
   1858     TPM_HANDLE* value,
   1859     std::string* value_bytes);
   1860 
   1861 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_NONCE(
   1862     const TPM2B_NONCE& value,
   1863     std::string* buffer);
   1864 
   1865 TRUNKS_EXPORT TPM_RC Parse_TPM2B_NONCE(
   1866     std::string* buffer,
   1867     TPM2B_NONCE* value,
   1868     std::string* value_bytes);
   1869 
   1870 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_AUTH(
   1871     const TPM2B_AUTH& value,
   1872     std::string* buffer);
   1873 
   1874 TRUNKS_EXPORT TPM_RC Parse_TPM2B_AUTH(
   1875     std::string* buffer,
   1876     TPM2B_AUTH* value,
   1877     std::string* value_bytes);
   1878 
   1879 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_OPERAND(
   1880     const TPM2B_OPERAND& value,
   1881     std::string* buffer);
   1882 
   1883 TRUNKS_EXPORT TPM_RC Parse_TPM2B_OPERAND(
   1884     std::string* buffer,
   1885     TPM2B_OPERAND* value,
   1886     std::string* value_bytes);
   1887 
   1888 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_HMAC(
   1889     const TPMS_SCHEME_HMAC& value,
   1890     std::string* buffer);
   1891 
   1892 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_HMAC(
   1893     std::string* buffer,
   1894     TPMS_SCHEME_HMAC* value,
   1895     std::string* value_bytes);
   1896 
   1897 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_RSASSA(
   1898     const TPMS_SCHEME_RSASSA& value,
   1899     std::string* buffer);
   1900 
   1901 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_RSASSA(
   1902     std::string* buffer,
   1903     TPMS_SCHEME_RSASSA* value,
   1904     std::string* value_bytes);
   1905 
   1906 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_RSAPSS(
   1907     const TPMS_SCHEME_RSAPSS& value,
   1908     std::string* buffer);
   1909 
   1910 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_RSAPSS(
   1911     std::string* buffer,
   1912     TPMS_SCHEME_RSAPSS* value,
   1913     std::string* value_bytes);
   1914 
   1915 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_ECDSA(
   1916     const TPMS_SCHEME_ECDSA& value,
   1917     std::string* buffer);
   1918 
   1919 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_ECDSA(
   1920     std::string* buffer,
   1921     TPMS_SCHEME_ECDSA* value,
   1922     std::string* value_bytes);
   1923 
   1924 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_SM2(
   1925     const TPMS_SCHEME_SM2& value,
   1926     std::string* buffer);
   1927 
   1928 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_SM2(
   1929     std::string* buffer,
   1930     TPMS_SCHEME_SM2* value,
   1931     std::string* value_bytes);
   1932 
   1933 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_ECSCHNORR(
   1934     const TPMS_SCHEME_ECSCHNORR& value,
   1935     std::string* buffer);
   1936 
   1937 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_ECSCHNORR(
   1938     std::string* buffer,
   1939     TPMS_SCHEME_ECSCHNORR* value,
   1940     std::string* value_bytes);
   1941 
   1942 TRUNKS_EXPORT TPM_RC Serialize_TPMI_YES_NO(
   1943     const TPMI_YES_NO& value,
   1944     std::string* buffer);
   1945 
   1946 TRUNKS_EXPORT TPM_RC Parse_TPMI_YES_NO(
   1947     std::string* buffer,
   1948     TPMI_YES_NO* value,
   1949     std::string* value_bytes);
   1950 
   1951 TRUNKS_EXPORT TPM_RC Serialize_TPMI_DH_OBJECT(
   1952     const TPMI_DH_OBJECT& value,
   1953     std::string* buffer);
   1954 
   1955 TRUNKS_EXPORT TPM_RC Parse_TPMI_DH_OBJECT(
   1956     std::string* buffer,
   1957     TPMI_DH_OBJECT* value,
   1958     std::string* value_bytes);
   1959 
   1960 TRUNKS_EXPORT TPM_RC Serialize_TPMI_DH_PERSISTENT(
   1961     const TPMI_DH_PERSISTENT& value,
   1962     std::string* buffer);
   1963 
   1964 TRUNKS_EXPORT TPM_RC Parse_TPMI_DH_PERSISTENT(
   1965     std::string* buffer,
   1966     TPMI_DH_PERSISTENT* value,
   1967     std::string* value_bytes);
   1968 
   1969 TRUNKS_EXPORT TPM_RC Serialize_TPMI_DH_ENTITY(
   1970     const TPMI_DH_ENTITY& value,
   1971     std::string* buffer);
   1972 
   1973 TRUNKS_EXPORT TPM_RC Parse_TPMI_DH_ENTITY(
   1974     std::string* buffer,
   1975     TPMI_DH_ENTITY* value,
   1976     std::string* value_bytes);
   1977 
   1978 TRUNKS_EXPORT TPM_RC Serialize_TPMI_DH_PCR(
   1979     const TPMI_DH_PCR& value,
   1980     std::string* buffer);
   1981 
   1982 TRUNKS_EXPORT TPM_RC Parse_TPMI_DH_PCR(
   1983     std::string* buffer,
   1984     TPMI_DH_PCR* value,
   1985     std::string* value_bytes);
   1986 
   1987 TRUNKS_EXPORT TPM_RC Serialize_TPMI_SH_AUTH_SESSION(
   1988     const TPMI_SH_AUTH_SESSION& value,
   1989     std::string* buffer);
   1990 
   1991 TRUNKS_EXPORT TPM_RC Parse_TPMI_SH_AUTH_SESSION(
   1992     std::string* buffer,
   1993     TPMI_SH_AUTH_SESSION* value,
   1994     std::string* value_bytes);
   1995 
   1996 TRUNKS_EXPORT TPM_RC Serialize_TPMI_SH_HMAC(
   1997     const TPMI_SH_HMAC& value,
   1998     std::string* buffer);
   1999 
   2000 TRUNKS_EXPORT TPM_RC Parse_TPMI_SH_HMAC(
   2001     std::string* buffer,
   2002     TPMI_SH_HMAC* value,
   2003     std::string* value_bytes);
   2004 
   2005 TRUNKS_EXPORT TPM_RC Serialize_TPMI_SH_POLICY(
   2006     const TPMI_SH_POLICY& value,
   2007     std::string* buffer);
   2008 
   2009 TRUNKS_EXPORT TPM_RC Parse_TPMI_SH_POLICY(
   2010     std::string* buffer,
   2011     TPMI_SH_POLICY* value,
   2012     std::string* value_bytes);
   2013 
   2014 TRUNKS_EXPORT TPM_RC Serialize_TPMI_DH_CONTEXT(
   2015     const TPMI_DH_CONTEXT& value,
   2016     std::string* buffer);
   2017 
   2018 TRUNKS_EXPORT TPM_RC Parse_TPMI_DH_CONTEXT(
   2019     std::string* buffer,
   2020     TPMI_DH_CONTEXT* value,
   2021     std::string* value_bytes);
   2022 
   2023 TRUNKS_EXPORT TPM_RC Serialize_TPMI_RH_HIERARCHY(
   2024     const TPMI_RH_HIERARCHY& value,
   2025     std::string* buffer);
   2026 
   2027 TRUNKS_EXPORT TPM_RC Parse_TPMI_RH_HIERARCHY(
   2028     std::string* buffer,
   2029     TPMI_RH_HIERARCHY* value,
   2030     std::string* value_bytes);
   2031 
   2032 TRUNKS_EXPORT TPM_RC Serialize_TPMI_RH_ENABLES(
   2033     const TPMI_RH_ENABLES& value,
   2034     std::string* buffer);
   2035 
   2036 TRUNKS_EXPORT TPM_RC Parse_TPMI_RH_ENABLES(
   2037     std::string* buffer,
   2038     TPMI_RH_ENABLES* value,
   2039     std::string* value_bytes);
   2040 
   2041 TRUNKS_EXPORT TPM_RC Serialize_TPMI_RH_HIERARCHY_AUTH(
   2042     const TPMI_RH_HIERARCHY_AUTH& value,
   2043     std::string* buffer);
   2044 
   2045 TRUNKS_EXPORT TPM_RC Parse_TPMI_RH_HIERARCHY_AUTH(
   2046     std::string* buffer,
   2047     TPMI_RH_HIERARCHY_AUTH* value,
   2048     std::string* value_bytes);
   2049 
   2050 TRUNKS_EXPORT TPM_RC Serialize_TPMI_RH_PLATFORM(
   2051     const TPMI_RH_PLATFORM& value,
   2052     std::string* buffer);
   2053 
   2054 TRUNKS_EXPORT TPM_RC Parse_TPMI_RH_PLATFORM(
   2055     std::string* buffer,
   2056     TPMI_RH_PLATFORM* value,
   2057     std::string* value_bytes);
   2058 
   2059 TRUNKS_EXPORT TPM_RC Serialize_TPMI_RH_OWNER(
   2060     const TPMI_RH_OWNER& value,
   2061     std::string* buffer);
   2062 
   2063 TRUNKS_EXPORT TPM_RC Parse_TPMI_RH_OWNER(
   2064     std::string* buffer,
   2065     TPMI_RH_OWNER* value,
   2066     std::string* value_bytes);
   2067 
   2068 TRUNKS_EXPORT TPM_RC Serialize_TPMI_RH_ENDORSEMENT(
   2069     const TPMI_RH_ENDORSEMENT& value,
   2070     std::string* buffer);
   2071 
   2072 TRUNKS_EXPORT TPM_RC Parse_TPMI_RH_ENDORSEMENT(
   2073     std::string* buffer,
   2074     TPMI_RH_ENDORSEMENT* value,
   2075     std::string* value_bytes);
   2076 
   2077 TRUNKS_EXPORT TPM_RC Serialize_TPMI_RH_PROVISION(
   2078     const TPMI_RH_PROVISION& value,
   2079     std::string* buffer);
   2080 
   2081 TRUNKS_EXPORT TPM_RC Parse_TPMI_RH_PROVISION(
   2082     std::string* buffer,
   2083     TPMI_RH_PROVISION* value,
   2084     std::string* value_bytes);
   2085 
   2086 TRUNKS_EXPORT TPM_RC Serialize_TPMI_RH_CLEAR(
   2087     const TPMI_RH_CLEAR& value,
   2088     std::string* buffer);
   2089 
   2090 TRUNKS_EXPORT TPM_RC Parse_TPMI_RH_CLEAR(
   2091     std::string* buffer,
   2092     TPMI_RH_CLEAR* value,
   2093     std::string* value_bytes);
   2094 
   2095 TRUNKS_EXPORT TPM_RC Serialize_TPMI_RH_NV_AUTH(
   2096     const TPMI_RH_NV_AUTH& value,
   2097     std::string* buffer);
   2098 
   2099 TRUNKS_EXPORT TPM_RC Parse_TPMI_RH_NV_AUTH(
   2100     std::string* buffer,
   2101     TPMI_RH_NV_AUTH* value,
   2102     std::string* value_bytes);
   2103 
   2104 TRUNKS_EXPORT TPM_RC Serialize_TPMI_RH_LOCKOUT(
   2105     const TPMI_RH_LOCKOUT& value,
   2106     std::string* buffer);
   2107 
   2108 TRUNKS_EXPORT TPM_RC Parse_TPMI_RH_LOCKOUT(
   2109     std::string* buffer,
   2110     TPMI_RH_LOCKOUT* value,
   2111     std::string* value_bytes);
   2112 
   2113 TRUNKS_EXPORT TPM_RC Serialize_TPMI_RH_NV_INDEX(
   2114     const TPMI_RH_NV_INDEX& value,
   2115     std::string* buffer);
   2116 
   2117 TRUNKS_EXPORT TPM_RC Parse_TPMI_RH_NV_INDEX(
   2118     std::string* buffer,
   2119     TPMI_RH_NV_INDEX* value,
   2120     std::string* value_bytes);
   2121 
   2122 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ALG_HASH(
   2123     const TPMI_ALG_HASH& value,
   2124     std::string* buffer);
   2125 
   2126 TRUNKS_EXPORT TPM_RC Parse_TPMI_ALG_HASH(
   2127     std::string* buffer,
   2128     TPMI_ALG_HASH* value,
   2129     std::string* value_bytes);
   2130 
   2131 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ALG_ASYM(
   2132     const TPMI_ALG_ASYM& value,
   2133     std::string* buffer);
   2134 
   2135 TRUNKS_EXPORT TPM_RC Parse_TPMI_ALG_ASYM(
   2136     std::string* buffer,
   2137     TPMI_ALG_ASYM* value,
   2138     std::string* value_bytes);
   2139 
   2140 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ALG_SYM(
   2141     const TPMI_ALG_SYM& value,
   2142     std::string* buffer);
   2143 
   2144 TRUNKS_EXPORT TPM_RC Parse_TPMI_ALG_SYM(
   2145     std::string* buffer,
   2146     TPMI_ALG_SYM* value,
   2147     std::string* value_bytes);
   2148 
   2149 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ALG_SYM_OBJECT(
   2150     const TPMI_ALG_SYM_OBJECT& value,
   2151     std::string* buffer);
   2152 
   2153 TRUNKS_EXPORT TPM_RC Parse_TPMI_ALG_SYM_OBJECT(
   2154     std::string* buffer,
   2155     TPMI_ALG_SYM_OBJECT* value,
   2156     std::string* value_bytes);
   2157 
   2158 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ALG_SYM_MODE(
   2159     const TPMI_ALG_SYM_MODE& value,
   2160     std::string* buffer);
   2161 
   2162 TRUNKS_EXPORT TPM_RC Parse_TPMI_ALG_SYM_MODE(
   2163     std::string* buffer,
   2164     TPMI_ALG_SYM_MODE* value,
   2165     std::string* value_bytes);
   2166 
   2167 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ALG_KDF(
   2168     const TPMI_ALG_KDF& value,
   2169     std::string* buffer);
   2170 
   2171 TRUNKS_EXPORT TPM_RC Parse_TPMI_ALG_KDF(
   2172     std::string* buffer,
   2173     TPMI_ALG_KDF* value,
   2174     std::string* value_bytes);
   2175 
   2176 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ALG_SIG_SCHEME(
   2177     const TPMI_ALG_SIG_SCHEME& value,
   2178     std::string* buffer);
   2179 
   2180 TRUNKS_EXPORT TPM_RC Parse_TPMI_ALG_SIG_SCHEME(
   2181     std::string* buffer,
   2182     TPMI_ALG_SIG_SCHEME* value,
   2183     std::string* value_bytes);
   2184 
   2185 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ECC_KEY_EXCHANGE(
   2186     const TPMI_ECC_KEY_EXCHANGE& value,
   2187     std::string* buffer);
   2188 
   2189 TRUNKS_EXPORT TPM_RC Parse_TPMI_ECC_KEY_EXCHANGE(
   2190     std::string* buffer,
   2191     TPMI_ECC_KEY_EXCHANGE* value,
   2192     std::string* value_bytes);
   2193 
   2194 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ST_COMMAND_TAG(
   2195     const TPMI_ST_COMMAND_TAG& value,
   2196     std::string* buffer);
   2197 
   2198 TRUNKS_EXPORT TPM_RC Parse_TPMI_ST_COMMAND_TAG(
   2199     std::string* buffer,
   2200     TPMI_ST_COMMAND_TAG* value,
   2201     std::string* value_bytes);
   2202 
   2203 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ST_ATTEST(
   2204     const TPMI_ST_ATTEST& value,
   2205     std::string* buffer);
   2206 
   2207 TRUNKS_EXPORT TPM_RC Parse_TPMI_ST_ATTEST(
   2208     std::string* buffer,
   2209     TPMI_ST_ATTEST* value,
   2210     std::string* value_bytes);
   2211 
   2212 TRUNKS_EXPORT TPM_RC Serialize_TPMI_AES_KEY_BITS(
   2213     const TPMI_AES_KEY_BITS& value,
   2214     std::string* buffer);
   2215 
   2216 TRUNKS_EXPORT TPM_RC Parse_TPMI_AES_KEY_BITS(
   2217     std::string* buffer,
   2218     TPMI_AES_KEY_BITS* value,
   2219     std::string* value_bytes);
   2220 
   2221 TRUNKS_EXPORT TPM_RC Serialize_TPMI_SM4_KEY_BITS(
   2222     const TPMI_SM4_KEY_BITS& value,
   2223     std::string* buffer);
   2224 
   2225 TRUNKS_EXPORT TPM_RC Parse_TPMI_SM4_KEY_BITS(
   2226     std::string* buffer,
   2227     TPMI_SM4_KEY_BITS* value,
   2228     std::string* value_bytes);
   2229 
   2230 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ALG_KEYEDHASH_SCHEME(
   2231     const TPMI_ALG_KEYEDHASH_SCHEME& value,
   2232     std::string* buffer);
   2233 
   2234 TRUNKS_EXPORT TPM_RC Parse_TPMI_ALG_KEYEDHASH_SCHEME(
   2235     std::string* buffer,
   2236     TPMI_ALG_KEYEDHASH_SCHEME* value,
   2237     std::string* value_bytes);
   2238 
   2239 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ALG_ASYM_SCHEME(
   2240     const TPMI_ALG_ASYM_SCHEME& value,
   2241     std::string* buffer);
   2242 
   2243 TRUNKS_EXPORT TPM_RC Parse_TPMI_ALG_ASYM_SCHEME(
   2244     std::string* buffer,
   2245     TPMI_ALG_ASYM_SCHEME* value,
   2246     std::string* value_bytes);
   2247 
   2248 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ALG_RSA_SCHEME(
   2249     const TPMI_ALG_RSA_SCHEME& value,
   2250     std::string* buffer);
   2251 
   2252 TRUNKS_EXPORT TPM_RC Parse_TPMI_ALG_RSA_SCHEME(
   2253     std::string* buffer,
   2254     TPMI_ALG_RSA_SCHEME* value,
   2255     std::string* value_bytes);
   2256 
   2257 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ALG_RSA_DECRYPT(
   2258     const TPMI_ALG_RSA_DECRYPT& value,
   2259     std::string* buffer);
   2260 
   2261 TRUNKS_EXPORT TPM_RC Parse_TPMI_ALG_RSA_DECRYPT(
   2262     std::string* buffer,
   2263     TPMI_ALG_RSA_DECRYPT* value,
   2264     std::string* value_bytes);
   2265 
   2266 TRUNKS_EXPORT TPM_RC Serialize_TPMI_RSA_KEY_BITS(
   2267     const TPMI_RSA_KEY_BITS& value,
   2268     std::string* buffer);
   2269 
   2270 TRUNKS_EXPORT TPM_RC Parse_TPMI_RSA_KEY_BITS(
   2271     std::string* buffer,
   2272     TPMI_RSA_KEY_BITS* value,
   2273     std::string* value_bytes);
   2274 
   2275 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ALG_ECC_SCHEME(
   2276     const TPMI_ALG_ECC_SCHEME& value,
   2277     std::string* buffer);
   2278 
   2279 TRUNKS_EXPORT TPM_RC Parse_TPMI_ALG_ECC_SCHEME(
   2280     std::string* buffer,
   2281     TPMI_ALG_ECC_SCHEME* value,
   2282     std::string* value_bytes);
   2283 
   2284 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ECC_CURVE(
   2285     const TPMI_ECC_CURVE& value,
   2286     std::string* buffer);
   2287 
   2288 TRUNKS_EXPORT TPM_RC Parse_TPMI_ECC_CURVE(
   2289     std::string* buffer,
   2290     TPMI_ECC_CURVE* value,
   2291     std::string* value_bytes);
   2292 
   2293 TRUNKS_EXPORT TPM_RC Serialize_TPMI_ALG_PUBLIC(
   2294     const TPMI_ALG_PUBLIC& value,
   2295     std::string* buffer);
   2296 
   2297 TRUNKS_EXPORT TPM_RC Parse_TPMI_ALG_PUBLIC(
   2298     std::string* buffer,
   2299     TPMI_ALG_PUBLIC* value,
   2300     std::string* value_bytes);
   2301 
   2302 TRUNKS_EXPORT TPM_RC Serialize_TPMA_ALGORITHM(
   2303     const TPMA_ALGORITHM& value,
   2304     std::string* buffer);
   2305 
   2306 TRUNKS_EXPORT TPM_RC Parse_TPMA_ALGORITHM(
   2307     std::string* buffer,
   2308     TPMA_ALGORITHM* value,
   2309     std::string* value_bytes);
   2310 
   2311 TRUNKS_EXPORT TPM_RC Serialize_TPMA_OBJECT(
   2312     const TPMA_OBJECT& value,
   2313     std::string* buffer);
   2314 
   2315 TRUNKS_EXPORT TPM_RC Parse_TPMA_OBJECT(
   2316     std::string* buffer,
   2317     TPMA_OBJECT* value,
   2318     std::string* value_bytes);
   2319 
   2320 TRUNKS_EXPORT TPM_RC Serialize_TPMA_SESSION(
   2321     const TPMA_SESSION& value,
   2322     std::string* buffer);
   2323 
   2324 TRUNKS_EXPORT TPM_RC Parse_TPMA_SESSION(
   2325     std::string* buffer,
   2326     TPMA_SESSION* value,
   2327     std::string* value_bytes);
   2328 
   2329 TRUNKS_EXPORT TPM_RC Serialize_TPMA_LOCALITY(
   2330     const TPMA_LOCALITY& value,
   2331     std::string* buffer);
   2332 
   2333 TRUNKS_EXPORT TPM_RC Parse_TPMA_LOCALITY(
   2334     std::string* buffer,
   2335     TPMA_LOCALITY* value,
   2336     std::string* value_bytes);
   2337 
   2338 TRUNKS_EXPORT TPM_RC Serialize_TPMA_PERMANENT(
   2339     const TPMA_PERMANENT& value,
   2340     std::string* buffer);
   2341 
   2342 TRUNKS_EXPORT TPM_RC Parse_TPMA_PERMANENT(
   2343     std::string* buffer,
   2344     TPMA_PERMANENT* value,
   2345     std::string* value_bytes);
   2346 
   2347 TRUNKS_EXPORT TPM_RC Serialize_TPMA_STARTUP_CLEAR(
   2348     const TPMA_STARTUP_CLEAR& value,
   2349     std::string* buffer);
   2350 
   2351 TRUNKS_EXPORT TPM_RC Parse_TPMA_STARTUP_CLEAR(
   2352     std::string* buffer,
   2353     TPMA_STARTUP_CLEAR* value,
   2354     std::string* value_bytes);
   2355 
   2356 TRUNKS_EXPORT TPM_RC Serialize_TPMA_MEMORY(
   2357     const TPMA_MEMORY& value,
   2358     std::string* buffer);
   2359 
   2360 TRUNKS_EXPORT TPM_RC Parse_TPMA_MEMORY(
   2361     std::string* buffer,
   2362     TPMA_MEMORY* value,
   2363     std::string* value_bytes);
   2364 
   2365 TRUNKS_EXPORT TPM_RC Serialize_TPMA_CC(
   2366     const TPMA_CC& value,
   2367     std::string* buffer);
   2368 
   2369 TRUNKS_EXPORT TPM_RC Parse_TPMA_CC(
   2370     std::string* buffer,
   2371     TPMA_CC* value,
   2372     std::string* value_bytes);
   2373 
   2374 TRUNKS_EXPORT TPM_RC Serialize_TPM_NV_INDEX(
   2375     const TPM_NV_INDEX& value,
   2376     std::string* buffer);
   2377 
   2378 TRUNKS_EXPORT TPM_RC Parse_TPM_NV_INDEX(
   2379     std::string* buffer,
   2380     TPM_NV_INDEX* value,
   2381     std::string* value_bytes);
   2382 
   2383 TRUNKS_EXPORT TPM_RC Serialize_TPMA_NV(
   2384     const TPMA_NV& value,
   2385     std::string* buffer);
   2386 
   2387 TRUNKS_EXPORT TPM_RC Parse_TPMA_NV(
   2388     std::string* buffer,
   2389     TPMA_NV* value,
   2390     std::string* value_bytes);
   2391 
   2392 TRUNKS_EXPORT TPM_RC Serialize_TPM_SPEC(
   2393     const TPM_SPEC& value,
   2394     std::string* buffer);
   2395 
   2396 TRUNKS_EXPORT TPM_RC Parse_TPM_SPEC(
   2397     std::string* buffer,
   2398     TPM_SPEC* value,
   2399     std::string* value_bytes);
   2400 
   2401 TRUNKS_EXPORT TPM_RC Serialize_TPM_GENERATED(
   2402     const TPM_GENERATED& value,
   2403     std::string* buffer);
   2404 
   2405 TRUNKS_EXPORT TPM_RC Parse_TPM_GENERATED(
   2406     std::string* buffer,
   2407     TPM_GENERATED* value,
   2408     std::string* value_bytes);
   2409 
   2410 TRUNKS_EXPORT TPM_RC Serialize_TPM_ALG_ID(
   2411     const TPM_ALG_ID& value,
   2412     std::string* buffer);
   2413 
   2414 TRUNKS_EXPORT TPM_RC Parse_TPM_ALG_ID(
   2415     std::string* buffer,
   2416     TPM_ALG_ID* value,
   2417     std::string* value_bytes);
   2418 
   2419 TRUNKS_EXPORT TPM_RC Serialize_TPM_ECC_CURVE(
   2420     const TPM_ECC_CURVE& value,
   2421     std::string* buffer);
   2422 
   2423 TRUNKS_EXPORT TPM_RC Parse_TPM_ECC_CURVE(
   2424     std::string* buffer,
   2425     TPM_ECC_CURVE* value,
   2426     std::string* value_bytes);
   2427 
   2428 TRUNKS_EXPORT TPM_RC Serialize_TPM_CC(
   2429     const TPM_CC& value,
   2430     std::string* buffer);
   2431 
   2432 TRUNKS_EXPORT TPM_RC Parse_TPM_CC(
   2433     std::string* buffer,
   2434     TPM_CC* value,
   2435     std::string* value_bytes);
   2436 
   2437 TRUNKS_EXPORT TPM_RC Serialize_TPM_RC(
   2438     const TPM_RC& value,
   2439     std::string* buffer);
   2440 
   2441 TRUNKS_EXPORT TPM_RC Parse_TPM_RC(
   2442     std::string* buffer,
   2443     TPM_RC* value,
   2444     std::string* value_bytes);
   2445 
   2446 TRUNKS_EXPORT TPM_RC Serialize_TPM_CLOCK_ADJUST(
   2447     const TPM_CLOCK_ADJUST& value,
   2448     std::string* buffer);
   2449 
   2450 TRUNKS_EXPORT TPM_RC Parse_TPM_CLOCK_ADJUST(
   2451     std::string* buffer,
   2452     TPM_CLOCK_ADJUST* value,
   2453     std::string* value_bytes);
   2454 
   2455 TRUNKS_EXPORT TPM_RC Serialize_TPM_EO(
   2456     const TPM_EO& value,
   2457     std::string* buffer);
   2458 
   2459 TRUNKS_EXPORT TPM_RC Parse_TPM_EO(
   2460     std::string* buffer,
   2461     TPM_EO* value,
   2462     std::string* value_bytes);
   2463 
   2464 TRUNKS_EXPORT TPM_RC Serialize_TPM_ST(
   2465     const TPM_ST& value,
   2466     std::string* buffer);
   2467 
   2468 TRUNKS_EXPORT TPM_RC Parse_TPM_ST(
   2469     std::string* buffer,
   2470     TPM_ST* value,
   2471     std::string* value_bytes);
   2472 
   2473 TRUNKS_EXPORT TPM_RC Serialize_TPM_SU(
   2474     const TPM_SU& value,
   2475     std::string* buffer);
   2476 
   2477 TRUNKS_EXPORT TPM_RC Parse_TPM_SU(
   2478     std::string* buffer,
   2479     TPM_SU* value,
   2480     std::string* value_bytes);
   2481 
   2482 TRUNKS_EXPORT TPM_RC Serialize_TPM_SE(
   2483     const TPM_SE& value,
   2484     std::string* buffer);
   2485 
   2486 TRUNKS_EXPORT TPM_RC Parse_TPM_SE(
   2487     std::string* buffer,
   2488     TPM_SE* value,
   2489     std::string* value_bytes);
   2490 
   2491 TRUNKS_EXPORT TPM_RC Serialize_TPM_CAP(
   2492     const TPM_CAP& value,
   2493     std::string* buffer);
   2494 
   2495 TRUNKS_EXPORT TPM_RC Parse_TPM_CAP(
   2496     std::string* buffer,
   2497     TPM_CAP* value,
   2498     std::string* value_bytes);
   2499 
   2500 TRUNKS_EXPORT TPM_RC Serialize_TPM_PT(
   2501     const TPM_PT& value,
   2502     std::string* buffer);
   2503 
   2504 TRUNKS_EXPORT TPM_RC Parse_TPM_PT(
   2505     std::string* buffer,
   2506     TPM_PT* value,
   2507     std::string* value_bytes);
   2508 
   2509 TRUNKS_EXPORT TPM_RC Serialize_TPM_PT_PCR(
   2510     const TPM_PT_PCR& value,
   2511     std::string* buffer);
   2512 
   2513 TRUNKS_EXPORT TPM_RC Parse_TPM_PT_PCR(
   2514     std::string* buffer,
   2515     TPM_PT_PCR* value,
   2516     std::string* value_bytes);
   2517 
   2518 TRUNKS_EXPORT TPM_RC Serialize_TPM_PS(
   2519     const TPM_PS& value,
   2520     std::string* buffer);
   2521 
   2522 TRUNKS_EXPORT TPM_RC Parse_TPM_PS(
   2523     std::string* buffer,
   2524     TPM_PS* value,
   2525     std::string* value_bytes);
   2526 
   2527 TRUNKS_EXPORT TPM_RC Serialize_TPM_HT(
   2528     const TPM_HT& value,
   2529     std::string* buffer);
   2530 
   2531 TRUNKS_EXPORT TPM_RC Parse_TPM_HT(
   2532     std::string* buffer,
   2533     TPM_HT* value,
   2534     std::string* value_bytes);
   2535 
   2536 TRUNKS_EXPORT TPM_RC Serialize_TPM_RH(
   2537     const TPM_RH& value,
   2538     std::string* buffer);
   2539 
   2540 TRUNKS_EXPORT TPM_RC Parse_TPM_RH(
   2541     std::string* buffer,
   2542     TPM_RH* value,
   2543     std::string* value_bytes);
   2544 
   2545 TRUNKS_EXPORT TPM_RC Serialize_TPM_HC(
   2546     const TPM_HC& value,
   2547     std::string* buffer);
   2548 
   2549 TRUNKS_EXPORT TPM_RC Parse_TPM_HC(
   2550     std::string* buffer,
   2551     TPM_HC* value,
   2552     std::string* value_bytes);
   2553 
   2554 TRUNKS_EXPORT TPM_RC Serialize_TPMS_ALGORITHM_DESCRIPTION(
   2555     const TPMS_ALGORITHM_DESCRIPTION& value,
   2556     std::string* buffer);
   2557 
   2558 TRUNKS_EXPORT TPM_RC Parse_TPMS_ALGORITHM_DESCRIPTION(
   2559     std::string* buffer,
   2560     TPMS_ALGORITHM_DESCRIPTION* value,
   2561     std::string* value_bytes);
   2562 
   2563 TRUNKS_EXPORT TPM_RC Serialize_TPMT_HA(
   2564     const TPMT_HA& value,
   2565     std::string* buffer);
   2566 
   2567 TRUNKS_EXPORT TPM_RC Parse_TPMT_HA(
   2568     std::string* buffer,
   2569     TPMT_HA* value,
   2570     std::string* value_bytes);
   2571 
   2572 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_DIGEST(
   2573     const TPM2B_DIGEST& value,
   2574     std::string* buffer);
   2575 
   2576 TRUNKS_EXPORT TPM_RC Parse_TPM2B_DIGEST(
   2577     std::string* buffer,
   2578     TPM2B_DIGEST* value,
   2579     std::string* value_bytes);
   2580 
   2581 TRUNKS_EXPORT TPM2B_DIGEST Make_TPM2B_DIGEST(
   2582     const std::string& bytes);
   2583 TRUNKS_EXPORT std::string StringFrom_TPM2B_DIGEST(
   2584     const TPM2B_DIGEST& tpm2b);
   2585 
   2586 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_DATA(
   2587     const TPM2B_DATA& value,
   2588     std::string* buffer);
   2589 
   2590 TRUNKS_EXPORT TPM_RC Parse_TPM2B_DATA(
   2591     std::string* buffer,
   2592     TPM2B_DATA* value,
   2593     std::string* value_bytes);
   2594 
   2595 TRUNKS_EXPORT TPM2B_DATA Make_TPM2B_DATA(
   2596     const std::string& bytes);
   2597 TRUNKS_EXPORT std::string StringFrom_TPM2B_DATA(
   2598     const TPM2B_DATA& tpm2b);
   2599 
   2600 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_EVENT(
   2601     const TPM2B_EVENT& value,
   2602     std::string* buffer);
   2603 
   2604 TRUNKS_EXPORT TPM_RC Parse_TPM2B_EVENT(
   2605     std::string* buffer,
   2606     TPM2B_EVENT* value,
   2607     std::string* value_bytes);
   2608 
   2609 TRUNKS_EXPORT TPM2B_EVENT Make_TPM2B_EVENT(
   2610     const std::string& bytes);
   2611 TRUNKS_EXPORT std::string StringFrom_TPM2B_EVENT(
   2612     const TPM2B_EVENT& tpm2b);
   2613 
   2614 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_MAX_BUFFER(
   2615     const TPM2B_MAX_BUFFER& value,
   2616     std::string* buffer);
   2617 
   2618 TRUNKS_EXPORT TPM_RC Parse_TPM2B_MAX_BUFFER(
   2619     std::string* buffer,
   2620     TPM2B_MAX_BUFFER* value,
   2621     std::string* value_bytes);
   2622 
   2623 TRUNKS_EXPORT TPM2B_MAX_BUFFER Make_TPM2B_MAX_BUFFER(
   2624     const std::string& bytes);
   2625 TRUNKS_EXPORT std::string StringFrom_TPM2B_MAX_BUFFER(
   2626     const TPM2B_MAX_BUFFER& tpm2b);
   2627 
   2628 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_MAX_NV_BUFFER(
   2629     const TPM2B_MAX_NV_BUFFER& value,
   2630     std::string* buffer);
   2631 
   2632 TRUNKS_EXPORT TPM_RC Parse_TPM2B_MAX_NV_BUFFER(
   2633     std::string* buffer,
   2634     TPM2B_MAX_NV_BUFFER* value,
   2635     std::string* value_bytes);
   2636 
   2637 TRUNKS_EXPORT TPM2B_MAX_NV_BUFFER Make_TPM2B_MAX_NV_BUFFER(
   2638     const std::string& bytes);
   2639 TRUNKS_EXPORT std::string StringFrom_TPM2B_MAX_NV_BUFFER(
   2640     const TPM2B_MAX_NV_BUFFER& tpm2b);
   2641 
   2642 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_TIMEOUT(
   2643     const TPM2B_TIMEOUT& value,
   2644     std::string* buffer);
   2645 
   2646 TRUNKS_EXPORT TPM_RC Parse_TPM2B_TIMEOUT(
   2647     std::string* buffer,
   2648     TPM2B_TIMEOUT* value,
   2649     std::string* value_bytes);
   2650 
   2651 TRUNKS_EXPORT TPM2B_TIMEOUT Make_TPM2B_TIMEOUT(
   2652     const std::string& bytes);
   2653 TRUNKS_EXPORT std::string StringFrom_TPM2B_TIMEOUT(
   2654     const TPM2B_TIMEOUT& tpm2b);
   2655 
   2656 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_IV(
   2657     const TPM2B_IV& value,
   2658     std::string* buffer);
   2659 
   2660 TRUNKS_EXPORT TPM_RC Parse_TPM2B_IV(
   2661     std::string* buffer,
   2662     TPM2B_IV* value,
   2663     std::string* value_bytes);
   2664 
   2665 TRUNKS_EXPORT TPM2B_IV Make_TPM2B_IV(
   2666     const std::string& bytes);
   2667 TRUNKS_EXPORT std::string StringFrom_TPM2B_IV(
   2668     const TPM2B_IV& tpm2b);
   2669 
   2670 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_NAME(
   2671     const TPM2B_NAME& value,
   2672     std::string* buffer);
   2673 
   2674 TRUNKS_EXPORT TPM_RC Parse_TPM2B_NAME(
   2675     std::string* buffer,
   2676     TPM2B_NAME* value,
   2677     std::string* value_bytes);
   2678 
   2679 TRUNKS_EXPORT TPM2B_NAME Make_TPM2B_NAME(
   2680     const std::string& bytes);
   2681 TRUNKS_EXPORT std::string StringFrom_TPM2B_NAME(
   2682     const TPM2B_NAME& tpm2b);
   2683 
   2684 TRUNKS_EXPORT TPM_RC Serialize_TPMS_PCR_SELECT(
   2685     const TPMS_PCR_SELECT& value,
   2686     std::string* buffer);
   2687 
   2688 TRUNKS_EXPORT TPM_RC Parse_TPMS_PCR_SELECT(
   2689     std::string* buffer,
   2690     TPMS_PCR_SELECT* value,
   2691     std::string* value_bytes);
   2692 
   2693 TRUNKS_EXPORT TPM_RC Serialize_TPMS_PCR_SELECTION(
   2694     const TPMS_PCR_SELECTION& value,
   2695     std::string* buffer);
   2696 
   2697 TRUNKS_EXPORT TPM_RC Parse_TPMS_PCR_SELECTION(
   2698     std::string* buffer,
   2699     TPMS_PCR_SELECTION* value,
   2700     std::string* value_bytes);
   2701 
   2702 TRUNKS_EXPORT TPM_RC Serialize_TPMT_TK_CREATION(
   2703     const TPMT_TK_CREATION& value,
   2704     std::string* buffer);
   2705 
   2706 TRUNKS_EXPORT TPM_RC Parse_TPMT_TK_CREATION(
   2707     std::string* buffer,
   2708     TPMT_TK_CREATION* value,
   2709     std::string* value_bytes);
   2710 
   2711 TRUNKS_EXPORT TPM_RC Serialize_TPMT_TK_VERIFIED(
   2712     const TPMT_TK_VERIFIED& value,
   2713     std::string* buffer);
   2714 
   2715 TRUNKS_EXPORT TPM_RC Parse_TPMT_TK_VERIFIED(
   2716     std::string* buffer,
   2717     TPMT_TK_VERIFIED* value,
   2718     std::string* value_bytes);
   2719 
   2720 TRUNKS_EXPORT TPM_RC Serialize_TPMT_TK_AUTH(
   2721     const TPMT_TK_AUTH& value,
   2722     std::string* buffer);
   2723 
   2724 TRUNKS_EXPORT TPM_RC Parse_TPMT_TK_AUTH(
   2725     std::string* buffer,
   2726     TPMT_TK_AUTH* value,
   2727     std::string* value_bytes);
   2728 
   2729 TRUNKS_EXPORT TPM_RC Serialize_TPMT_TK_HASHCHECK(
   2730     const TPMT_TK_HASHCHECK& value,
   2731     std::string* buffer);
   2732 
   2733 TRUNKS_EXPORT TPM_RC Parse_TPMT_TK_HASHCHECK(
   2734     std::string* buffer,
   2735     TPMT_TK_HASHCHECK* value,
   2736     std::string* value_bytes);
   2737 
   2738 TRUNKS_EXPORT TPM_RC Serialize_TPMS_ALG_PROPERTY(
   2739     const TPMS_ALG_PROPERTY& value,
   2740     std::string* buffer);
   2741 
   2742 TRUNKS_EXPORT TPM_RC Parse_TPMS_ALG_PROPERTY(
   2743     std::string* buffer,
   2744     TPMS_ALG_PROPERTY* value,
   2745     std::string* value_bytes);
   2746 
   2747 TRUNKS_EXPORT TPM_RC Serialize_TPMS_TAGGED_PROPERTY(
   2748     const TPMS_TAGGED_PROPERTY& value,
   2749     std::string* buffer);
   2750 
   2751 TRUNKS_EXPORT TPM_RC Parse_TPMS_TAGGED_PROPERTY(
   2752     std::string* buffer,
   2753     TPMS_TAGGED_PROPERTY* value,
   2754     std::string* value_bytes);
   2755 
   2756 TRUNKS_EXPORT TPM_RC Serialize_TPMS_TAGGED_PCR_SELECT(
   2757     const TPMS_TAGGED_PCR_SELECT& value,
   2758     std::string* buffer);
   2759 
   2760 TRUNKS_EXPORT TPM_RC Parse_TPMS_TAGGED_PCR_SELECT(
   2761     std::string* buffer,
   2762     TPMS_TAGGED_PCR_SELECT* value,
   2763     std::string* value_bytes);
   2764 
   2765 TRUNKS_EXPORT TPM_RC Serialize_TPML_CC(
   2766     const TPML_CC& value,
   2767     std::string* buffer);
   2768 
   2769 TRUNKS_EXPORT TPM_RC Parse_TPML_CC(
   2770     std::string* buffer,
   2771     TPML_CC* value,
   2772     std::string* value_bytes);
   2773 
   2774 TRUNKS_EXPORT TPM_RC Serialize_TPML_CCA(
   2775     const TPML_CCA& value,
   2776     std::string* buffer);
   2777 
   2778 TRUNKS_EXPORT TPM_RC Parse_TPML_CCA(
   2779     std::string* buffer,
   2780     TPML_CCA* value,
   2781     std::string* value_bytes);
   2782 
   2783 TRUNKS_EXPORT TPM_RC Serialize_TPML_ALG(
   2784     const TPML_ALG& value,
   2785     std::string* buffer);
   2786 
   2787 TRUNKS_EXPORT TPM_RC Parse_TPML_ALG(
   2788     std::string* buffer,
   2789     TPML_ALG* value,
   2790     std::string* value_bytes);
   2791 
   2792 TRUNKS_EXPORT TPM_RC Serialize_TPML_HANDLE(
   2793     const TPML_HANDLE& value,
   2794     std::string* buffer);
   2795 
   2796 TRUNKS_EXPORT TPM_RC Parse_TPML_HANDLE(
   2797     std::string* buffer,
   2798     TPML_HANDLE* value,
   2799     std::string* value_bytes);
   2800 
   2801 TRUNKS_EXPORT TPM_RC Serialize_TPML_DIGEST(
   2802     const TPML_DIGEST& value,
   2803     std::string* buffer);
   2804 
   2805 TRUNKS_EXPORT TPM_RC Parse_TPML_DIGEST(
   2806     std::string* buffer,
   2807     TPML_DIGEST* value,
   2808     std::string* value_bytes);
   2809 
   2810 TRUNKS_EXPORT TPM_RC Serialize_TPML_DIGEST_VALUES(
   2811     const TPML_DIGEST_VALUES& value,
   2812     std::string* buffer);
   2813 
   2814 TRUNKS_EXPORT TPM_RC Parse_TPML_DIGEST_VALUES(
   2815     std::string* buffer,
   2816     TPML_DIGEST_VALUES* value,
   2817     std::string* value_bytes);
   2818 
   2819 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_DIGEST_VALUES(
   2820     const TPM2B_DIGEST_VALUES& value,
   2821     std::string* buffer);
   2822 
   2823 TRUNKS_EXPORT TPM_RC Parse_TPM2B_DIGEST_VALUES(
   2824     std::string* buffer,
   2825     TPM2B_DIGEST_VALUES* value,
   2826     std::string* value_bytes);
   2827 
   2828 TRUNKS_EXPORT TPM2B_DIGEST_VALUES Make_TPM2B_DIGEST_VALUES(
   2829     const std::string& bytes);
   2830 TRUNKS_EXPORT std::string StringFrom_TPM2B_DIGEST_VALUES(
   2831     const TPM2B_DIGEST_VALUES& tpm2b);
   2832 
   2833 TRUNKS_EXPORT TPM_RC Serialize_TPML_PCR_SELECTION(
   2834     const TPML_PCR_SELECTION& value,
   2835     std::string* buffer);
   2836 
   2837 TRUNKS_EXPORT TPM_RC Parse_TPML_PCR_SELECTION(
   2838     std::string* buffer,
   2839     TPML_PCR_SELECTION* value,
   2840     std::string* value_bytes);
   2841 
   2842 TRUNKS_EXPORT TPM_RC Serialize_TPML_ALG_PROPERTY(
   2843     const TPML_ALG_PROPERTY& value,
   2844     std::string* buffer);
   2845 
   2846 TRUNKS_EXPORT TPM_RC Parse_TPML_ALG_PROPERTY(
   2847     std::string* buffer,
   2848     TPML_ALG_PROPERTY* value,
   2849     std::string* value_bytes);
   2850 
   2851 TRUNKS_EXPORT TPM_RC Serialize_TPML_TAGGED_TPM_PROPERTY(
   2852     const TPML_TAGGED_TPM_PROPERTY& value,
   2853     std::string* buffer);
   2854 
   2855 TRUNKS_EXPORT TPM_RC Parse_TPML_TAGGED_TPM_PROPERTY(
   2856     std::string* buffer,
   2857     TPML_TAGGED_TPM_PROPERTY* value,
   2858     std::string* value_bytes);
   2859 
   2860 TRUNKS_EXPORT TPM_RC Serialize_TPML_TAGGED_PCR_PROPERTY(
   2861     const TPML_TAGGED_PCR_PROPERTY& value,
   2862     std::string* buffer);
   2863 
   2864 TRUNKS_EXPORT TPM_RC Parse_TPML_TAGGED_PCR_PROPERTY(
   2865     std::string* buffer,
   2866     TPML_TAGGED_PCR_PROPERTY* value,
   2867     std::string* value_bytes);
   2868 
   2869 TRUNKS_EXPORT TPM_RC Serialize_TPML_ECC_CURVE(
   2870     const TPML_ECC_CURVE& value,
   2871     std::string* buffer);
   2872 
   2873 TRUNKS_EXPORT TPM_RC Parse_TPML_ECC_CURVE(
   2874     std::string* buffer,
   2875     TPML_ECC_CURVE* value,
   2876     std::string* value_bytes);
   2877 
   2878 TRUNKS_EXPORT TPM_RC Serialize_TPMS_CAPABILITY_DATA(
   2879     const TPMS_CAPABILITY_DATA& value,
   2880     std::string* buffer);
   2881 
   2882 TRUNKS_EXPORT TPM_RC Parse_TPMS_CAPABILITY_DATA(
   2883     std::string* buffer,
   2884     TPMS_CAPABILITY_DATA* value,
   2885     std::string* value_bytes);
   2886 
   2887 TRUNKS_EXPORT TPM_RC Serialize_TPMS_CLOCK_INFO(
   2888     const TPMS_CLOCK_INFO& value,
   2889     std::string* buffer);
   2890 
   2891 TRUNKS_EXPORT TPM_RC Parse_TPMS_CLOCK_INFO(
   2892     std::string* buffer,
   2893     TPMS_CLOCK_INFO* value,
   2894     std::string* value_bytes);
   2895 
   2896 TRUNKS_EXPORT TPM_RC Serialize_TPMS_TIME_INFO(
   2897     const TPMS_TIME_INFO& value,
   2898     std::string* buffer);
   2899 
   2900 TRUNKS_EXPORT TPM_RC Parse_TPMS_TIME_INFO(
   2901     std::string* buffer,
   2902     TPMS_TIME_INFO* value,
   2903     std::string* value_bytes);
   2904 
   2905 TRUNKS_EXPORT TPM_RC Serialize_TPMS_TIME_ATTEST_INFO(
   2906     const TPMS_TIME_ATTEST_INFO& value,
   2907     std::string* buffer);
   2908 
   2909 TRUNKS_EXPORT TPM_RC Parse_TPMS_TIME_ATTEST_INFO(
   2910     std::string* buffer,
   2911     TPMS_TIME_ATTEST_INFO* value,
   2912     std::string* value_bytes);
   2913 
   2914 TRUNKS_EXPORT TPM_RC Serialize_TPMS_CERTIFY_INFO(
   2915     const TPMS_CERTIFY_INFO& value,
   2916     std::string* buffer);
   2917 
   2918 TRUNKS_EXPORT TPM_RC Parse_TPMS_CERTIFY_INFO(
   2919     std::string* buffer,
   2920     TPMS_CERTIFY_INFO* value,
   2921     std::string* value_bytes);
   2922 
   2923 TRUNKS_EXPORT TPM_RC Serialize_TPMS_QUOTE_INFO(
   2924     const TPMS_QUOTE_INFO& value,
   2925     std::string* buffer);
   2926 
   2927 TRUNKS_EXPORT TPM_RC Parse_TPMS_QUOTE_INFO(
   2928     std::string* buffer,
   2929     TPMS_QUOTE_INFO* value,
   2930     std::string* value_bytes);
   2931 
   2932 TRUNKS_EXPORT TPM_RC Serialize_TPMS_COMMAND_AUDIT_INFO(
   2933     const TPMS_COMMAND_AUDIT_INFO& value,
   2934     std::string* buffer);
   2935 
   2936 TRUNKS_EXPORT TPM_RC Parse_TPMS_COMMAND_AUDIT_INFO(
   2937     std::string* buffer,
   2938     TPMS_COMMAND_AUDIT_INFO* value,
   2939     std::string* value_bytes);
   2940 
   2941 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SESSION_AUDIT_INFO(
   2942     const TPMS_SESSION_AUDIT_INFO& value,
   2943     std::string* buffer);
   2944 
   2945 TRUNKS_EXPORT TPM_RC Parse_TPMS_SESSION_AUDIT_INFO(
   2946     std::string* buffer,
   2947     TPMS_SESSION_AUDIT_INFO* value,
   2948     std::string* value_bytes);
   2949 
   2950 TRUNKS_EXPORT TPM_RC Serialize_TPMS_CREATION_INFO(
   2951     const TPMS_CREATION_INFO& value,
   2952     std::string* buffer);
   2953 
   2954 TRUNKS_EXPORT TPM_RC Parse_TPMS_CREATION_INFO(
   2955     std::string* buffer,
   2956     TPMS_CREATION_INFO* value,
   2957     std::string* value_bytes);
   2958 
   2959 TRUNKS_EXPORT TPM_RC Serialize_TPMS_NV_CERTIFY_INFO(
   2960     const TPMS_NV_CERTIFY_INFO& value,
   2961     std::string* buffer);
   2962 
   2963 TRUNKS_EXPORT TPM_RC Parse_TPMS_NV_CERTIFY_INFO(
   2964     std::string* buffer,
   2965     TPMS_NV_CERTIFY_INFO* value,
   2966     std::string* value_bytes);
   2967 
   2968 TRUNKS_EXPORT TPM_RC Serialize_TPMS_ATTEST(
   2969     const TPMS_ATTEST& value,
   2970     std::string* buffer);
   2971 
   2972 TRUNKS_EXPORT TPM_RC Parse_TPMS_ATTEST(
   2973     std::string* buffer,
   2974     TPMS_ATTEST* value,
   2975     std::string* value_bytes);
   2976 
   2977 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_ATTEST(
   2978     const TPM2B_ATTEST& value,
   2979     std::string* buffer);
   2980 
   2981 TRUNKS_EXPORT TPM_RC Parse_TPM2B_ATTEST(
   2982     std::string* buffer,
   2983     TPM2B_ATTEST* value,
   2984     std::string* value_bytes);
   2985 
   2986 TRUNKS_EXPORT TPM2B_ATTEST Make_TPM2B_ATTEST(
   2987     const std::string& bytes);
   2988 TRUNKS_EXPORT std::string StringFrom_TPM2B_ATTEST(
   2989     const TPM2B_ATTEST& tpm2b);
   2990 
   2991 TRUNKS_EXPORT TPM_RC Serialize_TPMS_AUTH_COMMAND(
   2992     const TPMS_AUTH_COMMAND& value,
   2993     std::string* buffer);
   2994 
   2995 TRUNKS_EXPORT TPM_RC Parse_TPMS_AUTH_COMMAND(
   2996     std::string* buffer,
   2997     TPMS_AUTH_COMMAND* value,
   2998     std::string* value_bytes);
   2999 
   3000 TRUNKS_EXPORT TPM_RC Serialize_TPMS_AUTH_RESPONSE(
   3001     const TPMS_AUTH_RESPONSE& value,
   3002     std::string* buffer);
   3003 
   3004 TRUNKS_EXPORT TPM_RC Parse_TPMS_AUTH_RESPONSE(
   3005     std::string* buffer,
   3006     TPMS_AUTH_RESPONSE* value,
   3007     std::string* value_bytes);
   3008 
   3009 TRUNKS_EXPORT TPM_RC Serialize_TPMT_SYM_DEF(
   3010     const TPMT_SYM_DEF& value,
   3011     std::string* buffer);
   3012 
   3013 TRUNKS_EXPORT TPM_RC Parse_TPMT_SYM_DEF(
   3014     std::string* buffer,
   3015     TPMT_SYM_DEF* value,
   3016     std::string* value_bytes);
   3017 
   3018 TRUNKS_EXPORT TPM_RC Serialize_TPMT_SYM_DEF_OBJECT(
   3019     const TPMT_SYM_DEF_OBJECT& value,
   3020     std::string* buffer);
   3021 
   3022 TRUNKS_EXPORT TPM_RC Parse_TPMT_SYM_DEF_OBJECT(
   3023     std::string* buffer,
   3024     TPMT_SYM_DEF_OBJECT* value,
   3025     std::string* value_bytes);
   3026 
   3027 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_SYM_KEY(
   3028     const TPM2B_SYM_KEY& value,
   3029     std::string* buffer);
   3030 
   3031 TRUNKS_EXPORT TPM_RC Parse_TPM2B_SYM_KEY(
   3032     std::string* buffer,
   3033     TPM2B_SYM_KEY* value,
   3034     std::string* value_bytes);
   3035 
   3036 TRUNKS_EXPORT TPM2B_SYM_KEY Make_TPM2B_SYM_KEY(
   3037     const std::string& bytes);
   3038 TRUNKS_EXPORT std::string StringFrom_TPM2B_SYM_KEY(
   3039     const TPM2B_SYM_KEY& tpm2b);
   3040 
   3041 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SYMCIPHER_PARMS(
   3042     const TPMS_SYMCIPHER_PARMS& value,
   3043     std::string* buffer);
   3044 
   3045 TRUNKS_EXPORT TPM_RC Parse_TPMS_SYMCIPHER_PARMS(
   3046     std::string* buffer,
   3047     TPMS_SYMCIPHER_PARMS* value,
   3048     std::string* value_bytes);
   3049 
   3050 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_SENSITIVE_DATA(
   3051     const TPM2B_SENSITIVE_DATA& value,
   3052     std::string* buffer);
   3053 
   3054 TRUNKS_EXPORT TPM_RC Parse_TPM2B_SENSITIVE_DATA(
   3055     std::string* buffer,
   3056     TPM2B_SENSITIVE_DATA* value,
   3057     std::string* value_bytes);
   3058 
   3059 TRUNKS_EXPORT TPM2B_SENSITIVE_DATA Make_TPM2B_SENSITIVE_DATA(
   3060     const std::string& bytes);
   3061 TRUNKS_EXPORT std::string StringFrom_TPM2B_SENSITIVE_DATA(
   3062     const TPM2B_SENSITIVE_DATA& tpm2b);
   3063 
   3064 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SENSITIVE_CREATE(
   3065     const TPMS_SENSITIVE_CREATE& value,
   3066     std::string* buffer);
   3067 
   3068 TRUNKS_EXPORT TPM_RC Parse_TPMS_SENSITIVE_CREATE(
   3069     std::string* buffer,
   3070     TPMS_SENSITIVE_CREATE* value,
   3071     std::string* value_bytes);
   3072 
   3073 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_SENSITIVE_CREATE(
   3074     const TPM2B_SENSITIVE_CREATE& value,
   3075     std::string* buffer);
   3076 
   3077 TRUNKS_EXPORT TPM_RC Parse_TPM2B_SENSITIVE_CREATE(
   3078     std::string* buffer,
   3079     TPM2B_SENSITIVE_CREATE* value,
   3080     std::string* value_bytes);
   3081 
   3082 TRUNKS_EXPORT TPM2B_SENSITIVE_CREATE Make_TPM2B_SENSITIVE_CREATE(
   3083     const TPMS_SENSITIVE_CREATE& inner);
   3084 
   3085 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_SIGHASH(
   3086     const TPMS_SCHEME_SIGHASH& value,
   3087     std::string* buffer);
   3088 
   3089 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_SIGHASH(
   3090     std::string* buffer,
   3091     TPMS_SCHEME_SIGHASH* value,
   3092     std::string* value_bytes);
   3093 
   3094 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_XOR(
   3095     const TPMS_SCHEME_XOR& value,
   3096     std::string* buffer);
   3097 
   3098 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_XOR(
   3099     std::string* buffer,
   3100     TPMS_SCHEME_XOR* value,
   3101     std::string* value_bytes);
   3102 
   3103 TRUNKS_EXPORT TPM_RC Serialize_TPMT_KEYEDHASH_SCHEME(
   3104     const TPMT_KEYEDHASH_SCHEME& value,
   3105     std::string* buffer);
   3106 
   3107 TRUNKS_EXPORT TPM_RC Parse_TPMT_KEYEDHASH_SCHEME(
   3108     std::string* buffer,
   3109     TPMT_KEYEDHASH_SCHEME* value,
   3110     std::string* value_bytes);
   3111 
   3112 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_ECDAA(
   3113     const TPMS_SCHEME_ECDAA& value,
   3114     std::string* buffer);
   3115 
   3116 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_ECDAA(
   3117     std::string* buffer,
   3118     TPMS_SCHEME_ECDAA* value,
   3119     std::string* value_bytes);
   3120 
   3121 TRUNKS_EXPORT TPM_RC Serialize_TPMT_SIG_SCHEME(
   3122     const TPMT_SIG_SCHEME& value,
   3123     std::string* buffer);
   3124 
   3125 TRUNKS_EXPORT TPM_RC Parse_TPMT_SIG_SCHEME(
   3126     std::string* buffer,
   3127     TPMT_SIG_SCHEME* value,
   3128     std::string* value_bytes);
   3129 
   3130 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_OAEP(
   3131     const TPMS_SCHEME_OAEP& value,
   3132     std::string* buffer);
   3133 
   3134 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_OAEP(
   3135     std::string* buffer,
   3136     TPMS_SCHEME_OAEP* value,
   3137     std::string* value_bytes);
   3138 
   3139 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_ECDH(
   3140     const TPMS_SCHEME_ECDH& value,
   3141     std::string* buffer);
   3142 
   3143 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_ECDH(
   3144     std::string* buffer,
   3145     TPMS_SCHEME_ECDH* value,
   3146     std::string* value_bytes);
   3147 
   3148 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_MGF1(
   3149     const TPMS_SCHEME_MGF1& value,
   3150     std::string* buffer);
   3151 
   3152 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_MGF1(
   3153     std::string* buffer,
   3154     TPMS_SCHEME_MGF1* value,
   3155     std::string* value_bytes);
   3156 
   3157 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_KDF1_SP800_56a(
   3158     const TPMS_SCHEME_KDF1_SP800_56a& value,
   3159     std::string* buffer);
   3160 
   3161 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_KDF1_SP800_56a(
   3162     std::string* buffer,
   3163     TPMS_SCHEME_KDF1_SP800_56a* value,
   3164     std::string* value_bytes);
   3165 
   3166 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_KDF2(
   3167     const TPMS_SCHEME_KDF2& value,
   3168     std::string* buffer);
   3169 
   3170 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_KDF2(
   3171     std::string* buffer,
   3172     TPMS_SCHEME_KDF2* value,
   3173     std::string* value_bytes);
   3174 
   3175 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SCHEME_KDF1_SP800_108(
   3176     const TPMS_SCHEME_KDF1_SP800_108& value,
   3177     std::string* buffer);
   3178 
   3179 TRUNKS_EXPORT TPM_RC Parse_TPMS_SCHEME_KDF1_SP800_108(
   3180     std::string* buffer,
   3181     TPMS_SCHEME_KDF1_SP800_108* value,
   3182     std::string* value_bytes);
   3183 
   3184 TRUNKS_EXPORT TPM_RC Serialize_TPMT_KDF_SCHEME(
   3185     const TPMT_KDF_SCHEME& value,
   3186     std::string* buffer);
   3187 
   3188 TRUNKS_EXPORT TPM_RC Parse_TPMT_KDF_SCHEME(
   3189     std::string* buffer,
   3190     TPMT_KDF_SCHEME* value,
   3191     std::string* value_bytes);
   3192 
   3193 TRUNKS_EXPORT TPM_RC Serialize_TPMT_ASYM_SCHEME(
   3194     const TPMT_ASYM_SCHEME& value,
   3195     std::string* buffer);
   3196 
   3197 TRUNKS_EXPORT TPM_RC Parse_TPMT_ASYM_SCHEME(
   3198     std::string* buffer,
   3199     TPMT_ASYM_SCHEME* value,
   3200     std::string* value_bytes);
   3201 
   3202 TRUNKS_EXPORT TPM_RC Serialize_TPMT_RSA_SCHEME(
   3203     const TPMT_RSA_SCHEME& value,
   3204     std::string* buffer);
   3205 
   3206 TRUNKS_EXPORT TPM_RC Parse_TPMT_RSA_SCHEME(
   3207     std::string* buffer,
   3208     TPMT_RSA_SCHEME* value,
   3209     std::string* value_bytes);
   3210 
   3211 TRUNKS_EXPORT TPM_RC Serialize_TPMT_RSA_DECRYPT(
   3212     const TPMT_RSA_DECRYPT& value,
   3213     std::string* buffer);
   3214 
   3215 TRUNKS_EXPORT TPM_RC Parse_TPMT_RSA_DECRYPT(
   3216     std::string* buffer,
   3217     TPMT_RSA_DECRYPT* value,
   3218     std::string* value_bytes);
   3219 
   3220 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_PUBLIC_KEY_RSA(
   3221     const TPM2B_PUBLIC_KEY_RSA& value,
   3222     std::string* buffer);
   3223 
   3224 TRUNKS_EXPORT TPM_RC Parse_TPM2B_PUBLIC_KEY_RSA(
   3225     std::string* buffer,
   3226     TPM2B_PUBLIC_KEY_RSA* value,
   3227     std::string* value_bytes);
   3228 
   3229 TRUNKS_EXPORT TPM2B_PUBLIC_KEY_RSA Make_TPM2B_PUBLIC_KEY_RSA(
   3230     const std::string& bytes);
   3231 TRUNKS_EXPORT std::string StringFrom_TPM2B_PUBLIC_KEY_RSA(
   3232     const TPM2B_PUBLIC_KEY_RSA& tpm2b);
   3233 
   3234 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_PRIVATE_KEY_RSA(
   3235     const TPM2B_PRIVATE_KEY_RSA& value,
   3236     std::string* buffer);
   3237 
   3238 TRUNKS_EXPORT TPM_RC Parse_TPM2B_PRIVATE_KEY_RSA(
   3239     std::string* buffer,
   3240     TPM2B_PRIVATE_KEY_RSA* value,
   3241     std::string* value_bytes);
   3242 
   3243 TRUNKS_EXPORT TPM2B_PRIVATE_KEY_RSA Make_TPM2B_PRIVATE_KEY_RSA(
   3244     const std::string& bytes);
   3245 TRUNKS_EXPORT std::string StringFrom_TPM2B_PRIVATE_KEY_RSA(
   3246     const TPM2B_PRIVATE_KEY_RSA& tpm2b);
   3247 
   3248 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_ECC_PARAMETER(
   3249     const TPM2B_ECC_PARAMETER& value,
   3250     std::string* buffer);
   3251 
   3252 TRUNKS_EXPORT TPM_RC Parse_TPM2B_ECC_PARAMETER(
   3253     std::string* buffer,
   3254     TPM2B_ECC_PARAMETER* value,
   3255     std::string* value_bytes);
   3256 
   3257 TRUNKS_EXPORT TPM2B_ECC_PARAMETER Make_TPM2B_ECC_PARAMETER(
   3258     const std::string& bytes);
   3259 TRUNKS_EXPORT std::string StringFrom_TPM2B_ECC_PARAMETER(
   3260     const TPM2B_ECC_PARAMETER& tpm2b);
   3261 
   3262 TRUNKS_EXPORT TPM_RC Serialize_TPMS_ECC_POINT(
   3263     const TPMS_ECC_POINT& value,
   3264     std::string* buffer);
   3265 
   3266 TRUNKS_EXPORT TPM_RC Parse_TPMS_ECC_POINT(
   3267     std::string* buffer,
   3268     TPMS_ECC_POINT* value,
   3269     std::string* value_bytes);
   3270 
   3271 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_ECC_POINT(
   3272     const TPM2B_ECC_POINT& value,
   3273     std::string* buffer);
   3274 
   3275 TRUNKS_EXPORT TPM_RC Parse_TPM2B_ECC_POINT(
   3276     std::string* buffer,
   3277     TPM2B_ECC_POINT* value,
   3278     std::string* value_bytes);
   3279 
   3280 TRUNKS_EXPORT TPM2B_ECC_POINT Make_TPM2B_ECC_POINT(
   3281     const TPMS_ECC_POINT& inner);
   3282 
   3283 TRUNKS_EXPORT TPM_RC Serialize_TPMT_ECC_SCHEME(
   3284     const TPMT_ECC_SCHEME& value,
   3285     std::string* buffer);
   3286 
   3287 TRUNKS_EXPORT TPM_RC Parse_TPMT_ECC_SCHEME(
   3288     std::string* buffer,
   3289     TPMT_ECC_SCHEME* value,
   3290     std::string* value_bytes);
   3291 
   3292 TRUNKS_EXPORT TPM_RC Serialize_TPMS_ALGORITHM_DETAIL_ECC(
   3293     const TPMS_ALGORITHM_DETAIL_ECC& value,
   3294     std::string* buffer);
   3295 
   3296 TRUNKS_EXPORT TPM_RC Parse_TPMS_ALGORITHM_DETAIL_ECC(
   3297     std::string* buffer,
   3298     TPMS_ALGORITHM_DETAIL_ECC* value,
   3299     std::string* value_bytes);
   3300 
   3301 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SIGNATURE_RSASSA(
   3302     const TPMS_SIGNATURE_RSASSA& value,
   3303     std::string* buffer);
   3304 
   3305 TRUNKS_EXPORT TPM_RC Parse_TPMS_SIGNATURE_RSASSA(
   3306     std::string* buffer,
   3307     TPMS_SIGNATURE_RSASSA* value,
   3308     std::string* value_bytes);
   3309 
   3310 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SIGNATURE_RSAPSS(
   3311     const TPMS_SIGNATURE_RSAPSS& value,
   3312     std::string* buffer);
   3313 
   3314 TRUNKS_EXPORT TPM_RC Parse_TPMS_SIGNATURE_RSAPSS(
   3315     std::string* buffer,
   3316     TPMS_SIGNATURE_RSAPSS* value,
   3317     std::string* value_bytes);
   3318 
   3319 TRUNKS_EXPORT TPM_RC Serialize_TPMS_SIGNATURE_ECDSA(
   3320     const TPMS_SIGNATURE_ECDSA& value,
   3321     std::string* buffer);
   3322 
   3323 TRUNKS_EXPORT TPM_RC Parse_TPMS_SIGNATURE_ECDSA(
   3324     std::string* buffer,
   3325     TPMS_SIGNATURE_ECDSA* value,
   3326     std::string* value_bytes);
   3327 
   3328 TRUNKS_EXPORT TPM_RC Serialize_TPMT_SIGNATURE(
   3329     const TPMT_SIGNATURE& value,
   3330     std::string* buffer);
   3331 
   3332 TRUNKS_EXPORT TPM_RC Parse_TPMT_SIGNATURE(
   3333     std::string* buffer,
   3334     TPMT_SIGNATURE* value,
   3335     std::string* value_bytes);
   3336 
   3337 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_ENCRYPTED_SECRET(
   3338     const TPM2B_ENCRYPTED_SECRET& value,
   3339     std::string* buffer);
   3340 
   3341 TRUNKS_EXPORT TPM_RC Parse_TPM2B_ENCRYPTED_SECRET(
   3342     std::string* buffer,
   3343     TPM2B_ENCRYPTED_SECRET* value,
   3344     std::string* value_bytes);
   3345 
   3346 TRUNKS_EXPORT TPM2B_ENCRYPTED_SECRET Make_TPM2B_ENCRYPTED_SECRET(
   3347     const std::string& bytes);
   3348 TRUNKS_EXPORT std::string StringFrom_TPM2B_ENCRYPTED_SECRET(
   3349     const TPM2B_ENCRYPTED_SECRET& tpm2b);
   3350 
   3351 TRUNKS_EXPORT TPM_RC Serialize_TPMS_KEYEDHASH_PARMS(
   3352     const TPMS_KEYEDHASH_PARMS& value,
   3353     std::string* buffer);
   3354 
   3355 TRUNKS_EXPORT TPM_RC Parse_TPMS_KEYEDHASH_PARMS(
   3356     std::string* buffer,
   3357     TPMS_KEYEDHASH_PARMS* value,
   3358     std::string* value_bytes);
   3359 
   3360 TRUNKS_EXPORT TPM_RC Serialize_TPMS_ASYM_PARMS(
   3361     const TPMS_ASYM_PARMS& value,
   3362     std::string* buffer);
   3363 
   3364 TRUNKS_EXPORT TPM_RC Parse_TPMS_ASYM_PARMS(
   3365     std::string* buffer,
   3366     TPMS_ASYM_PARMS* value,
   3367     std::string* value_bytes);
   3368 
   3369 TRUNKS_EXPORT TPM_RC Serialize_TPMS_RSA_PARMS(
   3370     const TPMS_RSA_PARMS& value,
   3371     std::string* buffer);
   3372 
   3373 TRUNKS_EXPORT TPM_RC Parse_TPMS_RSA_PARMS(
   3374     std::string* buffer,
   3375     TPMS_RSA_PARMS* value,
   3376     std::string* value_bytes);
   3377 
   3378 TRUNKS_EXPORT TPM_RC Serialize_TPMS_ECC_PARMS(
   3379     const TPMS_ECC_PARMS& value,
   3380     std::string* buffer);
   3381 
   3382 TRUNKS_EXPORT TPM_RC Parse_TPMS_ECC_PARMS(
   3383     std::string* buffer,
   3384     TPMS_ECC_PARMS* value,
   3385     std::string* value_bytes);
   3386 
   3387 TRUNKS_EXPORT TPM_RC Serialize_TPMT_PUBLIC_PARMS(
   3388     const TPMT_PUBLIC_PARMS& value,
   3389     std::string* buffer);
   3390 
   3391 TRUNKS_EXPORT TPM_RC Parse_TPMT_PUBLIC_PARMS(
   3392     std::string* buffer,
   3393     TPMT_PUBLIC_PARMS* value,
   3394     std::string* value_bytes);
   3395 
   3396 TRUNKS_EXPORT TPM_RC Serialize_TPMT_PUBLIC(
   3397     const TPMT_PUBLIC& value,
   3398     std::string* buffer);
   3399 
   3400 TRUNKS_EXPORT TPM_RC Parse_TPMT_PUBLIC(
   3401     std::string* buffer,
   3402     TPMT_PUBLIC* value,
   3403     std::string* value_bytes);
   3404 
   3405 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_PUBLIC(
   3406     const TPM2B_PUBLIC& value,
   3407     std::string* buffer);
   3408 
   3409 TRUNKS_EXPORT TPM_RC Parse_TPM2B_PUBLIC(
   3410     std::string* buffer,
   3411     TPM2B_PUBLIC* value,
   3412     std::string* value_bytes);
   3413 
   3414 TRUNKS_EXPORT TPM2B_PUBLIC Make_TPM2B_PUBLIC(
   3415     const TPMT_PUBLIC& inner);
   3416 
   3417 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_PRIVATE_VENDOR_SPECIFIC(
   3418     const TPM2B_PRIVATE_VENDOR_SPECIFIC& value,
   3419     std::string* buffer);
   3420 
   3421 TRUNKS_EXPORT TPM_RC Parse_TPM2B_PRIVATE_VENDOR_SPECIFIC(
   3422     std::string* buffer,
   3423     TPM2B_PRIVATE_VENDOR_SPECIFIC* value,
   3424     std::string* value_bytes);
   3425 
   3426 TRUNKS_EXPORT TPM2B_PRIVATE_VENDOR_SPECIFIC Make_TPM2B_PRIVATE_VENDOR_SPECIFIC(
   3427     const std::string& bytes);
   3428 TRUNKS_EXPORT std::string StringFrom_TPM2B_PRIVATE_VENDOR_SPECIFIC(
   3429     const TPM2B_PRIVATE_VENDOR_SPECIFIC& tpm2b);
   3430 
   3431 TRUNKS_EXPORT TPM_RC Serialize_TPMT_SENSITIVE(
   3432     const TPMT_SENSITIVE& value,
   3433     std::string* buffer);
   3434 
   3435 TRUNKS_EXPORT TPM_RC Parse_TPMT_SENSITIVE(
   3436     std::string* buffer,
   3437     TPMT_SENSITIVE* value,
   3438     std::string* value_bytes);
   3439 
   3440 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_SENSITIVE(
   3441     const TPM2B_SENSITIVE& value,
   3442     std::string* buffer);
   3443 
   3444 TRUNKS_EXPORT TPM_RC Parse_TPM2B_SENSITIVE(
   3445     std::string* buffer,
   3446     TPM2B_SENSITIVE* value,
   3447     std::string* value_bytes);
   3448 
   3449 TRUNKS_EXPORT TPM2B_SENSITIVE Make_TPM2B_SENSITIVE(
   3450     const TPMT_SENSITIVE& inner);
   3451 
   3452 TRUNKS_EXPORT TPM_RC Serialize__PRIVATE(
   3453     const _PRIVATE& value,
   3454     std::string* buffer);
   3455 
   3456 TRUNKS_EXPORT TPM_RC Parse__PRIVATE(
   3457     std::string* buffer,
   3458     _PRIVATE* value,
   3459     std::string* value_bytes);
   3460 
   3461 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_PRIVATE(
   3462     const TPM2B_PRIVATE& value,
   3463     std::string* buffer);
   3464 
   3465 TRUNKS_EXPORT TPM_RC Parse_TPM2B_PRIVATE(
   3466     std::string* buffer,
   3467     TPM2B_PRIVATE* value,
   3468     std::string* value_bytes);
   3469 
   3470 TRUNKS_EXPORT TPM2B_PRIVATE Make_TPM2B_PRIVATE(
   3471     const std::string& bytes);
   3472 TRUNKS_EXPORT std::string StringFrom_TPM2B_PRIVATE(
   3473     const TPM2B_PRIVATE& tpm2b);
   3474 
   3475 TRUNKS_EXPORT TPM_RC Serialize__ID_OBJECT(
   3476     const _ID_OBJECT& value,
   3477     std::string* buffer);
   3478 
   3479 TRUNKS_EXPORT TPM_RC Parse__ID_OBJECT(
   3480     std::string* buffer,
   3481     _ID_OBJECT* value,
   3482     std::string* value_bytes);
   3483 
   3484 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_ID_OBJECT(
   3485     const TPM2B_ID_OBJECT& value,
   3486     std::string* buffer);
   3487 
   3488 TRUNKS_EXPORT TPM_RC Parse_TPM2B_ID_OBJECT(
   3489     std::string* buffer,
   3490     TPM2B_ID_OBJECT* value,
   3491     std::string* value_bytes);
   3492 
   3493 TRUNKS_EXPORT TPM2B_ID_OBJECT Make_TPM2B_ID_OBJECT(
   3494     const std::string& bytes);
   3495 TRUNKS_EXPORT std::string StringFrom_TPM2B_ID_OBJECT(
   3496     const TPM2B_ID_OBJECT& tpm2b);
   3497 
   3498 TRUNKS_EXPORT TPM_RC Serialize_TPMS_NV_PUBLIC(
   3499     const TPMS_NV_PUBLIC& value,
   3500     std::string* buffer);
   3501 
   3502 TRUNKS_EXPORT TPM_RC Parse_TPMS_NV_PUBLIC(
   3503     std::string* buffer,
   3504     TPMS_NV_PUBLIC* value,
   3505     std::string* value_bytes);
   3506 
   3507 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_NV_PUBLIC(
   3508     const TPM2B_NV_PUBLIC& value,
   3509     std::string* buffer);
   3510 
   3511 TRUNKS_EXPORT TPM_RC Parse_TPM2B_NV_PUBLIC(
   3512     std::string* buffer,
   3513     TPM2B_NV_PUBLIC* value,
   3514     std::string* value_bytes);
   3515 
   3516 TRUNKS_EXPORT TPM2B_NV_PUBLIC Make_TPM2B_NV_PUBLIC(
   3517     const TPMS_NV_PUBLIC& inner);
   3518 
   3519 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_CONTEXT_SENSITIVE(
   3520     const TPM2B_CONTEXT_SENSITIVE& value,
   3521     std::string* buffer);
   3522 
   3523 TRUNKS_EXPORT TPM_RC Parse_TPM2B_CONTEXT_SENSITIVE(
   3524     std::string* buffer,
   3525     TPM2B_CONTEXT_SENSITIVE* value,
   3526     std::string* value_bytes);
   3527 
   3528 TRUNKS_EXPORT TPM2B_CONTEXT_SENSITIVE Make_TPM2B_CONTEXT_SENSITIVE(
   3529     const std::string& bytes);
   3530 TRUNKS_EXPORT std::string StringFrom_TPM2B_CONTEXT_SENSITIVE(
   3531     const TPM2B_CONTEXT_SENSITIVE& tpm2b);
   3532 
   3533 TRUNKS_EXPORT TPM_RC Serialize_TPMS_CONTEXT_DATA(
   3534     const TPMS_CONTEXT_DATA& value,
   3535     std::string* buffer);
   3536 
   3537 TRUNKS_EXPORT TPM_RC Parse_TPMS_CONTEXT_DATA(
   3538     std::string* buffer,
   3539     TPMS_CONTEXT_DATA* value,
   3540     std::string* value_bytes);
   3541 
   3542 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_CONTEXT_DATA(
   3543     const TPM2B_CONTEXT_DATA& value,
   3544     std::string* buffer);
   3545 
   3546 TRUNKS_EXPORT TPM_RC Parse_TPM2B_CONTEXT_DATA(
   3547     std::string* buffer,
   3548     TPM2B_CONTEXT_DATA* value,
   3549     std::string* value_bytes);
   3550 
   3551 TRUNKS_EXPORT TPM2B_CONTEXT_DATA Make_TPM2B_CONTEXT_DATA(
   3552     const std::string& bytes);
   3553 TRUNKS_EXPORT std::string StringFrom_TPM2B_CONTEXT_DATA(
   3554     const TPM2B_CONTEXT_DATA& tpm2b);
   3555 
   3556 TRUNKS_EXPORT TPM_RC Serialize_TPMS_CONTEXT(
   3557     const TPMS_CONTEXT& value,
   3558     std::string* buffer);
   3559 
   3560 TRUNKS_EXPORT TPM_RC Parse_TPMS_CONTEXT(
   3561     std::string* buffer,
   3562     TPMS_CONTEXT* value,
   3563     std::string* value_bytes);
   3564 
   3565 TRUNKS_EXPORT TPM_RC Serialize_TPMS_CREATION_DATA(
   3566     const TPMS_CREATION_DATA& value,
   3567     std::string* buffer);
   3568 
   3569 TRUNKS_EXPORT TPM_RC Parse_TPMS_CREATION_DATA(
   3570     std::string* buffer,
   3571     TPMS_CREATION_DATA* value,
   3572     std::string* value_bytes);
   3573 
   3574 TRUNKS_EXPORT TPM_RC Serialize_TPM2B_CREATION_DATA(
   3575     const TPM2B_CREATION_DATA& value,
   3576     std::string* buffer);
   3577 
   3578 TRUNKS_EXPORT TPM_RC Parse_TPM2B_CREATION_DATA(
   3579     std::string* buffer,
   3580     TPM2B_CREATION_DATA* value,
   3581     std::string* value_bytes);
   3582 
   3583 TRUNKS_EXPORT TPM2B_CREATION_DATA Make_TPM2B_CREATION_DATA(
   3584     const TPMS_CREATION_DATA& inner);
   3585 
   3586 TRUNKS_EXPORT TPM_RC Serialize_TPMU_HA(
   3587     const TPMU_HA& value,
   3588     std::string* buffer);
   3589 
   3590 TRUNKS_EXPORT TPM_RC Parse_TPMU_HA(
   3591     std::string* buffer,
   3592     TPMU_HA* value,
   3593     std::string* value_bytes);
   3594 
   3595 TRUNKS_EXPORT TPM_RC Serialize_TPMU_NAME(
   3596     const TPMU_NAME& value,
   3597     std::string* buffer);
   3598 
   3599 TRUNKS_EXPORT TPM_RC Parse_TPMU_NAME(
   3600     std::string* buffer,
   3601     TPMU_NAME* value,
   3602     std::string* value_bytes);
   3603 
   3604 TRUNKS_EXPORT TPM_RC Serialize_TPMU_CAPABILITIES(
   3605     const TPMU_CAPABILITIES& value,
   3606     std::string* buffer);
   3607 
   3608 TRUNKS_EXPORT TPM_RC Parse_TPMU_CAPABILITIES(
   3609     std::string* buffer,
   3610     TPMU_CAPABILITIES* value,
   3611     std::string* value_bytes);
   3612 
   3613 TRUNKS_EXPORT TPM_RC Serialize_TPMU_ATTEST(
   3614     const TPMU_ATTEST& value,
   3615     std::string* buffer);
   3616 
   3617 TRUNKS_EXPORT TPM_RC Parse_TPMU_ATTEST(
   3618     std::string* buffer,
   3619     TPMU_ATTEST* value,
   3620     std::string* value_bytes);
   3621 
   3622 TRUNKS_EXPORT TPM_RC Serialize_TPMU_SYM_KEY_BITS(
   3623     const TPMU_SYM_KEY_BITS& value,
   3624     std::string* buffer);
   3625 
   3626 TRUNKS_EXPORT TPM_RC Parse_TPMU_SYM_KEY_BITS(
   3627     std::string* buffer,
   3628     TPMU_SYM_KEY_BITS* value,
   3629     std::string* value_bytes);
   3630 
   3631 TRUNKS_EXPORT TPM_RC Serialize_TPMU_SYM_MODE(
   3632     const TPMU_SYM_MODE& value,
   3633     std::string* buffer);
   3634 
   3635 TRUNKS_EXPORT TPM_RC Parse_TPMU_SYM_MODE(
   3636     std::string* buffer,
   3637     TPMU_SYM_MODE* value,
   3638     std::string* value_bytes);
   3639 
   3640 TRUNKS_EXPORT TPM_RC Serialize_TPMU_SCHEME_KEYEDHASH(
   3641     const TPMU_SCHEME_KEYEDHASH& value,
   3642     std::string* buffer);
   3643 
   3644 TRUNKS_EXPORT TPM_RC Parse_TPMU_SCHEME_KEYEDHASH(
   3645     std::string* buffer,
   3646     TPMU_SCHEME_KEYEDHASH* value,
   3647     std::string* value_bytes);
   3648 
   3649 TRUNKS_EXPORT TPM_RC Serialize_TPMU_SIG_SCHEME(
   3650     const TPMU_SIG_SCHEME& value,
   3651     std::string* buffer);
   3652 
   3653 TRUNKS_EXPORT TPM_RC Parse_TPMU_SIG_SCHEME(
   3654     std::string* buffer,
   3655     TPMU_SIG_SCHEME* value,
   3656     std::string* value_bytes);
   3657 
   3658 TRUNKS_EXPORT TPM_RC Serialize_TPMU_KDF_SCHEME(
   3659     const TPMU_KDF_SCHEME& value,
   3660     std::string* buffer);
   3661 
   3662 TRUNKS_EXPORT TPM_RC Parse_TPMU_KDF_SCHEME(
   3663     std::string* buffer,
   3664     TPMU_KDF_SCHEME* value,
   3665     std::string* value_bytes);
   3666 
   3667 TRUNKS_EXPORT TPM_RC Serialize_TPMU_ASYM_SCHEME(
   3668     const TPMU_ASYM_SCHEME& value,
   3669     std::string* buffer);
   3670 
   3671 TRUNKS_EXPORT TPM_RC Parse_TPMU_ASYM_SCHEME(
   3672     std::string* buffer,
   3673     TPMU_ASYM_SCHEME* value,
   3674     std::string* value_bytes);
   3675 
   3676 TRUNKS_EXPORT TPM_RC Serialize_TPMU_SIGNATURE(
   3677     const TPMU_SIGNATURE& value,
   3678     std::string* buffer);
   3679 
   3680 TRUNKS_EXPORT TPM_RC Parse_TPMU_SIGNATURE(
   3681     std::string* buffer,
   3682     TPMU_SIGNATURE* value,
   3683     std::string* value_bytes);
   3684 
   3685 TRUNKS_EXPORT TPM_RC Serialize_TPMU_ENCRYPTED_SECRET(
   3686     const TPMU_ENCRYPTED_SECRET& value,
   3687     std::string* buffer);
   3688 
   3689 TRUNKS_EXPORT TPM_RC Parse_TPMU_ENCRYPTED_SECRET(
   3690     std::string* buffer,
   3691     TPMU_ENCRYPTED_SECRET* value,
   3692     std::string* value_bytes);
   3693 
   3694 TRUNKS_EXPORT TPM_RC Serialize_TPMU_PUBLIC_ID(
   3695     const TPMU_PUBLIC_ID& value,
   3696     std::string* buffer);
   3697 
   3698 TRUNKS_EXPORT TPM_RC Parse_TPMU_PUBLIC_ID(
   3699     std::string* buffer,
   3700     TPMU_PUBLIC_ID* value,
   3701     std::string* value_bytes);
   3702 
   3703 TRUNKS_EXPORT TPM_RC Serialize_TPMU_PUBLIC_PARMS(
   3704     const TPMU_PUBLIC_PARMS& value,
   3705     std::string* buffer);
   3706 
   3707 TRUNKS_EXPORT TPM_RC Parse_TPMU_PUBLIC_PARMS(
   3708     std::string* buffer,
   3709     TPMU_PUBLIC_PARMS* value,
   3710     std::string* value_bytes);
   3711 
   3712 TRUNKS_EXPORT TPM_RC Serialize_TPMU_SENSITIVE_COMPOSITE(
   3713     const TPMU_SENSITIVE_COMPOSITE& value,
   3714     std::string* buffer);
   3715 
   3716 TRUNKS_EXPORT TPM_RC Parse_TPMU_SENSITIVE_COMPOSITE(
   3717     std::string* buffer,
   3718     TPMU_SENSITIVE_COMPOSITE* value,
   3719     std::string* value_bytes);
   3720 
   3721 TRUNKS_EXPORT TPM_RC Serialize_TPMU_SYM_DETAILS(
   3722     const TPMU_SYM_DETAILS& value,
   3723     std::string* buffer);
   3724 
   3725 TRUNKS_EXPORT TPM_RC Parse_TPMU_SYM_DETAILS(
   3726     std::string* buffer,
   3727     TPMU_SYM_DETAILS* value,
   3728     std::string* value_bytes);
   3729 
   3730 class TRUNKS_EXPORT Tpm {
   3731  public:
   3732   // Does not take ownership of |transceiver|.
   3733   explicit Tpm(CommandTransceiver* transceiver) : transceiver_(transceiver) {}
   3734   virtual ~Tpm() {}
   3735 
   3736   typedef base::Callback<void(
   3737       TPM_RC response_code)> StartupResponse;
   3738   static TPM_RC SerializeCommand_Startup(
   3739       const TPM_SU& startup_type,
   3740       std::string* serialized_command,
   3741       AuthorizationDelegate* authorization_delegate);
   3742   static TPM_RC ParseResponse_Startup(
   3743       const std::string& response,
   3744       AuthorizationDelegate* authorization_delegate);
   3745   virtual void Startup(
   3746       const TPM_SU& startup_type,
   3747       AuthorizationDelegate* authorization_delegate,
   3748       const StartupResponse& callback);
   3749   virtual TPM_RC StartupSync(
   3750       const TPM_SU& startup_type,
   3751       AuthorizationDelegate* authorization_delegate);
   3752   typedef base::Callback<void(
   3753       TPM_RC response_code)> ShutdownResponse;
   3754   static TPM_RC SerializeCommand_Shutdown(
   3755       const TPM_SU& shutdown_type,
   3756       std::string* serialized_command,
   3757       AuthorizationDelegate* authorization_delegate);
   3758   static TPM_RC ParseResponse_Shutdown(
   3759       const std::string& response,
   3760       AuthorizationDelegate* authorization_delegate);
   3761   virtual void Shutdown(
   3762       const TPM_SU& shutdown_type,
   3763       AuthorizationDelegate* authorization_delegate,
   3764       const ShutdownResponse& callback);
   3765   virtual TPM_RC ShutdownSync(
   3766       const TPM_SU& shutdown_type,
   3767       AuthorizationDelegate* authorization_delegate);
   3768   typedef base::Callback<void(
   3769       TPM_RC response_code)> SelfTestResponse;
   3770   static TPM_RC SerializeCommand_SelfTest(
   3771       const TPMI_YES_NO& full_test,
   3772       std::string* serialized_command,
   3773       AuthorizationDelegate* authorization_delegate);
   3774   static TPM_RC ParseResponse_SelfTest(
   3775       const std::string& response,
   3776       AuthorizationDelegate* authorization_delegate);
   3777   virtual void SelfTest(
   3778       const TPMI_YES_NO& full_test,
   3779       AuthorizationDelegate* authorization_delegate,
   3780       const SelfTestResponse& callback);
   3781   virtual TPM_RC SelfTestSync(
   3782       const TPMI_YES_NO& full_test,
   3783       AuthorizationDelegate* authorization_delegate);
   3784   typedef base::Callback<void(
   3785       TPM_RC response_code,
   3786       const TPML_ALG& to_do_list)> IncrementalSelfTestResponse;
   3787   static TPM_RC SerializeCommand_IncrementalSelfTest(
   3788       const TPML_ALG& to_test,
   3789       std::string* serialized_command,
   3790       AuthorizationDelegate* authorization_delegate);
   3791   static TPM_RC ParseResponse_IncrementalSelfTest(
   3792       const std::string& response,
   3793       TPML_ALG* to_do_list,
   3794       AuthorizationDelegate* authorization_delegate);
   3795   virtual void IncrementalSelfTest(
   3796       const TPML_ALG& to_test,
   3797       AuthorizationDelegate* authorization_delegate,
   3798       const IncrementalSelfTestResponse& callback);
   3799   virtual TPM_RC IncrementalSelfTestSync(
   3800       const TPML_ALG& to_test,
   3801       TPML_ALG* to_do_list,
   3802       AuthorizationDelegate* authorization_delegate);
   3803   typedef base::Callback<void(
   3804       TPM_RC response_code,
   3805       const TPM2B_MAX_BUFFER& out_data,
   3806       const TPM_RC& test_result)> GetTestResultResponse;
   3807   static TPM_RC SerializeCommand_GetTestResult(
   3808       std::string* serialized_command,
   3809       AuthorizationDelegate* authorization_delegate);
   3810   static TPM_RC ParseResponse_GetTestResult(
   3811       const std::string& response,
   3812       TPM2B_MAX_BUFFER* out_data,
   3813       TPM_RC* test_result,
   3814       AuthorizationDelegate* authorization_delegate);
   3815   virtual void GetTestResult(
   3816       AuthorizationDelegate* authorization_delegate,
   3817       const GetTestResultResponse& callback);
   3818   virtual TPM_RC GetTestResultSync(
   3819       TPM2B_MAX_BUFFER* out_data,
   3820       TPM_RC* test_result,
   3821       AuthorizationDelegate* authorization_delegate);
   3822   typedef base::Callback<void(
   3823       TPM_RC response_code,
   3824       const TPMI_SH_AUTH_SESSION& session_handle,
   3825       const TPM2B_NONCE& nonce_tpm)> StartAuthSessionResponse;
   3826   static TPM_RC SerializeCommand_StartAuthSession(
   3827       const TPMI_DH_OBJECT& tpm_key,
   3828       const std::string& tpm_key_name,
   3829       const TPMI_DH_ENTITY& bind,
   3830       const std::string& bind_name,
   3831       const TPM2B_NONCE& nonce_caller,
   3832       const TPM2B_ENCRYPTED_SECRET& encrypted_salt,
   3833       const TPM_SE& session_type,
   3834       const TPMT_SYM_DEF& symmetric,
   3835       const TPMI_ALG_HASH& auth_hash,
   3836       std::string* serialized_command,
   3837       AuthorizationDelegate* authorization_delegate);
   3838   static TPM_RC ParseResponse_StartAuthSession(
   3839       const std::string& response,
   3840       TPMI_SH_AUTH_SESSION* session_handle,
   3841       TPM2B_NONCE* nonce_tpm,
   3842       AuthorizationDelegate* authorization_delegate);
   3843   virtual void StartAuthSession(
   3844       const TPMI_DH_OBJECT& tpm_key,
   3845       const std::string& tpm_key_name,
   3846       const TPMI_DH_ENTITY& bind,
   3847       const std::string& bind_name,
   3848       const TPM2B_NONCE& nonce_caller,
   3849       const TPM2B_ENCRYPTED_SECRET& encrypted_salt,
   3850       const TPM_SE& session_type,
   3851       const TPMT_SYM_DEF& symmetric,
   3852       const TPMI_ALG_HASH& auth_hash,
   3853       AuthorizationDelegate* authorization_delegate,
   3854       const StartAuthSessionResponse& callback);
   3855   virtual TPM_RC StartAuthSessionSync(
   3856       const TPMI_DH_OBJECT& tpm_key,
   3857       const std::string& tpm_key_name,
   3858       const TPMI_DH_ENTITY& bind,
   3859       const std::string& bind_name,
   3860       const TPM2B_NONCE& nonce_caller,
   3861       const TPM2B_ENCRYPTED_SECRET& encrypted_salt,
   3862       const TPM_SE& session_type,
   3863       const TPMT_SYM_DEF& symmetric,
   3864       const TPMI_ALG_HASH& auth_hash,
   3865       TPMI_SH_AUTH_SESSION* session_handle,
   3866       TPM2B_NONCE* nonce_tpm,
   3867       AuthorizationDelegate* authorization_delegate);
   3868   typedef base::Callback<void(
   3869       TPM_RC response_code)> PolicyRestartResponse;
   3870   static TPM_RC SerializeCommand_PolicyRestart(
   3871       const TPMI_SH_POLICY& session_handle,
   3872       const std::string& session_handle_name,
   3873       std::string* serialized_command,
   3874       AuthorizationDelegate* authorization_delegate);
   3875   static TPM_RC ParseResponse_PolicyRestart(
   3876       const std::string& response,
   3877       AuthorizationDelegate* authorization_delegate);
   3878   virtual void PolicyRestart(
   3879       const TPMI_SH_POLICY& session_handle,
   3880       const std::string& session_handle_name,
   3881       AuthorizationDelegate* authorization_delegate,
   3882       const PolicyRestartResponse& callback);
   3883   virtual TPM_RC PolicyRestartSync(
   3884       const TPMI_SH_POLICY& session_handle,
   3885       const std::string& session_handle_name,
   3886       AuthorizationDelegate* authorization_delegate);
   3887   typedef base::Callback<void(
   3888       TPM_RC response_code,
   3889       const TPM2B_PRIVATE& out_private,
   3890       const TPM2B_PUBLIC& out_public,
   3891       const TPM2B_CREATION_DATA& creation_data,
   3892       const TPM2B_DIGEST& creation_hash,
   3893       const TPMT_TK_CREATION& creation_ticket)> CreateResponse;
   3894   static TPM_RC SerializeCommand_Create(
   3895       const TPMI_DH_OBJECT& parent_handle,
   3896       const std::string& parent_handle_name,
   3897       const TPM2B_SENSITIVE_CREATE& in_sensitive,
   3898       const TPM2B_PUBLIC& in_public,
   3899       const TPM2B_DATA& outside_info,
   3900       const TPML_PCR_SELECTION& creation_pcr,
   3901       std::string* serialized_command,
   3902       AuthorizationDelegate* authorization_delegate);
   3903   static TPM_RC ParseResponse_Create(
   3904       const std::string& response,
   3905       TPM2B_PRIVATE* out_private,
   3906       TPM2B_PUBLIC* out_public,
   3907       TPM2B_CREATION_DATA* creation_data,
   3908       TPM2B_DIGEST* creation_hash,
   3909       TPMT_TK_CREATION* creation_ticket,
   3910       AuthorizationDelegate* authorization_delegate);
   3911   virtual void Create(
   3912       const TPMI_DH_OBJECT& parent_handle,
   3913       const std::string& parent_handle_name,
   3914       const TPM2B_SENSITIVE_CREATE& in_sensitive,
   3915       const TPM2B_PUBLIC& in_public,
   3916       const TPM2B_DATA& outside_info,
   3917       const TPML_PCR_SELECTION& creation_pcr,
   3918       AuthorizationDelegate* authorization_delegate,
   3919       const CreateResponse& callback);
   3920   virtual TPM_RC CreateSync(
   3921       const TPMI_DH_OBJECT& parent_handle,
   3922       const std::string& parent_handle_name,
   3923       const TPM2B_SENSITIVE_CREATE& in_sensitive,
   3924       const TPM2B_PUBLIC& in_public,
   3925       const TPM2B_DATA& outside_info,
   3926       const TPML_PCR_SELECTION& creation_pcr,
   3927       TPM2B_PRIVATE* out_private,
   3928       TPM2B_PUBLIC* out_public,
   3929       TPM2B_CREATION_DATA* creation_data,
   3930       TPM2B_DIGEST* creation_hash,
   3931       TPMT_TK_CREATION* creation_ticket,
   3932       AuthorizationDelegate* authorization_delegate);
   3933   typedef base::Callback<void(
   3934       TPM_RC response_code,
   3935       const TPM_HANDLE& object_handle,
   3936       const TPM2B_NAME& name)> LoadResponse;
   3937   static TPM_RC SerializeCommand_Load(
   3938       const TPMI_DH_OBJECT& parent_handle,
   3939       const std::string& parent_handle_name,
   3940       const TPM2B_PRIVATE& in_private,
   3941       const TPM2B_PUBLIC& in_public,
   3942       std::string* serialized_command,
   3943       AuthorizationDelegate* authorization_delegate);
   3944   static TPM_RC ParseResponse_Load(
   3945       const std::string& response,
   3946       TPM_HANDLE* object_handle,
   3947       TPM2B_NAME* name,
   3948       AuthorizationDelegate* authorization_delegate);
   3949   virtual void Load(
   3950       const TPMI_DH_OBJECT& parent_handle,
   3951       const std::string& parent_handle_name,
   3952       const TPM2B_PRIVATE& in_private,
   3953       const TPM2B_PUBLIC& in_public,
   3954       AuthorizationDelegate* authorization_delegate,
   3955       const LoadResponse& callback);
   3956   virtual TPM_RC LoadSync(
   3957       const TPMI_DH_OBJECT& parent_handle,
   3958       const std::string& parent_handle_name,
   3959       const TPM2B_PRIVATE& in_private,
   3960       const TPM2B_PUBLIC& in_public,
   3961       TPM_HANDLE* object_handle,
   3962       TPM2B_NAME* name,
   3963       AuthorizationDelegate* authorization_delegate);
   3964   typedef base::Callback<void(
   3965       TPM_RC response_code,
   3966       const TPM_HANDLE& object_handle,
   3967       const TPM2B_NAME& name)> LoadExternalResponse;
   3968   static TPM_RC SerializeCommand_LoadExternal(
   3969       const TPM2B_SENSITIVE& in_private,
   3970       const TPM2B_PUBLIC& in_public,
   3971       const TPMI_RH_HIERARCHY& hierarchy,
   3972       std::string* serialized_command,
   3973       AuthorizationDelegate* authorization_delegate);
   3974   static TPM_RC ParseResponse_LoadExternal(
   3975       const std::string& response,
   3976       TPM_HANDLE* object_handle,
   3977       TPM2B_NAME* name,
   3978       AuthorizationDelegate* authorization_delegate);
   3979   virtual void LoadExternal(
   3980       const TPM2B_SENSITIVE& in_private,
   3981       const TPM2B_PUBLIC& in_public,
   3982       const TPMI_RH_HIERARCHY& hierarchy,
   3983       AuthorizationDelegate* authorization_delegate,
   3984       const LoadExternalResponse& callback);
   3985   virtual TPM_RC LoadExternalSync(
   3986       const TPM2B_SENSITIVE& in_private,
   3987       const TPM2B_PUBLIC& in_public,
   3988       const TPMI_RH_HIERARCHY& hierarchy,
   3989       TPM_HANDLE* object_handle,
   3990       TPM2B_NAME* name,
   3991       AuthorizationDelegate* authorization_delegate);
   3992   typedef base::Callback<void(
   3993       TPM_RC response_code,
   3994       const TPM2B_PUBLIC& out_public,
   3995       const TPM2B_NAME& name,
   3996       const TPM2B_NAME& qualified_name)> ReadPublicResponse;
   3997   static TPM_RC SerializeCommand_ReadPublic(
   3998       const TPMI_DH_OBJECT& object_handle,
   3999       const std::string& object_handle_name,
   4000       std::string* serialized_command,
   4001       AuthorizationDelegate* authorization_delegate);
   4002   static TPM_RC ParseResponse_ReadPublic(
   4003       const std::string& response,
   4004       TPM2B_PUBLIC* out_public,
   4005       TPM2B_NAME* name,
   4006       TPM2B_NAME* qualified_name,
   4007       AuthorizationDelegate* authorization_delegate);
   4008   virtual void ReadPublic(
   4009       const TPMI_DH_OBJECT& object_handle,
   4010       const std::string& object_handle_name,
   4011       AuthorizationDelegate* authorization_delegate,
   4012       const ReadPublicResponse& callback);
   4013   virtual TPM_RC ReadPublicSync(
   4014       const TPMI_DH_OBJECT& object_handle,
   4015       const std::string& object_handle_name,
   4016       TPM2B_PUBLIC* out_public,
   4017       TPM2B_NAME* name,
   4018       TPM2B_NAME* qualified_name,
   4019       AuthorizationDelegate* authorization_delegate);
   4020   typedef base::Callback<void(
   4021       TPM_RC response_code,
   4022       const TPM2B_DIGEST& cert_info)> ActivateCredentialResponse;
   4023   static TPM_RC SerializeCommand_ActivateCredential(
   4024       const TPMI_DH_OBJECT& activate_handle,
   4025       const std::string& activate_handle_name,
   4026       const TPMI_DH_OBJECT& key_handle,
   4027       const std::string& key_handle_name,
   4028       const TPM2B_ID_OBJECT& credential_blob,
   4029       const TPM2B_ENCRYPTED_SECRET& secret,
   4030       std::string* serialized_command,
   4031       AuthorizationDelegate* authorization_delegate);
   4032   static TPM_RC ParseResponse_ActivateCredential(
   4033       const std::string& response,
   4034       TPM2B_DIGEST* cert_info,
   4035       AuthorizationDelegate* authorization_delegate);
   4036   virtual void ActivateCredential(
   4037       const TPMI_DH_OBJECT& activate_handle,
   4038       const std::string& activate_handle_name,
   4039       const TPMI_DH_OBJECT& key_handle,
   4040       const std::string& key_handle_name,
   4041       const TPM2B_ID_OBJECT& credential_blob,
   4042       const TPM2B_ENCRYPTED_SECRET& secret,
   4043       AuthorizationDelegate* authorization_delegate,
   4044       const ActivateCredentialResponse& callback);
   4045   virtual TPM_RC ActivateCredentialSync(
   4046       const TPMI_DH_OBJECT& activate_handle,
   4047       const std::string& activate_handle_name,
   4048       const TPMI_DH_OBJECT& key_handle,
   4049       const std::string& key_handle_name,
   4050       const TPM2B_ID_OBJECT& credential_blob,
   4051       const TPM2B_ENCRYPTED_SECRET& secret,
   4052       TPM2B_DIGEST* cert_info,
   4053       AuthorizationDelegate* authorization_delegate);
   4054   typedef base::Callback<void(
   4055       TPM_RC response_code,
   4056       const TPM2B_ID_OBJECT& credential_blob,
   4057       const TPM2B_ENCRYPTED_SECRET& secret)> MakeCredentialResponse;
   4058   static TPM_RC SerializeCommand_MakeCredential(
   4059       const TPMI_DH_OBJECT& handle,
   4060       const std::string& handle_name,
   4061       const TPM2B_DIGEST& credential,
   4062       const TPM2B_NAME& object_name,
   4063       std::string* serialized_command,
   4064       AuthorizationDelegate* authorization_delegate);
   4065   static TPM_RC ParseResponse_MakeCredential(
   4066       const std::string& response,
   4067       TPM2B_ID_OBJECT* credential_blob,
   4068       TPM2B_ENCRYPTED_SECRET* secret,
   4069       AuthorizationDelegate* authorization_delegate);
   4070   virtual void MakeCredential(
   4071       const TPMI_DH_OBJECT& handle,
   4072       const std::string& handle_name,
   4073       const TPM2B_DIGEST& credential,
   4074       const TPM2B_NAME& object_name,
   4075       AuthorizationDelegate* authorization_delegate,
   4076       const MakeCredentialResponse& callback);
   4077   virtual TPM_RC MakeCredentialSync(
   4078       const TPMI_DH_OBJECT& handle,
   4079       const std::string& handle_name,
   4080       const TPM2B_DIGEST& credential,
   4081       const TPM2B_NAME& object_name,
   4082       TPM2B_ID_OBJECT* credential_blob,
   4083       TPM2B_ENCRYPTED_SECRET* secret,
   4084       AuthorizationDelegate* authorization_delegate);
   4085   typedef base::Callback<void(
   4086       TPM_RC response_code,
   4087       const TPM2B_SENSITIVE_DATA& out_data)> UnsealResponse;
   4088   static TPM_RC SerializeCommand_Unseal(
   4089       const TPMI_DH_OBJECT& item_handle,
   4090       const std::string& item_handle_name,
   4091       std::string* serialized_command,
   4092       AuthorizationDelegate* authorization_delegate);
   4093   static TPM_RC ParseResponse_Unseal(
   4094       const std::string& response,
   4095       TPM2B_SENSITIVE_DATA* out_data,
   4096       AuthorizationDelegate* authorization_delegate);
   4097   virtual void Unseal(
   4098       const TPMI_DH_OBJECT& item_handle,
   4099       const std::string& item_handle_name,
   4100       AuthorizationDelegate* authorization_delegate,
   4101       const UnsealResponse& callback);
   4102   virtual TPM_RC UnsealSync(
   4103       const TPMI_DH_OBJECT& item_handle,
   4104       const std::string& item_handle_name,
   4105       TPM2B_SENSITIVE_DATA* out_data,
   4106       AuthorizationDelegate* authorization_delegate);
   4107   typedef base::Callback<void(
   4108       TPM_RC response_code,
   4109       const TPM2B_PRIVATE& out_private)> ObjectChangeAuthResponse;
   4110   static TPM_RC SerializeCommand_ObjectChangeAuth(
   4111       const TPMI_DH_OBJECT& object_handle,
   4112       const std::string& object_handle_name,
   4113       const TPMI_DH_OBJECT& parent_handle,
   4114       const std::string& parent_handle_name,
   4115       const TPM2B_AUTH& new_auth,
   4116       std::string* serialized_command,
   4117       AuthorizationDelegate* authorization_delegate);
   4118   static TPM_RC ParseResponse_ObjectChangeAuth(
   4119       const std::string& response,
   4120       TPM2B_PRIVATE* out_private,
   4121       AuthorizationDelegate* authorization_delegate);
   4122   virtual void ObjectChangeAuth(
   4123       const TPMI_DH_OBJECT& object_handle,
   4124       const std::string& object_handle_name,
   4125       const TPMI_DH_OBJECT& parent_handle,
   4126       const std::string& parent_handle_name,
   4127       const TPM2B_AUTH& new_auth,
   4128       AuthorizationDelegate* authorization_delegate,
   4129       const ObjectChangeAuthResponse& callback);
   4130   virtual TPM_RC ObjectChangeAuthSync(
   4131       const TPMI_DH_OBJECT& object_handle,
   4132       const std::string& object_handle_name,
   4133       const TPMI_DH_OBJECT& parent_handle,
   4134       const std::string& parent_handle_name,
   4135       const TPM2B_AUTH& new_auth,
   4136       TPM2B_PRIVATE* out_private,
   4137       AuthorizationDelegate* authorization_delegate);
   4138   typedef base::Callback<void(
   4139       TPM_RC response_code,
   4140       const TPM2B_DATA& encryption_key_out,
   4141       const TPM2B_PRIVATE& duplicate,
   4142       const TPM2B_ENCRYPTED_SECRET& out_sym_seed)> DuplicateResponse;
   4143   static TPM_RC SerializeCommand_Duplicate(
   4144       const TPMI_DH_OBJECT& object_handle,
   4145       const std::string& object_handle_name,
   4146       const TPMI_DH_OBJECT& new_parent_handle,
   4147       const std::string& new_parent_handle_name,
   4148       const TPM2B_DATA& encryption_key_in,
   4149       const TPMT_SYM_DEF_OBJECT& symmetric_alg,
   4150       std::string* serialized_command,
   4151       AuthorizationDelegate* authorization_delegate);
   4152   static TPM_RC ParseResponse_Duplicate(
   4153       const std::string& response,
   4154       TPM2B_DATA* encryption_key_out,
   4155       TPM2B_PRIVATE* duplicate,
   4156       TPM2B_ENCRYPTED_SECRET* out_sym_seed,
   4157       AuthorizationDelegate* authorization_delegate);
   4158   virtual void Duplicate(
   4159       const TPMI_DH_OBJECT& object_handle,
   4160       const std::string& object_handle_name,
   4161       const TPMI_DH_OBJECT& new_parent_handle,
   4162       const std::string& new_parent_handle_name,
   4163       const TPM2B_DATA& encryption_key_in,
   4164       const TPMT_SYM_DEF_OBJECT& symmetric_alg,
   4165       AuthorizationDelegate* authorization_delegate,
   4166       const DuplicateResponse& callback);
   4167   virtual TPM_RC DuplicateSync(
   4168       const TPMI_DH_OBJECT& object_handle,
   4169       const std::string& object_handle_name,
   4170       const TPMI_DH_OBJECT& new_parent_handle,
   4171       const std::string& new_parent_handle_name,
   4172       const TPM2B_DATA& encryption_key_in,
   4173       const TPMT_SYM_DEF_OBJECT& symmetric_alg,
   4174       TPM2B_DATA* encryption_key_out,
   4175       TPM2B_PRIVATE* duplicate,
   4176       TPM2B_ENCRYPTED_SECRET* out_sym_seed,
   4177       AuthorizationDelegate* authorization_delegate);
   4178   typedef base::Callback<void(
   4179       TPM_RC response_code,
   4180       const TPM2B_PRIVATE& out_duplicate,
   4181       const TPM2B_ENCRYPTED_SECRET& out_sym_seed)> RewrapResponse;
   4182   static TPM_RC SerializeCommand_Rewrap(
   4183       const TPMI_DH_OBJECT& old_parent,
   4184       const std::string& old_parent_name,
   4185       const TPMI_DH_OBJECT& new_parent,
   4186       const std::string& new_parent_name,
   4187       const TPM2B_PRIVATE& in_duplicate,
   4188       const TPM2B_NAME& name,
   4189       const TPM2B_ENCRYPTED_SECRET& in_sym_seed,
   4190       std::string* serialized_command,
   4191       AuthorizationDelegate* authorization_delegate);
   4192   static TPM_RC ParseResponse_Rewrap(
   4193       const std::string& response,
   4194       TPM2B_PRIVATE* out_duplicate,
   4195       TPM2B_ENCRYPTED_SECRET* out_sym_seed,
   4196       AuthorizationDelegate* authorization_delegate);
   4197   virtual void Rewrap(
   4198       const TPMI_DH_OBJECT& old_parent,
   4199       const std::string& old_parent_name,
   4200       const TPMI_DH_OBJECT& new_parent,
   4201       const std::string& new_parent_name,
   4202       const TPM2B_PRIVATE& in_duplicate,
   4203       const TPM2B_NAME& name,
   4204       const TPM2B_ENCRYPTED_SECRET& in_sym_seed,
   4205       AuthorizationDelegate* authorization_delegate,
   4206       const RewrapResponse& callback);
   4207   virtual TPM_RC RewrapSync(
   4208       const TPMI_DH_OBJECT& old_parent,
   4209       const std::string& old_parent_name,
   4210       const TPMI_DH_OBJECT& new_parent,
   4211       const std::string& new_parent_name,
   4212       const TPM2B_PRIVATE& in_duplicate,
   4213       const TPM2B_NAME& name,
   4214       const TPM2B_ENCRYPTED_SECRET& in_sym_seed,
   4215       TPM2B_PRIVATE* out_duplicate,
   4216       TPM2B_ENCRYPTED_SECRET* out_sym_seed,
   4217       AuthorizationDelegate* authorization_delegate);
   4218   typedef base::Callback<void(
   4219       TPM_RC response_code,
   4220       const TPM2B_PRIVATE& out_private)> ImportResponse;
   4221   static TPM_RC SerializeCommand_Import(
   4222       const TPMI_DH_OBJECT& parent_handle,
   4223       const std::string& parent_handle_name,
   4224       const TPM2B_DATA& encryption_key,
   4225       const TPM2B_PUBLIC& object_public,
   4226       const TPM2B_PRIVATE& duplicate,
   4227       const TPM2B_ENCRYPTED_SECRET& in_sym_seed,
   4228       const TPMT_SYM_DEF_OBJECT& symmetric_alg,
   4229       std::string* serialized_command,
   4230       AuthorizationDelegate* authorization_delegate);
   4231   static TPM_RC ParseResponse_Import(
   4232       const std::string& response,
   4233       TPM2B_PRIVATE* out_private,
   4234       AuthorizationDelegate* authorization_delegate);
   4235   virtual void Import(
   4236       const TPMI_DH_OBJECT& parent_handle,
   4237       const std::string& parent_handle_name,
   4238       const TPM2B_DATA& encryption_key,
   4239       const TPM2B_PUBLIC& object_public,
   4240       const TPM2B_PRIVATE& duplicate,
   4241       const TPM2B_ENCRYPTED_SECRET& in_sym_seed,
   4242       const TPMT_SYM_DEF_OBJECT& symmetric_alg,
   4243       AuthorizationDelegate* authorization_delegate,
   4244       const ImportResponse& callback);
   4245   virtual TPM_RC ImportSync(
   4246       const TPMI_DH_OBJECT& parent_handle,
   4247       const std::string& parent_handle_name,
   4248       const TPM2B_DATA& encryption_key,
   4249       const TPM2B_PUBLIC& object_public,
   4250       const TPM2B_PRIVATE& duplicate,
   4251       const TPM2B_ENCRYPTED_SECRET& in_sym_seed,
   4252       const TPMT_SYM_DEF_OBJECT& symmetric_alg,
   4253       TPM2B_PRIVATE* out_private,
   4254       AuthorizationDelegate* authorization_delegate);
   4255   typedef base::Callback<void(
   4256       TPM_RC response_code,
   4257       const TPM2B_PUBLIC_KEY_RSA& out_data)> RSA_EncryptResponse;
   4258   static TPM_RC SerializeCommand_RSA_Encrypt(
   4259       const TPMI_DH_OBJECT& key_handle,
   4260       const std::string& key_handle_name,
   4261       const TPM2B_PUBLIC_KEY_RSA& message,
   4262       const TPMT_RSA_DECRYPT& in_scheme,
   4263       const TPM2B_DATA& label,
   4264       std::string* serialized_command,
   4265       AuthorizationDelegate* authorization_delegate);
   4266   static TPM_RC ParseResponse_RSA_Encrypt(
   4267       const std::string& response,
   4268       TPM2B_PUBLIC_KEY_RSA* out_data,
   4269       AuthorizationDelegate* authorization_delegate);
   4270   virtual void RSA_Encrypt(
   4271       const TPMI_DH_OBJECT& key_handle,
   4272       const std::string& key_handle_name,
   4273       const TPM2B_PUBLIC_KEY_RSA& message,
   4274       const TPMT_RSA_DECRYPT& in_scheme,
   4275       const TPM2B_DATA& label,
   4276       AuthorizationDelegate* authorization_delegate,
   4277       const RSA_EncryptResponse& callback);
   4278   virtual TPM_RC RSA_EncryptSync(
   4279       const TPMI_DH_OBJECT& key_handle,
   4280       const std::string& key_handle_name,
   4281       const TPM2B_PUBLIC_KEY_RSA& message,
   4282       const TPMT_RSA_DECRYPT& in_scheme,
   4283       const TPM2B_DATA& label,
   4284       TPM2B_PUBLIC_KEY_RSA* out_data,
   4285       AuthorizationDelegate* authorization_delegate);
   4286   typedef base::Callback<void(
   4287       TPM_RC response_code,
   4288       const TPM2B_PUBLIC_KEY_RSA& message)> RSA_DecryptResponse;
   4289   static TPM_RC SerializeCommand_RSA_Decrypt(
   4290       const TPMI_DH_OBJECT& key_handle,
   4291       const std::string& key_handle_name,
   4292       const TPM2B_PUBLIC_KEY_RSA& cipher_text,
   4293       const TPMT_RSA_DECRYPT& in_scheme,
   4294       const TPM2B_DATA& label,
   4295       std::string* serialized_command,
   4296       AuthorizationDelegate* authorization_delegate);
   4297   static TPM_RC ParseResponse_RSA_Decrypt(
   4298       const std::string& response,
   4299       TPM2B_PUBLIC_KEY_RSA* message,
   4300       AuthorizationDelegate* authorization_delegate);
   4301   virtual void RSA_Decrypt(
   4302       const TPMI_DH_OBJECT& key_handle,
   4303       const std::string& key_handle_name,
   4304       const TPM2B_PUBLIC_KEY_RSA& cipher_text,
   4305       const TPMT_RSA_DECRYPT& in_scheme,
   4306       const TPM2B_DATA& label,
   4307       AuthorizationDelegate* authorization_delegate,
   4308       const RSA_DecryptResponse& callback);
   4309   virtual TPM_RC RSA_DecryptSync(
   4310       const TPMI_DH_OBJECT& key_handle,
   4311       const std::string& key_handle_name,
   4312       const TPM2B_PUBLIC_KEY_RSA& cipher_text,
   4313       const TPMT_RSA_DECRYPT& in_scheme,
   4314       const TPM2B_DATA& label,
   4315       TPM2B_PUBLIC_KEY_RSA* message,
   4316       AuthorizationDelegate* authorization_delegate);
   4317   typedef base::Callback<void(
   4318       TPM_RC response_code,
   4319       const TPM2B_ECC_POINT& z_point,
   4320       const TPM2B_ECC_POINT& pub_point)> ECDH_KeyGenResponse;
   4321   static TPM_RC SerializeCommand_ECDH_KeyGen(
   4322       const TPMI_DH_OBJECT& key_handle,
   4323       const std::string& key_handle_name,
   4324       std::string* serialized_command,
   4325       AuthorizationDelegate* authorization_delegate);
   4326   static TPM_RC ParseResponse_ECDH_KeyGen(
   4327       const std::string& response,
   4328       TPM2B_ECC_POINT* z_point,
   4329       TPM2B_ECC_POINT* pub_point,
   4330       AuthorizationDelegate* authorization_delegate);
   4331   virtual void ECDH_KeyGen(
   4332       const TPMI_DH_OBJECT& key_handle,
   4333       const std::string& key_handle_name,
   4334       AuthorizationDelegate* authorization_delegate,
   4335       const ECDH_KeyGenResponse& callback);
   4336   virtual TPM_RC ECDH_KeyGenSync(
   4337       const TPMI_DH_OBJECT& key_handle,
   4338       const std::string& key_handle_name,
   4339       TPM2B_ECC_POINT* z_point,
   4340       TPM2B_ECC_POINT* pub_point,
   4341       AuthorizationDelegate* authorization_delegate);
   4342   typedef base::Callback<void(
   4343       TPM_RC response_code,
   4344       const TPM2B_ECC_POINT& out_point)> ECDH_ZGenResponse;
   4345   static TPM_RC SerializeCommand_ECDH_ZGen(
   4346       const TPMI_DH_OBJECT& key_handle,
   4347       const std::string& key_handle_name,
   4348       const TPM2B_ECC_POINT& in_point,
   4349       std::string* serialized_command,
   4350       AuthorizationDelegate* authorization_delegate);
   4351   static TPM_RC ParseResponse_ECDH_ZGen(
   4352       const std::string& response,
   4353       TPM2B_ECC_POINT* out_point,
   4354       AuthorizationDelegate* authorization_delegate);
   4355   virtual void ECDH_ZGen(
   4356       const TPMI_DH_OBJECT& key_handle,
   4357       const std::string& key_handle_name,
   4358       const TPM2B_ECC_POINT& in_point,
   4359       AuthorizationDelegate* authorization_delegate,
   4360       const ECDH_ZGenResponse& callback);
   4361   virtual TPM_RC ECDH_ZGenSync(
   4362       const TPMI_DH_OBJECT& key_handle,
   4363       const std::string& key_handle_name,
   4364       const TPM2B_ECC_POINT& in_point,
   4365       TPM2B_ECC_POINT* out_point,
   4366       AuthorizationDelegate* authorization_delegate);
   4367   typedef base::Callback<void(
   4368       TPM_RC response_code,
   4369       const TPMS_ALGORITHM_DETAIL_ECC& parameters)> ECC_ParametersResponse;
   4370   static TPM_RC SerializeCommand_ECC_Parameters(
   4371       const TPMI_ECC_CURVE& curve_id,
   4372       std::string* serialized_command,
   4373       AuthorizationDelegate* authorization_delegate);
   4374   static TPM_RC ParseResponse_ECC_Parameters(
   4375       const std::string& response,
   4376       TPMS_ALGORITHM_DETAIL_ECC* parameters,
   4377       AuthorizationDelegate* authorization_delegate);
   4378   virtual void ECC_Parameters(
   4379       const TPMI_ECC_CURVE& curve_id,
   4380       AuthorizationDelegate* authorization_delegate,
   4381       const ECC_ParametersResponse& callback);
   4382   virtual TPM_RC ECC_ParametersSync(
   4383       const TPMI_ECC_CURVE& curve_id,
   4384       TPMS_ALGORITHM_DETAIL_ECC* parameters,
   4385       AuthorizationDelegate* authorization_delegate);
   4386   typedef base::Callback<void(
   4387       TPM_RC response_code,
   4388       const TPM2B_ECC_POINT& out_z1,
   4389       const TPM2B_ECC_POINT& out_z2)> ZGen_2PhaseResponse;
   4390   static TPM_RC SerializeCommand_ZGen_2Phase(
   4391       const TPMI_DH_OBJECT& key_a,
   4392       const std::string& key_a_name,
   4393       const TPM2B_ECC_POINT& in_qs_b,
   4394       const TPM2B_ECC_POINT& in_qe_b,
   4395       const TPMI_ECC_KEY_EXCHANGE& in_scheme,
   4396       const UINT16& counter,
   4397       std::string* serialized_command,
   4398       AuthorizationDelegate* authorization_delegate);
   4399   static TPM_RC ParseResponse_ZGen_2Phase(
   4400       const std::string& response,
   4401       TPM2B_ECC_POINT* out_z1,
   4402       TPM2B_ECC_POINT* out_z2,
   4403       AuthorizationDelegate* authorization_delegate);
   4404   virtual void ZGen_2Phase(
   4405       const TPMI_DH_OBJECT& key_a,
   4406       const std::string& key_a_name,
   4407       const TPM2B_ECC_POINT& in_qs_b,
   4408       const TPM2B_ECC_POINT& in_qe_b,
   4409       const TPMI_ECC_KEY_EXCHANGE& in_scheme,
   4410       const UINT16& counter,
   4411       AuthorizationDelegate* authorization_delegate,
   4412       const ZGen_2PhaseResponse& callback);
   4413   virtual TPM_RC ZGen_2PhaseSync(
   4414       const TPMI_DH_OBJECT& key_a,
   4415       const std::string& key_a_name,
   4416       const TPM2B_ECC_POINT& in_qs_b,
   4417       const TPM2B_ECC_POINT& in_qe_b,
   4418       const TPMI_ECC_KEY_EXCHANGE& in_scheme,
   4419       const UINT16& counter,
   4420       TPM2B_ECC_POINT* out_z1,
   4421       TPM2B_ECC_POINT* out_z2,
   4422       AuthorizationDelegate* authorization_delegate);
   4423   typedef base::Callback<void(
   4424       TPM_RC response_code,
   4425       const TPM2B_MAX_BUFFER& out_data,
   4426       const TPM2B_IV& iv_out)> EncryptDecryptResponse;
   4427   static TPM_RC SerializeCommand_EncryptDecrypt(
   4428       const TPMI_DH_OBJECT& key_handle,
   4429       const std::string& key_handle_name,
   4430       const TPMI_YES_NO& decrypt,
   4431       const TPMI_ALG_SYM_MODE& mode,
   4432       const TPM2B_IV& iv_in,
   4433       const TPM2B_MAX_BUFFER& in_data,
   4434       std::string* serialized_command,
   4435       AuthorizationDelegate* authorization_delegate);
   4436   static TPM_RC ParseResponse_EncryptDecrypt(
   4437       const std::string& response,
   4438       TPM2B_MAX_BUFFER* out_data,
   4439       TPM2B_IV* iv_out,
   4440       AuthorizationDelegate* authorization_delegate);
   4441   virtual void EncryptDecrypt(
   4442       const TPMI_DH_OBJECT& key_handle,
   4443       const std::string& key_handle_name,
   4444       const TPMI_YES_NO& decrypt,
   4445       const TPMI_ALG_SYM_MODE& mode,
   4446       const TPM2B_IV& iv_in,
   4447       const TPM2B_MAX_BUFFER& in_data,
   4448       AuthorizationDelegate* authorization_delegate,
   4449       const EncryptDecryptResponse& callback);
   4450   virtual TPM_RC EncryptDecryptSync(
   4451       const TPMI_DH_OBJECT& key_handle,
   4452       const std::string& key_handle_name,
   4453       const TPMI_YES_NO& decrypt,
   4454       const TPMI_ALG_SYM_MODE& mode,
   4455       const TPM2B_IV& iv_in,
   4456       const TPM2B_MAX_BUFFER& in_data,
   4457       TPM2B_MAX_BUFFER* out_data,
   4458       TPM2B_IV* iv_out,
   4459       AuthorizationDelegate* authorization_delegate);
   4460   typedef base::Callback<void(
   4461       TPM_RC response_code,
   4462       const TPM2B_DIGEST& out_hash,
   4463       const TPMT_TK_HASHCHECK& validation)> HashResponse;
   4464   static TPM_RC SerializeCommand_Hash(
   4465       const TPM2B_MAX_BUFFER& data,
   4466       const TPMI_ALG_HASH& hash_alg,
   4467       const TPMI_RH_HIERARCHY& hierarchy,
   4468       std::string* serialized_command,
   4469       AuthorizationDelegate* authorization_delegate);
   4470   static TPM_RC ParseResponse_Hash(
   4471       const std::string& response,
   4472       TPM2B_DIGEST* out_hash,
   4473       TPMT_TK_HASHCHECK* validation,
   4474       AuthorizationDelegate* authorization_delegate);
   4475   virtual void Hash(
   4476       const TPM2B_MAX_BUFFER& data,
   4477       const TPMI_ALG_HASH& hash_alg,
   4478       const TPMI_RH_HIERARCHY& hierarchy,
   4479       AuthorizationDelegate* authorization_delegate,
   4480       const HashResponse& callback);
   4481   virtual TPM_RC HashSync(
   4482       const TPM2B_MAX_BUFFER& data,
   4483       const TPMI_ALG_HASH& hash_alg,
   4484       const TPMI_RH_HIERARCHY& hierarchy,
   4485       TPM2B_DIGEST* out_hash,
   4486       TPMT_TK_HASHCHECK* validation,
   4487       AuthorizationDelegate* authorization_delegate);
   4488   typedef base::Callback<void(
   4489       TPM_RC response_code,
   4490       const TPM2B_DIGEST& out_hmac)> HMACResponse;
   4491   static TPM_RC SerializeCommand_HMAC(
   4492       const TPMI_DH_OBJECT& handle,
   4493       const std::string& handle_name,
   4494       const TPM2B_MAX_BUFFER& buffer,
   4495       const TPMI_ALG_HASH& hash_alg,
   4496       std::string* serialized_command,
   4497       AuthorizationDelegate* authorization_delegate);
   4498   static TPM_RC ParseResponse_HMAC(
   4499       const std::string& response,
   4500       TPM2B_DIGEST* out_hmac,
   4501       AuthorizationDelegate* authorization_delegate);
   4502   virtual void HMAC(
   4503       const TPMI_DH_OBJECT& handle,
   4504       const std::string& handle_name,
   4505       const TPM2B_MAX_BUFFER& buffer,
   4506       const TPMI_ALG_HASH& hash_alg,
   4507       AuthorizationDelegate* authorization_delegate,
   4508       const HMACResponse& callback);
   4509   virtual TPM_RC HMACSync(
   4510       const TPMI_DH_OBJECT& handle,
   4511       const std::string& handle_name,
   4512       const TPM2B_MAX_BUFFER& buffer,
   4513       const TPMI_ALG_HASH& hash_alg,
   4514       TPM2B_DIGEST* out_hmac,
   4515       AuthorizationDelegate* authorization_delegate);
   4516   typedef base::Callback<void(
   4517       TPM_RC response_code,
   4518       const TPM2B_DIGEST& random_bytes)> GetRandomResponse;
   4519   static TPM_RC SerializeCommand_GetRandom(
   4520       const UINT16& bytes_requested,
   4521       std::string* serialized_command,
   4522       AuthorizationDelegate* authorization_delegate);
   4523   static TPM_RC ParseResponse_GetRandom(
   4524       const std::string& response,
   4525       TPM2B_DIGEST* random_bytes,
   4526       AuthorizationDelegate* authorization_delegate);
   4527   virtual void GetRandom(
   4528       const UINT16& bytes_requested,
   4529       AuthorizationDelegate* authorization_delegate,
   4530       const GetRandomResponse& callback);
   4531   virtual TPM_RC GetRandomSync(
   4532       const UINT16& bytes_requested,
   4533       TPM2B_DIGEST* random_bytes,
   4534       AuthorizationDelegate* authorization_delegate);
   4535   typedef base::Callback<void(
   4536       TPM_RC response_code)> StirRandomResponse;
   4537   static TPM_RC SerializeCommand_StirRandom(
   4538       const TPM2B_SENSITIVE_DATA& in_data,
   4539       std::string* serialized_command,
   4540       AuthorizationDelegate* authorization_delegate);
   4541   static TPM_RC ParseResponse_StirRandom(
   4542       const std::string& response,
   4543       AuthorizationDelegate* authorization_delegate);
   4544   virtual void StirRandom(
   4545       const TPM2B_SENSITIVE_DATA& in_data,
   4546       AuthorizationDelegate* authorization_delegate,
   4547       const StirRandomResponse& callback);
   4548   virtual TPM_RC StirRandomSync(
   4549       const TPM2B_SENSITIVE_DATA& in_data,
   4550       AuthorizationDelegate* authorization_delegate);
   4551   typedef base::Callback<void(
   4552       TPM_RC response_code,
   4553       const TPMI_DH_OBJECT& sequence_handle)> HMAC_StartResponse;
   4554   static TPM_RC SerializeCommand_HMAC_Start(
   4555       const TPMI_DH_OBJECT& handle,
   4556       const std::string& handle_name,
   4557       const TPM2B_AUTH& auth,
   4558       const TPMI_ALG_HASH& hash_alg,
   4559       std::string* serialized_command,
   4560       AuthorizationDelegate* authorization_delegate);
   4561   static TPM_RC ParseResponse_HMAC_Start(
   4562       const std::string& response,
   4563       TPMI_DH_OBJECT* sequence_handle,
   4564       AuthorizationDelegate* authorization_delegate);
   4565   virtual void HMAC_Start(
   4566       const TPMI_DH_OBJECT& handle,
   4567       const std::string& handle_name,
   4568       const TPM2B_AUTH& auth,
   4569       const TPMI_ALG_HASH& hash_alg,
   4570       AuthorizationDelegate* authorization_delegate,
   4571       const HMAC_StartResponse& callback);
   4572   virtual TPM_RC HMAC_StartSync(
   4573       const TPMI_DH_OBJECT& handle,
   4574       const std::string& handle_name,
   4575       const TPM2B_AUTH& auth,
   4576       const TPMI_ALG_HASH& hash_alg,
   4577       TPMI_DH_OBJECT* sequence_handle,
   4578       AuthorizationDelegate* authorization_delegate);
   4579   typedef base::Callback<void(
   4580       TPM_RC response_code,
   4581       const TPMI_DH_OBJECT& sequence_handle)> HashSequenceStartResponse;
   4582   static TPM_RC SerializeCommand_HashSequenceStart(
   4583       const TPM2B_AUTH& auth,
   4584       const TPMI_ALG_HASH& hash_alg,
   4585       std::string* serialized_command,
   4586       AuthorizationDelegate* authorization_delegate);
   4587   static TPM_RC ParseResponse_HashSequenceStart(
   4588       const std::string& response,
   4589       TPMI_DH_OBJECT* sequence_handle,
   4590       AuthorizationDelegate* authorization_delegate);
   4591   virtual void HashSequenceStart(
   4592       const TPM2B_AUTH& auth,
   4593       const TPMI_ALG_HASH& hash_alg,
   4594       AuthorizationDelegate* authorization_delegate,
   4595       const HashSequenceStartResponse& callback);
   4596   virtual TPM_RC HashSequenceStartSync(
   4597       const TPM2B_AUTH& auth,
   4598       const TPMI_ALG_HASH& hash_alg,
   4599       TPMI_DH_OBJECT* sequence_handle,
   4600       AuthorizationDelegate* authorization_delegate);
   4601   typedef base::Callback<void(
   4602       TPM_RC response_code)> SequenceUpdateResponse;
   4603   static TPM_RC SerializeCommand_SequenceUpdate(
   4604       const TPMI_DH_OBJECT& sequence_handle,
   4605       const std::string& sequence_handle_name,
   4606       const TPM2B_MAX_BUFFER& buffer,
   4607       std::string* serialized_command,
   4608       AuthorizationDelegate* authorization_delegate);
   4609   static TPM_RC ParseResponse_SequenceUpdate(
   4610       const std::string& response,
   4611       AuthorizationDelegate* authorization_delegate);
   4612   virtual void SequenceUpdate(
   4613       const TPMI_DH_OBJECT& sequence_handle,
   4614       const std::string& sequence_handle_name,
   4615       const TPM2B_MAX_BUFFER& buffer,
   4616       AuthorizationDelegate* authorization_delegate,
   4617       const SequenceUpdateResponse& callback);
   4618   virtual TPM_RC SequenceUpdateSync(
   4619       const TPMI_DH_OBJECT& sequence_handle,
   4620       const std::string& sequence_handle_name,
   4621       const TPM2B_MAX_BUFFER& buffer,
   4622       AuthorizationDelegate* authorization_delegate);
   4623   typedef base::Callback<void(
   4624       TPM_RC response_code,
   4625       const TPM2B_DIGEST& result,
   4626       const TPMT_TK_HASHCHECK& validation)> SequenceCompleteResponse;
   4627   static TPM_RC SerializeCommand_SequenceComplete(
   4628       const TPMI_DH_OBJECT& sequence_handle,
   4629       const std::string& sequence_handle_name,
   4630       const TPM2B_MAX_BUFFER& buffer,
   4631       const TPMI_RH_HIERARCHY& hierarchy,
   4632       std::string* serialized_command,
   4633       AuthorizationDelegate* authorization_delegate);
   4634   static TPM_RC ParseResponse_SequenceComplete(
   4635       const std::string& response,
   4636       TPM2B_DIGEST* result,
   4637       TPMT_TK_HASHCHECK* validation,
   4638       AuthorizationDelegate* authorization_delegate);
   4639   virtual void SequenceComplete(
   4640       const TPMI_DH_OBJECT& sequence_handle,
   4641       const std::string& sequence_handle_name,
   4642       const TPM2B_MAX_BUFFER& buffer,
   4643       const TPMI_RH_HIERARCHY& hierarchy,
   4644       AuthorizationDelegate* authorization_delegate,
   4645       const SequenceCompleteResponse& callback);
   4646   virtual TPM_RC SequenceCompleteSync(
   4647       const TPMI_DH_OBJECT& sequence_handle,
   4648       const std::string& sequence_handle_name,
   4649       const TPM2B_MAX_BUFFER& buffer,
   4650       const TPMI_RH_HIERARCHY& hierarchy,
   4651       TPM2B_DIGEST* result,
   4652       TPMT_TK_HASHCHECK* validation,
   4653       AuthorizationDelegate* authorization_delegate);
   4654   typedef base::Callback<void(
   4655       TPM_RC response_code,
   4656       const TPML_DIGEST_VALUES& results)> EventSequenceCompleteResponse;
   4657   static TPM_RC SerializeCommand_EventSequenceComplete(
   4658       const TPMI_DH_PCR& pcr_handle,
   4659       const std::string& pcr_handle_name,
   4660       const TPMI_DH_OBJECT& sequence_handle,
   4661       const std::string& sequence_handle_name,
   4662       const TPM2B_MAX_BUFFER& buffer,
   4663       std::string* serialized_command,
   4664       AuthorizationDelegate* authorization_delegate);
   4665   static TPM_RC ParseResponse_EventSequenceComplete(
   4666       const std::string& response,
   4667       TPML_DIGEST_VALUES* results,
   4668       AuthorizationDelegate* authorization_delegate);
   4669   virtual void EventSequenceComplete(
   4670       const TPMI_DH_PCR& pcr_handle,
   4671       const std::string& pcr_handle_name,
   4672       const TPMI_DH_OBJECT& sequence_handle,
   4673       const std::string& sequence_handle_name,
   4674       const TPM2B_MAX_BUFFER& buffer,
   4675       AuthorizationDelegate* authorization_delegate,
   4676       const EventSequenceCompleteResponse& callback);
   4677   virtual TPM_RC EventSequenceCompleteSync(
   4678       const TPMI_DH_PCR& pcr_handle,
   4679       const std::string& pcr_handle_name,
   4680       const TPMI_DH_OBJECT& sequence_handle,
   4681       const std::string& sequence_handle_name,
   4682       const TPM2B_MAX_BUFFER& buffer,
   4683       TPML_DIGEST_VALUES* results,
   4684       AuthorizationDelegate* authorization_delegate);
   4685   typedef base::Callback<void(
   4686       TPM_RC response_code,
   4687       const TPM2B_ATTEST& certify_info,
   4688       const TPMT_SIGNATURE& signature)> CertifyResponse;
   4689   static TPM_RC SerializeCommand_Certify(
   4690       const TPMI_DH_OBJECT& object_handle,
   4691       const std::string& object_handle_name,
   4692       const TPMI_DH_OBJECT& sign_handle,
   4693       const std::string& sign_handle_name,
   4694       const TPM2B_DATA& qualifying_data,
   4695       const TPMT_SIG_SCHEME& in_scheme,
   4696       std::string* serialized_command,
   4697       AuthorizationDelegate* authorization_delegate);
   4698   static TPM_RC ParseResponse_Certify(
   4699       const std::string& response,
   4700       TPM2B_ATTEST* certify_info,
   4701       TPMT_SIGNATURE* signature,
   4702       AuthorizationDelegate* authorization_delegate);
   4703   virtual void Certify(
   4704       const TPMI_DH_OBJECT& object_handle,
   4705       const std::string& object_handle_name,
   4706       const TPMI_DH_OBJECT& sign_handle,
   4707       const std::string& sign_handle_name,
   4708       const TPM2B_DATA& qualifying_data,
   4709       const TPMT_SIG_SCHEME& in_scheme,
   4710       AuthorizationDelegate* authorization_delegate,
   4711       const CertifyResponse& callback);
   4712   virtual TPM_RC CertifySync(
   4713       const TPMI_DH_OBJECT& object_handle,
   4714       const std::string& object_handle_name,
   4715       const TPMI_DH_OBJECT& sign_handle,
   4716       const std::string& sign_handle_name,
   4717       const TPM2B_DATA& qualifying_data,
   4718       const TPMT_SIG_SCHEME& in_scheme,
   4719       TPM2B_ATTEST* certify_info,
   4720       TPMT_SIGNATURE* signature,
   4721       AuthorizationDelegate* authorization_delegate);
   4722   typedef base::Callback<void(
   4723       TPM_RC response_code,
   4724       const TPM2B_ATTEST& certify_info,
   4725       const TPMT_SIGNATURE& signature)> CertifyCreationResponse;
   4726   static TPM_RC SerializeCommand_CertifyCreation(
   4727       const TPMI_DH_OBJECT& sign_handle,
   4728       const std::string& sign_handle_name,
   4729       const TPMI_DH_OBJECT& object_handle,
   4730       const std::string& object_handle_name,
   4731       const TPM2B_DATA& qualifying_data,
   4732       const TPM2B_DIGEST& creation_hash,
   4733       const TPMT_SIG_SCHEME& in_scheme,
   4734       const TPMT_TK_CREATION& creation_ticket,
   4735       std::string* serialized_command,
   4736       AuthorizationDelegate* authorization_delegate);
   4737   static TPM_RC ParseResponse_CertifyCreation(
   4738       const std::string& response,
   4739       TPM2B_ATTEST* certify_info,
   4740       TPMT_SIGNATURE* signature,
   4741       AuthorizationDelegate* authorization_delegate);
   4742   virtual void CertifyCreation(
   4743       const TPMI_DH_OBJECT& sign_handle,
   4744       const std::string& sign_handle_name,
   4745       const TPMI_DH_OBJECT& object_handle,
   4746       const std::string& object_handle_name,
   4747       const TPM2B_DATA& qualifying_data,
   4748       const TPM2B_DIGEST& creation_hash,
   4749       const TPMT_SIG_SCHEME& in_scheme,
   4750       const TPMT_TK_CREATION& creation_ticket,
   4751       AuthorizationDelegate* authorization_delegate,
   4752       const CertifyCreationResponse& callback);
   4753   virtual TPM_RC CertifyCreationSync(
   4754       const TPMI_DH_OBJECT& sign_handle,
   4755       const std::string& sign_handle_name,
   4756       const TPMI_DH_OBJECT& object_handle,
   4757       const std::string& object_handle_name,
   4758       const TPM2B_DATA& qualifying_data,
   4759       const TPM2B_DIGEST& creation_hash,
   4760       const TPMT_SIG_SCHEME& in_scheme,
   4761       const TPMT_TK_CREATION& creation_ticket,
   4762       TPM2B_ATTEST* certify_info,
   4763       TPMT_SIGNATURE* signature,
   4764       AuthorizationDelegate* authorization_delegate);
   4765   typedef base::Callback<void(
   4766       TPM_RC response_code,
   4767       const TPM2B_ATTEST& quoted,
   4768       const TPMT_SIGNATURE& signature)> QuoteResponse;
   4769   static TPM_RC SerializeCommand_Quote(
   4770       const TPMI_DH_OBJECT& sign_handle,
   4771       const std::string& sign_handle_name,
   4772       const TPM2B_DATA& qualifying_data,
   4773       const TPMT_SIG_SCHEME& in_scheme,
   4774       const TPML_PCR_SELECTION& pcrselect,
   4775       std::string* serialized_command,
   4776       AuthorizationDelegate* authorization_delegate);
   4777   static TPM_RC ParseResponse_Quote(
   4778       const std::string& response,
   4779       TPM2B_ATTEST* quoted,
   4780       TPMT_SIGNATURE* signature,
   4781       AuthorizationDelegate* authorization_delegate);
   4782   virtual void Quote(
   4783       const TPMI_DH_OBJECT& sign_handle,
   4784       const std::string& sign_handle_name,
   4785       const TPM2B_DATA& qualifying_data,
   4786       const TPMT_SIG_SCHEME& in_scheme,
   4787       const TPML_PCR_SELECTION& pcrselect,
   4788       AuthorizationDelegate* authorization_delegate,
   4789       const QuoteResponse& callback);
   4790   virtual TPM_RC QuoteSync(
   4791       const TPMI_DH_OBJECT& sign_handle,
   4792       const std::string& sign_handle_name,
   4793       const TPM2B_DATA& qualifying_data,
   4794       const TPMT_SIG_SCHEME& in_scheme,
   4795       const TPML_PCR_SELECTION& pcrselect,
   4796       TPM2B_ATTEST* quoted,
   4797       TPMT_SIGNATURE* signature,
   4798       AuthorizationDelegate* authorization_delegate);
   4799   typedef base::Callback<void(
   4800       TPM_RC response_code,
   4801       const TPM2B_ATTEST& audit_info,
   4802       const TPMT_SIGNATURE& signature)> GetSessionAuditDigestResponse;
   4803   static TPM_RC SerializeCommand_GetSessionAuditDigest(
   4804       const TPMI_RH_ENDORSEMENT& privacy_admin_handle,
   4805       const std::string& privacy_admin_handle_name,
   4806       const TPMI_DH_OBJECT& sign_handle,
   4807       const std::string& sign_handle_name,
   4808       const TPMI_SH_HMAC& session_handle,
   4809       const std::string& session_handle_name,
   4810       const TPM2B_DATA& qualifying_data,
   4811       const TPMT_SIG_SCHEME& in_scheme,
   4812       std::string* serialized_command,
   4813       AuthorizationDelegate* authorization_delegate);
   4814   static TPM_RC ParseResponse_GetSessionAuditDigest(
   4815       const std::string& response,
   4816       TPM2B_ATTEST* audit_info,
   4817       TPMT_SIGNATURE* signature,
   4818       AuthorizationDelegate* authorization_delegate);
   4819   virtual void GetSessionAuditDigest(
   4820       const TPMI_RH_ENDORSEMENT& privacy_admin_handle,
   4821       const std::string& privacy_admin_handle_name,
   4822       const TPMI_DH_OBJECT& sign_handle,
   4823       const std::string& sign_handle_name,
   4824       const TPMI_SH_HMAC& session_handle,
   4825       const std::string& session_handle_name,
   4826       const TPM2B_DATA& qualifying_data,
   4827       const TPMT_SIG_SCHEME& in_scheme,
   4828       AuthorizationDelegate* authorization_delegate,
   4829       const GetSessionAuditDigestResponse& callback);
   4830   virtual TPM_RC GetSessionAuditDigestSync(
   4831       const TPMI_RH_ENDORSEMENT& privacy_admin_handle,
   4832       const std::string& privacy_admin_handle_name,
   4833       const TPMI_DH_OBJECT& sign_handle,
   4834       const std::string& sign_handle_name,
   4835       const TPMI_SH_HMAC& session_handle,
   4836       const std::string& session_handle_name,
   4837       const TPM2B_DATA& qualifying_data,
   4838       const TPMT_SIG_SCHEME& in_scheme,
   4839       TPM2B_ATTEST* audit_info,
   4840       TPMT_SIGNATURE* signature,
   4841       AuthorizationDelegate* authorization_delegate);
   4842   typedef base::Callback<void(
   4843       TPM_RC response_code,
   4844       const TPM2B_ATTEST& audit_info,
   4845       const TPMT_SIGNATURE& signature)> GetCommandAuditDigestResponse;
   4846   static TPM_RC SerializeCommand_GetCommandAuditDigest(
   4847       const TPMI_RH_ENDORSEMENT& privacy_handle,
   4848       const std::string& privacy_handle_name,
   4849       const TPMI_DH_OBJECT& sign_handle,
   4850       const std::string& sign_handle_name,
   4851       const TPM2B_DATA& qualifying_data,
   4852       const TPMT_SIG_SCHEME& in_scheme,
   4853       std::string* serialized_command,
   4854       AuthorizationDelegate* authorization_delegate);
   4855   static TPM_RC ParseResponse_GetCommandAuditDigest(
   4856       const std::string& response,
   4857       TPM2B_ATTEST* audit_info,
   4858       TPMT_SIGNATURE* signature,
   4859       AuthorizationDelegate* authorization_delegate);
   4860   virtual void GetCommandAuditDigest(
   4861       const TPMI_RH_ENDORSEMENT& privacy_handle,
   4862       const std::string& privacy_handle_name,
   4863       const TPMI_DH_OBJECT& sign_handle,
   4864       const std::string& sign_handle_name,
   4865       const TPM2B_DATA& qualifying_data,
   4866       const TPMT_SIG_SCHEME& in_scheme,
   4867       AuthorizationDelegate* authorization_delegate,
   4868       const GetCommandAuditDigestResponse& callback);
   4869   virtual TPM_RC GetCommandAuditDigestSync(
   4870       const TPMI_RH_ENDORSEMENT& privacy_handle,
   4871       const std::string& privacy_handle_name,
   4872       const TPMI_DH_OBJECT& sign_handle,
   4873       const std::string& sign_handle_name,
   4874       const TPM2B_DATA& qualifying_data,
   4875       const TPMT_SIG_SCHEME& in_scheme,
   4876       TPM2B_ATTEST* audit_info,
   4877       TPMT_SIGNATURE* signature,
   4878       AuthorizationDelegate* authorization_delegate);
   4879   typedef base::Callback<void(
   4880       TPM_RC response_code,
   4881       const TPM2B_ATTEST& time_info,
   4882       const TPMT_SIGNATURE& signature)> GetTimeResponse;
   4883   static TPM_RC SerializeCommand_GetTime(
   4884       const TPMI_RH_ENDORSEMENT& privacy_admin_handle,
   4885       const std::string& privacy_admin_handle_name,
   4886       const TPMI_DH_OBJECT& sign_handle,
   4887       const std::string& sign_handle_name,
   4888       const TPM2B_DATA& qualifying_data,
   4889       const TPMT_SIG_SCHEME& in_scheme,
   4890       std::string* serialized_command,
   4891       AuthorizationDelegate* authorization_delegate);
   4892   static TPM_RC ParseResponse_GetTime(
   4893       const std::string& response,
   4894       TPM2B_ATTEST* time_info,
   4895       TPMT_SIGNATURE* signature,
   4896       AuthorizationDelegate* authorization_delegate);
   4897   virtual void GetTime(
   4898       const TPMI_RH_ENDORSEMENT& privacy_admin_handle,
   4899       const std::string& privacy_admin_handle_name,
   4900       const TPMI_DH_OBJECT& sign_handle,
   4901       const std::string& sign_handle_name,
   4902       const TPM2B_DATA& qualifying_data,
   4903       const TPMT_SIG_SCHEME& in_scheme,
   4904       AuthorizationDelegate* authorization_delegate,
   4905       const GetTimeResponse& callback);
   4906   virtual TPM_RC GetTimeSync(
   4907       const TPMI_RH_ENDORSEMENT& privacy_admin_handle,
   4908       const std::string& privacy_admin_handle_name,
   4909       const TPMI_DH_OBJECT& sign_handle,
   4910       const std::string& sign_handle_name,
   4911       const TPM2B_DATA& qualifying_data,
   4912       const TPMT_SIG_SCHEME& in_scheme,
   4913       TPM2B_ATTEST* time_info,
   4914       TPMT_SIGNATURE* signature,
   4915       AuthorizationDelegate* authorization_delegate);
   4916   typedef base::Callback<void(
   4917       TPM_RC response_code,
   4918       const UINT32& param_size_out,
   4919       const TPM2B_ECC_POINT& k,
   4920       const TPM2B_ECC_POINT& l,
   4921       const TPM2B_ECC_POINT& e,
   4922       const UINT16& counter)> CommitResponse;
   4923   static TPM_RC SerializeCommand_Commit(
   4924       const TPMI_DH_OBJECT& sign_handle,
   4925       const std::string& sign_handle_name,
   4926       const UINT32& param_size,
   4927       const TPM2B_ECC_POINT& p1,
   4928       const TPM2B_SENSITIVE_DATA& s2,
   4929       const TPM2B_ECC_PARAMETER& y2,
   4930       std::string* serialized_command,
   4931       AuthorizationDelegate* authorization_delegate);
   4932   static TPM_RC ParseResponse_Commit(
   4933       const std::string& response,
   4934       UINT32* param_size_out,
   4935       TPM2B_ECC_POINT* k,
   4936       TPM2B_ECC_POINT* l,
   4937       TPM2B_ECC_POINT* e,
   4938       UINT16* counter,
   4939       AuthorizationDelegate* authorization_delegate);
   4940   virtual void Commit(
   4941       const TPMI_DH_OBJECT& sign_handle,
   4942       const std::string& sign_handle_name,
   4943       const UINT32& param_size,
   4944       const TPM2B_ECC_POINT& p1,
   4945       const TPM2B_SENSITIVE_DATA& s2,
   4946       const TPM2B_ECC_PARAMETER& y2,
   4947       AuthorizationDelegate* authorization_delegate,
   4948       const CommitResponse& callback);
   4949   virtual TPM_RC CommitSync(
   4950       const TPMI_DH_OBJECT& sign_handle,
   4951       const std::string& sign_handle_name,
   4952       const UINT32& param_size,
   4953       const TPM2B_ECC_POINT& p1,
   4954       const TPM2B_SENSITIVE_DATA& s2,
   4955       const TPM2B_ECC_PARAMETER& y2,
   4956       UINT32* param_size_out,
   4957       TPM2B_ECC_POINT* k,
   4958       TPM2B_ECC_POINT* l,
   4959       TPM2B_ECC_POINT* e,
   4960       UINT16* counter,
   4961       AuthorizationDelegate* authorization_delegate);
   4962   typedef base::Callback<void(
   4963       TPM_RC response_code,
   4964       const UINT32& param_size_out,
   4965       const TPM2B_ECC_POINT& q,
   4966       const UINT16& counter)> EC_EphemeralResponse;
   4967   static TPM_RC SerializeCommand_EC_Ephemeral(
   4968       const UINT32& param_size,
   4969       const TPMI_ECC_CURVE& curve_id,
   4970       std::string* serialized_command,
   4971       AuthorizationDelegate* authorization_delegate);
   4972   static TPM_RC ParseResponse_EC_Ephemeral(
   4973       const std::string& response,
   4974       UINT32* param_size_out,
   4975       TPM2B_ECC_POINT* q,
   4976       UINT16* counter,
   4977       AuthorizationDelegate* authorization_delegate);
   4978   virtual void EC_Ephemeral(
   4979       const UINT32& param_size,
   4980       const TPMI_ECC_CURVE& curve_id,
   4981       AuthorizationDelegate* authorization_delegate,
   4982       const EC_EphemeralResponse& callback);
   4983   virtual TPM_RC EC_EphemeralSync(
   4984       const UINT32& param_size,
   4985       const TPMI_ECC_CURVE& curve_id,
   4986       UINT32* param_size_out,
   4987       TPM2B_ECC_POINT* q,
   4988       UINT16* counter,
   4989       AuthorizationDelegate* authorization_delegate);
   4990   typedef base::Callback<void(
   4991       TPM_RC response_code,
   4992       const TPMT_TK_VERIFIED& validation)> VerifySignatureResponse;
   4993   static TPM_RC SerializeCommand_VerifySignature(
   4994       const TPMI_DH_OBJECT& key_handle,
   4995       const std::string& key_handle_name,
   4996       const TPM2B_DIGEST& digest,
   4997       const TPMT_SIGNATURE& signature,
   4998       std::string* serialized_command,
   4999       AuthorizationDelegate* authorization_delegate);
   5000   static TPM_RC ParseResponse_VerifySignature(
   5001       const std::string& response,
   5002       TPMT_TK_VERIFIED* validation,
   5003       AuthorizationDelegate* authorization_delegate);
   5004   virtual void VerifySignature(
   5005       const TPMI_DH_OBJECT& key_handle,
   5006       const std::string& key_handle_name,
   5007       const TPM2B_DIGEST& digest,
   5008       const TPMT_SIGNATURE& signature,
   5009       AuthorizationDelegate* authorization_delegate,
   5010       const VerifySignatureResponse& callback);
   5011   virtual TPM_RC VerifySignatureSync(
   5012       const TPMI_DH_OBJECT& key_handle,
   5013       const std::string& key_handle_name,
   5014       const TPM2B_DIGEST& digest,
   5015       const TPMT_SIGNATURE& signature,
   5016       TPMT_TK_VERIFIED* validation,
   5017       AuthorizationDelegate* authorization_delegate);
   5018   typedef base::Callback<void(
   5019       TPM_RC response_code,
   5020       const TPMT_SIGNATURE& signature)> SignResponse;
   5021   static TPM_RC SerializeCommand_Sign(
   5022       const TPMI_DH_OBJECT& key_handle,
   5023       const std::string& key_handle_name,
   5024       const TPM2B_DIGEST& digest,
   5025       const TPMT_SIG_SCHEME& in_scheme,
   5026       const TPMT_TK_HASHCHECK& validation,
   5027       std::string* serialized_command,
   5028       AuthorizationDelegate* authorization_delegate);
   5029   static TPM_RC ParseResponse_Sign(
   5030       const std::string& response,
   5031       TPMT_SIGNATURE* signature,
   5032       AuthorizationDelegate* authorization_delegate);
   5033   virtual void Sign(
   5034       const TPMI_DH_OBJECT& key_handle,
   5035       const std::string& key_handle_name,
   5036       const TPM2B_DIGEST& digest,
   5037       const TPMT_SIG_SCHEME& in_scheme,
   5038       const TPMT_TK_HASHCHECK& validation,
   5039       AuthorizationDelegate* authorization_delegate,
   5040       const SignResponse& callback);
   5041   virtual TPM_RC SignSync(
   5042       const TPMI_DH_OBJECT& key_handle,
   5043       const std::string& key_handle_name,
   5044       const TPM2B_DIGEST& digest,
   5045       const TPMT_SIG_SCHEME& in_scheme,
   5046       const TPMT_TK_HASHCHECK& validation,
   5047       TPMT_SIGNATURE* signature,
   5048       AuthorizationDelegate* authorization_delegate);
   5049   typedef base::Callback<void(
   5050       TPM_RC response_code)> SetCommandCodeAuditStatusResponse;
   5051   static TPM_RC SerializeCommand_SetCommandCodeAuditStatus(
   5052       const TPMI_RH_PROVISION& auth,
   5053       const std::string& auth_name,
   5054       const TPMI_ALG_HASH& audit_alg,
   5055       const TPML_CC& set_list,
   5056       const TPML_CC& clear_list,
   5057       std::string* serialized_command,
   5058       AuthorizationDelegate* authorization_delegate);
   5059   static TPM_RC ParseResponse_SetCommandCodeAuditStatus(
   5060       const std::string& response,
   5061       AuthorizationDelegate* authorization_delegate);
   5062   virtual void SetCommandCodeAuditStatus(
   5063       const TPMI_RH_PROVISION& auth,
   5064       const std::string& auth_name,
   5065       const TPMI_ALG_HASH& audit_alg,
   5066       const TPML_CC& set_list,
   5067       const TPML_CC& clear_list,
   5068       AuthorizationDelegate* authorization_delegate,
   5069       const SetCommandCodeAuditStatusResponse& callback);
   5070   virtual TPM_RC SetCommandCodeAuditStatusSync(
   5071       const TPMI_RH_PROVISION& auth,
   5072       const std::string& auth_name,
   5073       const TPMI_ALG_HASH& audit_alg,
   5074       const TPML_CC& set_list,
   5075       const TPML_CC& clear_list,
   5076       AuthorizationDelegate* authorization_delegate);
   5077   typedef base::Callback<void(
   5078       TPM_RC response_code)> PCR_ExtendResponse;
   5079   static TPM_RC SerializeCommand_PCR_Extend(
   5080       const TPMI_DH_PCR& pcr_handle,
   5081       const std::string& pcr_handle_name,
   5082       const TPML_DIGEST_VALUES& digests,
   5083       std::string* serialized_command,
   5084       AuthorizationDelegate* authorization_delegate);
   5085   static TPM_RC ParseResponse_PCR_Extend(
   5086       const std::string& response,
   5087       AuthorizationDelegate* authorization_delegate);
   5088   virtual void PCR_Extend(
   5089       const TPMI_DH_PCR& pcr_handle,
   5090       const std::string& pcr_handle_name,
   5091       const TPML_DIGEST_VALUES& digests,
   5092       AuthorizationDelegate* authorization_delegate,
   5093       const PCR_ExtendResponse& callback);
   5094   virtual TPM_RC PCR_ExtendSync(
   5095       const TPMI_DH_PCR& pcr_handle,
   5096       const std::string& pcr_handle_name,
   5097       const TPML_DIGEST_VALUES& digests,
   5098       AuthorizationDelegate* authorization_delegate);
   5099   typedef base::Callback<void(
   5100       TPM_RC response_code,
   5101       const TPML_DIGEST_VALUES& digests)> PCR_EventResponse;
   5102   static TPM_RC SerializeCommand_PCR_Event(
   5103       const TPMI_DH_PCR& pcr_handle,
   5104       const std::string& pcr_handle_name,
   5105       const TPM2B_EVENT& event_data,
   5106       std::string* serialized_command,
   5107       AuthorizationDelegate* authorization_delegate);
   5108   static TPM_RC ParseResponse_PCR_Event(
   5109       const std::string& response,
   5110       TPML_DIGEST_VALUES* digests,
   5111       AuthorizationDelegate* authorization_delegate);
   5112   virtual void PCR_Event(
   5113       const TPMI_DH_PCR& pcr_handle,
   5114       const std::string& pcr_handle_name,
   5115       const TPM2B_EVENT& event_data,
   5116       AuthorizationDelegate* authorization_delegate,
   5117       const PCR_EventResponse& callback);
   5118   virtual TPM_RC PCR_EventSync(
   5119       const TPMI_DH_PCR& pcr_handle,
   5120       const std::string& pcr_handle_name,
   5121       const TPM2B_EVENT& event_data,
   5122       TPML_DIGEST_VALUES* digests,
   5123       AuthorizationDelegate* authorization_delegate);
   5124   typedef base::Callback<void(
   5125       TPM_RC response_code,
   5126       const UINT32& pcr_update_counter,
   5127       const TPML_PCR_SELECTION& pcr_selection_out,
   5128       const TPML_DIGEST& pcr_values)> PCR_ReadResponse;
   5129   static TPM_RC SerializeCommand_PCR_Read(
   5130       const TPML_PCR_SELECTION& pcr_selection_in,
   5131       std::string* serialized_command,
   5132       AuthorizationDelegate* authorization_delegate);
   5133   static TPM_RC ParseResponse_PCR_Read(
   5134       const std::string& response,
   5135       UINT32* pcr_update_counter,
   5136       TPML_PCR_SELECTION* pcr_selection_out,
   5137       TPML_DIGEST* pcr_values,
   5138       AuthorizationDelegate* authorization_delegate);
   5139   virtual void PCR_Read(
   5140       const TPML_PCR_SELECTION& pcr_selection_in,
   5141       AuthorizationDelegate* authorization_delegate,
   5142       const PCR_ReadResponse& callback);
   5143   virtual TPM_RC PCR_ReadSync(
   5144       const TPML_PCR_SELECTION& pcr_selection_in,
   5145       UINT32* pcr_update_counter,
   5146       TPML_PCR_SELECTION* pcr_selection_out,
   5147       TPML_DIGEST* pcr_values,
   5148       AuthorizationDelegate* authorization_delegate);
   5149   typedef base::Callback<void(
   5150       TPM_RC response_code,
   5151       const TPMI_YES_NO& allocation_success,
   5152       const UINT32& max_pcr,
   5153       const UINT32& size_needed,
   5154       const UINT32& size_available)> PCR_AllocateResponse;
   5155   static TPM_RC SerializeCommand_PCR_Allocate(
   5156       const TPMI_RH_PLATFORM& auth_handle,
   5157       const std::string& auth_handle_name,
   5158       const TPML_PCR_SELECTION& pcr_allocation,
   5159       std::string* serialized_command,
   5160       AuthorizationDelegate* authorization_delegate);
   5161   static TPM_RC ParseResponse_PCR_Allocate(
   5162       const std::string& response,
   5163       TPMI_YES_NO* allocation_success,
   5164       UINT32* max_pcr,
   5165       UINT32* size_needed,
   5166       UINT32* size_available,
   5167       AuthorizationDelegate* authorization_delegate);
   5168   virtual void PCR_Allocate(
   5169       const TPMI_RH_PLATFORM& auth_handle,
   5170       const std::string& auth_handle_name,
   5171       const TPML_PCR_SELECTION& pcr_allocation,
   5172       AuthorizationDelegate* authorization_delegate,
   5173       const PCR_AllocateResponse& callback);
   5174   virtual TPM_RC PCR_AllocateSync(
   5175       const TPMI_RH_PLATFORM& auth_handle,
   5176       const std::string& auth_handle_name,
   5177       const TPML_PCR_SELECTION& pcr_allocation,
   5178       TPMI_YES_NO* allocation_success,
   5179       UINT32* max_pcr,
   5180       UINT32* size_needed,
   5181       UINT32* size_available,
   5182       AuthorizationDelegate* authorization_delegate);
   5183   typedef base::Callback<void(
   5184       TPM_RC response_code)> PCR_SetAuthPolicyResponse;
   5185   static TPM_RC SerializeCommand_PCR_SetAuthPolicy(
   5186       const TPMI_RH_PLATFORM& auth_handle,
   5187       const std::string& auth_handle_name,
   5188       const TPMI_DH_PCR& pcr_num,
   5189       const std::string& pcr_num_name,
   5190       const TPM2B_DIGEST& auth_policy,
   5191       const TPMI_ALG_HASH& policy_digest,
   5192       std::string* serialized_command,
   5193       AuthorizationDelegate* authorization_delegate);
   5194   static TPM_RC ParseResponse_PCR_SetAuthPolicy(
   5195       const std::string& response,
   5196       AuthorizationDelegate* authorization_delegate);
   5197   virtual void PCR_SetAuthPolicy(
   5198       const TPMI_RH_PLATFORM& auth_handle,
   5199       const std::string& auth_handle_name,
   5200       const TPMI_DH_PCR& pcr_num,
   5201       const std::string& pcr_num_name,
   5202       const TPM2B_DIGEST& auth_policy,
   5203       const TPMI_ALG_HASH& policy_digest,
   5204       AuthorizationDelegate* authorization_delegate,
   5205       const PCR_SetAuthPolicyResponse& callback);
   5206   virtual TPM_RC PCR_SetAuthPolicySync(
   5207       const TPMI_RH_PLATFORM& auth_handle,
   5208       const std::string& auth_handle_name,
   5209       const TPMI_DH_PCR& pcr_num,
   5210       const std::string& pcr_num_name,
   5211       const TPM2B_DIGEST& auth_policy,
   5212       const TPMI_ALG_HASH& policy_digest,
   5213       AuthorizationDelegate* authorization_delegate);
   5214   typedef base::Callback<void(
   5215       TPM_RC response_code)> PCR_SetAuthValueResponse;
   5216   static TPM_RC SerializeCommand_PCR_SetAuthValue(
   5217       const TPMI_DH_PCR& pcr_handle,
   5218       const std::string& pcr_handle_name,
   5219       const TPM2B_DIGEST& auth,
   5220       std::string* serialized_command,
   5221       AuthorizationDelegate* authorization_delegate);
   5222   static TPM_RC ParseResponse_PCR_SetAuthValue(
   5223       const std::string& response,
   5224       AuthorizationDelegate* authorization_delegate);
   5225   virtual void PCR_SetAuthValue(
   5226       const TPMI_DH_PCR& pcr_handle,
   5227       const std::string& pcr_handle_name,
   5228       const TPM2B_DIGEST& auth,
   5229       AuthorizationDelegate* authorization_delegate,
   5230       const PCR_SetAuthValueResponse& callback);
   5231   virtual TPM_RC PCR_SetAuthValueSync(
   5232       const TPMI_DH_PCR& pcr_handle,
   5233       const std::string& pcr_handle_name,
   5234       const TPM2B_DIGEST& auth,
   5235       AuthorizationDelegate* authorization_delegate);
   5236   typedef base::Callback<void(
   5237       TPM_RC response_code)> PCR_ResetResponse;
   5238   static TPM_RC SerializeCommand_PCR_Reset(
   5239       const TPMI_DH_PCR& pcr_handle,
   5240       const std::string& pcr_handle_name,
   5241       std::string* serialized_command,
   5242       AuthorizationDelegate* authorization_delegate);
   5243   static TPM_RC ParseResponse_PCR_Reset(
   5244       const std::string& response,
   5245       AuthorizationDelegate* authorization_delegate);
   5246   virtual void PCR_Reset(
   5247       const TPMI_DH_PCR& pcr_handle,
   5248       const std::string& pcr_handle_name,
   5249       AuthorizationDelegate* authorization_delegate,
   5250       const PCR_ResetResponse& callback);
   5251   virtual TPM_RC PCR_ResetSync(
   5252       const TPMI_DH_PCR& pcr_handle,
   5253       const std::string& pcr_handle_name,
   5254       AuthorizationDelegate* authorization_delegate);
   5255   typedef base::Callback<void(
   5256       TPM_RC response_code,
   5257       const TPM2B_TIMEOUT& timeout,
   5258       const TPMT_TK_AUTH& policy_ticket)> PolicySignedResponse;
   5259   static TPM_RC SerializeCommand_PolicySigned(
   5260       const TPMI_DH_OBJECT& auth_object,
   5261       const std::string& auth_object_name,
   5262       const TPMI_SH_POLICY& policy_session,
   5263       const std::string& policy_session_name,
   5264       const TPM2B_NONCE& nonce_tpm,
   5265       const TPM2B_DIGEST& cp_hash_a,
   5266       const TPM2B_NONCE& policy_ref,
   5267       const INT32& expiration,
   5268       const TPMT_SIGNATURE& auth,
   5269       std::string* serialized_command,
   5270       AuthorizationDelegate* authorization_delegate);
   5271   static TPM_RC ParseResponse_PolicySigned(
   5272       const std::string& response,
   5273       TPM2B_TIMEOUT* timeout,
   5274       TPMT_TK_AUTH* policy_ticket,
   5275       AuthorizationDelegate* authorization_delegate);
   5276   virtual void PolicySigned(
   5277       const TPMI_DH_OBJECT& auth_object,
   5278       const std::string& auth_object_name,
   5279       const TPMI_SH_POLICY& policy_session,
   5280       const std::string& policy_session_name,
   5281       const TPM2B_NONCE& nonce_tpm,
   5282       const TPM2B_DIGEST& cp_hash_a,
   5283       const TPM2B_NONCE& policy_ref,
   5284       const INT32& expiration,
   5285       const TPMT_SIGNATURE& auth,
   5286       AuthorizationDelegate* authorization_delegate,
   5287       const PolicySignedResponse& callback);
   5288   virtual TPM_RC PolicySignedSync(
   5289       const TPMI_DH_OBJECT& auth_object,
   5290       const std::string& auth_object_name,
   5291       const TPMI_SH_POLICY& policy_session,
   5292       const std::string& policy_session_name,
   5293       const TPM2B_NONCE& nonce_tpm,
   5294       const TPM2B_DIGEST& cp_hash_a,
   5295       const TPM2B_NONCE& policy_ref,
   5296       const INT32& expiration,
   5297       const TPMT_SIGNATURE& auth,
   5298       TPM2B_TIMEOUT* timeout,
   5299       TPMT_TK_AUTH* policy_ticket,
   5300       AuthorizationDelegate* authorization_delegate);
   5301   typedef base::Callback<void(
   5302       TPM_RC response_code,
   5303       const TPM2B_TIMEOUT& timeout,
   5304       const TPMT_TK_AUTH& policy_ticket)> PolicySecretResponse;
   5305   static TPM_RC SerializeCommand_PolicySecret(
   5306       const TPMI_DH_ENTITY& auth_handle,
   5307       const std::string& auth_handle_name,
   5308       const TPMI_SH_POLICY& policy_session,
   5309       const std::string& policy_session_name,
   5310       const TPM2B_NONCE& nonce_tpm,
   5311       const TPM2B_DIGEST& cp_hash_a,
   5312       const TPM2B_NONCE& policy_ref,
   5313       const INT32& expiration,
   5314       std::string* serialized_command,
   5315       AuthorizationDelegate* authorization_delegate);
   5316   static TPM_RC ParseResponse_PolicySecret(
   5317       const std::string& response,
   5318       TPM2B_TIMEOUT* timeout,
   5319       TPMT_TK_AUTH* policy_ticket,
   5320       AuthorizationDelegate* authorization_delegate);
   5321   virtual void PolicySecret(
   5322       const TPMI_DH_ENTITY& auth_handle,
   5323       const std::string& auth_handle_name,
   5324       const TPMI_SH_POLICY& policy_session,
   5325       const std::string& policy_session_name,
   5326       const TPM2B_NONCE& nonce_tpm,
   5327       const TPM2B_DIGEST& cp_hash_a,
   5328       const TPM2B_NONCE& policy_ref,
   5329       const INT32& expiration,
   5330       AuthorizationDelegate* authorization_delegate,
   5331       const PolicySecretResponse& callback);
   5332   virtual TPM_RC PolicySecretSync(
   5333       const TPMI_DH_ENTITY& auth_handle,
   5334       const std::string& auth_handle_name,
   5335       const TPMI_SH_POLICY& policy_session,
   5336       const std::string& policy_session_name,
   5337       const TPM2B_NONCE& nonce_tpm,
   5338       const TPM2B_DIGEST& cp_hash_a,
   5339       const TPM2B_NONCE& policy_ref,
   5340       const INT32& expiration,
   5341       TPM2B_TIMEOUT* timeout,
   5342       TPMT_TK_AUTH* policy_ticket,
   5343       AuthorizationDelegate* authorization_delegate);
   5344   typedef base::Callback<void(
   5345       TPM_RC response_code)> PolicyTicketResponse;
   5346   static TPM_RC SerializeCommand_PolicyTicket(
   5347       const TPMI_SH_POLICY& policy_session,
   5348       const std::string& policy_session_name,
   5349       const TPM2B_TIMEOUT& timeout,
   5350       const TPM2B_DIGEST& cp_hash_a,
   5351       const TPM2B_NONCE& policy_ref,
   5352       const TPM2B_NAME& auth_name,
   5353       const TPMT_TK_AUTH& ticket,
   5354       std::string* serialized_command,
   5355       AuthorizationDelegate* authorization_delegate);
   5356   static TPM_RC ParseResponse_PolicyTicket(
   5357       const std::string& response,
   5358       AuthorizationDelegate* authorization_delegate);
   5359   virtual void PolicyTicket(
   5360       const TPMI_SH_POLICY& policy_session,
   5361       const std::string& policy_session_name,
   5362       const TPM2B_TIMEOUT& timeout,
   5363       const TPM2B_DIGEST& cp_hash_a,
   5364       const TPM2B_NONCE& policy_ref,
   5365       const TPM2B_NAME& auth_name,
   5366       const TPMT_TK_AUTH& ticket,
   5367       AuthorizationDelegate* authorization_delegate,
   5368       const PolicyTicketResponse& callback);
   5369   virtual TPM_RC PolicyTicketSync(
   5370       const TPMI_SH_POLICY& policy_session,
   5371       const std::string& policy_session_name,
   5372       const TPM2B_TIMEOUT& timeout,
   5373       const TPM2B_DIGEST& cp_hash_a,
   5374       const TPM2B_NONCE& policy_ref,
   5375       const TPM2B_NAME& auth_name,
   5376       const TPMT_TK_AUTH& ticket,
   5377       AuthorizationDelegate* authorization_delegate);
   5378   typedef base::Callback<void(
   5379       TPM_RC response_code)> PolicyORResponse;
   5380   static TPM_RC SerializeCommand_PolicyOR(
   5381       const TPMI_SH_POLICY& policy_session,
   5382       const std::string& policy_session_name,
   5383       const TPML_DIGEST& p_hash_list,
   5384       std::string* serialized_command,
   5385       AuthorizationDelegate* authorization_delegate);
   5386   static TPM_RC ParseResponse_PolicyOR(
   5387       const std::string& response,
   5388       AuthorizationDelegate* authorization_delegate);
   5389   virtual void PolicyOR(
   5390       const TPMI_SH_POLICY& policy_session,
   5391       const std::string& policy_session_name,
   5392       const TPML_DIGEST& p_hash_list,
   5393       AuthorizationDelegate* authorization_delegate,
   5394       const PolicyORResponse& callback);
   5395   virtual TPM_RC PolicyORSync(
   5396       const TPMI_SH_POLICY& policy_session,
   5397       const std::string& policy_session_name,
   5398       const TPML_DIGEST& p_hash_list,
   5399       AuthorizationDelegate* authorization_delegate);
   5400   typedef base::Callback<void(
   5401       TPM_RC response_code)> PolicyPCRResponse;
   5402   static TPM_RC SerializeCommand_PolicyPCR(
   5403       const TPMI_SH_POLICY& policy_session,
   5404       const std::string& policy_session_name,
   5405       const TPM2B_DIGEST& pcr_digest,
   5406       const TPML_PCR_SELECTION& pcrs,
   5407       std::string* serialized_command,
   5408       AuthorizationDelegate* authorization_delegate);
   5409   static TPM_RC ParseResponse_PolicyPCR(
   5410       const std::string& response,
   5411       AuthorizationDelegate* authorization_delegate);
   5412   virtual void PolicyPCR(
   5413       const TPMI_SH_POLICY& policy_session,
   5414       const std::string& policy_session_name,
   5415       const TPM2B_DIGEST& pcr_digest,
   5416       const TPML_PCR_SELECTION& pcrs,
   5417       AuthorizationDelegate* authorization_delegate,
   5418       const PolicyPCRResponse& callback);
   5419   virtual TPM_RC PolicyPCRSync(
   5420       const TPMI_SH_POLICY& policy_session,
   5421       const std::string& policy_session_name,
   5422       const TPM2B_DIGEST& pcr_digest,
   5423       const TPML_PCR_SELECTION& pcrs,
   5424       AuthorizationDelegate* authorization_delegate);
   5425   typedef base::Callback<void(
   5426       TPM_RC response_code)> PolicyLocalityResponse;
   5427   static TPM_RC SerializeCommand_PolicyLocality(
   5428       const TPMI_SH_POLICY& policy_session,
   5429       const std::string& policy_session_name,
   5430       const TPMA_LOCALITY& locality,
   5431       std::string* serialized_command,
   5432       AuthorizationDelegate* authorization_delegate);
   5433   static TPM_RC ParseResponse_PolicyLocality(
   5434       const std::string& response,
   5435       AuthorizationDelegate* authorization_delegate);
   5436   virtual void PolicyLocality(
   5437       const TPMI_SH_POLICY& policy_session,
   5438       const std::string& policy_session_name,
   5439       const TPMA_LOCALITY& locality,
   5440       AuthorizationDelegate* authorization_delegate,
   5441       const PolicyLocalityResponse& callback);
   5442   virtual TPM_RC PolicyLocalitySync(
   5443       const TPMI_SH_POLICY& policy_session,
   5444       const std::string& policy_session_name,
   5445       const TPMA_LOCALITY& locality,
   5446       AuthorizationDelegate* authorization_delegate);
   5447   typedef base::Callback<void(
   5448       TPM_RC response_code)> PolicyNVResponse;
   5449   static TPM_RC SerializeCommand_PolicyNV(
   5450       const TPMI_RH_NV_AUTH& auth_handle,
   5451       const std::string& auth_handle_name,
   5452       const TPMI_RH_NV_INDEX& nv_index,
   5453       const std::string& nv_index_name,
   5454       const TPMI_SH_POLICY& policy_session,
   5455       const std::string& policy_session_name,
   5456       const TPM2B_OPERAND& operand_b,
   5457       const UINT16& offset,
   5458       const TPM_EO& operation,
   5459       std::string* serialized_command,
   5460       AuthorizationDelegate* authorization_delegate);
   5461   static TPM_RC ParseResponse_PolicyNV(
   5462       const std::string& response,
   5463       AuthorizationDelegate* authorization_delegate);
   5464   virtual void PolicyNV(
   5465       const TPMI_RH_NV_AUTH& auth_handle,
   5466       const std::string& auth_handle_name,
   5467       const TPMI_RH_NV_INDEX& nv_index,
   5468       const std::string& nv_index_name,
   5469       const TPMI_SH_POLICY& policy_session,
   5470       const std::string& policy_session_name,
   5471       const TPM2B_OPERAND& operand_b,
   5472       const UINT16& offset,
   5473       const TPM_EO& operation,
   5474       AuthorizationDelegate* authorization_delegate,
   5475       const PolicyNVResponse& callback);
   5476   virtual TPM_RC PolicyNVSync(
   5477       const TPMI_RH_NV_AUTH& auth_handle,
   5478       const std::string& auth_handle_name,
   5479       const TPMI_RH_NV_INDEX& nv_index,
   5480       const std::string& nv_index_name,
   5481       const TPMI_SH_POLICY& policy_session,
   5482       const std::string& policy_session_name,
   5483       const TPM2B_OPERAND& operand_b,
   5484       const UINT16& offset,
   5485       const TPM_EO& operation,
   5486       AuthorizationDelegate* authorization_delegate);
   5487   typedef base::Callback<void(
   5488       TPM_RC response_code)> PolicyCounterTimerResponse;
   5489   static TPM_RC SerializeCommand_PolicyCounterTimer(
   5490       const TPMI_SH_POLICY& policy_session,
   5491       const std::string& policy_session_name,
   5492       const TPM2B_OPERAND& operand_b,
   5493       const UINT16& offset,
   5494       const TPM_EO& operation,
   5495       std::string* serialized_command,
   5496       AuthorizationDelegate* authorization_delegate);
   5497   static TPM_RC ParseResponse_PolicyCounterTimer(
   5498       const std::string& response,
   5499       AuthorizationDelegate* authorization_delegate);
   5500   virtual void PolicyCounterTimer(
   5501       const TPMI_SH_POLICY& policy_session,
   5502       const std::string& policy_session_name,
   5503       const TPM2B_OPERAND& operand_b,
   5504       const UINT16& offset,
   5505       const TPM_EO& operation,
   5506       AuthorizationDelegate* authorization_delegate,
   5507       const PolicyCounterTimerResponse& callback);
   5508   virtual TPM_RC PolicyCounterTimerSync(
   5509       const TPMI_SH_POLICY& policy_session,
   5510       const std::string& policy_session_name,
   5511       const TPM2B_OPERAND& operand_b,
   5512       const UINT16& offset,
   5513       const TPM_EO& operation,
   5514       AuthorizationDelegate* authorization_delegate);
   5515   typedef base::Callback<void(
   5516       TPM_RC response_code)> PolicyCommandCodeResponse;
   5517   static TPM_RC SerializeCommand_PolicyCommandCode(
   5518       const TPMI_SH_POLICY& policy_session,
   5519       const std::string& policy_session_name,
   5520       const TPM_CC& code,
   5521       std::string* serialized_command,
   5522       AuthorizationDelegate* authorization_delegate);
   5523   static TPM_RC ParseResponse_PolicyCommandCode(
   5524       const std::string& response,
   5525       AuthorizationDelegate* authorization_delegate);
   5526   virtual void PolicyCommandCode(
   5527       const TPMI_SH_POLICY& policy_session,
   5528       const std::string& policy_session_name,
   5529       const TPM_CC& code,
   5530       AuthorizationDelegate* authorization_delegate,
   5531       const PolicyCommandCodeResponse& callback);
   5532   virtual TPM_RC PolicyCommandCodeSync(
   5533       const TPMI_SH_POLICY& policy_session,
   5534       const std::string& policy_session_name,
   5535       const TPM_CC& code,
   5536       AuthorizationDelegate* authorization_delegate);
   5537   typedef base::Callback<void(
   5538       TPM_RC response_code)> PolicyPhysicalPresenceResponse;
   5539   static TPM_RC SerializeCommand_PolicyPhysicalPresence(
   5540       const TPMI_SH_POLICY& policy_session,
   5541       const std::string& policy_session_name,
   5542       std::string* serialized_command,
   5543       AuthorizationDelegate* authorization_delegate);
   5544   static TPM_RC ParseResponse_PolicyPhysicalPresence(
   5545       const std::string& response,
   5546       AuthorizationDelegate* authorization_delegate);
   5547   virtual void PolicyPhysicalPresence(
   5548       const TPMI_SH_POLICY& policy_session,
   5549       const std::string& policy_session_name,
   5550       AuthorizationDelegate* authorization_delegate,
   5551       const PolicyPhysicalPresenceResponse& callback);
   5552   virtual TPM_RC PolicyPhysicalPresenceSync(
   5553       const TPMI_SH_POLICY& policy_session,
   5554       const std::string& policy_session_name,
   5555       AuthorizationDelegate* authorization_delegate);
   5556   typedef base::Callback<void(
   5557       TPM_RC response_code)> PolicyCpHashResponse;
   5558   static TPM_RC SerializeCommand_PolicyCpHash(
   5559       const TPMI_SH_POLICY& policy_session,
   5560       const std::string& policy_session_name,
   5561       const TPM2B_DIGEST& cp_hash_a,
   5562       std::string* serialized_command,
   5563       AuthorizationDelegate* authorization_delegate);
   5564   static TPM_RC ParseResponse_PolicyCpHash(
   5565       const std::string& response,
   5566       AuthorizationDelegate* authorization_delegate);
   5567   virtual void PolicyCpHash(
   5568       const TPMI_SH_POLICY& policy_session,
   5569       const std::string& policy_session_name,
   5570       const TPM2B_DIGEST& cp_hash_a,
   5571       AuthorizationDelegate* authorization_delegate,
   5572       const PolicyCpHashResponse& callback);
   5573   virtual TPM_RC PolicyCpHashSync(
   5574       const TPMI_SH_POLICY& policy_session,
   5575       const std::string& policy_session_name,
   5576       const TPM2B_DIGEST& cp_hash_a,
   5577       AuthorizationDelegate* authorization_delegate);
   5578   typedef base::Callback<void(
   5579       TPM_RC response_code)> PolicyNameHashResponse;
   5580   static TPM_RC SerializeCommand_PolicyNameHash(
   5581       const TPMI_SH_POLICY& policy_session,
   5582       const std::string& policy_session_name,
   5583       const TPM2B_DIGEST& name_hash,
   5584       std::string* serialized_command,
   5585       AuthorizationDelegate* authorization_delegate);
   5586   static TPM_RC ParseResponse_PolicyNameHash(
   5587       const std::string& response,
   5588       AuthorizationDelegate* authorization_delegate);
   5589   virtual void PolicyNameHash(
   5590       const TPMI_SH_POLICY& policy_session,
   5591       const std::string& policy_session_name,
   5592       const TPM2B_DIGEST& name_hash,
   5593       AuthorizationDelegate* authorization_delegate,
   5594       const PolicyNameHashResponse& callback);
   5595   virtual TPM_RC PolicyNameHashSync(
   5596       const TPMI_SH_POLICY& policy_session,
   5597       const std::string& policy_session_name,
   5598       const TPM2B_DIGEST& name_hash,
   5599       AuthorizationDelegate* authorization_delegate);
   5600   typedef base::Callback<void(
   5601       TPM_RC response_code)> PolicyDuplicationSelectResponse;
   5602   static TPM_RC SerializeCommand_PolicyDuplicationSelect(
   5603       const TPMI_SH_POLICY& policy_session,
   5604       const std::string& policy_session_name,
   5605       const TPM2B_NAME& object_name,
   5606       const TPM2B_NAME& new_parent_name,
   5607       const TPMI_YES_NO& include_object,
   5608       std::string* serialized_command,
   5609       AuthorizationDelegate* authorization_delegate);
   5610   static TPM_RC ParseResponse_PolicyDuplicationSelect(
   5611       const std::string& response,
   5612       AuthorizationDelegate* authorization_delegate);
   5613   virtual void PolicyDuplicationSelect(
   5614       const TPMI_SH_POLICY& policy_session,
   5615       const std::string& policy_session_name,
   5616       const TPM2B_NAME& object_name,
   5617       const TPM2B_NAME& new_parent_name,
   5618       const TPMI_YES_NO& include_object,
   5619       AuthorizationDelegate* authorization_delegate,
   5620       const PolicyDuplicationSelectResponse& callback);
   5621   virtual TPM_RC PolicyDuplicationSelectSync(
   5622       const TPMI_SH_POLICY& policy_session,
   5623       const std::string& policy_session_name,
   5624       const TPM2B_NAME& object_name,
   5625       const TPM2B_NAME& new_parent_name,
   5626       const TPMI_YES_NO& include_object,
   5627       AuthorizationDelegate* authorization_delegate);
   5628   typedef base::Callback<void(
   5629       TPM_RC response_code)> PolicyAuthorizeResponse;
   5630   static TPM_RC SerializeCommand_PolicyAuthorize(
   5631       const TPMI_SH_POLICY& policy_session,
   5632       const std::string& policy_session_name,
   5633       const TPM2B_DIGEST& approved_policy,
   5634       const TPM2B_NONCE& policy_ref,
   5635       const TPM2B_NAME& key_sign,
   5636       const TPMT_TK_VERIFIED& check_ticket,
   5637       std::string* serialized_command,
   5638       AuthorizationDelegate* authorization_delegate);
   5639   static TPM_RC ParseResponse_PolicyAuthorize(
   5640       const std::string& response,
   5641       AuthorizationDelegate* authorization_delegate);
   5642   virtual void PolicyAuthorize(
   5643       const TPMI_SH_POLICY& policy_session,
   5644       const std::string& policy_session_name,
   5645       const TPM2B_DIGEST& approved_policy,
   5646       const TPM2B_NONCE& policy_ref,
   5647       const TPM2B_NAME& key_sign,
   5648       const TPMT_TK_VERIFIED& check_ticket,
   5649       AuthorizationDelegate* authorization_delegate,
   5650       const PolicyAuthorizeResponse& callback);
   5651   virtual TPM_RC PolicyAuthorizeSync(
   5652       const TPMI_SH_POLICY& policy_session,
   5653       const std::string& policy_session_name,
   5654       const TPM2B_DIGEST& approved_policy,
   5655       const TPM2B_NONCE& policy_ref,
   5656       const TPM2B_NAME& key_sign,
   5657       const TPMT_TK_VERIFIED& check_ticket,
   5658       AuthorizationDelegate* authorization_delegate);
   5659   typedef base::Callback<void(
   5660       TPM_RC response_code)> PolicyAuthValueResponse;
   5661   static TPM_RC SerializeCommand_PolicyAuthValue(
   5662       const TPMI_SH_POLICY& policy_session,
   5663       const std::string& policy_session_name,
   5664       std::string* serialized_command,
   5665       AuthorizationDelegate* authorization_delegate);
   5666   static TPM_RC ParseResponse_PolicyAuthValue(
   5667       const std::string& response,
   5668       AuthorizationDelegate* authorization_delegate);
   5669   virtual void PolicyAuthValue(
   5670       const TPMI_SH_POLICY& policy_session,
   5671       const std::string& policy_session_name,
   5672       AuthorizationDelegate* authorization_delegate,
   5673       const PolicyAuthValueResponse& callback);
   5674   virtual TPM_RC PolicyAuthValueSync(
   5675       const TPMI_SH_POLICY& policy_session,
   5676       const std::string& policy_session_name,
   5677       AuthorizationDelegate* authorization_delegate);
   5678   typedef base::Callback<void(
   5679       TPM_RC response_code)> PolicyPasswordResponse;
   5680   static TPM_RC SerializeCommand_PolicyPassword(
   5681       const TPMI_SH_POLICY& policy_session,
   5682       const std::string& policy_session_name,
   5683       std::string* serialized_command,
   5684       AuthorizationDelegate* authorization_delegate);
   5685   static TPM_RC ParseResponse_PolicyPassword(
   5686       const std::string& response,
   5687       AuthorizationDelegate* authorization_delegate);
   5688   virtual void PolicyPassword(
   5689       const TPMI_SH_POLICY& policy_session,
   5690       const std::string& policy_session_name,
   5691       AuthorizationDelegate* authorization_delegate,
   5692       const PolicyPasswordResponse& callback);
   5693   virtual TPM_RC PolicyPasswordSync(
   5694       const TPMI_SH_POLICY& policy_session,
   5695       const std::string& policy_session_name,
   5696       AuthorizationDelegate* authorization_delegate);
   5697   typedef base::Callback<void(
   5698       TPM_RC response_code,
   5699       const TPM2B_DIGEST& policy_digest)> PolicyGetDigestResponse;
   5700   static TPM_RC SerializeCommand_PolicyGetDigest(
   5701       const TPMI_SH_POLICY& policy_session,
   5702       const std::string& policy_session_name,
   5703       std::string* serialized_command,
   5704       AuthorizationDelegate* authorization_delegate);
   5705   static TPM_RC ParseResponse_PolicyGetDigest(
   5706       const std::string& response,
   5707       TPM2B_DIGEST* policy_digest,
   5708       AuthorizationDelegate* authorization_delegate);
   5709   virtual void PolicyGetDigest(
   5710       const TPMI_SH_POLICY& policy_session,
   5711       const std::string& policy_session_name,
   5712       AuthorizationDelegate* authorization_delegate,
   5713       const PolicyGetDigestResponse& callback);
   5714   virtual TPM_RC PolicyGetDigestSync(
   5715       const TPMI_SH_POLICY& policy_session,
   5716       const std::string& policy_session_name,
   5717       TPM2B_DIGEST* policy_digest,
   5718       AuthorizationDelegate* authorization_delegate);
   5719   typedef base::Callback<void(
   5720       TPM_RC response_code)> PolicyNvWrittenResponse;
   5721   static TPM_RC SerializeCommand_PolicyNvWritten(
   5722       const TPMI_SH_POLICY& policy_session,
   5723       const std::string& policy_session_name,
   5724       const TPMI_YES_NO& written_set,
   5725       std::string* serialized_command,
   5726       AuthorizationDelegate* authorization_delegate);
   5727   static TPM_RC ParseResponse_PolicyNvWritten(
   5728       const std::string& response,
   5729       AuthorizationDelegate* authorization_delegate);
   5730   virtual void PolicyNvWritten(
   5731       const TPMI_SH_POLICY& policy_session,
   5732       const std::string& policy_session_name,
   5733       const TPMI_YES_NO& written_set,
   5734       AuthorizationDelegate* authorization_delegate,
   5735       const PolicyNvWrittenResponse& callback);
   5736   virtual TPM_RC PolicyNvWrittenSync(
   5737       const TPMI_SH_POLICY& policy_session,
   5738       const std::string& policy_session_name,
   5739       const TPMI_YES_NO& written_set,
   5740       AuthorizationDelegate* authorization_delegate);
   5741   typedef base::Callback<void(
   5742       TPM_RC response_code,
   5743       const TPM_HANDLE& object_handle,
   5744       const TPM2B_PUBLIC& out_public,
   5745       const TPM2B_CREATION_DATA& creation_data,
   5746       const TPM2B_DIGEST& creation_hash,
   5747       const TPMT_TK_CREATION& creation_ticket,
   5748       const TPM2B_NAME& name)> CreatePrimaryResponse;
   5749   static TPM_RC SerializeCommand_CreatePrimary(
   5750       const TPMI_RH_HIERARCHY& primary_handle,
   5751       const std::string& primary_handle_name,
   5752       const TPM2B_SENSITIVE_CREATE& in_sensitive,
   5753       const TPM2B_PUBLIC& in_public,
   5754       const TPM2B_DATA& outside_info,
   5755       const TPML_PCR_SELECTION& creation_pcr,
   5756       std::string* serialized_command,
   5757       AuthorizationDelegate* authorization_delegate);
   5758   static TPM_RC ParseResponse_CreatePrimary(
   5759       const std::string& response,
   5760       TPM_HANDLE* object_handle,
   5761       TPM2B_PUBLIC* out_public,
   5762       TPM2B_CREATION_DATA* creation_data,
   5763       TPM2B_DIGEST* creation_hash,
   5764       TPMT_TK_CREATION* creation_ticket,
   5765       TPM2B_NAME* name,
   5766       AuthorizationDelegate* authorization_delegate);
   5767   virtual void CreatePrimary(
   5768       const TPMI_RH_HIERARCHY& primary_handle,
   5769       const std::string& primary_handle_name,
   5770       const TPM2B_SENSITIVE_CREATE& in_sensitive,
   5771       const TPM2B_PUBLIC& in_public,
   5772       const TPM2B_DATA& outside_info,
   5773       const TPML_PCR_SELECTION& creation_pcr,
   5774       AuthorizationDelegate* authorization_delegate,
   5775       const CreatePrimaryResponse& callback);
   5776   virtual TPM_RC CreatePrimarySync(
   5777       const TPMI_RH_HIERARCHY& primary_handle,
   5778       const std::string& primary_handle_name,
   5779       const TPM2B_SENSITIVE_CREATE& in_sensitive,
   5780       const TPM2B_PUBLIC& in_public,
   5781       const TPM2B_DATA& outside_info,
   5782       const TPML_PCR_SELECTION& creation_pcr,
   5783       TPM_HANDLE* object_handle,
   5784       TPM2B_PUBLIC* out_public,
   5785       TPM2B_CREATION_DATA* creation_data,
   5786       TPM2B_DIGEST* creation_hash,
   5787       TPMT_TK_CREATION* creation_ticket,
   5788       TPM2B_NAME* name,
   5789       AuthorizationDelegate* authorization_delegate);
   5790   typedef base::Callback<void(
   5791       TPM_RC response_code)> HierarchyControlResponse;
   5792   static TPM_RC SerializeCommand_HierarchyControl(
   5793       const TPMI_RH_HIERARCHY& auth_handle,
   5794       const std::string& auth_handle_name,
   5795       const TPMI_RH_ENABLES& enable,
   5796       const TPMI_YES_NO& state,
   5797       std::string* serialized_command,
   5798       AuthorizationDelegate* authorization_delegate);
   5799   static TPM_RC ParseResponse_HierarchyControl(
   5800       const std::string& response,
   5801       AuthorizationDelegate* authorization_delegate);
   5802   virtual void HierarchyControl(
   5803       const TPMI_RH_HIERARCHY& auth_handle,
   5804       const std::string& auth_handle_name,
   5805       const TPMI_RH_ENABLES& enable,
   5806       const TPMI_YES_NO& state,
   5807       AuthorizationDelegate* authorization_delegate,
   5808       const HierarchyControlResponse& callback);
   5809   virtual TPM_RC HierarchyControlSync(
   5810       const TPMI_RH_HIERARCHY& auth_handle,
   5811       const std::string& auth_handle_name,
   5812       const TPMI_RH_ENABLES& enable,
   5813       const TPMI_YES_NO& state,
   5814       AuthorizationDelegate* authorization_delegate);
   5815   typedef base::Callback<void(
   5816       TPM_RC response_code)> SetPrimaryPolicyResponse;
   5817   static TPM_RC SerializeCommand_SetPrimaryPolicy(
   5818       const TPMI_RH_HIERARCHY& auth_handle,
   5819       const std::string& auth_handle_name,
   5820       const TPM2B_DIGEST& auth_policy,
   5821       const TPMI_ALG_HASH& hash_alg,
   5822       std::string* serialized_command,
   5823       AuthorizationDelegate* authorization_delegate);
   5824   static TPM_RC ParseResponse_SetPrimaryPolicy(
   5825       const std::string& response,
   5826       AuthorizationDelegate* authorization_delegate);
   5827   virtual void SetPrimaryPolicy(
   5828       const TPMI_RH_HIERARCHY& auth_handle,
   5829       const std::string& auth_handle_name,
   5830       const TPM2B_DIGEST& auth_policy,
   5831       const TPMI_ALG_HASH& hash_alg,
   5832       AuthorizationDelegate* authorization_delegate,
   5833       const SetPrimaryPolicyResponse& callback);
   5834   virtual TPM_RC SetPrimaryPolicySync(
   5835       const TPMI_RH_HIERARCHY& auth_handle,
   5836       const std::string& auth_handle_name,
   5837       const TPM2B_DIGEST& auth_policy,
   5838       const TPMI_ALG_HASH& hash_alg,
   5839       AuthorizationDelegate* authorization_delegate);
   5840   typedef base::Callback<void(
   5841       TPM_RC response_code)> ChangePPSResponse;
   5842   static TPM_RC SerializeCommand_ChangePPS(
   5843       const TPMI_RH_PLATFORM& auth_handle,
   5844       const std::string& auth_handle_name,
   5845       std::string* serialized_command,
   5846       AuthorizationDelegate* authorization_delegate);
   5847   static TPM_RC ParseResponse_ChangePPS(
   5848       const std::string& response,
   5849       AuthorizationDelegate* authorization_delegate);
   5850   virtual void ChangePPS(
   5851       const TPMI_RH_PLATFORM& auth_handle,
   5852       const std::string& auth_handle_name,
   5853       AuthorizationDelegate* authorization_delegate,
   5854       const ChangePPSResponse& callback);
   5855   virtual TPM_RC ChangePPSSync(
   5856       const TPMI_RH_PLATFORM& auth_handle,
   5857       const std::string& auth_handle_name,
   5858       AuthorizationDelegate* authorization_delegate);
   5859   typedef base::Callback<void(
   5860       TPM_RC response_code)> ChangeEPSResponse;
   5861   static TPM_RC SerializeCommand_ChangeEPS(
   5862       const TPMI_RH_PLATFORM& auth_handle,
   5863       const std::string& auth_handle_name,
   5864       std::string* serialized_command,
   5865       AuthorizationDelegate* authorization_delegate);
   5866   static TPM_RC ParseResponse_ChangeEPS(
   5867       const std::string& response,
   5868       AuthorizationDelegate* authorization_delegate);
   5869   virtual void ChangeEPS(
   5870       const TPMI_RH_PLATFORM& auth_handle,
   5871       const std::string& auth_handle_name,
   5872       AuthorizationDelegate* authorization_delegate,
   5873       const ChangeEPSResponse& callback);
   5874   virtual TPM_RC ChangeEPSSync(
   5875       const TPMI_RH_PLATFORM& auth_handle,
   5876       const std::string& auth_handle_name,
   5877       AuthorizationDelegate* authorization_delegate);
   5878   typedef base::Callback<void(
   5879       TPM_RC response_code)> ClearResponse;
   5880   static TPM_RC SerializeCommand_Clear(
   5881       const TPMI_RH_CLEAR& auth_handle,
   5882       const std::string& auth_handle_name,
   5883       std::string* serialized_command,
   5884       AuthorizationDelegate* authorization_delegate);
   5885   static TPM_RC ParseResponse_Clear(
   5886       const std::string& response,
   5887       AuthorizationDelegate* authorization_delegate);
   5888   virtual void Clear(
   5889       const TPMI_RH_CLEAR& auth_handle,
   5890       const std::string& auth_handle_name,
   5891       AuthorizationDelegate* authorization_delegate,
   5892       const ClearResponse& callback);
   5893   virtual TPM_RC ClearSync(
   5894       const TPMI_RH_CLEAR& auth_handle,
   5895       const std::string& auth_handle_name,
   5896       AuthorizationDelegate* authorization_delegate);
   5897   typedef base::Callback<void(
   5898       TPM_RC response_code)> ClearControlResponse;
   5899   static TPM_RC SerializeCommand_ClearControl(
   5900       const TPMI_RH_CLEAR& auth,
   5901       const std::string& auth_name,
   5902       const TPMI_YES_NO& disable,
   5903       std::string* serialized_command,
   5904       AuthorizationDelegate* authorization_delegate);
   5905   static TPM_RC ParseResponse_ClearControl(
   5906       const std::string& response,
   5907       AuthorizationDelegate* authorization_delegate);
   5908   virtual void ClearControl(
   5909       const TPMI_RH_CLEAR& auth,
   5910       const std::string& auth_name,
   5911       const TPMI_YES_NO& disable,
   5912       AuthorizationDelegate* authorization_delegate,
   5913       const ClearControlResponse& callback);
   5914   virtual TPM_RC ClearControlSync(
   5915       const TPMI_RH_CLEAR& auth,
   5916       const std::string& auth_name,
   5917       const TPMI_YES_NO& disable,
   5918       AuthorizationDelegate* authorization_delegate);
   5919   typedef base::Callback<void(
   5920       TPM_RC response_code)> HierarchyChangeAuthResponse;
   5921   static TPM_RC SerializeCommand_HierarchyChangeAuth(
   5922       const TPMI_RH_HIERARCHY_AUTH& auth_handle,
   5923       const std::string& auth_handle_name,
   5924       const TPM2B_AUTH& new_auth,
   5925       std::string* serialized_command,
   5926       AuthorizationDelegate* authorization_delegate);
   5927   static TPM_RC ParseResponse_HierarchyChangeAuth(
   5928       const std::string& response,
   5929       AuthorizationDelegate* authorization_delegate);
   5930   virtual void HierarchyChangeAuth(
   5931       const TPMI_RH_HIERARCHY_AUTH& auth_handle,
   5932       const std::string& auth_handle_name,
   5933       const TPM2B_AUTH& new_auth,
   5934       AuthorizationDelegate* authorization_delegate,
   5935       const HierarchyChangeAuthResponse& callback);
   5936   virtual TPM_RC HierarchyChangeAuthSync(
   5937       const TPMI_RH_HIERARCHY_AUTH& auth_handle,
   5938       const std::string& auth_handle_name,
   5939       const TPM2B_AUTH& new_auth,
   5940       AuthorizationDelegate* authorization_delegate);
   5941   typedef base::Callback<void(
   5942       TPM_RC response_code)> DictionaryAttackLockResetResponse;
   5943   static TPM_RC SerializeCommand_DictionaryAttackLockReset(
   5944       const TPMI_RH_LOCKOUT& lock_handle,
   5945       const std::string& lock_handle_name,
   5946       std::string* serialized_command,
   5947       AuthorizationDelegate* authorization_delegate);
   5948   static TPM_RC ParseResponse_DictionaryAttackLockReset(
   5949       const std::string& response,
   5950       AuthorizationDelegate* authorization_delegate);
   5951   virtual void DictionaryAttackLockReset(
   5952       const TPMI_RH_LOCKOUT& lock_handle,
   5953       const std::string& lock_handle_name,
   5954       AuthorizationDelegate* authorization_delegate,
   5955       const DictionaryAttackLockResetResponse& callback);
   5956   virtual TPM_RC DictionaryAttackLockResetSync(
   5957       const TPMI_RH_LOCKOUT& lock_handle,
   5958       const std::string& lock_handle_name,
   5959       AuthorizationDelegate* authorization_delegate);
   5960   typedef base::Callback<void(
   5961       TPM_RC response_code)> DictionaryAttackParametersResponse;
   5962   static TPM_RC SerializeCommand_DictionaryAttackParameters(
   5963       const TPMI_RH_LOCKOUT& lock_handle,
   5964       const std::string& lock_handle_name,
   5965       const UINT32& new_max_tries,
   5966       const UINT32& new_recovery_time,
   5967       const UINT32& lockout_recovery,
   5968       std::string* serialized_command,
   5969       AuthorizationDelegate* authorization_delegate);
   5970   static TPM_RC ParseResponse_DictionaryAttackParameters(
   5971       const std::string& response,
   5972       AuthorizationDelegate* authorization_delegate);
   5973   virtual void DictionaryAttackParameters(
   5974       const TPMI_RH_LOCKOUT& lock_handle,
   5975       const std::string& lock_handle_name,
   5976       const UINT32& new_max_tries,
   5977       const UINT32& new_recovery_time,
   5978       const UINT32& lockout_recovery,
   5979       AuthorizationDelegate* authorization_delegate,
   5980       const DictionaryAttackParametersResponse& callback);
   5981   virtual TPM_RC DictionaryAttackParametersSync(
   5982       const TPMI_RH_LOCKOUT& lock_handle,
   5983       const std::string& lock_handle_name,
   5984       const UINT32& new_max_tries,
   5985       const UINT32& new_recovery_time,
   5986       const UINT32& lockout_recovery,
   5987       AuthorizationDelegate* authorization_delegate);
   5988   typedef base::Callback<void(
   5989       TPM_RC response_code)> PP_CommandsResponse;
   5990   static TPM_RC SerializeCommand_PP_Commands(
   5991       const TPMI_RH_PLATFORM& auth,
   5992       const std::string& auth_name,
   5993       const TPML_CC& set_list,
   5994       const TPML_CC& clear_list,
   5995       std::string* serialized_command,
   5996       AuthorizationDelegate* authorization_delegate);
   5997   static TPM_RC ParseResponse_PP_Commands(
   5998       const std::string& response,
   5999       AuthorizationDelegate* authorization_delegate);
   6000   virtual void PP_Commands(
   6001       const TPMI_RH_PLATFORM& auth,
   6002       const std::string& auth_name,
   6003       const TPML_CC& set_list,
   6004       const TPML_CC& clear_list,
   6005       AuthorizationDelegate* authorization_delegate,
   6006       const PP_CommandsResponse& callback);
   6007   virtual TPM_RC PP_CommandsSync(
   6008       const TPMI_RH_PLATFORM& auth,
   6009       const std::string& auth_name,
   6010       const TPML_CC& set_list,
   6011       const TPML_CC& clear_list,
   6012       AuthorizationDelegate* authorization_delegate);
   6013   typedef base::Callback<void(
   6014       TPM_RC response_code)> SetAlgorithmSetResponse;
   6015   static TPM_RC SerializeCommand_SetAlgorithmSet(
   6016       const TPMI_RH_PLATFORM& auth_handle,
   6017       const std::string& auth_handle_name,
   6018       const UINT32& algorithm_set,
   6019       std::string* serialized_command,
   6020       AuthorizationDelegate* authorization_delegate);
   6021   static TPM_RC ParseResponse_SetAlgorithmSet(
   6022       const std::string& response,
   6023       AuthorizationDelegate* authorization_delegate);
   6024   virtual void SetAlgorithmSet(
   6025       const TPMI_RH_PLATFORM& auth_handle,
   6026       const std::string& auth_handle_name,
   6027       const UINT32& algorithm_set,
   6028       AuthorizationDelegate* authorization_delegate,
   6029       const SetAlgorithmSetResponse& callback);
   6030   virtual TPM_RC SetAlgorithmSetSync(
   6031       const TPMI_RH_PLATFORM& auth_handle,
   6032       const std::string& auth_handle_name,
   6033       const UINT32& algorithm_set,
   6034       AuthorizationDelegate* authorization_delegate);
   6035   typedef base::Callback<void(
   6036       TPM_RC response_code)> FieldUpgradeStartResponse;
   6037   static TPM_RC SerializeCommand_FieldUpgradeStart(
   6038       const TPMI_RH_PLATFORM& authorization,
   6039       const std::string& authorization_name,
   6040       const TPMI_DH_OBJECT& key_handle,
   6041       const std::string& key_handle_name,
   6042       const TPM2B_DIGEST& fu_digest,
   6043       const TPMT_SIGNATURE& manifest_signature,
   6044       std::string* serialized_command,
   6045       AuthorizationDelegate* authorization_delegate);
   6046   static TPM_RC ParseResponse_FieldUpgradeStart(
   6047       const std::string& response,
   6048       AuthorizationDelegate* authorization_delegate);
   6049   virtual void FieldUpgradeStart(
   6050       const TPMI_RH_PLATFORM& authorization,
   6051       const std::string& authorization_name,
   6052       const TPMI_DH_OBJECT& key_handle,
   6053       const std::string& key_handle_name,
   6054       const TPM2B_DIGEST& fu_digest,
   6055       const TPMT_SIGNATURE& manifest_signature,
   6056       AuthorizationDelegate* authorization_delegate,
   6057       const FieldUpgradeStartResponse& callback);
   6058   virtual TPM_RC FieldUpgradeStartSync(
   6059       const TPMI_RH_PLATFORM& authorization,
   6060       const std::string& authorization_name,
   6061       const TPMI_DH_OBJECT& key_handle,
   6062       const std::string& key_handle_name,
   6063       const TPM2B_DIGEST& fu_digest,
   6064       const TPMT_SIGNATURE& manifest_signature,
   6065       AuthorizationDelegate* authorization_delegate);
   6066   typedef base::Callback<void(
   6067       TPM_RC response_code,
   6068       const TPMT_HA& next_digest,
   6069       const TPMT_HA& first_digest)> FieldUpgradeDataResponse;
   6070   static TPM_RC SerializeCommand_FieldUpgradeData(
   6071       const TPM2B_MAX_BUFFER& fu_data,
   6072       std::string* serialized_command,
   6073       AuthorizationDelegate* authorization_delegate);
   6074   static TPM_RC ParseResponse_FieldUpgradeData(
   6075       const std::string& response,
   6076       TPMT_HA* next_digest,
   6077       TPMT_HA* first_digest,
   6078       AuthorizationDelegate* authorization_delegate);
   6079   virtual void FieldUpgradeData(
   6080       const TPM2B_MAX_BUFFER& fu_data,
   6081       AuthorizationDelegate* authorization_delegate,
   6082       const FieldUpgradeDataResponse& callback);
   6083   virtual TPM_RC FieldUpgradeDataSync(
   6084       const TPM2B_MAX_BUFFER& fu_data,
   6085       TPMT_HA* next_digest,
   6086       TPMT_HA* first_digest,
   6087       AuthorizationDelegate* authorization_delegate);
   6088   typedef base::Callback<void(
   6089       TPM_RC response_code,
   6090       const TPM2B_MAX_BUFFER& fu_data)> FirmwareReadResponse;
   6091   static TPM_RC SerializeCommand_FirmwareRead(
   6092       const UINT32& sequence_number,
   6093       std::string* serialized_command,
   6094       AuthorizationDelegate* authorization_delegate);
   6095   static TPM_RC ParseResponse_FirmwareRead(
   6096       const std::string& response,
   6097       TPM2B_MAX_BUFFER* fu_data,
   6098       AuthorizationDelegate* authorization_delegate);
   6099   virtual void FirmwareRead(
   6100       const UINT32& sequence_number,
   6101       AuthorizationDelegate* authorization_delegate,
   6102       const FirmwareReadResponse& callback);
   6103   virtual TPM_RC FirmwareReadSync(
   6104       const UINT32& sequence_number,
   6105       TPM2B_MAX_BUFFER* fu_data,
   6106       AuthorizationDelegate* authorization_delegate);
   6107   typedef base::Callback<void(
   6108       TPM_RC response_code,
   6109       const TPMS_CONTEXT& context)> ContextSaveResponse;
   6110   static TPM_RC SerializeCommand_ContextSave(
   6111       const TPMI_DH_CONTEXT& save_handle,
   6112       const std::string& save_handle_name,
   6113       std::string* serialized_command,
   6114       AuthorizationDelegate* authorization_delegate);
   6115   static TPM_RC ParseResponse_ContextSave(
   6116       const std::string& response,
   6117       TPMS_CONTEXT* context,
   6118       AuthorizationDelegate* authorization_delegate);
   6119   virtual void ContextSave(
   6120       const TPMI_DH_CONTEXT& save_handle,
   6121       const std::string& save_handle_name,
   6122       AuthorizationDelegate* authorization_delegate,
   6123       const ContextSaveResponse& callback);
   6124   virtual TPM_RC ContextSaveSync(
   6125       const TPMI_DH_CONTEXT& save_handle,
   6126       const std::string& save_handle_name,
   6127       TPMS_CONTEXT* context,
   6128       AuthorizationDelegate* authorization_delegate);
   6129   typedef base::Callback<void(
   6130       TPM_RC response_code,
   6131       const TPMI_DH_CONTEXT& loaded_handle)> ContextLoadResponse;
   6132   static TPM_RC SerializeCommand_ContextLoad(
   6133       const TPMS_CONTEXT& context,
   6134       std::string* serialized_command,
   6135       AuthorizationDelegate* authorization_delegate);
   6136   static TPM_RC ParseResponse_ContextLoad(
   6137       const std::string& response,
   6138       TPMI_DH_CONTEXT* loaded_handle,
   6139       AuthorizationDelegate* authorization_delegate);
   6140   virtual void ContextLoad(
   6141       const TPMS_CONTEXT& context,
   6142       AuthorizationDelegate* authorization_delegate,
   6143       const ContextLoadResponse& callback);
   6144   virtual TPM_RC ContextLoadSync(
   6145       const TPMS_CONTEXT& context,
   6146       TPMI_DH_CONTEXT* loaded_handle,
   6147       AuthorizationDelegate* authorization_delegate);
   6148   typedef base::Callback<void(
   6149       TPM_RC response_code)> FlushContextResponse;
   6150   static TPM_RC SerializeCommand_FlushContext(
   6151       const TPMI_DH_CONTEXT& flush_handle,
   6152       std::string* serialized_command,
   6153       AuthorizationDelegate* authorization_delegate);
   6154   static TPM_RC ParseResponse_FlushContext(
   6155       const std::string& response,
   6156       AuthorizationDelegate* authorization_delegate);
   6157   virtual void FlushContext(
   6158       const TPMI_DH_CONTEXT& flush_handle,
   6159       AuthorizationDelegate* authorization_delegate,
   6160       const FlushContextResponse& callback);
   6161   virtual TPM_RC FlushContextSync(
   6162       const TPMI_DH_CONTEXT& flush_handle,
   6163       AuthorizationDelegate* authorization_delegate);
   6164   typedef base::Callback<void(
   6165       TPM_RC response_code)> EvictControlResponse;
   6166   static TPM_RC SerializeCommand_EvictControl(
   6167       const TPMI_RH_PROVISION& auth,
   6168       const std::string& auth_name,
   6169       const TPMI_DH_OBJECT& object_handle,
   6170       const std::string& object_handle_name,
   6171       const TPMI_DH_PERSISTENT& persistent_handle,
   6172       std::string* serialized_command,
   6173       AuthorizationDelegate* authorization_delegate);
   6174   static TPM_RC ParseResponse_EvictControl(
   6175       const std::string& response,
   6176       AuthorizationDelegate* authorization_delegate);
   6177   virtual void EvictControl(
   6178       const TPMI_RH_PROVISION& auth,
   6179       const std::string& auth_name,
   6180       const TPMI_DH_OBJECT& object_handle,
   6181       const std::string& object_handle_name,
   6182       const TPMI_DH_PERSISTENT& persistent_handle,
   6183       AuthorizationDelegate* authorization_delegate,
   6184       const EvictControlResponse& callback);
   6185   virtual TPM_RC EvictControlSync(
   6186       const TPMI_RH_PROVISION& auth,
   6187       const std::string& auth_name,
   6188       const TPMI_DH_OBJECT& object_handle,
   6189       const std::string& object_handle_name,
   6190       const TPMI_DH_PERSISTENT& persistent_handle,
   6191       AuthorizationDelegate* authorization_delegate);
   6192   typedef base::Callback<void(
   6193       TPM_RC response_code,
   6194       const TPMS_TIME_INFO& current_time)> ReadClockResponse;
   6195   static TPM_RC SerializeCommand_ReadClock(
   6196       std::string* serialized_command,
   6197       AuthorizationDelegate* authorization_delegate);
   6198   static TPM_RC ParseResponse_ReadClock(
   6199       const std::string& response,
   6200       TPMS_TIME_INFO* current_time,
   6201       AuthorizationDelegate* authorization_delegate);
   6202   virtual void ReadClock(
   6203       AuthorizationDelegate* authorization_delegate,
   6204       const ReadClockResponse& callback);
   6205   virtual TPM_RC ReadClockSync(
   6206       TPMS_TIME_INFO* current_time,
   6207       AuthorizationDelegate* authorization_delegate);
   6208   typedef base::Callback<void(
   6209       TPM_RC response_code)> ClockSetResponse;
   6210   static TPM_RC SerializeCommand_ClockSet(
   6211       const TPMI_RH_PROVISION& auth,
   6212       const std::string& auth_name,
   6213       const UINT64& new_time,
   6214       std::string* serialized_command,
   6215       AuthorizationDelegate* authorization_delegate);
   6216   static TPM_RC ParseResponse_ClockSet(
   6217       const std::string& response,
   6218       AuthorizationDelegate* authorization_delegate);
   6219   virtual void ClockSet(
   6220       const TPMI_RH_PROVISION& auth,
   6221       const std::string& auth_name,
   6222       const UINT64& new_time,
   6223       AuthorizationDelegate* authorization_delegate,
   6224       const ClockSetResponse& callback);
   6225   virtual TPM_RC ClockSetSync(
   6226       const TPMI_RH_PROVISION& auth,
   6227       const std::string& auth_name,
   6228       const UINT64& new_time,
   6229       AuthorizationDelegate* authorization_delegate);
   6230   typedef base::Callback<void(
   6231       TPM_RC response_code)> ClockRateAdjustResponse;
   6232   static TPM_RC SerializeCommand_ClockRateAdjust(
   6233       const TPMI_RH_PROVISION& auth,
   6234       const std::string& auth_name,
   6235       const TPM_CLOCK_ADJUST& rate_adjust,
   6236       std::string* serialized_command,
   6237       AuthorizationDelegate* authorization_delegate);
   6238   static TPM_RC ParseResponse_ClockRateAdjust(
   6239       const std::string& response,
   6240       AuthorizationDelegate* authorization_delegate);
   6241   virtual void ClockRateAdjust(
   6242       const TPMI_RH_PROVISION& auth,
   6243       const std::string& auth_name,
   6244       const TPM_CLOCK_ADJUST& rate_adjust,
   6245       AuthorizationDelegate* authorization_delegate,
   6246       const ClockRateAdjustResponse& callback);
   6247   virtual TPM_RC ClockRateAdjustSync(
   6248       const TPMI_RH_PROVISION& auth,
   6249       const std::string& auth_name,
   6250       const TPM_CLOCK_ADJUST& rate_adjust,
   6251       AuthorizationDelegate* authorization_delegate);
   6252   typedef base::Callback<void(
   6253       TPM_RC response_code,
   6254       const TPMI_YES_NO& more_data,
   6255       const TPMS_CAPABILITY_DATA& capability_data)> GetCapabilityResponse;
   6256   static TPM_RC SerializeCommand_GetCapability(
   6257       const TPM_CAP& capability,
   6258       const UINT32& property,
   6259       const UINT32& property_count,
   6260       std::string* serialized_command,
   6261       AuthorizationDelegate* authorization_delegate);
   6262   static TPM_RC ParseResponse_GetCapability(
   6263       const std::string& response,
   6264       TPMI_YES_NO* more_data,
   6265       TPMS_CAPABILITY_DATA* capability_data,
   6266       AuthorizationDelegate* authorization_delegate);
   6267   virtual void GetCapability(
   6268       const TPM_CAP& capability,
   6269       const UINT32& property,
   6270       const UINT32& property_count,
   6271       AuthorizationDelegate* authorization_delegate,
   6272       const GetCapabilityResponse& callback);
   6273   virtual TPM_RC GetCapabilitySync(
   6274       const TPM_CAP& capability,
   6275       const UINT32& property,
   6276       const UINT32& property_count,
   6277       TPMI_YES_NO* more_data,
   6278       TPMS_CAPABILITY_DATA* capability_data,
   6279       AuthorizationDelegate* authorization_delegate);
   6280   typedef base::Callback<void(
   6281       TPM_RC response_code)> TestParmsResponse;
   6282   static TPM_RC SerializeCommand_TestParms(
   6283       const TPMT_PUBLIC_PARMS& parameters,
   6284       std::string* serialized_command,
   6285       AuthorizationDelegate* authorization_delegate);
   6286   static TPM_RC ParseResponse_TestParms(
   6287       const std::string& response,
   6288       AuthorizationDelegate* authorization_delegate);
   6289   virtual void TestParms(
   6290       const TPMT_PUBLIC_PARMS& parameters,
   6291       AuthorizationDelegate* authorization_delegate,
   6292       const TestParmsResponse& callback);
   6293   virtual TPM_RC TestParmsSync(
   6294       const TPMT_PUBLIC_PARMS& parameters,
   6295       AuthorizationDelegate* authorization_delegate);
   6296   typedef base::Callback<void(
   6297       TPM_RC response_code)> NV_DefineSpaceResponse;
   6298   static TPM_RC SerializeCommand_NV_DefineSpace(
   6299       const TPMI_RH_PROVISION& auth_handle,
   6300       const std::string& auth_handle_name,
   6301       const TPM2B_AUTH& auth,
   6302       const TPM2B_NV_PUBLIC& public_info,
   6303       std::string* serialized_command,
   6304       AuthorizationDelegate* authorization_delegate);
   6305   static TPM_RC ParseResponse_NV_DefineSpace(
   6306       const std::string& response,
   6307       AuthorizationDelegate* authorization_delegate);
   6308   virtual void NV_DefineSpace(
   6309       const TPMI_RH_PROVISION& auth_handle,
   6310       const std::string& auth_handle_name,
   6311       const TPM2B_AUTH& auth,
   6312       const TPM2B_NV_PUBLIC& public_info,
   6313       AuthorizationDelegate* authorization_delegate,
   6314       const NV_DefineSpaceResponse& callback);
   6315   virtual TPM_RC NV_DefineSpaceSync(
   6316       const TPMI_RH_PROVISION& auth_handle,
   6317       const std::string& auth_handle_name,
   6318       const TPM2B_AUTH& auth,
   6319       const TPM2B_NV_PUBLIC& public_info,
   6320       AuthorizationDelegate* authorization_delegate);
   6321   typedef base::Callback<void(
   6322       TPM_RC response_code)> NV_UndefineSpaceResponse;
   6323   static TPM_RC SerializeCommand_NV_UndefineSpace(
   6324       const TPMI_RH_PROVISION& auth_handle,
   6325       const std::string& auth_handle_name,
   6326       const TPMI_RH_NV_INDEX& nv_index,
   6327       const std::string& nv_index_name,
   6328       std::string* serialized_command,
   6329       AuthorizationDelegate* authorization_delegate);
   6330   static TPM_RC ParseResponse_NV_UndefineSpace(
   6331       const std::string& response,
   6332       AuthorizationDelegate* authorization_delegate);
   6333   virtual void NV_UndefineSpace(
   6334       const TPMI_RH_PROVISION& auth_handle,
   6335       const std::string& auth_handle_name,
   6336       const TPMI_RH_NV_INDEX& nv_index,
   6337       const std::string& nv_index_name,
   6338       AuthorizationDelegate* authorization_delegate,
   6339       const NV_UndefineSpaceResponse& callback);
   6340   virtual TPM_RC NV_UndefineSpaceSync(
   6341       const TPMI_RH_PROVISION& auth_handle,
   6342       const std::string& auth_handle_name,
   6343       const TPMI_RH_NV_INDEX& nv_index,
   6344       const std::string& nv_index_name,
   6345       AuthorizationDelegate* authorization_delegate);
   6346   typedef base::Callback<void(
   6347       TPM_RC response_code)> NV_UndefineSpaceSpecialResponse;
   6348   static TPM_RC SerializeCommand_NV_UndefineSpaceSpecial(
   6349       const TPMI_RH_NV_INDEX& nv_index,
   6350       const std::string& nv_index_name,
   6351       const TPMI_RH_PLATFORM& platform,
   6352       const std::string& platform_name,
   6353       std::string* serialized_command,
   6354       AuthorizationDelegate* authorization_delegate);
   6355   static TPM_RC ParseResponse_NV_UndefineSpaceSpecial(
   6356       const std::string& response,
   6357       AuthorizationDelegate* authorization_delegate);
   6358   virtual void NV_UndefineSpaceSpecial(
   6359       const TPMI_RH_NV_INDEX& nv_index,
   6360       const std::string& nv_index_name,
   6361       const TPMI_RH_PLATFORM& platform,
   6362       const std::string& platform_name,
   6363       AuthorizationDelegate* authorization_delegate,
   6364       const NV_UndefineSpaceSpecialResponse& callback);
   6365   virtual TPM_RC NV_UndefineSpaceSpecialSync(
   6366       const TPMI_RH_NV_INDEX& nv_index,
   6367       const std::string& nv_index_name,
   6368       const TPMI_RH_PLATFORM& platform,
   6369       const std::string& platform_name,
   6370       AuthorizationDelegate* authorization_delegate);
   6371   typedef base::Callback<void(
   6372       TPM_RC response_code,
   6373       const TPM2B_NV_PUBLIC& nv_public,
   6374       const TPM2B_NAME& nv_name)> NV_ReadPublicResponse;
   6375   static TPM_RC SerializeCommand_NV_ReadPublic(
   6376       const TPMI_RH_NV_INDEX& nv_index,
   6377       const std::string& nv_index_name,
   6378       std::string* serialized_command,
   6379       AuthorizationDelegate* authorization_delegate);
   6380   static TPM_RC ParseResponse_NV_ReadPublic(
   6381       const std::string& response,
   6382       TPM2B_NV_PUBLIC* nv_public,
   6383       TPM2B_NAME* nv_name,
   6384       AuthorizationDelegate* authorization_delegate);
   6385   virtual void NV_ReadPublic(
   6386       const TPMI_RH_NV_INDEX& nv_index,
   6387       const std::string& nv_index_name,
   6388       AuthorizationDelegate* authorization_delegate,
   6389       const NV_ReadPublicResponse& callback);
   6390   virtual TPM_RC NV_ReadPublicSync(
   6391       const TPMI_RH_NV_INDEX& nv_index,
   6392       const std::string& nv_index_name,
   6393       TPM2B_NV_PUBLIC* nv_public,
   6394       TPM2B_NAME* nv_name,
   6395       AuthorizationDelegate* authorization_delegate);
   6396   typedef base::Callback<void(
   6397       TPM_RC response_code)> NV_WriteResponse;
   6398   static TPM_RC SerializeCommand_NV_Write(
   6399       const TPMI_RH_NV_AUTH& auth_handle,
   6400       const std::string& auth_handle_name,
   6401       const TPMI_RH_NV_INDEX& nv_index,
   6402       const std::string& nv_index_name,
   6403       const TPM2B_MAX_NV_BUFFER& data,
   6404       const UINT16& offset,
   6405       std::string* serialized_command,
   6406       AuthorizationDelegate* authorization_delegate);
   6407   static TPM_RC ParseResponse_NV_Write(
   6408       const std::string& response,
   6409       AuthorizationDelegate* authorization_delegate);
   6410   virtual void NV_Write(
   6411       const TPMI_RH_NV_AUTH& auth_handle,
   6412       const std::string& auth_handle_name,
   6413       const TPMI_RH_NV_INDEX& nv_index,
   6414       const std::string& nv_index_name,
   6415       const TPM2B_MAX_NV_BUFFER& data,
   6416       const UINT16& offset,
   6417       AuthorizationDelegate* authorization_delegate,
   6418       const NV_WriteResponse& callback);
   6419   virtual TPM_RC NV_WriteSync(
   6420       const TPMI_RH_NV_AUTH& auth_handle,
   6421       const std::string& auth_handle_name,
   6422       const TPMI_RH_NV_INDEX& nv_index,
   6423       const std::string& nv_index_name,
   6424       const TPM2B_MAX_NV_BUFFER& data,
   6425       const UINT16& offset,
   6426       AuthorizationDelegate* authorization_delegate);
   6427   typedef base::Callback<void(
   6428       TPM_RC response_code)> NV_IncrementResponse;
   6429   static TPM_RC SerializeCommand_NV_Increment(
   6430       const TPMI_RH_NV_AUTH& auth_handle,
   6431       const std::string& auth_handle_name,
   6432       const TPMI_RH_NV_INDEX& nv_index,
   6433       const std::string& nv_index_name,
   6434       std::string* serialized_command,
   6435       AuthorizationDelegate* authorization_delegate);
   6436   static TPM_RC ParseResponse_NV_Increment(
   6437       const std::string& response,
   6438       AuthorizationDelegate* authorization_delegate);
   6439   virtual void NV_Increment(
   6440       const TPMI_RH_NV_AUTH& auth_handle,
   6441       const std::string& auth_handle_name,
   6442       const TPMI_RH_NV_INDEX& nv_index,
   6443       const std::string& nv_index_name,
   6444       AuthorizationDelegate* authorization_delegate,
   6445       const NV_IncrementResponse& callback);
   6446   virtual TPM_RC NV_IncrementSync(
   6447       const TPMI_RH_NV_AUTH& auth_handle,
   6448       const std::string& auth_handle_name,
   6449       const TPMI_RH_NV_INDEX& nv_index,
   6450       const std::string& nv_index_name,
   6451       AuthorizationDelegate* authorization_delegate);
   6452   typedef base::Callback<void(
   6453       TPM_RC response_code)> NV_ExtendResponse;
   6454   static TPM_RC SerializeCommand_NV_Extend(
   6455       const TPMI_RH_NV_AUTH& auth_handle,
   6456       const std::string& auth_handle_name,
   6457       const TPMI_RH_NV_INDEX& nv_index,
   6458       const std::string& nv_index_name,
   6459       const TPM2B_MAX_NV_BUFFER& data,
   6460       std::string* serialized_command,
   6461       AuthorizationDelegate* authorization_delegate);
   6462   static TPM_RC ParseResponse_NV_Extend(
   6463       const std::string& response,
   6464       AuthorizationDelegate* authorization_delegate);
   6465   virtual void NV_Extend(
   6466       const TPMI_RH_NV_AUTH& auth_handle,
   6467       const std::string& auth_handle_name,
   6468       const TPMI_RH_NV_INDEX& nv_index,
   6469       const std::string& nv_index_name,
   6470       const TPM2B_MAX_NV_BUFFER& data,
   6471       AuthorizationDelegate* authorization_delegate,
   6472       const NV_ExtendResponse& callback);
   6473   virtual TPM_RC NV_ExtendSync(
   6474       const TPMI_RH_NV_AUTH& auth_handle,
   6475       const std::string& auth_handle_name,
   6476       const TPMI_RH_NV_INDEX& nv_index,
   6477       const std::string& nv_index_name,
   6478       const TPM2B_MAX_NV_BUFFER& data,
   6479       AuthorizationDelegate* authorization_delegate);
   6480   typedef base::Callback<void(
   6481       TPM_RC response_code)> NV_SetBitsResponse;
   6482   static TPM_RC SerializeCommand_NV_SetBits(
   6483       const TPMI_RH_NV_AUTH& auth_handle,
   6484       const std::string& auth_handle_name,
   6485       const TPMI_RH_NV_INDEX& nv_index,
   6486       const std::string& nv_index_name,
   6487       const UINT64& bits,
   6488       std::string* serialized_command,
   6489       AuthorizationDelegate* authorization_delegate);
   6490   static TPM_RC ParseResponse_NV_SetBits(
   6491       const std::string& response,
   6492       AuthorizationDelegate* authorization_delegate);
   6493   virtual void NV_SetBits(
   6494       const TPMI_RH_NV_AUTH& auth_handle,
   6495       const std::string& auth_handle_name,
   6496       const TPMI_RH_NV_INDEX& nv_index,
   6497       const std::string& nv_index_name,
   6498       const UINT64& bits,
   6499       AuthorizationDelegate* authorization_delegate,
   6500       const NV_SetBitsResponse& callback);
   6501   virtual TPM_RC NV_SetBitsSync(
   6502       const TPMI_RH_NV_AUTH& auth_handle,
   6503       const std::string& auth_handle_name,
   6504       const TPMI_RH_NV_INDEX& nv_index,
   6505       const std::string& nv_index_name,
   6506       const UINT64& bits,
   6507       AuthorizationDelegate* authorization_delegate);
   6508   typedef base::Callback<void(
   6509       TPM_RC response_code)> NV_WriteLockResponse;
   6510   static TPM_RC SerializeCommand_NV_WriteLock(
   6511       const TPMI_RH_NV_AUTH& auth_handle,
   6512       const std::string& auth_handle_name,
   6513       const TPMI_RH_NV_INDEX& nv_index,
   6514       const std::string& nv_index_name,
   6515       std::string* serialized_command,
   6516       AuthorizationDelegate* authorization_delegate);
   6517   static TPM_RC ParseResponse_NV_WriteLock(
   6518       const std::string& response,
   6519       AuthorizationDelegate* authorization_delegate);
   6520   virtual void NV_WriteLock(
   6521       const TPMI_RH_NV_AUTH& auth_handle,
   6522       const std::string& auth_handle_name,
   6523       const TPMI_RH_NV_INDEX& nv_index,
   6524       const std::string& nv_index_name,
   6525       AuthorizationDelegate* authorization_delegate,
   6526       const NV_WriteLockResponse& callback);
   6527   virtual TPM_RC NV_WriteLockSync(
   6528       const TPMI_RH_NV_AUTH& auth_handle,
   6529       const std::string& auth_handle_name,
   6530       const TPMI_RH_NV_INDEX& nv_index,
   6531       const std::string& nv_index_name,
   6532       AuthorizationDelegate* authorization_delegate);
   6533   typedef base::Callback<void(
   6534       TPM_RC response_code)> NV_GlobalWriteLockResponse;
   6535   static TPM_RC SerializeCommand_NV_GlobalWriteLock(
   6536       const TPMI_RH_PROVISION& auth_handle,
   6537       const std::string& auth_handle_name,
   6538       std::string* serialized_command,
   6539       AuthorizationDelegate* authorization_delegate);
   6540   static TPM_RC ParseResponse_NV_GlobalWriteLock(
   6541       const std::string& response,
   6542       AuthorizationDelegate* authorization_delegate);
   6543   virtual void NV_GlobalWriteLock(
   6544       const TPMI_RH_PROVISION& auth_handle,
   6545       const std::string& auth_handle_name,
   6546       AuthorizationDelegate* authorization_delegate,
   6547       const NV_GlobalWriteLockResponse& callback);
   6548   virtual TPM_RC NV_GlobalWriteLockSync(
   6549       const TPMI_RH_PROVISION& auth_handle,
   6550       const std::string& auth_handle_name,
   6551       AuthorizationDelegate* authorization_delegate);
   6552   typedef base::Callback<void(
   6553       TPM_RC response_code,
   6554       const TPM2B_MAX_NV_BUFFER& data)> NV_ReadResponse;
   6555   static TPM_RC SerializeCommand_NV_Read(
   6556       const TPMI_RH_NV_AUTH& auth_handle,
   6557       const std::string& auth_handle_name,
   6558       const TPMI_RH_NV_INDEX& nv_index,
   6559       const std::string& nv_index_name,
   6560       const UINT16& size,
   6561       const UINT16& offset,
   6562       std::string* serialized_command,
   6563       AuthorizationDelegate* authorization_delegate);
   6564   static TPM_RC ParseResponse_NV_Read(
   6565       const std::string& response,
   6566       TPM2B_MAX_NV_BUFFER* data,
   6567       AuthorizationDelegate* authorization_delegate);
   6568   virtual void NV_Read(
   6569       const TPMI_RH_NV_AUTH& auth_handle,
   6570       const std::string& auth_handle_name,
   6571       const TPMI_RH_NV_INDEX& nv_index,
   6572       const std::string& nv_index_name,
   6573       const UINT16& size,
   6574       const UINT16& offset,
   6575       AuthorizationDelegate* authorization_delegate,
   6576       const NV_ReadResponse& callback);
   6577   virtual TPM_RC NV_ReadSync(
   6578       const TPMI_RH_NV_AUTH& auth_handle,
   6579       const std::string& auth_handle_name,
   6580       const TPMI_RH_NV_INDEX& nv_index,
   6581       const std::string& nv_index_name,
   6582       const UINT16& size,
   6583       const UINT16& offset,
   6584       TPM2B_MAX_NV_BUFFER* data,
   6585       AuthorizationDelegate* authorization_delegate);
   6586   typedef base::Callback<void(
   6587       TPM_RC response_code)> NV_ReadLockResponse;
   6588   static TPM_RC SerializeCommand_NV_ReadLock(
   6589       const TPMI_RH_NV_AUTH& auth_handle,
   6590       const std::string& auth_handle_name,
   6591       const TPMI_RH_NV_INDEX& nv_index,
   6592       const std::string& nv_index_name,
   6593       std::string* serialized_command,
   6594       AuthorizationDelegate* authorization_delegate);
   6595   static TPM_RC ParseResponse_NV_ReadLock(
   6596       const std::string& response,
   6597       AuthorizationDelegate* authorization_delegate);
   6598   virtual void NV_ReadLock(
   6599       const TPMI_RH_NV_AUTH& auth_handle,
   6600       const std::string& auth_handle_name,
   6601       const TPMI_RH_NV_INDEX& nv_index,
   6602       const std::string& nv_index_name,
   6603       AuthorizationDelegate* authorization_delegate,
   6604       const NV_ReadLockResponse& callback);
   6605   virtual TPM_RC NV_ReadLockSync(
   6606       const TPMI_RH_NV_AUTH& auth_handle,
   6607       const std::string& auth_handle_name,
   6608       const TPMI_RH_NV_INDEX& nv_index,
   6609       const std::string& nv_index_name,
   6610       AuthorizationDelegate* authorization_delegate);
   6611   typedef base::Callback<void(
   6612       TPM_RC response_code)> NV_ChangeAuthResponse;
   6613   static TPM_RC SerializeCommand_NV_ChangeAuth(
   6614       const TPMI_RH_NV_INDEX& nv_index,
   6615       const std::string& nv_index_name,
   6616       const TPM2B_AUTH& new_auth,
   6617       std::string* serialized_command,
   6618       AuthorizationDelegate* authorization_delegate);
   6619   static TPM_RC ParseResponse_NV_ChangeAuth(
   6620       const std::string& response,
   6621       AuthorizationDelegate* authorization_delegate);
   6622   virtual void NV_ChangeAuth(
   6623       const TPMI_RH_NV_INDEX& nv_index,
   6624       const std::string& nv_index_name,
   6625       const TPM2B_AUTH& new_auth,
   6626       AuthorizationDelegate* authorization_delegate,
   6627       const NV_ChangeAuthResponse& callback);
   6628   virtual TPM_RC NV_ChangeAuthSync(
   6629       const TPMI_RH_NV_INDEX& nv_index,
   6630       const std::string& nv_index_name,
   6631       const TPM2B_AUTH& new_auth,
   6632       AuthorizationDelegate* authorization_delegate);
   6633   typedef base::Callback<void(
   6634       TPM_RC response_code,
   6635       const TPM2B_ATTEST& certify_info,
   6636       const TPMT_SIGNATURE& signature)> NV_CertifyResponse;
   6637   static TPM_RC SerializeCommand_NV_Certify(
   6638       const TPMI_DH_OBJECT& sign_handle,
   6639       const std::string& sign_handle_name,
   6640       const TPMI_RH_NV_AUTH& auth_handle,
   6641       const std::string& auth_handle_name,
   6642       const TPMI_RH_NV_INDEX& nv_index,
   6643       const std::string& nv_index_name,
   6644       const TPM2B_DATA& qualifying_data,
   6645       const TPMT_SIG_SCHEME& in_scheme,
   6646       const UINT16& size,
   6647       const UINT16& offset,
   6648       std::string* serialized_command,
   6649       AuthorizationDelegate* authorization_delegate);
   6650   static TPM_RC ParseResponse_NV_Certify(
   6651       const std::string& response,
   6652       TPM2B_ATTEST* certify_info,
   6653       TPMT_SIGNATURE* signature,
   6654       AuthorizationDelegate* authorization_delegate);
   6655   virtual void NV_Certify(
   6656       const TPMI_DH_OBJECT& sign_handle,
   6657       const std::string& sign_handle_name,
   6658       const TPMI_RH_NV_AUTH& auth_handle,
   6659       const std::string& auth_handle_name,
   6660       const TPMI_RH_NV_INDEX& nv_index,
   6661       const std::string& nv_index_name,
   6662       const TPM2B_DATA& qualifying_data,
   6663       const TPMT_SIG_SCHEME& in_scheme,
   6664       const UINT16& size,
   6665       const UINT16& offset,
   6666       AuthorizationDelegate* authorization_delegate,
   6667       const NV_CertifyResponse& callback);
   6668   virtual TPM_RC NV_CertifySync(
   6669       const TPMI_DH_OBJECT& sign_handle,
   6670       const std::string& sign_handle_name,
   6671       const TPMI_RH_NV_AUTH& auth_handle,
   6672       const std::string& auth_handle_name,
   6673       const TPMI_RH_NV_INDEX& nv_index,
   6674       const std::string& nv_index_name,
   6675       const TPM2B_DATA& qualifying_data,
   6676       const TPMT_SIG_SCHEME& in_scheme,
   6677       const UINT16& size,
   6678       const UINT16& offset,
   6679       TPM2B_ATTEST* certify_info,
   6680       TPMT_SIGNATURE* signature,
   6681       AuthorizationDelegate* authorization_delegate);
   6682 
   6683  private:
   6684   CommandTransceiver* transceiver_;
   6685 
   6686   DISALLOW_COPY_AND_ASSIGN(Tpm);
   6687 };
   6688 
   6689 }  // namespace trunks
   6690 
   6691 #endif  // TRUNKS_TPM_GENERATED_H_
   6692