OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/cryptohome_client.h" | 5 #include "chromeos/dbus/cryptohome_client.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
11 #include "base/location.h" | 11 #include "base/location.h" |
12 #include "base/macros.h" | 12 #include "base/macros.h" |
13 #include "base/memory/weak_ptr.h" | 13 #include "base/memory/weak_ptr.h" |
14 #include "base/message_loop/message_loop.h" | 14 #include "base/message_loop/message_loop.h" |
15 #include "chromeos/cryptohome/async_method_caller.h" | 15 #include "chromeos/cryptohome/async_method_caller.h" |
| 16 #include "chromeos/cryptohome/cryptohome_parameters.h" |
16 #include "chromeos/dbus/blocking_method_caller.h" | 17 #include "chromeos/dbus/blocking_method_caller.h" |
17 #include "chromeos/dbus/cryptohome/key.pb.h" | 18 #include "chromeos/dbus/cryptohome/key.pb.h" |
18 #include "chromeos/dbus/cryptohome/rpc.pb.h" | 19 #include "chromeos/dbus/cryptohome/rpc.pb.h" |
19 #include "dbus/bus.h" | 20 #include "dbus/bus.h" |
20 #include "dbus/message.h" | 21 #include "dbus/message.h" |
21 #include "dbus/object_path.h" | 22 #include "dbus/object_path.h" |
22 #include "dbus/object_proxy.h" | 23 #include "dbus/object_proxy.h" |
23 #include "third_party/cros_system_api/dbus/service_constants.h" | 24 #include "third_party/cros_system_api/dbus/service_constants.h" |
24 | 25 |
25 namespace chromeos { | 26 namespace chromeos { |
26 | 27 |
27 const int CryptohomeClient::kNotReadyAsyncId = -1; | 28 const int CryptohomeClient::kNotReadyAsyncId = -1; |
28 | 29 |
29 namespace { | 30 namespace { |
30 | 31 |
31 // This suffix is appended to user_id to get hash in stub implementation: | 32 // This suffix is appended to cryptohome_id to get hash in stub implementation: |
32 // stub_hash = "[user_id]-hash"; | 33 // stub_hash = "[cryptohome_id]-hash"; |
33 static const char kUserIdStubHashSuffix[] = "-hash"; | 34 static const char kUserIdStubHashSuffix[] = "-hash"; |
34 | 35 |
35 // Timeout for TPM operations. On slow machines it should be larger, than | 36 // Timeout for TPM operations. On slow machines it should be larger, than |
36 // default DBus timeout. TPM operations can take up to 80 seconds, so limit | 37 // default DBus timeout. TPM operations can take up to 80 seconds, so limit |
37 // is 2 minutes. | 38 // is 2 minutes. |
38 const int kTpmDBusTimeoutMs = 2 * 60 * 1000; | 39 const int kTpmDBusTimeoutMs = 2 * 60 * 1000; |
39 | 40 |
| 41 void FillIdentificationProtobuf(const cryptohome::Identification& id, |
| 42 cryptohome::AccountIdentifier* id_proto) { |
| 43 id_proto->set_account_id(id.id()); |
| 44 } |
| 45 |
40 // The CryptohomeClient implementation. | 46 // The CryptohomeClient implementation. |
41 class CryptohomeClientImpl : public CryptohomeClient { | 47 class CryptohomeClientImpl : public CryptohomeClient { |
42 public: | 48 public: |
43 CryptohomeClientImpl() : proxy_(NULL), weak_ptr_factory_(this) {} | 49 CryptohomeClientImpl() : proxy_(NULL), weak_ptr_factory_(this) {} |
44 | 50 |
45 // CryptohomeClient override. | 51 // CryptohomeClient override. |
46 void SetAsyncCallStatusHandlers( | 52 void SetAsyncCallStatusHandlers( |
47 const AsyncCallStatusHandler& handler, | 53 const AsyncCallStatusHandler& handler, |
48 const AsyncCallStatusWithDataHandler& data_handler) override { | 54 const AsyncCallStatusWithDataHandler& data_handler) override { |
49 async_call_status_handler_ = handler; | 55 async_call_status_handler_ = handler; |
(...skipping 20 matching lines...) Expand all Loading... |
70 } | 76 } |
71 | 77 |
72 // CryptohomeClient override. | 78 // CryptohomeClient override. |
73 bool Unmount(bool* success) override { | 79 bool Unmount(bool* success) override { |
74 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 80 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
75 cryptohome::kCryptohomeUnmount); | 81 cryptohome::kCryptohomeUnmount); |
76 return CallBoolMethodAndBlock(&method_call, success); | 82 return CallBoolMethodAndBlock(&method_call, success); |
77 } | 83 } |
78 | 84 |
79 // CryptohomeClient override. | 85 // CryptohomeClient override. |
80 void AsyncCheckKey(const std::string& username, | 86 void AsyncCheckKey(const cryptohome::Identification& cryptohome_id, |
81 const std::string& key, | 87 const std::string& key, |
82 const AsyncMethodCallback& callback) override { | 88 const AsyncMethodCallback& callback) override { |
83 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 89 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
84 cryptohome::kCryptohomeAsyncCheckKey); | 90 cryptohome::kCryptohomeAsyncCheckKey); |
85 dbus::MessageWriter writer(&method_call); | 91 dbus::MessageWriter writer(&method_call); |
86 writer.AppendString(username); | 92 writer.AppendString(cryptohome_id.id()); |
87 writer.AppendString(key); | 93 writer.AppendString(key); |
88 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 94 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
89 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 95 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
90 weak_ptr_factory_.GetWeakPtr(), | 96 weak_ptr_factory_.GetWeakPtr(), |
91 callback)); | 97 callback)); |
92 } | 98 } |
93 | 99 |
94 // CryptohomeClient override. | 100 // CryptohomeClient override. |
95 void AsyncMigrateKey(const std::string& username, | 101 void AsyncMigrateKey(const cryptohome::Identification& cryptohome_id, |
96 const std::string& from_key, | 102 const std::string& from_key, |
97 const std::string& to_key, | 103 const std::string& to_key, |
98 const AsyncMethodCallback& callback) override { | 104 const AsyncMethodCallback& callback) override { |
99 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 105 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
100 cryptohome::kCryptohomeAsyncMigrateKey); | 106 cryptohome::kCryptohomeAsyncMigrateKey); |
101 dbus::MessageWriter writer(&method_call); | 107 dbus::MessageWriter writer(&method_call); |
102 writer.AppendString(username); | 108 writer.AppendString(cryptohome_id.id()); |
103 writer.AppendString(from_key); | 109 writer.AppendString(from_key); |
104 writer.AppendString(to_key); | 110 writer.AppendString(to_key); |
105 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 111 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
106 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 112 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
107 weak_ptr_factory_.GetWeakPtr(), | 113 weak_ptr_factory_.GetWeakPtr(), |
108 callback)); | 114 callback)); |
109 } | 115 } |
110 | 116 |
111 // CryptohomeClient override. | 117 // CryptohomeClient override. |
112 void AsyncRemove(const std::string& username, | 118 void AsyncRemove(const cryptohome::Identification& cryptohome_id, |
113 const AsyncMethodCallback& callback) override { | 119 const AsyncMethodCallback& callback) override { |
114 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 120 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
115 cryptohome::kCryptohomeAsyncRemove); | 121 cryptohome::kCryptohomeAsyncRemove); |
116 dbus::MessageWriter writer(&method_call); | 122 dbus::MessageWriter writer(&method_call); |
117 writer.AppendString(username); | 123 writer.AppendString(cryptohome_id.id()); |
118 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 124 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
119 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 125 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
120 weak_ptr_factory_.GetWeakPtr(), | 126 weak_ptr_factory_.GetWeakPtr(), |
121 callback)); | 127 callback)); |
122 } | 128 } |
123 | 129 |
124 // CryptohomeClient override. | 130 // CryptohomeClient override. |
125 void GetSystemSalt(const GetSystemSaltCallback& callback) override { | 131 void GetSystemSalt(const GetSystemSaltCallback& callback) override { |
126 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 132 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
127 cryptohome::kCryptohomeGetSystemSalt); | 133 cryptohome::kCryptohomeGetSystemSalt); |
128 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 134 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
129 base::Bind(&CryptohomeClientImpl::OnGetSystemSalt, | 135 base::Bind(&CryptohomeClientImpl::OnGetSystemSalt, |
130 weak_ptr_factory_.GetWeakPtr(), | 136 weak_ptr_factory_.GetWeakPtr(), |
131 callback)); | 137 callback)); |
132 } | 138 } |
133 | 139 |
134 // CryptohomeClient override, | 140 // CryptohomeClient override, |
135 void GetSanitizedUsername(const std::string& username, | 141 void GetSanitizedUsername(const cryptohome::Identification& cryptohome_id, |
136 const StringDBusMethodCallback& callback) override { | 142 const StringDBusMethodCallback& callback) override { |
137 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 143 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
138 cryptohome::kCryptohomeGetSanitizedUsername); | 144 cryptohome::kCryptohomeGetSanitizedUsername); |
139 dbus::MessageWriter writer(&method_call); | 145 dbus::MessageWriter writer(&method_call); |
140 writer.AppendString(username); | 146 writer.AppendString(cryptohome_id.id()); |
141 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 147 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
142 base::Bind(&CryptohomeClientImpl::OnStringMethod, | 148 base::Bind(&CryptohomeClientImpl::OnStringMethod, |
143 weak_ptr_factory_.GetWeakPtr(), | 149 weak_ptr_factory_.GetWeakPtr(), |
144 callback)); | 150 callback)); |
145 } | 151 } |
146 | 152 |
147 // CryptohomeClient override. | 153 // CryptohomeClient override. |
148 std::string BlockingGetSanitizedUsername( | 154 std::string BlockingGetSanitizedUsername( |
149 const std::string& username) override { | 155 const cryptohome::Identification& cryptohome_id) override { |
150 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 156 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
151 cryptohome::kCryptohomeGetSanitizedUsername); | 157 cryptohome::kCryptohomeGetSanitizedUsername); |
152 dbus::MessageWriter writer(&method_call); | 158 dbus::MessageWriter writer(&method_call); |
153 writer.AppendString(username); | 159 writer.AppendString(cryptohome_id.id()); |
154 | 160 |
155 scoped_ptr<dbus::Response> response = | 161 scoped_ptr<dbus::Response> response = |
156 blocking_method_caller_->CallMethodAndBlock(&method_call); | 162 blocking_method_caller_->CallMethodAndBlock(&method_call); |
157 | 163 |
158 std::string sanitized_username; | 164 std::string sanitized_username; |
159 if (response) { | 165 if (response) { |
160 dbus::MessageReader reader(response.get()); | 166 dbus::MessageReader reader(response.get()); |
161 reader.PopString(&sanitized_username); | 167 reader.PopString(&sanitized_username); |
162 } | 168 } |
163 | 169 |
164 return sanitized_username; | 170 return sanitized_username; |
165 } | 171 } |
166 | 172 |
167 // CryptohomeClient override. | 173 // CryptohomeClient override. |
168 void AsyncMount(const std::string& username, | 174 void AsyncMount(const cryptohome::Identification& cryptohome_id, |
169 const std::string& key, | 175 const std::string& key, |
170 int flags, | 176 int flags, |
171 const AsyncMethodCallback& callback) override { | 177 const AsyncMethodCallback& callback) override { |
172 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 178 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
173 cryptohome::kCryptohomeAsyncMount); | 179 cryptohome::kCryptohomeAsyncMount); |
174 dbus::MessageWriter writer(&method_call); | 180 dbus::MessageWriter writer(&method_call); |
175 writer.AppendString(username); | 181 writer.AppendString(cryptohome_id.id()); |
176 writer.AppendString(key); | 182 writer.AppendString(key); |
177 writer.AppendBool(flags & cryptohome::CREATE_IF_MISSING); | 183 writer.AppendBool(flags & cryptohome::CREATE_IF_MISSING); |
178 writer.AppendBool(flags & cryptohome::ENSURE_EPHEMERAL); | 184 writer.AppendBool(flags & cryptohome::ENSURE_EPHEMERAL); |
179 // deprecated_tracked_subdirectories | 185 // deprecated_tracked_subdirectories |
180 writer.AppendArrayOfStrings(std::vector<std::string>()); | 186 writer.AppendArrayOfStrings(std::vector<std::string>()); |
181 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 187 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
182 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 188 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
183 weak_ptr_factory_.GetWeakPtr(), | 189 weak_ptr_factory_.GetWeakPtr(), |
184 callback)); | 190 callback)); |
185 } | 191 } |
186 | 192 |
187 // CryptohomeClient override. | 193 // CryptohomeClient override. |
188 void AsyncAddKey(const std::string& username, | 194 void AsyncAddKey(const cryptohome::Identification& cryptohome_id, |
189 const std::string& key, | 195 const std::string& key, |
190 const std::string& new_key, | 196 const std::string& new_key, |
191 const AsyncMethodCallback& callback) override { | 197 const AsyncMethodCallback& callback) override { |
192 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 198 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
193 cryptohome::kCryptohomeAsyncAddKey); | 199 cryptohome::kCryptohomeAsyncAddKey); |
194 dbus::MessageWriter writer(&method_call); | 200 dbus::MessageWriter writer(&method_call); |
195 writer.AppendString(username); | 201 writer.AppendString(cryptohome_id.id()); |
196 writer.AppendString(key); | 202 writer.AppendString(key); |
197 writer.AppendString(new_key); | 203 writer.AppendString(new_key); |
198 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 204 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
199 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 205 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
200 weak_ptr_factory_.GetWeakPtr(), | 206 weak_ptr_factory_.GetWeakPtr(), |
201 callback)); | 207 callback)); |
202 } | 208 } |
203 | 209 |
204 // CryptohomeClient override. | 210 // CryptohomeClient override. |
205 void AsyncMountGuest(const AsyncMethodCallback& callback) override { | 211 void AsyncMountGuest(const AsyncMethodCallback& callback) override { |
206 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 212 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
207 cryptohome::kCryptohomeAsyncMountGuest); | 213 cryptohome::kCryptohomeAsyncMountGuest); |
208 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 214 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
209 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 215 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
210 weak_ptr_factory_.GetWeakPtr(), | 216 weak_ptr_factory_.GetWeakPtr(), |
211 callback)); | 217 callback)); |
212 } | 218 } |
213 | 219 |
214 // CryptohomeClient override. | 220 // CryptohomeClient override. |
215 void AsyncMountPublic(const std::string& public_mount_id, | 221 void AsyncMountPublic(const cryptohome::Identification& public_mount_id, |
216 int flags, | 222 int flags, |
217 const AsyncMethodCallback& callback) override { | 223 const AsyncMethodCallback& callback) override { |
218 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 224 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
219 cryptohome::kCryptohomeAsyncMountPublic); | 225 cryptohome::kCryptohomeAsyncMountPublic); |
220 dbus::MessageWriter writer(&method_call); | 226 dbus::MessageWriter writer(&method_call); |
221 writer.AppendString(public_mount_id); | 227 writer.AppendString(public_mount_id.id()); |
222 writer.AppendBool(flags & cryptohome::CREATE_IF_MISSING); | 228 writer.AppendBool(flags & cryptohome::CREATE_IF_MISSING); |
223 writer.AppendBool(flags & cryptohome::ENSURE_EPHEMERAL); | 229 writer.AppendBool(flags & cryptohome::ENSURE_EPHEMERAL); |
224 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 230 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
225 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 231 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
226 weak_ptr_factory_.GetWeakPtr(), | 232 weak_ptr_factory_.GetWeakPtr(), |
227 callback)); | 233 callback)); |
228 } | 234 } |
229 | 235 |
230 // CryptohomeClient override. | 236 // CryptohomeClient override. |
231 void TpmIsReady(const BoolDBusMethodCallback& callback) override { | 237 void TpmIsReady(const BoolDBusMethodCallback& callback) override { |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 proxy_->CallMethod( | 335 proxy_->CallMethod( |
330 &method_call, kTpmDBusTimeoutMs , | 336 &method_call, kTpmDBusTimeoutMs , |
331 base::Bind( | 337 base::Bind( |
332 &CryptohomeClientImpl::OnPkcs11GetTpmTokenInfo, | 338 &CryptohomeClientImpl::OnPkcs11GetTpmTokenInfo, |
333 weak_ptr_factory_.GetWeakPtr(), | 339 weak_ptr_factory_.GetWeakPtr(), |
334 callback)); | 340 callback)); |
335 } | 341 } |
336 | 342 |
337 // CryptohomeClient override. | 343 // CryptohomeClient override. |
338 void Pkcs11GetTpmTokenInfoForUser( | 344 void Pkcs11GetTpmTokenInfoForUser( |
339 const std::string& user_email, | 345 const cryptohome::Identification& cryptohome_id, |
340 const Pkcs11GetTpmTokenInfoCallback& callback) override { | 346 const Pkcs11GetTpmTokenInfoCallback& callback) override { |
341 dbus::MethodCall method_call( | 347 dbus::MethodCall method_call( |
342 cryptohome::kCryptohomeInterface, | 348 cryptohome::kCryptohomeInterface, |
343 cryptohome::kCryptohomePkcs11GetTpmTokenInfoForUser); | 349 cryptohome::kCryptohomePkcs11GetTpmTokenInfoForUser); |
344 dbus::MessageWriter writer(&method_call); | 350 dbus::MessageWriter writer(&method_call); |
345 writer.AppendString(user_email); | 351 writer.AppendString(cryptohome_id.id()); |
346 proxy_->CallMethod( | 352 proxy_->CallMethod( |
347 &method_call, kTpmDBusTimeoutMs , | 353 &method_call, kTpmDBusTimeoutMs , |
348 base::Bind( | 354 base::Bind( |
349 &CryptohomeClientImpl::OnPkcs11GetTpmTokenInfoForUser, | 355 &CryptohomeClientImpl::OnPkcs11GetTpmTokenInfoForUser, |
350 weak_ptr_factory_.GetWeakPtr(), | 356 weak_ptr_factory_.GetWeakPtr(), |
351 callback)); | 357 callback)); |
352 } | 358 } |
353 | 359 |
354 // CryptohomeClient override. | 360 // CryptohomeClient override. |
355 bool InstallAttributesGet(const std::string& name, | 361 bool InstallAttributesGet(const std::string& name, |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 472 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
467 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 473 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
468 weak_ptr_factory_.GetWeakPtr(), | 474 weak_ptr_factory_.GetWeakPtr(), |
469 callback)); | 475 callback)); |
470 } | 476 } |
471 | 477 |
472 // CryptohomeClient override. | 478 // CryptohomeClient override. |
473 void AsyncTpmAttestationCreateCertRequest( | 479 void AsyncTpmAttestationCreateCertRequest( |
474 attestation::PrivacyCAType pca_type, | 480 attestation::PrivacyCAType pca_type, |
475 attestation::AttestationCertificateProfile certificate_profile, | 481 attestation::AttestationCertificateProfile certificate_profile, |
476 const std::string& user_id, | 482 const cryptohome::Identification& cryptohome_id, |
477 const std::string& request_origin, | 483 const std::string& request_origin, |
478 const AsyncMethodCallback& callback) override { | 484 const AsyncMethodCallback& callback) override { |
479 dbus::MethodCall method_call( | 485 dbus::MethodCall method_call( |
480 cryptohome::kCryptohomeInterface, | 486 cryptohome::kCryptohomeInterface, |
481 cryptohome::kCryptohomeAsyncTpmAttestationCreateCertRequest); | 487 cryptohome::kCryptohomeAsyncTpmAttestationCreateCertRequest); |
482 dbus::MessageWriter writer(&method_call); | 488 dbus::MessageWriter writer(&method_call); |
483 writer.AppendInt32(pca_type); | 489 writer.AppendInt32(pca_type); |
484 writer.AppendInt32(certificate_profile); | 490 writer.AppendInt32(certificate_profile); |
485 writer.AppendString(user_id); | 491 writer.AppendString(cryptohome_id.id()); |
486 writer.AppendString(request_origin); | 492 writer.AppendString(request_origin); |
487 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 493 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
488 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 494 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
489 weak_ptr_factory_.GetWeakPtr(), | 495 weak_ptr_factory_.GetWeakPtr(), |
490 callback)); | 496 callback)); |
491 } | 497 } |
492 | 498 |
493 // CryptohomeClient override. | 499 // CryptohomeClient override. |
494 void AsyncTpmAttestationFinishCertRequest( | 500 void AsyncTpmAttestationFinishCertRequest( |
495 const std::string& pca_response, | 501 const std::string& pca_response, |
496 attestation::AttestationKeyType key_type, | 502 attestation::AttestationKeyType key_type, |
497 const std::string& user_id, | 503 const cryptohome::Identification& cryptohome_id, |
498 const std::string& key_name, | 504 const std::string& key_name, |
499 const AsyncMethodCallback& callback) override { | 505 const AsyncMethodCallback& callback) override { |
500 dbus::MethodCall method_call( | 506 dbus::MethodCall method_call( |
501 cryptohome::kCryptohomeInterface, | 507 cryptohome::kCryptohomeInterface, |
502 cryptohome::kCryptohomeAsyncTpmAttestationFinishCertRequest); | 508 cryptohome::kCryptohomeAsyncTpmAttestationFinishCertRequest); |
503 dbus::MessageWriter writer(&method_call); | 509 dbus::MessageWriter writer(&method_call); |
504 writer.AppendArrayOfBytes( | 510 writer.AppendArrayOfBytes( |
505 reinterpret_cast<const uint8_t*>(pca_response.data()), | 511 reinterpret_cast<const uint8_t*>(pca_response.data()), |
506 pca_response.size()); | 512 pca_response.size()); |
507 bool is_user_specific = (key_type == attestation::KEY_USER); | 513 bool is_user_specific = (key_type == attestation::KEY_USER); |
508 writer.AppendBool(is_user_specific); | 514 writer.AppendBool(is_user_specific); |
509 writer.AppendString(user_id); | 515 writer.AppendString(cryptohome_id.id()); |
510 writer.AppendString(key_name); | 516 writer.AppendString(key_name); |
511 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 517 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
512 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 518 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
513 weak_ptr_factory_.GetWeakPtr(), | 519 weak_ptr_factory_.GetWeakPtr(), |
514 callback)); | 520 callback)); |
515 } | 521 } |
516 | 522 |
517 // CryptohomeClient override. | 523 // CryptohomeClient override. |
518 void TpmAttestationDoesKeyExist( | 524 void TpmAttestationDoesKeyExist( |
519 attestation::AttestationKeyType key_type, | 525 attestation::AttestationKeyType key_type, |
520 const std::string& user_id, | 526 const cryptohome::Identification& cryptohome_id, |
521 const std::string& key_name, | 527 const std::string& key_name, |
522 const BoolDBusMethodCallback& callback) override { | 528 const BoolDBusMethodCallback& callback) override { |
523 dbus::MethodCall method_call( | 529 dbus::MethodCall method_call( |
524 cryptohome::kCryptohomeInterface, | 530 cryptohome::kCryptohomeInterface, |
525 cryptohome::kCryptohomeTpmAttestationDoesKeyExist); | 531 cryptohome::kCryptohomeTpmAttestationDoesKeyExist); |
526 dbus::MessageWriter writer(&method_call); | 532 dbus::MessageWriter writer(&method_call); |
527 bool is_user_specific = (key_type == attestation::KEY_USER); | 533 bool is_user_specific = (key_type == attestation::KEY_USER); |
528 writer.AppendBool(is_user_specific); | 534 writer.AppendBool(is_user_specific); |
529 writer.AppendString(user_id); | 535 writer.AppendString(cryptohome_id.id()); |
530 writer.AppendString(key_name); | 536 writer.AppendString(key_name); |
531 CallBoolMethod(&method_call, callback); | 537 CallBoolMethod(&method_call, callback); |
532 } | 538 } |
533 | 539 |
534 // CryptohomeClient override. | 540 // CryptohomeClient override. |
535 void TpmAttestationGetCertificate( | 541 void TpmAttestationGetCertificate( |
536 attestation::AttestationKeyType key_type, | 542 attestation::AttestationKeyType key_type, |
537 const std::string& user_id, | 543 const cryptohome::Identification& cryptohome_id, |
538 const std::string& key_name, | 544 const std::string& key_name, |
539 const DataMethodCallback& callback) override { | 545 const DataMethodCallback& callback) override { |
540 dbus::MethodCall method_call( | 546 dbus::MethodCall method_call( |
541 cryptohome::kCryptohomeInterface, | 547 cryptohome::kCryptohomeInterface, |
542 cryptohome::kCryptohomeTpmAttestationGetCertificate); | 548 cryptohome::kCryptohomeTpmAttestationGetCertificate); |
543 dbus::MessageWriter writer(&method_call); | 549 dbus::MessageWriter writer(&method_call); |
544 bool is_user_specific = (key_type == attestation::KEY_USER); | 550 bool is_user_specific = (key_type == attestation::KEY_USER); |
545 writer.AppendBool(is_user_specific); | 551 writer.AppendBool(is_user_specific); |
546 writer.AppendString(user_id); | 552 writer.AppendString(cryptohome_id.id()); |
547 writer.AppendString(key_name); | 553 writer.AppendString(key_name); |
548 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 554 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
549 base::Bind(&CryptohomeClientImpl::OnDataMethod, | 555 base::Bind(&CryptohomeClientImpl::OnDataMethod, |
550 weak_ptr_factory_.GetWeakPtr(), | 556 weak_ptr_factory_.GetWeakPtr(), |
551 callback)); | 557 callback)); |
552 } | 558 } |
553 | 559 |
554 // CryptohomeClient override. | 560 // CryptohomeClient override. |
555 void TpmAttestationGetPublicKey(attestation::AttestationKeyType key_type, | 561 void TpmAttestationGetPublicKey( |
556 const std::string& user_id, | 562 attestation::AttestationKeyType key_type, |
557 const std::string& key_name, | 563 const cryptohome::Identification& cryptohome_id, |
558 const DataMethodCallback& callback) override { | 564 const std::string& key_name, |
| 565 const DataMethodCallback& callback) override { |
559 dbus::MethodCall method_call( | 566 dbus::MethodCall method_call( |
560 cryptohome::kCryptohomeInterface, | 567 cryptohome::kCryptohomeInterface, |
561 cryptohome::kCryptohomeTpmAttestationGetPublicKey); | 568 cryptohome::kCryptohomeTpmAttestationGetPublicKey); |
562 dbus::MessageWriter writer(&method_call); | 569 dbus::MessageWriter writer(&method_call); |
563 bool is_user_specific = (key_type == attestation::KEY_USER); | 570 bool is_user_specific = (key_type == attestation::KEY_USER); |
564 writer.AppendBool(is_user_specific); | 571 writer.AppendBool(is_user_specific); |
565 writer.AppendString(user_id); | 572 writer.AppendString(cryptohome_id.id()); |
566 writer.AppendString(key_name); | 573 writer.AppendString(key_name); |
567 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 574 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
568 base::Bind(&CryptohomeClientImpl::OnDataMethod, | 575 base::Bind(&CryptohomeClientImpl::OnDataMethod, |
569 weak_ptr_factory_.GetWeakPtr(), | 576 weak_ptr_factory_.GetWeakPtr(), |
570 callback)); | 577 callback)); |
571 } | 578 } |
572 | 579 |
573 // CryptohomeClient override. | 580 // CryptohomeClient override. |
574 void TpmAttestationRegisterKey(attestation::AttestationKeyType key_type, | 581 void TpmAttestationRegisterKey( |
575 const std::string& user_id, | 582 attestation::AttestationKeyType key_type, |
576 const std::string& key_name, | 583 const cryptohome::Identification& cryptohome_id, |
577 const AsyncMethodCallback& callback) override { | 584 const std::string& key_name, |
| 585 const AsyncMethodCallback& callback) override { |
578 dbus::MethodCall method_call( | 586 dbus::MethodCall method_call( |
579 cryptohome::kCryptohomeInterface, | 587 cryptohome::kCryptohomeInterface, |
580 cryptohome::kCryptohomeTpmAttestationRegisterKey); | 588 cryptohome::kCryptohomeTpmAttestationRegisterKey); |
581 dbus::MessageWriter writer(&method_call); | 589 dbus::MessageWriter writer(&method_call); |
582 bool is_user_specific = (key_type == attestation::KEY_USER); | 590 bool is_user_specific = (key_type == attestation::KEY_USER); |
583 writer.AppendBool(is_user_specific); | 591 writer.AppendBool(is_user_specific); |
584 writer.AppendString(user_id); | 592 writer.AppendString(cryptohome_id.id()); |
585 writer.AppendString(key_name); | 593 writer.AppendString(key_name); |
586 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 594 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
587 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 595 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
588 weak_ptr_factory_.GetWeakPtr(), | 596 weak_ptr_factory_.GetWeakPtr(), |
589 callback)); | 597 callback)); |
590 } | 598 } |
591 | 599 |
592 // CryptohomeClient override. | 600 // CryptohomeClient override. |
593 void TpmAttestationSignEnterpriseChallenge( | 601 void TpmAttestationSignEnterpriseChallenge( |
594 attestation::AttestationKeyType key_type, | 602 attestation::AttestationKeyType key_type, |
595 const std::string& user_id, | 603 const cryptohome::Identification& cryptohome_id, |
596 const std::string& key_name, | 604 const std::string& key_name, |
597 const std::string& domain, | 605 const std::string& domain, |
598 const std::string& device_id, | 606 const std::string& device_id, |
599 attestation::AttestationChallengeOptions options, | 607 attestation::AttestationChallengeOptions options, |
600 const std::string& challenge, | 608 const std::string& challenge, |
601 const AsyncMethodCallback& callback) override { | 609 const AsyncMethodCallback& callback) override { |
602 dbus::MethodCall method_call( | 610 dbus::MethodCall method_call( |
603 cryptohome::kCryptohomeInterface, | 611 cryptohome::kCryptohomeInterface, |
604 cryptohome::kCryptohomeTpmAttestationSignEnterpriseChallenge); | 612 cryptohome::kCryptohomeTpmAttestationSignEnterpriseChallenge); |
605 dbus::MessageWriter writer(&method_call); | 613 dbus::MessageWriter writer(&method_call); |
606 bool is_user_specific = (key_type == attestation::KEY_USER); | 614 bool is_user_specific = (key_type == attestation::KEY_USER); |
607 writer.AppendBool(is_user_specific); | 615 writer.AppendBool(is_user_specific); |
608 writer.AppendString(user_id); | 616 writer.AppendString(cryptohome_id.id()); |
609 writer.AppendString(key_name); | 617 writer.AppendString(key_name); |
610 writer.AppendString(domain); | 618 writer.AppendString(domain); |
611 writer.AppendArrayOfBytes( | 619 writer.AppendArrayOfBytes( |
612 reinterpret_cast<const uint8_t*>(device_id.data()), device_id.size()); | 620 reinterpret_cast<const uint8_t*>(device_id.data()), device_id.size()); |
613 bool include_signed_public_key = | 621 bool include_signed_public_key = |
614 (options & attestation::CHALLENGE_INCLUDE_SIGNED_PUBLIC_KEY); | 622 (options & attestation::CHALLENGE_INCLUDE_SIGNED_PUBLIC_KEY); |
615 writer.AppendBool(include_signed_public_key); | 623 writer.AppendBool(include_signed_public_key); |
616 writer.AppendArrayOfBytes( | 624 writer.AppendArrayOfBytes( |
617 reinterpret_cast<const uint8_t*>(challenge.data()), challenge.size()); | 625 reinterpret_cast<const uint8_t*>(challenge.data()), challenge.size()); |
618 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 626 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
619 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 627 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
620 weak_ptr_factory_.GetWeakPtr(), | 628 weak_ptr_factory_.GetWeakPtr(), |
621 callback)); | 629 callback)); |
622 } | 630 } |
623 | 631 |
624 // CryptohomeClient override. | 632 // CryptohomeClient override. |
625 void TpmAttestationSignSimpleChallenge( | 633 void TpmAttestationSignSimpleChallenge( |
626 attestation::AttestationKeyType key_type, | 634 attestation::AttestationKeyType key_type, |
627 const std::string& user_id, | 635 const cryptohome::Identification& cryptohome_id, |
628 const std::string& key_name, | 636 const std::string& key_name, |
629 const std::string& challenge, | 637 const std::string& challenge, |
630 const AsyncMethodCallback& callback) override { | 638 const AsyncMethodCallback& callback) override { |
631 dbus::MethodCall method_call( | 639 dbus::MethodCall method_call( |
632 cryptohome::kCryptohomeInterface, | 640 cryptohome::kCryptohomeInterface, |
633 cryptohome::kCryptohomeTpmAttestationSignSimpleChallenge); | 641 cryptohome::kCryptohomeTpmAttestationSignSimpleChallenge); |
634 dbus::MessageWriter writer(&method_call); | 642 dbus::MessageWriter writer(&method_call); |
635 bool is_user_specific = (key_type == attestation::KEY_USER); | 643 bool is_user_specific = (key_type == attestation::KEY_USER); |
636 writer.AppendBool(is_user_specific); | 644 writer.AppendBool(is_user_specific); |
637 writer.AppendString(user_id); | 645 writer.AppendString(cryptohome_id.id()); |
638 writer.AppendString(key_name); | 646 writer.AppendString(key_name); |
639 writer.AppendArrayOfBytes( | 647 writer.AppendArrayOfBytes( |
640 reinterpret_cast<const uint8_t*>(challenge.data()), challenge.size()); | 648 reinterpret_cast<const uint8_t*>(challenge.data()), challenge.size()); |
641 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 649 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
642 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, | 650 base::Bind(&CryptohomeClientImpl::OnAsyncMethodCall, |
643 weak_ptr_factory_.GetWeakPtr(), | 651 weak_ptr_factory_.GetWeakPtr(), |
644 callback)); | 652 callback)); |
645 } | 653 } |
646 | 654 |
647 // CryptohomeClient override. | 655 // CryptohomeClient override. |
648 void TpmAttestationGetKeyPayload( | 656 void TpmAttestationGetKeyPayload( |
649 attestation::AttestationKeyType key_type, | 657 attestation::AttestationKeyType key_type, |
650 const std::string& user_id, | 658 const cryptohome::Identification& cryptohome_id, |
651 const std::string& key_name, | 659 const std::string& key_name, |
652 const DataMethodCallback& callback) override { | 660 const DataMethodCallback& callback) override { |
653 dbus::MethodCall method_call( | 661 dbus::MethodCall method_call( |
654 cryptohome::kCryptohomeInterface, | 662 cryptohome::kCryptohomeInterface, |
655 cryptohome::kCryptohomeTpmAttestationGetKeyPayload); | 663 cryptohome::kCryptohomeTpmAttestationGetKeyPayload); |
656 dbus::MessageWriter writer(&method_call); | 664 dbus::MessageWriter writer(&method_call); |
657 bool is_user_specific = (key_type == attestation::KEY_USER); | 665 bool is_user_specific = (key_type == attestation::KEY_USER); |
658 writer.AppendBool(is_user_specific); | 666 writer.AppendBool(is_user_specific); |
659 writer.AppendString(user_id); | 667 writer.AppendString(cryptohome_id.id()); |
660 writer.AppendString(key_name); | 668 writer.AppendString(key_name); |
661 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 669 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
662 base::Bind(&CryptohomeClientImpl::OnDataMethod, | 670 base::Bind(&CryptohomeClientImpl::OnDataMethod, |
663 weak_ptr_factory_.GetWeakPtr(), | 671 weak_ptr_factory_.GetWeakPtr(), |
664 callback)); | 672 callback)); |
665 } | 673 } |
666 | 674 |
667 // CryptohomeClient override. | 675 // CryptohomeClient override. |
668 void TpmAttestationSetKeyPayload( | 676 void TpmAttestationSetKeyPayload( |
669 attestation::AttestationKeyType key_type, | 677 attestation::AttestationKeyType key_type, |
670 const std::string& user_id, | 678 const cryptohome::Identification& cryptohome_id, |
671 const std::string& key_name, | 679 const std::string& key_name, |
672 const std::string& payload, | 680 const std::string& payload, |
673 const BoolDBusMethodCallback& callback) override { | 681 const BoolDBusMethodCallback& callback) override { |
674 dbus::MethodCall method_call( | 682 dbus::MethodCall method_call( |
675 cryptohome::kCryptohomeInterface, | 683 cryptohome::kCryptohomeInterface, |
676 cryptohome::kCryptohomeTpmAttestationSetKeyPayload); | 684 cryptohome::kCryptohomeTpmAttestationSetKeyPayload); |
677 dbus::MessageWriter writer(&method_call); | 685 dbus::MessageWriter writer(&method_call); |
678 bool is_user_specific = (key_type == attestation::KEY_USER); | 686 bool is_user_specific = (key_type == attestation::KEY_USER); |
679 writer.AppendBool(is_user_specific); | 687 writer.AppendBool(is_user_specific); |
680 writer.AppendString(user_id); | 688 writer.AppendString(cryptohome_id.id()); |
681 writer.AppendString(key_name); | 689 writer.AppendString(key_name); |
682 writer.AppendArrayOfBytes(reinterpret_cast<const uint8_t*>(payload.data()), | 690 writer.AppendArrayOfBytes(reinterpret_cast<const uint8_t*>(payload.data()), |
683 payload.size()); | 691 payload.size()); |
684 CallBoolMethod(&method_call, callback); | 692 CallBoolMethod(&method_call, callback); |
685 } | 693 } |
686 | 694 |
687 // CryptohomeClient override. | 695 // CryptohomeClient override. |
688 void TpmAttestationDeleteKeys( | 696 void TpmAttestationDeleteKeys( |
689 attestation::AttestationKeyType key_type, | 697 attestation::AttestationKeyType key_type, |
690 const std::string& user_id, | 698 const cryptohome::Identification& cryptohome_id, |
691 const std::string& key_prefix, | 699 const std::string& key_prefix, |
692 const BoolDBusMethodCallback& callback) override { | 700 const BoolDBusMethodCallback& callback) override { |
693 dbus::MethodCall method_call( | 701 dbus::MethodCall method_call( |
694 cryptohome::kCryptohomeInterface, | 702 cryptohome::kCryptohomeInterface, |
695 cryptohome::kCryptohomeTpmAttestationDeleteKeys); | 703 cryptohome::kCryptohomeTpmAttestationDeleteKeys); |
696 dbus::MessageWriter writer(&method_call); | 704 dbus::MessageWriter writer(&method_call); |
697 bool is_user_specific = (key_type == attestation::KEY_USER); | 705 bool is_user_specific = (key_type == attestation::KEY_USER); |
698 writer.AppendBool(is_user_specific); | 706 writer.AppendBool(is_user_specific); |
699 writer.AppendString(user_id); | 707 writer.AppendString(cryptohome_id.id()); |
700 writer.AppendString(key_prefix); | 708 writer.AppendString(key_prefix); |
701 CallBoolMethod(&method_call, callback); | 709 CallBoolMethod(&method_call, callback); |
702 } | 710 } |
703 | 711 |
704 void GetKeyDataEx(const cryptohome::AccountIdentifier& id, | 712 void GetKeyDataEx(const cryptohome::Identification& id, |
705 const cryptohome::AuthorizationRequest& auth, | 713 const cryptohome::AuthorizationRequest& auth, |
706 const cryptohome::GetKeyDataRequest& request, | 714 const cryptohome::GetKeyDataRequest& request, |
707 const ProtobufMethodCallback& callback) override { | 715 const ProtobufMethodCallback& callback) override { |
| 716 cryptohome::AccountIdentifier id_proto; |
| 717 FillIdentificationProtobuf(id, &id_proto); |
| 718 |
708 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 719 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
709 cryptohome::kCryptohomeGetKeyDataEx); | 720 cryptohome::kCryptohomeGetKeyDataEx); |
710 dbus::MessageWriter writer(&method_call); | 721 dbus::MessageWriter writer(&method_call); |
711 writer.AppendProtoAsArrayOfBytes(id); | 722 writer.AppendProtoAsArrayOfBytes(id_proto); |
712 writer.AppendProtoAsArrayOfBytes(auth); | 723 writer.AppendProtoAsArrayOfBytes(auth); |
713 writer.AppendProtoAsArrayOfBytes(request); | 724 writer.AppendProtoAsArrayOfBytes(request); |
714 | 725 |
715 proxy_->CallMethod(&method_call, | 726 proxy_->CallMethod(&method_call, |
716 kTpmDBusTimeoutMs, | 727 kTpmDBusTimeoutMs, |
717 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, | 728 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, |
718 weak_ptr_factory_.GetWeakPtr(), | 729 weak_ptr_factory_.GetWeakPtr(), |
719 callback)); | 730 callback)); |
720 } | 731 } |
721 | 732 |
722 void CheckKeyEx(const cryptohome::AccountIdentifier& id, | 733 void CheckKeyEx(const cryptohome::Identification& id, |
723 const cryptohome::AuthorizationRequest& auth, | 734 const cryptohome::AuthorizationRequest& auth, |
724 const cryptohome::CheckKeyRequest& request, | 735 const cryptohome::CheckKeyRequest& request, |
725 const ProtobufMethodCallback& callback) override { | 736 const ProtobufMethodCallback& callback) override { |
726 const char* method_name = cryptohome::kCryptohomeCheckKeyEx; | 737 const char* method_name = cryptohome::kCryptohomeCheckKeyEx; |
727 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 738 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
728 method_name); | 739 method_name); |
729 | 740 |
| 741 cryptohome::AccountIdentifier id_proto; |
| 742 FillIdentificationProtobuf(id, &id_proto); |
| 743 |
730 dbus::MessageWriter writer(&method_call); | 744 dbus::MessageWriter writer(&method_call); |
731 writer.AppendProtoAsArrayOfBytes(id); | 745 writer.AppendProtoAsArrayOfBytes(id_proto); |
732 writer.AppendProtoAsArrayOfBytes(auth); | 746 writer.AppendProtoAsArrayOfBytes(auth); |
733 writer.AppendProtoAsArrayOfBytes(request); | 747 writer.AppendProtoAsArrayOfBytes(request); |
734 | 748 |
735 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 749 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
736 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, | 750 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, |
737 weak_ptr_factory_.GetWeakPtr(), | 751 weak_ptr_factory_.GetWeakPtr(), |
738 callback)); | 752 callback)); |
739 } | 753 } |
740 | 754 |
741 void MountEx(const cryptohome::AccountIdentifier& id, | 755 void MountEx(const cryptohome::Identification& id, |
742 const cryptohome::AuthorizationRequest& auth, | 756 const cryptohome::AuthorizationRequest& auth, |
743 const cryptohome::MountRequest& request, | 757 const cryptohome::MountRequest& request, |
744 const ProtobufMethodCallback& callback) override { | 758 const ProtobufMethodCallback& callback) override { |
745 const char* method_name = cryptohome::kCryptohomeMountEx; | 759 const char* method_name = cryptohome::kCryptohomeMountEx; |
746 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 760 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
747 method_name); | 761 method_name); |
748 | 762 |
| 763 cryptohome::AccountIdentifier id_proto; |
| 764 FillIdentificationProtobuf(id, &id_proto); |
| 765 |
749 dbus::MessageWriter writer(&method_call); | 766 dbus::MessageWriter writer(&method_call); |
750 writer.AppendProtoAsArrayOfBytes(id); | 767 writer.AppendProtoAsArrayOfBytes(id_proto); |
751 writer.AppendProtoAsArrayOfBytes(auth); | 768 writer.AppendProtoAsArrayOfBytes(auth); |
752 writer.AppendProtoAsArrayOfBytes(request); | 769 writer.AppendProtoAsArrayOfBytes(request); |
753 | 770 |
754 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , | 771 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs , |
755 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, | 772 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, |
756 weak_ptr_factory_.GetWeakPtr(), | 773 weak_ptr_factory_.GetWeakPtr(), |
757 callback)); | 774 callback)); |
758 } | 775 } |
759 | 776 |
760 void AddKeyEx(const cryptohome::AccountIdentifier& id, | 777 void AddKeyEx(const cryptohome::Identification& id, |
761 const cryptohome::AuthorizationRequest& auth, | 778 const cryptohome::AuthorizationRequest& auth, |
762 const cryptohome::AddKeyRequest& request, | 779 const cryptohome::AddKeyRequest& request, |
763 const ProtobufMethodCallback& callback) override { | 780 const ProtobufMethodCallback& callback) override { |
764 const char* method_name = cryptohome::kCryptohomeAddKeyEx; | 781 const char* method_name = cryptohome::kCryptohomeAddKeyEx; |
765 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 782 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
766 method_name); | 783 method_name); |
767 | 784 |
| 785 cryptohome::AccountIdentifier id_proto; |
| 786 FillIdentificationProtobuf(id, &id_proto); |
| 787 |
768 dbus::MessageWriter writer(&method_call); | 788 dbus::MessageWriter writer(&method_call); |
769 writer.AppendProtoAsArrayOfBytes(id); | 789 writer.AppendProtoAsArrayOfBytes(id_proto); |
770 writer.AppendProtoAsArrayOfBytes(auth); | 790 writer.AppendProtoAsArrayOfBytes(auth); |
771 writer.AppendProtoAsArrayOfBytes(request); | 791 writer.AppendProtoAsArrayOfBytes(request); |
772 | 792 |
773 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs, | 793 proxy_->CallMethod(&method_call, kTpmDBusTimeoutMs, |
774 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, | 794 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, |
775 weak_ptr_factory_.GetWeakPtr(), | 795 weak_ptr_factory_.GetWeakPtr(), |
776 callback)); | 796 callback)); |
777 } | 797 } |
778 | 798 |
779 void UpdateKeyEx(const cryptohome::AccountIdentifier& id, | 799 void UpdateKeyEx(const cryptohome::Identification& id, |
780 const cryptohome::AuthorizationRequest& auth, | 800 const cryptohome::AuthorizationRequest& auth, |
781 const cryptohome::UpdateKeyRequest& request, | 801 const cryptohome::UpdateKeyRequest& request, |
782 const ProtobufMethodCallback& callback) override { | 802 const ProtobufMethodCallback& callback) override { |
783 const char* method_name = cryptohome::kCryptohomeUpdateKeyEx; | 803 const char* method_name = cryptohome::kCryptohomeUpdateKeyEx; |
784 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, | 804 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, |
785 method_name); | 805 method_name); |
786 | 806 |
| 807 cryptohome::AccountIdentifier id_proto; |
| 808 FillIdentificationProtobuf(id, &id_proto); |
| 809 |
787 dbus::MessageWriter writer(&method_call); | 810 dbus::MessageWriter writer(&method_call); |
788 writer.AppendProtoAsArrayOfBytes(id); | 811 writer.AppendProtoAsArrayOfBytes(id_proto); |
789 writer.AppendProtoAsArrayOfBytes(auth); | 812 writer.AppendProtoAsArrayOfBytes(auth); |
790 writer.AppendProtoAsArrayOfBytes(request); | 813 writer.AppendProtoAsArrayOfBytes(request); |
791 | 814 |
792 proxy_->CallMethod(&method_call, | 815 proxy_->CallMethod(&method_call, |
793 kTpmDBusTimeoutMs , | 816 kTpmDBusTimeoutMs , |
794 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, | 817 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, |
795 weak_ptr_factory_.GetWeakPtr(), | 818 weak_ptr_factory_.GetWeakPtr(), |
796 callback)); | 819 callback)); |
797 } | 820 } |
798 | 821 |
799 void RemoveKeyEx(const cryptohome::AccountIdentifier& id, | 822 void RemoveKeyEx(const cryptohome::Identification& id, |
800 const cryptohome::AuthorizationRequest& auth, | 823 const cryptohome::AuthorizationRequest& auth, |
801 const cryptohome::RemoveKeyRequest& request, | 824 const cryptohome::RemoveKeyRequest& request, |
802 const ProtobufMethodCallback& callback) override { | 825 const ProtobufMethodCallback& callback) override { |
803 const char* method_name = cryptohome::kCryptohomeRemoveKeyEx; | 826 const char* method_name = cryptohome::kCryptohomeRemoveKeyEx; |
804 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, method_name); | 827 dbus::MethodCall method_call(cryptohome::kCryptohomeInterface, method_name); |
805 | 828 |
| 829 cryptohome::AccountIdentifier id_proto; |
| 830 FillIdentificationProtobuf(id, &id_proto); |
| 831 |
806 dbus::MessageWriter writer(&method_call); | 832 dbus::MessageWriter writer(&method_call); |
807 writer.AppendProtoAsArrayOfBytes(id); | 833 writer.AppendProtoAsArrayOfBytes(id_proto); |
808 writer.AppendProtoAsArrayOfBytes(auth); | 834 writer.AppendProtoAsArrayOfBytes(auth); |
809 writer.AppendProtoAsArrayOfBytes(request); | 835 writer.AppendProtoAsArrayOfBytes(request); |
810 | 836 |
811 proxy_->CallMethod(&method_call, | 837 proxy_->CallMethod(&method_call, |
812 kTpmDBusTimeoutMs , | 838 kTpmDBusTimeoutMs , |
813 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, | 839 base::Bind(&CryptohomeClientImpl::OnBaseReplyMethod, |
814 weak_ptr_factory_.GetWeakPtr(), | 840 weak_ptr_factory_.GetWeakPtr(), |
815 callback)); | 841 callback)); |
816 } | 842 } |
817 | 843 |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1132 | 1158 |
1133 CryptohomeClient::~CryptohomeClient() {} | 1159 CryptohomeClient::~CryptohomeClient() {} |
1134 | 1160 |
1135 // static | 1161 // static |
1136 CryptohomeClient* CryptohomeClient::Create() { | 1162 CryptohomeClient* CryptohomeClient::Create() { |
1137 return new CryptohomeClientImpl(); | 1163 return new CryptohomeClientImpl(); |
1138 } | 1164 } |
1139 | 1165 |
1140 // static | 1166 // static |
1141 std::string CryptohomeClient::GetStubSanitizedUsername( | 1167 std::string CryptohomeClient::GetStubSanitizedUsername( |
1142 const std::string& username) { | 1168 const cryptohome::Identification& cryptohome_id) { |
1143 return username + kUserIdStubHashSuffix; | 1169 return cryptohome_id.id() + kUserIdStubHashSuffix; |
1144 } | 1170 } |
1145 | 1171 |
1146 } // namespace chromeos | 1172 } // namespace chromeos |
OLD | NEW |