OLD | NEW |
1 // Copyright (c) 2009-2010 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2009-2010 The Chromium OS Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Contains the implementation of class TpmInit | 5 // Contains the implementation of class TpmInit |
6 | 6 |
7 #include "tpm_init.h" | 7 #include "tpm_init.h" |
8 | 8 |
9 #include <base/logging.h> | 9 #include <base/logging.h> |
10 #include <base/time.h> | 10 #include <base/time.h> |
(...skipping 10 matching lines...) Expand all Loading... |
21 virtual ~TpmInitTask(); | 21 virtual ~TpmInitTask(); |
22 | 22 |
23 void Init(); | 23 void Init(); |
24 | 24 |
25 virtual void ThreadMain(); | 25 virtual void ThreadMain(); |
26 | 26 |
27 bool IsTpmReady(); | 27 bool IsTpmReady(); |
28 bool IsTpmEnabled(); | 28 bool IsTpmEnabled(); |
29 bool GetTpmPassword(chromeos::Blob* password); | 29 bool GetTpmPassword(chromeos::Blob* password); |
30 long GetInitializationMillis(); | 30 long GetInitializationMillis(); |
| 31 bool GetRandomData(int length, chromeos::Blob* data); |
31 | 32 |
32 private: | 33 private: |
33 scoped_ptr<tpm_init::Tpm> default_tpm_; | 34 scoped_ptr<tpm_init::Tpm> default_tpm_; |
34 tpm_init::Tpm* tpm_; | 35 tpm_init::Tpm* tpm_; |
35 bool initialize_status_; | 36 bool initialize_status_; |
36 bool task_done_; | 37 bool task_done_; |
37 long initialization_time_; | 38 long initialization_time_; |
38 }; | 39 }; |
39 | 40 |
40 TpmInit::TpmInit() | 41 TpmInit::TpmInit() |
41 : tpm_init_(new TpmInitTask()) { | 42 : tpm_init_(new TpmInitTask()) { |
42 } | 43 } |
43 | 44 |
44 TpmInit::~TpmInit() { | 45 TpmInit::~TpmInit() { |
45 } | 46 } |
46 | 47 |
| 48 bool TpmInit::GetRandomData(int length, chromeos::Blob* data) { |
| 49 return tpm_init_->GetRandomData(length, data); |
| 50 } |
| 51 |
47 bool TpmInit::StartInitializeTpm() { | 52 bool TpmInit::StartInitializeTpm() { |
48 tpm_init_->Init(); | 53 tpm_init_->Init(); |
49 if (!PlatformThread::CreateNonJoinable(0, tpm_init_.get())) { | 54 if (!PlatformThread::CreateNonJoinable(0, tpm_init_.get())) { |
50 LOG(ERROR) << "Unable to create TPM initialization background thread."; | 55 LOG(ERROR) << "Unable to create TPM initialization background thread."; |
51 return false; | 56 return false; |
52 } | 57 } |
53 return true; | 58 return true; |
54 } | 59 } |
55 | 60 |
56 bool TpmInit::IsTpmReady() { | 61 bool TpmInit::IsTpmReady() { |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 } | 123 } |
119 | 124 |
120 bool TpmInitTask::GetTpmPassword(chromeos::Blob* password) { | 125 bool TpmInitTask::GetTpmPassword(chromeos::Blob* password) { |
121 return tpm_->GetOwnerPassword(password); | 126 return tpm_->GetOwnerPassword(password); |
122 } | 127 } |
123 | 128 |
124 long TpmInitTask::GetInitializationMillis() { | 129 long TpmInitTask::GetInitializationMillis() { |
125 return initialization_time_; | 130 return initialization_time_; |
126 } | 131 } |
127 | 132 |
| 133 bool TpmInitTask::GetRandomData(int length, chromeos::Blob* data) { |
| 134 return tpm_->GetRandomData(length, data); |
| 135 } |
| 136 |
128 } // namespace tpm_init | 137 } // namespace tpm_init |
OLD | NEW |