Add-AllowUserCertificates-flag.patch 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. From: uazo <uazo@users.noreply.github.com>
  2. Date: Mon, 26 Apr 2021 13:28:24 +0000
  3. Subject: Add AllowUserCertificates flag
  4. ---
  5. .../src/org/chromium/chrome/browser/app/ChromeActivity.java | 3 +++
  6. .../chromium/chrome/browser/app/flags/ChromeCachedFlags.java | 1 +
  7. chrome/browser/about_flags.cc | 4 ++++
  8. chrome/browser/flag_descriptions.cc | 5 +++++
  9. chrome/browser/flag_descriptions.h | 3 +++
  10. chrome/browser/flags/android/chrome_feature_list.cc | 4 ++++
  11. chrome/browser/flags/android/chrome_feature_list.h | 1 +
  12. .../chromium/chrome/browser/flags/CachedFeatureFlags.java | 1 +
  13. .../org/chromium/chrome/browser/flags/ChromeFeatureList.java | 1 +
  14. net/android/java/src/org/chromium/net/X509Util.java | 5 +++++
  15. 10 files changed, 28 insertions(+)
  16. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
  17. --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
  18. +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
  19. @@ -226,6 +226,7 @@ import org.chromium.content_public.browser.ScreenOrientationProvider;
  20. import org.chromium.content_public.browser.SelectionPopupController;
  21. import org.chromium.content_public.browser.WebContents;
  22. import org.chromium.content_public.common.ContentSwitches;
  23. +import org.chromium.net.X509Util;
  24. import org.chromium.printing.PrintManagerDelegateImpl;
  25. import org.chromium.printing.PrintingController;
  26. import org.chromium.printing.PrintingControllerImpl;
  27. @@ -981,6 +982,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
  28. UpdateMenuItemHelper.getInstance().onStart();
  29. ChromeActivitySessionTracker.getInstance().onStartWithNative();
  30. ChromeCachedFlags.getInstance().cacheNativeFlags();
  31. + X509Util.AllowUserCertificates = ChromeFeatureList.isEnabled(
  32. + ChromeFeatureList.ALLOW_USER_CERTIFICATES);
  33. OfflineIndicatorController.initialize();
  34. // postDeferredStartupIfNeeded() is called in TabModelSelectorTabObsever#onLoadStopped(),
  35. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
  36. --- a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
  37. +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/flags/ChromeCachedFlags.java
  38. @@ -90,6 +90,7 @@ public class ChromeCachedFlags {
  39. add(ChromeFeatureList
  40. .GIVE_JAVA_UI_THREAD_DEFAULT_TASK_TRAITS_USER_BLOCKING_PRIORITY);
  41. add(ChromeFeatureList.IMMERSIVE_UI_MODE);
  42. + add(ChromeFeatureList.ALLOW_USER_CERTIFICATES);
  43. add(ChromeFeatureList.INSTANT_START);
  44. add(ChromeFeatureList.INSTANCE_SWITCHER);
  45. add(ChromeFeatureList.INTEREST_FEED_V2);
  46. diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
  47. --- a/chrome/browser/about_flags.cc
  48. +++ b/chrome/browser/about_flags.cc
  49. @@ -2874,6 +2874,10 @@ const FeatureEntry kFeatureEntries[] = {
  50. flag_descriptions::kCSSContainerQueriesDescription, kOsAll,
  51. FEATURE_VALUE_TYPE(blink::features::kCSSContainerQueries)},
  52. #if defined(OS_ANDROID)
  53. + {"allow-user-certificates",
  54. + flag_descriptions::kAllowUserCertificatesName,
  55. + flag_descriptions::kAllowUserCertificatesDescription, kOsAndroid,
  56. + FEATURE_VALUE_TYPE(chrome::android::kAllowUserCertificates)},
  57. {"contextual-search-debug", flag_descriptions::kContextualSearchDebugName,
  58. flag_descriptions::kContextualSearchDebugDescription, kOsAndroid,
  59. FEATURE_VALUE_TYPE(chrome::android::kContextualSearchDebug)},
  60. diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
  61. --- a/chrome/browser/flag_descriptions.cc
  62. +++ b/chrome/browser/flag_descriptions.cc
  63. @@ -11,6 +11,11 @@
  64. namespace flag_descriptions {
  65. +const char kAllowUserCertificatesName[] = "Allow user certificates";
  66. +const char kAllowUserCertificatesDescription[] =
  67. + "Allow user CA certificates during "
  68. + "validation of the certificate chain";
  69. +
  70. const char kAccelerated2dCanvasName[] = "Accelerated 2D canvas";
  71. const char kAccelerated2dCanvasDescription[] =
  72. "Enables the use of the GPU to perform 2d canvas rendering instead of "
  73. diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
  74. --- a/chrome/browser/flag_descriptions.h
  75. +++ b/chrome/browser/flag_descriptions.h
  76. @@ -46,6 +46,9 @@ namespace flag_descriptions {
  77. // Cross-platform -------------------------------------------------------------
  78. +extern const char kAllowUserCertificatesName[];
  79. +extern const char kAllowUserCertificatesDescription[];
  80. +
  81. extern const char kAccelerated2dCanvasName[];
  82. extern const char kAccelerated2dCanvasDescription[];
  83. diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
  84. --- a/chrome/browser/flags/android/chrome_feature_list.cc
  85. +++ b/chrome/browser/flags/android/chrome_feature_list.cc
  86. @@ -150,6 +150,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
  87. &feed::kFeedSignInPromoDismiss,
  88. &feed::kInterestFeedContentSuggestions,
  89. &feed::kInterestFeedSpinnerAlwaysAnimate,
  90. + &kAllowUserCertificates,
  91. &feed::kInterestFeedV1ClicksAndViewsConditionalUpload,
  92. &feed::kInterestFeedV2,
  93. &feed::kInterestFeedV2Autoplay,
  94. @@ -387,6 +388,9 @@ const base::Feature kAdaptiveButtonInTopToolbarCustomizationV2{
  95. "AdaptiveButtonInTopToolbarCustomizationV2",
  96. base::FEATURE_DISABLED_BY_DEFAULT};
  97. +const base::Feature kAllowUserCertificates = {
  98. + "AllowUserCertificates", base::FEATURE_DISABLED_BY_DEFAULT};
  99. +
  100. const base::Feature kAddToHomescreenIPH{"AddToHomescreenIPH",
  101. base::FEATURE_DISABLED_BY_DEFAULT};
  102. diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
  103. --- a/chrome/browser/flags/android/chrome_feature_list.h
  104. +++ b/chrome/browser/flags/android/chrome_feature_list.h
  105. @@ -12,6 +12,7 @@
  106. namespace chrome {
  107. namespace android {
  108. +extern const base::Feature kAllowUserCertificates;
  109. // Alphabetical:
  110. extern const base::Feature kAdaptiveButtonInTopToolbar;
  111. extern const base::Feature kAdaptiveButtonInTopToolbarCustomizationV2;
  112. diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
  113. --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
  114. +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java
  115. @@ -48,6 +48,7 @@ public class CachedFeatureFlags {
  116. */
  117. private static Map<String, Boolean> sDefaults =
  118. ImmutableMap.<String, Boolean>builder()
  119. + .put(ChromeFeatureList.ALLOW_USER_CERTIFICATES, false)
  120. .put(ChromeFeatureList.BOOKMARK_BOTTOM_SHEET, false)
  121. .put(ChromeFeatureList.CONDITIONAL_TAB_STRIP_ANDROID, false)
  122. .put(ChromeFeatureList.LENS_CAMERA_ASSISTED_SEARCH, false)
  123. diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
  124. --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
  125. +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
  126. @@ -193,6 +193,7 @@ public abstract class ChromeFeatureList {
  127. }
  128. /* Alphabetical: */
  129. + public static final String ALLOW_USER_CERTIFICATES = "AllowUserCertificates";
  130. public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR = "AdaptiveButtonInTopToolbar";
  131. public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION_V2 =
  132. "AdaptiveButtonInTopToolbarCustomizationV2";
  133. diff --git a/net/android/java/src/org/chromium/net/X509Util.java b/net/android/java/src/org/chromium/net/X509Util.java
  134. --- a/net/android/java/src/org/chromium/net/X509Util.java
  135. +++ b/net/android/java/src/org/chromium/net/X509Util.java
  136. @@ -488,6 +488,8 @@ public class X509Util {
  137. return false;
  138. }
  139. + public static boolean AllowUserCertificates = false;
  140. +
  141. public static AndroidCertVerifyResult verifyServerCertificates(byte[][] certChain,
  142. String authType,
  143. String host)
  144. @@ -568,6 +570,9 @@ public class X509Util {
  145. isIssuedByKnownRoot = isKnownRoot(root);
  146. }
  147. + if (AllowUserCertificates == false && isIssuedByKnownRoot == false)
  148. + return new AndroidCertVerifyResult(CertVerifyStatusAndroid.NO_TRUSTED_ROOT);
  149. +
  150. return new AndroidCertVerifyResult(CertVerifyStatusAndroid.OK,
  151. isIssuedByKnownRoot, verifiedChain);
  152. }
  153. --
  154. 2.20.1