easy_unlock_private_api.cc revision 5f1c94371a64b3196d4be9466099bb892df9b88e
15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file. 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_api.h" 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/bind.h" 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/lazy_instance.h" 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/strings/utf_string_conversions.h" 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/values.h" 115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_bluetooth_util.h" 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_crypto_delegate.h" 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/common/extensions/api/easy_unlock_private.h" 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "extensions/browser/browser_context_keyed_api_factory.h" 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "grit/generated_resources.h" 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(OS_CHROMEOS) 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/chromeos/chromeos_utils.h" 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace extensions { 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace api { 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace { 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)static base::LazyInstance<BrowserContextKeyedAPIFactory<EasyUnlockPrivateAPI> > 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) g_factory = LAZY_INSTANCE_INITIALIZER; 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Utility method for getting the API's crypto delegate. 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCryptoDelegate* GetCryptoDelegate( 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) content::BrowserContext* context) { 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return BrowserContextKeyedAPIFactory<EasyUnlockPrivateAPI>::Get(context) 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ->crypto_delegate(); 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace 385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// static 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)BrowserContextKeyedAPIFactory<EasyUnlockPrivateAPI>* 415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EasyUnlockPrivateAPI::GetFactoryInstance() { 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return g_factory.Pointer(); 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateAPI::EasyUnlockPrivateAPI(content::BrowserContext* context) 465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) : crypto_delegate_(EasyUnlockPrivateCryptoDelegate::Create()) { 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateAPI::~EasyUnlockPrivateAPI() {} 505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGetStringsFunction::EasyUnlockPrivateGetStringsFunction() { 525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGetStringsFunction::~EasyUnlockPrivateGetStringsFunction() { 545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateGetStringsFunction::RunSync() { 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<base::DictionaryValue> strings(new base::DictionaryValue); 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#if defined(OS_CHROMEOS) 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const base::string16 device_type = chromeos::GetChromeDeviceType(); 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#else 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(isherman): Set an appropriate device name for non-ChromeOS devices. 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const base::string16 device_type = base::ASCIIToUTF16("Chromeschnozzle"); 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // defined(OS_CHROMEOS) 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Setup notification strings. 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupNotificationTitle", 695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SETUP_NOTIFICATION_TITLE, 705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupNotificationMessage", 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SETUP_NOTIFICATION_MESSAGE, 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupNotificationButtonTitle", 775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_NOTIFICATION_BUTTON_TITLE)); 795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Success notification strings. 815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "successNotificationTitle", 835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_EASY_UNLOCK_SUCCESS_NOTIFICATION_TITLE)); 845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "successNotificationMessage", 865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SUCCESS_NOTIFICATION_MESSAGE, 875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Setup dialog strings. 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Step 1: Intro. 915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroHeaderTitle", 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_HEADER_TITLE, device_type)); 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroHeaderText", 975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_HEADER_TEXT, device_type)); 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroHeaderFootnote", 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_HEADER_FOOTNOTE)); 1035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroFindPhoneButtonLabel", 1055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_FIND_PHONE_BUTTON_LABEL)); 1075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroFindingPhoneButtonLabel", 1095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_FINDING_PHONE_BUTTON_LABEL)); 1115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupIntroHowIsThisSecureLinkText", 1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_INTRO_HOW_IS_THIS_SECURE_LINK_TEXT)); 1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Step 2: Found a viable phone. 1165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupFoundPhoneHeaderTitle", 1185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 1195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_FOUND_PHONE_HEADER_TITLE, device_type)); 1205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupFoundPhoneHeaderText", 1225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_FOUND_PHONE_HEADER_TEXT, device_type)); 1245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupFoundPhoneUseThisPhoneButtonLabel", 1265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_FOUND_PHONE_USE_THIS_PHONE_BUTTON_LABEL)); 1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Step 3: Setup completed successfully. 1295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteHeaderTitle", 1315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_HEADER_TITLE)); 1335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteHeaderText", 1355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_HEADER_TEXT)); 1375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteTryItOutButtonLabel", 1395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_TRY_IT_OUT_BUTTON_LABEL)); 1415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupCompleteSettingsLinkText", 1435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_COMPLETE_SETTINGS_LINK_TEXT)); 1455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // Error strings. 1475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorBluetoothUnavailable", 1495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 1505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_BLUETOOTH_UNAVAILBLE, device_type)); 1515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorOffline", 1535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 1545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_OFFLINE, device_type)); 1555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorFindingPhone", 1575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_EASY_UNLOCK_SETUP_ERROR_FINDING_PHONE)); 1585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorBluetoothConnectionFailed", 1605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 1615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_BLUETOOTH_CONNECTION_FAILED, 1625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 1635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "setupErrorConnectingToPhone", 1655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16( 1665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_ERROR_CONNECTING_TO_PHONE, device_type)); 1675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(isherman): Remove these strings once the app has been updated. 1695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "notificationTitle", 1715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SETUP_NOTIFICATION_TITLE, 1725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 1735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "notificationMessage", 1755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_EASY_UNLOCK_SETUP_NOTIFICATION_MESSAGE, 1765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) device_type)); 1775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) strings->SetString( 1785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) "notificationButtonTitle", 1795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) l10n_util::GetStringUTF16( 1805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IDS_EASY_UNLOCK_SETUP_NOTIFICATION_BUTTON_TITLE)); 1815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SetResult(strings.release()); 1835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 1845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 1855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivatePerformECDHKeyAgreementFunction:: 1875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivatePerformECDHKeyAgreementFunction() {} 1885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivatePerformECDHKeyAgreementFunction:: 1905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivatePerformECDHKeyAgreementFunction() {} 1915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivatePerformECDHKeyAgreementFunction::RunAsync() { 1935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::PerformECDHKeyAgreement::Params> params = 1945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::PerformECDHKeyAgreement::Params::Create(*args_); 1955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params); 1965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 1975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->PerformECDHKeyAgreement( 1985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->private_key, 1995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->public_key, 2005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivatePerformECDHKeyAgreementFunction::OnData, 2015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 2025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 2035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivatePerformECDHKeyAgreementFunction::OnData( 2065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& secret_key) { 2075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 2085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!secret_key.empty()) { 2095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::PerformECDHKeyAgreement::Results::Create( 2105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) secret_key); 2115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 2125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 2135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGenerateEcP256KeyPairFunction:: 2165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGenerateEcP256KeyPairFunction() {} 2175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateGenerateEcP256KeyPairFunction:: 2195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivateGenerateEcP256KeyPairFunction() {} 2205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateGenerateEcP256KeyPairFunction::RunAsync() { 2225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->GenerateEcP256KeyPair( 2235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivateGenerateEcP256KeyPairFunction::OnData, 2245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 2255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 2265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivateGenerateEcP256KeyPairFunction::OnData( 2295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& private_key, 2305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& public_key) { 2315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 2325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!public_key.empty() && !private_key.empty()) { 2335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::GenerateEcP256KeyPair::Results::Create( 2345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public_key, private_key); 2355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 2365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 2375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCreateSecureMessageFunction:: 2405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCreateSecureMessageFunction() {} 2415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateCreateSecureMessageFunction:: 2435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivateCreateSecureMessageFunction() {} 2445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateCreateSecureMessageFunction::RunAsync() { 2465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::CreateSecureMessage::Params> params = 2475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::CreateSecureMessage::Params::Create(*args_); 2485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params); 2495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->CreateSecureMessage( 2515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->payload, 2525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->key, 2535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.associated_data ? 2545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *params->options.associated_data : std::string(), 2555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.public_metadata ? 2565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *params->options.public_metadata : std::string(), 2575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.verification_key_id ? 2585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *params->options.verification_key_id : std::string(), 2595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.encrypt_type, 2605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.sign_type, 2615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivateCreateSecureMessageFunction::OnData, 2625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 2635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 2645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivateCreateSecureMessageFunction::OnData( 2675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& message) { 2685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 2695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!message.empty()) { 2705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::CreateSecureMessage::Results::Create( 2715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) message); 2725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 2735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 2745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateUnwrapSecureMessageFunction:: 2775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateUnwrapSecureMessageFunction() {} 2785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2795f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateUnwrapSecureMessageFunction:: 2805f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)~EasyUnlockPrivateUnwrapSecureMessageFunction() {} 2815f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateUnwrapSecureMessageFunction::RunAsync() { 2835f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::UnwrapSecureMessage::Params> params = 2845f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::UnwrapSecureMessage::Params::Create(*args_); 2855f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params); 2865f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) GetCryptoDelegate(browser_context())->UnwrapSecureMessage( 2885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->secure_message, 2895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->key, 2905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.associated_data ? 2915f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *params->options.associated_data : std::string(), 2925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.encrypt_type, 2935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->options.sign_type, 2945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind(&EasyUnlockPrivateUnwrapSecureMessageFunction::OnData, 2955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 2965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 2975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 2985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 2995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivateUnwrapSecureMessageFunction::OnData( 3005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const std::string& data) { 3015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) // TODO(tbarzic): Improve error handling. 3025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (!data.empty()) 3035f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) results_ = easy_unlock_private::UnwrapSecureMessage::Results::Create(data); 3045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 3055f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3065f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3075f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction:: 3085f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction() {} 3095f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction:: 3115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ~EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction() {} 3125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)bool EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::RunAsync() { 3145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) scoped_ptr<easy_unlock_private::SeekBluetoothDeviceByAddress::Params> params( 3155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock_private::SeekBluetoothDeviceByAddress::Params::Create( 3165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) *args_)); 3175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) EXTENSION_FUNCTION_VALIDATE(params.get()); 3185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) easy_unlock::SeekBluetoothDeviceByAddress( 3205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) params->device_address, 3215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) base::Bind( 3225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) &EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction:: 3235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) OnSeekCompleted, 3245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) this)); 3255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return true; 3265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::OnSeekCompleted( 3295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const easy_unlock::SeekDeviceResult& seek_result) { 3305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (seek_result.success) { 3315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(true); 3325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } else { 3335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SetError(seek_result.error_message); 3345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SendResponse(false); 3355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 3365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} 3375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 3385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace api 3395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace extensions 340