Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1859)

Unified Diff: chrome/utility/chrome_content_utility_client.cc

Issue 102993002: Implement Networking Private API VerifyAndEncryptCredentials method (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync to r254157 Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/utility/chrome_content_utility_client.cc
diff --git a/chrome/utility/chrome_content_utility_client.cc b/chrome/utility/chrome_content_utility_client.cc
index d7ec6a762fe402004a3e58fdc2d5628c279a88b5..661e85de9dc14d3468979c3bb9be39ab899a18ac 100644
--- a/chrome/utility/chrome_content_utility_client.cc
+++ b/chrome/utility/chrome_content_utility_client.cc
@@ -47,7 +47,9 @@
#if defined(OS_WIN)
#include "base/win/iat_patch_function.h"
#include "base/win/scoped_handle.h"
+#include "chrome/common/extensions/api/networking_private/networking_private_crypto.h"
#include "chrome/utility/media_galleries/itunes_pref_parser_win.h"
+#include "components/wifi/wifi_service.h"
#include "printing/emf_win.h"
#include "ui/gfx/gdi_util.h"
#endif // defined(OS_WIN)
@@ -400,6 +402,11 @@ bool ChromeContentUtilityClient::OnMessageReceived(
OnIndexPicasaAlbumsContents)
#endif // defined(OS_WIN) || defined(OS_MACOSX)
+#if defined(OS_WIN)
+ IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_GetAndEncryptWiFiCredentials,
+ OnGetAndEncryptWiFiCredentials)
+#endif // defined(OS_WIN)
+
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
@@ -902,4 +909,33 @@ void ChromeContentUtilityClient::OnIndexPicasaAlbumsContents(
}
#endif // defined(OS_WIN) || defined(OS_MACOSX)
+#if defined(OS_WIN)
+void ChromeContentUtilityClient::OnGetAndEncryptWiFiCredentials(
+ const std::string& network_guid,
+ const std::string& public_key) {
+ scoped_ptr<wifi::WiFiService> wifi_service(wifi::WiFiService::Create());
+ wifi_service->Initialize(NULL);
+
+ std::string key_data;
+ std::string error;
+ wifi_service->GetKeyFromSystem(network_guid, &key_data, &error);
+
+ std::string base64_encoded_ciphertext;
+ if (error.empty() && !key_data.empty()) {
+ NetworkingPrivateCrypto crypto;
+ std::string ciphertext;
+ bool encrypted =
+ crypto.EncryptByteString(public_key, key_data, &ciphertext);
+ if (encrypted) {
+ base::Base64Encode(ciphertext, &base64_encoded_ciphertext);
+ } else {
+ error = "Error.EncryptByteString";
+ }
+ }
+
+ Send(new ChromeUtilityHostMsg_GotEncryptedWiFiCredentials(
+ base64_encoded_ciphertext, error));
+}
+#endif // defined(OS_WIN)
+
} // namespace chrome

Powered by Google App Engine
This is Rietveld 408576698