1 //
2 // Copyright (C) 2014 The Android Open Source Project
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 // http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 #include "trunks/trunks_factory_for_test.h"
18
19 #include <gmock/gmock.h>
20
21 #include "trunks/authorization_delegate.h"
22 #include "trunks/blob_parser.h"
23 #include "trunks/hmac_session.h"
24 #include "trunks/mock_blob_parser.h"
25 #include "trunks/mock_hmac_session.h"
26 #include "trunks/mock_policy_session.h"
27 #include "trunks/mock_session_manager.h"
28 #include "trunks/mock_tpm.h"
29 #include "trunks/mock_tpm_state.h"
30 #include "trunks/mock_tpm_utility.h"
31 #include "trunks/policy_session.h"
32 #include "trunks/session_manager.h"
33 #include "trunks/tpm_generated.h"
34 #include "trunks/tpm_state.h"
35 #include "trunks/tpm_utility.h"
36
37 using testing::NiceMock;
38
39 namespace trunks {
40
41 // Forwards all calls to a target instance.
42 class TpmStateForwarder : public TpmState {
43 public:
TpmStateForwarder(TpmState * target)44 explicit TpmStateForwarder(TpmState* target) : target_(target) {}
45 ~TpmStateForwarder() override = default;
46
Initialize()47 TPM_RC Initialize() override {
48 return target_->Initialize();
49 }
50
IsOwnerPasswordSet()51 bool IsOwnerPasswordSet() override {
52 return target_->IsOwnerPasswordSet();
53 }
54
IsEndorsementPasswordSet()55 bool IsEndorsementPasswordSet() override {
56 return target_->IsEndorsementPasswordSet();
57 }
58
IsLockoutPasswordSet()59 bool IsLockoutPasswordSet() override {
60 return target_->IsLockoutPasswordSet();
61 }
62
IsOwned()63 bool IsOwned() override {
64 return target_->IsOwned();
65 }
66
IsInLockout()67 bool IsInLockout() override {
68 return target_->IsInLockout();
69 }
70
IsPlatformHierarchyEnabled()71 bool IsPlatformHierarchyEnabled() override {
72 return target_->IsPlatformHierarchyEnabled();
73 }
74
IsStorageHierarchyEnabled()75 bool IsStorageHierarchyEnabled() override {
76 return target_->IsStorageHierarchyEnabled();
77 }
78
IsEndorsementHierarchyEnabled()79 bool IsEndorsementHierarchyEnabled() override {
80 return target_->IsEndorsementHierarchyEnabled();
81 }
82
IsEnabled()83 bool IsEnabled() override {
84 return target_->IsEnabled();
85 }
86
WasShutdownOrderly()87 bool WasShutdownOrderly() override {
88 return target_->WasShutdownOrderly();
89 }
90
IsRSASupported()91 bool IsRSASupported() override {
92 return target_->IsRSASupported();
93 }
94
IsECCSupported()95 bool IsECCSupported() override {
96 return target_->IsECCSupported();
97 }
98
GetLockoutCounter()99 uint32_t GetLockoutCounter() override {
100 return target_->GetLockoutCounter();
101 }
102
GetLockoutThreshold()103 uint32_t GetLockoutThreshold() override {
104 return target_->GetLockoutThreshold();
105 }
106
GetLockoutInterval()107 uint32_t GetLockoutInterval() override {
108 return target_->GetLockoutInterval();
109 }
110
GetLockoutRecovery()111 uint32_t GetLockoutRecovery() override {
112 return target_->GetLockoutRecovery();
113 }
114
115 private:
116 TpmState* target_;
117 };
118
119 // Forwards all calls to a target instance.
120 class TpmUtilityForwarder : public TpmUtility {
121 public:
TpmUtilityForwarder(TpmUtility * target)122 explicit TpmUtilityForwarder(TpmUtility* target) : target_(target) {}
123 ~TpmUtilityForwarder() override = default;
124
Startup()125 TPM_RC Startup() override {
126 return target_->Startup();
127 }
128
Clear()129 TPM_RC Clear() override {
130 return target_->Clear();
131 }
132
Shutdown()133 void Shutdown() override {
134 return target_->Shutdown();
135 }
136
InitializeTpm()137 TPM_RC InitializeTpm() override {
138 return target_->InitializeTpm();
139 }
140
AllocatePCR(const std::string & platform_password)141 TPM_RC AllocatePCR(const std::string& platform_password) override {
142 return target_->AllocatePCR(platform_password);
143 }
144
TakeOwnership(const std::string & owner_password,const std::string & endorsement_password,const std::string & lockout_password)145 TPM_RC TakeOwnership(const std::string& owner_password,
146 const std::string& endorsement_password,
147 const std::string& lockout_password) override {
148 return target_->TakeOwnership(owner_password,
149 endorsement_password,
150 lockout_password);
151 }
152
StirRandom(const std::string & entropy_data,AuthorizationDelegate * delegate)153 TPM_RC StirRandom(const std::string& entropy_data,
154 AuthorizationDelegate* delegate) override {
155 return target_->StirRandom(entropy_data, delegate);
156 }
157
GenerateRandom(size_t num_bytes,AuthorizationDelegate * delegate,std::string * random_data)158 TPM_RC GenerateRandom(size_t num_bytes,
159 AuthorizationDelegate* delegate,
160 std::string* random_data) override {
161 return target_->GenerateRandom(num_bytes, delegate, random_data);
162 }
163
ExtendPCR(int pcr_index,const std::string & extend_data,AuthorizationDelegate * delegate)164 TPM_RC ExtendPCR(int pcr_index,
165 const std::string& extend_data,
166 AuthorizationDelegate* delegate) override {
167 return target_->ExtendPCR(pcr_index, extend_data, delegate);
168 }
169
ReadPCR(int pcr_index,std::string * pcr_value)170 TPM_RC ReadPCR(int pcr_index, std::string* pcr_value) override {
171 return target_->ReadPCR(pcr_index, pcr_value);
172 }
173
AsymmetricEncrypt(TPM_HANDLE key_handle,TPM_ALG_ID scheme,TPM_ALG_ID hash_alg,const std::string & plaintext,AuthorizationDelegate * delegate,std::string * ciphertext)174 TPM_RC AsymmetricEncrypt(TPM_HANDLE key_handle,
175 TPM_ALG_ID scheme,
176 TPM_ALG_ID hash_alg,
177 const std::string& plaintext,
178 AuthorizationDelegate* delegate,
179 std::string* ciphertext) override {
180 return target_->AsymmetricEncrypt(key_handle,
181 scheme,
182 hash_alg,
183 plaintext,
184 delegate,
185 ciphertext);
186 }
187
AsymmetricDecrypt(TPM_HANDLE key_handle,TPM_ALG_ID scheme,TPM_ALG_ID hash_alg,const std::string & ciphertext,AuthorizationDelegate * delegate,std::string * plaintext)188 TPM_RC AsymmetricDecrypt(TPM_HANDLE key_handle,
189 TPM_ALG_ID scheme,
190 TPM_ALG_ID hash_alg,
191 const std::string& ciphertext,
192 AuthorizationDelegate* delegate,
193 std::string* plaintext) override {
194 return target_->AsymmetricDecrypt(key_handle,
195 scheme,
196 hash_alg,
197 ciphertext,
198 delegate,
199 plaintext);
200 }
201
Sign(TPM_HANDLE key_handle,TPM_ALG_ID scheme,TPM_ALG_ID hash_alg,const std::string & plaintext,AuthorizationDelegate * delegate,std::string * signature)202 TPM_RC Sign(TPM_HANDLE key_handle,
203 TPM_ALG_ID scheme,
204 TPM_ALG_ID hash_alg,
205 const std::string& plaintext,
206 AuthorizationDelegate* delegate,
207 std::string* signature) override {
208 return target_->Sign(key_handle,
209 scheme,
210 hash_alg,
211 plaintext,
212 delegate,
213 signature);
214 }
215
Verify(TPM_HANDLE key_handle,TPM_ALG_ID scheme,TPM_ALG_ID hash_alg,const std::string & plaintext,const std::string & signature,AuthorizationDelegate * delegate)216 TPM_RC Verify(TPM_HANDLE key_handle,
217 TPM_ALG_ID scheme,
218 TPM_ALG_ID hash_alg,
219 const std::string& plaintext,
220 const std::string& signature,
221 AuthorizationDelegate* delegate) override {
222 return target_->Verify(key_handle, scheme, hash_alg,
223 plaintext, signature, delegate);
224 }
225
CertifyCreation(TPM_HANDLE key_handle,const std::string & creation_blob)226 TPM_RC CertifyCreation(TPM_HANDLE key_handle,
227 const std::string& creation_blob) override {
228 return target_->CertifyCreation(key_handle, creation_blob);
229 }
230
ChangeKeyAuthorizationData(TPM_HANDLE key_handle,const std::string & new_password,AuthorizationDelegate * delegate,std::string * key_blob)231 TPM_RC ChangeKeyAuthorizationData(TPM_HANDLE key_handle,
232 const std::string& new_password,
233 AuthorizationDelegate* delegate,
234 std::string* key_blob) override {
235 return target_->ChangeKeyAuthorizationData(key_handle,
236 new_password,
237 delegate,
238 key_blob);
239 }
240
ImportRSAKey(AsymmetricKeyUsage key_type,const std::string & modulus,uint32_t public_exponent,const std::string & prime_factor,const std::string & password,AuthorizationDelegate * delegate,std::string * key_blob)241 TPM_RC ImportRSAKey(AsymmetricKeyUsage key_type,
242 const std::string& modulus,
243 uint32_t public_exponent,
244 const std::string& prime_factor,
245 const std::string& password,
246 AuthorizationDelegate* delegate,
247 std::string* key_blob) override {
248 return target_->ImportRSAKey(key_type, modulus, public_exponent,
249 prime_factor, password, delegate, key_blob);
250 }
251
CreateRSAKeyPair(AsymmetricKeyUsage key_type,int modulus_bits,uint32_t public_exponent,const std::string & password,const std::string & policy_digest,bool use_only_policy_authorization,int creation_pcr_index,AuthorizationDelegate * delegate,std::string * key_blob,std::string * creation_blob)252 TPM_RC CreateRSAKeyPair(AsymmetricKeyUsage key_type,
253 int modulus_bits,
254 uint32_t public_exponent,
255 const std::string& password,
256 const std::string& policy_digest,
257 bool use_only_policy_authorization,
258 int creation_pcr_index,
259 AuthorizationDelegate* delegate,
260 std::string* key_blob,
261 std::string* creation_blob) override {
262 return target_->CreateRSAKeyPair(key_type, modulus_bits, public_exponent,
263 password, policy_digest,
264 use_only_policy_authorization,
265 creation_pcr_index,
266 delegate, key_blob, creation_blob);
267 }
268
LoadKey(const std::string & key_blob,AuthorizationDelegate * delegate,TPM_HANDLE * key_handle)269 TPM_RC LoadKey(const std::string& key_blob,
270 AuthorizationDelegate* delegate,
271 TPM_HANDLE* key_handle) override {
272 return target_->LoadKey(key_blob, delegate, key_handle);
273 }
274
GetKeyName(TPM_HANDLE handle,std::string * name)275 TPM_RC GetKeyName(TPM_HANDLE handle, std::string* name) override {
276 return target_->GetKeyName(handle, name);
277 }
278
GetKeyPublicArea(TPM_HANDLE handle,TPMT_PUBLIC * public_data)279 TPM_RC GetKeyPublicArea(TPM_HANDLE handle,
280 TPMT_PUBLIC* public_data) override {
281 return target_->GetKeyPublicArea(handle, public_data);
282 }
283
SealData(const std::string & data_to_seal,const std::string & policy_digest,AuthorizationDelegate * delegate,std::string * sealed_data)284 TPM_RC SealData(const std::string& data_to_seal,
285 const std::string& policy_digest,
286 AuthorizationDelegate* delegate,
287 std::string* sealed_data) override {
288 return target_->SealData(data_to_seal, policy_digest,
289 delegate, sealed_data);
290 }
291
UnsealData(const std::string & sealed_data,AuthorizationDelegate * delegate,std::string * unsealed_data)292 TPM_RC UnsealData(const std::string& sealed_data,
293 AuthorizationDelegate* delegate,
294 std::string* unsealed_data) override {
295 return target_->UnsealData(sealed_data, delegate, unsealed_data);
296 }
297
StartSession(HmacSession * session)298 TPM_RC StartSession(HmacSession* session) override {
299 return target_->StartSession(session);
300 }
301
GetPolicyDigestForPcrValue(int pcr_index,const std::string & pcr_value,std::string * policy_digest)302 TPM_RC GetPolicyDigestForPcrValue(int pcr_index,
303 const std::string& pcr_value,
304 std::string* policy_digest) override {
305 return target_->GetPolicyDigestForPcrValue(pcr_index, pcr_value,
306 policy_digest);
307 }
308
DefineNVSpace(uint32_t index,size_t num_bytes,AuthorizationDelegate * delegate)309 TPM_RC DefineNVSpace(uint32_t index,
310 size_t num_bytes,
311 AuthorizationDelegate* delegate) override {
312 return target_->DefineNVSpace(index, num_bytes, delegate);
313 }
314
DestroyNVSpace(uint32_t index,AuthorizationDelegate * delegate)315 TPM_RC DestroyNVSpace(uint32_t index,
316 AuthorizationDelegate* delegate) override {
317 return target_->DestroyNVSpace(index, delegate);
318 }
319
LockNVSpace(uint32_t index,AuthorizationDelegate * delegate)320 TPM_RC LockNVSpace(uint32_t index,
321 AuthorizationDelegate* delegate) override {
322 return target_->LockNVSpace(index, delegate);
323 }
324
WriteNVSpace(uint32_t index,uint32_t offset,const std::string & nvram_data,AuthorizationDelegate * delegate)325 TPM_RC WriteNVSpace(uint32_t index,
326 uint32_t offset,
327 const std::string& nvram_data,
328 AuthorizationDelegate* delegate) override {
329 return target_->WriteNVSpace(index, offset, nvram_data, delegate);
330 }
331
ReadNVSpace(uint32_t index,uint32_t offset,size_t num_bytes,std::string * nvram_data,AuthorizationDelegate * delegate)332 TPM_RC ReadNVSpace(uint32_t index,
333 uint32_t offset,
334 size_t num_bytes,
335 std::string* nvram_data,
336 AuthorizationDelegate* delegate) override {
337 return target_->ReadNVSpace(index, offset, num_bytes, nvram_data, delegate);
338 }
339
GetNVSpaceName(uint32_t index,std::string * name)340 TPM_RC GetNVSpaceName(uint32_t index, std::string* name) override {
341 return target_->GetNVSpaceName(index, name);
342 }
343
GetNVSpacePublicArea(uint32_t index,TPMS_NV_PUBLIC * public_data)344 TPM_RC GetNVSpacePublicArea(uint32_t index,
345 TPMS_NV_PUBLIC* public_data) override {
346 return target_->GetNVSpacePublicArea(index, public_data);
347 }
348
349 private:
350 TpmUtility* target_;
351 };
352
353 // Forwards all calls to a target instance.
354 class AuthorizationDelegateForwarder : public AuthorizationDelegate {
355 public:
AuthorizationDelegateForwarder(AuthorizationDelegate * target)356 explicit AuthorizationDelegateForwarder(AuthorizationDelegate* target)
357 : target_(target) {}
358 ~AuthorizationDelegateForwarder() override = default;
359
GetCommandAuthorization(const std::string & command_hash,bool is_command_parameter_encryption_possible,bool is_response_parameter_encryption_possible,std::string * authorization)360 bool GetCommandAuthorization(const std::string& command_hash,
361 bool is_command_parameter_encryption_possible,
362 bool is_response_parameter_encryption_possible,
363 std::string* authorization) override {
364 return target_->GetCommandAuthorization(
365 command_hash,
366 is_command_parameter_encryption_possible,
367 is_response_parameter_encryption_possible,
368 authorization);
369 }
370
CheckResponseAuthorization(const std::string & response_hash,const std::string & authorization)371 bool CheckResponseAuthorization(const std::string& response_hash,
372 const std::string& authorization) override {
373 return target_->CheckResponseAuthorization(response_hash, authorization);
374 }
375
EncryptCommandParameter(std::string * parameter)376 bool EncryptCommandParameter(std::string* parameter) override {
377 return target_->EncryptCommandParameter(parameter);
378 }
379
DecryptResponseParameter(std::string * parameter)380 bool DecryptResponseParameter(std::string* parameter) override {
381 return target_->DecryptResponseParameter(parameter);
382 }
383
384 private:
385 AuthorizationDelegate* target_;
386 };
387
388 // Forwards all calls to a target instance.
389 class SessionManagerForwarder : public SessionManager {
390 public:
SessionManagerForwarder(SessionManager * target)391 explicit SessionManagerForwarder(SessionManager* target) : target_(target) {}
~SessionManagerForwarder()392 ~SessionManagerForwarder() override {}
393
GetSessionHandle() const394 TPM_HANDLE GetSessionHandle() const override {
395 return target_->GetSessionHandle();
396 }
397
CloseSession()398 void CloseSession() override {
399 return target_->CloseSession();
400 }
401
StartSession(TPM_SE session_type,TPMI_DH_ENTITY bind_entity,const std::string & bind_authorization_value,bool enable_encryption,HmacAuthorizationDelegate * delegate)402 TPM_RC StartSession(TPM_SE session_type, TPMI_DH_ENTITY bind_entity,
403 const std::string& bind_authorization_value,
404 bool enable_encryption,
405 HmacAuthorizationDelegate* delegate) override {
406 return target_->StartSession(session_type, bind_entity,
407 bind_authorization_value,
408 enable_encryption, delegate);
409 }
410
411 private:
412 SessionManager* target_;
413 };
414
415 // Forwards all calls to a target instance.
416 class HmacSessionForwarder : public HmacSession {
417 public:
HmacSessionForwarder(HmacSession * target)418 explicit HmacSessionForwarder(HmacSession* target): target_(target) {}
419 ~HmacSessionForwarder() override = default;
420
GetDelegate()421 AuthorizationDelegate* GetDelegate() override {
422 return target_->GetDelegate();
423 }
424
StartBoundSession(TPMI_DH_ENTITY bind_entity,const std::string & bind_authorization_value,bool enable_encryption)425 TPM_RC StartBoundSession(TPMI_DH_ENTITY bind_entity,
426 const std::string& bind_authorization_value,
427 bool enable_encryption) override {
428 return target_->StartBoundSession(bind_entity,
429 bind_authorization_value,
430 enable_encryption);
431 }
432
StartUnboundSession(bool enable_encryption)433 TPM_RC StartUnboundSession(bool enable_encryption) override {
434 return target_->StartUnboundSession(enable_encryption);
435 }
436
SetEntityAuthorizationValue(const std::string & value)437 void SetEntityAuthorizationValue(const std::string& value) override {
438 return target_->SetEntityAuthorizationValue(value);
439 }
440
SetFutureAuthorizationValue(const std::string & value)441 void SetFutureAuthorizationValue(const std::string& value) override {
442 return target_->SetFutureAuthorizationValue(value);
443 }
444
445 private:
446 HmacSession* target_;
447 };
448
449
450 // Forwards all calls to a target instance.
451 class PolicySessionForwarder : public PolicySession {
452 public:
PolicySessionForwarder(PolicySession * target)453 explicit PolicySessionForwarder(PolicySession* target): target_(target) {}
454 ~PolicySessionForwarder() override = default;
455
GetDelegate()456 AuthorizationDelegate* GetDelegate() override {
457 return target_->GetDelegate();
458 }
459
StartBoundSession(TPMI_DH_ENTITY bind_entity,const std::string & bind_authorization_value,bool enable_encryption)460 TPM_RC StartBoundSession(TPMI_DH_ENTITY bind_entity,
461 const std::string& bind_authorization_value,
462 bool enable_encryption) override {
463 return target_->StartBoundSession(bind_entity,
464 bind_authorization_value,
465 enable_encryption);
466 }
467
StartUnboundSession(bool enable_encryption)468 TPM_RC StartUnboundSession(bool enable_encryption) override {
469 return target_->StartUnboundSession(enable_encryption);
470 }
471
GetDigest(std::string * digest)472 TPM_RC GetDigest(std::string* digest) override {
473 return target_->GetDigest(digest);
474 }
475
PolicyOR(const std::vector<std::string> & digests)476 TPM_RC PolicyOR(const std::vector<std::string>& digests) override {
477 return target_->PolicyOR(digests);
478 }
479
PolicyPCR(uint32_t pcr_index,const std::string & pcr_value)480 TPM_RC PolicyPCR(uint32_t pcr_index, const std::string& pcr_value) override {
481 return target_->PolicyPCR(pcr_index, pcr_value);
482 }
483
PolicyCommandCode(TPM_CC command_code)484 TPM_RC PolicyCommandCode(TPM_CC command_code) override {
485 return target_->PolicyCommandCode(command_code);
486 }
487
PolicyAuthValue()488 TPM_RC PolicyAuthValue() override {
489 return target_->PolicyAuthValue();
490 }
491
SetEntityAuthorizationValue(const std::string & value)492 void SetEntityAuthorizationValue(const std::string& value) override {
493 return target_->SetEntityAuthorizationValue(value);
494 }
495
496 private:
497 PolicySession* target_;
498 };
499
500 // Forwards all calls to a target instance.
501 class BlobParserForwarder : public BlobParser {
502 public:
BlobParserForwarder(BlobParser * target)503 explicit BlobParserForwarder(BlobParser* target): target_(target) {}
504 ~BlobParserForwarder() override = default;
505
SerializeKeyBlob(const TPM2B_PUBLIC & public_info,const TPM2B_PRIVATE & private_info,std::string * key_blob)506 bool SerializeKeyBlob(const TPM2B_PUBLIC& public_info,
507 const TPM2B_PRIVATE& private_info,
508 std::string* key_blob) override {
509 return target_->SerializeKeyBlob(public_info, private_info, key_blob);
510 }
511
ParseKeyBlob(const std::string & key_blob,TPM2B_PUBLIC * public_info,TPM2B_PRIVATE * private_info)512 bool ParseKeyBlob(const std::string& key_blob,
513 TPM2B_PUBLIC* public_info,
514 TPM2B_PRIVATE* private_info) override {
515 return target_->ParseKeyBlob(key_blob, public_info, private_info);
516 }
517
SerializeCreationBlob(const TPM2B_CREATION_DATA & creation_data,const TPM2B_DIGEST & creation_hash,const TPMT_TK_CREATION & creation_ticket,std::string * creation_blob)518 bool SerializeCreationBlob(const TPM2B_CREATION_DATA& creation_data,
519 const TPM2B_DIGEST& creation_hash,
520 const TPMT_TK_CREATION& creation_ticket,
521 std::string* creation_blob) override {
522 return target_->SerializeCreationBlob(creation_data, creation_hash,
523 creation_ticket, creation_blob);
524 }
525
ParseCreationBlob(const std::string & creation_blob,TPM2B_CREATION_DATA * creation_data,TPM2B_DIGEST * creation_hash,TPMT_TK_CREATION * creation_ticket)526 bool ParseCreationBlob(const std::string& creation_blob,
527 TPM2B_CREATION_DATA* creation_data,
528 TPM2B_DIGEST* creation_hash,
529 TPMT_TK_CREATION* creation_ticket) override {
530 return target_->ParseCreationBlob(creation_blob, creation_data,
531 creation_hash, creation_ticket);
532 }
533
534 private:
535 BlobParser* target_;
536 };
537
TrunksFactoryForTest()538 TrunksFactoryForTest::TrunksFactoryForTest()
539 : default_tpm_(new NiceMock<MockTpm>()),
540 tpm_(default_tpm_.get()),
541 default_tpm_state_(new NiceMock<MockTpmState>()),
542 tpm_state_(default_tpm_state_.get()),
543 default_tpm_utility_(new NiceMock<MockTpmUtility>()),
544 tpm_utility_(default_tpm_utility_.get()),
545 default_authorization_delegate_(new PasswordAuthorizationDelegate("")),
546 password_authorization_delegate_(default_authorization_delegate_.get()),
547 default_session_manager_(new NiceMock<MockSessionManager>()),
548 session_manager_(default_session_manager_.get()),
549 default_hmac_session_(new NiceMock<MockHmacSession>()),
550 hmac_session_(default_hmac_session_.get()),
551 default_policy_session_(new NiceMock<MockPolicySession>()),
552 policy_session_(default_policy_session_.get()),
553 default_blob_parser_(new NiceMock<MockBlobParser>()),
554 blob_parser_(default_blob_parser_.get()) {
555 }
556
~TrunksFactoryForTest()557 TrunksFactoryForTest::~TrunksFactoryForTest() {}
558
GetTpm() const559 Tpm* TrunksFactoryForTest::GetTpm() const {
560 return tpm_;
561 }
562
GetTpmState() const563 scoped_ptr<TpmState> TrunksFactoryForTest::GetTpmState() const {
564 return scoped_ptr<TpmState>(new TpmStateForwarder(tpm_state_));
565 }
566
GetTpmUtility() const567 scoped_ptr<TpmUtility> TrunksFactoryForTest::GetTpmUtility() const {
568 return scoped_ptr<TpmUtility>(new TpmUtilityForwarder(tpm_utility_));
569 }
570
571 scoped_ptr<AuthorizationDelegate>
GetPasswordAuthorization(const std::string & password) const572 TrunksFactoryForTest::GetPasswordAuthorization(
573 const std::string& password) const {
574 return scoped_ptr<AuthorizationDelegate>(
575 new AuthorizationDelegateForwarder(password_authorization_delegate_));
576 }
577
GetSessionManager() const578 scoped_ptr<SessionManager> TrunksFactoryForTest::GetSessionManager() const {
579 return scoped_ptr<SessionManager>(
580 new SessionManagerForwarder(session_manager_));
581 }
582
GetHmacSession() const583 scoped_ptr<HmacSession> TrunksFactoryForTest::GetHmacSession() const {
584 return scoped_ptr<HmacSession>(new HmacSessionForwarder(hmac_session_));
585 }
586
GetPolicySession() const587 scoped_ptr<PolicySession> TrunksFactoryForTest::GetPolicySession() const {
588 return scoped_ptr<PolicySession>(new PolicySessionForwarder(policy_session_));
589 }
590
GetTrialSession() const591 scoped_ptr<PolicySession> TrunksFactoryForTest::GetTrialSession() const {
592 return scoped_ptr<PolicySession>(new PolicySessionForwarder(policy_session_));
593 }
594
GetBlobParser() const595 scoped_ptr<BlobParser> TrunksFactoryForTest::GetBlobParser() const {
596 return scoped_ptr<BlobParser>(new BlobParserForwarder(blob_parser_));
597 }
598
599 } // namespace trunks
600