From 2cd7c7a8757d77f08714bf5f1b4cb70b544e93ca Mon Sep 17 00:00:00 2001 From: Steffen Eiden Date: Mon, 28 Apr 2025 10:41:46 +0200 Subject: [PATCH] pv: Refactor Null secret MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With the recent upgrade to zerocopy 0.8 it is now possible to create those structs at compile time. This removes the use of a magic array constant. Signed-off-by: Steffen Eiden Signed-off-by: Jan Höppner --- rust/pv/src/uvsecret/guest_secret.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/rust/pv/src/uvsecret/guest_secret.rs b/rust/pv/src/uvsecret/guest_secret.rs index 087a1ad3..8cf78483 100644 --- a/rust/pv/src/uvsecret/guest_secret.rs +++ b/rust/pv/src/uvsecret/guest_secret.rs @@ -371,14 +371,37 @@ pub(crate) enum SecretAuth { } impl SecretAuth { + const NULL_HDR: NullSecretHdr = NullSecretHdr::new(); + pub fn get(&self) -> &[u8] { match self { - Self::Null => &[0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + Self::Null => Self::NULL_HDR.as_bytes(), Self::Listable(h) => h.as_bytes(), } } } +#[repr(C)] +#[derive(Debug, IntoBytes, FromBytes, Immutable, KnownLayout)] +struct NullSecretHdr { + res0: u16, + kind: U16, + secret_len: U32, + res8: u64, +} +assert_size!(NullSecretHdr, 0x10); + +impl NullSecretHdr { + const fn new() -> Self { + Self { + res0: 0, + kind: U16::new(ListableSecretType::NULL), + secret_len: U32::ZERO, + res8: 0, + } + } +} + #[repr(C)] #[derive(Debug, IntoBytes, FromBytes, Immutable, KnownLayout)] pub(crate) struct ListableSecretHdr {