pvmfw: update avb Ops lifetimes
libavb_rs Ops lifetimes now distinguish between the Ops lifetime and the
preloaded partition lifetimes, so that we can more easily re-use Ops
objects and return verification data out of functions without also
carrying the Ops around.
Bug: b/330335215
Test: atest libpvmfw_avb.integration_test
Change-Id: Ie4e07f8d079a7408f99f7a72ad4885bbfa09c69b
diff --git a/pvmfw/avb/src/ops.rs b/pvmfw/avb/src/ops.rs
index 9711f72..62bf239 100644
--- a/pvmfw/avb/src/ops.rs
+++ b/pvmfw/avb/src/ops.rs
@@ -59,7 +59,7 @@
pub(crate) fn verify_partition(
&mut self,
partition_name: &CStr,
- ) -> SlotVerifyResult<SlotVerifyData> {
+ ) -> SlotVerifyResult<SlotVerifyData<'a>> {
slot_verify(
self,
&[partition_name],
@@ -70,7 +70,7 @@
}
}
-impl<'a> avb::Ops for Ops<'a> {
+impl<'a> avb::Ops<'a> for Ops<'a> {
fn read_from_partition(
&mut self,
partition: &CStr,
@@ -82,7 +82,7 @@
Ok(buffer.len())
}
- fn get_preloaded_partition(&mut self, partition: &CStr) -> IoResult<&[u8]> {
+ fn get_preloaded_partition(&mut self, partition: &CStr) -> IoResult<&'a [u8]> {
self.payload.get_partition(partition)
}
diff --git a/pvmfw/avb/src/verify.rs b/pvmfw/avb/src/verify.rs
index 2ebe9a1..038b1d6 100644
--- a/pvmfw/avb/src/verify.rs
+++ b/pvmfw/avb/src/verify.rs
@@ -280,11 +280,10 @@
}
let initrd = initrd.unwrap();
- let mut initrd_ops = Ops::new(&payload);
let (debug_level, initrd_descriptor) =
- if verify_initrd(&mut initrd_ops, PartitionName::InitrdNormal, initrd).is_ok() {
+ if verify_initrd(&mut ops, PartitionName::InitrdNormal, initrd).is_ok() {
(DebugLevel::None, hash_descriptors.initrd_normal)
- } else if verify_initrd(&mut initrd_ops, PartitionName::InitrdDebug, initrd).is_ok() {
+ } else if verify_initrd(&mut ops, PartitionName::InitrdDebug, initrd).is_ok() {
(DebugLevel::Full, hash_descriptors.initrd_debug)
} else {
return Err(SlotVerifyError::Verification(None).into());