OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium 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 #include "chromeos/dbus/fake_cryptohome_client.h" | 5 #include "chromeos/dbus/fake_cryptohome_client.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/location.h" |
8 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
| 10 #include "crypto/nss_util.h" |
9 #include "third_party/cros_system_api/dbus/service_constants.h" | 11 #include "third_party/cros_system_api/dbus/service_constants.h" |
10 | 12 |
11 namespace chromeos { | 13 namespace chromeos { |
12 | 14 |
13 namespace { | 15 FakeCryptohomeClient::FakeCryptohomeClient() |
| 16 : async_call_id_(1), |
| 17 tpm_is_ready_counter_(0), |
| 18 unmount_result_(true), |
| 19 locked_(false), |
| 20 weak_ptr_factory_(this) {} |
14 | 21 |
15 // A fake system salt. GetSystemSalt copies it to the given buffer. | 22 FakeCryptohomeClient::~FakeCryptohomeClient() {} |
16 const char kStubSystemSalt[] = "stub_system_salt"; | |
17 | |
18 } // namespace | |
19 | |
20 FakeCryptohomeClient::FakeCryptohomeClient() : unmount_result_(false) { | |
21 } | |
22 | |
23 FakeCryptohomeClient::~FakeCryptohomeClient() { | |
24 } | |
25 | 23 |
26 void FakeCryptohomeClient::Init(dbus::Bus* bus) { | 24 void FakeCryptohomeClient::Init(dbus::Bus* bus) { |
27 } | 25 } |
28 | 26 |
29 void FakeCryptohomeClient::TpmIsBeingOwned( | 27 void FakeCryptohomeClient::SetAsyncCallStatusHandlers( |
| 28 const AsyncCallStatusHandler& handler, |
| 29 const AsyncCallStatusWithDataHandler& data_handler) { |
| 30 async_call_status_handler_ = handler; |
| 31 async_call_status_data_handler_ = data_handler; |
| 32 } |
| 33 |
| 34 void FakeCryptohomeClient::ResetAsyncCallStatusHandlers() { |
| 35 async_call_status_handler_.Reset(); |
| 36 async_call_status_data_handler_.Reset(); |
| 37 } |
| 38 |
| 39 void FakeCryptohomeClient::IsMounted( |
30 const BoolDBusMethodCallback& callback) { | 40 const BoolDBusMethodCallback& callback) { |
| 41 base::MessageLoop::current()->PostTask( |
| 42 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); |
31 } | 43 } |
32 | 44 |
33 bool FakeCryptohomeClient::Unmount(bool* success) { | 45 bool FakeCryptohomeClient::Unmount(bool* success) { |
34 *success = unmount_result_; | 46 *success = unmount_result_; |
35 return true; | 47 return true; |
36 } | 48 } |
37 | 49 |
38 void FakeCryptohomeClient::AsyncCheckKey(const std::string& username, | 50 void FakeCryptohomeClient::AsyncCheckKey( |
39 const std::string& key, | 51 const std::string& username, |
40 const AsyncMethodCallback& callback) { | 52 const std::string& key, |
41 } | 53 const AsyncMethodCallback& callback) { |
42 | 54 ReturnAsyncMethodResult(callback, false); |
43 bool FakeCryptohomeClient::InstallAttributesIsInvalid(bool* is_invalid) { | |
44 return false; | |
45 } | |
46 | |
47 void FakeCryptohomeClient::TpmAttestationGetKeyPayload( | |
48 attestation::AttestationKeyType key_type, | |
49 const std::string& key_name, | |
50 const DataMethodCallback& callback) { | |
51 } | |
52 | |
53 void FakeCryptohomeClient::AsyncTpmAttestationFinishCertRequest( | |
54 const std::string& pca_response, | |
55 attestation::AttestationKeyType key_type, | |
56 const std::string& key_name, | |
57 const AsyncMethodCallback& callback) { | |
58 } | |
59 | |
60 void FakeCryptohomeClient::TpmIsEnabled( | |
61 const BoolDBusMethodCallback& callback) { | |
62 } | |
63 | |
64 void FakeCryptohomeClient::AsyncTpmAttestationEnroll( | |
65 const std::string& pca_response, | |
66 const AsyncMethodCallback& callback) { | |
67 } | 55 } |
68 | 56 |
69 void FakeCryptohomeClient::AsyncMigrateKey( | 57 void FakeCryptohomeClient::AsyncMigrateKey( |
70 const std::string& username, | 58 const std::string& username, |
71 const std::string& from_key, | 59 const std::string& from_key, |
72 const std::string& to_key, | 60 const std::string& to_key, |
73 const AsyncMethodCallback& callback) { | 61 const AsyncMethodCallback& callback) { |
74 } | 62 ReturnAsyncMethodResult(callback, false); |
75 | 63 } |
76 void FakeCryptohomeClient::IsMounted(const BoolDBusMethodCallback& callback) { | 64 |
77 base::MessageLoop::current()->PostTask(FROM_HERE, | 65 void FakeCryptohomeClient::AsyncRemove( |
78 base::Bind(callback, | 66 const std::string& username, |
79 DBUS_METHOD_CALL_SUCCESS, true)); | 67 const AsyncMethodCallback& callback) { |
80 } | 68 ReturnAsyncMethodResult(callback, false); |
81 | 69 } |
82 bool FakeCryptohomeClient::InstallAttributesGet(const std::string& name, | 70 |
83 std::vector<uint8>* value, | 71 bool FakeCryptohomeClient::GetSystemSalt(std::vector<uint8>* salt) { |
84 bool* successful) { | 72 const char kStubSystemSalt[] = "stub_system_salt"; |
85 return false; | 73 salt->assign(kStubSystemSalt, |
| 74 kStubSystemSalt + arraysize(kStubSystemSalt) - 1); |
| 75 return true; |
| 76 } |
| 77 |
| 78 void FakeCryptohomeClient::GetSanitizedUsername( |
| 79 const std::string& username, |
| 80 const StringDBusMethodCallback& callback) { |
| 81 // Even for stub implementation we have to return different values so that |
| 82 // multi-profiles would work. |
| 83 std::string sanitized_username = GetStubSanitizedUsername(username); |
| 84 base::MessageLoop::current()->PostTask( |
| 85 FROM_HERE, |
| 86 base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, sanitized_username)); |
| 87 } |
| 88 |
| 89 std::string FakeCryptohomeClient::BlockingGetSanitizedUsername( |
| 90 const std::string& username) { |
| 91 return GetStubSanitizedUsername(username); |
86 } | 92 } |
87 | 93 |
88 void FakeCryptohomeClient::AsyncMount(const std::string& username, | 94 void FakeCryptohomeClient::AsyncMount(const std::string& username, |
89 const std::string& key, int flags, | 95 const std::string& key, |
90 const AsyncMethodCallback& callback) { | 96 int flags, |
91 DCHECK(!callback.is_null()); | 97 const AsyncMethodCallback& callback) { |
92 | 98 ReturnAsyncMethodResult(callback, false); |
93 base::MessageLoop::current()->PostTask(FROM_HERE, | 99 } |
94 base::Bind(callback, 1 /* async_id */)); | 100 |
95 if (!handler_.is_null()) | 101 void FakeCryptohomeClient::AsyncAddKey( |
96 base::MessageLoop::current()->PostTask(FROM_HERE, | 102 const std::string& username, |
97 base::Bind(handler_, | 103 const std::string& key, |
98 1, // async_id | 104 const std::string& new_key, |
99 true, // return_status | 105 const AsyncMethodCallback& callback) { |
100 cryptohome::MOUNT_ERROR_NONE)); | 106 ReturnAsyncMethodResult(callback, false); |
101 } | |
102 | |
103 void FakeCryptohomeClient::AsyncAddKey(const std::string& username, | |
104 const std::string& key, | |
105 const std::string& new_key, | |
106 const AsyncMethodCallback& callback) { | |
107 DCHECK(!callback.is_null()); | |
108 | |
109 base::MessageLoop::current()->PostTask(FROM_HERE, | |
110 base::Bind(callback, 1 /* async_id */)); | |
111 if (!handler_.is_null()) | |
112 base::MessageLoop::current()->PostTask(FROM_HERE, | |
113 base::Bind(handler_, | |
114 1, // async_id | |
115 true, // return_status | |
116 cryptohome::MOUNT_ERROR_NONE)); | |
117 } | 107 } |
118 | 108 |
119 void FakeCryptohomeClient::AsyncMountGuest( | 109 void FakeCryptohomeClient::AsyncMountGuest( |
120 const AsyncMethodCallback& callback) { | 110 const AsyncMethodCallback& callback) { |
| 111 ReturnAsyncMethodResult(callback, false); |
121 } | 112 } |
122 | 113 |
123 void FakeCryptohomeClient::AsyncMountPublic( | 114 void FakeCryptohomeClient::AsyncMountPublic( |
124 const std::string& public_mount_id, | 115 const std::string& public_mount_id, |
125 int flags, | 116 int flags, |
126 const AsyncMethodCallback& callback) { | 117 const AsyncMethodCallback& callback) { |
| 118 ReturnAsyncMethodResult(callback, false); |
| 119 } |
| 120 |
| 121 void FakeCryptohomeClient::TpmIsReady( |
| 122 const BoolDBusMethodCallback& callback) { |
| 123 base::MessageLoop::current()->PostTask( |
| 124 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); |
| 125 } |
| 126 |
| 127 void FakeCryptohomeClient::TpmIsEnabled( |
| 128 const BoolDBusMethodCallback& callback) { |
| 129 base::MessageLoop::current()->PostTask( |
| 130 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); |
| 131 } |
| 132 |
| 133 bool FakeCryptohomeClient::CallTpmIsEnabledAndBlock(bool* enabled) { |
| 134 *enabled = true; |
| 135 return true; |
| 136 } |
| 137 |
| 138 void FakeCryptohomeClient::TpmGetPassword( |
| 139 const StringDBusMethodCallback& callback) { |
| 140 const char kStubTpmPassword[] = "Stub-TPM-password"; |
| 141 base::MessageLoop::current()->PostTask( |
| 142 FROM_HERE, |
| 143 base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, |
| 144 std::string(kStubTpmPassword))); |
| 145 } |
| 146 |
| 147 void FakeCryptohomeClient::TpmIsOwned( |
| 148 const BoolDBusMethodCallback& callback) { |
| 149 base::MessageLoop::current()->PostTask( |
| 150 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); |
| 151 } |
| 152 |
| 153 bool FakeCryptohomeClient::CallTpmIsOwnedAndBlock(bool* owned) { |
| 154 *owned = true; |
| 155 return true; |
| 156 } |
| 157 |
| 158 void FakeCryptohomeClient::TpmIsBeingOwned( |
| 159 const BoolDBusMethodCallback& callback) { |
| 160 base::MessageLoop::current()->PostTask( |
| 161 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); |
127 } | 162 } |
128 | 163 |
129 bool FakeCryptohomeClient::CallTpmIsBeingOwnedAndBlock(bool* owning) { | 164 bool FakeCryptohomeClient::CallTpmIsBeingOwnedAndBlock(bool* owning) { |
130 return false; | 165 *owning = true; |
131 } | 166 return true; |
132 | 167 } |
133 void FakeCryptohomeClient::Pkcs11IsTpmTokenReady( | 168 |
134 const BoolDBusMethodCallback& callback) { | 169 void FakeCryptohomeClient::TpmCanAttemptOwnership( |
| 170 const VoidDBusMethodCallback& callback) { |
| 171 base::MessageLoop::current()->PostTask( |
| 172 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS)); |
135 } | 173 } |
136 | 174 |
137 void FakeCryptohomeClient::TpmClearStoredPassword( | 175 void FakeCryptohomeClient::TpmClearStoredPassword( |
138 const VoidDBusMethodCallback& callback) { | 176 const VoidDBusMethodCallback& callback) { |
139 } | 177 base::MessageLoop::current()->PostTask( |
140 | 178 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS)); |
141 void FakeCryptohomeClient::TpmCanAttemptOwnership( | 179 } |
142 const VoidDBusMethodCallback& callback) { | 180 |
143 } | 181 bool FakeCryptohomeClient::CallTpmClearStoredPasswordAndBlock() { |
144 | 182 return true; |
145 bool FakeCryptohomeClient::GetSystemSalt(std::vector<uint8>* salt) { | 183 } |
146 salt->assign(kStubSystemSalt, | 184 |
147 kStubSystemSalt + arraysize(kStubSystemSalt) - 1); | 185 void FakeCryptohomeClient::Pkcs11IsTpmTokenReady( |
148 return true; | 186 const BoolDBusMethodCallback& callback) { |
149 } | 187 base::MessageLoop::current()->PostTask( |
150 | 188 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); |
151 void FakeCryptohomeClient::TpmGetPassword( | 189 } |
152 const StringDBusMethodCallback& callback) { | 190 |
153 } | 191 void FakeCryptohomeClient::Pkcs11GetTpmTokenInfo( |
154 | 192 const Pkcs11GetTpmTokenInfoCallback& callback) { |
155 bool FakeCryptohomeClient::InstallAttributesFinalize(bool* successful) { | 193 const char kStubUserPin[] = "012345"; |
156 return false; | 194 base::MessageLoop::current()->PostTask( |
157 } | 195 FROM_HERE, |
158 | 196 base::Bind(callback, |
159 void FakeCryptohomeClient::SetAsyncCallStatusHandlers( | 197 DBUS_METHOD_CALL_SUCCESS, |
160 const AsyncCallStatusHandler& handler, | 198 std::string(crypto::kTestTPMTokenName), |
161 const AsyncCallStatusWithDataHandler& data_handler) { | 199 std::string(kStubUserPin))); |
162 handler_ = handler; | 200 } |
163 data_handler_ = data_handler; | 201 |
164 } | 202 bool FakeCryptohomeClient::InstallAttributesGet(const std::string& name, |
165 | 203 std::vector<uint8>* value, |
166 bool FakeCryptohomeClient::CallTpmIsEnabledAndBlock(bool* enabled) { | 204 bool* successful) { |
167 return false; | 205 if (install_attrs_.find(name) != install_attrs_.end()) { |
| 206 *value = install_attrs_[name]; |
| 207 *successful = true; |
| 208 } else { |
| 209 value->clear(); |
| 210 *successful = false; |
| 211 } |
| 212 return true; |
168 } | 213 } |
169 | 214 |
170 bool FakeCryptohomeClient::InstallAttributesSet( | 215 bool FakeCryptohomeClient::InstallAttributesSet( |
171 const std::string& name, | 216 const std::string& name, |
172 const std::vector<uint8>& value, | 217 const std::vector<uint8>& value, |
173 bool* successful) { | 218 bool* successful) { |
174 return false; | 219 install_attrs_[name] = value; |
| 220 *successful = true; |
| 221 return true; |
| 222 } |
| 223 |
| 224 bool FakeCryptohomeClient::InstallAttributesFinalize(bool* successful) { |
| 225 locked_ = true; |
| 226 *successful = true; |
| 227 return true; |
| 228 } |
| 229 |
| 230 void FakeCryptohomeClient::InstallAttributesIsReady( |
| 231 const BoolDBusMethodCallback& callback) { |
| 232 base::MessageLoop::current()->PostTask( |
| 233 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); |
| 234 } |
| 235 |
| 236 bool FakeCryptohomeClient::InstallAttributesIsInvalid(bool* is_invalid) { |
| 237 *is_invalid = false; |
| 238 return true; |
175 } | 239 } |
176 | 240 |
177 bool FakeCryptohomeClient::InstallAttributesIsFirstInstall( | 241 bool FakeCryptohomeClient::InstallAttributesIsFirstInstall( |
178 bool* is_first_install) { | 242 bool* is_first_install) { |
179 return false; | 243 *is_first_install = !locked_; |
| 244 return true; |
| 245 } |
| 246 |
| 247 void FakeCryptohomeClient::TpmAttestationIsPrepared( |
| 248 const BoolDBusMethodCallback& callback) { |
| 249 base::MessageLoop::current()->PostTask( |
| 250 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); |
| 251 } |
| 252 |
| 253 void FakeCryptohomeClient::TpmAttestationIsEnrolled( |
| 254 const BoolDBusMethodCallback& callback) { |
| 255 base::MessageLoop::current()->PostTask( |
| 256 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, true)); |
| 257 } |
| 258 |
| 259 void FakeCryptohomeClient::AsyncTpmAttestationCreateEnrollRequest( |
| 260 const AsyncMethodCallback& callback) { |
| 261 ReturnAsyncMethodResult(callback, true); |
| 262 } |
| 263 |
| 264 void FakeCryptohomeClient::AsyncTpmAttestationEnroll( |
| 265 const std::string& pca_response, |
| 266 const AsyncMethodCallback& callback) { |
| 267 ReturnAsyncMethodResult(callback, false); |
| 268 } |
| 269 |
| 270 void FakeCryptohomeClient::AsyncTpmAttestationCreateCertRequest( |
| 271 attestation::AttestationCertificateProfile certificate_profile, |
| 272 const std::string& user_email, |
| 273 const std::string& request_origin, |
| 274 const AsyncMethodCallback& callback) { |
| 275 ReturnAsyncMethodResult(callback, true); |
| 276 } |
| 277 |
| 278 void FakeCryptohomeClient::AsyncTpmAttestationFinishCertRequest( |
| 279 const std::string& pca_response, |
| 280 attestation::AttestationKeyType key_type, |
| 281 const std::string& key_name, |
| 282 const AsyncMethodCallback& callback) { |
| 283 ReturnAsyncMethodResult(callback, true); |
| 284 } |
| 285 |
| 286 void FakeCryptohomeClient::TpmAttestationDoesKeyExist( |
| 287 attestation::AttestationKeyType key_type, |
| 288 const std::string& key_name, |
| 289 const BoolDBusMethodCallback& callback) { |
| 290 base::MessageLoop::current()->PostTask( |
| 291 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, false)); |
180 } | 292 } |
181 | 293 |
182 void FakeCryptohomeClient::TpmAttestationGetCertificate( | 294 void FakeCryptohomeClient::TpmAttestationGetCertificate( |
183 attestation::AttestationKeyType key_type, | 295 attestation::AttestationKeyType key_type, |
184 const std::string& key_name, | 296 const std::string& key_name, |
185 const DataMethodCallback& callback) { | 297 const DataMethodCallback& callback) { |
186 } | 298 base::MessageLoop::current()->PostTask( |
187 | 299 FROM_HERE, |
188 void FakeCryptohomeClient::InstallAttributesIsReady( | 300 base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, false, std::string())); |
189 const BoolDBusMethodCallback& callback) { | |
190 base::MessageLoop::current()->PostTask(FROM_HERE, | |
191 base::Bind(callback, | |
192 DBUS_METHOD_CALL_SUCCESS, true)); | |
193 } | 301 } |
194 | 302 |
195 void FakeCryptohomeClient::TpmAttestationGetPublicKey( | 303 void FakeCryptohomeClient::TpmAttestationGetPublicKey( |
196 attestation::AttestationKeyType key_type, | 304 attestation::AttestationKeyType key_type, |
197 const std::string& key_name, | 305 const std::string& key_name, |
198 const DataMethodCallback& callback) { | 306 const DataMethodCallback& callback) { |
199 } | 307 base::MessageLoop::current()->PostTask( |
200 | 308 FROM_HERE, |
201 void FakeCryptohomeClient::TpmAttestationSignSimpleChallenge( | 309 base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, false, std::string())); |
202 attestation::AttestationKeyType key_type, | 310 } |
203 const std::string& key_name, | 311 |
204 const std::string& challenge, | 312 void FakeCryptohomeClient::TpmAttestationRegisterKey( |
205 const AsyncMethodCallback& callback) { | 313 attestation::AttestationKeyType key_type, |
206 } | 314 const std::string& key_name, |
207 | 315 const AsyncMethodCallback& callback) { |
208 void FakeCryptohomeClient::Pkcs11GetTpmTokenInfo( | 316 ReturnAsyncMethodResult(callback, true); |
209 const Pkcs11GetTpmTokenInfoCallback& callback) { | |
210 } | |
211 | |
212 void FakeCryptohomeClient::TpmIsOwned(const BoolDBusMethodCallback& callback) { | |
213 } | |
214 | |
215 void FakeCryptohomeClient::TpmAttestationIsPrepared( | |
216 const BoolDBusMethodCallback& callback) { | |
217 } | |
218 | |
219 void FakeCryptohomeClient::TpmIsReady(const BoolDBusMethodCallback& callback) { | |
220 } | |
221 | |
222 void FakeCryptohomeClient::AsyncTpmAttestationCreateEnrollRequest( | |
223 const AsyncMethodCallback& callback) { | |
224 } | |
225 | |
226 void FakeCryptohomeClient::ResetAsyncCallStatusHandlers() { | |
227 handler_.Reset(); | |
228 data_handler_.Reset(); | |
229 } | |
230 | |
231 void FakeCryptohomeClient::TpmAttestationDoesKeyExist( | |
232 attestation::AttestationKeyType key_type, | |
233 const std::string& key_name, | |
234 const BoolDBusMethodCallback& callback) { | |
235 } | |
236 | |
237 bool FakeCryptohomeClient::CallTpmIsOwnedAndBlock(bool* owned) { | |
238 return false; | |
239 } | |
240 | |
241 void FakeCryptohomeClient::AsyncRemove(const std::string& username, | |
242 const AsyncMethodCallback& callback) { | |
243 } | |
244 | |
245 void FakeCryptohomeClient::TpmAttestationSetKeyPayload( | |
246 attestation::AttestationKeyType key_type, | |
247 const std::string& key_name, | |
248 const std::string& payload, | |
249 const BoolDBusMethodCallback& callback) { | |
250 } | |
251 | |
252 void FakeCryptohomeClient::GetSanitizedUsername( | |
253 const std::string& username, | |
254 const StringDBusMethodCallback& callback) { | |
255 DCHECK(!callback.is_null()); | |
256 | |
257 base::MessageLoop::current()->PostTask( | |
258 FROM_HERE, | |
259 base::Bind(callback, | |
260 chromeos::DBUS_METHOD_CALL_SUCCESS, | |
261 username)); | |
262 if (!data_handler_.is_null()) | |
263 base::MessageLoop::current()->PostTask( | |
264 FROM_HERE, | |
265 base::Bind(data_handler_, | |
266 1, // async_id | |
267 true, // return_status | |
268 username)); | |
269 } | |
270 | |
271 std::string FakeCryptohomeClient::BlockingGetSanitizedUsername( | |
272 const std::string& username) { | |
273 return username; | |
274 } | 317 } |
275 | 318 |
276 void FakeCryptohomeClient::TpmAttestationSignEnterpriseChallenge( | 319 void FakeCryptohomeClient::TpmAttestationSignEnterpriseChallenge( |
277 attestation::AttestationKeyType key_type, | 320 attestation::AttestationKeyType key_type, |
278 const std::string& key_name, | 321 const std::string& key_name, |
279 const std::string& domain, | 322 const std::string& domain, |
280 const std::string& device_id, | 323 const std::string& device_id, |
281 attestation::AttestationChallengeOptions options, | 324 attestation::AttestationChallengeOptions options, |
282 const std::string& challenge, | 325 const std::string& challenge, |
283 const AsyncMethodCallback& callback) { | 326 const AsyncMethodCallback& callback) { |
| 327 ReturnAsyncMethodResult(callback, true); |
284 } | 328 } |
285 | 329 |
286 void FakeCryptohomeClient::TpmAttestationIsEnrolled( | 330 void FakeCryptohomeClient::TpmAttestationSignSimpleChallenge( |
287 const BoolDBusMethodCallback& callback) { | 331 attestation::AttestationKeyType key_type, |
| 332 const std::string& key_name, |
| 333 const std::string& challenge, |
| 334 const AsyncMethodCallback& callback) { |
| 335 ReturnAsyncMethodResult(callback, true); |
288 } | 336 } |
289 | 337 |
290 void FakeCryptohomeClient::TpmAttestationRegisterKey( | 338 void FakeCryptohomeClient::TpmAttestationGetKeyPayload( |
291 attestation::AttestationKeyType key_type, | 339 attestation::AttestationKeyType key_type, |
292 const std::string& key_name, | 340 const std::string& key_name, |
293 const AsyncMethodCallback& callback) { | 341 const DataMethodCallback& callback) { |
| 342 base::MessageLoop::current()->PostTask( |
| 343 FROM_HERE, |
| 344 base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, false, std::string())); |
294 } | 345 } |
295 | 346 |
296 bool FakeCryptohomeClient::CallTpmClearStoredPasswordAndBlock() { | 347 void FakeCryptohomeClient::TpmAttestationSetKeyPayload( |
297 return false; | 348 attestation::AttestationKeyType key_type, |
| 349 const std::string& key_name, |
| 350 const std::string& payload, |
| 351 const BoolDBusMethodCallback& callback) { |
| 352 base::MessageLoop::current()->PostTask( |
| 353 FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS, false)); |
298 } | 354 } |
299 | 355 |
300 void FakeCryptohomeClient::AsyncTpmAttestationCreateCertRequest( | 356 void FakeCryptohomeClient::ReturnAsyncMethodResult( |
301 attestation::AttestationCertificateProfile certificate_profile, | 357 const AsyncMethodCallback& callback, |
302 const std::string& user_email, | 358 bool returns_data) { |
303 const std::string& request_origin, | 359 base::MessageLoop::current()->PostTask( |
304 const AsyncMethodCallback& callback) { | 360 FROM_HERE, |
| 361 base::Bind(&FakeCryptohomeClient::ReturnAsyncMethodResultInternal, |
| 362 weak_ptr_factory_.GetWeakPtr(), |
| 363 callback, |
| 364 returns_data)); |
305 } | 365 } |
306 | 366 |
307 } // namespace chromeos | 367 void FakeCryptohomeClient::ReturnAsyncMethodResultInternal( |
| 368 const AsyncMethodCallback& callback, |
| 369 bool returns_data) { |
| 370 callback.Run(async_call_id_); |
| 371 if (!returns_data && !async_call_status_handler_.is_null()) { |
| 372 base::MessageLoop::current()->PostTask( |
| 373 FROM_HERE, |
| 374 base::Bind(async_call_status_handler_, |
| 375 async_call_id_, |
| 376 true, |
| 377 cryptohome::MOUNT_ERROR_NONE)); |
| 378 } else if (returns_data && !async_call_status_data_handler_.is_null()) { |
| 379 base::MessageLoop::current()->PostTask( |
| 380 FROM_HERE, |
| 381 base::Bind(async_call_status_data_handler_, |
| 382 async_call_id_, |
| 383 true, |
| 384 std::string())); |
| 385 } |
| 386 ++async_call_id_; |
| 387 } |
| 388 |
| 389 } // namespace chromeos |
OLD | NEW |