| <?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> |