pvmfw_avb: Derive Eq for VerifiedBootData

Derive the trait, which can be used in tests assert_eq! and fill force a
programmer adding a new field to the structure to cover it in tests:

    error[E0063]: missing field `X` in initializer of `pvmfw_avb::VerifiedBootData<'_>`

On mismatch, assert_eq prints out the debug representation of the inputs:

    STACKTRACE:
    ---- TEST_NAME stderr ----
    thread 'main' panicked at 'assertion failed: `(left == right)`
    left: `VerifiedBootData { debug_level: None, kernel_digest: [...], initrd_digest: None, }`,
    right: `VerifiedBootData { debug_level: None, kernel_digest: [...], initrd_digest: Some([...]) }`,
    packages/modules/Virtualization/pvmfw/avb/tests/api_test.rs:71:5

Note: no functional change intended.

Test: atest libpvmfw_avb.integration_test
Change-Id: Ia9b7046ff24ebffe6d15a6cc936a3ac2e8a5d4b9
diff --git a/pvmfw/avb/src/verify.rs b/pvmfw/avb/src/verify.rs
index 1a79c83..67658fd 100644
--- a/pvmfw/avb/src/verify.rs
+++ b/pvmfw/avb/src/verify.rs
@@ -22,7 +22,7 @@
 use core::ffi::c_char;
 
 /// Verified data returned when the payload verification succeeds.
-#[derive(Debug)]
+#[derive(Debug, PartialEq, Eq)]
 pub struct VerifiedBootData {
     /// DebugLevel of the VM.
     pub debug_level: DebugLevel,
diff --git a/pvmfw/avb/tests/api_test.rs b/pvmfw/avb/tests/api_test.rs
index 261d8a8..1d7369d 100644
--- a/pvmfw/avb/tests/api_test.rs
+++ b/pvmfw/avb/tests/api_test.rs
@@ -18,7 +18,7 @@
 
 use anyhow::{anyhow, Result};
 use avb_bindgen::{AvbFooter, AvbVBMetaImageHeader};
-use pvmfw_avb::{verify_payload, AvbSlotVerifyError, DebugLevel};
+use pvmfw_avb::{verify_payload, AvbSlotVerifyError, DebugLevel, VerifiedBootData};
 use std::{fs, mem::size_of, ptr};
 use utils::*;
 
@@ -60,10 +60,11 @@
     )
     .map_err(|e| anyhow!("Verification failed. Error: {}", e))?;
 
-    assert_eq!(DebugLevel::None, verified_boot_data.debug_level);
-    let digest = hash(&[&hex::decode("1111")?, &fs::read(UNSIGNED_TEST_IMG_PATH)?]);
-    assert_eq!(digest, verified_boot_data.kernel_digest);
-    assert!(verified_boot_data.initrd_digest.is_none());
+    let kernel_digest = hash(&[&hex::decode("1111")?, &fs::read(UNSIGNED_TEST_IMG_PATH)?]);
+    let expected_boot_data =
+        VerifiedBootData { debug_level: DebugLevel::None, kernel_digest, initrd_digest: None };
+    assert_eq!(expected_boot_data, verified_boot_data);
+
     Ok(())
 }
 
diff --git a/pvmfw/avb/tests/utils.rs b/pvmfw/avb/tests/utils.rs
index 8756d06..9942b98 100644
--- a/pvmfw/avb/tests/utils.rs
+++ b/pvmfw/avb/tests/utils.rs
@@ -22,7 +22,7 @@
     AvbVBMetaImageHeader,
 };
 use openssl::sha;
-use pvmfw_avb::{verify_payload, AvbSlotVerifyError, DebugLevel, Digest};
+use pvmfw_avb::{verify_payload, AvbSlotVerifyError, DebugLevel, Digest, VerifiedBootData};
 use std::{
     fs,
     mem::{size_of, transmute, MaybeUninit},
@@ -106,19 +106,14 @@
     let verified_boot_data = verify_payload(&kernel, Some(initrd), &load_trusted_public_key()?)
         .map_err(|e| anyhow!("Verification failed. Error: {}", e))?;
 
-    assert_eq!(expected_debug_level, verified_boot_data.debug_level);
-
     let footer = extract_avb_footer(&kernel)?;
-    assert_eq!(
-        hash(&[&hash(&[b"bootloader"]), &kernel[..usize::try_from(footer.original_image_size)?]]),
-        verified_boot_data.kernel_digest,
-        "Kernel digest is not equal to the expected."
-    );
-    assert_eq!(
-        hash(&[&hash(&[initrd_salt]), initrd,]),
-        verified_boot_data.initrd_digest.unwrap(),
-        "initrd digest is not equal to the expected."
-    );
+    let kernel_digest =
+        hash(&[&hash(&[b"bootloader"]), &kernel[..usize::try_from(footer.original_image_size)?]]);
+    let initrd_digest = Some(hash(&[&hash(&[initrd_salt]), initrd]));
+    let expected_boot_data =
+        VerifiedBootData { debug_level: expected_debug_level, kernel_digest, initrd_digest };
+    assert_eq!(expected_boot_data, verified_boot_data);
+
     Ok(())
 }