1bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// 2bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// Copyright (C) 2014 The Android Open Source Project 3bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// 4bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// Licensed under the Apache License, Version 2.0 (the "License"); 5bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// you may not use this file except in compliance with the License. 6bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// You may obtain a copy of the License at 7bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// 8bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// http://www.apache.org/licenses/LICENSE-2.0 9bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// 10bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// Unless required by applicable law or agreed to in writing, software 11bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// distributed under the License is distributed on an "AS IS" BASIS, 12bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// See the License for the specific language governing permissions and 14bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// limitations under the License. 15bbef5dff2b94fef72012e721cd6124cd87621af4Utkarsh Sanghi// 1603d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 1703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn#ifndef TRUNKS_MOCK_TPM_UTILITY_H_ 1803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn#define TRUNKS_MOCK_TPM_UTILITY_H_ 1903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 2003d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn#include <string> 2103d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 2203d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn#include <gmock/gmock.h> 2303d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 24343cb530db4edbc0f09718af0a96ddb6c5430b18Utkarsh Sanghi#include "trunks/tpm_utility.h" 25343cb530db4edbc0f09718af0a96ddb6c5430b18Utkarsh Sanghi 2603d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahnnamespace trunks { 2703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 2803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahnclass MockTpmUtility : public TpmUtility { 2903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn public: 3003d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn MockTpmUtility(); 31295e851b66fb19c05a14401e834337962a58c493Darren Krahn ~MockTpmUtility() override; 3203d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 3303d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn MOCK_METHOD0(Startup, TPM_RC()); 34d75dcae8a010d1ced7554dd25a440bee350a2d06Utkarsh Sanghi MOCK_METHOD0(Clear, TPM_RC()); 35e8b9a556d4561617747fed4ee5ced70fce9a4392Utkarsh Sanghi MOCK_METHOD0(Shutdown, void()); 3603d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn MOCK_METHOD0(InitializeTpm, TPM_RC()); 37e7eb2bf306af6e8408cd77125861542d19e5ec6dUtkarsh Sanghi MOCK_METHOD1(AllocatePCR, TPM_RC(const std::string&)); 384dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD3(TakeOwnership, 394dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_RC(const std::string&, 404dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn const std::string&, 414dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn const std::string&)); 425d3b9451ae2e912aefed0669dd50b2a777ea0ab2Utkarsh Sanghi MOCK_METHOD2(StirRandom, TPM_RC(const std::string&, AuthorizationDelegate*)); 434dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD3(GenerateRandom, 444dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_RC(size_t, AuthorizationDelegate*, std::string*)); 458b2bf63478b292937f85b3b0e215882af461a999Utkarsh Sanghi MOCK_METHOD3(ExtendPCR, 465d3b9451ae2e912aefed0669dd50b2a777ea0ab2Utkarsh Sanghi TPM_RC(int, const std::string&, AuthorizationDelegate*)); 47579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi MOCK_METHOD2(ReadPCR, TPM_RC(int, std::string*)); 484dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD6(AsymmetricEncrypt, 494dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_RC(TPM_HANDLE, 504dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_ALG_ID, 514dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_ALG_ID, 524dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn const std::string&, 534dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn AuthorizationDelegate*, 544dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn std::string*)); 554dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD6(AsymmetricDecrypt, 564dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_RC(TPM_HANDLE, 574dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_ALG_ID, 584dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_ALG_ID, 594dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn const std::string&, 604dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn AuthorizationDelegate*, 614dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn std::string*)); 624dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD6(Sign, 634dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_RC(TPM_HANDLE, 644dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_ALG_ID, 654dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_ALG_ID, 664dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn const std::string&, 674dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn AuthorizationDelegate*, 684dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn std::string*)); 694dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD6(Verify, 704dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_RC(TPM_HANDLE, 714dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_ALG_ID, 724dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_ALG_ID, 734dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn const std::string&, 744dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn const std::string&, 754dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn AuthorizationDelegate*)); 764dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD2(CertifyCreation, TPM_RC(TPM_HANDLE, const std::string&)); 774dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD4(ChangeKeyAuthorizationData, 784dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_RC(TPM_HANDLE, 794dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn const std::string&, 804dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn AuthorizationDelegate*, 814dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn std::string*)); 824dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD7(ImportRSAKey, 834dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_RC(AsymmetricKeyUsage, 844dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn const std::string&, 854dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn uint32_t, 864dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn const std::string&, 874dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn const std::string&, 884dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn AuthorizationDelegate*, 894dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn std::string*)); 904dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD10(CreateRSAKeyPair, 914dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_RC(AsymmetricKeyUsage, 924dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn int, 934dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn uint32_t, 944dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn const std::string&, 954dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn const std::string&, 964dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn bool, 974dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn int, 984dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn AuthorizationDelegate*, 994dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn std::string*, 1004dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn std::string*)); 1014dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD3(LoadKey, 1024dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_RC(const std::string&, AuthorizationDelegate*, TPM_HANDLE*)); 1036465502c740d2599d95e09232c744f6d2ed54505Utkarsh Sanghi MOCK_METHOD2(GetKeyName, TPM_RC(TPM_HANDLE, std::string*)); 1048b2bf63478b292937f85b3b0e215882af461a999Utkarsh Sanghi MOCK_METHOD2(GetKeyPublicArea, TPM_RC(TPM_HANDLE, TPMT_PUBLIC*)); 1054dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD4(SealData, 1064dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_RC(const std::string&, 1074dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn const std::string&, 1084dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn AuthorizationDelegate*, 1094dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn std::string*)); 1104dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD3(UnsealData, 1114dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_RC(const std::string&, 1124dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn AuthorizationDelegate*, 1134dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn std::string*)); 114a6e332ee7f5fe52c1291d961dbeda975c8272044Utkarsh Sanghi MOCK_METHOD1(StartSession, TPM_RC(HmacSession*)); 1154dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD3(GetPolicyDigestForPcrValue, 1164dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn TPM_RC(int, const std::string&, std::string*)); 117b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn MOCK_METHOD6(DefineNVSpace, 118b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn TPM_RC(uint32_t, 119b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn size_t, 120b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn TPMA_NV, 121b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn const std::string&, 122b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn const std::string&, 123b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn AuthorizationDelegate*)); 1244dc4629c415e7ca90ff146d7bb75b5646ecd8b17Darren Krahn MOCK_METHOD2(DestroyNVSpace, TPM_RC(uint32_t, AuthorizationDelegate*)); 125b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn MOCK_METHOD5(LockNVSpace, 126b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn TPM_RC(uint32_t, bool, bool, bool, AuthorizationDelegate*)); 127b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn MOCK_METHOD6(WriteNVSpace, 128b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn TPM_RC(uint32_t, 129b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn uint32_t, 130b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn const std::string&, 131b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn bool, 132b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn bool, 133b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn AuthorizationDelegate*)); 134b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn MOCK_METHOD6(ReadNVSpace, 135b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn TPM_RC(uint32_t, 136b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn uint32_t, 137b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn size_t, 138b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn bool, 139b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn std::string*, 140b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn AuthorizationDelegate*)); 14139dd58452d7fe3ebe93490a6239a76b385bd676dUtkarsh Sanghi MOCK_METHOD2(GetNVSpaceName, TPM_RC(uint32_t, std::string*)); 14239dd58452d7fe3ebe93490a6239a76b385bd676dUtkarsh Sanghi MOCK_METHOD2(GetNVSpacePublicArea, TPM_RC(uint32_t, TPMS_NV_PUBLIC*)); 143b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn MOCK_METHOD1(ListNVSpaces, TPM_RC(std::vector<uint32_t>*)); 144b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn MOCK_METHOD4(SetDictionaryAttackParameters, 145b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn TPM_RC(uint32_t, uint32_t, uint32_t, AuthorizationDelegate*)); 146b180754b429c078cbc99175a6059a8b5d0491002Darren Krahn MOCK_METHOD1(ResetDictionaryAttackLock, TPM_RC(AuthorizationDelegate*)); 14703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn}; 14803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 14903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn} // namespace trunks 15003d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 15103d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn#endif // TRUNKS_MOCK_TPM_UTILITY_H_ 152