trunks_factory_for_test.cc revision 1aeb5969d4f286e36fe88152ad8c96cff668c25f
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" 15c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn#include "trunks/tpm_generated.h" 16c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn#include "trunks/tpm_state.h" 17c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn#include "trunks/tpm_utility.h" 18c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 19c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnusing testing::NiceMock; 20c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 21c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnnamespace trunks { 22c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 23c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn// Forwards all calls to a target instance. 24c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnclass TpmStateForwarder : public TpmState { 25c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn public: 26c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn explicit TpmStateForwarder(TpmState* target) : target_(target) {} 27c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn virtual ~TpmStateForwarder() {} 28c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 29c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn TPM_RC Initialize() override { 30c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->Initialize(); 31c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 32c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 3352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn bool IsOwnerPasswordSet() override { 3452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->IsOwnerPasswordSet(); 3552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 3652e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 3752e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn bool IsEndorsementPasswordSet() override { 3852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->IsEndorsementPasswordSet(); 3952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 4052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 4152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn bool IsLockoutPasswordSet() override { 4252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->IsLockoutPasswordSet(); 4352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 4452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 45c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool IsInLockout() override { 46c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->IsInLockout(); 47c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 48c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 49c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool IsPlatformHierarchyEnabled() override { 50c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->IsPlatformHierarchyEnabled(); 51c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 52c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 53c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool WasShutdownOrderly() override { 54c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->WasShutdownOrderly(); 55c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 56c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 57c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn private: 58c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn TpmState* target_; 59c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn}; 60c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 61c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn// Forwards all calls to a target instance. 6203d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahnclass TpmUtilityForwarder : public TpmUtility { 6303d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn public: 6403d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn explicit TpmUtilityForwarder(TpmUtility* target) : target_(target) {} 6503d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn virtual ~TpmUtilityForwarder() {} 6603d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 6703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn TPM_RC Startup() override { 6803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn return target_->Startup(); 6903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn } 7003d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 71d75dcae8a010d1ced7554dd25a440bee350a2d06Utkarsh Sanghi TPM_RC Clear() override { 72d75dcae8a010d1ced7554dd25a440bee350a2d06Utkarsh Sanghi return target_->Clear(); 73d75dcae8a010d1ced7554dd25a440bee350a2d06Utkarsh Sanghi } 74d75dcae8a010d1ced7554dd25a440bee350a2d06Utkarsh Sanghi 7503d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn TPM_RC InitializeTpm() override { 7603d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn return target_->InitializeTpm(); 7703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn } 7803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 7903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn TPM_RC StirRandom(const std::string& entropy_data) override { 8003d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn return target_->StirRandom(entropy_data); 8103d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn } 8203d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 8335af244e7cf856a02e46ec8f186f36c53582757dUtkarsh Sanghi TPM_RC GenerateRandom(size_t num_bytes, std::string* random_data) override { 8403d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn return target_->GenerateRandom(num_bytes, random_data); 8503d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn } 8603d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 87579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi TPM_RC ExtendPCR(int pcr_index, const std::string& extend_data) override { 88579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi return target_->ExtendPCR(pcr_index, extend_data); 89579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi } 90579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi 91579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi TPM_RC ReadPCR(int pcr_index, std::string* pcr_value) override { 92579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi return target_->ReadPCR(pcr_index, pcr_value); 93579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi } 94579dd8a934c684f2e2a34d9aa2f67953320428acUtkarsh Sanghi 9552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TPM_RC TakeOwnership(const std::string& owner_password, 9652e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn const std::string& endorsement_password, 9752e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn const std::string& lockout_password) override { 9852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->TakeOwnership(owner_password, 9952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn endorsement_password, 10052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn lockout_password); 10152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 10252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 10352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TPM_RC CreateStorageRootKeys(const std::string& owner_password) override { 10452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->CreateStorageRootKeys(owner_password); 10552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 10652e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 107b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi TPM_RC AsymmetricEncrypt(TPM_HANDLE key_handle, 108b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi TPM_ALG_ID scheme, 1099dc77fecdb2446da134b9b2901173bb4dcf5e5e4Utkarsh Sanghi TPM_ALG_ID hash_alg, 110b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi const std::string& plaintext, 111748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi std::string* ciphertext) override { 112b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi return target_->AsymmetricEncrypt(key_handle, 113b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi scheme, 1149dc77fecdb2446da134b9b2901173bb4dcf5e5e4Utkarsh Sanghi hash_alg, 115b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi plaintext, 116b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi ciphertext); 117b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi } 118b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi 119b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi TPM_RC AsymmetricDecrypt(TPM_HANDLE key_handle, 120b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi TPM_ALG_ID scheme, 1219dc77fecdb2446da134b9b2901173bb4dcf5e5e4Utkarsh Sanghi TPM_ALG_ID hash_alg, 122b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi const std::string& password, 123b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi const std::string& ciphertext, 124748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi std::string* plaintext) override { 125b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi return target_->AsymmetricDecrypt(key_handle, 126b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi scheme, 1279dc77fecdb2446da134b9b2901173bb4dcf5e5e4Utkarsh Sanghi hash_alg, 128b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi password, 129b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi ciphertext, 130b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi plaintext); 131b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi } 132b3ba5e0b579a5462c7137cf49b49cc9a78d87944Utkarsh Sanghi 133748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_RC Sign(TPM_HANDLE key_handle, 134748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_ALG_ID scheme, 135748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_ALG_ID hash_alg, 136748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi const std::string& password, 137748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi const std::string& digest, 138748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi std::string* signature) override { 139748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi return target_->Sign(key_handle, 140748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi scheme, 141748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi hash_alg, 142748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi password, 143748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi digest, 144748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi signature); 145748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi } 146748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi 147748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_RC Verify(TPM_HANDLE key_handle, 148748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_ALG_ID scheme, 149748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi TPM_ALG_ID hash_alg, 150748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi const std::string& digest, 151748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi const std::string& signature) override { 152748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi return target_->Verify(key_handle, scheme, hash_alg, digest, signature); 153748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi } 154748f7d68284813a78b883f9c05988f6de535fc8aUtkarsh Sanghi 15582b03cf80cbe7ab5d5edb2cb46d245721e993a68Utkarsh Sanghi TPM_RC CreateRSAKey(AsymmetricKeyUsage key_type, 15682b03cf80cbe7ab5d5edb2cb46d245721e993a68Utkarsh Sanghi const std::string& password, 15782b03cf80cbe7ab5d5edb2cb46d245721e993a68Utkarsh Sanghi TPM_HANDLE* key_handle) override { 15882b03cf80cbe7ab5d5edb2cb46d245721e993a68Utkarsh Sanghi return target_->CreateRSAKey(key_type, password, key_handle); 15982b03cf80cbe7ab5d5edb2cb46d245721e993a68Utkarsh Sanghi } 16082b03cf80cbe7ab5d5edb2cb46d245721e993a68Utkarsh Sanghi 16103d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn private: 16203d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn TpmUtility* target_; 16303d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn}; 16403d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 16503d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn// Forwards all calls to a target instance. 166c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnclass AuthorizationDelegateForwarder : public AuthorizationDelegate { 167c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn public: 168c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn explicit AuthorizationDelegateForwarder(AuthorizationDelegate* target) 169c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn : target_(target) {} 170c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn virtual ~AuthorizationDelegateForwarder() {} 171c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 172c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool GetCommandAuthorization(const std::string& command_hash, 1731aeb5969d4f286e36fe88152ad8c96cff668c25fDarren Krahn bool is_command_parameter_encryption_possible, 1741aeb5969d4f286e36fe88152ad8c96cff668c25fDarren Krahn bool is_response_parameter_encryption_possible, 175c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn std::string* authorization) override { 1761aeb5969d4f286e36fe88152ad8c96cff668c25fDarren Krahn return target_->GetCommandAuthorization( 1771aeb5969d4f286e36fe88152ad8c96cff668c25fDarren Krahn command_hash, 1781aeb5969d4f286e36fe88152ad8c96cff668c25fDarren Krahn is_command_parameter_encryption_possible, 1791aeb5969d4f286e36fe88152ad8c96cff668c25fDarren Krahn is_response_parameter_encryption_possible, 1801aeb5969d4f286e36fe88152ad8c96cff668c25fDarren Krahn authorization); 181c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 182c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 183c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool CheckResponseAuthorization(const std::string& response_hash, 184c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn const std::string& authorization) override { 185c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->CheckResponseAuthorization(response_hash, authorization); 186c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 187c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 188c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool EncryptCommandParameter(std::string* parameter) override { 189c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->EncryptCommandParameter(parameter); 190c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 191c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 192c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn bool DecryptResponseParameter(std::string* parameter) override { 193c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return target_->DecryptResponseParameter(parameter); 194c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn } 195c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 196c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn private: 197c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn AuthorizationDelegate* target_; 198c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn}; 199c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 20052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn// Forwards all calls to a target instance. 20152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahnclass AuthorizationSessionForwarder : public AuthorizationSession { 20252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn public: 20352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn explicit AuthorizationSessionForwarder(AuthorizationSession* target) 20452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn : target_(target) {} 20552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn virtual ~AuthorizationSessionForwarder() {} 20652e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 20752e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn AuthorizationDelegate* GetDelegate() override { 20852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->GetDelegate(); 20952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 21052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 21152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TPM_RC StartBoundSession( 21252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TPMI_DH_ENTITY bind_entity, 21352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn const std::string& bind_authorization_value, 21452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn bool enable_encryption) override { 21552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->StartBoundSession(bind_entity, 21652e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn bind_authorization_value, 21752e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn enable_encryption); 21852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 21952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 22052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TPM_RC StartUnboundSession(bool enable_encryption) override { 22152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->StartUnboundSession(enable_encryption); 22252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 22352e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 22452e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn void SetEntityAuthorizationValue(const std::string& value) override { 22552e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return target_->SetEntityAuthorizationValue(value); 22652e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn } 22752e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 22852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn private: 22952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn AuthorizationSession* target_; 23052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn}; 23152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 232c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren KrahnTrunksFactoryForTest::TrunksFactoryForTest() 233c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn : default_tpm_(new NiceMock<MockTpm>()), 234c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn tpm_(default_tpm_.get()), 235c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn default_tpm_state_(new NiceMock<MockTpmState>()), 236c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn tpm_state_(default_tpm_state_.get()), 23703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn default_tpm_utility_(new NiceMock<MockTpmUtility>()), 23803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn tpm_utility_(default_tpm_utility_.get()), 2396318d4413806a501783a003bf249e3ae627c73edUtkarsh Sanghi default_authorization_delegate_(new PasswordAuthorizationDelegate("")), 24052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn password_authorization_delegate_(default_authorization_delegate_.get()), 24152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn default_authorization_session_(new NiceMock<MockAuthorizationSession>()), 24252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn authorization_session_(default_authorization_session_.get()) { 243c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 244c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 245c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren KrahnTrunksFactoryForTest::~TrunksFactoryForTest() { 246c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 247c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 248c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren KrahnTpm* TrunksFactoryForTest::GetTpm() const { 249c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return tpm_; 250c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 251c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 252c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnscoped_ptr<TpmState> TrunksFactoryForTest::GetTpmState() const { 253c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return scoped_ptr<TpmState>(new TpmStateForwarder(tpm_state_)); 254c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 255c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 25603d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahnscoped_ptr<TpmUtility> TrunksFactoryForTest::GetTpmUtility() const { 25703d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn return scoped_ptr<TpmUtility>(new TpmUtilityForwarder(tpm_utility_)); 25803d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn} 25903d54dfbcbdd04384e8c0419b7c45282664a2c1aDarren Krahn 260c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahnscoped_ptr<AuthorizationDelegate> 261c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn TrunksFactoryForTest::GetPasswordAuthorization( 262c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn const std::string& password) const { 263c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn return scoped_ptr<AuthorizationDelegate>( 264a19238f46d4341489fd1d3140df1bb09bdbd8f01Darren Krahn new AuthorizationDelegateForwarder(password_authorization_delegate_)); 265c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} 266c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn 26752e2a45f585fbe34032eae5b094a092afdf217caDarren Krahnscoped_ptr<AuthorizationSession> 26852e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn TrunksFactoryForTest::GetAuthorizationSession() const { 26952e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn return scoped_ptr<AuthorizationSession>( 27052e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn new AuthorizationSessionForwarder(authorization_session_)); 27152e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn} 27252e2a45f585fbe34032eae5b094a092afdf217caDarren Krahn 273c364caa9d091baae8eeb9144a6abf69e1fcabb39Darren Krahn} // namespace trunks 274