OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/ui/webui/settings/certificates_handler.h" | 5 #include "chrome/browser/ui/webui/settings/certificates_handler.h" |
6 | 6 |
7 #include <errno.h> | 7 #include <errno.h> |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
451 } | 451 } |
452 } | 452 } |
453 | 453 |
454 void CertificatesHandler::FileSelectionCanceled(void* params) { | 454 void CertificatesHandler::FileSelectionCanceled(void* params) { |
455 switch (reinterpret_cast<intptr_t>(params)) { | 455 switch (reinterpret_cast<intptr_t>(params)) { |
456 case EXPORT_PERSONAL_FILE_SELECTED: | 456 case EXPORT_PERSONAL_FILE_SELECTED: |
457 case IMPORT_PERSONAL_FILE_SELECTED: | 457 case IMPORT_PERSONAL_FILE_SELECTED: |
458 case IMPORT_SERVER_FILE_SELECTED: | 458 case IMPORT_SERVER_FILE_SELECTED: |
459 case IMPORT_CA_FILE_SELECTED: | 459 case IMPORT_CA_FILE_SELECTED: |
460 ImportExportCleanup(); | 460 ImportExportCleanup(); |
461 RejectCallback(*base::Value::CreateNullValue()); | 461 RejectCallback(base::Value()); |
462 break; | 462 break; |
463 default: | 463 default: |
464 NOTREACHED(); | 464 NOTREACHED(); |
465 } | 465 } |
466 } | 466 } |
467 | 467 |
468 void CertificatesHandler::HandleViewCertificate(const base::ListValue* args) { | 468 void CertificatesHandler::HandleViewCertificate(const base::ListValue* args) { |
469 net::X509Certificate* cert = cert_id_map_->CallbackArgsToCert(args); | 469 net::X509Certificate* cert = cert_id_map_->CallbackArgsToCert(args); |
470 if (!cert) | 470 if (!cert) |
471 return; | 471 return; |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 trust_email * net::NSSCertDatabase::TRUSTED_EMAIL + | 534 trust_email * net::NSSCertDatabase::TRUSTED_EMAIL + |
535 trust_obj_sign * net::NSSCertDatabase::TRUSTED_OBJ_SIGN); | 535 trust_obj_sign * net::NSSCertDatabase::TRUSTED_OBJ_SIGN); |
536 if (!result) { | 536 if (!result) { |
537 // TODO(mattm): better error messages? | 537 // TODO(mattm): better error messages? |
538 RejectCallbackWithError( | 538 RejectCallbackWithError( |
539 l10n_util::GetStringUTF8( | 539 l10n_util::GetStringUTF8( |
540 IDS_SETTINGS_CERTIFICATE_MANAGER_SET_TRUST_ERROR_TITLE), | 540 IDS_SETTINGS_CERTIFICATE_MANAGER_SET_TRUST_ERROR_TITLE), |
541 l10n_util::GetStringUTF8( | 541 l10n_util::GetStringUTF8( |
542 IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR)); | 542 IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR)); |
543 } else { | 543 } else { |
544 ResolveCallback(*base::Value::CreateNullValue()); | 544 ResolveCallback(base::Value()); |
545 } | 545 } |
546 } | 546 } |
547 | 547 |
548 void CertificatesHandler::HandleExportPersonal(const base::ListValue* args) { | 548 void CertificatesHandler::HandleExportPersonal(const base::ListValue* args) { |
549 CHECK_EQ(2U, args->GetSize()); | 549 CHECK_EQ(2U, args->GetSize()); |
550 AssignWebUICallbackId(args); | 550 AssignWebUICallbackId(args); |
551 std::string node_id; | 551 std::string node_id; |
552 CHECK(args->GetString(1, &node_id)); | 552 CHECK(args->GetString(1, &node_id)); |
553 | 553 |
554 net::X509Certificate* cert = cert_id_map_->IdToCert(node_id); | 554 net::X509Certificate* cert = cert_id_map_->IdToCert(node_id); |
(...skipping 11 matching lines...) Expand all Loading... |
566 select_file_dialog_->SelectFile( | 566 select_file_dialog_->SelectFile( |
567 ui::SelectFileDialog::SELECT_SAVEAS_FILE, base::string16(), | 567 ui::SelectFileDialog::SELECT_SAVEAS_FILE, base::string16(), |
568 base::FilePath(), &file_type_info, 1, FILE_PATH_LITERAL("p12"), | 568 base::FilePath(), &file_type_info, 1, FILE_PATH_LITERAL("p12"), |
569 GetParentWindow(), | 569 GetParentWindow(), |
570 reinterpret_cast<void*>(EXPORT_PERSONAL_FILE_SELECTED)); | 570 reinterpret_cast<void*>(EXPORT_PERSONAL_FILE_SELECTED)); |
571 } | 571 } |
572 | 572 |
573 void CertificatesHandler::ExportPersonalFileSelected( | 573 void CertificatesHandler::ExportPersonalFileSelected( |
574 const base::FilePath& path) { | 574 const base::FilePath& path) { |
575 file_path_ = path; | 575 file_path_ = path; |
576 ResolveCallback(*base::Value::CreateNullValue()); | 576 ResolveCallback(base::Value()); |
577 } | 577 } |
578 | 578 |
579 void CertificatesHandler::HandleExportPersonalPasswordSelected( | 579 void CertificatesHandler::HandleExportPersonalPasswordSelected( |
580 const base::ListValue* args) { | 580 const base::ListValue* args) { |
581 CHECK_EQ(2U, args->GetSize()); | 581 CHECK_EQ(2U, args->GetSize()); |
582 AssignWebUICallbackId(args); | 582 AssignWebUICallbackId(args); |
583 CHECK(args->GetString(1, &password_)); | 583 CHECK(args->GetString(1, &password_)); |
584 | 584 |
585 // Currently, we don't support exporting more than one at a time. If we do, | 585 // Currently, we don't support exporting more than one at a time. If we do, |
586 // this would need to either change this to use UnlockSlotsIfNecessary or | 586 // this would need to either change this to use UnlockSlotsIfNecessary or |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
620 const int* bytes_written) { | 620 const int* bytes_written) { |
621 ImportExportCleanup(); | 621 ImportExportCleanup(); |
622 if (*write_errno) { | 622 if (*write_errno) { |
623 RejectCallbackWithError( | 623 RejectCallbackWithError( |
624 l10n_util::GetStringUTF8( | 624 l10n_util::GetStringUTF8( |
625 IDS_SETTINGS_CERTIFICATE_MANAGER_PKCS12_EXPORT_ERROR_TITLE), | 625 IDS_SETTINGS_CERTIFICATE_MANAGER_PKCS12_EXPORT_ERROR_TITLE), |
626 l10n_util::GetStringFUTF8( | 626 l10n_util::GetStringFUTF8( |
627 IDS_SETTINGS_CERTIFICATE_MANAGER_WRITE_ERROR_FORMAT, | 627 IDS_SETTINGS_CERTIFICATE_MANAGER_WRITE_ERROR_FORMAT, |
628 UTF8ToUTF16(base::safe_strerror(*write_errno)))); | 628 UTF8ToUTF16(base::safe_strerror(*write_errno)))); |
629 } else { | 629 } else { |
630 ResolveCallback(*base::Value::CreateNullValue()); | 630 ResolveCallback(base::Value()); |
631 } | 631 } |
632 } | 632 } |
633 | 633 |
634 void CertificatesHandler::HandleImportPersonal(const base::ListValue* args) { | 634 void CertificatesHandler::HandleImportPersonal(const base::ListValue* args) { |
635 CHECK_EQ(2U, args->GetSize()); | 635 CHECK_EQ(2U, args->GetSize()); |
636 AssignWebUICallbackId(args); | 636 AssignWebUICallbackId(args); |
637 CHECK(args->GetBoolean(1, &use_hardware_backed_)); | 637 CHECK(args->GetBoolean(1, &use_hardware_backed_)); |
638 | 638 |
639 ui::SelectFileDialog::FileTypeInfo file_type_info; | 639 ui::SelectFileDialog::FileTypeInfo file_type_info; |
640 file_type_info.extensions.resize(1); | 640 file_type_info.extensions.resize(1); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
736 // We do this by checking the value of |use_hardware_backed_| which is set | 736 // We do this by checking the value of |use_hardware_backed_| which is set |
737 // to true if importing into a hardware module. Currently, this only happens | 737 // to true if importing into a hardware module. Currently, this only happens |
738 // for Chrome OS when the "Import and Bind" option is chosen. | 738 // for Chrome OS when the "Import and Bind" option is chosen. |
739 bool is_extractable = !use_hardware_backed_; | 739 bool is_extractable = !use_hardware_backed_; |
740 int result = certificate_manager_model_->ImportFromPKCS12( | 740 int result = certificate_manager_model_->ImportFromPKCS12( |
741 slot_.get(), file_data_, password_, is_extractable); | 741 slot_.get(), file_data_, password_, is_extractable); |
742 ImportExportCleanup(); | 742 ImportExportCleanup(); |
743 int string_id; | 743 int string_id; |
744 switch (result) { | 744 switch (result) { |
745 case net::OK: | 745 case net::OK: |
746 ResolveCallback(*base::Value::CreateNullValue()); | 746 ResolveCallback(base::Value()); |
747 return; | 747 return; |
748 case net::ERR_PKCS12_IMPORT_BAD_PASSWORD: | 748 case net::ERR_PKCS12_IMPORT_BAD_PASSWORD: |
749 // TODO(mattm): if the error was a bad password, we should reshow the | 749 // TODO(mattm): if the error was a bad password, we should reshow the |
750 // password dialog after the user dismisses the error dialog. | 750 // password dialog after the user dismisses the error dialog. |
751 string_id = IDS_SETTINGS_CERTIFICATE_MANAGER_BAD_PASSWORD; | 751 string_id = IDS_SETTINGS_CERTIFICATE_MANAGER_BAD_PASSWORD; |
752 break; | 752 break; |
753 case net::ERR_PKCS12_IMPORT_INVALID_MAC: | 753 case net::ERR_PKCS12_IMPORT_INVALID_MAC: |
754 string_id = IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_INVALID_MAC; | 754 string_id = IDS_SETTINGS_CERTIFICATE_MANAGER_IMPORT_INVALID_MAC; |
755 break; | 755 break; |
756 case net::ERR_PKCS12_IMPORT_INVALID_FILE: | 756 case net::ERR_PKCS12_IMPORT_INVALID_FILE: |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
843 l10n_util::GetStringUTF8( | 843 l10n_util::GetStringUTF8( |
844 IDS_SETTINGS_CERTIFICATE_MANAGER_SERVER_IMPORT_ERROR_TITLE), | 844 IDS_SETTINGS_CERTIFICATE_MANAGER_SERVER_IMPORT_ERROR_TITLE), |
845 l10n_util::GetStringUTF8( | 845 l10n_util::GetStringUTF8( |
846 IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR)); | 846 IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR)); |
847 } else if (!not_imported.empty()) { | 847 } else if (!not_imported.empty()) { |
848 RejectCallbackWithImportError( | 848 RejectCallbackWithImportError( |
849 l10n_util::GetStringUTF8( | 849 l10n_util::GetStringUTF8( |
850 IDS_SETTINGS_CERTIFICATE_MANAGER_SERVER_IMPORT_ERROR_TITLE), | 850 IDS_SETTINGS_CERTIFICATE_MANAGER_SERVER_IMPORT_ERROR_TITLE), |
851 not_imported); | 851 not_imported); |
852 } else { | 852 } else { |
853 ResolveCallback(*base::Value::CreateNullValue()); | 853 ResolveCallback(base::Value()); |
854 } | 854 } |
855 ImportExportCleanup(); | 855 ImportExportCleanup(); |
856 } | 856 } |
857 | 857 |
858 void CertificatesHandler::HandleImportCA(const base::ListValue* args) { | 858 void CertificatesHandler::HandleImportCA(const base::ListValue* args) { |
859 CHECK_EQ(1U, args->GetSize()); | 859 CHECK_EQ(1U, args->GetSize()); |
860 AssignWebUICallbackId(args); | 860 AssignWebUICallbackId(args); |
861 | 861 |
862 select_file_dialog_ = ui::SelectFileDialog::Create( | 862 select_file_dialog_ = ui::SelectFileDialog::Create( |
863 this, new ChromeSelectFilePolicy(web_ui()->GetWebContents())); | 863 this, new ChromeSelectFilePolicy(web_ui()->GetWebContents())); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
935 l10n_util::GetStringUTF8( | 935 l10n_util::GetStringUTF8( |
936 IDS_SETTINGS_CERTIFICATE_MANAGER_CA_IMPORT_ERROR_TITLE), | 936 IDS_SETTINGS_CERTIFICATE_MANAGER_CA_IMPORT_ERROR_TITLE), |
937 l10n_util::GetStringUTF8( | 937 l10n_util::GetStringUTF8( |
938 IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR)); | 938 IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR)); |
939 } else if (!not_imported.empty()) { | 939 } else if (!not_imported.empty()) { |
940 RejectCallbackWithImportError( | 940 RejectCallbackWithImportError( |
941 l10n_util::GetStringUTF8( | 941 l10n_util::GetStringUTF8( |
942 IDS_SETTINGS_CERTIFICATE_MANAGER_CA_IMPORT_ERROR_TITLE), | 942 IDS_SETTINGS_CERTIFICATE_MANAGER_CA_IMPORT_ERROR_TITLE), |
943 not_imported); | 943 not_imported); |
944 } else { | 944 } else { |
945 ResolveCallback(*base::Value::CreateNullValue()); | 945 ResolveCallback(base::Value()); |
946 } | 946 } |
947 ImportExportCleanup(); | 947 ImportExportCleanup(); |
948 } | 948 } |
949 | 949 |
950 void CertificatesHandler::HandleExportCertificate(const base::ListValue* args) { | 950 void CertificatesHandler::HandleExportCertificate(const base::ListValue* args) { |
951 net::X509Certificate* cert = cert_id_map_->CallbackArgsToCert(args); | 951 net::X509Certificate* cert = cert_id_map_->CallbackArgsToCert(args); |
952 if (!cert) | 952 if (!cert) |
953 return; | 953 return; |
954 ShowCertExportDialog(web_ui()->GetWebContents(), GetParentWindow(), cert); | 954 ShowCertExportDialog(web_ui()->GetWebContents(), GetParentWindow(), cert); |
955 } | 955 } |
956 | 956 |
957 void CertificatesHandler::HandleDeleteCertificate(const base::ListValue* args) { | 957 void CertificatesHandler::HandleDeleteCertificate(const base::ListValue* args) { |
958 CHECK_EQ(2U, args->GetSize()); | 958 CHECK_EQ(2U, args->GetSize()); |
959 AssignWebUICallbackId(args); | 959 AssignWebUICallbackId(args); |
960 std::string node_id; | 960 std::string node_id; |
961 CHECK(args->GetString(1, &node_id)); | 961 CHECK(args->GetString(1, &node_id)); |
962 | 962 |
963 net::X509Certificate* cert = cert_id_map_->IdToCert(node_id); | 963 net::X509Certificate* cert = cert_id_map_->IdToCert(node_id); |
964 CHECK(cert); | 964 CHECK(cert); |
965 | 965 |
966 bool result = certificate_manager_model_->Delete(cert); | 966 bool result = certificate_manager_model_->Delete(cert); |
967 if (!result) { | 967 if (!result) { |
968 // TODO(mattm): better error messages? | 968 // TODO(mattm): better error messages? |
969 RejectCallbackWithError( | 969 RejectCallbackWithError( |
970 l10n_util::GetStringUTF8( | 970 l10n_util::GetStringUTF8( |
971 IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_CERT_ERROR_TITLE), | 971 IDS_SETTINGS_CERTIFICATE_MANAGER_DELETE_CERT_ERROR_TITLE), |
972 l10n_util::GetStringUTF8( | 972 l10n_util::GetStringUTF8( |
973 IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR)); | 973 IDS_SETTINGS_CERTIFICATE_MANAGER_UNKNOWN_ERROR)); |
974 } else { | 974 } else { |
975 ResolveCallback(*base::Value::CreateNullValue()); | 975 ResolveCallback(base::Value()); |
976 } | 976 } |
977 } | 977 } |
978 | 978 |
979 void CertificatesHandler::OnCertificateManagerModelCreated( | 979 void CertificatesHandler::OnCertificateManagerModelCreated( |
980 std::unique_ptr<CertificateManagerModel> model) { | 980 std::unique_ptr<CertificateManagerModel> model) { |
981 certificate_manager_model_ = std::move(model); | 981 certificate_manager_model_ = std::move(model); |
982 CertificateManagerModelReady(); | 982 CertificateManagerModelReady(); |
983 } | 983 } |
984 | 984 |
985 void CertificatesHandler::CertificateManagerModelReady() { | 985 void CertificatesHandler::CertificateManagerModelReady() { |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1138 error_info->Set(kCertificateErrors, | 1138 error_info->Set(kCertificateErrors, |
1139 base::WrapUnique(cert_error_list.release())); | 1139 base::WrapUnique(cert_error_list.release())); |
1140 RejectCallback(*error_info); | 1140 RejectCallback(*error_info); |
1141 } | 1141 } |
1142 | 1142 |
1143 gfx::NativeWindow CertificatesHandler::GetParentWindow() const { | 1143 gfx::NativeWindow CertificatesHandler::GetParentWindow() const { |
1144 return web_ui()->GetWebContents()->GetTopLevelNativeWindow(); | 1144 return web_ui()->GetWebContents()->GetTopLevelNativeWindow(); |
1145 } | 1145 } |
1146 | 1146 |
1147 } // namespace settings | 1147 } // namespace settings |
OLD | NEW |