| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #ifndef CHROME_BROWSER_CHROMEOS_CROS_LOGIN_LIBRARY_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_CROS_LOGIN_LIBRARY_H_ |
| 6 #define CHROME_BROWSER_CHROMEOS_CROS_LOGIN_LIBRARY_H_ | 6 #define CHROME_BROWSER_CHROMEOS_CROS_LOGIN_LIBRARY_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| 11 #include "base/singleton.h" | 11 #include "base/singleton.h" |
| 12 #include "cros/chromeos_login.h" | 12 #include "cros/chromeos_login.h" |
| 13 | 13 |
| 14 namespace chromeos { | 14 namespace chromeos { |
| 15 | 15 |
| 16 // This interface defines the interaction with the ChromeOS login library APIs. | 16 // This interface defines the interaction with the ChromeOS login library APIs. |
| 17 class LoginLibrary { | 17 class LoginLibrary { |
| 18 public: | 18 public: |
| 19 template <class T> | 19 template <class T> |
| 20 class Delegate { | 20 class Delegate { |
| 21 public: | 21 public: |
| 22 virtual void Run(T value) = 0; | 22 virtual void Run(T value) = 0; |
| 23 }; | 23 }; |
| 24 | 24 |
| 25 virtual ~LoginLibrary() {} | 25 virtual ~LoginLibrary() {} |
| 26 // Requests that the Upstart signal login-prompt-ready be emitted. | 26 // Requests that the Upstart signal login-prompt-ready be emitted. |
| 27 virtual bool EmitLoginPromptReady() = 0; | 27 virtual bool EmitLoginPromptReady() = 0; |
| 28 | 28 |
| 29 // Check whether or not |email| is present on the whitelist. |
| 30 // If so, we return true and store the signature passed when |email| was |
| 31 // whitelisted in |OUT_signature|. |
| 32 // If not, we return false and don't touch the output parameter. |
| 33 virtual bool CheckWhitelist(const std::string& email, |
| 34 std::vector<uint8>* OUT_signature) = 0; |
| 35 |
| 36 // Fetch the value associated with |name|, if its present. |
| 37 // If so, we return true, store the info in |OUT_value|, and store the |
| 38 // signature passed when the property was initially stored in |OUT_signature|. |
| 39 // If not, we return false and don't touch the output parameters. |
| 40 virtual bool RetrieveProperty(const std::string& name, |
| 41 std::string* OUT_value, |
| 42 std::vector<uint8>* OUT_signature) = 0; |
| 43 |
| 29 // Attempts to asynchronously set the provided public key as the | 44 // Attempts to asynchronously set the provided public key as the |
| 30 // Owner's public key for this device. |public_key_der| should be a | 45 // Owner's public key for this device. |public_key_der| should be a |
| 31 // DER-encoded PKCS11 SubjectPublicKeyInfo structure. | 46 // DER-encoded PKCS11 SubjectPublicKeyInfo structure. |
| 32 // Returns true if the attempt was successfully started. | 47 // Returns true if the attempt was successfully started. |
| 33 // callback->Run() will be called when the operation is complete. | 48 // callback->Run() will be called when the operation is complete. |
| 34 virtual bool SetOwnerKey(const std::vector<uint8>& public_key_der, | 49 virtual bool SetOwnerKeyAsync(const std::vector<uint8>& public_key_der, |
| 35 Delegate<bool>* callback) = 0; | 50 Delegate<bool>* callback) = 0; |
| 51 |
| 52 // Attempts to issue a signed async request to store |name|=|value|. |
| 53 // |signature| must by a SHA1 with RSA encryption signature over the string |
| 54 // "name=value" with the owner's private key. |
| 55 // Returns true if the attempt was successfully started. |
| 56 // callback->Run() will be called when the operation is complete. |
| 57 virtual bool StorePropertyAsync(const std::string& name, |
| 58 const std::string& value, |
| 59 const std::vector<uint8>& signature, |
| 60 Delegate<bool>* callback) = 0; |
| 61 |
| 62 // Attempts to issue a signed async request to whitelist |email|. |
| 63 // |signature| must by a SHA1 with RSA encryption signature over |email| |
| 64 // with the owner's private key. |
| 65 // Returns true if the attempt was successfully started. |
| 66 // callback->Run() will be called when the operation is complete. |
| 67 virtual bool WhitelistAsync(const std::string& email, |
| 68 const std::vector<uint8>& signature, |
| 69 Delegate<bool>* callback) = 0; |
| 70 |
| 71 // Attempts to issue a signed async request to remove |email| from the |
| 72 // whitelist of users allowed to log in to this machine. |
| 73 // |signature| must by a SHA1 with RSA encryption signature over |email| |
| 74 // with the owner's private key. |
| 75 // Returns true if the attempt was successfully started. |
| 76 // callback->Run() will be called when the operation is complete. |
| 77 virtual bool UnwhitelistAsync(const std::string& email, |
| 78 const std::vector<uint8>& signature, |
| 79 Delegate<bool>* callback) = 0; |
| 36 | 80 |
| 37 // Tells the session manager to start a logged-in session for the user | 81 // Tells the session manager to start a logged-in session for the user |
| 38 // |user_email|. |unique_id| is meant to be used when we have a non-human- | 82 // |user_email|. |unique_id| is meant to be used when we have a non-human- |
| 39 // readable unique identifier by which we distinguish users (to deal with | 83 // readable unique identifier by which we distinguish users (to deal with |
| 40 // potential email address changes over time). | 84 // potential email address changes over time). |
| 41 virtual bool StartSession(const std::string& user_email, | 85 virtual bool StartSession(const std::string& user_email, |
| 42 const std::string& unique_id /* unused */) = 0; | 86 const std::string& unique_id /* unused */) = 0; |
| 43 | 87 |
| 44 // Tells the session manager to terminate the current logged-in session. | 88 // Tells the session manager to terminate the current logged-in session. |
| 45 // In the event that we ever support multiple simultaneous user sessions, | 89 // In the event that we ever support multiple simultaneous user sessions, |
| 46 // This will tell the session manager to terminate the session for the user | 90 // This will tell the session manager to terminate the session for the user |
| 47 // indicated by |unique_id|. | 91 // indicated by |unique_id|. |
| 48 virtual bool StopSession(const std::string& unique_id /* unused */) = 0; | 92 virtual bool StopSession(const std::string& unique_id /* unused */) = 0; |
| 49 | 93 |
| 50 // Restarts the job with specified command line string. | 94 // Restarts the job with specified command line string. |
| 51 virtual bool RestartJob(int pid, const std::string& command_line) = 0; | 95 virtual bool RestartJob(int pid, const std::string& command_line) = 0; |
| 52 | 96 |
| 53 // Factory function, creates a new instance and returns ownership. | 97 // Factory function, creates a new instance and returns ownership. |
| 54 // For normal usage, access the singleton via CrosLibrary::Get(). | 98 // For normal usage, access the singleton via CrosLibrary::Get(). |
| 55 static LoginLibrary* GetImpl(bool stub); | 99 static LoginLibrary* GetImpl(bool stub); |
| 56 }; | 100 }; |
| 57 | 101 |
| 58 } // namespace chromeos | 102 } // namespace chromeos |
| 59 | 103 |
| 60 #endif // CHROME_BROWSER_CHROMEOS_CROS_LOGIN_LIBRARY_H_ | 104 #endif // CHROME_BROWSER_CHROMEOS_CROS_LOGIN_LIBRARY_H_ |
| OLD | NEW |