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