You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1034 lines
43 KiB
1034 lines
43 KiB
/* Microsoft Reference Implementation for TPM 2.0
|
|
*
|
|
* The copyright in this software is being made available under the BSD License,
|
|
* included below. This software may be subject to other third party and
|
|
* contributor rights, including patent rights, and no such rights are granted
|
|
* under this license.
|
|
*
|
|
* Copyright (c) Microsoft Corporation
|
|
*
|
|
* All rights reserved.
|
|
*
|
|
* BSD License
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without modification,
|
|
* are permitted provided that the following conditions are met:
|
|
*
|
|
* Redistributions of source code must retain the above copyright notice, this list
|
|
* of conditions and the following disclaimer.
|
|
*
|
|
* Redistributions in binary form must reproduce the above copyright notice, this
|
|
* list of conditions and the following disclaimer in the documentation and/or
|
|
* other materials provided with the distribution.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ""AS IS""
|
|
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
|
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
/*(Auto-generated)
|
|
* Created by TpmDispatch; Version 4.0 July 8,2017
|
|
* Date: Feb 28, 2020 Time: 03:04:48PM
|
|
*/
|
|
|
|
#if CC_Startup
|
|
case TPM_CC_Startup:
|
|
break;
|
|
#endif // CC_Startup
|
|
#if CC_Shutdown
|
|
case TPM_CC_Shutdown:
|
|
break;
|
|
#endif // CC_Shutdown
|
|
#if CC_SelfTest
|
|
case TPM_CC_SelfTest:
|
|
break;
|
|
#endif // CC_SelfTest
|
|
#if CC_IncrementalSelfTest
|
|
case TPM_CC_IncrementalSelfTest:
|
|
break;
|
|
#endif // CC_IncrementalSelfTest
|
|
#if CC_GetTestResult
|
|
case TPM_CC_GetTestResult:
|
|
break;
|
|
#endif // CC_GetTestResult
|
|
#if CC_StartAuthSession
|
|
case TPM_CC_StartAuthSession:
|
|
*handleCount = 2;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_DH_ENTITY_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_StartAuthSession
|
|
#if CC_PolicyRestart
|
|
case TPM_CC_PolicyRestart:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyRestart
|
|
#if CC_Create
|
|
case TPM_CC_Create:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_Create
|
|
#if CC_Load
|
|
case TPM_CC_Load:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_Load
|
|
#if CC_LoadExternal
|
|
case TPM_CC_LoadExternal:
|
|
break;
|
|
#endif // CC_LoadExternal
|
|
#if CC_ReadPublic
|
|
case TPM_CC_ReadPublic:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_ReadPublic
|
|
#if CC_ActivateCredential
|
|
case TPM_CC_ActivateCredential:
|
|
*handleCount = 2;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_ActivateCredential
|
|
#if CC_MakeCredential
|
|
case TPM_CC_MakeCredential:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_MakeCredential
|
|
#if CC_Unseal
|
|
case TPM_CC_Unseal:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_Unseal
|
|
#if CC_ObjectChangeAuth
|
|
case TPM_CC_ObjectChangeAuth:
|
|
*handleCount = 2;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_ObjectChangeAuth
|
|
#if CC_CreateLoaded
|
|
case TPM_CC_CreateLoaded:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_PARENT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_CreateLoaded
|
|
#if CC_Duplicate
|
|
case TPM_CC_Duplicate:
|
|
*handleCount = 2;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_Duplicate
|
|
#if CC_Rewrap
|
|
case TPM_CC_Rewrap:
|
|
*handleCount = 2;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_Rewrap
|
|
#if CC_Import
|
|
case TPM_CC_Import:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_Import
|
|
#if CC_RSA_Encrypt
|
|
case TPM_CC_RSA_Encrypt:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_RSA_Encrypt
|
|
#if CC_RSA_Decrypt
|
|
case TPM_CC_RSA_Decrypt:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_RSA_Decrypt
|
|
#if CC_ECDH_KeyGen
|
|
case TPM_CC_ECDH_KeyGen:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_ECDH_KeyGen
|
|
#if CC_ECDH_ZGen
|
|
case TPM_CC_ECDH_ZGen:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_ECDH_ZGen
|
|
#if CC_ECC_Parameters
|
|
case TPM_CC_ECC_Parameters:
|
|
break;
|
|
#endif // CC_ECC_Parameters
|
|
#if CC_ZGen_2Phase
|
|
case TPM_CC_ZGen_2Phase:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_ZGen_2Phase
|
|
#if CC_ECC_Encrypt
|
|
case TPM_CC_ECC_Encrypt:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_ECC_Encrypt
|
|
#if CC_ECC_Decrypt
|
|
case TPM_CC_ECC_Decrypt:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_ECC_Decrypt
|
|
#if CC_EncryptDecrypt
|
|
case TPM_CC_EncryptDecrypt:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_EncryptDecrypt
|
|
#if CC_EncryptDecrypt2
|
|
case TPM_CC_EncryptDecrypt2:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_EncryptDecrypt2
|
|
#if CC_Hash
|
|
case TPM_CC_Hash:
|
|
break;
|
|
#endif // CC_Hash
|
|
#if CC_HMAC
|
|
case TPM_CC_HMAC:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_HMAC
|
|
#if CC_MAC
|
|
case TPM_CC_MAC:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_MAC
|
|
#if CC_GetRandom
|
|
case TPM_CC_GetRandom:
|
|
break;
|
|
#endif // CC_GetRandom
|
|
#if CC_StirRandom
|
|
case TPM_CC_StirRandom:
|
|
break;
|
|
#endif // CC_StirRandom
|
|
#if CC_HMAC_Start
|
|
case TPM_CC_HMAC_Start:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_HMAC_Start
|
|
#if CC_MAC_Start
|
|
case TPM_CC_MAC_Start:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_MAC_Start
|
|
#if CC_HashSequenceStart
|
|
case TPM_CC_HashSequenceStart:
|
|
break;
|
|
#endif // CC_HashSequenceStart
|
|
#if CC_SequenceUpdate
|
|
case TPM_CC_SequenceUpdate:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_SequenceUpdate
|
|
#if CC_SequenceComplete
|
|
case TPM_CC_SequenceComplete:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_SequenceComplete
|
|
#if CC_EventSequenceComplete
|
|
case TPM_CC_EventSequenceComplete:
|
|
*handleCount = 2;
|
|
result = TPMI_DH_PCR_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_EventSequenceComplete
|
|
#if CC_Certify
|
|
case TPM_CC_Certify:
|
|
*handleCount = 2;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_Certify
|
|
#if CC_CertifyCreation
|
|
case TPM_CC_CertifyCreation:
|
|
*handleCount = 2;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_CertifyCreation
|
|
#if CC_Quote
|
|
case TPM_CC_Quote:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_Quote
|
|
#if CC_GetSessionAuditDigest
|
|
case TPM_CC_GetSessionAuditDigest:
|
|
*handleCount = 3;
|
|
result = TPMI_RH_ENDORSEMENT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
result = TPMI_SH_HMAC_Unmarshal(&handles[2], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_3;
|
|
break;
|
|
#endif // CC_GetSessionAuditDigest
|
|
#if CC_GetCommandAuditDigest
|
|
case TPM_CC_GetCommandAuditDigest:
|
|
*handleCount = 2;
|
|
result = TPMI_RH_ENDORSEMENT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_GetCommandAuditDigest
|
|
#if CC_GetTime
|
|
case TPM_CC_GetTime:
|
|
*handleCount = 2;
|
|
result = TPMI_RH_ENDORSEMENT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_GetTime
|
|
#if CC_CertifyX509
|
|
case TPM_CC_CertifyX509:
|
|
*handleCount = 2;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_CertifyX509
|
|
#if CC_Commit
|
|
case TPM_CC_Commit:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_Commit
|
|
#if CC_EC_Ephemeral
|
|
case TPM_CC_EC_Ephemeral:
|
|
break;
|
|
#endif // CC_EC_Ephemeral
|
|
#if CC_VerifySignature
|
|
case TPM_CC_VerifySignature:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_VerifySignature
|
|
#if CC_Sign
|
|
case TPM_CC_Sign:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_Sign
|
|
#if CC_SetCommandCodeAuditStatus
|
|
case TPM_CC_SetCommandCodeAuditStatus:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_PROVISION_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_SetCommandCodeAuditStatus
|
|
#if CC_PCR_Extend
|
|
case TPM_CC_PCR_Extend:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_PCR_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PCR_Extend
|
|
#if CC_PCR_Event
|
|
case TPM_CC_PCR_Event:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_PCR_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PCR_Event
|
|
#if CC_PCR_Read
|
|
case TPM_CC_PCR_Read:
|
|
break;
|
|
#endif // CC_PCR_Read
|
|
#if CC_PCR_Allocate
|
|
case TPM_CC_PCR_Allocate:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_PLATFORM_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PCR_Allocate
|
|
#if CC_PCR_SetAuthPolicy
|
|
case TPM_CC_PCR_SetAuthPolicy:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_PLATFORM_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PCR_SetAuthPolicy
|
|
#if CC_PCR_SetAuthValue
|
|
case TPM_CC_PCR_SetAuthValue:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_PCR_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PCR_SetAuthValue
|
|
#if CC_PCR_Reset
|
|
case TPM_CC_PCR_Reset:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_PCR_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PCR_Reset
|
|
#if CC_PolicySigned
|
|
case TPM_CC_PolicySigned:
|
|
*handleCount = 2;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_PolicySigned
|
|
#if CC_PolicySecret
|
|
case TPM_CC_PolicySecret:
|
|
*handleCount = 2;
|
|
result = TPMI_DH_ENTITY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_PolicySecret
|
|
#if CC_PolicyTicket
|
|
case TPM_CC_PolicyTicket:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyTicket
|
|
#if CC_PolicyOR
|
|
case TPM_CC_PolicyOR:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyOR
|
|
#if CC_PolicyPCR
|
|
case TPM_CC_PolicyPCR:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyPCR
|
|
#if CC_PolicyLocality
|
|
case TPM_CC_PolicyLocality:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyLocality
|
|
#if CC_PolicyNV
|
|
case TPM_CC_PolicyNV:
|
|
*handleCount = 3;
|
|
result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[2], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_3;
|
|
break;
|
|
#endif // CC_PolicyNV
|
|
#if CC_PolicyCounterTimer
|
|
case TPM_CC_PolicyCounterTimer:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyCounterTimer
|
|
#if CC_PolicyCommandCode
|
|
case TPM_CC_PolicyCommandCode:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyCommandCode
|
|
#if CC_PolicyPhysicalPresence
|
|
case TPM_CC_PolicyPhysicalPresence:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyPhysicalPresence
|
|
#if CC_PolicyCpHash
|
|
case TPM_CC_PolicyCpHash:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyCpHash
|
|
#if CC_PolicyNameHash
|
|
case TPM_CC_PolicyNameHash:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyNameHash
|
|
#if CC_PolicyDuplicationSelect
|
|
case TPM_CC_PolicyDuplicationSelect:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyDuplicationSelect
|
|
#if CC_PolicyAuthorize
|
|
case TPM_CC_PolicyAuthorize:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyAuthorize
|
|
#if CC_PolicyAuthValue
|
|
case TPM_CC_PolicyAuthValue:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyAuthValue
|
|
#if CC_PolicyPassword
|
|
case TPM_CC_PolicyPassword:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyPassword
|
|
#if CC_PolicyGetDigest
|
|
case TPM_CC_PolicyGetDigest:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyGetDigest
|
|
#if CC_PolicyNvWritten
|
|
case TPM_CC_PolicyNvWritten:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyNvWritten
|
|
#if CC_PolicyTemplate
|
|
case TPM_CC_PolicyTemplate:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PolicyTemplate
|
|
#if CC_PolicyAuthorizeNV
|
|
case TPM_CC_PolicyAuthorizeNV:
|
|
*handleCount = 3;
|
|
result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[2], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_3;
|
|
break;
|
|
#endif // CC_PolicyAuthorizeNV
|
|
#if CC_CreatePrimary
|
|
case TPM_CC_CreatePrimary:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_HIERARCHY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_CreatePrimary
|
|
#if CC_HierarchyControl
|
|
case TPM_CC_HierarchyControl:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_HIERARCHY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_HierarchyControl
|
|
#if CC_SetPrimaryPolicy
|
|
case TPM_CC_SetPrimaryPolicy:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_HIERARCHY_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_SetPrimaryPolicy
|
|
#if CC_ChangePPS
|
|
case TPM_CC_ChangePPS:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_PLATFORM_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_ChangePPS
|
|
#if CC_ChangeEPS
|
|
case TPM_CC_ChangeEPS:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_PLATFORM_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_ChangeEPS
|
|
#if CC_Clear
|
|
case TPM_CC_Clear:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_CLEAR_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_Clear
|
|
#if CC_ClearControl
|
|
case TPM_CC_ClearControl:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_CLEAR_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_ClearControl
|
|
#if CC_HierarchyChangeAuth
|
|
case TPM_CC_HierarchyChangeAuth:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_HIERARCHY_AUTH_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_HierarchyChangeAuth
|
|
#if CC_DictionaryAttackLockReset
|
|
case TPM_CC_DictionaryAttackLockReset:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_LOCKOUT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_DictionaryAttackLockReset
|
|
#if CC_DictionaryAttackParameters
|
|
case TPM_CC_DictionaryAttackParameters:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_LOCKOUT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_DictionaryAttackParameters
|
|
#if CC_PP_Commands
|
|
case TPM_CC_PP_Commands:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_PLATFORM_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_PP_Commands
|
|
#if CC_SetAlgorithmSet
|
|
case TPM_CC_SetAlgorithmSet:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_PLATFORM_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_SetAlgorithmSet
|
|
#if CC_FieldUpgradeStart
|
|
case TPM_CC_FieldUpgradeStart:
|
|
*handleCount = 2;
|
|
result = TPMI_RH_PLATFORM_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_FieldUpgradeStart
|
|
#if CC_FieldUpgradeData
|
|
case TPM_CC_FieldUpgradeData:
|
|
break;
|
|
#endif // CC_FieldUpgradeData
|
|
#if CC_FirmwareRead
|
|
case TPM_CC_FirmwareRead:
|
|
break;
|
|
#endif // CC_FirmwareRead
|
|
#if CC_ContextSave
|
|
case TPM_CC_ContextSave:
|
|
*handleCount = 1;
|
|
result = TPMI_DH_CONTEXT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_ContextSave
|
|
#if CC_ContextLoad
|
|
case TPM_CC_ContextLoad:
|
|
break;
|
|
#endif // CC_ContextLoad
|
|
#if CC_FlushContext
|
|
case TPM_CC_FlushContext:
|
|
break;
|
|
#endif // CC_FlushContext
|
|
#if CC_EvictControl
|
|
case TPM_CC_EvictControl:
|
|
*handleCount = 2;
|
|
result = TPMI_RH_PROVISION_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_EvictControl
|
|
#if CC_ReadClock
|
|
case TPM_CC_ReadClock:
|
|
break;
|
|
#endif // CC_ReadClock
|
|
#if CC_ClockSet
|
|
case TPM_CC_ClockSet:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_PROVISION_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_ClockSet
|
|
#if CC_ClockRateAdjust
|
|
case TPM_CC_ClockRateAdjust:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_PROVISION_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_ClockRateAdjust
|
|
#if CC_GetCapability
|
|
case TPM_CC_GetCapability:
|
|
break;
|
|
#endif // CC_GetCapability
|
|
#if CC_TestParms
|
|
case TPM_CC_TestParms:
|
|
break;
|
|
#endif // CC_TestParms
|
|
#if CC_NV_DefineSpace
|
|
case TPM_CC_NV_DefineSpace:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_PROVISION_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_NV_DefineSpace
|
|
#if CC_NV_UndefineSpace
|
|
case TPM_CC_NV_UndefineSpace:
|
|
*handleCount = 2;
|
|
result = TPMI_RH_PROVISION_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_NV_UndefineSpace
|
|
#if CC_NV_UndefineSpaceSpecial
|
|
case TPM_CC_NV_UndefineSpaceSpecial:
|
|
*handleCount = 2;
|
|
result = TPMI_RH_NV_INDEX_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_RH_PLATFORM_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_NV_UndefineSpaceSpecial
|
|
#if CC_NV_ReadPublic
|
|
case TPM_CC_NV_ReadPublic:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_NV_INDEX_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_NV_ReadPublic
|
|
#if CC_NV_Write
|
|
case TPM_CC_NV_Write:
|
|
*handleCount = 2;
|
|
result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_NV_Write
|
|
#if CC_NV_Increment
|
|
case TPM_CC_NV_Increment:
|
|
*handleCount = 2;
|
|
result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_NV_Increment
|
|
#if CC_NV_Extend
|
|
case TPM_CC_NV_Extend:
|
|
*handleCount = 2;
|
|
result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_NV_Extend
|
|
#if CC_NV_SetBits
|
|
case TPM_CC_NV_SetBits:
|
|
*handleCount = 2;
|
|
result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_NV_SetBits
|
|
#if CC_NV_WriteLock
|
|
case TPM_CC_NV_WriteLock:
|
|
*handleCount = 2;
|
|
result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_NV_WriteLock
|
|
#if CC_NV_GlobalWriteLock
|
|
case TPM_CC_NV_GlobalWriteLock:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_PROVISION_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_NV_GlobalWriteLock
|
|
#if CC_NV_Read
|
|
case TPM_CC_NV_Read:
|
|
*handleCount = 2;
|
|
result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_NV_Read
|
|
#if CC_NV_ReadLock
|
|
case TPM_CC_NV_ReadLock:
|
|
*handleCount = 2;
|
|
result = TPMI_RH_NV_AUTH_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_RH_NV_INDEX_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
break;
|
|
#endif // CC_NV_ReadLock
|
|
#if CC_NV_ChangeAuth
|
|
case TPM_CC_NV_ChangeAuth:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_NV_INDEX_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_NV_ChangeAuth
|
|
#if CC_NV_Certify
|
|
case TPM_CC_NV_Certify:
|
|
*handleCount = 3;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, TRUE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_RH_NV_AUTH_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
result = TPMI_RH_NV_INDEX_Unmarshal(&handles[2], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_3;
|
|
break;
|
|
#endif // CC_NV_Certify
|
|
#if CC_AC_GetCapability
|
|
case TPM_CC_AC_GetCapability:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_AC_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_AC_GetCapability
|
|
#if CC_AC_Send
|
|
case TPM_CC_AC_Send:
|
|
*handleCount = 3;
|
|
result = TPMI_DH_OBJECT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize, FALSE);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
result = TPMI_RH_NV_AUTH_Unmarshal(&handles[1], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_2;
|
|
result = TPMI_RH_AC_Unmarshal(&handles[2], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_3;
|
|
break;
|
|
#endif // CC_AC_Send
|
|
#if CC_Policy_AC_SendSelect
|
|
case TPM_CC_Policy_AC_SendSelect:
|
|
*handleCount = 1;
|
|
result = TPMI_SH_POLICY_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_Policy_AC_SendSelect
|
|
#if CC_ACT_SetTimeout
|
|
case TPM_CC_ACT_SetTimeout:
|
|
*handleCount = 1;
|
|
result = TPMI_RH_ACT_Unmarshal(&handles[0], handleBufferStart,
|
|
bufferRemainingSize);
|
|
if(TPM_RC_SUCCESS != result) return result + TPM_RC_H + TPM_RC_1;
|
|
break;
|
|
#endif // CC_ACT_SetTimeout
|
|
#if CC_Vendor_TCG_Test
|
|
case TPM_CC_Vendor_TCG_Test:
|
|
break;
|
|
#endif // CC_Vendor_TCG_Test
|