diff --git a/rust/pvimg/src/cmd/info.rs b/rust/pvimg/src/cmd/info.rs index 09f98648..a1873318 100644 --- a/rust/pvimg/src/cmd/info.rs +++ b/rust/pvimg/src/cmd/info.rs @@ -12,7 +12,7 @@ use pv::{ }; use pvimg::{ error::{Error, OwnExitCode}, - uvdata::{KeyExchangeTrait, SeH, SeHdr, UvDataTrait}, + uvdata::{EnvelopeSeHdrV1, KeyExchangeTrait, SeH, SeHdr, UvDataTrait}, }; use crate::cli::{InfoArgs, OutputFormatKind, OutputFormatSpec, OutputFormatVariant}; @@ -55,12 +55,13 @@ pub fn info(opt: &InfoArgs) -> Result { kind: OutputFormatKind::Json, variant, } => { + let doc = EnvelopeSeHdrV1::new(se_hdr); match variant { OutputFormatVariant::Minify => { - serde_json::to_writer(&mut output, &se_hdr)?; + serde_json::to_writer(&mut output, &doc)?; } OutputFormatVariant::Default | OutputFormatVariant::Pretty => { - serde_json::to_writer_pretty(&mut output, &se_hdr)? + serde_json::to_writer_pretty(&mut output, &doc)?; } } // Make sure the output ends with a new line diff --git a/rust/pvimg/src/lib.rs b/rust/pvimg/src/lib.rs index d521ecb1..3f72bd43 100644 --- a/rust/pvimg/src/lib.rs +++ b/rust/pvimg/src/lib.rs @@ -37,9 +37,10 @@ pub mod misc { pub mod uvdata { pub use crate::pv_utils::{ AeadPlainDataTrait, BuilderTrait, ComponentMetadataV1, ControlFlagTrait, ControlFlagsTrait, - FlagData, KeyExchangeTrait, PcfV1, PlaintextControlFlagsV1, ScfV1, SeH, SeHdr, SeHdrAadV1, - SeHdrBinV1, SeHdrBuilder, SeHdrData, SeHdrDataV1, SeHdrPlain, SeHdrVersion, SeHdrVersioned, - SecretControlFlagsV1, UvDataPlainTrait, UvDataTrait, UvKeyHashesV1, + EnvelopeSeHdrV1, FlagData, KeyExchangeTrait, PcfV1, PlaintextControlFlagsV1, ScfV1, SeH, + SeHdr, SeHdrAadV1, SeHdrBinV1, SeHdrBuilder, SeHdrData, SeHdrDataV1, SeHdrPlain, + SeHdrVersion, SeHdrVersioned, SecretControlFlagsV1, UvDataPlainTrait, UvDataTrait, + UvKeyHashesV1, }; } diff --git a/rust/pvimg/src/pv_utils.rs b/rust/pvimg/src/pv_utils.rs index 3b58cace..be645916 100644 --- a/rust/pvimg/src/pv_utils.rs +++ b/rust/pvimg/src/pv_utils.rs @@ -18,7 +18,7 @@ pub use layout::{Interval, Layout}; pub use misc::{round_up, try_copy_slice_to_array}; pub use psw::{ShortPsw, PSW, PSW_MASK_BA, PSW_MASK_EA}; pub use se_hdr::{ - ComponentMetadataV1, ControlFlagTrait, ControlFlagsTrait, FlagData, PcfV1, + ComponentMetadataV1, ControlFlagTrait, ControlFlagsTrait, EnvelopeSeHdrV1, FlagData, PcfV1, PlaintextControlFlagsV1, ScfV1, SeH, SeHdr, SeHdrAadV1, SeHdrBinV1, SeHdrBuilder, SeHdrData, SeHdrDataV1, SeHdrPlain, SeHdrVersion, SeHdrVersioned, SecretControlFlagsV1, }; diff --git a/rust/pvimg/src/pv_utils/se_hdr.rs b/rust/pvimg/src/pv_utils/se_hdr.rs index 66272622..6e7d926f 100644 --- a/rust/pvimg/src/pv_utils/se_hdr.rs +++ b/rust/pvimg/src/pv_utils/se_hdr.rs @@ -9,8 +9,8 @@ mod hdr_v1; mod keys; pub use brb::{ - ComponentMetadata, ComponentMetadataV1, SeH, SeHdr, SeHdrBinV1, SeHdrData, SeHdrDataV1, - SeHdrPlain, SeHdrVersion, SeHdrVersioned, + ComponentMetadata, ComponentMetadataV1, EnvelopeSeHdrV1, SeH, SeHdr, SeHdrBinV1, SeHdrData, + SeHdrDataV1, SeHdrPlain, SeHdrVersion, SeHdrVersioned, }; pub use builder::SeHdrBuilder; pub use flags::{ diff --git a/rust/pvimg/src/pv_utils/se_hdr/brb.rs b/rust/pvimg/src/pv_utils/se_hdr/brb.rs index 198a560c..8756757e 100644 --- a/rust/pvimg/src/pv_utils/se_hdr/brb.rs +++ b/rust/pvimg/src/pv_utils/se_hdr/brb.rs @@ -16,6 +16,7 @@ use pv::{ static_assert, }; use serde::{Deserialize, Serialize}; +use utils::S390ToolsMetaData; pub use super::hdr_v1::{SeHdrBinV1, SeHdrDataV1}; use super::{PlaintextControlFlagsV1, SecretControlFlagsV1}; @@ -33,6 +34,27 @@ use crate::{ }, }; +#[derive(Debug, PartialEq, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub struct EnvelopeSeHdrV1 { + pub meta: S390ToolsMetaData, + pub data: SeH, +} + +impl EnvelopeSeHdrV1 { + /// Creates a new EnvelopeSeHdrV1 with the given data and default metadata + /// + /// # Arguments + /// + /// * `data` - The SE header data to wrap + pub fn new(data: SeH) -> Self { + Self { + meta: S390ToolsMetaData::new(1), + data, + } + } +} + #[repr(u32)] #[non_exhaustive] #[derive(Debug, Clone, Copy, PartialEq, Eq, DekuRead, DekuWrite, Serialize, Deserialize)]