blob: 973bcb5c1475482ee696f3fe2a47e32292b6ff13 [file] [log] [blame]
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2024 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<!--
This XML defines an allowlist of packages that should be exempt from ECM (Enhanced Confirmation
Mode).
Example usage:
<enhanced-confirmation-trusted-package
package="com.example.app"
sha256-cert-digest="E9:7A:BC:2C:D1:CA:8D:58:6A:57:0B:8C:F8:60:AA:D2:8D:13:30:2A:FB:C9:00:2C:5D:53:B2:6C:09:A4:85:A0"/>
...
<enhanced-confirmation-trusted-installer
package="com.example.installer"
sha256-cert-digest="E9:7A:BC:2C:D1:CA:8D:58:6A:57:0B:8C:F8:60:AA:D2:8D:13:30:2A:FB:C9:00:2C:5D:53:B2:6C:09:A4:85:A0"/>
...
The <enhanced-confirmation-trusted-package> entry shown in the above example indicates that
"com.example.app" should be considered a "trusted package". A "trusted package" will be exempt from
ECM restrictions.
The <enhanced-confirmation-trusted-installer> entry shown in the above example indicates that
"com.example.app" should be considered a "trusted installer". Apps installed by "trusted installers"
will be exempt from ECM restrictions, with conditions explained in the next few paragraphs.
If zero <enhanced-confirmation-trusted-installer> entries are declared, then *all* packages will be
exempt from ECM restrictions, except apps meeting *all* of the following criteria:
A. The app is not pre-installed, and
B. The app has no matching <enhanced-confirmation-trusted-package> entries declared, and
C. The app is marked by its installer as coming from an untrustworthy package source.
(For example, an installer may set an app's package source to
PackageInstaller.PACKAGE_SOURCE_DOWNLOADED_FILE or PackageInstaller.PACKAGE_SOURCE_LOCAL_FILE,
which are considered untrustworthy.)
If one or more <enhanced-confirmation-trusted-installer> entries are declared, then packages must,
in order to be exempt from ECM, meet at least one of the following criteria:
A. Be installed by an installer with a matching <enhanced-confirmation-trusted-installer> entry
declared, and be marked as coming from an "trustworthy" package source by the installer, or
B. Be installed via a pre-installed installer, and be marked as coming from a "trustworthy"
package source by the installer, or
C. Have a matching <enhanced-confirmation-trusted-package> entry declared.
For either type of XML element:
- The "package" XML attribute refers to the app's package name.
- The "sha256-cert-digest" XML attribute refers to the SHA-256 hash of an app signing certificate.
For any entry to successfully apply to a package, both XML attributes must be present, and must
match the package. That is, the package name must match the "package" attribute, and the app must be
signed by the signing certificate identified by the "sha256-cert-digest" attribute.
-->
<config></config>