Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(249)

Side by Side Diff: chromeos_login.cc

Issue 4132006: [cros] Add *Safe methods to the ownership API (Closed) Base URL: http://git.chromium.org/git/cros.git
Patch Set: comment out NOTREACHED Created 10 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 1 // Copyright (c) 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 #include "chromeos_login.h" // NOLINT 5 #include "chromeos_login.h" // NOLINT
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include <base/basictypes.h> 9 #include <base/basictypes.h>
10 #include <base/logging.h> 10 #include <base/logging.h>
11 #include <base/string_util.h> 11 #include <base/string_util.h>
12 #include <dbus/dbus-glib-lowlevel.h> 12 #include <dbus/dbus-glib-lowlevel.h>
13 #include <chromeos/dbus/dbus.h> 13 #include <chromeos/dbus/dbus.h>
14 #include <chromeos/dbus/service_constants.h> 14 #include <chromeos/dbus/service_constants.h>
15 #include <chromeos/glib/object.h> 15 #include <chromeos/glib/object.h>
16 #include <chromeos/string.h>
16 17
18 #include "chromeos_login_helpers.h" // NOLINT
17 #include "marshal.glibmarshal.h" // NOLINT 19 #include "marshal.glibmarshal.h" // NOLINT
18 20
19 namespace chromeos { // NOLINT 21 namespace chromeos { // NOLINT
20 22
21 23 // TODO(cmasone): do a bigger refactor, get rid of this copy-paste macro.
22 #define SCOPED_SAFE_MESSAGE(e) (e->message ? e->message : "unknown error") 24 #define SCOPED_SAFE_MESSAGE(e) (e->message ? e->message : "unknown error")
23 25
24 namespace {
25 chromeos::dbus::Proxy CreateProxy() {
26 dbus::BusConnection bus = dbus::GetSystemBusConnection();
27 return chromeos::dbus::Proxy(bus,
28 login_manager::kSessionManagerServiceName,
29 login_manager::kSessionManagerServicePath,
30 login_manager::kSessionManagerInterface);
31 }
32 } // Anonymous namespace.
33
34 class OpaqueSessionConnection { 26 class OpaqueSessionConnection {
35 public: 27 public:
36 OpaqueSessionConnection(const SessionMonitor& monitor, void* object) 28 OpaqueSessionConnection(const SessionMonitor& monitor, void* object)
37 : monitor_(monitor), 29 : monitor_(monitor),
38 object_(object) { 30 object_(object) {
39 } 31 }
40 32
41 virtual ~OpaqueSessionConnection() {} 33 virtual ~OpaqueSessionConnection() {}
42 34
43 void Notify(OwnershipEvent event) { 35 void Notify(OwnershipEvent event) {
44 monitor_(object_, event); 36 monitor_(object_, event);
45 } 37 }
46 38
47 private: 39 private:
48 SessionMonitor monitor_; 40 SessionMonitor monitor_;
49 void* object_; 41 void* object_;
50 42
51 DISALLOW_COPY_AND_ASSIGN(OpaqueSessionConnection); 43 DISALLOW_COPY_AND_ASSIGN(OpaqueSessionConnection);
52 }; 44 };
53 45
54 extern "C" 46 extern "C"
55 bool ChromeOSCheckWhitelist(const char* email, 47 bool ChromeOSCheckWhitelist(const char* email,
56 std::vector<uint8>* signature) { 48 std::vector<uint8>* signature) {
49 // TODO(cmasone): Enable NOTREACHED once Chrome is migrated.
50 // NOTREACHED() << "ChromeOSCheckWhitelist is deprecated";
57 DCHECK(signature); 51 DCHECK(signature);
58 chromeos::dbus::Proxy proxy = CreateProxy();
59 chromeos::glib::ScopedError error;
60
61 GArray* sig; 52 GArray* sig;
62 53 if (!ChromeOSLoginHelpers::CheckWhitelistHelper(email, &sig))
63 if (!::dbus_g_proxy_call(proxy.gproxy(),
64 login_manager::kSessionManagerCheckWhitelist,
65 &Resetter(&error).lvalue(),
66 G_TYPE_STRING, email,
67 G_TYPE_INVALID,
68 DBUS_TYPE_G_UCHAR_ARRAY, &sig,
69 G_TYPE_INVALID)) {
70 LOG(WARNING) << login_manager::kSessionManagerCheckWhitelist << " failed: "
71 << SCOPED_SAFE_MESSAGE(error);
72 return false; 54 return false;
73 }
74 bool rv = false; 55 bool rv = false;
75 signature->resize(sig->len); 56 signature->resize(sig->len);
76 if (signature->size() == sig->len) { 57 if (signature->size() == sig->len) {
77 memcpy(&(signature->at(0)), static_cast<const void*>(sig->data), sig->len); 58 memcpy(&(signature->at(0)), static_cast<const void*>(sig->data), sig->len);
78 rv = true; 59 rv = true;
79 } 60 }
80 g_array_free(sig, false); 61 g_array_free(sig, false);
81 return rv; 62 return rv;
82 } 63 }
83 64
84 extern "C" 65 extern "C"
66 bool ChromeOSCheckWhitelistSafe(const char* email,
67 CryptoBlob** OUT_signature) {
68 DCHECK(OUT_signature);
69 GArray* sig;
70 if (!ChromeOSLoginHelpers::CheckWhitelistHelper(email, &sig))
71 return false;
72 *OUT_signature = ChromeOSLoginHelpers::CreateCryptoBlob(sig);
73 g_array_free(sig, true);
74 return true;
75 }
76
77 extern "C"
85 bool ChromeOSEmitLoginPromptReady() { 78 bool ChromeOSEmitLoginPromptReady() {
86 chromeos::dbus::Proxy proxy = CreateProxy(); 79 chromeos::dbus::Proxy proxy = ChromeOSLoginHelpers::CreateProxy();
87 gboolean done = false; 80 gboolean done = false;
88 chromeos::glib::ScopedError error; 81 chromeos::glib::ScopedError error;
89 82
90 if (!::dbus_g_proxy_call(proxy.gproxy(), 83 if (!::dbus_g_proxy_call(proxy.gproxy(),
91 login_manager::kSessionManagerEmitLoginPromptReady, 84 login_manager::kSessionManagerEmitLoginPromptReady,
92 &Resetter(&error).lvalue(), 85 &Resetter(&error).lvalue(),
93 G_TYPE_INVALID, 86 G_TYPE_INVALID,
94 G_TYPE_BOOLEAN, &done, 87 G_TYPE_BOOLEAN, &done,
95 G_TYPE_INVALID)) { 88 G_TYPE_INVALID)) {
96 89
97 LOG(WARNING) << login_manager::kSessionManagerEmitLoginPromptReady 90 LOG(WARNING) << login_manager::kSessionManagerEmitLoginPromptReady
98 << " failed: " << SCOPED_SAFE_MESSAGE(error); 91 << " failed: " << SCOPED_SAFE_MESSAGE(error);
99 } 92 }
100 return done; 93 return done;
101 } 94 }
102 95
103 extern "C" 96 extern "C"
104 bool ChromeOSEnumerateWhitelisted(std::vector<std::string>* out_whitelisted) { 97 bool ChromeOSEnumerateWhitelisted(std::vector<std::string>* OUT_whitelisted) {
105 chromeos::dbus::Proxy proxy = CreateProxy(); 98 // TODO(cmasone): Enable NOTREACHED once Chrome is migrated.
99 // NOTREACHED() << "ChromeOSEnumerateWhitelisted is deprecated";
100 DCHECK(OUT_whitelisted);
106 gchar** whitelisted = NULL; 101 gchar** whitelisted = NULL;
107 chromeos::glib::ScopedError error; 102 if (!ChromeOSLoginHelpers::EnumerateWhitelistedHelper(&whitelisted))
108
109 if (!::dbus_g_proxy_call(proxy.gproxy(),
110 login_manager::kSessionManagerEnumerateWhitelisted,
111 &Resetter(&error).lvalue(),
112 G_TYPE_INVALID,
113 G_TYPE_STRV, &whitelisted,
114 G_TYPE_INVALID)) {
115
116 LOG(WARNING) << login_manager::kSessionManagerEnumerateWhitelisted
117 << " failed: " << SCOPED_SAFE_MESSAGE(error);
118 return false; 103 return false;
119 }
120 for (int i = 0; whitelisted[i] != NULL; ++i) 104 for (int i = 0; whitelisted[i] != NULL; ++i)
121 out_whitelisted->push_back(std::string(whitelisted[i])); 105 OUT_whitelisted->push_back(std::string(whitelisted[i]));
122 106
123 g_strfreev(whitelisted); 107 g_strfreev(whitelisted);
124 return true; 108 return true;
125 } 109 }
126 110
127 extern "C" 111 extern "C"
112 bool ChromeOSEnumerateWhitelistedSafe(UserList** OUT_whitelisted) {
113 DCHECK(OUT_whitelisted);
114 gchar** whitelisted = NULL;
115 if (!ChromeOSLoginHelpers::EnumerateWhitelistedHelper(&whitelisted))
116 return false;
117 *OUT_whitelisted = ChromeOSLoginHelpers::CreateUserList(whitelisted);
118 g_strfreev(whitelisted);
119 return true;
120 }
121
122 extern "C"
123 CryptoBlob* ChromeOSCreateCryptoBlob(const uint8* in, const int in_len) {
124 GArray* ary = ChromeOSLoginHelpers::CreateGArrayFromBytes(in, in_len);
125 CryptoBlob* blob = ChromeOSLoginHelpers::CreateCryptoBlob(ary);
126 g_array_free(ary, TRUE);
127 return blob;
128 }
129
130 extern "C"
131 Property* ChromeOSCreateProperty(const char* name, const char* value,
132 const uint8* sig, const int sig_len) {
133 GArray* ary = ChromeOSLoginHelpers::CreateGArrayFromBytes(sig, sig_len);
134 Property* prop = ChromeOSLoginHelpers::CreateProperty(name, value, ary);
135 g_array_free(ary, TRUE);
136 return prop;
137 }
138
139 extern "C"
140 UserList* ChromeOSCreateUserList(char** users) {
141 return ChromeOSLoginHelpers::CreateUserList(users);
142 }
143
144 // These Free* methods all use delete (as opposed to delete []) on purpose,
145 // following the pattern established by code that uses NewStringCopy.
146 extern "C"
147 void ChromeOSFreeCryptoBlob(CryptoBlob* blob) {
148 ChromeOSLoginHelpers::FreeCryptoBlob(blob);
149 }
150
151 extern "C"
152 void ChromeOSFreeProperty(Property* property) {
153 ChromeOSLoginHelpers::FreeProperty(property);
154 }
155
156 extern "C"
157 void ChromeOSFreeUserList(UserList* userlist) {
158 ChromeOSLoginHelpers::FreeUserList(userlist);
159 }
160
161 extern "C"
162 bool ChromeOSRestartJob(int pid, const char* command_line) {
163 chromeos::dbus::Proxy proxy = ChromeOSLoginHelpers::CreateProxy();
164 gboolean done = false;
165 chromeos::glib::ScopedError error;
166
167 if (!::dbus_g_proxy_call(proxy.gproxy(),
168 login_manager::kSessionManagerRestartJob,
169 &Resetter(&error).lvalue(),
170 G_TYPE_INT, pid,
171 G_TYPE_STRING, command_line,
172 G_TYPE_INVALID,
173 G_TYPE_BOOLEAN, &done,
174 G_TYPE_INVALID)) {
175 LOG(WARNING) << login_manager::kSessionManagerRestartJob << " failed: "
176 << SCOPED_SAFE_MESSAGE(error);
177 }
178 return done;
179 }
180
181 extern "C"
128 bool ChromeOSRetrieveProperty(const char* name, 182 bool ChromeOSRetrieveProperty(const char* name,
129 std::string* out_value, 183 std::string* out_value,
130 std::vector<uint8>* signature) { 184 std::vector<uint8>* signature) {
185 // TODO(cmasone): Enable NOTREACHED once Chrome is migrated.
186 // NOTREACHED() << "ChromeOSRetrieveProperty is deprecated";
131 DCHECK(signature); 187 DCHECK(signature);
132 chromeos::dbus::Proxy proxy = CreateProxy(); 188 DCHECK(out_value);
133 chromeos::glib::ScopedError error;
134
135 GArray* sig; 189 GArray* sig;
136 gchar* value = NULL; 190 gchar* value = NULL;
137 191 if (!ChromeOSLoginHelpers::RetrievePropertyHelper(name, &value, &sig))
138 if (!::dbus_g_proxy_call(proxy.gproxy(),
139 login_manager::kSessionManagerRetrieveProperty,
140 &Resetter(&error).lvalue(),
141 G_TYPE_STRING, name,
142 G_TYPE_INVALID,
143 G_TYPE_STRING, &value,
144 DBUS_TYPE_G_UCHAR_ARRAY, &sig,
145 G_TYPE_INVALID)) {
146 LOG(WARNING) << login_manager::kSessionManagerRetrieveProperty
147 << " failed: " << SCOPED_SAFE_MESSAGE(error);
148 return false; 192 return false;
149 }
150 bool rv = false; 193 bool rv = false;
151 signature->resize(sig->len); 194 signature->resize(sig->len);
152 if (signature->size() == sig->len) { 195 if (signature->size() == sig->len) {
153 memcpy(&(signature->at(0)), static_cast<const void*>(sig->data), sig->len); 196 memcpy(&(signature->at(0)), static_cast<const void*>(sig->data), sig->len);
154 rv = true; 197 rv = true;
155 } 198 }
156 g_array_free(sig, false); 199 g_array_free(sig, false);
157 out_value->assign(value); 200 out_value->assign(value);
158 g_free(value); 201 g_free(value);
159 return rv; 202 return rv;
160 } 203 }
161 204
162 extern "C" 205 extern "C"
206 bool ChromeOSRetrievePropertySafe(const char* name, Property** OUT_property) {
207 DCHECK(OUT_property);
208 GArray* sig;
209 gchar* value = NULL;
210 if (!ChromeOSLoginHelpers::RetrievePropertyHelper(name, &value, &sig))
211 return false;
212 *OUT_property = ChromeOSLoginHelpers::CreateProperty(name, value, sig);
213 return true;
214 }
215
216 extern "C"
163 bool ChromeOSSetOwnerKey(const std::vector<uint8>& public_key_der) { 217 bool ChromeOSSetOwnerKey(const std::vector<uint8>& public_key_der) {
164 chromeos::dbus::Proxy proxy = CreateProxy(); 218 // TODO(cmasone): Enable NOTREACHED once Chrome is migrated.
165 chromeos::glib::ScopedError error; 219 // NOTREACHED() << "ChromeOSSetOwnerKey is deprecated";
166 220 GArray* key_der =
167 GArray* key_der = g_array_sized_new(FALSE, FALSE, 1, public_key_der.size()); 221 ChromeOSLoginHelpers::CreateGArrayFromBytes(&public_key_der[0],
168 g_array_append_vals(key_der, &public_key_der[0], public_key_der.size()); 222 public_key_der.size());
169 223 bool rv = ChromeOSLoginHelpers::SetOwnerKeyHelper(key_der);
170 bool rv = true;
171 if (!::dbus_g_proxy_call(proxy.gproxy(),
172 login_manager::kSessionManagerSetOwnerKey,
173 &Resetter(&error).lvalue(),
174 DBUS_TYPE_G_UCHAR_ARRAY, key_der,
175 G_TYPE_INVALID,
176 G_TYPE_INVALID)) {
177 LOG(WARNING) << login_manager::kSessionManagerSetOwnerKey << " failed: "
178 << SCOPED_SAFE_MESSAGE(error);
179 rv = false;
180 }
181 g_array_free(key_der, TRUE); 224 g_array_free(key_der, TRUE);
182 return rv; 225 return rv;
183 } 226 }
227
228 extern "C"
229 bool ChromeOSSetOwnerKeySafe(const CryptoBlob* public_key_der) {
230 GArray* key_der =
231 ChromeOSLoginHelpers::CreateGArrayFromBytes(public_key_der->data,
232 public_key_der->length);
233 bool rv = ChromeOSLoginHelpers::SetOwnerKeyHelper(key_der);
234 g_array_free(key_der, TRUE);
235 return rv;
236 }
184 237
185 extern "C" 238 extern "C"
186 bool ChromeOSStartSession(const char* user_email, 239 bool ChromeOSStartSession(const char* user_email,
187 const char* unique_id /* unused */) { 240 const char* unique_id /* unused */) {
188 chromeos::dbus::Proxy proxy = CreateProxy(); 241 chromeos::dbus::Proxy proxy = ChromeOSLoginHelpers::CreateProxy();
189 gboolean done = false; 242 gboolean done = false;
190 chromeos::glib::ScopedError error; 243 chromeos::glib::ScopedError error;
191 244
192 if (!::dbus_g_proxy_call(proxy.gproxy(), 245 if (!::dbus_g_proxy_call(proxy.gproxy(),
193 login_manager::kSessionManagerStartSession, 246 login_manager::kSessionManagerStartSession,
194 &Resetter(&error).lvalue(), 247 &Resetter(&error).lvalue(),
195 G_TYPE_STRING, user_email, 248 G_TYPE_STRING, user_email,
196 G_TYPE_STRING, unique_id, 249 G_TYPE_STRING, unique_id,
197 G_TYPE_INVALID, 250 G_TYPE_INVALID,
198 G_TYPE_BOOLEAN, &done, 251 G_TYPE_BOOLEAN, &done,
199 G_TYPE_INVALID)) { 252 G_TYPE_INVALID)) {
200 LOG(WARNING) << login_manager::kSessionManagerStartSession << " failed: " 253 LOG(WARNING) << login_manager::kSessionManagerStartSession << " failed: "
201 << SCOPED_SAFE_MESSAGE(error); 254 << SCOPED_SAFE_MESSAGE(error);
202 } 255 }
203 return done; 256 return done;
204 } 257 }
205 258
206 extern "C" 259 extern "C"
207 bool ChromeOSStopSession(const char* unique_id /* unused */) { 260 bool ChromeOSStopSession(const char* unique_id /* unused */) {
208 chromeos::dbus::Proxy proxy = CreateProxy(); 261 chromeos::dbus::Proxy proxy = ChromeOSLoginHelpers::CreateProxy();
209 // TODO(cmasone): clear up the now-defunct variables here. 262 // TODO(cmasone): clear up the now-defunct variables here.
210 gboolean unused = false; 263 gboolean unused = false;
211 ::dbus_g_proxy_call_no_reply(proxy.gproxy(), 264 ::dbus_g_proxy_call_no_reply(proxy.gproxy(),
212 login_manager::kSessionManagerStopSession, 265 login_manager::kSessionManagerStopSession,
213 G_TYPE_STRING, unique_id, 266 G_TYPE_STRING, unique_id,
214 G_TYPE_INVALID, 267 G_TYPE_INVALID,
215 G_TYPE_BOOLEAN, &unused, 268 G_TYPE_BOOLEAN, &unused,
216 G_TYPE_INVALID); 269 G_TYPE_INVALID);
217 return true; 270 return true;
218 } 271 }
219 272
220 extern "C" 273 extern "C"
221 bool ChromeOSRestartJob(int pid, const char* command_line) {
222 chromeos::dbus::Proxy proxy = CreateProxy();
223 gboolean done = false;
224 chromeos::glib::ScopedError error;
225
226 if (!::dbus_g_proxy_call(proxy.gproxy(),
227 login_manager::kSessionManagerRestartJob,
228 &Resetter(&error).lvalue(),
229 G_TYPE_INT, pid,
230 G_TYPE_STRING, command_line,
231 G_TYPE_INVALID,
232 G_TYPE_BOOLEAN, &done,
233 G_TYPE_INVALID)) {
234 LOG(WARNING) << login_manager::kSessionManagerRestartJob << " failed: "
235 << SCOPED_SAFE_MESSAGE(error);
236 }
237 return done;
238 }
239
240 extern "C"
241 bool ChromeOSStoreProperty(const char* name, 274 bool ChromeOSStoreProperty(const char* name,
242 const char* value, 275 const char* value,
243 const std::vector<uint8>& signature) { 276 const std::vector<uint8>& signature) {
244 chromeos::dbus::Proxy proxy = CreateProxy(); 277 // TODO(cmasone): Enable NOTREACHED once Chrome is migrated.
245 chromeos::glib::ScopedError error; 278 // NOTREACHED() << "ChromeOSStoreProperty is deprecated!";
246 279 GArray* sig = ChromeOSLoginHelpers::CreateGArrayFromBytes(&signature[0],
247 GArray* sig = g_array_sized_new(FALSE, FALSE, 1, signature.size()); 280 signature.size());
248 g_array_append_vals(sig, &signature[0], signature.size()); 281 bool rv = ChromeOSLoginHelpers::StorePropertyHelper(name, value, sig);
249
250 bool rv = true;
251 if (!::dbus_g_proxy_call(proxy.gproxy(),
252 login_manager::kSessionManagerStoreProperty,
253 &Resetter(&error).lvalue(),
254 G_TYPE_STRING, name,
255 G_TYPE_STRING, value,
256 DBUS_TYPE_G_UCHAR_ARRAY, sig,
257 G_TYPE_INVALID,
258 G_TYPE_INVALID)) {
259 LOG(WARNING) << login_manager::kSessionManagerStoreProperty << " failed: "
260 << SCOPED_SAFE_MESSAGE(error);
261 rv = false;
262 }
263 g_array_free(sig, TRUE); 282 g_array_free(sig, TRUE);
264 return rv; 283 return rv;
265 } 284 }
266 285
267 namespace { 286 extern "C"
268 bool WhitelistOpHelper(const char* op, 287 bool ChromeOSStorePropertySafe(const Property* prop) {
269 const char* email, 288 GArray* sig =
270 const std::vector<uint8>& signature) { 289 ChromeOSLoginHelpers::CreateGArrayFromBytes(prop->signature->data,
271 chromeos::dbus::Proxy proxy = CreateProxy(); 290 prop->signature->length);
272 chromeos::glib::ScopedError error; 291 bool rv = ChromeOSLoginHelpers::StorePropertyHelper(prop->name,
273 292 prop->value,
274 GArray* sig = g_array_sized_new(FALSE, FALSE, 1, signature.size()); 293 sig);
275 g_array_append_vals(sig, &signature[0], signature.size());
276
277 bool rv = true;
278 if (!::dbus_g_proxy_call(proxy.gproxy(),
279 op,
280 &Resetter(&error).lvalue(),
281 G_TYPE_STRING, email,
282 DBUS_TYPE_G_UCHAR_ARRAY, sig,
283 G_TYPE_INVALID,
284 G_TYPE_INVALID)) {
285 LOG(WARNING) << op << " failed: " << SCOPED_SAFE_MESSAGE(error);
286 rv = false;
287 }
288 g_array_free(sig, TRUE); 294 g_array_free(sig, TRUE);
289 return rv; 295 return rv;
290 } 296 }
291 } // anonymous namespace
292 297
293 extern "C" 298 extern "C"
294 bool ChromeOSUnwhitelist(const char* email, 299 bool ChromeOSUnwhitelist(const char* email,
295 const std::vector<uint8>& signature) { 300 const std::vector<uint8>& signature) {
296 return WhitelistOpHelper(login_manager::kSessionManagerUnwhitelist, 301 // TODO(cmasone): Enable NOTREACHED once Chrome is migrated.
297 email, 302 // NOTREACHED() << "ChromeOSUnwhitelist is deprecated!";
298 signature); 303 return ChromeOSLoginHelpers::WhitelistOpHelper(
304 login_manager::kSessionManagerUnwhitelist,
305 email,
306 signature);
307 }
308
309 extern "C"
310 bool ChromeOSUnwhitelistSafe(const char* email, const CryptoBlob* signature) {
311 std::vector<uint8> sig(signature->data, signature->data + signature->length);
312 return ChromeOSLoginHelpers::WhitelistOpHelper(
313 login_manager::kSessionManagerUnwhitelist,
314 email,
315 sig);
299 } 316 }
300 317
301 extern "C" 318 extern "C"
302 bool ChromeOSWhitelist(const char* email, 319 bool ChromeOSWhitelist(const char* email,
303 const std::vector<uint8>& signature) { 320 const std::vector<uint8>& signature) {
304 return WhitelistOpHelper(login_manager::kSessionManagerWhitelist, 321 // TODO(cmasone): Enable NOTREACHED once Chrome is migrated.
305 email, 322 // NOTREACHED() << "ChromeOSWhitelist is deprecated!";
zel 2010/10/28 20:02:46 you should just nuke these calls once chrome side
Chris Masone 2010/10/28 20:09:08 I figured we'd want to leave at least a bit of a w
306 signature); 323 return ChromeOSLoginHelpers::WhitelistOpHelper(
324 login_manager::kSessionManagerWhitelist,
325 email,
326 signature);
327 }
328
329 extern "C"
330 bool ChromeOSWhitelistSafe(const char* email, const CryptoBlob* signature) {
331 std::vector<uint8> sig(signature->data, signature->data + signature->length);
332 return ChromeOSLoginHelpers::WhitelistOpHelper(
333 login_manager::kSessionManagerWhitelist,
334 email,
335 sig);
307 } 336 }
308 337
309 namespace { 338 namespace {
310 #define SAFE_MESSAGE(e) (e.message ? e.message : "unknown error") 339 #define SAFE_MESSAGE(e) (e.message ? e.message : "unknown error")
311 340
312 bool IsSuccess(DBusMessage* message) { 341 bool IsSuccess(DBusMessage* message) {
313 char* out_string = NULL; 342 char* out_string = NULL;
314 DBusError error; 343 DBusError error;
315 dbus_error_init (&error); 344 dbus_error_init (&error);
316 bool unpack = dbus_message_get_args(message, 345 bool unpack = dbus_message_get_args(message,
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 extern "C" 410 extern "C"
382 void ChromeOSDisconnectSession(SessionConnection connection) { 411 void ChromeOSDisconnectSession(SessionConnection connection) {
383 DBusConnection *bus = ::dbus_g_connection_get_connection( 412 DBusConnection *bus = ::dbus_g_connection_get_connection(
384 dbus::GetSystemBusConnection().g_connection()); 413 dbus::GetSystemBusConnection().g_connection());
385 ::dbus_connection_remove_filter(bus, &Filter, connection); 414 ::dbus_connection_remove_filter(bus, &Filter, connection);
386 delete connection; 415 delete connection;
387 LOG(INFO) << "Disconnected from session manager"; 416 LOG(INFO) << "Disconnected from session manager";
388 } 417 }
389 418
390 } // namespace chromeos 419 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos_login.h ('k') | chromeos_login_helpers.h » ('j') | chromeos_login_helpers.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698