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

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: Address codereview comments. 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 c66abcf7b6415d9abd1f3b70363dea4c5e2b0b99..2387c5e3f576627d6b90e0296476b35935b69588 100644
--- a/chrome/utility/chrome_content_utility_client.cc
+++ b/chrome/utility/chrome_content_utility_client.cc
@@ -46,7 +46,9 @@
#if defined(OS_WIN)
#include "base/win/iat_patch_function.h"
#include "base/win/scoped_handle.h"
+#include "chrome/browser/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)
@@ -397,6 +399,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()
@@ -899,4 +906,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