trunks_factory_for_test.cc revision 748f7d68284813a78b883f9c05988f6de535fc8a
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, 106b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi const std::string& plaintext, 107748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi std::string* ciphertext) override { 108b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi return target_->AsymmetricEncrypt(key_handle, 109b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi scheme, 110b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi plaintext, 111b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi ciphertext); 112b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi } 113b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi 114b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi TPM_RC AsymmetricDecrypt(TPM_HANDLE key_handle, 115b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi TPM_ALG_ID scheme, 116b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi const std::string& password, 117b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi const std::string& ciphertext, 118748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi std::string* plaintext) override { 119b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi return target_->AsymmetricDecrypt(key_handle, 120b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi scheme, 121b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi password, 122b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi ciphertext, 123b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi plaintext); 124b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi } 125b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi 126748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_RC Sign(TPM_HANDLE key_handle, 127748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_ALG_ID scheme, 128748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_ALG_ID hash_alg, 129748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi const std::string& password, 130748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi const std::string& digest, 131748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi std::string* signature) override { 132748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi return target_->Sign(key_handle, 133748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi scheme, 134748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi hash_alg, 135748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi password, 136748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi digest, 137748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi signature); 138748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi } 139748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi 140748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_RC Verify(TPM_HANDLE key_handle, 141748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_ALG_ID scheme, 142748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_ALG_ID hash_alg, 143748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi const std::string& digest, 144748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi const std::string& signature) override { 145748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi return target_->Verify(key_handle, scheme, hash_alg, digest, signature); 146748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi } 147748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi 14803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn private: 14903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn TpmUtility* target_; 15003d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn}; 15103d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 15203d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn// Forwards all calls to a target instance. 153c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnclass AuthorizationDelegateForwarder : public AuthorizationDelegate { 154c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn public: 155c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn explicit AuthorizationDelegateForwarder(AuthorizationDelegate* target) 156c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn : target_(target) {} 157c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn virtual ~AuthorizationDelegateForwarder() {} 158c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 159c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool GetCommandAuthorization(const std::string& command_hash, 160c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn std::string* authorization) override { 161c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->GetCommandAuthorization(command_hash, authorization); 162c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 163c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 164c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool CheckResponseAuthorization(const std::string& response_hash, 165c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn const std::string& authorization) override { 166c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->CheckResponseAuthorization(response_hash, authorization); 167c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 168c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 169c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool EncryptCommandParameter(std::string* parameter) override { 170c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->EncryptCommandParameter(parameter); 171c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 172c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 173c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool DecryptResponseParameter(std::string* parameter) override { 174c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->DecryptResponseParameter(parameter); 175c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 176c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 177c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn private: 178c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn AuthorizationDelegate* target_; 179c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn}; 180c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 18152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn// Forwards all calls to a target instance. 18252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahnclass AuthorizationSessionForwarder : public AuthorizationSession { 18352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn public: 18452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn explicit AuthorizationSessionForwarder(AuthorizationSession* target) 18552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn : target_(target) {} 18652e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn virtual ~AuthorizationSessionForwarder() {} 18752e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 18852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn AuthorizationDelegate* GetDelegate() override { 18952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->GetDelegate(); 19052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 19152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 19252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TPM_RC StartBoundSession( 19352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TPMI_DH_ENTITY bind_entity, 19452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn const std::string& bind_authorization_value, 19552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn bool enable_encryption) override { 19652e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->StartBoundSession(bind_entity, 19752e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn bind_authorization_value, 19852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn enable_encryption); 19952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 20052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 20152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TPM_RC StartUnboundSession(bool enable_encryption) override { 20252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->StartUnboundSession(enable_encryption); 20352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 20452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 20552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn void SetEntityAuthorizationValue(const std::string& value) override { 20652e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->SetEntityAuthorizationValue(value); 20752e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 20852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 20952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn private: 21052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn AuthorizationSession* target_; 21152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn}; 21252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 213c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren KrahnTrunksFactoryForTest::TrunksFactoryForTest() 214c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn : default_tpm_(new NiceMock<MockTpm>()), 215c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn tpm_(default_tpm_.get()), 216c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn default_tpm_state_(new NiceMock<MockTpmState>()), 217c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn tpm_state_(default_tpm_state_.get()), 21803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn default_tpm_utility_(new NiceMock<MockTpmUtility>()), 21903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn tpm_utility_(default_tpm_utility_.get()), 220a19238f46d4341489fd1d3140df1bb09bdbd8f01Darren Krahn default_authorization_delegate_(new NullAuthorizationDelegate()), 22152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn password_authorization_delegate_(default_authorization_delegate_.get()), 22252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn default_authorization_session_(new NiceMock<MockAuthorizationSession>()), 22352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn authorization_session_(default_authorization_session_.get()) { 224c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 225c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 226c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren KrahnTrunksFactoryForTest::~TrunksFactoryForTest() { 227c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 228c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 229c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren KrahnTpm* TrunksFactoryForTest::GetTpm() const { 230c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return tpm_; 231c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 232c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 233c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnscoped_ptr<TpmState> TrunksFactoryForTest::GetTpmState() const { 234c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return scoped_ptr<TpmState>(new TpmStateForwarder(tpm_state_)); 235c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 236c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 23703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahnscoped_ptr<TpmUtility> TrunksFactoryForTest::GetTpmUtility() const { 23803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn return scoped_ptr<TpmUtility>(new TpmUtilityForwarder(tpm_utility_)); 23903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn} 24003d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 241c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnscoped_ptr<AuthorizationDelegate> 242c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn TrunksFactoryForTest::GetPasswordAuthorization( 243c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn const std::string& password) const { 244c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return scoped_ptr<AuthorizationDelegate>( 245a19238f46d4341489fd1d3140df1bb09bdbd8f01Darren Krahn new AuthorizationDelegateForwarder(password_authorization_delegate_)); 246c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 247c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 24852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahnscoped_ptr<AuthorizationSession> 24952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TrunksFactoryForTest::GetAuthorizationSession() const { 25052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return scoped_ptr<AuthorizationSession>( 25152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn new AuthorizationSessionForwarder(authorization_session_)); 25252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn} 25352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 254c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} // namespace trunks 255