| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2009 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 #ifndef CRYPTOHOME_SERVICE_H_ | 4 #ifndef CRYPTOHOME_SERVICE_H_ |
| 5 #define CRYPTOHOME_SERVICE_H_ | 5 #define CRYPTOHOME_SERVICE_H_ |
| 6 | 6 |
| 7 #include <dbus/dbus-glib.h> | 7 #include <dbus/dbus-glib.h> |
| 8 #include <glib-object.h> | 8 #include <glib-object.h> |
| 9 | 9 |
| 10 #include <base/logging.h> | 10 #include <base/logging.h> |
| 11 #include <chromeos/dbus/abstract_dbus_service.h> | 11 #include <chromeos/dbus/abstract_dbus_service.h> |
| 12 #include <chromeos/dbus/dbus.h> | 12 #include <chromeos/dbus/dbus.h> |
| 13 #include <chromeos/dbus/service_constants.h> | 13 #include <chromeos/dbus/service_constants.h> |
| 14 #include <chromeos/glib/object.h> | 14 #include <chromeos/glib/object.h> |
| 15 | 15 |
| 16 #include "cryptohome/authenticator.h" | 16 #include "cryptohome/mount.h" |
| 17 | 17 |
| 18 namespace cryptohome { | 18 namespace cryptohome { |
| 19 namespace gobject { | 19 namespace gobject { |
| 20 struct Cryptohome; | 20 struct Cryptohome; |
| 21 } // namespace gobject | 21 } // namespace gobject |
| 22 | 22 |
| 23 // Service | 23 // Service |
| 24 // Provides a wrapper for exporting CryptohomeInterface to | 24 // Provides a wrapper for exporting CryptohomeInterface to |
| 25 // D-Bus and entering the glib run loop. | 25 // D-Bus and entering the glib run loop. |
| 26 // | 26 // |
| (...skipping 16 matching lines...) Expand all Loading... |
| 43 // proper service information. | 43 // proper service information. |
| 44 virtual const char *service_name() const | 44 virtual const char *service_name() const |
| 45 { return kCryptohomeServiceName; } | 45 { return kCryptohomeServiceName; } |
| 46 virtual const char *service_path() const | 46 virtual const char *service_path() const |
| 47 { return kCryptohomeServicePath; } | 47 { return kCryptohomeServicePath; } |
| 48 virtual const char *service_interface() const | 48 virtual const char *service_interface() const |
| 49 { return kCryptohomeInterface; } | 49 { return kCryptohomeInterface; } |
| 50 virtual GObject* service_object() const { | 50 virtual GObject* service_object() const { |
| 51 return G_OBJECT(cryptohome_); | 51 return G_OBJECT(cryptohome_); |
| 52 } | 52 } |
| 53 // Command-related accesors | 53 virtual void set_mount(Mount* mount) |
| 54 virtual const char *mount_command() const | 54 { mount_ = mount; } |
| 55 { return mount_command_; } | |
| 56 virtual void set_mount_command(const char *cmd) { mount_command_ = cmd; } | |
| 57 virtual const char *unmount_command() const | |
| 58 { return unmount_command_; } | |
| 59 virtual void set_unmount_command(const char *cmd) { unmount_command_ = cmd; } | |
| 60 virtual const char *is_mounted_command() const | |
| 61 { return is_mounted_command_; } | |
| 62 virtual void set_is_mounted_command(const char *cmd) | |
| 63 { is_mounted_command_ = cmd; } | |
| 64 virtual void set_authenticator(Authenticator *auth) { auth_.reset(auth); } | |
| 65 | |
| 66 static const char *kDefaultMountCommand; | |
| 67 static const char *kDefaultUnmountCommand; | |
| 68 static const char *kDefaultIsMountedCommand; | |
| 69 | 55 |
| 70 // Service implementation functions as wrapped in interface.cc | 56 // Service implementation functions as wrapped in interface.cc |
| 71 // and defined in cryptohome.xml. | 57 // and defined in cryptohome.xml. |
| 72 virtual gboolean CheckKey(gchar *user, | 58 virtual gboolean CheckKey(gchar *user, |
| 73 gchar *key, | 59 gchar *key, |
| 74 gboolean *OUT_success, | 60 gboolean *OUT_success, |
| 75 GError **error); | 61 GError **error); |
| 62 virtual gboolean MigrateKey(gchar *user, |
| 63 gchar *from_key, |
| 64 gchar *to_key, |
| 65 gboolean *OUT_success, |
| 66 GError **error); |
| 67 virtual gboolean Remove(gchar *user, |
| 68 gboolean *OUT_success, |
| 69 GError **error); |
| 70 virtual gboolean GetSystemSalt(GArray **OUT_salt, GError **error); |
| 76 virtual gboolean IsMounted(gboolean *OUT_is_mounted, GError **error); | 71 virtual gboolean IsMounted(gboolean *OUT_is_mounted, GError **error); |
| 77 virtual gboolean Mount(gchar *user, | 72 virtual gboolean Mount(gchar *user, |
| 78 gchar *key, | 73 gchar *key, |
| 79 gboolean *OUT_done, | 74 gboolean *OUT_done, |
| 80 GError **error); | 75 GError **error); |
| 81 virtual gboolean Unmount(gboolean *OUT_done, GError **error); | 76 virtual gboolean Unmount(gboolean *OUT_done, GError **error); |
| 82 | 77 |
| 83 protected: | 78 protected: |
| 84 virtual GMainLoop *main_loop() { return loop_; } | 79 virtual GMainLoop *main_loop() { return loop_; } |
| 85 | 80 |
| 86 private: | 81 private: |
| 87 GMainLoop *loop_; | 82 GMainLoop *loop_; |
| 88 scoped_ptr<Authenticator> auth_; | |
| 89 // Can't use scoped_ptr for cryptohome_ because memory is allocated by glib. | 83 // Can't use scoped_ptr for cryptohome_ because memory is allocated by glib. |
| 90 gobject::Cryptohome *cryptohome_; | 84 gobject::Cryptohome *cryptohome_; |
| 91 const char *mount_command_; | 85 chromeos::Blob system_salt_; |
| 92 const char *unmount_command_; | 86 cryptohome::Mount* mount_; |
| 93 const char *is_mounted_command_; | |
| 94 DISALLOW_COPY_AND_ASSIGN(Service); | 87 DISALLOW_COPY_AND_ASSIGN(Service); |
| 95 }; | 88 }; |
| 96 | 89 |
| 97 } // cryptohome | 90 } // cryptohome |
| 98 #endif // CRYPTOHOME_SERVICE_H_ | 91 #endif // CRYPTOHOME_SERVICE_H_ |
| OLD | NEW |