Commit 81fd883f authored by Michael Ershov's avatar Michael Ershov Committed by Commit Bot

Make a service from the platform_keys.h file

Make a keyed service from the platform_keys.h file and add
a mock class for it to allow unit testing of a code that
depends on that code.

Bug: 1045895
Change-Id: I5008805ac7aaf85af65177d67b45a9411c1726a1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2078614
Commit-Queue: Michael Ershov <miersh@google.com>
Reviewed-by: default avatarEdman Anjos <edman@chromium.org>
Reviewed-by: default avatarMaksim Ivanov <emaxx@chromium.org>
Cr-Commit-Position: refs/heads/master@{#748197}
parent a442cecc
...@@ -1720,9 +1720,11 @@ source_set("chromeos") { ...@@ -1720,9 +1720,11 @@ source_set("chromeos") {
"platform_keys/key_permissions.h", "platform_keys/key_permissions.h",
"platform_keys/key_permissions_policy_handler.cc", "platform_keys/key_permissions_policy_handler.cc",
"platform_keys/key_permissions_policy_handler.h", "platform_keys/key_permissions_policy_handler.h",
"platform_keys/platform_keys.cc", "platform_keys/platform_keys_service.cc",
"platform_keys/platform_keys.h", "platform_keys/platform_keys_service.h",
"platform_keys/platform_keys_nss.cc", "platform_keys/platform_keys_service_factory.cc",
"platform_keys/platform_keys_service_factory.h",
"platform_keys/platform_keys_service_nss.cc",
"plugin_vm/plugin_vm_drive_image_download_service.cc", "plugin_vm/plugin_vm_drive_image_download_service.cc",
"plugin_vm/plugin_vm_drive_image_download_service.h", "plugin_vm/plugin_vm_drive_image_download_service.h",
"plugin_vm/plugin_vm_engagement_metrics_service.cc", "plugin_vm/plugin_vm_engagement_metrics_service.cc",
...@@ -2605,6 +2607,8 @@ static_library("test_support") { ...@@ -2605,6 +2607,8 @@ static_library("test_support") {
"login/test/test_predicate_waiter.h", "login/test/test_predicate_waiter.h",
"login/version_updater/mock_version_updater_delegate.cc", "login/version_updater/mock_version_updater_delegate.cc",
"login/version_updater/mock_version_updater_delegate.h", "login/version_updater/mock_version_updater_delegate.h",
"platform_keys/mock_platform_keys_service.cc",
"platform_keys/mock_platform_keys_service.h",
"printing/printing_stubs.cc", "printing/printing_stubs.cc",
"printing/printing_stubs.h", "printing/printing_stubs.h",
"scoped_set_running_on_chromeos_for_testing.cc", "scoped_set_running_on_chromeos_for_testing.cc",
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include "base/logging.h" #include "base/logging.h"
#include "base/memory/singleton.h" #include "base/memory/singleton.h"
#include "chrome/browser/chromeos/platform_keys/key_permissions.h" #include "chrome/browser/chromeos/platform_keys/key_permissions.h"
#include "chrome/browser/chromeos/platform_keys/platform_keys.h" #include "chrome/browser/chromeos/platform_keys/platform_keys_service.h"
#include "chrome/browser/net/nss_context.h" #include "chrome/browser/net/nss_context.h"
#include "chrome/browser/policy/profile_policy_connector.h" #include "chrome/browser/policy/profile_policy_connector.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
#include "chrome/browser/chromeos/arc/session/arc_service_launcher.h" #include "chrome/browser/chromeos/arc/session/arc_service_launcher.h"
#include "chrome/browser/chromeos/login/test/local_policy_test_server_mixin.h" #include "chrome/browser/chromeos/login/test/local_policy_test_server_mixin.h"
#include "chrome/browser/chromeos/platform_keys/key_permissions.h" #include "chrome/browser/chromeos/platform_keys/key_permissions.h"
#include "chrome/browser/chromeos/platform_keys/platform_keys.h" #include "chrome/browser/chromeos/platform_keys/platform_keys_service.h"
#include "chrome/browser/chromeos/policy/user_policy_test_helper.h" #include "chrome/browser/chromeos/policy/user_policy_test_helper.h"
#include "chrome/browser/chromeos/profiles/profile_helper.h" #include "chrome/browser/chromeos/profiles/profile_helper.h"
#include "chrome/browser/net/nss_context.h" #include "chrome/browser/net/nss_context.h"
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
#include "chrome/browser/chromeos/arc/policy/arc_policy_bridge.h" #include "chrome/browser/chromeos/arc/policy/arc_policy_bridge.h"
#include "chrome/browser/chromeos/certificate_provider/certificate_provider_service.h" #include "chrome/browser/chromeos/certificate_provider/certificate_provider_service.h"
#include "chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.h" #include "chrome/browser/chromeos/certificate_provider/certificate_provider_service_factory.h"
#include "chrome/browser/chromeos/platform_keys/platform_keys.h" #include "chrome/browser/chromeos/platform_keys/platform_keys_service.h"
#include "chrome/common/net/x509_certificate_model_nss.h" #include "chrome/common/net/x509_certificate_model_nss.h"
#include "components/arc/arc_browser_context_keyed_service_factory_base.h" #include "components/arc/arc_browser_context_keyed_service_factory_base.h"
#include "components/policy/core/common/policy_map.h" #include "components/policy/core/common/policy_map.h"
......
...@@ -16,7 +16,8 @@ ...@@ -16,7 +16,8 @@
#include "base/optional.h" #include "base/optional.h"
#include "base/stl_util.h" #include "base/stl_util.h"
#include "base/values.h" #include "base/values.h"
#include "chrome/browser/chromeos/platform_keys/platform_keys.h" #include "chrome/browser/chromeos/platform_keys/platform_keys_service.h"
#include "chrome/browser/chromeos/platform_keys/platform_keys_service_factory.h"
#include "content/public/browser/browser_thread.h" #include "content/public/browser/browser_thread.h"
#include "extensions/browser/state_store.h" #include "extensions/browser/state_store.h"
#include "net/cert/x509_certificate.h" #include "net/cert/x509_certificate.h"
...@@ -74,14 +75,12 @@ class ExtensionPlatformKeysService::GenerateKeyTask : public Task { ...@@ -74,14 +75,12 @@ class ExtensionPlatformKeysService::GenerateKeyTask : public Task {
const std::string& extension_id, const std::string& extension_id,
const GenerateKeyCallback& callback, const GenerateKeyCallback& callback,
KeyPermissions* key_permissions, KeyPermissions* key_permissions,
ExtensionPlatformKeysService* service, ExtensionPlatformKeysService* service)
content::BrowserContext* browser_context)
: token_id_(token_id), : token_id_(token_id),
extension_id_(extension_id), extension_id_(extension_id),
callback_(callback), callback_(callback),
key_permissions_(key_permissions), key_permissions_(key_permissions),
service_(service), service_(service) {}
browser_context_(browser_context) {}
~GenerateKeyTask() override = default; ~GenerateKeyTask() override = default;
...@@ -103,7 +102,6 @@ class ExtensionPlatformKeysService::GenerateKeyTask : public Task { ...@@ -103,7 +102,6 @@ class ExtensionPlatformKeysService::GenerateKeyTask : public Task {
extension_permissions_; extension_permissions_;
KeyPermissions* const key_permissions_; KeyPermissions* const key_permissions_;
ExtensionPlatformKeysService* const service_; ExtensionPlatformKeysService* const service_;
content::BrowserContext* const browser_context_;
private: private:
void DoStep() { void DoStep() {
...@@ -183,14 +181,12 @@ class ExtensionPlatformKeysService::GenerateRSAKeyTask ...@@ -183,14 +181,12 @@ class ExtensionPlatformKeysService::GenerateRSAKeyTask
const std::string& extension_id, const std::string& extension_id,
const GenerateKeyCallback& callback, const GenerateKeyCallback& callback,
KeyPermissions* key_permissions, KeyPermissions* key_permissions,
ExtensionPlatformKeysService* service, ExtensionPlatformKeysService* service)
content::BrowserContext* browser_context)
: GenerateKeyTask(token_id, : GenerateKeyTask(token_id,
extension_id, extension_id,
callback, callback,
key_permissions, key_permissions,
service, service),
browser_context),
modulus_length_(modulus_length) {} modulus_length_(modulus_length) {}
~GenerateRSAKeyTask() override {} ~GenerateRSAKeyTask() override {}
...@@ -198,8 +194,8 @@ class ExtensionPlatformKeysService::GenerateRSAKeyTask ...@@ -198,8 +194,8 @@ class ExtensionPlatformKeysService::GenerateRSAKeyTask
private: private:
// Generates the RSA key. // Generates the RSA key.
void GenerateKey(GenerateKeyCallback callback) override { void GenerateKey(GenerateKeyCallback callback) override {
platform_keys::subtle::GenerateRSAKey(token_id_, modulus_length_, callback, service_->platform_keys_service_->GenerateRSAKey(token_id_, modulus_length_,
browser_context_); callback);
} }
const unsigned int modulus_length_; const unsigned int modulus_length_;
...@@ -215,14 +211,12 @@ class ExtensionPlatformKeysService::GenerateECKeyTask : public GenerateKeyTask { ...@@ -215,14 +211,12 @@ class ExtensionPlatformKeysService::GenerateECKeyTask : public GenerateKeyTask {
const std::string& extension_id, const std::string& extension_id,
const GenerateKeyCallback& callback, const GenerateKeyCallback& callback,
KeyPermissions* key_permissions, KeyPermissions* key_permissions,
ExtensionPlatformKeysService* service, ExtensionPlatformKeysService* service)
content::BrowserContext* browser_context)
: GenerateKeyTask(token_id, : GenerateKeyTask(token_id,
extension_id, extension_id,
callback, callback,
key_permissions, key_permissions,
service, service),
browser_context),
named_curve_(named_curve) {} named_curve_(named_curve) {}
~GenerateECKeyTask() override {} ~GenerateECKeyTask() override {}
...@@ -230,8 +224,8 @@ class ExtensionPlatformKeysService::GenerateECKeyTask : public GenerateKeyTask { ...@@ -230,8 +224,8 @@ class ExtensionPlatformKeysService::GenerateECKeyTask : public GenerateKeyTask {
private: private:
// Generates the EC key. // Generates the EC key.
void GenerateKey(GenerateKeyCallback callback) override { void GenerateKey(GenerateKeyCallback callback) override {
platform_keys::subtle::GenerateECKey(token_id_, named_curve_, callback, service_->platform_keys_service_->GenerateECKey(token_id_, named_curve_,
browser_context_); callback);
} }
const std::string named_curve_; const std::string named_curve_;
...@@ -327,10 +321,9 @@ class ExtensionPlatformKeysService::SignTask : public Task { ...@@ -327,10 +321,9 @@ class ExtensionPlatformKeysService::SignTask : public Task {
} }
void GetKeyLocations() { void GetKeyLocations() {
platform_keys::GetKeyLocations( service_->platform_keys_service_->GetKeyLocations(
public_key_spki_der_, public_key_spki_der_,
base::BindRepeating(&SignTask::GotKeyLocation, base::Unretained(this)), base::BindRepeating(&SignTask::GotKeyLocation, base::Unretained(this)));
service_->browser_context_);
} }
void GotKeyLocation(const std::vector<std::string>& token_ids, void GotKeyLocation(const std::vector<std::string>& token_ids,
...@@ -356,24 +349,21 @@ class ExtensionPlatformKeysService::SignTask : public Task { ...@@ -356,24 +349,21 @@ class ExtensionPlatformKeysService::SignTask : public Task {
switch (key_type_) { switch (key_type_) {
case platform_keys::KeyType::kRsassaPkcs1V15: { case platform_keys::KeyType::kRsassaPkcs1V15: {
if (raw_pkcs1_) { if (raw_pkcs1_) {
platform_keys::subtle::SignRSAPKCS1Raw( service_->platform_keys_service_->SignRSAPKCS1Raw(
token_id_, data_, public_key_spki_der_, token_id_, data_, public_key_spki_der_,
base::Bind(&SignTask::DidSign, weak_factory_.GetWeakPtr()), base::Bind(&SignTask::DidSign, weak_factory_.GetWeakPtr()));
service_->browser_context_);
} else { } else {
platform_keys::subtle::SignRSAPKCS1Digest( service_->platform_keys_service_->SignRSAPKCS1Digest(
token_id_, data_, public_key_spki_der_, hash_algorithm_, token_id_, data_, public_key_spki_der_, hash_algorithm_,
base::Bind(&SignTask::DidSign, weak_factory_.GetWeakPtr()), base::Bind(&SignTask::DidSign, weak_factory_.GetWeakPtr()));
service_->browser_context_);
} }
break; break;
} }
case platform_keys::KeyType::kEcdsa: { case platform_keys::KeyType::kEcdsa: {
platform_keys::subtle::SignECDSADigest( service_->platform_keys_service_->SignECDSADigest(
token_id_, data_, public_key_spki_der_, hash_algorithm_, token_id_, data_, public_key_spki_der_, hash_algorithm_,
base::Bind(&SignTask::DidSign, weak_factory_.GetWeakPtr()), base::Bind(&SignTask::DidSign, weak_factory_.GetWeakPtr()));
service_->browser_context_);
break; break;
} }
} }
...@@ -511,10 +501,9 @@ class ExtensionPlatformKeysService::SelectTask : public Task { ...@@ -511,10 +501,9 @@ class ExtensionPlatformKeysService::SelectTask : public Task {
// Retrieves all certificates matching |request_|. Will call back to // Retrieves all certificates matching |request_|. Will call back to
// |GotMatchingCerts()|. // |GotMatchingCerts()|.
void GetMatchingCerts() { void GetMatchingCerts() {
platform_keys::subtle::SelectClientCertificates( service_->platform_keys_service_->SelectClientCertificates(
request_.certificate_authorities, request_.certificate_authorities,
base::Bind(&SelectTask::GotMatchingCerts, weak_factory_.GetWeakPtr()), base::Bind(&SelectTask::GotMatchingCerts, weak_factory_.GetWeakPtr()));
service_->browser_context_);
} }
// If the certificate request could be processed successfully, |matches| will // If the certificate request could be processed successfully, |matches| will
...@@ -574,11 +563,10 @@ class ExtensionPlatformKeysService::SelectTask : public Task { ...@@ -574,11 +563,10 @@ class ExtensionPlatformKeysService::SelectTask : public Task {
const std::string public_key_spki_der( const std::string public_key_spki_der(
platform_keys::GetSubjectPublicKeyInfo(certificate)); platform_keys::GetSubjectPublicKeyInfo(certificate));
platform_keys::GetKeyLocations( service_->platform_keys_service_->GetKeyLocations(
public_key_spki_der, public_key_spki_der,
base::BindRepeating(&SelectTask::GotKeyLocations, base::BindRepeating(&SelectTask::GotKeyLocations,
base::Unretained(this), certificate), base::Unretained(this), certificate));
service_->browser_context_);
} }
void GotKeyLocations(const scoped_refptr<net::X509Certificate>& certificate, void GotKeyLocations(const scoped_refptr<net::X509Certificate>& certificate,
...@@ -739,10 +727,14 @@ ExtensionPlatformKeysService::ExtensionPlatformKeysService( ...@@ -739,10 +727,14 @@ ExtensionPlatformKeysService::ExtensionPlatformKeysService(
content::BrowserContext* browser_context, content::BrowserContext* browser_context,
extensions::StateStore* state_store) extensions::StateStore* state_store)
: browser_context_(browser_context), : browser_context_(browser_context),
platform_keys_service_(
platform_keys::PlatformKeysServiceFactory::GetForBrowserContext(
browser_context)),
key_permissions_(profile_is_managed, key_permissions_(profile_is_managed,
profile_prefs, profile_prefs,
profile_policies, profile_policies,
state_store) { state_store) {
DCHECK(platform_keys_service_);
DCHECK(browser_context); DCHECK(browser_context);
DCHECK(state_store); DCHECK(state_store);
} }
...@@ -761,8 +753,8 @@ void ExtensionPlatformKeysService::GenerateRSAKey( ...@@ -761,8 +753,8 @@ void ExtensionPlatformKeysService::GenerateRSAKey(
const GenerateKeyCallback& callback) { const GenerateKeyCallback& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
StartOrQueueTask(std::make_unique<GenerateRSAKeyTask>( StartOrQueueTask(std::make_unique<GenerateRSAKeyTask>(
token_id, modulus_length, extension_id, callback, &key_permissions_, this, token_id, modulus_length, extension_id, callback, &key_permissions_,
browser_context_)); this));
} }
void ExtensionPlatformKeysService::GenerateECKey( void ExtensionPlatformKeysService::GenerateECKey(
...@@ -772,8 +764,7 @@ void ExtensionPlatformKeysService::GenerateECKey( ...@@ -772,8 +764,7 @@ void ExtensionPlatformKeysService::GenerateECKey(
const GenerateKeyCallback& callback) { const GenerateKeyCallback& callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
StartOrQueueTask(std::make_unique<GenerateECKeyTask>( StartOrQueueTask(std::make_unique<GenerateECKeyTask>(
token_id, named_curve, extension_id, callback, &key_permissions_, this, token_id, named_curve, extension_id, callback, &key_permissions_, this));
browser_context_));
} }
void ExtensionPlatformKeysService::SignDigest( void ExtensionPlatformKeysService::SignDigest(
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "chrome/browser/chromeos/platform_keys/key_permissions.h" #include "chrome/browser/chromeos/platform_keys/key_permissions.h"
#include "chrome/browser/chromeos/platform_keys/platform_keys.h" #include "chrome/browser/chromeos/platform_keys/platform_keys_service.h"
#include "components/keyed_service/core/keyed_service.h" #include "components/keyed_service/core/keyed_service.h"
class PrefService; class PrefService;
...@@ -215,7 +215,8 @@ class ExtensionPlatformKeysService : public KeyedService { ...@@ -215,7 +215,8 @@ class ExtensionPlatformKeysService : public KeyedService {
const std::string& public_key_spki_der, const std::string& public_key_spki_der,
const std::string& error_message); const std::string& error_message);
content::BrowserContext* browser_context_; content::BrowserContext* const browser_context_ = nullptr;
platform_keys::PlatformKeysService* const platform_keys_service_ = nullptr;
KeyPermissions key_permissions_; KeyPermissions key_permissions_;
std::unique_ptr<SelectDelegate> select_delegate_; std::unique_ptr<SelectDelegate> select_delegate_;
base::queue<std::unique_ptr<Task>> tasks_; base::queue<std::unique_ptr<Task>> tasks_;
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "base/memory/singleton.h" #include "base/memory/singleton.h"
#include "base/memory/weak_ptr.h" #include "base/memory/weak_ptr.h"
#include "chrome/browser/chromeos/platform_keys/extension_platform_keys_service.h" #include "chrome/browser/chromeos/platform_keys/extension_platform_keys_service.h"
#include "chrome/browser/chromeos/platform_keys/platform_keys_service_factory.h"
#include "chrome/browser/extensions/extension_system_factory.h" #include "chrome/browser/extensions/extension_system_factory.h"
#include "chrome/browser/policy/profile_policy_connector.h" #include "chrome/browser/policy/profile_policy_connector.h"
#include "chrome/browser/profiles/incognito_helpers.h" #include "chrome/browser/profiles/incognito_helpers.h"
...@@ -89,6 +90,7 @@ ExtensionPlatformKeysServiceFactory::ExtensionPlatformKeysServiceFactory() ...@@ -89,6 +90,7 @@ ExtensionPlatformKeysServiceFactory::ExtensionPlatformKeysServiceFactory()
"ExtensionPlatformKeysService", "ExtensionPlatformKeysService",
BrowserContextDependencyManager::GetInstance()) { BrowserContextDependencyManager::GetInstance()) {
DependsOn(extensions::ExtensionSystemFactory::GetInstance()); DependsOn(extensions::ExtensionSystemFactory::GetInstance());
DependsOn(chromeos::platform_keys::PlatformKeysServiceFactory::GetInstance());
} }
ExtensionPlatformKeysServiceFactory::~ExtensionPlatformKeysServiceFactory() {} ExtensionPlatformKeysServiceFactory::~ExtensionPlatformKeysServiceFactory() {}
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/chromeos/platform_keys/mock_platform_keys_service.h"
namespace chromeos {
namespace platform_keys {
MockPlatformKeysService::MockPlatformKeysService() = default;
MockPlatformKeysService::~MockPlatformKeysService() = default;
std::unique_ptr<KeyedService> BuildMockPlatformKeysService(
content::BrowserContext*) {
return std::make_unique<MockPlatformKeysService>();
}
} // namespace platform_keys
} // namespace chromeos
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_PLATFORM_KEYS_MOCK_PLATFORM_KEYS_SERVICE_H_
#define CHROME_BROWSER_CHROMEOS_PLATFORM_KEYS_MOCK_PLATFORM_KEYS_SERVICE_H_
#include <memory>
#include "base/callback.h"
#include "chrome/browser/chromeos/platform_keys/platform_keys_service.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace chromeos {
namespace platform_keys {
class MockPlatformKeysService : public PlatformKeysService {
public:
MockPlatformKeysService();
MockPlatformKeysService(const MockPlatformKeysService&) = delete;
MockPlatformKeysService& operator=(const MockPlatformKeysService&) = delete;
~MockPlatformKeysService() override;
MOCK_METHOD(void,
GenerateRSAKey,
(const std::string& token_id,
unsigned int modulus_length_bits,
const GenerateKeyCallback& callback),
(override));
MOCK_METHOD(void,
GenerateECKey,
(const std::string& token_id,
const std::string& named_curve,
const GenerateKeyCallback& callback),
(override));
MOCK_METHOD(void,
SignRSAPKCS1Digest,
(const std::string& token_id,
const std::string& data,
const std::string& public_key_spki_der,
HashAlgorithm hash_algorithm,
const SignCallback& callback),
(override));
MOCK_METHOD(void,
SignRSAPKCS1Raw,
(const std::string& token_id,
const std::string& data,
const std::string& public_key_spki_der,
const SignCallback& callback),
(override));
MOCK_METHOD(void,
SignECDSADigest,
(const std::string& token_id,
const std::string& data,
const std::string& public_key_spki_der,
HashAlgorithm hash_algorithm,
const SignCallback& callback),
(override));
MOCK_METHOD(void,
SelectClientCertificates,
(const std::vector<std::string>& certificate_authorities,
const SelectCertificatesCallback& callback),
(override));
MOCK_METHOD(void,
GetCertificates,
(const std::string& token_id,
const GetCertificatesCallback& callback),
(override));
MOCK_METHOD(void,
ImportCertificate,
(const std::string& token_id,
const scoped_refptr<net::X509Certificate>& certificate,
const ImportCertificateCallback& callback),
(override));
MOCK_METHOD(void,
RemoveCertificate,
(const std::string& token_id,
const scoped_refptr<net::X509Certificate>& certificate,
const RemoveCertificateCallback& callback),
(override));
MOCK_METHOD(void, GetTokens, (const GetTokensCallback& callback), (override));
MOCK_METHOD(void,
GetKeyLocations,
(const std::string& public_key_spki_der,
const GetKeyLocationsCallback& callback),
(override));
};
std::unique_ptr<KeyedService> BuildMockPlatformKeysService(
content::BrowserContext* context);
} // namespace platform_keys
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_PLATFORM_KEYS_MOCK_PLATFORM_KEYS_SERVICE_H_
// Copyright 2014 The Chromium Authors. All rights reserved. // Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/chromeos/platform_keys/platform_keys.h" #include "chrome/browser/chromeos/platform_keys/platform_keys_service.h"
#include <map> #include <map>
...@@ -15,9 +15,11 @@ ...@@ -15,9 +15,11 @@
#include "net/cert/x509_certificate.h" #include "net/cert/x509_certificate.h"
namespace chromeos { namespace chromeos {
namespace platform_keys { namespace platform_keys {
const char kTokenIdUser[] = "user";
const char kTokenIdSystem[] = "system";
namespace { namespace {
void IntersectOnWorkerThread(const net::CertificateList& certs1, void IntersectOnWorkerThread(const net::CertificateList& certs1,
...@@ -47,18 +49,6 @@ void IntersectOnWorkerThread(const net::CertificateList& certs1, ...@@ -47,18 +49,6 @@ void IntersectOnWorkerThread(const net::CertificateList& certs1,
} // namespace } // namespace
const char kTokenIdUser[] = "user";
const char kTokenIdSystem[] = "system";
ClientCertificateRequest::ClientCertificateRequest() {
}
ClientCertificateRequest::ClientCertificateRequest(
const ClientCertificateRequest& other) = default;
ClientCertificateRequest::~ClientCertificateRequest() {
}
void IntersectCertificates( void IntersectCertificates(
const net::CertificateList& certs1, const net::CertificateList& certs1,
const net::CertificateList& certs2, const net::CertificateList& certs2,
...@@ -78,6 +68,25 @@ void IntersectCertificates( ...@@ -78,6 +68,25 @@ void IntersectCertificates(
base::Bind(callback, base::Passed(&intersection))); base::Bind(callback, base::Passed(&intersection)));
} }
} // namespace platform_keys // =================== ClientCertificateRequest ================================
ClientCertificateRequest::ClientCertificateRequest() = default;
ClientCertificateRequest::ClientCertificateRequest(
const ClientCertificateRequest& other) = default;
ClientCertificateRequest::~ClientCertificateRequest() = default;
// =================== PlatformKeysServiceImpl =================================
PlatformKeysServiceImpl::PlatformKeysServiceImpl(
content::BrowserContext* context)
: browser_context_(context) {}
PlatformKeysServiceImpl::~PlatformKeysServiceImpl() = default;
// The rest of the methods - the NSS-specific part of the implementation -
// resides in the platform_keys_service_nss.cc file.
} // namespace platform_keys
} // namespace chromeos } // namespace chromeos
This diff is collapsed.
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/chromeos/platform_keys/platform_keys_service_factory.h"
#include "base/memory/singleton.h"
#include "chrome/browser/chromeos/platform_keys/platform_keys_service.h"
#include "chrome/browser/profiles/incognito_helpers.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
namespace chromeos {
namespace platform_keys {
// static
PlatformKeysService* PlatformKeysServiceFactory::GetForBrowserContext(
content::BrowserContext* context) {
return static_cast<PlatformKeysService*>(
GetInstance()->GetServiceForBrowserContext(context, true));
}
// static
PlatformKeysServiceFactory* PlatformKeysServiceFactory::GetInstance() {
return base::Singleton<PlatformKeysServiceFactory>::get();
}
PlatformKeysServiceFactory::PlatformKeysServiceFactory()
: BrowserContextKeyedServiceFactory(
"PlatformKeysService",
BrowserContextDependencyManager::GetInstance()) {}
PlatformKeysServiceFactory::~PlatformKeysServiceFactory() = default;
KeyedService* PlatformKeysServiceFactory::BuildServiceInstanceFor(
content::BrowserContext* context) const {
return new PlatformKeysServiceImpl(context);
}
content::BrowserContext* PlatformKeysServiceFactory::GetBrowserContextToUse(
content::BrowserContext* context) const {
return chrome::GetBrowserContextRedirectedInIncognito(context);
}
} // namespace platform_keys
} // namespace chromeos
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_PLATFORM_KEYS_PLATFORM_KEYS_SERVICE_FACTORY_H_
#define CHROME_BROWSER_CHROMEOS_PLATFORM_KEYS_PLATFORM_KEYS_SERVICE_FACTORY_H_
#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
namespace base {
template <typename T>
struct DefaultSingletonTraits;
} // namespace base
namespace chromeos {
namespace platform_keys {
class PlatformKeysService;
// Factory to create PlatformKeysService.
class PlatformKeysServiceFactory : public BrowserContextKeyedServiceFactory {
public:
static PlatformKeysService* GetForBrowserContext(
content::BrowserContext* context);
static PlatformKeysServiceFactory* GetInstance();
private:
friend struct base::DefaultSingletonTraits<PlatformKeysServiceFactory>;
PlatformKeysServiceFactory();
PlatformKeysServiceFactory(const PlatformKeysServiceFactory&) = delete;
PlatformKeysServiceFactory& operator=(const PlatformKeysServiceFactory&) =
delete;
~PlatformKeysServiceFactory() override;
// BrowserContextKeyedServiceFactory:
content::BrowserContext* GetBrowserContextToUse(
content::BrowserContext* context) const override;
KeyedService* BuildServiceInstanceFor(
content::BrowserContext* context) const override;
};
} // namespace platform_keys
} // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_PLATFORM_KEYS_PLATFORM_KEYS_SERVICE_FACTORY_H_
...@@ -11,7 +11,8 @@ ...@@ -11,7 +11,8 @@
#include "base/values.h" #include "base/values.h"
#include "chrome/browser/chromeos/platform_keys/extension_platform_keys_service.h" #include "chrome/browser/chromeos/platform_keys/extension_platform_keys_service.h"
#include "chrome/browser/chromeos/platform_keys/extension_platform_keys_service_factory.h" #include "chrome/browser/chromeos/platform_keys/extension_platform_keys_service_factory.h"
#include "chrome/browser/chromeos/platform_keys/platform_keys.h" #include "chrome/browser/chromeos/platform_keys/platform_keys_service.h"
#include "chrome/browser/chromeos/platform_keys/platform_keys_service_factory.h"
#include "chrome/browser/extensions/api/platform_keys/platform_keys_api.h" #include "chrome/browser/extensions/api/platform_keys/platform_keys_api.h"
#include "chrome/common/extensions/api/enterprise_platform_keys.h" #include "chrome/common/extensions/api/enterprise_platform_keys.h"
#include "chrome/common/extensions/api/enterprise_platform_keys_internal.h" #include "chrome/common/extensions/api/enterprise_platform_keys_internal.h"
...@@ -111,12 +112,14 @@ EnterprisePlatformKeysGetCertificatesFunction::Run() { ...@@ -111,12 +112,14 @@ EnterprisePlatformKeysGetCertificatesFunction::Run() {
if (!platform_keys::ValidateToken(params->token_id, &platform_keys_token_id)) if (!platform_keys::ValidateToken(params->token_id, &platform_keys_token_id))
return RespondNow(Error(platform_keys::kErrorInvalidToken)); return RespondNow(Error(platform_keys::kErrorInvalidToken));
chromeos::platform_keys::GetCertificates( chromeos::platform_keys::PlatformKeysService* platform_keys_service =
chromeos::platform_keys::PlatformKeysServiceFactory::GetForBrowserContext(
browser_context());
platform_keys_service->GetCertificates(
platform_keys_token_id, platform_keys_token_id,
base::Bind( base::Bind(
&EnterprisePlatformKeysGetCertificatesFunction::OnGotCertificates, &EnterprisePlatformKeysGetCertificatesFunction::OnGotCertificates,
this), this));
browser_context());
return RespondLater(); return RespondLater();
} }
...@@ -167,12 +170,16 @@ EnterprisePlatformKeysImportCertificateFunction::Run() { ...@@ -167,12 +170,16 @@ EnterprisePlatformKeysImportCertificateFunction::Run() {
if (!cert_x509.get()) if (!cert_x509.get())
return RespondNow(Error(kEnterprisePlatformErrorInvalidX509Cert)); return RespondNow(Error(kEnterprisePlatformErrorInvalidX509Cert));
chromeos::platform_keys::ImportCertificate( chromeos::platform_keys::PlatformKeysService* platform_keys_service =
chromeos::platform_keys::PlatformKeysServiceFactory::GetForBrowserContext(
browser_context());
CHECK(platform_keys_service);
platform_keys_service->ImportCertificate(
platform_keys_token_id, cert_x509, platform_keys_token_id, cert_x509,
base::Bind(&EnterprisePlatformKeysImportCertificateFunction:: base::Bind(&EnterprisePlatformKeysImportCertificateFunction::
OnImportedCertificate, OnImportedCertificate,
this), this));
browser_context());
return RespondLater(); return RespondLater();
} }
...@@ -209,12 +216,16 @@ EnterprisePlatformKeysRemoveCertificateFunction::Run() { ...@@ -209,12 +216,16 @@ EnterprisePlatformKeysRemoveCertificateFunction::Run() {
if (!cert_x509.get()) if (!cert_x509.get())
return RespondNow(Error(kEnterprisePlatformErrorInvalidX509Cert)); return RespondNow(Error(kEnterprisePlatformErrorInvalidX509Cert));
chromeos::platform_keys::RemoveCertificate( chromeos::platform_keys::PlatformKeysService* platform_keys_service =
chromeos::platform_keys::PlatformKeysServiceFactory::GetForBrowserContext(
browser_context());
CHECK(platform_keys_service);
platform_keys_service->RemoveCertificate(
platform_keys_token_id, cert_x509, platform_keys_token_id, cert_x509,
base::Bind(&EnterprisePlatformKeysRemoveCertificateFunction:: base::Bind(&EnterprisePlatformKeysRemoveCertificateFunction::
OnRemovedCertificate, OnRemovedCertificate,
this), this));
browser_context());
return RespondLater(); return RespondLater();
} }
...@@ -234,10 +245,13 @@ ExtensionFunction::ResponseAction ...@@ -234,10 +245,13 @@ ExtensionFunction::ResponseAction
EnterprisePlatformKeysInternalGetTokensFunction::Run() { EnterprisePlatformKeysInternalGetTokensFunction::Run() {
EXTENSION_FUNCTION_VALIDATE(args_->empty()); EXTENSION_FUNCTION_VALIDATE(args_->empty());
chromeos::platform_keys::GetTokens( chromeos::platform_keys::PlatformKeysService* platform_keys_service =
base::Bind(&EnterprisePlatformKeysInternalGetTokensFunction::OnGotTokens, chromeos::platform_keys::PlatformKeysServiceFactory::GetForBrowserContext(
this), browser_context());
browser_context()); CHECK(platform_keys_service);
platform_keys_service->GetTokens(base::Bind(
&EnterprisePlatformKeysInternalGetTokensFunction::OnGotTokens, this));
return RespondLater(); return RespondLater();
} }
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include "base/values.h" #include "base/values.h"
#include "chrome/browser/chromeos/platform_keys/extension_platform_keys_service.h" #include "chrome/browser/chromeos/platform_keys/extension_platform_keys_service.h"
#include "chrome/browser/chromeos/platform_keys/extension_platform_keys_service_factory.h" #include "chrome/browser/chromeos/platform_keys/extension_platform_keys_service_factory.h"
#include "chrome/browser/chromeos/platform_keys/platform_keys.h" #include "chrome/browser/chromeos/platform_keys/platform_keys_service.h"
#include "chrome/browser/extensions/api/platform_keys/verify_trust_api.h" #include "chrome/browser/extensions/api/platform_keys/verify_trust_api.h"
#include "chrome/common/extensions/api/platform_keys_internal.h" #include "chrome/common/extensions/api/platform_keys_internal.h"
#include "components/web_modal/web_contents_modal_dialog_manager.h" #include "components/web_modal/web_contents_modal_dialog_manager.h"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment