trunks_factory_for_test.cc revision 82b03cf80cbe7ab5d5edb2cb46d245721e993a68
1c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn// Copyright 2014 The Chromium OS Authors. All rights reserved. 2c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn// Use of this source code is governed by a BSD-style license that can be 3c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn// found in the LICENSE file. 4c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 5c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn#include "trunks/trunks_factory_for_test.h" 6c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 7c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn#include <gmock/gmock.h> 8c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 9c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn#include "trunks/authorization_delegate.h" 1052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn#include "trunks/authorization_session.h" 1152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn#include "trunks/mock_authorization_session.h" 12c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn#include "trunks/mock_tpm.h" 13c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn#include "trunks/mock_tpm_state.h" 1403d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn#include "trunks/mock_tpm_utility.h" 15a19238f46d4341489fd1d3140df1bb09bdbd8f01Darren Krahn#include "trunks/null_authorization_delegate.h" 16c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn#include "trunks/tpm_generated.h" 17c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn#include "trunks/tpm_state.h" 18c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn#include "trunks/tpm_utility.h" 19c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 20c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnusing testing::NiceMock; 21c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 22c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnnamespace trunks { 23c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 24c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn// Forwards all calls to a target instance. 25c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnclass TpmStateForwarder : public TpmState { 26c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn public: 27c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn explicit TpmStateForwarder(TpmState* target) : target_(target) {} 28c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn virtual ~TpmStateForwarder() {} 29c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 30c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn TPM_RC Initialize() override { 31c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->Initialize(); 32c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 33c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 3452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn bool IsOwnerPasswordSet() override { 3552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->IsOwnerPasswordSet(); 3652e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 3752e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 3852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn bool IsEndorsementPasswordSet() override { 3952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->IsEndorsementPasswordSet(); 4052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 4152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 4252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn bool IsLockoutPasswordSet() override { 4352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->IsLockoutPasswordSet(); 4452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 4552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 46c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool IsInLockout() override { 47c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->IsInLockout(); 48c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 49c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 50c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool IsPlatformHierarchyEnabled() override { 51c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->IsPlatformHierarchyEnabled(); 52c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 53c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 54c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool WasShutdownOrderly() override { 55c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->WasShutdownOrderly(); 56c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 57c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 58c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn private: 59c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn TpmState* target_; 60c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn}; 61c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 62c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn// Forwards all calls to a target instance. 6303d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahnclass TpmUtilityForwarder : public TpmUtility { 6403d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn public: 6503d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn explicit TpmUtilityForwarder(TpmUtility* target) : target_(target) {} 6603d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn virtual ~TpmUtilityForwarder() {} 6703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 6803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn TPM_RC Startup() override { 6903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn return target_->Startup(); 7003d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn } 7103d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 7203d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn TPM_RC InitializeTpm() override { 7303d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn return target_->InitializeTpm(); 7403d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn } 7503d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 7603d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn TPM_RC StirRandom(const std::string& entropy_data) override { 7703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn return target_->StirRandom(entropy_data); 7803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn } 7903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 8003d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn TPM_RC GenerateRandom(int num_bytes, std::string* random_data) override { 8103d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn return target_->GenerateRandom(num_bytes, random_data); 8203d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn } 8303d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 84579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi TPM_RC ExtendPCR(int pcr_index, const std::string& extend_data) override { 85579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi return target_->ExtendPCR(pcr_index, extend_data); 86579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi } 87579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi 88579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi TPM_RC ReadPCR(int pcr_index, std::string* pcr_value) override { 89579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi return target_->ReadPCR(pcr_index, pcr_value); 90579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi } 91579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi 9252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TPM_RC TakeOwnership(const std::string& owner_password, 9352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn const std::string& endorsement_password, 9452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn const std::string& lockout_password) override { 9552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->TakeOwnership(owner_password, 9652e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn endorsement_password, 9752e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn lockout_password); 9852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 9952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 10052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TPM_RC CreateStorageRootKeys(const std::string& owner_password) override { 10152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->CreateStorageRootKeys(owner_password); 10252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 10352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 104b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi TPM_RC AsymmetricEncrypt(TPM_HANDLE key_handle, 105b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi TPM_ALG_ID scheme, 1069dc77fecdb2446da134b9b2901173bb4dcf5e5e4Utkarsh Sanghi TPM_ALG_ID hash_alg, 107b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi const std::string& plaintext, 108748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi std::string* ciphertext) override { 109b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi return target_->AsymmetricEncrypt(key_handle, 110b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi scheme, 1119dc77fecdb2446da134b9b2901173bb4dcf5e5e4Utkarsh Sanghi hash_alg, 112b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi plaintext, 113b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi ciphertext); 114b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi } 115b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi 116b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi TPM_RC AsymmetricDecrypt(TPM_HANDLE key_handle, 117b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi TPM_ALG_ID scheme, 1189dc77fecdb2446da134b9b2901173bb4dcf5e5e4Utkarsh Sanghi TPM_ALG_ID hash_alg, 119b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi const std::string& password, 120b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi const std::string& ciphertext, 121748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi std::string* plaintext) override { 122b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi return target_->AsymmetricDecrypt(key_handle, 123b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi scheme, 1249dc77fecdb2446da134b9b2901173bb4dcf5e5e4Utkarsh Sanghi hash_alg, 125b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi password, 126b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi ciphertext, 127b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi plaintext); 128b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi } 129b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi 130748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_RC Sign(TPM_HANDLE key_handle, 131748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_ALG_ID scheme, 132748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_ALG_ID hash_alg, 133748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi const std::string& password, 134748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi const std::string& digest, 135748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi std::string* signature) override { 136748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi return target_->Sign(key_handle, 137748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi scheme, 138748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi hash_alg, 139748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi password, 140748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi digest, 141748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi signature); 142748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi } 143748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi 144748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_RC Verify(TPM_HANDLE key_handle, 145748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_ALG_ID scheme, 146748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_ALG_ID hash_alg, 147748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi const std::string& digest, 148748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi const std::string& signature) override { 149748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi return target_->Verify(key_handle, scheme, hash_alg, digest, signature); 150748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi } 151748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi 15282b03cf80cbe7ab5d5edb2cb46d245721e993a68Utkarsh Sanghi TPM_RC CreateRSAKey(AsymmetricKeyUsage key_type, 15382b03cf80cbe7ab5d5edb2cb46d245721e993a68Utkarsh Sanghi const std::string& password, 15482b03cf80cbe7ab5d5edb2cb46d245721e993a68Utkarsh Sanghi TPM_HANDLE* key_handle) override { 15582b03cf80cbe7ab5d5edb2cb46d245721e993a68Utkarsh Sanghi return target_->CreateRSAKey(key_type, password, key_handle); 15682b03cf80cbe7ab5d5edb2cb46d245721e993a68Utkarsh Sanghi } 15782b03cf80cbe7ab5d5edb2cb46d245721e993a68Utkarsh Sanghi 15803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn private: 15903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn TpmUtility* target_; 16003d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn}; 16103d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 16203d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn// Forwards all calls to a target instance. 163c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnclass AuthorizationDelegateForwarder : public AuthorizationDelegate { 164c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn public: 165c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn explicit AuthorizationDelegateForwarder(AuthorizationDelegate* target) 166c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn : target_(target) {} 167c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn virtual ~AuthorizationDelegateForwarder() {} 168c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 169c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool GetCommandAuthorization(const std::string& command_hash, 170c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn std::string* authorization) override { 171c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->GetCommandAuthorization(command_hash, authorization); 172c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 173c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 174c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool CheckResponseAuthorization(const std::string& response_hash, 175c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn const std::string& authorization) override { 176c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->CheckResponseAuthorization(response_hash, authorization); 177c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 178c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 179c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool EncryptCommandParameter(std::string* parameter) override { 180c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->EncryptCommandParameter(parameter); 181c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 182c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 183c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool DecryptResponseParameter(std::string* parameter) override { 184c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->DecryptResponseParameter(parameter); 185c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 186c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 187c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn private: 188c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn AuthorizationDelegate* target_; 189c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn}; 190c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 19152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn// Forwards all calls to a target instance. 19252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahnclass AuthorizationSessionForwarder : public AuthorizationSession { 19352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn public: 19452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn explicit AuthorizationSessionForwarder(AuthorizationSession* target) 19552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn : target_(target) {} 19652e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn virtual ~AuthorizationSessionForwarder() {} 19752e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 19852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn AuthorizationDelegate* GetDelegate() override { 19952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->GetDelegate(); 20052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 20152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 20252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TPM_RC StartBoundSession( 20352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TPMI_DH_ENTITY bind_entity, 20452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn const std::string& bind_authorization_value, 20552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn bool enable_encryption) override { 20652e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->StartBoundSession(bind_entity, 20752e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn bind_authorization_value, 20852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn enable_encryption); 20952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 21052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 21152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TPM_RC StartUnboundSession(bool enable_encryption) override { 21252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->StartUnboundSession(enable_encryption); 21352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 21452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 21552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn void SetEntityAuthorizationValue(const std::string& value) override { 21652e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->SetEntityAuthorizationValue(value); 21752e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 21852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 21952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn private: 22052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn AuthorizationSession* target_; 22152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn}; 22252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 223c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren KrahnTrunksFactoryForTest::TrunksFactoryForTest() 224c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn : default_tpm_(new NiceMock<MockTpm>()), 225c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn tpm_(default_tpm_.get()), 226c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn default_tpm_state_(new NiceMock<MockTpmState>()), 227c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn tpm_state_(default_tpm_state_.get()), 22803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn default_tpm_utility_(new NiceMock<MockTpmUtility>()), 22903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn tpm_utility_(default_tpm_utility_.get()), 230a19238f46d4341489fd1d3140df1bb09bdbd8f01Darren Krahn default_authorization_delegate_(new NullAuthorizationDelegate()), 23152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn password_authorization_delegate_(default_authorization_delegate_.get()), 23252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn default_authorization_session_(new NiceMock<MockAuthorizationSession>()), 23352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn authorization_session_(default_authorization_session_.get()) { 234c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 235c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 236c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren KrahnTrunksFactoryForTest::~TrunksFactoryForTest() { 237c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 238c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 239c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren KrahnTpm* TrunksFactoryForTest::GetTpm() const { 240c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return tpm_; 241c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 242c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 243c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnscoped_ptr<TpmState> TrunksFactoryForTest::GetTpmState() const { 244c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return scoped_ptr<TpmState>(new TpmStateForwarder(tpm_state_)); 245c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 246c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 24703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahnscoped_ptr<TpmUtility> TrunksFactoryForTest::GetTpmUtility() const { 24803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn return scoped_ptr<TpmUtility>(new TpmUtilityForwarder(tpm_utility_)); 24903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn} 25003d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 251c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnscoped_ptr<AuthorizationDelegate> 252c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn TrunksFactoryForTest::GetPasswordAuthorization( 253c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn const std::string& password) const { 254c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return scoped_ptr<AuthorizationDelegate>( 255a19238f46d4341489fd1d3140df1bb09bdbd8f01Darren Krahn new AuthorizationDelegateForwarder(password_authorization_delegate_)); 256c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 257c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 25852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahnscoped_ptr<AuthorizationSession> 25952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TrunksFactoryForTest::GetAuthorizationSession() const { 26052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return scoped_ptr<AuthorizationSession>( 26152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn new AuthorizationSessionForwarder(authorization_session_)); 26252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn} 26352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 264c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} // namespace trunks 265