mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
pvimg and create-sehdr: Refactor code to use generic flags
Replace version-specific flag enums (PcfV1, ScfV1) with a unified SeHdrFlag enum and generic ControlFlagsModel. This refactoring provides: - Single SeHdrFlag enum for all control flags across SE header versions - Generic SeHdrControlFlagsModel with version-specific configurations - EffectiveControlFlags type replacing PlaintextControlFlagsV1/SecretControlFlagsV1 - FlagsOverride mechanism for customizing flag configurations - Enhanced FromStr implementation for flag parsing - Comprehensive test coverage for flag operations and conversions The new design improves maintainability by eliminating code duplication and provides a more flexible API for working with SE header control flags. Assisted-by: IBM Bob:1.0.4 Signed-off-by: Marc Hartmayer <marc@linux.ibm.com> Reviewed-by: Steffen Eiden <seiden@linux.ibm.com> Signed-off-by: Steffen Eiden <seiden@linux.ibm.com>
This commit is contained in:
committed by
Steffen Eiden
parent
20fffb31d7
commit
c87d11abfe
@@ -17,7 +17,7 @@ use pv::request::SymKeyType;
|
||||
use pv::{Error as PvError, Result};
|
||||
use pvimg::misc::PSW;
|
||||
use pvimg::secured_comp::{ComponentTrait, Layout, SecuredComponentBuilder};
|
||||
use pvimg::uvdata::{BuilderTrait, SeHdrBuilder, SeHdrVersion};
|
||||
use pvimg::uvdata::{BuilderTrait, SeHdrBuilder, SeHdrControlFlags, SeHdrVersion, SeTarget};
|
||||
use utils::{AtomicFile, AtomicFileOperation, HexSlice, PvLogger, VerbosityOptions};
|
||||
|
||||
/// Converts the hexstring into a byte vector.
|
||||
@@ -203,11 +203,8 @@ fn main() -> anyhow::Result<()> {
|
||||
info!("\n# Creating Secure Execution Header");
|
||||
let addr = args.psw_addr;
|
||||
let mask = args.psw_mask;
|
||||
let mut builder = SeHdrBuilder::new(
|
||||
SeHdrVersion::V1,
|
||||
PSW { addr, mask },
|
||||
secure_comp_builer.finish()?,
|
||||
)?;
|
||||
let version = SeHdrVersion::V1;
|
||||
let mut builder = SeHdrBuilder::new(version, PSW { addr, mask }, secure_comp_builer.finish()?)?;
|
||||
let mut target_pub_keys = vec![];
|
||||
for hkd_path in args.host_key_documents {
|
||||
info!(
|
||||
@@ -231,8 +228,9 @@ fn main() -> anyhow::Result<()> {
|
||||
}
|
||||
builder.add_hostkeys(&target_pub_keys)?;
|
||||
|
||||
let pcf = try_parse_u64(&args.pcf, "pcf")?.into();
|
||||
let scf = try_parse_u64(&args.scf, "scf")?.into();
|
||||
let target = SeTarget::from_se_hdr_version(version);
|
||||
let pcf = SeHdrControlFlags::from_u64(try_parse_u64(&args.pcf, "pcf")?, target, true);
|
||||
let scf = SeHdrControlFlags::from_u64(try_parse_u64(&args.scf, "scf")?, target, false);
|
||||
info!(
|
||||
"PSW addr ............: {addr:#018x}\n\
|
||||
PSW mask ............: {mask:#018x}\n\
|
||||
|
||||
Reference in New Issue
Block a user