OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_
api.h" | 5 #include "chrome/browser/extensions/api/easy_unlock_private/easy_unlock_private_
api.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
340 base::Bind(&EasyUnlockPrivatePerformECDHKeyAgreementFunction::OnData, | 340 base::Bind(&EasyUnlockPrivatePerformECDHKeyAgreementFunction::OnData, |
341 this)); | 341 this)); |
342 return true; | 342 return true; |
343 } | 343 } |
344 | 344 |
345 void EasyUnlockPrivatePerformECDHKeyAgreementFunction::OnData( | 345 void EasyUnlockPrivatePerformECDHKeyAgreementFunction::OnData( |
346 const std::string& secret_key) { | 346 const std::string& secret_key) { |
347 // TODO(tbarzic): Improve error handling. | 347 // TODO(tbarzic): Improve error handling. |
348 if (!secret_key.empty()) { | 348 if (!secret_key.empty()) { |
349 results_ = easy_unlock_private::PerformECDHKeyAgreement::Results::Create( | 349 results_ = easy_unlock_private::PerformECDHKeyAgreement::Results::Create( |
350 secret_key); | 350 std::vector<char>(secret_key.begin(), secret_key.end())); |
351 } | 351 } |
352 SendResponse(true); | 352 SendResponse(true); |
353 } | 353 } |
354 | 354 |
355 EasyUnlockPrivateGenerateEcP256KeyPairFunction:: | 355 EasyUnlockPrivateGenerateEcP256KeyPairFunction:: |
356 EasyUnlockPrivateGenerateEcP256KeyPairFunction() {} | 356 EasyUnlockPrivateGenerateEcP256KeyPairFunction() {} |
357 | 357 |
358 EasyUnlockPrivateGenerateEcP256KeyPairFunction:: | 358 EasyUnlockPrivateGenerateEcP256KeyPairFunction:: |
359 ~EasyUnlockPrivateGenerateEcP256KeyPairFunction() {} | 359 ~EasyUnlockPrivateGenerateEcP256KeyPairFunction() {} |
360 | 360 |
361 bool EasyUnlockPrivateGenerateEcP256KeyPairFunction::RunAsync() { | 361 bool EasyUnlockPrivateGenerateEcP256KeyPairFunction::RunAsync() { |
362 GetCryptoDelegate(browser_context())->GenerateEcP256KeyPair( | 362 GetCryptoDelegate(browser_context())->GenerateEcP256KeyPair( |
363 base::Bind(&EasyUnlockPrivateGenerateEcP256KeyPairFunction::OnData, | 363 base::Bind(&EasyUnlockPrivateGenerateEcP256KeyPairFunction::OnData, |
364 this)); | 364 this)); |
365 return true; | 365 return true; |
366 } | 366 } |
367 | 367 |
368 void EasyUnlockPrivateGenerateEcP256KeyPairFunction::OnData( | 368 void EasyUnlockPrivateGenerateEcP256KeyPairFunction::OnData( |
369 const std::string& private_key, | 369 const std::string& private_key, |
370 const std::string& public_key) { | 370 const std::string& public_key) { |
371 // TODO(tbarzic): Improve error handling. | 371 // TODO(tbarzic): Improve error handling. |
372 if (!public_key.empty() && !private_key.empty()) { | 372 if (!public_key.empty() && !private_key.empty()) { |
373 results_ = easy_unlock_private::GenerateEcP256KeyPair::Results::Create( | 373 results_ = easy_unlock_private::GenerateEcP256KeyPair::Results::Create( |
374 public_key, private_key); | 374 std::vector<char>(public_key.begin(), public_key.end()), |
| 375 std::vector<char>(private_key.begin(), private_key.end())); |
375 } | 376 } |
376 SendResponse(true); | 377 SendResponse(true); |
377 } | 378 } |
378 | 379 |
379 EasyUnlockPrivateCreateSecureMessageFunction:: | 380 EasyUnlockPrivateCreateSecureMessageFunction:: |
380 EasyUnlockPrivateCreateSecureMessageFunction() {} | 381 EasyUnlockPrivateCreateSecureMessageFunction() {} |
381 | 382 |
382 EasyUnlockPrivateCreateSecureMessageFunction:: | 383 EasyUnlockPrivateCreateSecureMessageFunction:: |
383 ~EasyUnlockPrivateCreateSecureMessageFunction() {} | 384 ~EasyUnlockPrivateCreateSecureMessageFunction() {} |
384 | 385 |
385 bool EasyUnlockPrivateCreateSecureMessageFunction::RunAsync() { | 386 bool EasyUnlockPrivateCreateSecureMessageFunction::RunAsync() { |
386 scoped_ptr<easy_unlock_private::CreateSecureMessage::Params> params = | 387 scoped_ptr<easy_unlock_private::CreateSecureMessage::Params> params = |
387 easy_unlock_private::CreateSecureMessage::Params::Create(*args_); | 388 easy_unlock_private::CreateSecureMessage::Params::Create(*args_); |
388 EXTENSION_FUNCTION_VALIDATE(params); | 389 EXTENSION_FUNCTION_VALIDATE(params); |
389 | 390 |
390 GetCryptoDelegate(browser_context())->CreateSecureMessage( | 391 GetCryptoDelegate(browser_context())->CreateSecureMessage( |
391 *params, | 392 *params, |
392 base::Bind(&EasyUnlockPrivateCreateSecureMessageFunction::OnData, | 393 base::Bind(&EasyUnlockPrivateCreateSecureMessageFunction::OnData, |
393 this)); | 394 this)); |
394 return true; | 395 return true; |
395 } | 396 } |
396 | 397 |
397 void EasyUnlockPrivateCreateSecureMessageFunction::OnData( | 398 void EasyUnlockPrivateCreateSecureMessageFunction::OnData( |
398 const std::string& message) { | 399 const std::string& message) { |
399 // TODO(tbarzic): Improve error handling. | 400 // TODO(tbarzic): Improve error handling. |
400 if (!message.empty()) { | 401 if (!message.empty()) { |
401 results_ = easy_unlock_private::CreateSecureMessage::Results::Create( | 402 results_ = easy_unlock_private::CreateSecureMessage::Results::Create( |
402 message); | 403 std::vector<char>(message.begin(), message.end())); |
403 } | 404 } |
404 SendResponse(true); | 405 SendResponse(true); |
405 } | 406 } |
406 | 407 |
407 EasyUnlockPrivateUnwrapSecureMessageFunction:: | 408 EasyUnlockPrivateUnwrapSecureMessageFunction:: |
408 EasyUnlockPrivateUnwrapSecureMessageFunction() {} | 409 EasyUnlockPrivateUnwrapSecureMessageFunction() {} |
409 | 410 |
410 EasyUnlockPrivateUnwrapSecureMessageFunction:: | 411 EasyUnlockPrivateUnwrapSecureMessageFunction:: |
411 ~EasyUnlockPrivateUnwrapSecureMessageFunction() {} | 412 ~EasyUnlockPrivateUnwrapSecureMessageFunction() {} |
412 | 413 |
413 bool EasyUnlockPrivateUnwrapSecureMessageFunction::RunAsync() { | 414 bool EasyUnlockPrivateUnwrapSecureMessageFunction::RunAsync() { |
414 scoped_ptr<easy_unlock_private::UnwrapSecureMessage::Params> params = | 415 scoped_ptr<easy_unlock_private::UnwrapSecureMessage::Params> params = |
415 easy_unlock_private::UnwrapSecureMessage::Params::Create(*args_); | 416 easy_unlock_private::UnwrapSecureMessage::Params::Create(*args_); |
416 EXTENSION_FUNCTION_VALIDATE(params); | 417 EXTENSION_FUNCTION_VALIDATE(params); |
417 | 418 |
418 GetCryptoDelegate(browser_context())->UnwrapSecureMessage( | 419 GetCryptoDelegate(browser_context())->UnwrapSecureMessage( |
419 *params, | 420 *params, |
420 base::Bind(&EasyUnlockPrivateUnwrapSecureMessageFunction::OnData, | 421 base::Bind(&EasyUnlockPrivateUnwrapSecureMessageFunction::OnData, |
421 this)); | 422 this)); |
422 return true; | 423 return true; |
423 } | 424 } |
424 | 425 |
425 void EasyUnlockPrivateUnwrapSecureMessageFunction::OnData( | 426 void EasyUnlockPrivateUnwrapSecureMessageFunction::OnData( |
426 const std::string& data) { | 427 const std::string& data) { |
427 // TODO(tbarzic): Improve error handling. | 428 // TODO(tbarzic): Improve error handling. |
428 if (!data.empty()) | 429 if (!data.empty()) { |
429 results_ = easy_unlock_private::UnwrapSecureMessage::Results::Create(data); | 430 results_ = easy_unlock_private::UnwrapSecureMessage::Results::Create( |
| 431 std::vector<char>(data.begin(), data.end())); |
| 432 } |
430 SendResponse(true); | 433 SendResponse(true); |
431 } | 434 } |
432 | 435 |
433 EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction:: | 436 EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction:: |
434 EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction() {} | 437 EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction() {} |
435 | 438 |
436 EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction:: | 439 EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction:: |
437 ~EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction() {} | 440 ~EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction() {} |
438 | 441 |
439 bool EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::RunAsync() { | 442 bool EasyUnlockPrivateSeekBluetoothDeviceByAddressFunction::RunAsync() { |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 EasyUnlockService::Get(profile)->GetChallenge(); | 619 EasyUnlockService::Get(profile)->GetChallenge(); |
617 if (!challenge.empty() && !params->nonce.empty()) { | 620 if (!challenge.empty() && !params->nonce.empty()) { |
618 EasyUnlockTpmKeyManager* key_manager = | 621 EasyUnlockTpmKeyManager* key_manager = |
619 EasyUnlockTpmKeyManagerFactory::GetInstance()->Get(profile); | 622 EasyUnlockTpmKeyManagerFactory::GetInstance()->Get(profile); |
620 if (!key_manager) { | 623 if (!key_manager) { |
621 SetError("No EasyUnlockTpmKeyManager."); | 624 SetError("No EasyUnlockTpmKeyManager."); |
622 return false; | 625 return false; |
623 } | 626 } |
624 key_manager->SignUsingTpmKey( | 627 key_manager->SignUsingTpmKey( |
625 EasyUnlockService::Get(profile)->GetUserEmail(), | 628 EasyUnlockService::Get(profile)->GetUserEmail(), |
626 params->nonce, | 629 std::string(params->nonce.begin(), params->nonce.end()), |
627 base::Bind(&EasyUnlockPrivateGetSignInChallengeFunction::OnDone, | 630 base::Bind(&EasyUnlockPrivateGetSignInChallengeFunction::OnDone, this, |
628 this, | |
629 challenge)); | 631 challenge)); |
630 } else { | 632 } else { |
631 OnDone(challenge, std::string()); | 633 OnDone(challenge, std::string()); |
632 } | 634 } |
633 return true; | 635 return true; |
634 #else // if !defined(OS_CHROMEOS) | 636 #else // if !defined(OS_CHROMEOS) |
635 SetError("Sign-in not supported."); | 637 SetError("Sign-in not supported."); |
636 return false; | 638 return false; |
637 #endif // defined(OS_CHROMEOS) | 639 #endif // defined(OS_CHROMEOS) |
638 } | 640 } |
639 | 641 |
640 void EasyUnlockPrivateGetSignInChallengeFunction::OnDone( | 642 void EasyUnlockPrivateGetSignInChallengeFunction::OnDone( |
641 const std::string& challenge, | 643 const std::string& challenge, |
642 const std::string& signed_nonce) { | 644 const std::string& signed_nonce) { |
643 results_ = easy_unlock_private::GetSignInChallenge::Results::Create( | 645 results_ = easy_unlock_private::GetSignInChallenge::Results::Create( |
644 challenge, signed_nonce); | 646 std::vector<char>(challenge.begin(), challenge.end()), |
| 647 std::vector<char>(signed_nonce.begin(), signed_nonce.end())); |
645 SendResponse(true); | 648 SendResponse(true); |
646 } | 649 } |
647 | 650 |
648 EasyUnlockPrivateTrySignInSecretFunction:: | 651 EasyUnlockPrivateTrySignInSecretFunction:: |
649 EasyUnlockPrivateTrySignInSecretFunction() { | 652 EasyUnlockPrivateTrySignInSecretFunction() { |
650 } | 653 } |
651 | 654 |
652 EasyUnlockPrivateTrySignInSecretFunction:: | 655 EasyUnlockPrivateTrySignInSecretFunction:: |
653 ~EasyUnlockPrivateTrySignInSecretFunction() { | 656 ~EasyUnlockPrivateTrySignInSecretFunction() { |
654 } | 657 } |
655 | 658 |
656 bool EasyUnlockPrivateTrySignInSecretFunction::RunSync() { | 659 bool EasyUnlockPrivateTrySignInSecretFunction::RunSync() { |
657 scoped_ptr<easy_unlock_private::TrySignInSecret::Params> params( | 660 scoped_ptr<easy_unlock_private::TrySignInSecret::Params> params( |
658 easy_unlock_private::TrySignInSecret::Params::Create(*args_)); | 661 easy_unlock_private::TrySignInSecret::Params::Create(*args_)); |
659 EXTENSION_FUNCTION_VALIDATE(params.get()); | 662 EXTENSION_FUNCTION_VALIDATE(params.get()); |
660 | 663 |
661 Profile* profile = Profile::FromBrowserContext(browser_context()); | 664 Profile* profile = Profile::FromBrowserContext(browser_context()); |
662 EasyUnlockService::Get(profile)->FinalizeSignin(params->sign_in_secret); | 665 EasyUnlockService::Get(profile)->FinalizeSignin(std::string( |
| 666 params->sign_in_secret.begin(), params->sign_in_secret.end())); |
663 return true; | 667 return true; |
664 } | 668 } |
665 | 669 |
666 EasyUnlockPrivateGetUserInfoFunction::EasyUnlockPrivateGetUserInfoFunction() { | 670 EasyUnlockPrivateGetUserInfoFunction::EasyUnlockPrivateGetUserInfoFunction() { |
667 } | 671 } |
668 | 672 |
669 EasyUnlockPrivateGetUserInfoFunction::~EasyUnlockPrivateGetUserInfoFunction() { | 673 EasyUnlockPrivateGetUserInfoFunction::~EasyUnlockPrivateGetUserInfoFunction() { |
670 } | 674 } |
671 | 675 |
672 bool EasyUnlockPrivateGetUserInfoFunction::RunSync() { | 676 bool EasyUnlockPrivateGetUserInfoFunction::RunSync() { |
(...skipping 25 matching lines...) Expand all Loading... |
698 #if defined(OS_CHROMEOS) | 702 #if defined(OS_CHROMEOS) |
699 EasyUnlockService* service = | 703 EasyUnlockService* service = |
700 EasyUnlockService::Get(Profile::FromBrowserContext(browser_context())); | 704 EasyUnlockService::Get(Profile::FromBrowserContext(browser_context())); |
701 const std::vector<ui::ScaleFactor>& supported_scale_factors = | 705 const std::vector<ui::ScaleFactor>& supported_scale_factors = |
702 ui::GetSupportedScaleFactors(); | 706 ui::GetSupportedScaleFactors(); |
703 | 707 |
704 base::RefCountedMemory* user_image = | 708 base::RefCountedMemory* user_image = |
705 chromeos::options::UserImageSource::GetUserImage( | 709 chromeos::options::UserImageSource::GetUserImage( |
706 service->GetUserEmail(), supported_scale_factors.back()); | 710 service->GetUserEmail(), supported_scale_factors.back()); |
707 | 711 |
708 results_ = easy_unlock_private::GetUserImage::Results::Create(std::string( | 712 results_ = |
709 reinterpret_cast<const char*>(user_image->front()), user_image->size())); | 713 easy_unlock_private::GetUserImage::Results::Create(std::vector<char>( |
| 714 user_image->front(), user_image->front() + user_image->size())); |
710 #else | 715 #else |
711 // TODO(tengs): Find a way to get the profile picture for non-ChromeOS | 716 // TODO(tengs): Find a way to get the profile picture for non-ChromeOS |
712 // devices. | 717 // devices. |
713 results_ = easy_unlock_private::GetUserImage::Results::Create(""); | 718 results_ = easy_unlock_private::GetUserImage::Results::Create(""); |
714 SetError("Not supported on non-ChromeOS platforms."); | 719 SetError("Not supported on non-ChromeOS platforms."); |
715 #endif | 720 #endif |
716 return true; | 721 return true; |
717 } | 722 } |
718 | 723 |
719 EasyUnlockPrivateGetConnectionInfoFunction:: | 724 EasyUnlockPrivateGetConnectionInfoFunction:: |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
754 scoped_ptr<base::ListValue> results(new base::ListValue()); | 759 scoped_ptr<base::ListValue> results(new base::ListValue()); |
755 results->AppendInteger(connection_info.rssi); | 760 results->AppendInteger(connection_info.rssi); |
756 results->AppendInteger(connection_info.transmit_power); | 761 results->AppendInteger(connection_info.transmit_power); |
757 results->AppendInteger(connection_info.max_transmit_power); | 762 results->AppendInteger(connection_info.max_transmit_power); |
758 SetResultList(results.Pass()); | 763 SetResultList(results.Pass()); |
759 SendResponse(true); | 764 SendResponse(true); |
760 } | 765 } |
761 | 766 |
762 } // namespace api | 767 } // namespace api |
763 } // namespace extensions | 768 } // namespace extensions |
OLD | NEW |