From d0275a154201d380bed5acee15a688b544688f47 Mon Sep 17 00:00:00 2001 From: TommyLike Date: Sat, 7 Oct 2023 17:50:29 +0800 Subject: [PATCH] Support rpm v3 and v4 signature --- Cargo.toml | 2 +- src/client/cmd/add.rs | 8 +- src/client/file_handler/rpm.rs | 108 +++++++++++++++++++----- src/util/options.rs | 3 +- test_assets/at-3.1.10-43.el6.x86_64.rpm | Bin 0 -> 61688 bytes 5 files changed, 98 insertions(+), 23 deletions(-) create mode 100644 test_assets/at-3.1.10-43.el6.x86_64.rpm diff --git a/Cargo.toml b/Cargo.toml index ad7aae3..c7809b0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,7 +55,7 @@ num_cpus = "1.15.0" walkdir = "2.3.2" async-channel = "1.8.0" uuid = { version = "1.3.0", features = ["v4"]} -rpm-infra ="0.12.1" +rpm-infra ="0.12.2" dns-lookup = {version="1.0.8"} sha2 = "0.10.6" bincode = "2.0.0-rc.3" diff --git a/src/client/cmd/add.rs b/src/client/cmd/add.rs index 103b331..2f03916 100644 --- a/src/client/cmd/add.rs +++ b/src/client/cmd/add.rs @@ -73,6 +73,9 @@ pub struct CommandAdd { #[arg(value_enum, default_value_t=SignType::Cms)] #[arg(help = "specify the signature type, meaningful when key type is x509, EFI file supports `authenticode` only and KO file supports `cms` and `pkcs7`")] sign_type: SignType, + #[arg(long)] + #[arg(help = "force create rpm v3 signature, default is false. only support when file type is rpm")] + rpm_v3: bool, } @@ -91,6 +94,7 @@ pub struct CommandAddHandler { max_concurrency: usize, sign_type: SignType, token: Option, + rpm_v3: bool, } impl CommandAddHandler { @@ -99,7 +103,8 @@ impl CommandAddHandler { HashMap::from([ (options::DETACHED.to_string(), self.detached.to_string()), (options::KEY_TYPE.to_string(), self.key_type.to_string()), - (options::SIGN_TYPE.to_string(), self.sign_type.to_string())]) + (options::SIGN_TYPE.to_string(), self.sign_type.to_string()), + (options::RPM_V3_SIGNATURE.to_string(), self.rpm_v3.to_string())]) } fn collect_file_candidates(&self) -> Result> { if self.path.is_dir() { @@ -182,6 +187,7 @@ impl SignCommand for CommandAddHandler { max_concurrency: config.read()?.get_string("max_concurrency")?.parse()?, sign_type: command.sign_type, token, + rpm_v3: command.rpm_v3 }) } diff --git a/src/client/file_handler/rpm.rs b/src/client/file_handler/rpm.rs index 383575d..d2f6332 100644 --- a/src/client/file_handler/rpm.rs +++ b/src/client/file_handler/rpm.rs @@ -23,7 +23,7 @@ use std::fs::File; use std::str::FromStr; #[allow(unused_imports)] use std::io::{BufReader, Read}; -use rpm::{Header, IndexSignatureTag, Package, Digests}; +use rpm::{Header, IndexSignatureTag, Package, Digests, IndexTag}; use uuid::Uuid; use crate::domain::datakey::plugins::openpgp::OpenPGPKeyType; @@ -61,6 +61,18 @@ impl RpmFileHandler { } } } + + fn generate_v3_signature(&self, sign_options: &HashMap, package: &Package) -> bool { + if let Some(v3_format) = sign_options.get(options::RPM_V3_SIGNATURE) { + if v3_format == "true" { + return true; + } + } + if package.metadata.header.entry_is_present(IndexTag::RPMTAG_PAYLOADDIGEST) || package.metadata.header.entry_is_present(IndexTag::RPMTAG_PAYLOADDIGESTALT) { + return false; + } + true + } } //todo: figure our why is much slower when async read & write with tokio is enabled. @@ -81,28 +93,36 @@ impl FileHandler for RpmFileHandler { Ok(()) } - //rpm has two sections need to be signed for rsa + //rpm has two sections need to be signed for rpm v3 signature //1. header //2. header and content - // while there is only section to be signed for dsa + //while there is only section to be signed for rpm v4, also for eddsa key only v4 is supported //1. header async fn split_data( &self, path: &PathBuf, - _sign_options: &mut HashMap, + sign_options: &mut HashMap, key_attributes: &HashMap) -> Result>> { let file = File::open(path)?; let package = Package::parse(&mut BufReader::new(file))?; let mut header_bytes = Vec::::with_capacity(1024); //collect head and head&payload arrays package.metadata.header.write(&mut header_bytes)?; - return if self.get_key_type(key_attributes) == OpenPGPKeyType::Rsa { - let mut header_and_content = Vec::new(); - header_and_content.extend(header_bytes.clone()); - header_and_content.extend(package.content.clone()); - Ok(vec![header_bytes, header_and_content]) + return if self.get_key_type(key_attributes) == OpenPGPKeyType::Eddsa { + if self.generate_v3_signature(sign_options, &package) { + Err(Error::InvalidArgumentError("eddsa key does not support v3 signature".to_string())) + } else { + Ok(vec![header_bytes]) + } } else { - Ok(vec![header_bytes]) + if self.generate_v3_signature(sign_options, &package) { + let mut header_and_content = Vec::new(); + header_and_content.extend(header_bytes.clone()); + header_and_content.extend(package.content.clone()); + Ok(vec![header_bytes, header_and_content]) + } else { + Ok(vec![header_bytes]) + } } } async fn assemble_data( @@ -110,7 +130,7 @@ impl FileHandler for RpmFileHandler { path: & PathBuf, data: Vec>, temp_dir: &PathBuf, - _sign_options: &HashMap, + sign_options: &HashMap, key_attributes: &HashMap ) -> Result<(String, String)> { let temp_rpm = temp_dir.join(Uuid::new_v4().to_string()); @@ -127,14 +147,24 @@ impl FileHandler for RpmFileHandler { let key_type = self.get_key_type(key_attributes); let builder = match key_type { OpenPGPKeyType::Rsa => { - Header::::builder().add_digest( - &header_digest_sha1, - &header_digest_sha256, - &header_and_content_digest, - ).add_rsa_signature( - data[0].as_slice(), - data[1].as_slice(), - ) + if self.generate_v3_signature(sign_options, &package) { + Header::::builder().add_digest( + &header_digest_sha1, + &header_digest_sha256, + &header_and_content_digest, + ).add_rsa_signature_legacy( + data[0].as_slice(), + data[1].as_slice() + ) + } else { + Header::::builder().add_digest( + &header_digest_sha1, + &header_digest_sha256, + &header_and_content_digest, + ).add_rsa_signature( + data[0].as_slice(), + ) + } } OpenPGPKeyType::Eddsa => { Header::::builder().add_digest( @@ -166,6 +196,11 @@ mod test { Ok(PathBuf::from(current_dir.join("test_assets").join("Imath-3.1.4-1.oe2303.x86_64.rpm"))) } + fn get_signed_rpm_without_payload_digest() -> Result { + let current_dir = env::current_dir().expect("get current dir failed"); + Ok(PathBuf::from(current_dir.join("test_assets").join("at-3.1.10-43.el6.x86_64.rpm"))) + } + fn generate_invalid_rpm() -> Result { let temp_file = env::temp_dir().join(Uuid::new_v4().to_string()); let mut file = File::create(temp_file.clone())?; @@ -212,8 +247,19 @@ mod test { } #[tokio::test] - async fn test_split_data_success() { + async fn test_split_rpm_with_payload_digest_success() { + let mut sign_options = HashMap::new(); + let file_handler = RpmFileHandler::new(); + let path = get_signed_rpm().expect("get signed rpm failed"); + let raw_content = file_handler.split_data(&path, &mut sign_options, &HashMap::new()).await.expect("get raw content failed"); + assert_eq!(raw_content.len(), 1); + assert_eq!(raw_content[0].len(), 4325); + } + + #[tokio::test] + async fn test_split_rpm_with_payload_digest_and_v3_force_success() { let mut sign_options = HashMap::new(); + sign_options.insert(options::RPM_V3_SIGNATURE.to_string(), true.to_string()); let file_handler = RpmFileHandler::new(); let path = get_signed_rpm().expect("get signed rpm failed"); let raw_content = file_handler.split_data(&path, &mut sign_options, &HashMap::new()).await.expect("get raw content failed"); @@ -222,6 +268,28 @@ mod test { assert_eq!(raw_content[1].len(), 67757); } + #[tokio::test] + async fn test_split_rpm_with_payload_digest_and_v3_force_eddsa_failed() { + let mut sign_options = HashMap::new(); + sign_options.insert(options::RPM_V3_SIGNATURE.to_string(), true.to_string()); + let mut key_attributes = HashMap::new(); + key_attributes.insert(options::KEY_TYPE.to_string(), OpenPGPKeyType::Eddsa.to_string()); + let file_handler = RpmFileHandler::new(); + let path = get_signed_rpm().expect("get signed rpm failed"); + file_handler.split_data(&path, &mut sign_options, &key_attributes).await.expect_err("eddsa key does not support v3 signature"); + } + + #[tokio::test] + async fn test_split_rpm_without_payload_digest_success() { + let mut sign_options = HashMap::new(); + let file_handler = RpmFileHandler::new(); + let path = get_signed_rpm_without_payload_digest().expect("get signed rpm failed"); + let raw_content = file_handler.split_data(&path, &mut sign_options, &HashMap::new()).await.expect("get raw content failed"); + assert_eq!(raw_content.len(), 2); + assert_eq!(raw_content[0].len(), 21484); + assert_eq!(raw_content[1].len(), 60304); + } + #[tokio::test] async fn test_split_data_failed() { let mut sign_options = HashMap::new(); diff --git a/src/util/options.rs b/src/util/options.rs index 03e2589..5c3bdae 100644 --- a/src/util/options.rs +++ b/src/util/options.rs @@ -16,4 +16,5 @@ pub const DETACHED: &str = "detached"; pub const KEY_TYPE: &str = "key_type"; -pub const SIGN_TYPE: &str = "sign_type"; \ No newline at end of file +pub const SIGN_TYPE: &str = "sign_type"; +pub const RPM_V3_SIGNATURE: &str = "rpm_signature_type"; \ No newline at end of file diff --git a/test_assets/at-3.1.10-43.el6.x86_64.rpm b/test_assets/at-3.1.10-43.el6.x86_64.rpm new file mode 100644 index 0000000000000000000000000000000000000000..54780c4538b70530574de213a895509e99195a4f GIT binary patch literal 61688 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 literal 0 HcmV?d00001 -- Gitee