C++程序  |  1281行  |  43.43 KB

// Copyright 2015 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// THIS CODE IS GENERATED - DO NOT MODIFY!

#include "tpm_generated.h"
#include "HandleProcess_fp.h"
#include "Implementation.h"
#include "TPM_Types.h"

TPM_RC ParseHandleBuffer(TPM_CC command_code,
                         BYTE** request_handle_buffer_start,
                         INT32* request_buffer_remaining_size,
                         TPM_HANDLE request_handles[],
                         UINT32* num_request_handles) {
  TPM_RC result = TPM_RC_SUCCESS;
  *num_request_handles = 0;
  switch (command_code) {
#ifdef TPM_CC_ActivateCredential
    case TPM_CC_ActivateCredential:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_Certify
    case TPM_CC_Certify:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_CertifyCreation
    case TPM_CC_CertifyCreation:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_ChangeEPS
    case TPM_CC_ChangeEPS:
      result = TPMI_RH_PLATFORM_Unmarshal(
          (TPMI_RH_PLATFORM*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_ChangePPS
    case TPM_CC_ChangePPS:
      result = TPMI_RH_PLATFORM_Unmarshal(
          (TPMI_RH_PLATFORM*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_Clear
    case TPM_CC_Clear:
      result = TPMI_RH_CLEAR_Unmarshal(
          (TPMI_RH_CLEAR*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_ClearControl
    case TPM_CC_ClearControl:
      result = TPMI_RH_CLEAR_Unmarshal(
          (TPMI_RH_CLEAR*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_ClockRateAdjust
    case TPM_CC_ClockRateAdjust:
      result = TPMI_RH_PROVISION_Unmarshal(
          (TPMI_RH_PROVISION*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_ClockSet
    case TPM_CC_ClockSet:
      result = TPMI_RH_PROVISION_Unmarshal(
          (TPMI_RH_PROVISION*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_Commit
    case TPM_CC_Commit:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_ContextLoad
    case TPM_CC_ContextLoad:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_ContextSave
    case TPM_CC_ContextSave:
      result = TPMI_DH_CONTEXT_Unmarshal(
          (TPMI_DH_CONTEXT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_Create
    case TPM_CC_Create:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_CreatePrimary
    case TPM_CC_CreatePrimary:
      result = TPMI_RH_HIERARCHY_Unmarshal(
          (TPMI_RH_HIERARCHY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_DictionaryAttackLockReset
    case TPM_CC_DictionaryAttackLockReset:
      result = TPMI_RH_LOCKOUT_Unmarshal(
          (TPMI_RH_LOCKOUT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_DictionaryAttackParameters
    case TPM_CC_DictionaryAttackParameters:
      result = TPMI_RH_LOCKOUT_Unmarshal(
          (TPMI_RH_LOCKOUT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_Duplicate
    case TPM_CC_Duplicate:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_ECC_Parameters
    case TPM_CC_ECC_Parameters:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_ECDH_KeyGen
    case TPM_CC_ECDH_KeyGen:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_ECDH_ZGen
    case TPM_CC_ECDH_ZGen:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_EC_Ephemeral
    case TPM_CC_EC_Ephemeral:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_EncryptDecrypt
    case TPM_CC_EncryptDecrypt:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_EventSequenceComplete
    case TPM_CC_EventSequenceComplete:
      result = TPMI_DH_PCR_Unmarshal(
          (TPMI_DH_PCR*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_EvictControl
    case TPM_CC_EvictControl:
      result = TPMI_RH_PROVISION_Unmarshal(
          (TPMI_RH_PROVISION*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_FieldUpgradeData
    case TPM_CC_FieldUpgradeData:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_FieldUpgradeStart
    case TPM_CC_FieldUpgradeStart:
      result = TPMI_RH_PLATFORM_Unmarshal(
          (TPMI_RH_PLATFORM*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_FirmwareRead
    case TPM_CC_FirmwareRead:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_FlushContext
    case TPM_CC_FlushContext:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_GetCapability
    case TPM_CC_GetCapability:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_GetCommandAuditDigest
    case TPM_CC_GetCommandAuditDigest:
      result = TPMI_RH_ENDORSEMENT_Unmarshal(
          (TPMI_RH_ENDORSEMENT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_GetRandom
    case TPM_CC_GetRandom:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_GetSessionAuditDigest
    case TPM_CC_GetSessionAuditDigest:
      result = TPMI_RH_ENDORSEMENT_Unmarshal(
          (TPMI_RH_ENDORSEMENT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_SH_HMAC_Unmarshal(
          (TPMI_SH_HMAC*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_GetTestResult
    case TPM_CC_GetTestResult:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_GetTime
    case TPM_CC_GetTime:
      result = TPMI_RH_ENDORSEMENT_Unmarshal(
          (TPMI_RH_ENDORSEMENT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_HMAC
    case TPM_CC_HMAC:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_HMAC_Start
    case TPM_CC_HMAC_Start:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_Hash
    case TPM_CC_Hash:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_HashSequenceStart
    case TPM_CC_HashSequenceStart:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_HierarchyChangeAuth
    case TPM_CC_HierarchyChangeAuth:
      result = TPMI_RH_HIERARCHY_AUTH_Unmarshal(
          (TPMI_RH_HIERARCHY_AUTH*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_HierarchyControl
    case TPM_CC_HierarchyControl:
      result = TPMI_RH_HIERARCHY_Unmarshal(
          (TPMI_RH_HIERARCHY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_Import
    case TPM_CC_Import:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_IncrementalSelfTest
    case TPM_CC_IncrementalSelfTest:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_Load
    case TPM_CC_Load:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_LoadExternal
    case TPM_CC_LoadExternal:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_MakeCredential
    case TPM_CC_MakeCredential:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_NV_Certify
    case TPM_CC_NV_Certify:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_RH_NV_AUTH_Unmarshal(
          (TPMI_RH_NV_AUTH*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_RH_NV_INDEX_Unmarshal(
          (TPMI_RH_NV_INDEX*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_NV_ChangeAuth
    case TPM_CC_NV_ChangeAuth:
      result = TPMI_RH_NV_INDEX_Unmarshal(
          (TPMI_RH_NV_INDEX*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_NV_DefineSpace
    case TPM_CC_NV_DefineSpace:
      result = TPMI_RH_PROVISION_Unmarshal(
          (TPMI_RH_PROVISION*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_NV_Extend
    case TPM_CC_NV_Extend:
      result = TPMI_RH_NV_AUTH_Unmarshal(
          (TPMI_RH_NV_AUTH*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_RH_NV_INDEX_Unmarshal(
          (TPMI_RH_NV_INDEX*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_NV_GlobalWriteLock
    case TPM_CC_NV_GlobalWriteLock:
      result = TPMI_RH_PROVISION_Unmarshal(
          (TPMI_RH_PROVISION*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_NV_Increment
    case TPM_CC_NV_Increment:
      result = TPMI_RH_NV_AUTH_Unmarshal(
          (TPMI_RH_NV_AUTH*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_RH_NV_INDEX_Unmarshal(
          (TPMI_RH_NV_INDEX*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_NV_Read
    case TPM_CC_NV_Read:
      result = TPMI_RH_NV_AUTH_Unmarshal(
          (TPMI_RH_NV_AUTH*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_RH_NV_INDEX_Unmarshal(
          (TPMI_RH_NV_INDEX*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_NV_ReadLock
    case TPM_CC_NV_ReadLock:
      result = TPMI_RH_NV_AUTH_Unmarshal(
          (TPMI_RH_NV_AUTH*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_RH_NV_INDEX_Unmarshal(
          (TPMI_RH_NV_INDEX*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_NV_ReadPublic
    case TPM_CC_NV_ReadPublic:
      result = TPMI_RH_NV_INDEX_Unmarshal(
          (TPMI_RH_NV_INDEX*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_NV_SetBits
    case TPM_CC_NV_SetBits:
      result = TPMI_RH_NV_AUTH_Unmarshal(
          (TPMI_RH_NV_AUTH*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_RH_NV_INDEX_Unmarshal(
          (TPMI_RH_NV_INDEX*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_NV_UndefineSpace
    case TPM_CC_NV_UndefineSpace:
      result = TPMI_RH_PROVISION_Unmarshal(
          (TPMI_RH_PROVISION*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_RH_NV_INDEX_Unmarshal(
          (TPMI_RH_NV_INDEX*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_NV_UndefineSpaceSpecial
    case TPM_CC_NV_UndefineSpaceSpecial:
      result = TPMI_RH_NV_INDEX_Unmarshal(
          (TPMI_RH_NV_INDEX*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_RH_PLATFORM_Unmarshal(
          (TPMI_RH_PLATFORM*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_NV_Write
    case TPM_CC_NV_Write:
      result = TPMI_RH_NV_AUTH_Unmarshal(
          (TPMI_RH_NV_AUTH*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_RH_NV_INDEX_Unmarshal(
          (TPMI_RH_NV_INDEX*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_NV_WriteLock
    case TPM_CC_NV_WriteLock:
      result = TPMI_RH_NV_AUTH_Unmarshal(
          (TPMI_RH_NV_AUTH*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_RH_NV_INDEX_Unmarshal(
          (TPMI_RH_NV_INDEX*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_ObjectChangeAuth
    case TPM_CC_ObjectChangeAuth:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PCR_Allocate
    case TPM_CC_PCR_Allocate:
      result = TPMI_RH_PLATFORM_Unmarshal(
          (TPMI_RH_PLATFORM*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PCR_Event
    case TPM_CC_PCR_Event:
      result = TPMI_DH_PCR_Unmarshal(
          (TPMI_DH_PCR*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PCR_Extend
    case TPM_CC_PCR_Extend:
      result = TPMI_DH_PCR_Unmarshal(
          (TPMI_DH_PCR*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PCR_Read
    case TPM_CC_PCR_Read:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PCR_Reset
    case TPM_CC_PCR_Reset:
      result = TPMI_DH_PCR_Unmarshal(
          (TPMI_DH_PCR*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PCR_SetAuthPolicy
    case TPM_CC_PCR_SetAuthPolicy:
      result = TPMI_RH_PLATFORM_Unmarshal(
          (TPMI_RH_PLATFORM*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_DH_PCR_Unmarshal(
          (TPMI_DH_PCR*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PCR_SetAuthValue
    case TPM_CC_PCR_SetAuthValue:
      result = TPMI_DH_PCR_Unmarshal(
          (TPMI_DH_PCR*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PP_Commands
    case TPM_CC_PP_Commands:
      result = TPMI_RH_PLATFORM_Unmarshal(
          (TPMI_RH_PLATFORM*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyAuthValue
    case TPM_CC_PolicyAuthValue:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyAuthorize
    case TPM_CC_PolicyAuthorize:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyCommandCode
    case TPM_CC_PolicyCommandCode:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyCounterTimer
    case TPM_CC_PolicyCounterTimer:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyCpHash
    case TPM_CC_PolicyCpHash:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyDuplicationSelect
    case TPM_CC_PolicyDuplicationSelect:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyGetDigest
    case TPM_CC_PolicyGetDigest:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyLocality
    case TPM_CC_PolicyLocality:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyNV
    case TPM_CC_PolicyNV:
      result = TPMI_RH_NV_AUTH_Unmarshal(
          (TPMI_RH_NV_AUTH*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_RH_NV_INDEX_Unmarshal(
          (TPMI_RH_NV_INDEX*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyNameHash
    case TPM_CC_PolicyNameHash:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyNvWritten
    case TPM_CC_PolicyNvWritten:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyOR
    case TPM_CC_PolicyOR:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyPCR
    case TPM_CC_PolicyPCR:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyPassword
    case TPM_CC_PolicyPassword:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyPhysicalPresence
    case TPM_CC_PolicyPhysicalPresence:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyRestart
    case TPM_CC_PolicyRestart:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicySecret
    case TPM_CC_PolicySecret:
      result = TPMI_DH_ENTITY_Unmarshal(
          (TPMI_DH_ENTITY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicySigned
    case TPM_CC_PolicySigned:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_PolicyTicket
    case TPM_CC_PolicyTicket:
      result = TPMI_SH_POLICY_Unmarshal(
          (TPMI_SH_POLICY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_Quote
    case TPM_CC_Quote:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_RSA_Decrypt
    case TPM_CC_RSA_Decrypt:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_RSA_Encrypt
    case TPM_CC_RSA_Encrypt:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_ReadClock
    case TPM_CC_ReadClock:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_ReadPublic
    case TPM_CC_ReadPublic:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_Rewrap
    case TPM_CC_Rewrap:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_SelfTest
    case TPM_CC_SelfTest:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_SequenceComplete
    case TPM_CC_SequenceComplete:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_SequenceUpdate
    case TPM_CC_SequenceUpdate:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_SetAlgorithmSet
    case TPM_CC_SetAlgorithmSet:
      result = TPMI_RH_PLATFORM_Unmarshal(
          (TPMI_RH_PLATFORM*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_SetCommandCodeAuditStatus
    case TPM_CC_SetCommandCodeAuditStatus:
      result = TPMI_RH_PROVISION_Unmarshal(
          (TPMI_RH_PROVISION*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_SetPrimaryPolicy
    case TPM_CC_SetPrimaryPolicy:
      result = TPMI_RH_HIERARCHY_AUTH_Unmarshal(
          (TPMI_RH_HIERARCHY_AUTH*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_Shutdown
    case TPM_CC_Shutdown:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_Sign
    case TPM_CC_Sign:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_StartAuthSession
    case TPM_CC_StartAuthSession:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      result = TPMI_DH_ENTITY_Unmarshal(
          (TPMI_DH_ENTITY*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, TRUE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_Startup
    case TPM_CC_Startup:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_StirRandom
    case TPM_CC_StirRandom:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_TestParms
    case TPM_CC_TestParms:
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_Unseal
    case TPM_CC_Unseal:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_VerifySignature
    case TPM_CC_VerifySignature:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
#ifdef TPM_CC_ZGen_2Phase
    case TPM_CC_ZGen_2Phase:
      result = TPMI_DH_OBJECT_Unmarshal(
          (TPMI_DH_OBJECT*)&request_handles[*num_request_handles],
          request_handle_buffer_start, request_buffer_remaining_size, FALSE);
      if (result != TPM_RC_SUCCESS) {
        return result;
      }
      ++(*num_request_handles);
      return TPM_RC_SUCCESS;
#endif
    default:
      return TPM_RC_COMMAND_CODE;
  }
}