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-----
+MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQCto0ujr7uE4oHS
+f8tAchY5JvfBF5KnNtypHHGizGgmGuiNGksHNVZfwdmHBsUv5iG9FrjdShZFQhIx
+WCe25i4ubA87wMJm5zWebgYwPXT2DR3pAPmD+aMbkKyYWMA/LnjTYCG0MHhFzU+r
+cISyZSS2jmqBFUV2627G35SVNoVqQQpvUWVXdmFiZZgY+5CquhQ5FqcMLdoKYTjd
+hZrzIn+NS+NHgYZj6cDOjJsUMjTsms0ZyiTPXqKx7+L9o2MptYs7q6ZMQZh3DC5J
+1z9eTHkQ7ohBbBzvaOpbQRZvIvK1L+YZ29gL8Jhf/tbbDipT7GQNLwUJr8I5hA3c
+UU6gVrZx4tjLYvwQ2pc1ZLmxynQYzEgaNLkpFEC/3Pc/D0jQO7WjBf2vNlrJDZEP
+vmhfhLh7C9EnXPRdVINL/YE0LfCat9YVRskfyCmk1av9pd3SsG15vkQRcd3SgjNu
+Q5fxmD3TidBrFmU/gdy6os+ercKa62MgE8OSrEytXwObaEEF2tHrPQitDpIcNYLi
+BS+sASZGeeO3KfX/nPSgiMCrzC1Nu9YVwbs9PRhL7ucmQ6EtK2d5wV2rQIxfCW+e
+iIqSRdtys/ONGDuerUf0xxb3xMaBO1AAGKjSx5oWq/ZbAH6EI3VC3CKA+OX5IcCJ
+xqFzWPC95CcnVQhoxwWP7fmkpEbGFQIDAQABAoICAANwYoUha+Nb4RpcMZhbKhmD
+rhCC+QKa0Y//4jhJOB7ZFZYF2UqRQd6vpjFIbwtd0Xk/Q/YOC5bfkiCsEE1NDckZ
+lsumK7OCDMvQfgrijLh61gbRYB+/B/35xZFW4KffscDt/HznINqxEEzi853c5vc+
+ptlbpH6Qdyc1MmoqJEZQd3Zw9ELhM1iRjougH+NhwBjJXBGfrtvZxRiOFt2N51zT
+DfNSm2jLLmho3IFv5SByiHFkUYpR44MGr0Y6wDIJSHKsGaUU/4IMGbaYrsadWSB+
+uPAixgfv2gRoq5sT5B62jiYg9ox1/W6ZS4QXKbtzyR+BuOXSN1SQSv38FkSSsxZR
+/7Xwg6szPZ3EUO0JSRXsWU5qCT0y7ayg9YR/EBLJS7ehcPqG4hX1D/76lZc84U6+
+nEEDifNxbZcKcZVpQKcjY+ppd7KOImwRw7MUfko6UOR8DK7GgF9KaNoggUIKQiaT
+wkVSwleunAJBMOlE4JggonFM+JO6hE/SnSCUiLOEy0sm3uZERPi1KfYqM9JikDEm
+GhWNsvDTPzBQ/npVT+REDYUmdHiGjCVk0s68y41WKpYSuHG0Qs4Tdn3lNJ91ssmE
+NNAdMgh949Ql1ToI1NzJuoy311XFXAKmU9HvS/RZjzyMdLNj2wQfprL778R48Ovp
+RqjxPzAdXcgZsdKR7QBZAoIBAQDVaDMfthUeiYPGQX/R6GAGrAB7ckP0BwBkRPT4
+LnWEtIH/p7W2NPEHbWSllPcftbmiTjKB+3IN5SVhvLbNUKcTJBQTsUTNwqTKavA4
+65nj/ZCbhBjZzXfg1rTkqCAj0ZRhjyHTND061T1bDWDanc4eLJYIWVwWdN/dZTyf
+0ON9eMHLqYZHc/OFKVjOPJgVlIVGxrBuUroAWD/iJ8KdZnPbucnVaWXH/9Q++GMo
+stwlx7Vs+6evsaN6GGzHcu6QXIm1N6sjbp1hLay7PpilCfiuVWEJyR+rqEz2KrvI
+YA34vr72w+IKwwqo6zwFCL378XDpMeV+Vpx6mW3HmvXT5vs3AoIBAQDQSyJG5pT/
+WAv2S7/uqRE9rOlV8XMYjwmA83tITBXPXHWah66U7tlgFXW7OmUlZXFauEggNK6n
+DhU+8qtdD+Y5Mj2sKy3YrlsgNKhoVkVNM8vCqucBKA/srLE20upmlFDs63n4tKtP
+X60qu9bqDIpKiWMcAYuSSPGdCwD4Tv1itd524keuauJzE9mmlRUHEThEOeOrXiOm
+3SdrRdBfpQLo1KnOz3qPZDbORAzyPsJJFz0rQfq/saSg+p/dyQMabVCKTilZwHG7
+RnPltOWe98bB92CoTjkWEiGbRj7Anx97qEsnySdNHpi+fTclo6wmrqoIQbztJxOV
+z6QHOSha6WcTAoIBAET7/vK0SFVrvHYc/DWdeVUOysUc5cx/auf+xnVnh0OTmiZL
+T1kL+hIdkZhY9B2C//PwdTFBV9gYB6J1f14VQTzVv8ux1Pzye5SXRvoPZtqlP9aV
+t/bIDYVXwnfbxS/u8pkqzJNaYqSfA8toIrPoqRVl8kXWpQb5VthZfmRnAPKxU2wD
+a82zNLgJ6pQYUE1BimebmLLA+TFdVaFEmwuIb9FKWG0tOeKR10lXv64LS1DHIuWM
+3+LSeHbiaF98zpNJ5pX23dKBUkx0mE6a6HsJIyMvpEOmiR9TMzWsELGwIzQSbOaV
+4X77F3oNOISkE83aeVZYc8gINWMIL82DUQ3jr7cCggEAHkXdPHrEyvvL+Ub3JUOz
+OsiHvTLzbG1Vj0VT9KUCQnoIqaXwrLquIzXbP5P0IWRF/k5sRSoC/EqisdxpJYRr
+DIMNzZkU97oXim280DVBqz/M7IUUP+nHrrlGpFYxNSl3PYfX2VrAzy9zppNYX/nk
+m4KuQeLDm0Y4v39a67vnPdJ6+8JVcrccJGeNKZXfUYCiMeBMA5sSCW15DjE+YLhF
+3PsTlvg2suJ4yK/BRe/zItZa0I+tVvEFoVPrqjtN1ShwHTnQ7rd2kCZkL82D1f/j
+Bkvi43NC/r8x3TRvaGV4GOvTyHuG18GLp5vhSPopyhF2qu6K+9jDEvHzwA0BnXzw
+uwKCAQEAkXh/b6/p1850khkbk0VxYBsXDoB8KQD6ENpu+9iZT0LGOdKCl8x6QGde
+GO95qgXCj6XUbDK60CkbKBrJCj5HRHUUefaP45bU8dtgrofdYvb+XbQxM7N0hsfa
++MYnMKpuuRrHTeFC8lzGkJrEC/HO65Svlx65cTgxJ2PoK4XckERZZP8UfDQnAcWr
+8rBh1uhvs0hFIlTdW/0BSXvjmpe2bzaO6tNm7vmQqq8y+ZhaHt9IPO/PsypolrFF
+Td20ct/fnOPh1cMk7lUPTDV55HstzPHQLdzJinvK/rwmQSoN3/9rAySRoAUgcPjK
+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.