| Index: chrome/browser/chromeos/platform_keys/key_permissions.h
|
| diff --git a/chrome/browser/chromeos/platform_keys/key_permissions.h b/chrome/browser/chromeos/platform_keys/key_permissions.h
|
| index af584e2d10c60696045c9fc4077abbaaee7c2c69..46b159ff67894b1e58da7f9677f8a902f3fa397f 100644
|
| --- a/chrome/browser/chromeos/platform_keys/key_permissions.h
|
| +++ b/chrome/browser/chromeos/platform_keys/key_permissions.h
|
| @@ -12,7 +12,10 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/memory/weak_ptr.h"
|
|
|
| +class PrefService;
|
| +
|
| namespace base {
|
| +class DictionaryValue;
|
| class Value;
|
| }
|
|
|
| @@ -20,6 +23,14 @@ namespace extensions {
|
| class StateStore;
|
| }
|
|
|
| +namespace policy {
|
| +class PolicyService;
|
| +}
|
| +
|
| +namespace user_prefs {
|
| +class PrefRegistrySyncable;
|
| +}
|
| +
|
| namespace chromeos {
|
|
|
| // This class manages permissions for extensions to use private keys through
|
| @@ -29,6 +40,10 @@ namespace chromeos {
|
| // data with that key at most once.
|
| // * The user can explicitly grant an extension the permission to sign
|
| // arbitrary data with a key an unlimited number of times.
|
| +//
|
| +// Additionally, it takes care of restrictions that apply on managed profiles,
|
| +// applies the KeyPermissions policy and distinguishes corporate from
|
| +// non-corporate keys.
|
| class KeyPermissions {
|
| public:
|
| // Allows querying and modifying permissions and registering keys for a
|
| @@ -41,6 +56,8 @@ class KeyPermissions {
|
| // |KeyPermissions::GetPermissionsForExtension| instead.
|
| PermissionsForExtension(const std::string& extension_id,
|
| scoped_ptr<base::Value> state_store_value,
|
| + PrefService* profile_prefs,
|
| + policy::PolicyService* profile_policies,
|
| KeyPermissions* key_permissions);
|
|
|
| ~PermissionsForExtension();
|
| @@ -92,17 +109,26 @@ class KeyPermissions {
|
| KeyPermissions::PermissionsForExtension::KeyEntry* GetStateStoreEntry(
|
| const std::string& public_key_spki_der_b64);
|
|
|
| + bool PolicyAllowsCorporateKeyUsage();
|
| +
|
| const std::string extension_id_;
|
| std::vector<KeyEntry> state_store_entries_;
|
| + PrefService* const profile_prefs_;
|
| + policy::PolicyService* const profile_policies_;
|
| KeyPermissions* const key_permissions_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(PermissionsForExtension);
|
| };
|
|
|
| - // |extensions_state_store| must not be null and outlive this object.
|
| + // |profile_prefs| and |extensions_state_store| must not be null and outlive
|
| + // this object.
|
| + // If |profile_is_managed| is false, |profile_policies| is ignored. Otherwise,
|
| + // |profile_policies| must not be null and outlive this object.
|
| // |profile_is_managed| determines the default usage and permissions for
|
| // keys without explicitly assigned usage.
|
| KeyPermissions(bool profile_is_managed,
|
| + PrefService* profile_prefs,
|
| + policy::PolicyService* profile_policies,
|
| extensions::StateStore* extensions_state_store);
|
|
|
| ~KeyPermissions();
|
| @@ -121,7 +147,11 @@ class KeyPermissions {
|
| // Key Info.
|
| bool CanUserGrantPermissionFor(const std::string& public_key_spki_der);
|
|
|
| + static void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry);
|
| +
|
| private:
|
| + bool IsCorporateKey(const std::string& public_key_spki_der_b64);
|
| +
|
| // Creates a PermissionsForExtension object from |extension_id| and |value|
|
| // and passes the object to |callback|.
|
| void CreatePermissionObjectAndPassToCallback(
|
| @@ -133,7 +163,12 @@ class KeyPermissions {
|
| void SetPlatformKeysOfExtension(const std::string& extension_id,
|
| scoped_ptr<base::Value> value);
|
|
|
| + const base::DictionaryValue* GetPrefsEntry(
|
| + const std::string& public_key_spki_der_b64);
|
| +
|
| const bool profile_is_managed_;
|
| + PrefService* const profile_prefs_;
|
| + policy::PolicyService* const profile_policies_;
|
| extensions::StateStore* const extensions_state_store_;
|
| base::WeakPtrFactory<KeyPermissions> weak_factory_;
|
|
|
|
|