Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 00001111 authored by Billy Lau's avatar Billy Lau
Browse files

BinaryTransparencyService: Log new atom to Westworld.

Per the introduction of a new atom (MobileBundledAppInfoGathered),
we are logging new pertinent data to Westworld. These includes:
- preloaded apps that are updated
- new MBAs that are installed in the background

Note that we are *not* recording the full set of preloaded apps
on a device due to being cautious about data footprint. Instead,
we rely on those being implicitly covered under the vbmeta digest
measurement.

Bug: 245944158

Test: Manual. Set up the device by going through the SuW. Connect
to the Internet and allow for updates and also let the system
install several MBAs. Then, invoke `statsd_testdrive 566` from a
terminal (as 566 is the atom number). Within 60 seconds of that
invocation, trigger the package measuring job via the following
command from another terminal:
`adb shell cmd jobscheduler run android <job-id>` where the
job-id can be found in logcat.

Change-Id: I148dc6a7f1c8362e87321ba5d4879b266f1f11c9
parent fa11a685
Loading
Loading
Loading
Loading
+10 −10
Original line number Diff line number Diff line
@@ -310,18 +310,19 @@ public class BinaryTransparencyService extends SystemService {
                Bundle packageMeasurement = measurePackage(packageInfo);
                results.add(packageMeasurement);

                if (record) {
                if (record && (mba_status == MBA_STATUS_UPDATED_PRELOAD)) {
                    // compute digests of signing info
                    String[] signerDigestHexStrings = computePackageSignerSha256Digests(
                            packageInfo.signingInfo);

                    // now we should have all the bits for the atom
                    /*  TODO: Uncomment and test after merging new atom definition.
                    byte[] cDigest = packageMeasurement.getByteArray(BUNDLE_CONTENT_DIGEST);
                    FrameworkStatsLog.write(FrameworkStatsLog.MOBILE_BUNDLED_APP_INFO_GATHERED,
                            packageInfo.packageName,
                            packageInfo.getLongVersionCode(),
                            HexEncoding.encodeToString(packageMeasurement.getByteArray(
                                    BUNDLE_CONTENT_DIGEST), false),
                            (cDigest != null) ? HexEncoding.encodeToString(
                                    packageMeasurement.getByteArray(BUNDLE_CONTENT_DIGEST),
                                    false) : null,
                            packageMeasurement.getInt(BUNDLE_CONTENT_DIGEST_ALGORITHM),
                            signerDigestHexStrings, // signer_cert_digest
                            mba_status,             // mba_status
@@ -330,7 +331,6 @@ public class BinaryTransparencyService extends SystemService {
                            null,                   // installer
                            null                    // originator
                    );
                     */
                }
            }
            if (DEBUG) {
@@ -377,12 +377,13 @@ public class BinaryTransparencyService extends SystemService {
                    }

                    // we should now have all the info needed for the atom
                    /*  TODO: Uncomment and test after merging new atom definition.
                    byte[] cDigest = packageMeasurement.getByteArray(BUNDLE_CONTENT_DIGEST);
                    FrameworkStatsLog.write(FrameworkStatsLog.MOBILE_BUNDLED_APP_INFO_GATHERED,
                            packageInfo.packageName,
                            packageInfo.getLongVersionCode(),
                            HexEncoding.encodeToString(packageMeasurement.getByteArray(
                                    BUNDLE_CONTENT_DIGEST), false),
                            (cDigest != null) ? HexEncoding.encodeToString(
                                    packageMeasurement.getByteArray(BUNDLE_CONTENT_DIGEST),
                                    false) : null,
                            packageMeasurement.getInt(BUNDLE_CONTENT_DIGEST_ALGORITHM),
                            signerDigestHexStrings,
                            MBA_STATUS_NEW_INSTALL,   // mba_status
@@ -391,7 +392,6 @@ public class BinaryTransparencyService extends SystemService {
                            installer,
                            originator
                    );
                     */
                }
            }
            if (DEBUG) {