product_policy/
product_policy_helpers.rs1#[cfg(feature = "manifest")]
7pub mod custom_uefi_json_serde {
9 extern crate alloc;
10
11 use alloc::format;
12 use alloc::string::String;
13 use alloc::vec::Vec;
14 use base64::Engine as _;
15 use serde::Deserialize as _;
16
17 pub fn serialize<S>(bytes: &[u8], s: S) -> Result<S::Ok, S::Error>
19 where
20 S: serde::Serializer,
21 {
22 let encoded = base64::engine::general_purpose::STANDARD.encode(bytes);
23 s.serialize_str(&encoded)
24 }
25
26 pub fn deserialize<'de, D>(d: D) -> Result<Vec<u8>, D::Error>
28 where
29 D: serde::Deserializer<'de>,
30 {
31 let s = String::deserialize(d)?;
32 if s.is_empty() {
33 return Ok(Vec::new());
34 }
35 base64::engine::general_purpose::STANDARD
36 .decode(s.as_bytes())
37 .map_err(|e| serde::de::Error::custom(format!("failed to base64-decode bytes: {e}")))
38 }
39}