Index: extensions/browser/api/networking_private/networking_private_chromeos.cc |
diff --git a/extensions/browser/api/networking_private/networking_private_chromeos.cc b/extensions/browser/api/networking_private/networking_private_chromeos.cc |
index c030fda7e2c51b23d06bcdee768c5dca504803e2..7acc8894d38e74adc69520da2dc91f43f71de8b1 100644 |
--- a/extensions/browser/api/networking_private/networking_private_chromeos.cc |
+++ b/extensions/browser/api/networking_private/networking_private_chromeos.cc |
@@ -18,6 +18,7 @@ |
#include "chromeos/network/device_state.h" |
#include "chromeos/network/managed_network_configuration_handler.h" |
#include "chromeos/network/network_activation_handler.h" |
+#include "chromeos/network/network_certificate_handler.h" |
#include "chromeos/network/network_connection_handler.h" |
#include "chromeos/network/network_device_handler.h" |
#include "chromeos/network/network_event_log.h" |
@@ -43,6 +44,7 @@ |
#include "third_party/cros_system_api/dbus/service_constants.h" |
using chromeos::NetworkHandler; |
+using chromeos::NetworkCertificateHandler; |
using chromeos::NetworkStateHandler; |
using chromeos::NetworkTypePattern; |
using chromeos::ShillManagerClient; |
@@ -299,6 +301,20 @@ void SetManualProxy(base::DictionaryValue* manual, |
SetProxyEffectiveValue(port_dict, state, base::MakeUnique<base::Value>(port)); |
} |
+private_api::Certificate GetCertDictionary( |
+ const NetworkCertificateHandler::Certificate& cert) { |
+ private_api::Certificate api_cert; |
+ api_cert.hash = cert.hash; |
+ api_cert.issued_by = cert.issued_by; |
+ api_cert.issued_to = cert.issued_to; |
+ api_cert.hardware_backed = cert.hardware_backed; |
+ if (!cert.pem.empty()) |
+ api_cert.pem = base::MakeUnique<std::string>(cert.pem); |
+ if (!cert.pkcs11_id.empty()) |
+ api_cert.pkcs11_id = base::MakeUnique<std::string>(cert.pkcs11_id); |
+ return api_cert; |
+} |
+ |
} // namespace |
//////////////////////////////////////////////////////////////////////////////// |
@@ -746,6 +762,25 @@ NetworkingPrivateChromeOS::GetGlobalPolicy() { |
return result; |
} |
+std::unique_ptr<base::DictionaryValue> |
+NetworkingPrivateChromeOS::GetCertificateLists() { |
+ private_api::CertificateLists result; |
+ const std::vector<NetworkCertificateHandler::Certificate>& server_cas = |
+ NetworkHandler::Get() |
+ ->network_certificate_handler() |
+ ->server_ca_certificates(); |
+ for (const auto& cert : server_cas) |
+ result.server_ca_certificates.push_back(GetCertDictionary(cert)); |
+ |
+ std::vector<private_api::Certificate> user_cert_list; |
+ const std::vector<NetworkCertificateHandler::Certificate>& user_certs = |
+ NetworkHandler::Get()->network_certificate_handler()->user_certificates(); |
+ for (const auto& cert : user_certs) |
+ result.user_certificates.push_back(GetCertDictionary(cert)); |
+ |
+ return result.ToValue(); |
+} |
+ |
bool NetworkingPrivateChromeOS::EnableNetworkType(const std::string& type) { |
NetworkTypePattern pattern = |
chromeos::onc::NetworkTypePatternFromOncType(type); |