Remove CRX2 parsers from Chrome.
Unwinds some now-dead policy handling.
Repackages some remaining CRX2 items into CRX3.
Where they had no keys checked in, I created keys are rotated IDs.
For the component updater, I also had to change hash/size constants.
Removes a kiosk browsertest that verified CRX2 compatibility.
Bug: 740715
Change-Id: I3f96ff682400c509ba3050310c3ada3fcf552360
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1729917
Commit-Queue: Joshua Pawlicki <[email protected]>
Reviewed-by: Sergey Poromov <[email protected]>
Reviewed-by: Dominic Battré <[email protected]>
Reviewed-by: Denis Kuznetsov <[email protected]>
Reviewed-by: Alexander Alekseev <[email protected]>
Reviewed-by: proberge <[email protected]>
Reviewed-by: Devlin <[email protected]>
Reviewed-by: John Chen <[email protected]>
Auto-Submit: Joshua Pawlicki <[email protected]>
Cr-Commit-Position: refs/heads/master@{#692756}
diff --git a/chrome/browser/chromeos/app_mode/kiosk_app_data.cc b/chrome/browser/chromeos/app_mode/kiosk_app_data.cc
index 19a6e526..7b4bf4f 100644
--- a/chrome/browser/chromeos/app_mode/kiosk_app_data.cc
+++ b/chrome/browser/chromeos/app_mode/kiosk_app_data.cc
@@ -153,13 +153,8 @@
std::move(connector), extensions::Manifest::INTERNAL,
extensions::Extension::NO_FLAGS, temp_dir_.GetPath(),
task_runner_.get(), this);
- // Temporary allow CRX2 for kiosk apps.
- // See https://crbug.com/960428. Note that we don't have user policies at
- // this stage, so we have to explicitly allow CRX2 extension archive format.
- // TODO(crbug.com/740715): remove in M77.
unpacker->StartWithCrx(extensions::CRXFileInfo(
- crx_file_, extensions::GetPolicyVerifierFormat(
- true /* insecure_updates_enabled */)));
+ crx_file_, extensions::GetPolicyVerifierFormat()));
}
void NotifyFinishedInThreadPool() {
diff --git a/chrome/browser/chromeos/login/kiosk_browsertest.cc b/chrome/browser/chromeos/login/kiosk_browsertest.cc
index 9a8afe5..f66aebf 100644
--- a/chrome/browser/chromeos/login/kiosk_browsertest.cc
+++ b/chrome/browser/chromeos/login/kiosk_browsertest.cc
@@ -112,10 +112,6 @@
// detail/ggaeimfdpnmlhdhpcikgoblffmkckdmn
const char kTestKioskApp[] = "ggaeimfdpnmlhdhpcikgoblffmkckdmn";
-// This is the same as above, but packed in deprecated CRX2. It should work
-// before full deprecation of CRX2.
-const char kTestKioskCrx2App[] = "ggbflgnkafappblpkiflbgpmkfdpnhhe";
-
// This app creates a window and declares usage of the identity API in its
// manifest, so we can test device robot token minting via the identity API.
// Webstore data json is in
@@ -1358,39 +1354,6 @@
EXPECT_FALSE(login_display_host->GetAppLaunchController());
}
-class KioskCrx2Test : public KioskTest {
- public:
- KioskCrx2Test()
- : KioskTest(),
- test_install_attributes_(
- chromeos::StubInstallAttributes::CreateCloudManaged("example.com",
- "fake-id")) {}
-
- private:
- // Set up fake install attributes to make the device appeared as
- // enterprise-managed. This is needed because CRX2 is only allowed for
- // policy-based kiosk apps.
- chromeos::ScopedStubInstallAttributes test_install_attributes_;
-
- DISALLOW_COPY_AND_ASSIGN(KioskCrx2Test);
-};
-
-// Test that CRX2-packed apps still work for kiosk. This is a regression for
-// crbug.com/960428. TODO(crbug.com/740715): This test should fail in M78 after
-// full deprecation of CRX2.
-IN_PROC_BROWSER_TEST_F(KioskCrx2Test, InstallAndLaunchCrx2App) {
- set_test_app_id(kTestKioskCrx2App);
- set_test_crx_file(test_app_id() + ".crx");
- set_use_consumer_kiosk_mode(false);
- StartAppLaunchFromLoginScreen(
- NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_ONLINE);
- WaitForAppLaunchSuccess();
- KioskAppManager::App app;
- ASSERT_TRUE(KioskAppManager::Get()->GetApp(test_app_id(), &app));
- EXPECT_FALSE(app.was_auto_launched_with_zero_delay);
- EXPECT_EQ(extensions::Manifest::EXTERNAL_POLICY, GetInstalledAppLocation());
-}
-
class KioskUpdateTest : public KioskTest {
public:
KioskUpdateTest() {}
diff --git a/chrome/browser/chromeos/policy/device_local_account_policy_provider.cc b/chrome/browser/chromeos/policy/device_local_account_policy_provider.cc
index 00bf059..b1421b1 100644
--- a/chrome/browser/chromeos/policy/device_local_account_policy_provider.cc
+++ b/chrome/browser/chromeos/policy/device_local_account_policy_provider.cc
@@ -67,16 +67,6 @@
POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE,
POLICY_SOURCE_DEVICE_LOCAL_ACCOUNT_OVERRIDE,
std::make_unique<base::Value>(true), nullptr);
- } else if (type == DeviceLocalAccount::TYPE_KIOSK_APP) {
- chrome_policy_overrides = std::make_unique<PolicyMap>();
-
- // Temporary allow CRX2.
- // See https://crbug.com/960428.
- // TODO(crbug.com/740715): remove in M77.
- chrome_policy_overrides->Set(key::kExtensionAllowInsecureUpdates,
- POLICY_LEVEL_MANDATORY, POLICY_SCOPE_USER,
- POLICY_SOURCE_DEVICE_LOCAL_ACCOUNT_OVERRIDE,
- std::make_unique<base::Value>(true), nullptr);
}
std::unique_ptr<DeviceLocalAccountPolicyProvider> provider(
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index 3c32077..d2fd26b6 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -1739,12 +1739,10 @@
installer->set_install_immediately(info.install_immediately);
installer->set_creation_flags(info.creation_flags);
- CRXFileInfo file_info(
- info.path,
- info.crx_location == Manifest::EXTERNAL_POLICY
- ? GetPolicyVerifierFormat(ExtensionPrefs::Get(profile_)
- ->InsecureExtensionUpdatesEnabled())
- : GetExternalVerifierFormat());
+ CRXFileInfo file_info(info.path,
+ info.crx_location == Manifest::EXTERNAL_POLICY
+ ? GetPolicyVerifierFormat()
+ : GetExternalVerifierFormat());
#if defined(OS_CHROMEOS)
InstallLimiter::Get(profile_)->Add(installer, file_info);
#else
diff --git a/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc b/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc
index 14e579e..cfdfc7c 100644
--- a/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc
+++ b/chrome/browser/extensions/updater/chrome_extension_downloader_factory.cc
@@ -63,10 +63,7 @@
content::BrowserContext::GetDefaultStoragePartition(profile)
->GetURLLoaderFactoryForBrowserProcess(),
delegate, content::GetSystemConnector(),
- extensions::GetPolicyVerifierFormat(
- extensions::ExtensionPrefs::Get(profile)
- ->InsecureExtensionUpdatesEnabled()),
- profile->GetPath());
+ extensions::GetPolicyVerifierFormat(), profile->GetPath());
// NOTE: It is not obvious why it is OK to pass raw pointers to the token
// service and identity manager here. The logic is as follows:
diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
index 8cdc78e..1873a195 100644
--- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc
+++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc
@@ -463,11 +463,6 @@
{ key::kComponentUpdatesEnabled,
prefs::kComponentUpdatesEnabled,
base::Value::Type::BOOLEAN },
-#if BUILDFLAG(ENABLE_EXTENSIONS)
- { key::kExtensionAllowInsecureUpdates,
- extensions::pref_names::kInsecureExtensionUpdatesEnabled,
- base::Value::Type::BOOLEAN },
-#endif // BUILDFLAG(ENABLE_EXTENSIONS)
#if BUILDFLAG(ENABLE_SPELLCHECK)
{ key::kSpellCheckServiceEnabled,
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc
index c12716e7..21d003f 100644
--- a/chrome/browser/prefs/browser_prefs.cc
+++ b/chrome/browser/prefs/browser_prefs.cc
@@ -486,6 +486,9 @@
#endif
// Deprecated 8/2019
+const char kInsecureExtensionUpdatesEnabled[] =
+ "extension_updates.insecure_extension_updates_enabled";
+
const char kLastStartupTimestamp[] = "startup_metric.last_startup_timestamp";
// Deprecated 8/2019
@@ -564,6 +567,8 @@
registry->RegisterIntegerPref(kLocalProfileId, 0);
#endif
+ registry->RegisterBooleanPref(kInsecureExtensionUpdatesEnabled, false);
+
registry->RegisterDictionaryPref(kHintLoadedCounts);
}
@@ -1167,6 +1172,7 @@
profile_prefs->ClearPref(kLocalProfileId);
#endif
- // Added 8/2019.
+ // Added 8/2019
+ profile_prefs->ClearPref(kInsecureExtensionUpdatesEnabled);
profile_prefs->ClearPref(kHintLoadedCounts);
}
diff --git a/chrome/chrome_cleaner/components/component_unpacker.cc b/chrome/chrome_cleaner/components/component_unpacker.cc
index 1cd0531..ea6dcf1 100644
--- a/chrome/chrome_cleaner/components/component_unpacker.cc
+++ b/chrome/chrome_cleaner/components/component_unpacker.cc
@@ -22,8 +22,8 @@
}
bool ComponentUnpacker::Verify() {
- return crx_file::Verify(path_, crx_file::VerifierFormat::CRX2_OR_CRX3,
- {pk_hash_}, std::vector<uint8_t>(), nullptr,
+ return crx_file::Verify(path_, crx_file::VerifierFormat::CRX3, {pk_hash_},
+ std::vector<uint8_t>(), nullptr,
nullptr) == crx_file::VerifierResult::OK_FULL;
}
diff --git a/chrome/chrome_cleaner/components/recovery_component.cc b/chrome/chrome_cleaner/components/recovery_component.cc
index e32761b..a9532321 100644
--- a/chrome/chrome_cleaner/components/recovery_component.cc
+++ b/chrome/chrome_cleaner/components/recovery_component.cc
@@ -39,7 +39,7 @@
const char kComponentDownloadUrl[] =
"https://clients2.google.com/service/update2/crx?response=redirect&os=win"
"&arch=x86&installsource=swreporter&x=id%3Dnpdjjkjlcidkjlamlmmdelcjbcpdjocm"
- "%26v%3D0.0.0.0%26uc";
+ "%26v%3D0.0.0.0%26uc&acceptformat=crx3";
// CRX hash. The extension id is: npdjjkjlcidkjlamlmmdelcjbcpdjocm.
const uint8_t kSha2Hash[] = {0xdf, 0x39, 0x9a, 0x9b, 0x28, 0x3a, 0x9b, 0x0c,
diff --git a/chrome/test/chromedriver/chrome_launcher.cc b/chrome/test/chromedriver/chrome_launcher.cc
index ec0e1e0e5..68d0aaace 100644
--- a/chrome/test/chromedriver/chrome_launcher.cc
+++ b/chrome/test/chromedriver/chrome_launcher.cc
@@ -819,7 +819,7 @@
if (is_crx_file) {
crx_file::VerifierResult result =
- crx_file::Verify(extension_crx, crx_file::VerifierFormat::CRX2_OR_CRX3,
+ crx_file::Verify(extension_crx, crx_file::VerifierFormat::CRX3,
{} /** required_key_hashes */,
{} /** required_file_hash */, &public_key_base64, &id);
if (result != crx_file::VerifierResult::OK_FULL) {
diff --git a/chrome/test/chromedriver/chrome_launcher_unittest.cc b/chrome/test/chromedriver/chrome_launcher_unittest.cc
index 51813ae71..257d247a 100644
--- a/chrome/test/chromedriver/chrome_launcher_unittest.cc
+++ b/chrome/test/chromedriver/chrome_launcher_unittest.cc
@@ -121,14 +121,21 @@
std::string key;
ASSERT_TRUE(manifest_dict->GetString("key", &key));
ASSERT_EQ(
- "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8qhZthEHjTIA3IYMzi79s2KFepVziY0du"
- "JzHcqRUB/YHSGseIUqcYXGazJhDz/"
- "4FbRg8ef9fQazL1UbMMGBIf4za1kJ2os2MsRrNXzHslkbtcLVj2VfofhuHJmu+"
- "CnKJ77UWamJiNAaQSiclu4duwnEWrkx+g/8ChQfhZzC4jvQIDAQAB",
+ "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxbE7gPHcoZQX7Nv1Tpq8Osz3hhC"
+ "fUPZpMCcsYALXYsICUMdFNPvsq4AsfzcIJN2Qc6C9GwlDgBEYQgC6zD9ULoSnHu3iJem49b"
+ "yAzBciO5zMCXBKHx3HN63QJBOKXhIZMdpZePx22fnZjfeLA6zOnGoH6F0YXX+uNsU5qgV9l"
+ "G4je2XwU050l1u1DAcuzrPVcma32rbfXC3mwZjQxgghCqn/hI0/OBcCU37sWBgPci8uk4Wd"
+ "Ee1frQTN2vpQJ0fJl0SaPGCNmpmJ708n/qwpVvmqK99JPznJoT5dahuZoTyoGl092sbpstY"
+ "H+nQ/66yDoztwerywl+lRYgMJstLlRUgrTwmaA4klweuctSfSA40+2kMWSOL+myCyziZ7Ec"
+ "E98ZEGtLaPW5OYxO8r4aQz11q4NyGL/wVDevWHJmprlrjP/zd3GAo6/nwhu+WvdtHlnkGHr"
+ "OVtOdjUPhL+FCvqaj/sMt3ELgIK5h8nt42xPxf8P/cYV+aRuZCd2hAqiNXOQ6HLU0TIdc2X"
+ "dnQtotb3/wuPvRFXqU0o0SAeEwGRoOxr6WqkOLuBuvwNtcKc/cCqxWMlcnId5TWX+tPEpUM"
+ "4Imgbf6jIB2FPpSXQMLHQkag+k95aiXqkpirlhUaBA5yrClFLjw+Ld2yqJfh961yncxF+IB"
+ "EmivSdNH0cYZBISf8CAwEAAQ==",
key);
ASSERT_EQ(1u, bg_pages.size());
ASSERT_EQ(
- "chrome-extension://jijhlkpcmmeckhlgdipjhnchhoabdjae/"
+ "chrome-extension://ejapkfeonjhabbbnlpmcgholnoicapdb/"
"_generated_background_page.html",
bg_pages[0]);
}
diff --git a/chrome/test/data/chromedriver/diff_key_from_header.crx b/chrome/test/data/chromedriver/diff_key_from_header.crx
index 5182d47..9fc2f56 100644
--- a/chrome/test/data/chromedriver/diff_key_from_header.crx
+++ b/chrome/test/data/chromedriver/diff_key_from_header.crx
Binary files differ
diff --git a/chrome/test/data/chromedriver/ext_slow_loader.crx b/chrome/test/data/chromedriver/ext_slow_loader.crx
index 42326a44..8195e67 100644
--- a/chrome/test/data/chromedriver/ext_slow_loader.crx
+++ b/chrome/test/data/chromedriver/ext_slow_loader.crx
Binary files differ
diff --git a/chrome/test/data/chromedriver/ext_slow_loader.pem b/chrome/test/data/chromedriver/ext_slow_loader.pem
new file mode 100644
index 0000000..6716e301
--- /dev/null
+++ b/chrome/test/data/chromedriver/ext_slow_loader.pem
@@ -0,0 +1,52 @@
+-----BEGIN PRIVATE KEY-----
+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
+urWWLLKegrU4WARTuLJ4u6rH+rgu
+-----END PRIVATE KEY-----
diff --git a/chrome/test/data/chromedriver/ext_test_1.crx b/chrome/test/data/chromedriver/ext_test_1.crx
index cf92667..1f7fd3e 100644
--- a/chrome/test/data/chromedriver/ext_test_1.crx
+++ b/chrome/test/data/chromedriver/ext_test_1.crx
Binary files differ
diff --git a/chrome/test/data/chromedriver/ext_test_1.pem b/chrome/test/data/chromedriver/ext_test_1.pem
new file mode 100644
index 0000000..6f939721
--- /dev/null
+++ b/chrome/test/data/chromedriver/ext_test_1.pem
@@ -0,0 +1,52 @@
+-----BEGIN PRIVATE KEY-----
+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
+BiI50We5G98vHE8T68EOv6Y63iTSMVLbNg==
+-----END PRIVATE KEY-----
diff --git a/chrome/test/data/chromedriver/ext_test_2.crx b/chrome/test/data/chromedriver/ext_test_2.crx
index fdde964..c1950620 100644
--- a/chrome/test/data/chromedriver/ext_test_2.crx
+++ b/chrome/test/data/chromedriver/ext_test_2.crx
Binary files differ
diff --git a/chrome/test/data/chromedriver/ext_test_2.pem b/chrome/test/data/chromedriver/ext_test_2.pem
new file mode 100644
index 0000000..535f248
--- /dev/null
+++ b/chrome/test/data/chromedriver/ext_test_2.pem
@@ -0,0 +1,52 @@
+-----BEGIN PRIVATE KEY-----
+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
+aT4Phjsv8TEC8+63UndBw4sjSKf40A==
+-----END PRIVATE KEY-----
diff --git a/chrome/test/data/chromedriver/frames_extension.crx b/chrome/test/data/chromedriver/frames_extension.crx
index 1ed451f..9312a07 100644
--- a/chrome/test/data/chromedriver/frames_extension.crx
+++ b/chrome/test/data/chromedriver/frames_extension.crx
Binary files differ
diff --git a/chrome/test/data/chromedriver/no_key_in_manifest.crx b/chrome/test/data/chromedriver/no_key_in_manifest.crx
index bc8eff03..79b4d01 100644
--- a/chrome/test/data/chromedriver/no_key_in_manifest.crx
+++ b/chrome/test/data/chromedriver/no_key_in_manifest.crx
Binary files differ
diff --git a/chrome/test/data/chromedriver/same_key_as_header.crx b/chrome/test/data/chromedriver/same_key_as_header.crx
index 031cb2bb..6ea36a00 100644
--- a/chrome/test/data/chromedriver/same_key_as_header.crx
+++ b/chrome/test/data/chromedriver/same_key_as_header.crx
Binary files differ
diff --git a/chrome/test/data/chromeos/app_mode/external_update/lower_crx_version/ajoggoflpgplnnjkjamcmbepjdjdnpdp-3.0.0.crx b/chrome/test/data/chromeos/app_mode/external_update/lower_crx_version/ajoggoflpgplnnjkjamcmbepjdjdnpdp-3.0.0.crx
deleted file mode 100644
index 73a9688..0000000
--- a/chrome/test/data/chromeos/app_mode/external_update/lower_crx_version/ajoggoflpgplnnjkjamcmbepjdjdnpdp-3.0.0.crx
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/chromeos/app_mode/webstore/downloads/ggbflgnkafappblpkiflbgpmkfdpnhhe.crx b/chrome/test/data/chromeos/app_mode/webstore/downloads/ggbflgnkafappblpkiflbgpmkfdpnhhe.crx
deleted file mode 100644
index 66f96d4..0000000
--- a/chrome/test/data/chromeos/app_mode/webstore/downloads/ggbflgnkafappblpkiflbgpmkfdpnhhe.crx
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/chromeos/app_mode/webstore/downloads/ggbflgnkafappblpkiflbgpmkfdpnhhe.crx.mock-http-headers b/chrome/test/data/chromeos/app_mode/webstore/downloads/ggbflgnkafappblpkiflbgpmkfdpnhhe.crx.mock-http-headers
deleted file mode 100644
index 707bb1f..0000000
--- a/chrome/test/data/chromeos/app_mode/webstore/downloads/ggbflgnkafappblpkiflbgpmkfdpnhhe.crx.mock-http-headers
+++ /dev/null
@@ -1,2 +0,0 @@
-HTTP/1.1 200 OK
-Content-Type: application/x-chrome-extension
diff --git a/chrome/test/data/extensions/api_test/browser_action/empty_browser_action_alpha.crx b/chrome/test/data/extensions/api_test/browser_action/empty_browser_action_alpha.crx
deleted file mode 100644
index 2025a2b..0000000
--- a/chrome/test/data/extensions/api_test/browser_action/empty_browser_action_alpha.crx
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/extensions/api_test/browser_action/empty_browser_action_beta.crx b/chrome/test/data/extensions/api_test/browser_action/empty_browser_action_beta.crx
deleted file mode 100644
index 191d28b..0000000
--- a/chrome/test/data/extensions/api_test/browser_action/empty_browser_action_beta.crx
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/extensions/api_test/browser_action/empty_browser_action_gamma.crx b/chrome/test/data/extensions/api_test/browser_action/empty_browser_action_gamma.crx
deleted file mode 100644
index 8476512..0000000
--- a/chrome/test/data/extensions/api_test/browser_action/empty_browser_action_gamma.crx
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/extensions/api_test/webstore_private/bundle/begfmnajjkbjdgmffnjaojchoncnmngg.crx b/chrome/test/data/extensions/api_test/webstore_private/bundle/begfmnajjkbjdgmffnjaojchoncnmngg.crx
deleted file mode 100644
index 3d1ecca..0000000
--- a/chrome/test/data/extensions/api_test/webstore_private/bundle/begfmnajjkbjdgmffnjaojchoncnmngg.crx
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/extensions/api_test/webstore_private/bundle/begfmnajjkbjdgmffnjaojchoncnmngg.pem b/chrome/test/data/extensions/api_test/webstore_private/bundle/begfmnajjkbjdgmffnjaojchoncnmngg.pem
deleted file mode 100644
index 40fd445..0000000
--- a/chrome/test/data/extensions/api_test/webstore_private/bundle/begfmnajjkbjdgmffnjaojchoncnmngg.pem
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAK2fNXqRvU7cAJmPp
-XYmV0x96j9157th9YOPgP2qWtNEYp+e4pDgtr6FbmnrytDTbCCkyy2GgJmhX7I1x9
-FPZv7/kAYEH78IDNMHyEtbHJOkAhofZdVT7KdtDehhcZziKdBjtML/gY33ZGMBmDM
-PZsGJART/Zt9lj/5jexv80UiVAgMBAAECgYEAqe/VFl0jn9YyOBujZhttAw+Tgf3T
-jVL6TYTeSmq9b1/V8EpBlHB+LcjII6CI6RCnGuRxgePOZ5DN6848ACDpuzyA7m1/x
-ndm0KZnQN43EpMj8TLHcsnIZOiO2P/3Rc/srubwZR2oqgZicC8+mYNvwN1d+FHt6u
-2HzivMIcOJK0ECQQDWb0buj6XyV2dhdvhOwlONQYHPKWutNjPfDBf0o+rRGCW4SA9
-l9dozvkVnTuuGnv7PQBRDIae1zOKx8uHBz6zdAkEAz0a2S2hAxgeBSpt2UmixuYwA
-aLi3AX4tT6eAgAXGymVwtRXcBPUijB4itE3DHcFhyk4IzjBFFxdryMxAArkTGQJAL
-h/3gP8zMeKtISDnHoHcWQkbNAVz3OlI1RST3pKXwuxPyMjvTv5INlMaOLOYI/f1VX
-0yHpKRsaBlruNQvlC+nQJBAMxOcOUHD8GiKCi37/ruwy+W9dhDKe/IxTTcb+bAyt8
-4+c0kjMg+MB1YnvCGLaqosJFONZO3NIK8TTuRSA7nChECQQCNMCKYF/3NftJOFZKP
-eYGKagaFjwuPHj39qpGKJtCdwg5oIAtw/xlz7rSRfegQ/hGTAikXiPHt0ZIjU4Tps
-v+k
------END PRIVATE KEY-----
diff --git a/chrome/test/data/extensions/secure_shell/SecureShell-dev-0.8.2.0.crx b/chrome/test/data/extensions/secure_shell/SecureShell-dev-0.8.2.0.crx
deleted file mode 100644
index a5a8a5f..0000000
--- a/chrome/test/data/extensions/secure_shell/SecureShell-dev-0.8.2.0.crx
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/extensions/secure_shell/SecureShell-stable-0.8.2.0.crx b/chrome/test/data/extensions/secure_shell/SecureShell-stable-0.8.2.0.crx
deleted file mode 100644
index a5a8a5f..0000000
--- a/chrome/test/data/extensions/secure_shell/SecureShell-stable-0.8.2.0.crx
+++ /dev/null
Binary files differ
diff --git a/chrome/test/data/policy/policy_test_cases.json b/chrome/test/data/policy/policy_test_cases.json
index a3e903e9..81f97ac 100644
--- a/chrome/test/data/policy/policy_test_cases.json
+++ b/chrome/test/data/policy/policy_test_cases.json
@@ -1178,11 +1178,7 @@
},
"ExtensionAllowInsecureUpdates": {
- "os": ["win", "linux", "mac", "chromeos"],
- "test_policy": { "ExtensionAllowInsecureUpdates": true },
- "pref_mappings": [
- { "pref": "extension_updates.insecure_extension_updates_enabled" }
- ]
+ "note": "Deprecated since Chrome 78."
},
"ExtensionInstallBlacklist": {
diff --git a/components/component_updater/component_installer_unittest.cc b/components/component_updater/component_installer_unittest.cc
index 2e0534a..bb10de3 100644
--- a/components/component_updater/component_installer_unittest.cc
+++ b/components/component_updater/component_installer_unittest.cc
@@ -246,8 +246,7 @@
auto component_unpacker = base::MakeRefCounted<ComponentUnpacker>(
std::vector<uint8_t>(std::begin(kSha256Hash), std::end(kSha256Hash)),
crx_path, nullptr, config->GetUnzipperFactory()->Create(),
- config->GetPatcherFactory()->Create(),
- crx_file::VerifierFormat::CRX2_OR_CRX3);
+ config->GetPatcherFactory()->Create(), crx_file::VerifierFormat::CRX3);
component_unpacker->Unpack(base::BindOnce(
&ComponentInstallerTest::UnpackComplete, base::Unretained(this)));
RunThreads();
diff --git a/components/crx_file/crx_verifier.cc b/components/crx_file/crx_verifier.cc
index 0d20251..1f523a7 100644
--- a/components/crx_file/crx_verifier.cc
+++ b/components/crx_file/crx_verifier.cc
@@ -29,12 +29,6 @@
namespace {
-// The maximum size the Crx2 parser will tolerate for a public key.
-constexpr uint32_t kMaxPublicKeySize = 1 << 16;
-
-// The maximum size the Crx2 parser will tolerate for a signature.
-constexpr uint32_t kMaxSignatureSize = 1 << 16;
-
// The maximum size the Crx3 parser will tolerate for a header.
constexpr uint32_t kMaxHeaderSize = 1 << 18;
@@ -206,53 +200,6 @@
return VerifierResult::OK_FULL;
}
-VerifierResult VerifyCrx2(
- base::File* file,
- crypto::SecureHash* hash,
- const std::vector<std::vector<uint8_t>>& required_key_hashes,
- std::string* public_key,
- std::string* crx_id) {
- const uint32_t key_size = ReadAndHashLittleEndianUInt32(file, hash);
- if (key_size > kMaxPublicKeySize)
- return VerifierResult::ERROR_HEADER_INVALID;
- const uint32_t sig_size = ReadAndHashLittleEndianUInt32(file, hash);
- if (sig_size > kMaxSignatureSize)
- return VerifierResult::ERROR_HEADER_INVALID;
- std::vector<uint8_t> key(key_size);
- if (ReadAndHashBuffer(key.data(), key_size, file, hash) !=
- static_cast<int>(key_size))
- return VerifierResult::ERROR_HEADER_INVALID;
- for (const auto& expected_hash : required_key_hashes) {
- // In practice we expect zero or one key_hashes_ for Crx2 files.
- std::vector<uint8_t> hash(crypto::kSHA256Length);
- std::unique_ptr<crypto::SecureHash> sha256 =
- crypto::SecureHash::Create(crypto::SecureHash::SHA256);
- sha256->Update(key.data(), key.size());
- sha256->Finish(hash.data(), hash.size());
- if (hash != expected_hash)
- return VerifierResult::ERROR_REQUIRED_PROOF_MISSING;
- }
-
- std::vector<uint8_t> sig(sig_size);
- if (ReadAndHashBuffer(sig.data(), sig_size, file, hash) !=
- static_cast<int>(sig_size))
- return VerifierResult::ERROR_HEADER_INVALID;
- std::vector<std::unique_ptr<crypto::SignatureVerifier>> verifiers;
- verifiers.push_back(std::make_unique<crypto::SignatureVerifier>());
- if (!verifiers[0]->VerifyInit(crypto::SignatureVerifier::RSA_PKCS1_SHA1, sig,
- key)) {
- return VerifierResult::ERROR_SIGNATURE_INITIALIZATION_FAILED;
- }
-
- if (!ReadHashAndVerifyArchive(file, hash, verifiers))
- return VerifierResult::ERROR_SIGNATURE_VERIFICATION_FAILED;
-
- const std::string public_key_bytes(key.begin(), key.end());
- base::Base64Encode(public_key_bytes, public_key);
- *crx_id = id_util::GenerateId(public_key_bytes);
- return VerifierResult::OK_FULL;
-}
-
} // namespace
VerifierResult Verify(
@@ -287,15 +234,7 @@
const uint32_t version =
ReadAndHashLittleEndianUInt32(&file, file_hash.get());
VerifierResult result;
- if (version == 2)
- LOG(WARNING) << "File '" << crx_path
- << "' is in CRX2 format, which is deprecated and will not be "
- "supported in M78+";
- if (format == VerifierFormat::CRX2_OR_CRX3 &&
- (version == 2 || (diff && version == 0))) {
- result = VerifyCrx2(&file, file_hash.get(), required_key_hashes,
- &public_key_local, &crx_id_local);
- } else if (version == 3) {
+ if (version == 3) {
bool require_publisher_key =
format == VerifierFormat::CRX3_WITH_PUBLISHER_PROOF ||
format == VerifierFormat::CRX3_WITH_TEST_PUBLISHER_PROOF;
diff --git a/components/crx_file/crx_verifier.h b/components/crx_file/crx_verifier.h
index b770626..a206442 100644
--- a/components/crx_file/crx_verifier.h
+++ b/components/crx_file/crx_verifier.h
@@ -16,7 +16,6 @@
namespace crx_file {
enum class VerifierFormat {
- CRX2_OR_CRX3, // Accept Crx2 or Crx3.
CRX3, // Accept only Crx3.
CRX3_WITH_TEST_PUBLISHER_PROOF, // Accept only Crx3 with a test or production
// publisher proof.
diff --git a/components/crx_file/crx_verifier_unittest.cc b/components/crx_file/crx_verifier_unittest.cc
index 8028b7c..70bcd310 100644
--- a/components/crx_file/crx_verifier_unittest.cc
+++ b/components/crx_file/crx_verifier_unittest.cc
@@ -49,28 +49,15 @@
using CrxVerifierTest = testing::Test;
-TEST_F(CrxVerifierTest, ValidFullCrx2) {
- const std::vector<std::vector<uint8_t>> keys;
- const std::vector<uint8_t> hash;
- std::string public_key;
- std::string crx_id;
-
- EXPECT_EQ(VerifierResult::OK_FULL,
- Verify(TestFile("valid.crx2"), VerifierFormat::CRX2_OR_CRX3, keys,
- hash, &public_key, &crx_id));
- EXPECT_EQ(std::string(kOjjHash), crx_id);
- EXPECT_EQ(std::string(kOjjKey), public_key);
-}
-
TEST_F(CrxVerifierTest, ValidFullCrx3) {
const std::vector<std::vector<uint8_t>> keys;
const std::vector<uint8_t> hash;
std::string public_key = "UNSET";
std::string crx_id = "UNSET";
- EXPECT_EQ(VerifierResult::OK_FULL, Verify(TestFile("valid_no_publisher.crx3"),
- VerifierFormat::CRX2_OR_CRX3, keys,
- hash, &public_key, &crx_id));
+ EXPECT_EQ(VerifierResult::OK_FULL,
+ Verify(TestFile("valid_no_publisher.crx3"), VerifierFormat::CRX3,
+ keys, hash, &public_key, &crx_id));
EXPECT_EQ(std::string(kOjjHash), crx_id);
EXPECT_EQ(std::string(kOjjKey), public_key);
@@ -105,9 +92,9 @@
std::string public_key = "UNSET";
std::string crx_id = "UNSET";
- EXPECT_EQ(VerifierResult::OK_FULL, Verify(TestFile("valid_no_publisher.crx3"),
- VerifierFormat::CRX2_OR_CRX3, keys,
- hash, &public_key, &crx_id));
+ EXPECT_EQ(VerifierResult::OK_FULL,
+ Verify(TestFile("valid_no_publisher.crx3"), VerifierFormat::CRX3,
+ keys, hash, &public_key, &crx_id));
EXPECT_EQ(std::string(kOjjHash), crx_id);
EXPECT_EQ(std::string(kOjjKey), public_key);
@@ -142,10 +129,9 @@
const std::vector<std::vector<uint8_t>> good_keys = {good_key};
std::string public_key = "UNSET";
std::string crx_id = "UNSET";
- EXPECT_EQ(
- VerifierResult::OK_FULL,
- Verify(TestFile("valid_no_publisher.crx3"), VerifierFormat::CRX2_OR_CRX3,
- good_keys, hash, &public_key, &crx_id));
+ EXPECT_EQ(VerifierResult::OK_FULL,
+ Verify(TestFile("valid_no_publisher.crx3"), VerifierFormat::CRX3,
+ good_keys, hash, &public_key, &crx_id));
EXPECT_EQ(std::string(kOjjHash), crx_id);
EXPECT_EQ(std::string(kOjjKey), public_key);
@@ -238,8 +224,8 @@
std::string public_key = "UNSET";
std::string crx_id = "UNSET";
EXPECT_EQ(VerifierResult::ERROR_REQUIRED_PROOF_MISSING,
- Verify(TestFile("unsigned.crx3"), VerifierFormat::CRX2_OR_CRX3,
- keys, hash, &public_key, &crx_id));
+ Verify(TestFile("unsigned.crx3"), VerifierFormat::CRX3, keys, hash,
+ &public_key, &crx_id));
EXPECT_EQ("UNSET", crx_id);
EXPECT_EQ("UNSET", public_key);
}
diff --git a/components/policy/resources/policy_templates.json b/components/policy/resources/policy_templates.json
index 83a5ff66..f1f4ca5 100644
--- a/components/policy/resources/policy_templates.json
+++ b/components/policy/resources/policy_templates.json
@@ -3727,8 +3727,9 @@
'name': 'ExtensionAllowInsecureUpdates',
'owners': ['[email protected]', '[email protected]'],
'type': 'main',
+ 'deprecated': True,
'schema': { 'type': 'boolean' },
- 'supported_on': ['chrome.*:73-', 'chrome_os:73-'],
+ 'supported_on': ['chrome.*:73-77', 'chrome_os:73-77'],
'features': {
'dynamic_refresh': True,
'per_profile': True,
diff --git a/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx b/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx
index e40dbcd..0b8e984 100644
--- a/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx
+++ b/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_1.crx
Binary files differ
diff --git a/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx b/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx
index f28be58..d30e5f9 100644
--- a/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx
+++ b/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx
Binary files differ
diff --git a/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_1to2_bad.crx b/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_1to2_bad.crx
index e7c3397a..d4811ab 100644
--- a/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_1to2_bad.crx
+++ b/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_1to2_bad.crx
Binary files differ
diff --git a/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_2.crx b/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_2.crx
index d4cd473..ceda093 100644
--- a/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_2.crx
+++ b/components/test/data/update_client/ihfokbkgjpifnbbojhneepfflplebdkc_2.crx
Binary files differ
diff --git a/components/test/data/update_client/jebgalgnebhfojomionfpkfelancnnkf.crx b/components/test/data/update_client/jebgalgnebhfojomionfpkfelancnnkf.crx
index 4fb2a3b..2afad3c 100644
--- a/components/test/data/update_client/jebgalgnebhfojomionfpkfelancnnkf.crx
+++ b/components/test/data/update_client/jebgalgnebhfojomionfpkfelancnnkf.crx
Binary files differ
diff --git a/components/update_client/component_unpacker_unittest.cc b/components/update_client/component_unpacker_unittest.cc
index 0bc1905..67e12a2 100644
--- a/components/update_client/component_unpacker_unittest.cc
+++ b/components/update_client/component_unpacker_unittest.cc
@@ -109,7 +109,7 @@
test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"), nullptr,
config->GetUnzipperFactory()->Create(),
config->GetPatcherFactory()->Create(),
- crx_file::VerifierFormat::CRX2_OR_CRX3);
+ crx_file::VerifierFormat::CRX3);
component_unpacker->Unpack(base::BindOnce(
&ComponentUnpackerTest::UnpackComplete, base::Unretained(this)));
RunThreads();
@@ -127,11 +127,8 @@
base::GetFileSize(unpack_path.AppendASCII("component1.dll"), &file_size));
EXPECT_EQ(1024, file_size);
EXPECT_TRUE(
- base::GetFileSize(unpack_path.AppendASCII("flashtest.pem"), &file_size));
- EXPECT_EQ(911, file_size);
- EXPECT_TRUE(
base::GetFileSize(unpack_path.AppendASCII("manifest.json"), &file_size));
- EXPECT_EQ(144, file_size);
+ EXPECT_EQ(169, file_size);
EXPECT_TRUE(base::DeleteFile(unpack_path, true));
}
@@ -141,7 +138,7 @@
base::MakeRefCounted<ComponentUnpacker>(
std::vector<uint8_t>(std::begin(jebg_hash), std::end(jebg_hash)),
test_file("file-not-found.crx"), nullptr, nullptr, nullptr,
- crx_file::VerifierFormat::CRX2_OR_CRX3);
+ crx_file::VerifierFormat::CRX3);
component_unpacker->Unpack(base::BindOnce(
&ComponentUnpackerTest::UnpackComplete, base::Unretained(this)));
RunThreads();
@@ -159,7 +156,7 @@
base::MakeRefCounted<ComponentUnpacker>(
std::vector<uint8_t>(std::begin(abag_hash), std::end(abag_hash)),
test_file("jebgalgnebhfojomionfpkfelancnnkf.crx"), nullptr, nullptr,
- nullptr, crx_file::VerifierFormat::CRX2_OR_CRX3);
+ nullptr, crx_file::VerifierFormat::CRX3);
component_unpacker->Unpack(base::BindOnce(
&ComponentUnpackerTest::UnpackComplete, base::Unretained(this)));
RunThreads();
diff --git a/components/update_client/crx_downloader_unittest.cc b/components/update_client/crx_downloader_unittest.cc
index db3611e..08e6794f 100644
--- a/components/update_client/crx_downloader_unittest.cc
+++ b/components/update_client/crx_downloader_unittest.cc
@@ -34,7 +34,7 @@
const char kTestFileName[] = "jebgalgnebhfojomionfpkfelancnnkf.crx";
const char hash_jebg[] =
- "6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd7c9b12cb7cc067667bde87";
+ "7ab32f071cd9b5ef8e0d7913be161f532d98b3e9fa284a7cd8059c3409ce0498";
base::FilePath MakeTestFilePath(const char* file) {
base::FilePath path;
@@ -341,8 +341,8 @@
EXPECT_EQ(-1, download_metrics[0].total_bytes);
EXPECT_EQ(expected_crx_url, download_metrics[1].url);
EXPECT_EQ(0, download_metrics[1].error);
- EXPECT_EQ(1843, download_metrics[1].downloaded_bytes);
- EXPECT_EQ(1843, download_metrics[1].total_bytes);
+ EXPECT_EQ(1015, download_metrics[1].downloaded_bytes);
+ EXPECT_EQ(1015, download_metrics[1].total_bytes);
}
// Tests that the download succeeds if the first url is correct and the
diff --git a/components/update_client/update_client_unittest.cc b/components/update_client/update_client_unittest.cc
index 2a614f4..c986dd6 100644
--- a/components/update_client/update_client_unittest.cc
+++ b/components/update_client/update_client_unittest.cc
@@ -226,7 +226,7 @@
crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
crx.version = base::Version("0.9");
crx.installer = base::MakeRefCounted<TestInstaller>();
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
std::vector<base::Optional<CrxComponent>> component = {crx};
return component;
}
@@ -338,14 +338,14 @@
crx1.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
crx1.version = base::Version("0.9");
crx1.installer = base::MakeRefCounted<TestInstaller>();
- crx1.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx1.crx_format_requirement = crx_file::VerifierFormat::CRX3;
CrxComponent crx2;
crx2.name = "test_abag";
crx2.pk_hash.assign(abag_hash, abag_hash + base::size(abag_hash));
crx2.version = base::Version("2.2");
crx2.installer = base::MakeRefCounted<TestInstaller>();
- crx2.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx2.crx_format_requirement = crx_file::VerifierFormat::CRX3;
return {crx1, crx2};
}
@@ -387,8 +387,8 @@
<manifest version='1.0' prodversionmin='11.0.1.0'>
<packages>
<package name='jebgalgnebhfojomionfpkfelancnnkf.crx'
- hash_sha256='6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd
- 7c9b12cb7cc067667bde87'/>
+ hash_sha256='7ab32f071cd9b5ef8e0d7913be161f532d98b3e9f
+ a284a7cd8059c3409ce0498'/>
</packages>
</manifest>
</updatecheck>
@@ -411,7 +411,7 @@
ProtocolParser::Result::Manifest::Package package;
package.name = "jebgalgnebhfojomionfpkfelancnnkf.crx";
package.hash_sha256 =
- "6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd7c9b12cb7cc067667bde87";
+ "7ab32f071cd9b5ef8e0d7913be161f532d98b3e9fa284a7cd8059c3409ce0498";
ProtocolParser::Result result;
result.extension_id = "jebgalgnebhfojomionfpkfelancnnkf";
@@ -555,14 +555,14 @@
crx1.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
crx1.version = base::Version("0.9");
crx1.installer = base::MakeRefCounted<TestInstaller>();
- crx1.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx1.crx_format_requirement = crx_file::VerifierFormat::CRX3;
CrxComponent crx2;
crx2.name = "test_abag";
crx2.pk_hash.assign(abag_hash, abag_hash + base::size(abag_hash));
crx2.version = base::Version("2.2");
crx2.installer = base::MakeRefCounted<TestInstaller>();
- crx2.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx2.crx_format_requirement = crx_file::VerifierFormat::CRX3;
return {crx1, crx2};
}
@@ -604,8 +604,8 @@
<manifest version='1.0' prodversionmin='11.0.1.0'>
<packages>
<package name='jebgalgnebhfojomionfpkfelancnnkf.crx'
- hash_sha256='6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd
- 7c9b12cb7cc067667bde87'/>
+ hash_sha256='7ab32f071cd9b5ef8e0d7913be161f532d98b3e9f
+ a284a7cd8059c3409ce0498'/>
</packages>
</manifest>
</updatecheck>
@@ -625,7 +625,7 @@
ProtocolParser::Result::Manifest::Package package;
package.name = "jebgalgnebhfojomionfpkfelancnnkf.crx";
package.hash_sha256 =
- "6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd7c9b12cb7cc067667bde87";
+ "7ab32f071cd9b5ef8e0d7913be161f532d98b3e9fa284a7cd8059c3409ce0498";
ProtocolParser::Result result;
result.extension_id = "jebgalgnebhfojomionfpkfelancnnkf";
@@ -771,7 +771,7 @@
crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
crx.version = base::Version("0.9");
crx.installer = base::MakeRefCounted<TestInstaller>();
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
return {crx, base::nullopt};
}
};
@@ -812,8 +812,8 @@
<manifest version='1.0' prodversionmin='11.0.1.0'>
<packages>
<package name='jebgalgnebhfojomionfpkfelancnnkf.crx'
- hash_sha256='6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd
- 7c9b12cb7cc067667bde87'/>
+ hash_sha256='7ab32f071cd9b5ef8e0d7913be161f532d98b3e9f
+ a284a7cd8059c3409ce0498'/>
</packages>
</manifest>
</updatecheck>
@@ -833,7 +833,7 @@
ProtocolParser::Result::Manifest::Package package;
package.name = "jebgalgnebhfojomionfpkfelancnnkf.crx";
package.hash_sha256 =
- "6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd7c9b12cb7cc067667bde87";
+ "7ab32f071cd9b5ef8e0d7913be161f532d98b3e9fa284a7cd8059c3409ce0498";
ProtocolParser::Result result;
result.extension_id = id;
@@ -1059,14 +1059,14 @@
crx1.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
crx1.version = base::Version("0.9");
crx1.installer = base::MakeRefCounted<TestInstaller>();
- crx1.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx1.crx_format_requirement = crx_file::VerifierFormat::CRX3;
CrxComponent crx2;
crx2.name = "test_ihfo";
crx2.pk_hash.assign(ihfo_hash, ihfo_hash + base::size(ihfo_hash));
crx2.version = base::Version("0.8");
crx2.installer = base::MakeRefCounted<TestInstaller>();
- crx2.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx2.crx_format_requirement = crx_file::VerifierFormat::CRX3;
return {crx1, crx2};
}
@@ -1108,8 +1108,8 @@
<manifest version='1.0' prodversionmin='11.0.1.0'>
<packages>
<package name='jebgalgnebhfojomionfpkfelancnnkf.crx'
- hash_sha256='6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd
- 7c9b12cb7cc067667bde87'/>
+ hash_sha256='7ab32f071cd9b5ef8e0d7913be161f532d98b3e9f
+ a284a7cd8059c3409ce0498'/>
</packages>
</manifest>
</updatecheck>
@@ -1122,8 +1122,8 @@
<manifest version='1.0' prodversionmin='11.0.1.0'>
<packages>
<package name='ihfokbkgjpifnbbojhneepfflplebdkc_1.crx'
- hash_sha256='813c59747e139a608b3b5fc49633affc6db574373f
- 309f156ea6d27229c0b3f9'/>
+ hash_sha256='8f5aa190311237cae00675af87ff457f278cd1a05
+ 895470ac5d46647d4a3c2ea'/>
</packages>
</manifest>
</updatecheck>
@@ -1144,7 +1144,7 @@
ProtocolParser::Result::Manifest::Package package;
package.name = "jebgalgnebhfojomionfpkfelancnnkf.crx";
package.hash_sha256 =
- "6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd7c9b12cb7cc067667bde87";
+ "7ab32f071cd9b5ef8e0d7913be161f532d98b3e9fa284a7cd8059c3409ce0498";
ProtocolParser::Result result;
result.extension_id = id;
@@ -1164,7 +1164,7 @@
ProtocolParser::Result::Manifest::Package package;
package.name = "ihfokbkgjpifnbbojhneepfflplebdkc_1.crx";
package.hash_sha256 =
- "813c59747e139a608b3b5fc49633affc6db574373f309f156ea6d27229c0b3f9";
+ "8f5aa190311237cae00675af87ff457f278cd1a05895470ac5d46647d4a3c2ea";
ProtocolParser::Result result;
result.extension_id = id;
@@ -1334,7 +1334,7 @@
crx.name = "test_ihfo";
crx.pk_hash.assign(ihfo_hash, ihfo_hash + base::size(ihfo_hash));
crx.installer = installer;
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
if (num_calls == 1) {
crx.version = base::Version("0.8");
} else if (num_calls == 2) {
@@ -1405,7 +1405,7 @@
ProtocolParser::Result::Manifest::Package package;
package.name = "ihfokbkgjpifnbbojhneepfflplebdkc_1.crx";
package.hash_sha256 =
- "813c59747e139a608b3b5fc49633affc6db574373f309f156ea6d27229c0b3f9";
+ "8f5aa190311237cae00675af87ff457f278cd1a05895470ac5d46647d4a3c2ea";
ProtocolParser::Result result;
result.extension_id = id;
@@ -1430,11 +1430,11 @@
<packages>
<package name='ihfokbkgjpifnbbojhneepfflplebdkc_2.crx'
namediff='ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx'
- hash_sha256='1af337fbd19c72db0f870753bcd7711c3ae9dcaa
- 0ecde26c262bad942b112990'
+ hash_sha256='c87d8742c3ff3d7a0cb6f3c91aa2fcf3dea6361
+ 8086a7db1c5be5300e1d4d6b6'
fp='22'
- hashdiff_sha256='73c6e2d4f783fc4ca5481e89e0b8bfce7aec
- 8ead3686290c94792658ec06f2f2'/>
+ hashdiff_sha256='0fd48a5dd87006a709756cfc47198cbc4c4
+ 928f33ac4277d79573c15164a33eb'/>
</packages>
</manifest>
</updatecheck>
@@ -1449,9 +1449,9 @@
package.name = "ihfokbkgjpifnbbojhneepfflplebdkc_2.crx";
package.namediff = "ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx";
package.hash_sha256 =
- "1af337fbd19c72db0f870753bcd7711c3ae9dcaa0ecde26c262bad942b112990";
+ "c87d8742c3ff3d7a0cb6f3c91aa2fcf3dea63618086a7db1c5be5300e1d4d6b6";
package.hashdiff_sha256 =
- "73c6e2d4f783fc4ca5481e89e0b8bfce7aec8ead3686290c94792658ec06f2f2";
+ "0fd48a5dd87006a709756cfc47198cbc4c4928f33ac4277d79573c15164a33eb";
package.fingerprint = "22";
ProtocolParser::Result result;
@@ -1670,7 +1670,7 @@
crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
crx.version = base::Version("0.9");
crx.installer = installer;
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
return {crx};
}
@@ -1712,8 +1712,8 @@
<manifest version='1.0' prodversionmin='11.0.1.0'>
<packages>
<package name='jebgalgnebhfojomionfpkfelancnnkf.crx'
- hash_sha256='6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd
- 7c9b12cb7cc067667bde87'/>
+ hash_sha256='7ab32f071cd9b5ef8e0d7913be161f532d98b3e9f
+ a284a7cd8059c3409ce0498'/>
</packages>
</manifest>
</updatecheck>
@@ -1729,7 +1729,7 @@
ProtocolParser::Result::Manifest::Package package;
package.name = "jebgalgnebhfojomionfpkfelancnnkf.crx";
package.hash_sha256 =
- "6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd7c9b12cb7cc067667bde87";
+ "7ab32f071cd9b5ef8e0d7913be161f532d98b3e9fa284a7cd8059c3409ce0498";
ProtocolParser::Result result;
result.extension_id = id;
@@ -1855,7 +1855,7 @@
crx.name = "test_ihfo";
crx.pk_hash.assign(ihfo_hash, ihfo_hash + base::size(ihfo_hash));
crx.installer = installer;
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
if (num_calls == 1) {
crx.version = base::Version("0.8");
} else if (num_calls == 2) {
@@ -1927,7 +1927,7 @@
ProtocolParser::Result::Manifest::Package package;
package.name = "ihfokbkgjpifnbbojhneepfflplebdkc_1.crx";
package.hash_sha256 =
- "813c59747e139a608b3b5fc49633affc6db574373f309f156ea6d27229c0b3f9";
+ "8f5aa190311237cae00675af87ff457f278cd1a05895470ac5d46647d4a3c2ea";
package.fingerprint = "1";
ProtocolParser::Result result;
@@ -1953,11 +1953,11 @@
<packages>
<package name='ihfokbkgjpifnbbojhneepfflplebdkc_2.crx'
namediff='ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx'
- hash_sha256='1af337fbd19c72db0f870753bcd7711c3ae9dcaa
- 0ecde26c262bad942b112990'
+ hash_sha256='c87d8742c3ff3d7a0cb6f3c91aa2fcf3dea6361
+ 8086a7db1c5be5300e1d4d6b6'
fp='22'
- hashdiff_sha256='73c6e2d4f783fc4ca5481e89e0b8bfce7aec
- 8ead3686290c94792658ec06f2f2'/>
+ hashdiff_sha256='0fd48a5dd87006a709756cfc47198cbc4c4
+ 928f33ac4277d79573c15164a33eb'/>
</packages>
</manifest>
</updatecheck>
@@ -1972,9 +1972,9 @@
package.name = "ihfokbkgjpifnbbojhneepfflplebdkc_2.crx";
package.namediff = "ihfokbkgjpifnbbojhneepfflplebdkc_1to2.crx";
package.hash_sha256 =
- "1af337fbd19c72db0f870753bcd7711c3ae9dcaa0ecde26c262bad942b112990";
+ "c87d8742c3ff3d7a0cb6f3c91aa2fcf3dea63618086a7db1c5be5300e1d4d6b6";
package.hashdiff_sha256 =
- "73c6e2d4f783fc4ca5481e89e0b8bfce7aec8ead3686290c94792658ec06f2f2";
+ "0fd48a5dd87006a709756cfc47198cbc4c4928f33ac4277d79573c15164a33eb";
package.fingerprint = "22";
ProtocolParser::Result result;
@@ -2159,7 +2159,7 @@
crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
crx.version = base::Version("0.9");
crx.installer = base::MakeRefCounted<TestInstaller>();
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
return {crx};
}
};
@@ -2280,7 +2280,7 @@
crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
crx.version = base::Version("0.0");
crx.installer = base::MakeRefCounted<TestInstaller>();
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
return {crx};
}
};
@@ -2321,8 +2321,8 @@
<manifest version='1.0' prodversionmin='11.0.1.0'>
<packages>
<package name='jebgalgnebhfojomionfpkfelancnnkf.crx'
- hash_sha256='6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd
- 7c9b12cb7cc067667bde87'/>
+ hash_sha256='7ab32f071cd9b5ef8e0d7913be161f532d98b3e9f
+ a284a7cd8059c3409ce0498'/>
</packages>
</manifest>
</updatecheck>
@@ -2340,7 +2340,7 @@
ProtocolParser::Result::Manifest::Package package;
package.name = "jebgalgnebhfojomionfpkfelancnnkf.crx";
package.hash_sha256 =
- "6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd7c9b12cb7cc067667bde87";
+ "7ab32f071cd9b5ef8e0d7913be161f532d98b3e9fa284a7cd8059c3409ce0498";
ProtocolParser::Result result;
result.extension_id = id;
@@ -2563,7 +2563,7 @@
crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
crx.version = base::Version("0.0");
crx.installer = base::MakeRefCounted<TestInstaller>();
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
return {crx};
}
};
@@ -2831,7 +2831,7 @@
crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
crx.version = base::Version("0.9");
crx.installer = base::MakeRefCounted<TestInstaller>();
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
return {crx};
}
};
@@ -3025,7 +3025,7 @@
crx1.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
crx1.version = base::Version("0.9");
crx1.installer = base::MakeRefCounted<TestInstaller>();
- crx1.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx1.crx_format_requirement = crx_file::VerifierFormat::CRX3;
crx1.supports_group_policy_enable_component_updates = true;
CrxComponent crx2;
@@ -3033,7 +3033,7 @@
crx2.pk_hash.assign(ihfo_hash, ihfo_hash + base::size(ihfo_hash));
crx2.version = base::Version("0.8");
crx2.installer = base::MakeRefCounted<TestInstaller>();
- crx2.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx2.crx_format_requirement = crx_file::VerifierFormat::CRX3;
return {crx1, crx2};
}
@@ -3075,8 +3075,8 @@
<manifest version='1.0' prodversionmin='11.0.1.0'>
<packages>
<package name='jebgalgnebhfojomionfpkfelancnnkf.crx'
- hash_sha256='6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd
- 7c9b12cb7cc067667bde87'/>
+ hash_sha256='7ab32f071cd9b5ef8e0d7913be161f532d98b3e9f
+ a284a7cd8059c3409ce0498'/>
</packages>
</manifest>
</updatecheck>
@@ -3089,8 +3089,8 @@
<manifest version='1.0' prodversionmin='11.0.1.0'>
<packages>
<package name='ihfokbkgjpifnbbojhneepfflplebdkc_1.crx'
- hash_sha256='813c59747e139a608b3b5fc49633affc6db574373f
- 309f156ea6d27229c0b3f9'/>
+ hash_sha256='8f5aa190311237cae00675af87ff457f278cd1a05
+ 895470ac5d46647d4a3c2ea'/>
</packages>
</manifest>
</updatecheck>
@@ -3115,7 +3115,7 @@
ProtocolParser::Result::Manifest::Package package;
package.name = "jebgalgnebhfojomionfpkfelancnnkf.crx";
package.hash_sha256 =
- "6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd7c9b12cb7cc067667bde87";
+ "7ab32f071cd9b5ef8e0d7913be161f532d98b3e9fa284a7cd8059c3409ce0498";
ProtocolParser::Result result;
result.extension_id = id;
@@ -3135,7 +3135,7 @@
ProtocolParser::Result::Manifest::Package package;
package.name = "ihfokbkgjpifnbbojhneepfflplebdkc_1.crx";
package.hash_sha256 =
- "813c59747e139a608b3b5fc49633affc6db574373f309f156ea6d27229c0b3f9";
+ "8f5aa190311237cae00675af87ff457f278cd1a05895470ac5d46647d4a3c2ea";
ProtocolParser::Result result;
result.extension_id = id;
@@ -3281,7 +3281,7 @@
crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
crx.version = base::Version("0.9");
crx.installer = base::MakeRefCounted<TestInstaller>();
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
return {crx};
}
};
@@ -3393,7 +3393,7 @@
crx.pk_hash.assign(jebg_hash, jebg_hash + base::size(jebg_hash));
crx.version = base::Version("0.9");
crx.installer = base::MakeRefCounted<TestInstaller>();
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
component.push_back(crx);
}
{
@@ -3402,7 +3402,7 @@
crx.pk_hash.assign(abag_hash, abag_hash + base::size(abag_hash));
crx.version = base::Version("0.1");
crx.installer = base::MakeRefCounted<TestInstaller>();
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
component.push_back(crx);
}
{
@@ -3411,7 +3411,7 @@
crx.pk_hash.assign(ihfo_hash, ihfo_hash + base::size(ihfo_hash));
crx.version = base::Version("0.2");
crx.installer = base::MakeRefCounted<TestInstaller>();
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
component.push_back(crx);
}
{
@@ -3420,7 +3420,7 @@
crx.pk_hash.assign(gjpm_hash, gjpm_hash + base::size(gjpm_hash));
crx.version = base::Version("0.3");
crx.installer = base::MakeRefCounted<TestInstaller>();
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
component.push_back(crx);
}
return component;
@@ -3761,7 +3761,7 @@
crx.pk_hash.assign(gjpm_hash, gjpm_hash + base::size(gjpm_hash));
crx.version = base::Version("0.0");
crx.installer = base::MakeRefCounted<VersionedTestInstaller>();
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
return std::vector<base::Optional<CrxComponent>>{crx};
}),
base::BindOnce(
@@ -3869,8 +3869,7 @@
std::vector<uint8_t>(std::begin(gjpm_hash), std::end(gjpm_hash)),
TestFilePath("runaction_test_win.crx3"), nullptr,
config->GetUnzipperFactory()->Create(),
- config->GetPatcherFactory()->Create(),
- crx_file::VerifierFormat::CRX2_OR_CRX3);
+ config->GetPatcherFactory()->Create(), crx_file::VerifierFormat::CRX3);
component_unpacker->Unpack(base::BindOnce(
[](base::FilePath* unpack_path, base::OnceClosure quit_closure,
@@ -3913,7 +3912,7 @@
crx.version = base::Version("1.0");
crx.installer =
base::MakeRefCounted<ReadOnlyTestInstaller>(unpack_path);
- crx.crx_format_requirement = crx_file::VerifierFormat::CRX2_OR_CRX3;
+ crx.crx_format_requirement = crx_file::VerifierFormat::CRX3;
return std::vector<base::Optional<CrxComponent>>{crx};
},
unpack_path),
diff --git a/components/update_client/update_query_params.cc b/components/update_client/update_query_params.cc
index d9e1612..56aea40 100644
--- a/components/update_client/update_query_params.cc
+++ b/components/update_client/update_query_params.cc
@@ -77,8 +77,8 @@
// static
std::string UpdateQueryParams::Get(ProdId prod) {
return base::StringPrintf(
- "os=%s&arch=%s&os_arch=%s&nacl_arch=%s&prod=%s%s&acceptformat=crx2,crx3",
- kOs, kArch, base::SysInfo().OperatingSystemArchitecture().c_str(),
+ "os=%s&arch=%s&os_arch=%s&nacl_arch=%s&prod=%s%s&acceptformat=crx3", kOs,
+ kArch, base::SysInfo().OperatingSystemArchitecture().c_str(),
GetNaclArch(), GetProdIdString(prod),
g_delegate ? g_delegate->GetExtraParams().c_str() : "");
}
diff --git a/components/update_client/utils_unittest.cc b/components/update_client/utils_unittest.cc
index 71a8b886..14882d5 100644
--- a/components/update_client/utils_unittest.cc
+++ b/components/update_client/utils_unittest.cc
@@ -31,7 +31,7 @@
EXPECT_TRUE(VerifyFileHash256(
MakeTestFilePath("jebgalgnebhfojomionfpkfelancnnkf.crx"),
std::string(
- "6fc4b93fd11134de1300c2c0bb88c12b644a4ec0fd7c9b12cb7cc067667bde87")));
+ "7ab32f071cd9b5ef8e0d7913be161f532d98b3e9fa284a7cd8059c3409ce0498")));
EXPECT_FALSE(VerifyFileHash256(
MakeTestFilePath("jebgalgnebhfojomionfpkfelancnnkf.crx"),
diff --git a/extensions/browser/extension_prefs.cc b/extensions/browser/extension_prefs.cc
index f8c33349..4ff8c30d 100644
--- a/extensions/browser/extension_prefs.cc
+++ b/extensions/browser/extension_prefs.cc
@@ -896,10 +896,6 @@
return ext_prefs && IsBlacklistBitSet(ext_prefs);
}
-bool ExtensionPrefs::InsecureExtensionUpdatesEnabled() const {
- return prefs_->GetBoolean(pref_names::kInsecureExtensionUpdatesEnabled);
-}
-
namespace {
// Serializes a 64bit integer as a string value.
@@ -1939,8 +1935,6 @@
registry->RegisterBooleanPref(pref_names::kNativeMessagingUserLevelHosts,
true);
registry->RegisterIntegerPref(kCorruptedDisableCount, 0);
- registry->RegisterBooleanPref(pref_names::kInsecureExtensionUpdatesEnabled,
- false);
#if !defined(OS_MACOSX)
registry->RegisterBooleanPref(pref_names::kAppFullscreenAllowed, true);
diff --git a/extensions/browser/extension_prefs.h b/extensions/browser/extension_prefs.h
index cd82181..563d6af 100644
--- a/extensions/browser/extension_prefs.h
+++ b/extensions/browser/extension_prefs.h
@@ -318,10 +318,6 @@
// to use Blacklist::GetBlacklistedIDs rather than this method.
bool IsExtensionBlacklisted(const std::string& id) const;
- // Returns whether insecure algorithms like SHA1 are trusted for the
- // purpose of updating the extension.
- bool InsecureExtensionUpdatesEnabled() const;
-
// Increment the count of how many times we prompted the user to acknowledge
// the given extension, and return the new count.
int IncrementAcknowledgePromptCount(const std::string& extension_id);
diff --git a/extensions/browser/pref_names.cc b/extensions/browser/pref_names.cc
index 896f135..4f139e55 100644
--- a/extensions/browser/pref_names.cc
+++ b/extensions/browser/pref_names.cc
@@ -33,8 +33,6 @@
const char kAppFullscreenAllowed[] = "apps.fullscreen.allowed";
const char kExtensions[] = "extensions.settings";
const char kExtensionManagement[] = "extensions.management";
-const char kInsecureExtensionUpdatesEnabled[] =
- "extension_updates.insecure_extension_updates_enabled";
const char kInstallAllowList[] = "extensions.install.allowlist";
const char kInstallDenyList[] = "extensions.install.denylist";
const char kInstallForceList[] = "extensions.install.forcelist";
diff --git a/extensions/browser/updater/update_data_provider.cc b/extensions/browser/updater/update_data_provider.cc
index e474581..4a5a84c 100644
--- a/extensions/browser/updater/update_data_provider.cc
+++ b/extensions/browser/updater/update_data_provider.cc
@@ -105,10 +105,8 @@
crx_component->allows_background_download = false;
crx_component->requires_network_encryption = true;
crx_component->crx_format_requirement =
- extension->from_webstore()
- ? GetWebstoreVerifierFormat(false)
- : GetPolicyVerifierFormat(
- extension_prefs->InsecureExtensionUpdatesEnabled());
+ extension->from_webstore() ? GetWebstoreVerifierFormat(false)
+ : GetPolicyVerifierFormat();
crx_component->installer = base::MakeRefCounted<ExtensionInstaller>(
id, extension->path(), install_immediately,
base::BindOnce(&UpdateDataProvider::RunInstallCallback, this));
diff --git a/extensions/common/verifier_formats.cc b/extensions/common/verifier_formats.cc
index 19e67ff7..45b3bea 100644
--- a/extensions/common/verifier_formats.cc
+++ b/extensions/common/verifier_formats.cc
@@ -15,11 +15,7 @@
: crx_file::VerifierFormat::CRX3_WITH_PUBLISHER_PROOF;
}
-crx_file::VerifierFormat GetPolicyVerifierFormat(
- bool insecure_updates_enabled) {
- // TODO(crbug.com/740715): Eliminate CRX2.
- if (insecure_updates_enabled)
- return crx_file::VerifierFormat::CRX2_OR_CRX3;
+crx_file::VerifierFormat GetPolicyVerifierFormat() {
return crx_file::VerifierFormat::CRX3;
}
diff --git a/extensions/common/verifier_formats.h b/extensions/common/verifier_formats.h
index e36019c..b51c6bf 100644
--- a/extensions/common/verifier_formats.h
+++ b/extensions/common/verifier_formats.h
@@ -17,10 +17,8 @@
crx_file::VerifierFormat GetWebstoreVerifierFormat(bool test_publisher_enabled);
// Returns the default format requirement for installing an extension that
-// is force-installed by policy. |insecure_updates_enabled| indicates
-// whether an enterprise has chosen, via corporate policy, to allow insecure
-// update mechanisms.
-crx_file::VerifierFormat GetPolicyVerifierFormat(bool insecure_updates_enabled);
+// is force-installed by policy.
+crx_file::VerifierFormat GetPolicyVerifierFormat();
// Returns the default format requirement for installing an extension that
// is installed from an external source.