From dc1f6dadef1fab6e672a30721f6f4cbf1b117043 Mon Sep 17 00:00:00 2001 From: Akilesh Kailash Date: Wed, 23 Mar 2022 18:53:52 +0000 Subject: update_verifier: Verify blocks Check if the block verification was already done by snapuserd daemon - If so, skip the verification process. If daemon failed to verify the block, update_verifier will fallback and continue the verification. Bug: 193863442 Test: OTA Signed-off-by: Akilesh Kailash Change-Id: I18946fb730376f19cce0738bd6765d5f5d0248b6 --- update_verifier/update_verifier.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'update_verifier/update_verifier.cpp') diff --git a/update_verifier/update_verifier.cpp b/update_verifier/update_verifier.cpp index a042f9008..88fcfa502 100644 --- a/update_verifier/update_verifier.cpp +++ b/update_verifier/update_verifier.cpp @@ -52,6 +52,7 @@ #include #include +#include #include #include #include @@ -188,7 +189,28 @@ bool UpdateVerifier::ReadBlocks(const std::string partition_name, return ret; } +bool UpdateVerifier::CheckVerificationStatus() { + auto client = + android::snapshot::SnapuserdClient::Connect(android::snapshot::kSnapuserdSocket, 5s); + if (!client) { + LOG(ERROR) << "Unable to connect to snapuserd"; + return false; + } + + return client->QueryUpdateVerification(); +} + bool UpdateVerifier::VerifyPartitions() { + const bool userspace_snapshots = + android::base::GetBoolProperty("ro.virtual_ab.userspace.snapshots.enabled", false); + + if (userspace_snapshots && CheckVerificationStatus()) { + LOG(INFO) << "Partitions verified by snapuserd daemon"; + return true; + } + + LOG(INFO) << "Partitions not verified by snapuserd daemon"; + auto dm_block_devices = FindDmPartitions(); if (dm_block_devices.empty()) { LOG(ERROR) << "No dm-enabled block device is found."; -- cgit v1.2.3