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