/* 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: Mar 6, 2020 Time: 01:50:10PM | |
*/ | |
// This macro is added just so that the code is only excessively long. | |
#define EXIT_IF_ERROR_PLUS(x) \ | |
if(TPM_RC_SUCCESS != result) { result += (x); goto Exit; } | |
#if CC_Startup | |
case TPM_CC_Startup: { | |
Startup_In *in = (Startup_In *) | |
MemoryGetInBuffer(sizeof(Startup_In)); | |
result = TPM_SU_Unmarshal(&in->startupType, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Startup_startupType); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Startup (in); | |
break; | |
} | |
#endif // CC_Startup | |
#if CC_Shutdown | |
case TPM_CC_Shutdown: { | |
Shutdown_In *in = (Shutdown_In *) | |
MemoryGetInBuffer(sizeof(Shutdown_In)); | |
result = TPM_SU_Unmarshal(&in->shutdownType, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Shutdown_shutdownType); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Shutdown (in); | |
break; | |
} | |
#endif // CC_Shutdown | |
#if CC_SelfTest | |
case TPM_CC_SelfTest: { | |
SelfTest_In *in = (SelfTest_In *) | |
MemoryGetInBuffer(sizeof(SelfTest_In)); | |
result = TPMI_YES_NO_Unmarshal(&in->fullTest, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_SelfTest_fullTest); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_SelfTest (in); | |
break; | |
} | |
#endif // CC_SelfTest | |
#if CC_IncrementalSelfTest | |
case TPM_CC_IncrementalSelfTest: { | |
IncrementalSelfTest_In *in = (IncrementalSelfTest_In *) | |
MemoryGetInBuffer(sizeof(IncrementalSelfTest_In)); | |
IncrementalSelfTest_Out *out = (IncrementalSelfTest_Out *) | |
MemoryGetOutBuffer(sizeof(IncrementalSelfTest_Out)); | |
result = TPML_ALG_Unmarshal(&in->toTest, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_IncrementalSelfTest_toTest); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_IncrementalSelfTest (in, out); | |
rSize = sizeof(IncrementalSelfTest_Out); | |
*respParmSize += TPML_ALG_Marshal(&out->toDoList, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_IncrementalSelfTest | |
#if CC_GetTestResult | |
case TPM_CC_GetTestResult: { | |
GetTestResult_Out *out = (GetTestResult_Out *) | |
MemoryGetOutBuffer(sizeof(GetTestResult_Out)); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_GetTestResult (out); | |
rSize = sizeof(GetTestResult_Out); | |
*respParmSize += TPM2B_MAX_BUFFER_Marshal(&out->outData, | |
responseBuffer, &rSize); | |
*respParmSize += TPM_RC_Marshal(&out->testResult, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_GetTestResult | |
#if CC_StartAuthSession | |
case TPM_CC_StartAuthSession: { | |
StartAuthSession_In *in = (StartAuthSession_In *) | |
MemoryGetInBuffer(sizeof(StartAuthSession_In)); | |
StartAuthSession_Out *out = (StartAuthSession_Out *) | |
MemoryGetOutBuffer(sizeof(StartAuthSession_Out)); | |
in->tpmKey = handles[0]; | |
in->bind = handles[1]; | |
result = TPM2B_NONCE_Unmarshal(&in->nonceCaller, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_StartAuthSession_nonceCaller); | |
result = TPM2B_ENCRYPTED_SECRET_Unmarshal(&in->encryptedSalt, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_StartAuthSession_encryptedSalt); | |
result = TPM_SE_Unmarshal(&in->sessionType, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_StartAuthSession_sessionType); | |
result = TPMT_SYM_DEF_Unmarshal(&in->symmetric, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_StartAuthSession_symmetric); | |
result = TPMI_ALG_HASH_Unmarshal(&in->authHash, paramBuffer, paramBufferSize, FALSE); | |
EXIT_IF_ERROR_PLUS(RC_StartAuthSession_authHash); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_StartAuthSession (in, out); | |
rSize = sizeof(StartAuthSession_Out); | |
if(TPM_RC_SUCCESS != result) goto Exit; | |
command->handles[command->handleNum++] = out->sessionHandle; | |
*respParmSize += TPM2B_NONCE_Marshal(&out->nonceTPM, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_StartAuthSession | |
#if CC_PolicyRestart | |
case TPM_CC_PolicyRestart: { | |
PolicyRestart_In *in = (PolicyRestart_In *) | |
MemoryGetInBuffer(sizeof(PolicyRestart_In)); | |
in->sessionHandle = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyRestart (in); | |
break; | |
} | |
#endif // CC_PolicyRestart | |
#if CC_Create | |
case TPM_CC_Create: { | |
Create_In *in = (Create_In *) | |
MemoryGetInBuffer(sizeof(Create_In)); | |
Create_Out *out = (Create_Out *) | |
MemoryGetOutBuffer(sizeof(Create_Out)); | |
in->parentHandle = handles[0]; | |
result = TPM2B_SENSITIVE_CREATE_Unmarshal(&in->inSensitive, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Create_inSensitive); | |
result = TPM2B_PUBLIC_Unmarshal(&in->inPublic, paramBuffer, paramBufferSize, FALSE); | |
EXIT_IF_ERROR_PLUS(RC_Create_inPublic); | |
result = TPM2B_DATA_Unmarshal(&in->outsideInfo, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Create_outsideInfo); | |
result = TPML_PCR_SELECTION_Unmarshal(&in->creationPCR, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Create_creationPCR); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Create (in, out); | |
rSize = sizeof(Create_Out); | |
*respParmSize += TPM2B_PRIVATE_Marshal(&out->outPrivate, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_PUBLIC_Marshal(&out->outPublic, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_CREATION_DATA_Marshal(&out->creationData, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_DIGEST_Marshal(&out->creationHash, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_TK_CREATION_Marshal(&out->creationTicket, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_Create | |
#if CC_Load | |
case TPM_CC_Load: { | |
Load_In *in = (Load_In *) | |
MemoryGetInBuffer(sizeof(Load_In)); | |
Load_Out *out = (Load_Out *) | |
MemoryGetOutBuffer(sizeof(Load_Out)); | |
in->parentHandle = handles[0]; | |
result = TPM2B_PRIVATE_Unmarshal(&in->inPrivate, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Load_inPrivate); | |
result = TPM2B_PUBLIC_Unmarshal(&in->inPublic, paramBuffer, paramBufferSize, FALSE); | |
EXIT_IF_ERROR_PLUS(RC_Load_inPublic); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Load (in, out); | |
rSize = sizeof(Load_Out); | |
if(TPM_RC_SUCCESS != result) goto Exit; | |
command->handles[command->handleNum++] = out->objectHandle; | |
*respParmSize += TPM2B_NAME_Marshal(&out->name, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_Load | |
#if CC_LoadExternal | |
case TPM_CC_LoadExternal: { | |
LoadExternal_In *in = (LoadExternal_In *) | |
MemoryGetInBuffer(sizeof(LoadExternal_In)); | |
LoadExternal_Out *out = (LoadExternal_Out *) | |
MemoryGetOutBuffer(sizeof(LoadExternal_Out)); | |
result = TPM2B_SENSITIVE_Unmarshal(&in->inPrivate, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_LoadExternal_inPrivate); | |
result = TPM2B_PUBLIC_Unmarshal(&in->inPublic, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_LoadExternal_inPublic); | |
result = TPMI_RH_HIERARCHY_Unmarshal(&in->hierarchy, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_LoadExternal_hierarchy); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_LoadExternal (in, out); | |
rSize = sizeof(LoadExternal_Out); | |
if(TPM_RC_SUCCESS != result) goto Exit; | |
command->handles[command->handleNum++] = out->objectHandle; | |
*respParmSize += TPM2B_NAME_Marshal(&out->name, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_LoadExternal | |
#if CC_ReadPublic | |
case TPM_CC_ReadPublic: { | |
ReadPublic_In *in = (ReadPublic_In *) | |
MemoryGetInBuffer(sizeof(ReadPublic_In)); | |
ReadPublic_Out *out = (ReadPublic_Out *) | |
MemoryGetOutBuffer(sizeof(ReadPublic_Out)); | |
in->objectHandle = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ReadPublic (in, out); | |
rSize = sizeof(ReadPublic_Out); | |
*respParmSize += TPM2B_PUBLIC_Marshal(&out->outPublic, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_NAME_Marshal(&out->name, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_NAME_Marshal(&out->qualifiedName, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_ReadPublic | |
#if CC_ActivateCredential | |
case TPM_CC_ActivateCredential: { | |
ActivateCredential_In *in = (ActivateCredential_In *) | |
MemoryGetInBuffer(sizeof(ActivateCredential_In)); | |
ActivateCredential_Out *out = (ActivateCredential_Out *) | |
MemoryGetOutBuffer(sizeof(ActivateCredential_Out)); | |
in->activateHandle = handles[0]; | |
in->keyHandle = handles[1]; | |
result = TPM2B_ID_OBJECT_Unmarshal(&in->credentialBlob, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ActivateCredential_credentialBlob); | |
result = TPM2B_ENCRYPTED_SECRET_Unmarshal(&in->secret, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ActivateCredential_secret); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ActivateCredential (in, out); | |
rSize = sizeof(ActivateCredential_Out); | |
*respParmSize += TPM2B_DIGEST_Marshal(&out->certInfo, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_ActivateCredential | |
#if CC_MakeCredential | |
case TPM_CC_MakeCredential: { | |
MakeCredential_In *in = (MakeCredential_In *) | |
MemoryGetInBuffer(sizeof(MakeCredential_In)); | |
MakeCredential_Out *out = (MakeCredential_Out *) | |
MemoryGetOutBuffer(sizeof(MakeCredential_Out)); | |
in->handle = handles[0]; | |
result = TPM2B_DIGEST_Unmarshal(&in->credential, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_MakeCredential_credential); | |
result = TPM2B_NAME_Unmarshal(&in->objectName, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_MakeCredential_objectName); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_MakeCredential (in, out); | |
rSize = sizeof(MakeCredential_Out); | |
*respParmSize += TPM2B_ID_OBJECT_Marshal(&out->credentialBlob, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_ENCRYPTED_SECRET_Marshal(&out->secret, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_MakeCredential | |
#if CC_Unseal | |
case TPM_CC_Unseal: { | |
Unseal_In *in = (Unseal_In *) | |
MemoryGetInBuffer(sizeof(Unseal_In)); | |
Unseal_Out *out = (Unseal_Out *) | |
MemoryGetOutBuffer(sizeof(Unseal_Out)); | |
in->itemHandle = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Unseal (in, out); | |
rSize = sizeof(Unseal_Out); | |
*respParmSize += TPM2B_SENSITIVE_DATA_Marshal(&out->outData, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_Unseal | |
#if CC_ObjectChangeAuth | |
case TPM_CC_ObjectChangeAuth: { | |
ObjectChangeAuth_In *in = (ObjectChangeAuth_In *) | |
MemoryGetInBuffer(sizeof(ObjectChangeAuth_In)); | |
ObjectChangeAuth_Out *out = (ObjectChangeAuth_Out *) | |
MemoryGetOutBuffer(sizeof(ObjectChangeAuth_Out)); | |
in->objectHandle = handles[0]; | |
in->parentHandle = handles[1]; | |
result = TPM2B_AUTH_Unmarshal(&in->newAuth, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ObjectChangeAuth_newAuth); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ObjectChangeAuth (in, out); | |
rSize = sizeof(ObjectChangeAuth_Out); | |
*respParmSize += TPM2B_PRIVATE_Marshal(&out->outPrivate, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_ObjectChangeAuth | |
#if CC_CreateLoaded | |
case TPM_CC_CreateLoaded: { | |
CreateLoaded_In *in = (CreateLoaded_In *) | |
MemoryGetInBuffer(sizeof(CreateLoaded_In)); | |
CreateLoaded_Out *out = (CreateLoaded_Out *) | |
MemoryGetOutBuffer(sizeof(CreateLoaded_Out)); | |
in->parentHandle = handles[0]; | |
result = TPM2B_SENSITIVE_CREATE_Unmarshal(&in->inSensitive, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_CreateLoaded_inSensitive); | |
result = TPM2B_TEMPLATE_Unmarshal(&in->inPublic, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_CreateLoaded_inPublic); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_CreateLoaded (in, out); | |
rSize = sizeof(CreateLoaded_Out); | |
if(TPM_RC_SUCCESS != result) goto Exit; | |
command->handles[command->handleNum++] = out->objectHandle; | |
*respParmSize += TPM2B_PRIVATE_Marshal(&out->outPrivate, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_PUBLIC_Marshal(&out->outPublic, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_NAME_Marshal(&out->name, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_CreateLoaded | |
#if CC_Duplicate | |
case TPM_CC_Duplicate: { | |
Duplicate_In *in = (Duplicate_In *) | |
MemoryGetInBuffer(sizeof(Duplicate_In)); | |
Duplicate_Out *out = (Duplicate_Out *) | |
MemoryGetOutBuffer(sizeof(Duplicate_Out)); | |
in->objectHandle = handles[0]; | |
in->newParentHandle = handles[1]; | |
result = TPM2B_DATA_Unmarshal(&in->encryptionKeyIn, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Duplicate_encryptionKeyIn); | |
result = TPMT_SYM_DEF_OBJECT_Unmarshal(&in->symmetricAlg, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_Duplicate_symmetricAlg); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Duplicate (in, out); | |
rSize = sizeof(Duplicate_Out); | |
*respParmSize += TPM2B_DATA_Marshal(&out->encryptionKeyOut, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_PRIVATE_Marshal(&out->duplicate, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_ENCRYPTED_SECRET_Marshal(&out->outSymSeed, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_Duplicate | |
#if CC_Rewrap | |
case TPM_CC_Rewrap: { | |
Rewrap_In *in = (Rewrap_In *) | |
MemoryGetInBuffer(sizeof(Rewrap_In)); | |
Rewrap_Out *out = (Rewrap_Out *) | |
MemoryGetOutBuffer(sizeof(Rewrap_Out)); | |
in->oldParent = handles[0]; | |
in->newParent = handles[1]; | |
result = TPM2B_PRIVATE_Unmarshal(&in->inDuplicate, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Rewrap_inDuplicate); | |
result = TPM2B_NAME_Unmarshal(&in->name, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Rewrap_name); | |
result = TPM2B_ENCRYPTED_SECRET_Unmarshal(&in->inSymSeed, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Rewrap_inSymSeed); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Rewrap (in, out); | |
rSize = sizeof(Rewrap_Out); | |
*respParmSize += TPM2B_PRIVATE_Marshal(&out->outDuplicate, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_ENCRYPTED_SECRET_Marshal(&out->outSymSeed, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_Rewrap | |
#if CC_Import | |
case TPM_CC_Import: { | |
Import_In *in = (Import_In *) | |
MemoryGetInBuffer(sizeof(Import_In)); | |
Import_Out *out = (Import_Out *) | |
MemoryGetOutBuffer(sizeof(Import_Out)); | |
in->parentHandle = handles[0]; | |
result = TPM2B_DATA_Unmarshal(&in->encryptionKey, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Import_encryptionKey); | |
result = TPM2B_PUBLIC_Unmarshal(&in->objectPublic, paramBuffer, paramBufferSize, FALSE); | |
EXIT_IF_ERROR_PLUS(RC_Import_objectPublic); | |
result = TPM2B_PRIVATE_Unmarshal(&in->duplicate, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Import_duplicate); | |
result = TPM2B_ENCRYPTED_SECRET_Unmarshal(&in->inSymSeed, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Import_inSymSeed); | |
result = TPMT_SYM_DEF_OBJECT_Unmarshal(&in->symmetricAlg, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_Import_symmetricAlg); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Import (in, out); | |
rSize = sizeof(Import_Out); | |
*respParmSize += TPM2B_PRIVATE_Marshal(&out->outPrivate, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_Import | |
#if CC_RSA_Encrypt | |
case TPM_CC_RSA_Encrypt: { | |
RSA_Encrypt_In *in = (RSA_Encrypt_In *) | |
MemoryGetInBuffer(sizeof(RSA_Encrypt_In)); | |
RSA_Encrypt_Out *out = (RSA_Encrypt_Out *) | |
MemoryGetOutBuffer(sizeof(RSA_Encrypt_Out)); | |
in->keyHandle = handles[0]; | |
result = TPM2B_PUBLIC_KEY_RSA_Unmarshal(&in->message, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_RSA_Encrypt_message); | |
result = TPMT_RSA_DECRYPT_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_RSA_Encrypt_inScheme); | |
result = TPM2B_DATA_Unmarshal(&in->label, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_RSA_Encrypt_label); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_RSA_Encrypt (in, out); | |
rSize = sizeof(RSA_Encrypt_Out); | |
*respParmSize += TPM2B_PUBLIC_KEY_RSA_Marshal(&out->outData, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_RSA_Encrypt | |
#if CC_RSA_Decrypt | |
case TPM_CC_RSA_Decrypt: { | |
RSA_Decrypt_In *in = (RSA_Decrypt_In *) | |
MemoryGetInBuffer(sizeof(RSA_Decrypt_In)); | |
RSA_Decrypt_Out *out = (RSA_Decrypt_Out *) | |
MemoryGetOutBuffer(sizeof(RSA_Decrypt_Out)); | |
in->keyHandle = handles[0]; | |
result = TPM2B_PUBLIC_KEY_RSA_Unmarshal(&in->cipherText, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_RSA_Decrypt_cipherText); | |
result = TPMT_RSA_DECRYPT_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_RSA_Decrypt_inScheme); | |
result = TPM2B_DATA_Unmarshal(&in->label, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_RSA_Decrypt_label); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_RSA_Decrypt (in, out); | |
rSize = sizeof(RSA_Decrypt_Out); | |
*respParmSize += TPM2B_PUBLIC_KEY_RSA_Marshal(&out->message, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_RSA_Decrypt | |
#if CC_ECDH_KeyGen | |
case TPM_CC_ECDH_KeyGen: { | |
ECDH_KeyGen_In *in = (ECDH_KeyGen_In *) | |
MemoryGetInBuffer(sizeof(ECDH_KeyGen_In)); | |
ECDH_KeyGen_Out *out = (ECDH_KeyGen_Out *) | |
MemoryGetOutBuffer(sizeof(ECDH_KeyGen_Out)); | |
in->keyHandle = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ECDH_KeyGen (in, out); | |
rSize = sizeof(ECDH_KeyGen_Out); | |
*respParmSize += TPM2B_ECC_POINT_Marshal(&out->zPoint, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_ECC_POINT_Marshal(&out->pubPoint, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_ECDH_KeyGen | |
#if CC_ECDH_ZGen | |
case TPM_CC_ECDH_ZGen: { | |
ECDH_ZGen_In *in = (ECDH_ZGen_In *) | |
MemoryGetInBuffer(sizeof(ECDH_ZGen_In)); | |
ECDH_ZGen_Out *out = (ECDH_ZGen_Out *) | |
MemoryGetOutBuffer(sizeof(ECDH_ZGen_Out)); | |
in->keyHandle = handles[0]; | |
result = TPM2B_ECC_POINT_Unmarshal(&in->inPoint, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ECDH_ZGen_inPoint); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ECDH_ZGen (in, out); | |
rSize = sizeof(ECDH_ZGen_Out); | |
*respParmSize += TPM2B_ECC_POINT_Marshal(&out->outPoint, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_ECDH_ZGen | |
#if CC_ECC_Parameters | |
case TPM_CC_ECC_Parameters: { | |
ECC_Parameters_In *in = (ECC_Parameters_In *) | |
MemoryGetInBuffer(sizeof(ECC_Parameters_In)); | |
ECC_Parameters_Out *out = (ECC_Parameters_Out *) | |
MemoryGetOutBuffer(sizeof(ECC_Parameters_Out)); | |
result = TPMI_ECC_CURVE_Unmarshal(&in->curveID, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ECC_Parameters_curveID); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ECC_Parameters (in, out); | |
rSize = sizeof(ECC_Parameters_Out); | |
*respParmSize += TPMS_ALGORITHM_DETAIL_ECC_Marshal(&out->parameters, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_ECC_Parameters | |
#if CC_ZGen_2Phase | |
case TPM_CC_ZGen_2Phase: { | |
ZGen_2Phase_In *in = (ZGen_2Phase_In *) | |
MemoryGetInBuffer(sizeof(ZGen_2Phase_In)); | |
ZGen_2Phase_Out *out = (ZGen_2Phase_Out *) | |
MemoryGetOutBuffer(sizeof(ZGen_2Phase_Out)); | |
in->keyA = handles[0]; | |
result = TPM2B_ECC_POINT_Unmarshal(&in->inQsB, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ZGen_2Phase_inQsB); | |
result = TPM2B_ECC_POINT_Unmarshal(&in->inQeB, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ZGen_2Phase_inQeB); | |
result = TPMI_ECC_KEY_EXCHANGE_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, FALSE); | |
EXIT_IF_ERROR_PLUS(RC_ZGen_2Phase_inScheme); | |
result = UINT16_Unmarshal(&in->counter, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ZGen_2Phase_counter); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ZGen_2Phase (in, out); | |
rSize = sizeof(ZGen_2Phase_Out); | |
*respParmSize += TPM2B_ECC_POINT_Marshal(&out->outZ1, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_ECC_POINT_Marshal(&out->outZ2, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_ZGen_2Phase | |
#if CC_ECC_Encrypt | |
case TPM_CC_ECC_Encrypt: { | |
ECC_Encrypt_In *in = (ECC_Encrypt_In *) | |
MemoryGetInBuffer(sizeof(ECC_Encrypt_In)); | |
ECC_Encrypt_Out *out = (ECC_Encrypt_Out *) | |
MemoryGetOutBuffer(sizeof(ECC_Encrypt_Out)); | |
in->keyHandle = handles[0]; | |
result = TPM2B_MAX_BUFFER_Unmarshal(&in->plainText, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ECC_Encrypt_plainText); | |
result = TPMT_KDF_SCHEME_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_ECC_Encrypt_inScheme); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ECC_Encrypt (in, out); | |
rSize = sizeof(ECC_Encrypt_Out); | |
*respParmSize += TPM2B_ECC_POINT_Marshal(&out->C1, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_MAX_BUFFER_Marshal(&out->C2, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_DIGEST_Marshal(&out->C3, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_ECC_Encrypt | |
#if CC_ECC_Decrypt | |
case TPM_CC_ECC_Decrypt: { | |
ECC_Decrypt_In *in = (ECC_Decrypt_In *) | |
MemoryGetInBuffer(sizeof(ECC_Decrypt_In)); | |
ECC_Decrypt_Out *out = (ECC_Decrypt_Out *) | |
MemoryGetOutBuffer(sizeof(ECC_Decrypt_Out)); | |
in->keyHandle = handles[0]; | |
result = TPM2B_ECC_POINT_Unmarshal(&in->C1, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ECC_Decrypt_C1); | |
result = TPM2B_MAX_BUFFER_Unmarshal(&in->C2, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ECC_Decrypt_C2); | |
result = TPM2B_DIGEST_Unmarshal(&in->C3, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ECC_Decrypt_C3); | |
result = TPMT_KDF_SCHEME_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_ECC_Decrypt_inScheme); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ECC_Decrypt (in, out); | |
rSize = sizeof(ECC_Decrypt_Out); | |
*respParmSize += TPM2B_MAX_BUFFER_Marshal(&out->plainText, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_ECC_Decrypt | |
#if CC_EncryptDecrypt | |
case TPM_CC_EncryptDecrypt: { | |
EncryptDecrypt_In *in = (EncryptDecrypt_In *) | |
MemoryGetInBuffer(sizeof(EncryptDecrypt_In)); | |
EncryptDecrypt_Out *out = (EncryptDecrypt_Out *) | |
MemoryGetOutBuffer(sizeof(EncryptDecrypt_Out)); | |
in->keyHandle = handles[0]; | |
result = TPMI_YES_NO_Unmarshal(&in->decrypt, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_EncryptDecrypt_decrypt); | |
result = TPMI_ALG_CIPHER_MODE_Unmarshal(&in->mode, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_EncryptDecrypt_mode); | |
result = TPM2B_IV_Unmarshal(&in->ivIn, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_EncryptDecrypt_ivIn); | |
result = TPM2B_MAX_BUFFER_Unmarshal(&in->inData, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_EncryptDecrypt_inData); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_EncryptDecrypt (in, out); | |
rSize = sizeof(EncryptDecrypt_Out); | |
*respParmSize += TPM2B_MAX_BUFFER_Marshal(&out->outData, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_IV_Marshal(&out->ivOut, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_EncryptDecrypt | |
#if CC_EncryptDecrypt2 | |
case TPM_CC_EncryptDecrypt2: { | |
EncryptDecrypt2_In *in = (EncryptDecrypt2_In *) | |
MemoryGetInBuffer(sizeof(EncryptDecrypt2_In)); | |
EncryptDecrypt2_Out *out = (EncryptDecrypt2_Out *) | |
MemoryGetOutBuffer(sizeof(EncryptDecrypt2_Out)); | |
in->keyHandle = handles[0]; | |
result = TPM2B_MAX_BUFFER_Unmarshal(&in->inData, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_EncryptDecrypt2_inData); | |
result = TPMI_YES_NO_Unmarshal(&in->decrypt, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_EncryptDecrypt2_decrypt); | |
result = TPMI_ALG_CIPHER_MODE_Unmarshal(&in->mode, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_EncryptDecrypt2_mode); | |
result = TPM2B_IV_Unmarshal(&in->ivIn, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_EncryptDecrypt2_ivIn); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_EncryptDecrypt2 (in, out); | |
rSize = sizeof(EncryptDecrypt2_Out); | |
*respParmSize += TPM2B_MAX_BUFFER_Marshal(&out->outData, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_IV_Marshal(&out->ivOut, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_EncryptDecrypt2 | |
#if CC_Hash | |
case TPM_CC_Hash: { | |
Hash_In *in = (Hash_In *) | |
MemoryGetInBuffer(sizeof(Hash_In)); | |
Hash_Out *out = (Hash_Out *) | |
MemoryGetOutBuffer(sizeof(Hash_Out)); | |
result = TPM2B_MAX_BUFFER_Unmarshal(&in->data, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Hash_data); | |
result = TPMI_ALG_HASH_Unmarshal(&in->hashAlg, paramBuffer, paramBufferSize, FALSE); | |
EXIT_IF_ERROR_PLUS(RC_Hash_hashAlg); | |
result = TPMI_RH_HIERARCHY_Unmarshal(&in->hierarchy, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_Hash_hierarchy); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Hash (in, out); | |
rSize = sizeof(Hash_Out); | |
*respParmSize += TPM2B_DIGEST_Marshal(&out->outHash, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_TK_HASHCHECK_Marshal(&out->validation, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_Hash | |
#if CC_HMAC | |
case TPM_CC_HMAC: { | |
HMAC_In *in = (HMAC_In *) | |
MemoryGetInBuffer(sizeof(HMAC_In)); | |
HMAC_Out *out = (HMAC_Out *) | |
MemoryGetOutBuffer(sizeof(HMAC_Out)); | |
in->handle = handles[0]; | |
result = TPM2B_MAX_BUFFER_Unmarshal(&in->buffer, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_HMAC_buffer); | |
result = TPMI_ALG_HASH_Unmarshal(&in->hashAlg, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_HMAC_hashAlg); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_HMAC (in, out); | |
rSize = sizeof(HMAC_Out); | |
*respParmSize += TPM2B_DIGEST_Marshal(&out->outHMAC, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_HMAC | |
#if CC_MAC | |
case TPM_CC_MAC: { | |
MAC_In *in = (MAC_In *) | |
MemoryGetInBuffer(sizeof(MAC_In)); | |
MAC_Out *out = (MAC_Out *) | |
MemoryGetOutBuffer(sizeof(MAC_Out)); | |
in->handle = handles[0]; | |
result = TPM2B_MAX_BUFFER_Unmarshal(&in->buffer, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_MAC_buffer); | |
result = TPMI_ALG_MAC_SCHEME_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_MAC_inScheme); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_MAC (in, out); | |
rSize = sizeof(MAC_Out); | |
*respParmSize += TPM2B_DIGEST_Marshal(&out->outMAC, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_MAC | |
#if CC_GetRandom | |
case TPM_CC_GetRandom: { | |
GetRandom_In *in = (GetRandom_In *) | |
MemoryGetInBuffer(sizeof(GetRandom_In)); | |
GetRandom_Out *out = (GetRandom_Out *) | |
MemoryGetOutBuffer(sizeof(GetRandom_Out)); | |
result = UINT16_Unmarshal(&in->bytesRequested, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_GetRandom_bytesRequested); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_GetRandom (in, out); | |
rSize = sizeof(GetRandom_Out); | |
*respParmSize += TPM2B_DIGEST_Marshal(&out->randomBytes, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_GetRandom | |
#if CC_StirRandom | |
case TPM_CC_StirRandom: { | |
StirRandom_In *in = (StirRandom_In *) | |
MemoryGetInBuffer(sizeof(StirRandom_In)); | |
result = TPM2B_SENSITIVE_DATA_Unmarshal(&in->inData, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_StirRandom_inData); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_StirRandom (in); | |
break; | |
} | |
#endif // CC_StirRandom | |
#if CC_HMAC_Start | |
case TPM_CC_HMAC_Start: { | |
HMAC_Start_In *in = (HMAC_Start_In *) | |
MemoryGetInBuffer(sizeof(HMAC_Start_In)); | |
HMAC_Start_Out *out = (HMAC_Start_Out *) | |
MemoryGetOutBuffer(sizeof(HMAC_Start_Out)); | |
in->handle = handles[0]; | |
result = TPM2B_AUTH_Unmarshal(&in->auth, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_HMAC_Start_auth); | |
result = TPMI_ALG_HASH_Unmarshal(&in->hashAlg, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_HMAC_Start_hashAlg); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_HMAC_Start (in, out); | |
rSize = sizeof(HMAC_Start_Out); | |
if(TPM_RC_SUCCESS != result) goto Exit; | |
command->handles[command->handleNum++] = out->sequenceHandle; | |
break; | |
} | |
#endif // CC_HMAC_Start | |
#if CC_MAC_Start | |
case TPM_CC_MAC_Start: { | |
MAC_Start_In *in = (MAC_Start_In *) | |
MemoryGetInBuffer(sizeof(MAC_Start_In)); | |
MAC_Start_Out *out = (MAC_Start_Out *) | |
MemoryGetOutBuffer(sizeof(MAC_Start_Out)); | |
in->handle = handles[0]; | |
result = TPM2B_AUTH_Unmarshal(&in->auth, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_MAC_Start_auth); | |
result = TPMI_ALG_MAC_SCHEME_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_MAC_Start_inScheme); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_MAC_Start (in, out); | |
rSize = sizeof(MAC_Start_Out); | |
if(TPM_RC_SUCCESS != result) goto Exit; | |
command->handles[command->handleNum++] = out->sequenceHandle; | |
break; | |
} | |
#endif // CC_MAC_Start | |
#if CC_HashSequenceStart | |
case TPM_CC_HashSequenceStart: { | |
HashSequenceStart_In *in = (HashSequenceStart_In *) | |
MemoryGetInBuffer(sizeof(HashSequenceStart_In)); | |
HashSequenceStart_Out *out = (HashSequenceStart_Out *) | |
MemoryGetOutBuffer(sizeof(HashSequenceStart_Out)); | |
result = TPM2B_AUTH_Unmarshal(&in->auth, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_HashSequenceStart_auth); | |
result = TPMI_ALG_HASH_Unmarshal(&in->hashAlg, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_HashSequenceStart_hashAlg); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_HashSequenceStart (in, out); | |
rSize = sizeof(HashSequenceStart_Out); | |
if(TPM_RC_SUCCESS != result) goto Exit; | |
command->handles[command->handleNum++] = out->sequenceHandle; | |
break; | |
} | |
#endif // CC_HashSequenceStart | |
#if CC_SequenceUpdate | |
case TPM_CC_SequenceUpdate: { | |
SequenceUpdate_In *in = (SequenceUpdate_In *) | |
MemoryGetInBuffer(sizeof(SequenceUpdate_In)); | |
in->sequenceHandle = handles[0]; | |
result = TPM2B_MAX_BUFFER_Unmarshal(&in->buffer, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_SequenceUpdate_buffer); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_SequenceUpdate (in); | |
break; | |
} | |
#endif // CC_SequenceUpdate | |
#if CC_SequenceComplete | |
case TPM_CC_SequenceComplete: { | |
SequenceComplete_In *in = (SequenceComplete_In *) | |
MemoryGetInBuffer(sizeof(SequenceComplete_In)); | |
SequenceComplete_Out *out = (SequenceComplete_Out *) | |
MemoryGetOutBuffer(sizeof(SequenceComplete_Out)); | |
in->sequenceHandle = handles[0]; | |
result = TPM2B_MAX_BUFFER_Unmarshal(&in->buffer, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_SequenceComplete_buffer); | |
result = TPMI_RH_HIERARCHY_Unmarshal(&in->hierarchy, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_SequenceComplete_hierarchy); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_SequenceComplete (in, out); | |
rSize = sizeof(SequenceComplete_Out); | |
*respParmSize += TPM2B_DIGEST_Marshal(&out->result, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_TK_HASHCHECK_Marshal(&out->validation, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_SequenceComplete | |
#if CC_EventSequenceComplete | |
case TPM_CC_EventSequenceComplete: { | |
EventSequenceComplete_In *in = (EventSequenceComplete_In *) | |
MemoryGetInBuffer(sizeof(EventSequenceComplete_In)); | |
EventSequenceComplete_Out *out = (EventSequenceComplete_Out *) | |
MemoryGetOutBuffer(sizeof(EventSequenceComplete_Out)); | |
in->pcrHandle = handles[0]; | |
in->sequenceHandle = handles[1]; | |
result = TPM2B_MAX_BUFFER_Unmarshal(&in->buffer, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_EventSequenceComplete_buffer); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_EventSequenceComplete (in, out); | |
rSize = sizeof(EventSequenceComplete_Out); | |
*respParmSize += TPML_DIGEST_VALUES_Marshal(&out->results, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_EventSequenceComplete | |
#if CC_Certify | |
case TPM_CC_Certify: { | |
Certify_In *in = (Certify_In *) | |
MemoryGetInBuffer(sizeof(Certify_In)); | |
Certify_Out *out = (Certify_Out *) | |
MemoryGetOutBuffer(sizeof(Certify_Out)); | |
in->objectHandle = handles[0]; | |
in->signHandle = handles[1]; | |
result = TPM2B_DATA_Unmarshal(&in->qualifyingData, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Certify_qualifyingData); | |
result = TPMT_SIG_SCHEME_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_Certify_inScheme); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Certify (in, out); | |
rSize = sizeof(Certify_Out); | |
*respParmSize += TPM2B_ATTEST_Marshal(&out->certifyInfo, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_SIGNATURE_Marshal(&out->signature, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_Certify | |
#if CC_CertifyCreation | |
case TPM_CC_CertifyCreation: { | |
CertifyCreation_In *in = (CertifyCreation_In *) | |
MemoryGetInBuffer(sizeof(CertifyCreation_In)); | |
CertifyCreation_Out *out = (CertifyCreation_Out *) | |
MemoryGetOutBuffer(sizeof(CertifyCreation_Out)); | |
in->signHandle = handles[0]; | |
in->objectHandle = handles[1]; | |
result = TPM2B_DATA_Unmarshal(&in->qualifyingData, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_CertifyCreation_qualifyingData); | |
result = TPM2B_DIGEST_Unmarshal(&in->creationHash, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_CertifyCreation_creationHash); | |
result = TPMT_SIG_SCHEME_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_CertifyCreation_inScheme); | |
result = TPMT_TK_CREATION_Unmarshal(&in->creationTicket, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_CertifyCreation_creationTicket); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_CertifyCreation (in, out); | |
rSize = sizeof(CertifyCreation_Out); | |
*respParmSize += TPM2B_ATTEST_Marshal(&out->certifyInfo, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_SIGNATURE_Marshal(&out->signature, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_CertifyCreation | |
#if CC_Quote | |
case TPM_CC_Quote: { | |
Quote_In *in = (Quote_In *) | |
MemoryGetInBuffer(sizeof(Quote_In)); | |
Quote_Out *out = (Quote_Out *) | |
MemoryGetOutBuffer(sizeof(Quote_Out)); | |
in->signHandle = handles[0]; | |
result = TPM2B_DATA_Unmarshal(&in->qualifyingData, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Quote_qualifyingData); | |
result = TPMT_SIG_SCHEME_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_Quote_inScheme); | |
result = TPML_PCR_SELECTION_Unmarshal(&in->PCRselect, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Quote_PCRselect); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Quote (in, out); | |
rSize = sizeof(Quote_Out); | |
*respParmSize += TPM2B_ATTEST_Marshal(&out->quoted, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_SIGNATURE_Marshal(&out->signature, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_Quote | |
#if CC_GetSessionAuditDigest | |
case TPM_CC_GetSessionAuditDigest: { | |
GetSessionAuditDigest_In *in = (GetSessionAuditDigest_In *) | |
MemoryGetInBuffer(sizeof(GetSessionAuditDigest_In)); | |
GetSessionAuditDigest_Out *out = (GetSessionAuditDigest_Out *) | |
MemoryGetOutBuffer(sizeof(GetSessionAuditDigest_Out)); | |
in->privacyAdminHandle = handles[0]; | |
in->signHandle = handles[1]; | |
in->sessionHandle = handles[2]; | |
result = TPM2B_DATA_Unmarshal(&in->qualifyingData, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_GetSessionAuditDigest_qualifyingData); | |
result = TPMT_SIG_SCHEME_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_GetSessionAuditDigest_inScheme); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_GetSessionAuditDigest (in, out); | |
rSize = sizeof(GetSessionAuditDigest_Out); | |
*respParmSize += TPM2B_ATTEST_Marshal(&out->auditInfo, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_SIGNATURE_Marshal(&out->signature, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_GetSessionAuditDigest | |
#if CC_GetCommandAuditDigest | |
case TPM_CC_GetCommandAuditDigest: { | |
GetCommandAuditDigest_In *in = (GetCommandAuditDigest_In *) | |
MemoryGetInBuffer(sizeof(GetCommandAuditDigest_In)); | |
GetCommandAuditDigest_Out *out = (GetCommandAuditDigest_Out *) | |
MemoryGetOutBuffer(sizeof(GetCommandAuditDigest_Out)); | |
in->privacyHandle = handles[0]; | |
in->signHandle = handles[1]; | |
result = TPM2B_DATA_Unmarshal(&in->qualifyingData, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_GetCommandAuditDigest_qualifyingData); | |
result = TPMT_SIG_SCHEME_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_GetCommandAuditDigest_inScheme); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_GetCommandAuditDigest (in, out); | |
rSize = sizeof(GetCommandAuditDigest_Out); | |
*respParmSize += TPM2B_ATTEST_Marshal(&out->auditInfo, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_SIGNATURE_Marshal(&out->signature, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_GetCommandAuditDigest | |
#if CC_GetTime | |
case TPM_CC_GetTime: { | |
GetTime_In *in = (GetTime_In *) | |
MemoryGetInBuffer(sizeof(GetTime_In)); | |
GetTime_Out *out = (GetTime_Out *) | |
MemoryGetOutBuffer(sizeof(GetTime_Out)); | |
in->privacyAdminHandle = handles[0]; | |
in->signHandle = handles[1]; | |
result = TPM2B_DATA_Unmarshal(&in->qualifyingData, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_GetTime_qualifyingData); | |
result = TPMT_SIG_SCHEME_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_GetTime_inScheme); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_GetTime (in, out); | |
rSize = sizeof(GetTime_Out); | |
*respParmSize += TPM2B_ATTEST_Marshal(&out->timeInfo, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_SIGNATURE_Marshal(&out->signature, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_GetTime | |
#if CC_CertifyX509 | |
case TPM_CC_CertifyX509: { | |
CertifyX509_In *in = (CertifyX509_In *) | |
MemoryGetInBuffer(sizeof(CertifyX509_In)); | |
CertifyX509_Out *out = (CertifyX509_Out *) | |
MemoryGetOutBuffer(sizeof(CertifyX509_Out)); | |
in->objectHandle = handles[0]; | |
in->signHandle = handles[1]; | |
result = TPM2B_DATA_Unmarshal(&in->reserved, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_CertifyX509_reserved); | |
result = TPMT_SIG_SCHEME_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_CertifyX509_inScheme); | |
result = TPM2B_MAX_BUFFER_Unmarshal(&in->partialCertificate, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_CertifyX509_partialCertificate); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_CertifyX509 (in, out); | |
rSize = sizeof(CertifyX509_Out); | |
*respParmSize += TPM2B_MAX_BUFFER_Marshal(&out->addedToCertificate, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_DIGEST_Marshal(&out->tbsDigest, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_SIGNATURE_Marshal(&out->signature, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_CertifyX509 | |
#if CC_Commit | |
case TPM_CC_Commit: { | |
Commit_In *in = (Commit_In *) | |
MemoryGetInBuffer(sizeof(Commit_In)); | |
Commit_Out *out = (Commit_Out *) | |
MemoryGetOutBuffer(sizeof(Commit_Out)); | |
in->signHandle = handles[0]; | |
result = TPM2B_ECC_POINT_Unmarshal(&in->P1, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Commit_P1); | |
result = TPM2B_SENSITIVE_DATA_Unmarshal(&in->s2, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Commit_s2); | |
result = TPM2B_ECC_PARAMETER_Unmarshal(&in->y2, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Commit_y2); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Commit (in, out); | |
rSize = sizeof(Commit_Out); | |
*respParmSize += TPM2B_ECC_POINT_Marshal(&out->K, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_ECC_POINT_Marshal(&out->L, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_ECC_POINT_Marshal(&out->E, | |
responseBuffer, &rSize); | |
*respParmSize += UINT16_Marshal(&out->counter, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_Commit | |
#if CC_EC_Ephemeral | |
case TPM_CC_EC_Ephemeral: { | |
EC_Ephemeral_In *in = (EC_Ephemeral_In *) | |
MemoryGetInBuffer(sizeof(EC_Ephemeral_In)); | |
EC_Ephemeral_Out *out = (EC_Ephemeral_Out *) | |
MemoryGetOutBuffer(sizeof(EC_Ephemeral_Out)); | |
result = TPMI_ECC_CURVE_Unmarshal(&in->curveID, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_EC_Ephemeral_curveID); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_EC_Ephemeral (in, out); | |
rSize = sizeof(EC_Ephemeral_Out); | |
*respParmSize += TPM2B_ECC_POINT_Marshal(&out->Q, | |
responseBuffer, &rSize); | |
*respParmSize += UINT16_Marshal(&out->counter, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_EC_Ephemeral | |
#if CC_VerifySignature | |
case TPM_CC_VerifySignature: { | |
VerifySignature_In *in = (VerifySignature_In *) | |
MemoryGetInBuffer(sizeof(VerifySignature_In)); | |
VerifySignature_Out *out = (VerifySignature_Out *) | |
MemoryGetOutBuffer(sizeof(VerifySignature_Out)); | |
in->keyHandle = handles[0]; | |
result = TPM2B_DIGEST_Unmarshal(&in->digest, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_VerifySignature_digest); | |
result = TPMT_SIGNATURE_Unmarshal(&in->signature, paramBuffer, paramBufferSize, FALSE); | |
EXIT_IF_ERROR_PLUS(RC_VerifySignature_signature); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_VerifySignature (in, out); | |
rSize = sizeof(VerifySignature_Out); | |
*respParmSize += TPMT_TK_VERIFIED_Marshal(&out->validation, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_VerifySignature | |
#if CC_Sign | |
case TPM_CC_Sign: { | |
Sign_In *in = (Sign_In *) | |
MemoryGetInBuffer(sizeof(Sign_In)); | |
Sign_Out *out = (Sign_Out *) | |
MemoryGetOutBuffer(sizeof(Sign_Out)); | |
in->keyHandle = handles[0]; | |
result = TPM2B_DIGEST_Unmarshal(&in->digest, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Sign_digest); | |
result = TPMT_SIG_SCHEME_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_Sign_inScheme); | |
result = TPMT_TK_HASHCHECK_Unmarshal(&in->validation, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Sign_validation); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Sign (in, out); | |
rSize = sizeof(Sign_Out); | |
*respParmSize += TPMT_SIGNATURE_Marshal(&out->signature, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_Sign | |
#if CC_SetCommandCodeAuditStatus | |
case TPM_CC_SetCommandCodeAuditStatus: { | |
SetCommandCodeAuditStatus_In *in = (SetCommandCodeAuditStatus_In *) | |
MemoryGetInBuffer(sizeof(SetCommandCodeAuditStatus_In)); | |
in->auth = handles[0]; | |
result = TPMI_ALG_HASH_Unmarshal(&in->auditAlg, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_SetCommandCodeAuditStatus_auditAlg); | |
result = TPML_CC_Unmarshal(&in->setList, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_SetCommandCodeAuditStatus_setList); | |
result = TPML_CC_Unmarshal(&in->clearList, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_SetCommandCodeAuditStatus_clearList); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_SetCommandCodeAuditStatus (in); | |
break; | |
} | |
#endif // CC_SetCommandCodeAuditStatus | |
#if CC_PCR_Extend | |
case TPM_CC_PCR_Extend: { | |
PCR_Extend_In *in = (PCR_Extend_In *) | |
MemoryGetInBuffer(sizeof(PCR_Extend_In)); | |
in->pcrHandle = handles[0]; | |
result = TPML_DIGEST_VALUES_Unmarshal(&in->digests, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PCR_Extend_digests); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PCR_Extend (in); | |
break; | |
} | |
#endif // CC_PCR_Extend | |
#if CC_PCR_Event | |
case TPM_CC_PCR_Event: { | |
PCR_Event_In *in = (PCR_Event_In *) | |
MemoryGetInBuffer(sizeof(PCR_Event_In)); | |
PCR_Event_Out *out = (PCR_Event_Out *) | |
MemoryGetOutBuffer(sizeof(PCR_Event_Out)); | |
in->pcrHandle = handles[0]; | |
result = TPM2B_EVENT_Unmarshal(&in->eventData, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PCR_Event_eventData); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PCR_Event (in, out); | |
rSize = sizeof(PCR_Event_Out); | |
*respParmSize += TPML_DIGEST_VALUES_Marshal(&out->digests, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_PCR_Event | |
#if CC_PCR_Read | |
case TPM_CC_PCR_Read: { | |
PCR_Read_In *in = (PCR_Read_In *) | |
MemoryGetInBuffer(sizeof(PCR_Read_In)); | |
PCR_Read_Out *out = (PCR_Read_Out *) | |
MemoryGetOutBuffer(sizeof(PCR_Read_Out)); | |
result = TPML_PCR_SELECTION_Unmarshal(&in->pcrSelectionIn, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PCR_Read_pcrSelectionIn); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PCR_Read (in, out); | |
rSize = sizeof(PCR_Read_Out); | |
*respParmSize += UINT32_Marshal(&out->pcrUpdateCounter, | |
responseBuffer, &rSize); | |
*respParmSize += TPML_PCR_SELECTION_Marshal(&out->pcrSelectionOut, | |
responseBuffer, &rSize); | |
*respParmSize += TPML_DIGEST_Marshal(&out->pcrValues, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_PCR_Read | |
#if CC_PCR_Allocate | |
case TPM_CC_PCR_Allocate: { | |
PCR_Allocate_In *in = (PCR_Allocate_In *) | |
MemoryGetInBuffer(sizeof(PCR_Allocate_In)); | |
PCR_Allocate_Out *out = (PCR_Allocate_Out *) | |
MemoryGetOutBuffer(sizeof(PCR_Allocate_Out)); | |
in->authHandle = handles[0]; | |
result = TPML_PCR_SELECTION_Unmarshal(&in->pcrAllocation, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PCR_Allocate_pcrAllocation); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PCR_Allocate (in, out); | |
rSize = sizeof(PCR_Allocate_Out); | |
*respParmSize += TPMI_YES_NO_Marshal(&out->allocationSuccess, | |
responseBuffer, &rSize); | |
*respParmSize += UINT32_Marshal(&out->maxPCR, | |
responseBuffer, &rSize); | |
*respParmSize += UINT32_Marshal(&out->sizeNeeded, | |
responseBuffer, &rSize); | |
*respParmSize += UINT32_Marshal(&out->sizeAvailable, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_PCR_Allocate | |
#if CC_PCR_SetAuthPolicy | |
case TPM_CC_PCR_SetAuthPolicy: { | |
PCR_SetAuthPolicy_In *in = (PCR_SetAuthPolicy_In *) | |
MemoryGetInBuffer(sizeof(PCR_SetAuthPolicy_In)); | |
in->authHandle = handles[0]; | |
result = TPM2B_DIGEST_Unmarshal(&in->authPolicy, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PCR_SetAuthPolicy_authPolicy); | |
result = TPMI_ALG_HASH_Unmarshal(&in->hashAlg, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_PCR_SetAuthPolicy_hashAlg); | |
result = TPMI_DH_PCR_Unmarshal(&in->pcrNum, paramBuffer, paramBufferSize, FALSE); | |
EXIT_IF_ERROR_PLUS(RC_PCR_SetAuthPolicy_pcrNum); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PCR_SetAuthPolicy (in); | |
break; | |
} | |
#endif // CC_PCR_SetAuthPolicy | |
#if CC_PCR_SetAuthValue | |
case TPM_CC_PCR_SetAuthValue: { | |
PCR_SetAuthValue_In *in = (PCR_SetAuthValue_In *) | |
MemoryGetInBuffer(sizeof(PCR_SetAuthValue_In)); | |
in->pcrHandle = handles[0]; | |
result = TPM2B_DIGEST_Unmarshal(&in->auth, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PCR_SetAuthValue_auth); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PCR_SetAuthValue (in); | |
break; | |
} | |
#endif // CC_PCR_SetAuthValue | |
#if CC_PCR_Reset | |
case TPM_CC_PCR_Reset: { | |
PCR_Reset_In *in = (PCR_Reset_In *) | |
MemoryGetInBuffer(sizeof(PCR_Reset_In)); | |
in->pcrHandle = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PCR_Reset (in); | |
break; | |
} | |
#endif // CC_PCR_Reset | |
#if CC_PolicySigned | |
case TPM_CC_PolicySigned: { | |
PolicySigned_In *in = (PolicySigned_In *) | |
MemoryGetInBuffer(sizeof(PolicySigned_In)); | |
PolicySigned_Out *out = (PolicySigned_Out *) | |
MemoryGetOutBuffer(sizeof(PolicySigned_Out)); | |
in->authObject = handles[0]; | |
in->policySession = handles[1]; | |
result = TPM2B_NONCE_Unmarshal(&in->nonceTPM, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicySigned_nonceTPM); | |
result = TPM2B_DIGEST_Unmarshal(&in->cpHashA, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicySigned_cpHashA); | |
result = TPM2B_NONCE_Unmarshal(&in->policyRef, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicySigned_policyRef); | |
result = INT32_Unmarshal(&in->expiration, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicySigned_expiration); | |
result = TPMT_SIGNATURE_Unmarshal(&in->auth, paramBuffer, paramBufferSize, FALSE); | |
EXIT_IF_ERROR_PLUS(RC_PolicySigned_auth); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicySigned (in, out); | |
rSize = sizeof(PolicySigned_Out); | |
*respParmSize += TPM2B_TIMEOUT_Marshal(&out->timeout, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_TK_AUTH_Marshal(&out->policyTicket, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_PolicySigned | |
#if CC_PolicySecret | |
case TPM_CC_PolicySecret: { | |
PolicySecret_In *in = (PolicySecret_In *) | |
MemoryGetInBuffer(sizeof(PolicySecret_In)); | |
PolicySecret_Out *out = (PolicySecret_Out *) | |
MemoryGetOutBuffer(sizeof(PolicySecret_Out)); | |
in->authHandle = handles[0]; | |
in->policySession = handles[1]; | |
result = TPM2B_NONCE_Unmarshal(&in->nonceTPM, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicySecret_nonceTPM); | |
result = TPM2B_DIGEST_Unmarshal(&in->cpHashA, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicySecret_cpHashA); | |
result = TPM2B_NONCE_Unmarshal(&in->policyRef, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicySecret_policyRef); | |
result = INT32_Unmarshal(&in->expiration, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicySecret_expiration); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicySecret (in, out); | |
rSize = sizeof(PolicySecret_Out); | |
*respParmSize += TPM2B_TIMEOUT_Marshal(&out->timeout, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_TK_AUTH_Marshal(&out->policyTicket, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_PolicySecret | |
#if CC_PolicyTicket | |
case TPM_CC_PolicyTicket: { | |
PolicyTicket_In *in = (PolicyTicket_In *) | |
MemoryGetInBuffer(sizeof(PolicyTicket_In)); | |
in->policySession = handles[0]; | |
result = TPM2B_TIMEOUT_Unmarshal(&in->timeout, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyTicket_timeout); | |
result = TPM2B_DIGEST_Unmarshal(&in->cpHashA, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyTicket_cpHashA); | |
result = TPM2B_NONCE_Unmarshal(&in->policyRef, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyTicket_policyRef); | |
result = TPM2B_NAME_Unmarshal(&in->authName, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyTicket_authName); | |
result = TPMT_TK_AUTH_Unmarshal(&in->ticket, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyTicket_ticket); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyTicket (in); | |
break; | |
} | |
#endif // CC_PolicyTicket | |
#if CC_PolicyOR | |
case TPM_CC_PolicyOR: { | |
PolicyOR_In *in = (PolicyOR_In *) | |
MemoryGetInBuffer(sizeof(PolicyOR_In)); | |
in->policySession = handles[0]; | |
result = TPML_DIGEST_Unmarshal(&in->pHashList, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyOR_pHashList); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyOR (in); | |
break; | |
} | |
#endif // CC_PolicyOR | |
#if CC_PolicyPCR | |
case TPM_CC_PolicyPCR: { | |
PolicyPCR_In *in = (PolicyPCR_In *) | |
MemoryGetInBuffer(sizeof(PolicyPCR_In)); | |
in->policySession = handles[0]; | |
result = TPM2B_DIGEST_Unmarshal(&in->pcrDigest, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyPCR_pcrDigest); | |
result = TPML_PCR_SELECTION_Unmarshal(&in->pcrs, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyPCR_pcrs); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyPCR (in); | |
break; | |
} | |
#endif // CC_PolicyPCR | |
#if CC_PolicyLocality | |
case TPM_CC_PolicyLocality: { | |
PolicyLocality_In *in = (PolicyLocality_In *) | |
MemoryGetInBuffer(sizeof(PolicyLocality_In)); | |
in->policySession = handles[0]; | |
result = TPMA_LOCALITY_Unmarshal(&in->locality, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyLocality_locality); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyLocality (in); | |
break; | |
} | |
#endif // CC_PolicyLocality | |
#if CC_PolicyNV | |
case TPM_CC_PolicyNV: { | |
PolicyNV_In *in = (PolicyNV_In *) | |
MemoryGetInBuffer(sizeof(PolicyNV_In)); | |
in->authHandle = handles[0]; | |
in->nvIndex = handles[1]; | |
in->policySession = handles[2]; | |
result = TPM2B_OPERAND_Unmarshal(&in->operandB, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyNV_operandB); | |
result = UINT16_Unmarshal(&in->offset, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyNV_offset); | |
result = TPM_EO_Unmarshal(&in->operation, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyNV_operation); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyNV (in); | |
break; | |
} | |
#endif // CC_PolicyNV | |
#if CC_PolicyCounterTimer | |
case TPM_CC_PolicyCounterTimer: { | |
PolicyCounterTimer_In *in = (PolicyCounterTimer_In *) | |
MemoryGetInBuffer(sizeof(PolicyCounterTimer_In)); | |
in->policySession = handles[0]; | |
result = TPM2B_OPERAND_Unmarshal(&in->operandB, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyCounterTimer_operandB); | |
result = UINT16_Unmarshal(&in->offset, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyCounterTimer_offset); | |
result = TPM_EO_Unmarshal(&in->operation, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyCounterTimer_operation); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyCounterTimer (in); | |
break; | |
} | |
#endif // CC_PolicyCounterTimer | |
#if CC_PolicyCommandCode | |
case TPM_CC_PolicyCommandCode: { | |
PolicyCommandCode_In *in = (PolicyCommandCode_In *) | |
MemoryGetInBuffer(sizeof(PolicyCommandCode_In)); | |
in->policySession = handles[0]; | |
result = TPM_CC_Unmarshal(&in->code, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyCommandCode_code); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyCommandCode (in); | |
break; | |
} | |
#endif // CC_PolicyCommandCode | |
#if CC_PolicyPhysicalPresence | |
case TPM_CC_PolicyPhysicalPresence: { | |
PolicyPhysicalPresence_In *in = (PolicyPhysicalPresence_In *) | |
MemoryGetInBuffer(sizeof(PolicyPhysicalPresence_In)); | |
in->policySession = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyPhysicalPresence (in); | |
break; | |
} | |
#endif // CC_PolicyPhysicalPresence | |
#if CC_PolicyCpHash | |
case TPM_CC_PolicyCpHash: { | |
PolicyCpHash_In *in = (PolicyCpHash_In *) | |
MemoryGetInBuffer(sizeof(PolicyCpHash_In)); | |
in->policySession = handles[0]; | |
result = TPM2B_DIGEST_Unmarshal(&in->cpHashA, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyCpHash_cpHashA); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyCpHash (in); | |
break; | |
} | |
#endif // CC_PolicyCpHash | |
#if CC_PolicyNameHash | |
case TPM_CC_PolicyNameHash: { | |
PolicyNameHash_In *in = (PolicyNameHash_In *) | |
MemoryGetInBuffer(sizeof(PolicyNameHash_In)); | |
in->policySession = handles[0]; | |
result = TPM2B_DIGEST_Unmarshal(&in->nameHash, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyNameHash_nameHash); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyNameHash (in); | |
break; | |
} | |
#endif // CC_PolicyNameHash | |
#if CC_PolicyDuplicationSelect | |
case TPM_CC_PolicyDuplicationSelect: { | |
PolicyDuplicationSelect_In *in = (PolicyDuplicationSelect_In *) | |
MemoryGetInBuffer(sizeof(PolicyDuplicationSelect_In)); | |
in->policySession = handles[0]; | |
result = TPM2B_NAME_Unmarshal(&in->objectName, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyDuplicationSelect_objectName); | |
result = TPM2B_NAME_Unmarshal(&in->newParentName, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyDuplicationSelect_newParentName); | |
result = TPMI_YES_NO_Unmarshal(&in->includeObject, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyDuplicationSelect_includeObject); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyDuplicationSelect (in); | |
break; | |
} | |
#endif // CC_PolicyDuplicationSelect | |
#if CC_PolicyAuthorize | |
case TPM_CC_PolicyAuthorize: { | |
PolicyAuthorize_In *in = (PolicyAuthorize_In *) | |
MemoryGetInBuffer(sizeof(PolicyAuthorize_In)); | |
in->policySession = handles[0]; | |
result = TPM2B_DIGEST_Unmarshal(&in->approvedPolicy, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyAuthorize_approvedPolicy); | |
result = TPM2B_NONCE_Unmarshal(&in->policyRef, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyAuthorize_policyRef); | |
result = TPM2B_NAME_Unmarshal(&in->keySign, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyAuthorize_keySign); | |
result = TPMT_TK_VERIFIED_Unmarshal(&in->checkTicket, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyAuthorize_checkTicket); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyAuthorize (in); | |
break; | |
} | |
#endif // CC_PolicyAuthorize | |
#if CC_PolicyAuthValue | |
case TPM_CC_PolicyAuthValue: { | |
PolicyAuthValue_In *in = (PolicyAuthValue_In *) | |
MemoryGetInBuffer(sizeof(PolicyAuthValue_In)); | |
in->policySession = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyAuthValue (in); | |
break; | |
} | |
#endif // CC_PolicyAuthValue | |
#if CC_PolicyPassword | |
case TPM_CC_PolicyPassword: { | |
PolicyPassword_In *in = (PolicyPassword_In *) | |
MemoryGetInBuffer(sizeof(PolicyPassword_In)); | |
in->policySession = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyPassword (in); | |
break; | |
} | |
#endif // CC_PolicyPassword | |
#if CC_PolicyGetDigest | |
case TPM_CC_PolicyGetDigest: { | |
PolicyGetDigest_In *in = (PolicyGetDigest_In *) | |
MemoryGetInBuffer(sizeof(PolicyGetDigest_In)); | |
PolicyGetDigest_Out *out = (PolicyGetDigest_Out *) | |
MemoryGetOutBuffer(sizeof(PolicyGetDigest_Out)); | |
in->policySession = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyGetDigest (in, out); | |
rSize = sizeof(PolicyGetDigest_Out); | |
*respParmSize += TPM2B_DIGEST_Marshal(&out->policyDigest, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_PolicyGetDigest | |
#if CC_PolicyNvWritten | |
case TPM_CC_PolicyNvWritten: { | |
PolicyNvWritten_In *in = (PolicyNvWritten_In *) | |
MemoryGetInBuffer(sizeof(PolicyNvWritten_In)); | |
in->policySession = handles[0]; | |
result = TPMI_YES_NO_Unmarshal(&in->writtenSet, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyNvWritten_writtenSet); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyNvWritten (in); | |
break; | |
} | |
#endif // CC_PolicyNvWritten | |
#if CC_PolicyTemplate | |
case TPM_CC_PolicyTemplate: { | |
PolicyTemplate_In *in = (PolicyTemplate_In *) | |
MemoryGetInBuffer(sizeof(PolicyTemplate_In)); | |
in->policySession = handles[0]; | |
result = TPM2B_DIGEST_Unmarshal(&in->templateHash, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PolicyTemplate_templateHash); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyTemplate (in); | |
break; | |
} | |
#endif // CC_PolicyTemplate | |
#if CC_PolicyAuthorizeNV | |
case TPM_CC_PolicyAuthorizeNV: { | |
PolicyAuthorizeNV_In *in = (PolicyAuthorizeNV_In *) | |
MemoryGetInBuffer(sizeof(PolicyAuthorizeNV_In)); | |
in->authHandle = handles[0]; | |
in->nvIndex = handles[1]; | |
in->policySession = handles[2]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PolicyAuthorizeNV (in); | |
break; | |
} | |
#endif // CC_PolicyAuthorizeNV | |
#if CC_CreatePrimary | |
case TPM_CC_CreatePrimary: { | |
CreatePrimary_In *in = (CreatePrimary_In *) | |
MemoryGetInBuffer(sizeof(CreatePrimary_In)); | |
CreatePrimary_Out *out = (CreatePrimary_Out *) | |
MemoryGetOutBuffer(sizeof(CreatePrimary_Out)); | |
in->primaryHandle = handles[0]; | |
result = TPM2B_SENSITIVE_CREATE_Unmarshal(&in->inSensitive, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_CreatePrimary_inSensitive); | |
result = TPM2B_PUBLIC_Unmarshal(&in->inPublic, paramBuffer, paramBufferSize, FALSE); | |
EXIT_IF_ERROR_PLUS(RC_CreatePrimary_inPublic); | |
result = TPM2B_DATA_Unmarshal(&in->outsideInfo, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_CreatePrimary_outsideInfo); | |
result = TPML_PCR_SELECTION_Unmarshal(&in->creationPCR, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_CreatePrimary_creationPCR); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_CreatePrimary (in, out); | |
rSize = sizeof(CreatePrimary_Out); | |
if(TPM_RC_SUCCESS != result) goto Exit; | |
command->handles[command->handleNum++] = out->objectHandle; | |
*respParmSize += TPM2B_PUBLIC_Marshal(&out->outPublic, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_CREATION_DATA_Marshal(&out->creationData, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_DIGEST_Marshal(&out->creationHash, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_TK_CREATION_Marshal(&out->creationTicket, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_NAME_Marshal(&out->name, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_CreatePrimary | |
#if CC_HierarchyControl | |
case TPM_CC_HierarchyControl: { | |
HierarchyControl_In *in = (HierarchyControl_In *) | |
MemoryGetInBuffer(sizeof(HierarchyControl_In)); | |
in->authHandle = handles[0]; | |
result = TPMI_RH_ENABLES_Unmarshal(&in->enable, paramBuffer, paramBufferSize, FALSE); | |
EXIT_IF_ERROR_PLUS(RC_HierarchyControl_enable); | |
result = TPMI_YES_NO_Unmarshal(&in->state, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_HierarchyControl_state); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_HierarchyControl (in); | |
break; | |
} | |
#endif // CC_HierarchyControl | |
#if CC_SetPrimaryPolicy | |
case TPM_CC_SetPrimaryPolicy: { | |
SetPrimaryPolicy_In *in = (SetPrimaryPolicy_In *) | |
MemoryGetInBuffer(sizeof(SetPrimaryPolicy_In)); | |
in->authHandle = handles[0]; | |
result = TPM2B_DIGEST_Unmarshal(&in->authPolicy, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_SetPrimaryPolicy_authPolicy); | |
result = TPMI_ALG_HASH_Unmarshal(&in->hashAlg, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_SetPrimaryPolicy_hashAlg); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_SetPrimaryPolicy (in); | |
break; | |
} | |
#endif // CC_SetPrimaryPolicy | |
#if CC_ChangePPS | |
case TPM_CC_ChangePPS: { | |
ChangePPS_In *in = (ChangePPS_In *) | |
MemoryGetInBuffer(sizeof(ChangePPS_In)); | |
in->authHandle = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ChangePPS (in); | |
break; | |
} | |
#endif // CC_ChangePPS | |
#if CC_ChangeEPS | |
case TPM_CC_ChangeEPS: { | |
ChangeEPS_In *in = (ChangeEPS_In *) | |
MemoryGetInBuffer(sizeof(ChangeEPS_In)); | |
in->authHandle = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ChangeEPS (in); | |
break; | |
} | |
#endif // CC_ChangeEPS | |
#if CC_Clear | |
case TPM_CC_Clear: { | |
Clear_In *in = (Clear_In *) | |
MemoryGetInBuffer(sizeof(Clear_In)); | |
in->authHandle = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Clear (in); | |
break; | |
} | |
#endif // CC_Clear | |
#if CC_ClearControl | |
case TPM_CC_ClearControl: { | |
ClearControl_In *in = (ClearControl_In *) | |
MemoryGetInBuffer(sizeof(ClearControl_In)); | |
in->auth = handles[0]; | |
result = TPMI_YES_NO_Unmarshal(&in->disable, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ClearControl_disable); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ClearControl (in); | |
break; | |
} | |
#endif // CC_ClearControl | |
#if CC_HierarchyChangeAuth | |
case TPM_CC_HierarchyChangeAuth: { | |
HierarchyChangeAuth_In *in = (HierarchyChangeAuth_In *) | |
MemoryGetInBuffer(sizeof(HierarchyChangeAuth_In)); | |
in->authHandle = handles[0]; | |
result = TPM2B_AUTH_Unmarshal(&in->newAuth, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_HierarchyChangeAuth_newAuth); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_HierarchyChangeAuth (in); | |
break; | |
} | |
#endif // CC_HierarchyChangeAuth | |
#if CC_DictionaryAttackLockReset | |
case TPM_CC_DictionaryAttackLockReset: { | |
DictionaryAttackLockReset_In *in = (DictionaryAttackLockReset_In *) | |
MemoryGetInBuffer(sizeof(DictionaryAttackLockReset_In)); | |
in->lockHandle = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_DictionaryAttackLockReset (in); | |
break; | |
} | |
#endif // CC_DictionaryAttackLockReset | |
#if CC_DictionaryAttackParameters | |
case TPM_CC_DictionaryAttackParameters: { | |
DictionaryAttackParameters_In *in = (DictionaryAttackParameters_In *) | |
MemoryGetInBuffer(sizeof(DictionaryAttackParameters_In)); | |
in->lockHandle = handles[0]; | |
result = UINT32_Unmarshal(&in->newMaxTries, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_DictionaryAttackParameters_newMaxTries); | |
result = UINT32_Unmarshal(&in->newRecoveryTime, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_DictionaryAttackParameters_newRecoveryTime); | |
result = UINT32_Unmarshal(&in->lockoutRecovery, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_DictionaryAttackParameters_lockoutRecovery); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_DictionaryAttackParameters (in); | |
break; | |
} | |
#endif // CC_DictionaryAttackParameters | |
#if CC_PP_Commands | |
case TPM_CC_PP_Commands: { | |
PP_Commands_In *in = (PP_Commands_In *) | |
MemoryGetInBuffer(sizeof(PP_Commands_In)); | |
in->auth = handles[0]; | |
result = TPML_CC_Unmarshal(&in->setList, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PP_Commands_setList); | |
result = TPML_CC_Unmarshal(&in->clearList, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_PP_Commands_clearList); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_PP_Commands (in); | |
break; | |
} | |
#endif // CC_PP_Commands | |
#if CC_SetAlgorithmSet | |
case TPM_CC_SetAlgorithmSet: { | |
SetAlgorithmSet_In *in = (SetAlgorithmSet_In *) | |
MemoryGetInBuffer(sizeof(SetAlgorithmSet_In)); | |
in->authHandle = handles[0]; | |
result = UINT32_Unmarshal(&in->algorithmSet, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_SetAlgorithmSet_algorithmSet); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_SetAlgorithmSet (in); | |
break; | |
} | |
#endif // CC_SetAlgorithmSet | |
#if CC_FieldUpgradeStart | |
case TPM_CC_FieldUpgradeStart: { | |
FieldUpgradeStart_In *in = (FieldUpgradeStart_In *) | |
MemoryGetInBuffer(sizeof(FieldUpgradeStart_In)); | |
in->authorization = handles[0]; | |
in->keyHandle = handles[1]; | |
result = TPM2B_DIGEST_Unmarshal(&in->fuDigest, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_FieldUpgradeStart_fuDigest); | |
result = TPMT_SIGNATURE_Unmarshal(&in->manifestSignature, paramBuffer, paramBufferSize, FALSE); | |
EXIT_IF_ERROR_PLUS(RC_FieldUpgradeStart_manifestSignature); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_FieldUpgradeStart (in); | |
break; | |
} | |
#endif // CC_FieldUpgradeStart | |
#if CC_FieldUpgradeData | |
case TPM_CC_FieldUpgradeData: { | |
FieldUpgradeData_In *in = (FieldUpgradeData_In *) | |
MemoryGetInBuffer(sizeof(FieldUpgradeData_In)); | |
FieldUpgradeData_Out *out = (FieldUpgradeData_Out *) | |
MemoryGetOutBuffer(sizeof(FieldUpgradeData_Out)); | |
result = TPM2B_MAX_BUFFER_Unmarshal(&in->fuData, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_FieldUpgradeData_fuData); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_FieldUpgradeData (in, out); | |
rSize = sizeof(FieldUpgradeData_Out); | |
*respParmSize += TPMT_HA_Marshal(&out->nextDigest, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_HA_Marshal(&out->firstDigest, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_FieldUpgradeData | |
#if CC_FirmwareRead | |
case TPM_CC_FirmwareRead: { | |
FirmwareRead_In *in = (FirmwareRead_In *) | |
MemoryGetInBuffer(sizeof(FirmwareRead_In)); | |
FirmwareRead_Out *out = (FirmwareRead_Out *) | |
MemoryGetOutBuffer(sizeof(FirmwareRead_Out)); | |
result = UINT32_Unmarshal(&in->sequenceNumber, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_FirmwareRead_sequenceNumber); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_FirmwareRead (in, out); | |
rSize = sizeof(FirmwareRead_Out); | |
*respParmSize += TPM2B_MAX_BUFFER_Marshal(&out->fuData, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_FirmwareRead | |
#if CC_ContextSave | |
case TPM_CC_ContextSave: { | |
ContextSave_In *in = (ContextSave_In *) | |
MemoryGetInBuffer(sizeof(ContextSave_In)); | |
ContextSave_Out *out = (ContextSave_Out *) | |
MemoryGetOutBuffer(sizeof(ContextSave_Out)); | |
in->saveHandle = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ContextSave (in, out); | |
rSize = sizeof(ContextSave_Out); | |
*respParmSize += TPMS_CONTEXT_Marshal(&out->context, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_ContextSave | |
#if CC_ContextLoad | |
case TPM_CC_ContextLoad: { | |
ContextLoad_In *in = (ContextLoad_In *) | |
MemoryGetInBuffer(sizeof(ContextLoad_In)); | |
ContextLoad_Out *out = (ContextLoad_Out *) | |
MemoryGetOutBuffer(sizeof(ContextLoad_Out)); | |
result = TPMS_CONTEXT_Unmarshal(&in->context, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ContextLoad_context); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ContextLoad (in, out); | |
rSize = sizeof(ContextLoad_Out); | |
if(TPM_RC_SUCCESS != result) goto Exit; | |
command->handles[command->handleNum++] = out->loadedHandle; | |
break; | |
} | |
#endif // CC_ContextLoad | |
#if CC_FlushContext | |
case TPM_CC_FlushContext: { | |
FlushContext_In *in = (FlushContext_In *) | |
MemoryGetInBuffer(sizeof(FlushContext_In)); | |
result = TPMI_DH_CONTEXT_Unmarshal(&in->flushHandle, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_FlushContext_flushHandle); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_FlushContext (in); | |
break; | |
} | |
#endif // CC_FlushContext | |
#if CC_EvictControl | |
case TPM_CC_EvictControl: { | |
EvictControl_In *in = (EvictControl_In *) | |
MemoryGetInBuffer(sizeof(EvictControl_In)); | |
in->auth = handles[0]; | |
in->objectHandle = handles[1]; | |
result = TPMI_DH_PERSISTENT_Unmarshal(&in->persistentHandle, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_EvictControl_persistentHandle); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_EvictControl (in); | |
break; | |
} | |
#endif // CC_EvictControl | |
#if CC_ReadClock | |
case TPM_CC_ReadClock: { | |
ReadClock_Out *out = (ReadClock_Out *) | |
MemoryGetOutBuffer(sizeof(ReadClock_Out)); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ReadClock (out); | |
rSize = sizeof(ReadClock_Out); | |
*respParmSize += TPMS_TIME_INFO_Marshal(&out->currentTime, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_ReadClock | |
#if CC_ClockSet | |
case TPM_CC_ClockSet: { | |
ClockSet_In *in = (ClockSet_In *) | |
MemoryGetInBuffer(sizeof(ClockSet_In)); | |
in->auth = handles[0]; | |
result = UINT64_Unmarshal(&in->newTime, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ClockSet_newTime); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ClockSet (in); | |
break; | |
} | |
#endif // CC_ClockSet | |
#if CC_ClockRateAdjust | |
case TPM_CC_ClockRateAdjust: { | |
ClockRateAdjust_In *in = (ClockRateAdjust_In *) | |
MemoryGetInBuffer(sizeof(ClockRateAdjust_In)); | |
in->auth = handles[0]; | |
result = TPM_CLOCK_ADJUST_Unmarshal(&in->rateAdjust, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ClockRateAdjust_rateAdjust); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ClockRateAdjust (in); | |
break; | |
} | |
#endif // CC_ClockRateAdjust | |
#if CC_GetCapability | |
case TPM_CC_GetCapability: { | |
GetCapability_In *in = (GetCapability_In *) | |
MemoryGetInBuffer(sizeof(GetCapability_In)); | |
GetCapability_Out *out = (GetCapability_Out *) | |
MemoryGetOutBuffer(sizeof(GetCapability_Out)); | |
result = TPM_CAP_Unmarshal(&in->capability, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_GetCapability_capability); | |
result = UINT32_Unmarshal(&in->property, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_GetCapability_property); | |
result = UINT32_Unmarshal(&in->propertyCount, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_GetCapability_propertyCount); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_GetCapability (in, out); | |
rSize = sizeof(GetCapability_Out); | |
*respParmSize += TPMI_YES_NO_Marshal(&out->moreData, | |
responseBuffer, &rSize); | |
*respParmSize += TPMS_CAPABILITY_DATA_Marshal(&out->capabilityData, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_GetCapability | |
#if CC_TestParms | |
case TPM_CC_TestParms: { | |
TestParms_In *in = (TestParms_In *) | |
MemoryGetInBuffer(sizeof(TestParms_In)); | |
result = TPMT_PUBLIC_PARMS_Unmarshal(&in->parameters, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_TestParms_parameters); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_TestParms (in); | |
break; | |
} | |
#endif // CC_TestParms | |
#if CC_NV_DefineSpace | |
case TPM_CC_NV_DefineSpace: { | |
NV_DefineSpace_In *in = (NV_DefineSpace_In *) | |
MemoryGetInBuffer(sizeof(NV_DefineSpace_In)); | |
in->authHandle = handles[0]; | |
result = TPM2B_AUTH_Unmarshal(&in->auth, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_NV_DefineSpace_auth); | |
result = TPM2B_NV_PUBLIC_Unmarshal(&in->publicInfo, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_NV_DefineSpace_publicInfo); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_NV_DefineSpace (in); | |
break; | |
} | |
#endif // CC_NV_DefineSpace | |
#if CC_NV_UndefineSpace | |
case TPM_CC_NV_UndefineSpace: { | |
NV_UndefineSpace_In *in = (NV_UndefineSpace_In *) | |
MemoryGetInBuffer(sizeof(NV_UndefineSpace_In)); | |
in->authHandle = handles[0]; | |
in->nvIndex = handles[1]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_NV_UndefineSpace (in); | |
break; | |
} | |
#endif // CC_NV_UndefineSpace | |
#if CC_NV_UndefineSpaceSpecial | |
case TPM_CC_NV_UndefineSpaceSpecial: { | |
NV_UndefineSpaceSpecial_In *in = (NV_UndefineSpaceSpecial_In *) | |
MemoryGetInBuffer(sizeof(NV_UndefineSpaceSpecial_In)); | |
in->nvIndex = handles[0]; | |
in->platform = handles[1]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_NV_UndefineSpaceSpecial (in); | |
break; | |
} | |
#endif // CC_NV_UndefineSpaceSpecial | |
#if CC_NV_ReadPublic | |
case TPM_CC_NV_ReadPublic: { | |
NV_ReadPublic_In *in = (NV_ReadPublic_In *) | |
MemoryGetInBuffer(sizeof(NV_ReadPublic_In)); | |
NV_ReadPublic_Out *out = (NV_ReadPublic_Out *) | |
MemoryGetOutBuffer(sizeof(NV_ReadPublic_Out)); | |
in->nvIndex = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_NV_ReadPublic (in, out); | |
rSize = sizeof(NV_ReadPublic_Out); | |
*respParmSize += TPM2B_NV_PUBLIC_Marshal(&out->nvPublic, | |
responseBuffer, &rSize); | |
*respParmSize += TPM2B_NAME_Marshal(&out->nvName, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_NV_ReadPublic | |
#if CC_NV_Write | |
case TPM_CC_NV_Write: { | |
NV_Write_In *in = (NV_Write_In *) | |
MemoryGetInBuffer(sizeof(NV_Write_In)); | |
in->authHandle = handles[0]; | |
in->nvIndex = handles[1]; | |
result = TPM2B_MAX_NV_BUFFER_Unmarshal(&in->data, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_NV_Write_data); | |
result = UINT16_Unmarshal(&in->offset, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_NV_Write_offset); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_NV_Write (in); | |
break; | |
} | |
#endif // CC_NV_Write | |
#if CC_NV_Increment | |
case TPM_CC_NV_Increment: { | |
NV_Increment_In *in = (NV_Increment_In *) | |
MemoryGetInBuffer(sizeof(NV_Increment_In)); | |
in->authHandle = handles[0]; | |
in->nvIndex = handles[1]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_NV_Increment (in); | |
break; | |
} | |
#endif // CC_NV_Increment | |
#if CC_NV_Extend | |
case TPM_CC_NV_Extend: { | |
NV_Extend_In *in = (NV_Extend_In *) | |
MemoryGetInBuffer(sizeof(NV_Extend_In)); | |
in->authHandle = handles[0]; | |
in->nvIndex = handles[1]; | |
result = TPM2B_MAX_NV_BUFFER_Unmarshal(&in->data, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_NV_Extend_data); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_NV_Extend (in); | |
break; | |
} | |
#endif // CC_NV_Extend | |
#if CC_NV_SetBits | |
case TPM_CC_NV_SetBits: { | |
NV_SetBits_In *in = (NV_SetBits_In *) | |
MemoryGetInBuffer(sizeof(NV_SetBits_In)); | |
in->authHandle = handles[0]; | |
in->nvIndex = handles[1]; | |
result = UINT64_Unmarshal(&in->bits, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_NV_SetBits_bits); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_NV_SetBits (in); | |
break; | |
} | |
#endif // CC_NV_SetBits | |
#if CC_NV_WriteLock | |
case TPM_CC_NV_WriteLock: { | |
NV_WriteLock_In *in = (NV_WriteLock_In *) | |
MemoryGetInBuffer(sizeof(NV_WriteLock_In)); | |
in->authHandle = handles[0]; | |
in->nvIndex = handles[1]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_NV_WriteLock (in); | |
break; | |
} | |
#endif // CC_NV_WriteLock | |
#if CC_NV_GlobalWriteLock | |
case TPM_CC_NV_GlobalWriteLock: { | |
NV_GlobalWriteLock_In *in = (NV_GlobalWriteLock_In *) | |
MemoryGetInBuffer(sizeof(NV_GlobalWriteLock_In)); | |
in->authHandle = handles[0]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_NV_GlobalWriteLock (in); | |
break; | |
} | |
#endif // CC_NV_GlobalWriteLock | |
#if CC_NV_Read | |
case TPM_CC_NV_Read: { | |
NV_Read_In *in = (NV_Read_In *) | |
MemoryGetInBuffer(sizeof(NV_Read_In)); | |
NV_Read_Out *out = (NV_Read_Out *) | |
MemoryGetOutBuffer(sizeof(NV_Read_Out)); | |
in->authHandle = handles[0]; | |
in->nvIndex = handles[1]; | |
result = UINT16_Unmarshal(&in->size, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_NV_Read_size); | |
result = UINT16_Unmarshal(&in->offset, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_NV_Read_offset); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_NV_Read (in, out); | |
rSize = sizeof(NV_Read_Out); | |
*respParmSize += TPM2B_MAX_NV_BUFFER_Marshal(&out->data, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_NV_Read | |
#if CC_NV_ReadLock | |
case TPM_CC_NV_ReadLock: { | |
NV_ReadLock_In *in = (NV_ReadLock_In *) | |
MemoryGetInBuffer(sizeof(NV_ReadLock_In)); | |
in->authHandle = handles[0]; | |
in->nvIndex = handles[1]; | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_NV_ReadLock (in); | |
break; | |
} | |
#endif // CC_NV_ReadLock | |
#if CC_NV_ChangeAuth | |
case TPM_CC_NV_ChangeAuth: { | |
NV_ChangeAuth_In *in = (NV_ChangeAuth_In *) | |
MemoryGetInBuffer(sizeof(NV_ChangeAuth_In)); | |
in->nvIndex = handles[0]; | |
result = TPM2B_AUTH_Unmarshal(&in->newAuth, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_NV_ChangeAuth_newAuth); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_NV_ChangeAuth (in); | |
break; | |
} | |
#endif // CC_NV_ChangeAuth | |
#if CC_NV_Certify | |
case TPM_CC_NV_Certify: { | |
NV_Certify_In *in = (NV_Certify_In *) | |
MemoryGetInBuffer(sizeof(NV_Certify_In)); | |
NV_Certify_Out *out = (NV_Certify_Out *) | |
MemoryGetOutBuffer(sizeof(NV_Certify_Out)); | |
in->signHandle = handles[0]; | |
in->authHandle = handles[1]; | |
in->nvIndex = handles[2]; | |
result = TPM2B_DATA_Unmarshal(&in->qualifyingData, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_NV_Certify_qualifyingData); | |
result = TPMT_SIG_SCHEME_Unmarshal(&in->inScheme, paramBuffer, paramBufferSize, TRUE); | |
EXIT_IF_ERROR_PLUS(RC_NV_Certify_inScheme); | |
result = UINT16_Unmarshal(&in->size, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_NV_Certify_size); | |
result = UINT16_Unmarshal(&in->offset, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_NV_Certify_offset); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_NV_Certify (in, out); | |
rSize = sizeof(NV_Certify_Out); | |
*respParmSize += TPM2B_ATTEST_Marshal(&out->certifyInfo, | |
responseBuffer, &rSize); | |
*respParmSize += TPMT_SIGNATURE_Marshal(&out->signature, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_NV_Certify | |
#if CC_AC_GetCapability | |
case TPM_CC_AC_GetCapability: { | |
AC_GetCapability_In *in = (AC_GetCapability_In *) | |
MemoryGetInBuffer(sizeof(AC_GetCapability_In)); | |
AC_GetCapability_Out *out = (AC_GetCapability_Out *) | |
MemoryGetOutBuffer(sizeof(AC_GetCapability_Out)); | |
in->ac = handles[0]; | |
result = TPM_AT_Unmarshal(&in->capability, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_AC_GetCapability_capability); | |
result = UINT32_Unmarshal(&in->count, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_AC_GetCapability_count); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_AC_GetCapability (in, out); | |
rSize = sizeof(AC_GetCapability_Out); | |
*respParmSize += TPMI_YES_NO_Marshal(&out->moreData, | |
responseBuffer, &rSize); | |
*respParmSize += TPML_AC_CAPABILITIES_Marshal(&out->capabilitiesData, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_AC_GetCapability | |
#if CC_AC_Send | |
case TPM_CC_AC_Send: { | |
AC_Send_In *in = (AC_Send_In *) | |
MemoryGetInBuffer(sizeof(AC_Send_In)); | |
AC_Send_Out *out = (AC_Send_Out *) | |
MemoryGetOutBuffer(sizeof(AC_Send_Out)); | |
in->sendObject = handles[0]; | |
in->authHandle = handles[1]; | |
in->ac = handles[2]; | |
result = TPM2B_MAX_BUFFER_Unmarshal(&in->acDataIn, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_AC_Send_acDataIn); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_AC_Send (in, out); | |
rSize = sizeof(AC_Send_Out); | |
*respParmSize += TPMS_AC_OUTPUT_Marshal(&out->acDataOut, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_AC_Send | |
#if CC_Policy_AC_SendSelect | |
case TPM_CC_Policy_AC_SendSelect: { | |
Policy_AC_SendSelect_In *in = (Policy_AC_SendSelect_In *) | |
MemoryGetInBuffer(sizeof(Policy_AC_SendSelect_In)); | |
in->policySession = handles[0]; | |
result = TPM2B_NAME_Unmarshal(&in->objectName, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Policy_AC_SendSelect_objectName); | |
result = TPM2B_NAME_Unmarshal(&in->authHandleName, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Policy_AC_SendSelect_authHandleName); | |
result = TPM2B_NAME_Unmarshal(&in->acName, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Policy_AC_SendSelect_acName); | |
result = TPMI_YES_NO_Unmarshal(&in->includeObject, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Policy_AC_SendSelect_includeObject); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Policy_AC_SendSelect (in); | |
break; | |
} | |
#endif // CC_Policy_AC_SendSelect | |
#if CC_ACT_SetTimeout | |
case TPM_CC_ACT_SetTimeout: { | |
ACT_SetTimeout_In *in = (ACT_SetTimeout_In *) | |
MemoryGetInBuffer(sizeof(ACT_SetTimeout_In)); | |
in->actHandle = handles[0]; | |
result = UINT32_Unmarshal(&in->startTimeout, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_ACT_SetTimeout_startTimeout); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_ACT_SetTimeout (in); | |
break; | |
} | |
#endif // CC_ACT_SetTimeout | |
#if CC_Vendor_TCG_Test | |
case TPM_CC_Vendor_TCG_Test: { | |
Vendor_TCG_Test_In *in = (Vendor_TCG_Test_In *) | |
MemoryGetInBuffer(sizeof(Vendor_TCG_Test_In)); | |
Vendor_TCG_Test_Out *out = (Vendor_TCG_Test_Out *) | |
MemoryGetOutBuffer(sizeof(Vendor_TCG_Test_Out)); | |
result = TPM2B_DATA_Unmarshal(&in->inputData, paramBuffer, paramBufferSize); | |
EXIT_IF_ERROR_PLUS(RC_Vendor_TCG_Test_inputData); | |
if(*paramBufferSize != 0) { result = TPM_RC_SIZE; goto Exit; } | |
result = TPM2_Vendor_TCG_Test (in, out); | |
rSize = sizeof(Vendor_TCG_Test_Out); | |
*respParmSize += TPM2B_DATA_Marshal(&out->outputData, | |
responseBuffer, &rSize); | |
break; | |
} | |
#endif // CC_Vendor_TCG_Test |