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());