azure-protected-vm-secrets/SecretsProvsioningUT/TpmMocks.cpp (81 lines of code) (raw):

//#include "pch.h" #include "TpmMocks.h" #include "TpmError.h" #include <string.h> extern std::shared_ptr<TpmLibMock> tpmLibMockObj; extern "C" { TSS2_RC Esys_TR_FromTPMPublic(ESYS_CONTEXT* esysContext, TPM2_HANDLE tpm_handle, ESYS_TR optionalSession1, ESYS_TR optionalSession2, ESYS_TR optionalSession3, ESYS_TR* object) { return tpmLibMockObj->Esys_TR_FromTPMPublic(esysContext, tpm_handle, optionalSession1, optionalSession2, optionalSession3, object); } TSS2_RC Esys_EvictControl(ESYS_CONTEXT* esysContext, ESYS_TR auth, ESYS_TR objectHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, TPMI_DH_PERSISTENT persistentHandle, ESYS_TR* newObjectHandle) { return tpmLibMockObj->Esys_EvictControl(esysContext, auth, objectHandle, shandle1, shandle2, shandle3, persistentHandle, newObjectHandle); } TSS2_RC Esys_TR_SetAuth( ESYS_CONTEXT* esysContext, ESYS_TR handle, TPM2B_AUTH const* authValue) { return tpmLibMockObj->Esys_TR_SetAuth(esysContext, handle, authValue); } TSS2_RC Esys_RSA_Decrypt( ESYS_CONTEXT* esysContext, ESYS_TR keyHandle, ESYS_TR shandle1, ESYS_TR shandle2, ESYS_TR shandle3, const TPM2B_PUBLIC_KEY_RSA* cipherText, const TPMT_RSA_DECRYPT* inScheme, const TPM2B_DATA* label, TPM2B_PUBLIC_KEY_RSA** message) { auto rc = tpmLibMockObj->Esys_RSA_Decrypt(esysContext, keyHandle, shandle1, shandle2, shandle3, cipherText, inScheme, label, message); TPM2B_PUBLIC_KEY_RSA *plain = (TPM2B_PUBLIC_KEY_RSA*)calloc(1, sizeof(TPM2B_PUBLIC_KEY_RSA)); plain->size = 0; plain->buffer[0] = {}; *message = plain; return rc; } #ifdef PLATFORM_UNIX TSS2_RC Tss2_Tcti_Device_Init(TSS2_TCTI_CONTEXT* tctiContext, size_t* size, const char* conf) #else TSS2_RC Tss2_Tcti_Tbs_Init(TSS2_TCTI_CONTEXT* tctiContext, size_t* size, const char* conf) #endif { if (tctiContext == nullptr) { // If tctiContext is null, give desired size *size = sizeof(TSS2_TCTI_CONTEXT_COMMON_V1); } else if (*size = sizeof(TSS2_TCTI_CONTEXT_COMMON_V1)) { // If size is expected, set finalize to null to keep TctiFinalize macro from // trying to do cleanup ((TSS2_TCTI_CONTEXT_COMMON_V1*)tctiContext)->finalize = nullptr; } else { // If size is not expected, return error return 1; } return 0; } TSS2_RC Esys_Initialize(ESYS_CONTEXT** esys_context, TSS2_TCTI_CONTEXT* tcti, TSS2_ABI_VERSION* abiVersion) { // Give back a random handle, doesn't matter what it points to *esys_context = (ESYS_CONTEXT*)malloc(sizeof(void*)); return 0; } void Esys_Finalize(ESYS_CONTEXT** esys_context) { free(*esys_context); esys_context = nullptr; } }