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