Skip to content

Commit

Permalink
Merge branch 'rpm-rs:master' into fix_compile_error_on_windows
Browse files Browse the repository at this point in the history
  • Loading branch information
syokensyo authored Sep 28, 2023
2 parents cd0f293 + bb5c1ea commit 64f4e4c
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 38 deletions.
11 changes: 9 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Added
- Support for setting file capabilities via the RPMTAGS_FILECAPS header.
- `PackageMetadata::get_file_entries` method can get capability headers for each file.

- Support for symbolic link in file mode.
- Make file type const `REGULAR_FILE_TYPE` `DIR_FILE_TYPE` `SYMBOLIC_LINK_FILE_TYPE` public, because `FileMode::file_type` is public, sometimes we need this const to determin file type.
- Fix compile error on Windows which introduced by file capabilities support feature.

## 0.12.1

### Added

- Support for setting file capabilities via the RPMTAGS_FILECAPS header.
- `PackageMetadata::get_file_entries` method can get capability headers for each file.

## 0.12.0

### Breaking Changes
Expand Down
6 changes: 3 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "rpm"
version = "0.12.0"
version = "0.12.1"
authors = [
"René Richter <[email protected]>",
"Bernhard Schuster <[email protected]>",
Expand Down Expand Up @@ -57,8 +57,8 @@ xz2 = "0.1"
capctl = "0.2.3"

[dev-dependencies]
rsa = { version = "0.8" }
rsa-der = { version = "^0.3.0" }
rsa = { version = "0.9.2" }
rsa-der = { version = "0.3.0" }
# Pin time due to msrv
time = "=0.3.23"
env_logger = "0.10.0"
Expand Down
67 changes: 34 additions & 33 deletions src/rpm/signature/pgp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,41 +162,42 @@ impl traits::Verifying for Verifier {
);
}

self.public_key
.public_subkeys
.iter()
.filter(|sub_key| {
if sub_key.key_id().as_ref() == key_id.as_ref() {
log::trace!(
"Found a matching key id {:?} == {:?}",
sub_key.key_id(),
key_id
);
true
} else {
log::trace!("Not the one we want: {:?}", sub_key);
false
}
})
.fold(
Err(Error::KeyNotFoundError {
key_ref: format!("{:?}", key_id),
}),
|previous_res, sub_key| {
if previous_res.is_err() {
log::trace!("Test next candidate subkey");
signature.verify(sub_key, &mut data).map_err(|e| {
Error::VerificationError {
source: Box::new(e),
key_ref: format!("{:?}", sub_key.key_id()),
}
let mut result = Err(Error::KeyNotFoundError {
key_ref: format!("{:?}", key_id),
});
for sub_key in &self.public_key.public_subkeys {
log::trace!("Trying subkey candidate {:?}", sub_key.key_id());

if sub_key.key_id().as_ref() == key_id.as_ref() {
log::trace!(
"Subkey key id {:?} matches signature key id",
sub_key.key_id()
);

match signature.verify(sub_key, &mut data) {
Ok(_) => {
log::trace!(
"Signature successfully verified with subkey {:?}",
sub_key.key_id()
);
return Ok(());
}
Err(e) => {
log::trace!("Subkey verification failed");
result = Err(Error::VerificationError {
source: Box::new(e),
key_ref: format!("{:?}", sub_key.key_id()),
})
} else {
log::trace!("Signature already verified, nop");
Ok(())
}
},
)
}
} else {
log::trace!(
"Subkey key id {:?} does not match signature",
sub_key.key_id()
);
}
}
result
} else {
log::trace!(
"Signature has no issuer ref, attempting primary key: {:?}",
Expand Down

0 comments on commit 64f4e4c

Please sign in to comment.