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

#pragma once #include <tss2/tss2_esys.h> #include <tss2/tss2_tcti_device.h> #include "gtest/gtest.h" #include "gmock/gmock.h" #include "Tpm.h" #include "Tss2Wrapper.h" #include "TssCtx.h" struct ESYS_CREATEPRIMARY_PARAMS { ESYS_CONTEXT* esysContext; ESYS_TR primaryHandle; ESYS_TR shandle1; ESYS_TR shandle2; ESYS_TR shandle3; const TPM2B_SENSITIVE_CREATE* inSensitive; const TPM2B_PUBLIC* inPublic; const TPM2B_DATA* outsideInfo; const TPML_PCR_SELECTION* creationPCR; ESYS_TR* objectHandle; TPM2B_PUBLIC** outPublic; TPM2B_CREATION_DATA** creationData; TPM2B_DIGEST** creationHash; TPMT_TK_CREATION** creationTicket; }; class TpmLibInterface { public: virtual ~TpmLibInterface() {}; virtual TSS2_RC Esys_TR_FromTPMPublic(ESYS_CONTEXT* esysContext, TPM2_HANDLE tpm_handle, ESYS_TR optionalSession1, ESYS_TR optionalSession2, ESYS_TR optionalSession3, ESYS_TR* object) = 0; virtual TSS2_RC Esys_TR_SetAuth( ESYS_CONTEXT* esysContext, ESYS_TR handle, TPM2B_AUTH const* authValue) = 0; virtual 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) = 0; }; class TpmLibMock : public TpmLibInterface { public: virtual ~TpmLibMock() {}; MOCK_METHOD6(Esys_TR_FromTPMPublic, TSS2_RC(ESYS_CONTEXT* esysContext, TPM2_HANDLE tpm_handle, ESYS_TR optionalSession1, ESYS_TR optionalSession2, ESYS_TR optionalSession3, ESYS_TR* object)); MOCK_METHOD8(Esys_EvictControl, TSS2_RC(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)); MOCK_METHOD3(Esys_TR_SetAuth, TSS2_RC(ESYS_CONTEXT* esysContext, ESYS_TR handle, TPM2B_AUTH const* authValue)); MOCK_METHOD9(Esys_RSA_Decrypt, TSS2_RC(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)); };