Skip to content

Commit

Permalink
fix: configure hash_alg based on signing key type
Browse files Browse the repository at this point in the history
Don't set a default HashAlgorithm: not all combinations are legal (e.g. SHA256 and NIST P-521 will error on use).
  • Loading branch information
hko-s committed Mar 2, 2024
1 parent bb7782d commit 6cda288
Show file tree
Hide file tree
Showing 8 changed files with 8 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/composed/key/public.rs
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ impl PublicSubkey {
let config = SignatureConfigBuilder::default()
.typ(SignatureType::SubkeyBinding)
.pub_alg(sec_key.algorithm())
.hash_alg(sec_key.hash_alg())
.hashed_subpackets(hashed_subpackets)
.unhashed_subpackets(vec![Subpacket::regular(SubpacketData::Issuer(
sec_key.key_id(),
Expand Down
1 change: 1 addition & 0 deletions src/composed/key/secret.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ impl SecretSubkey {
let config = SignatureConfigBuilder::default()
.typ(SignatureType::SubkeyBinding)
.pub_alg(sec_key.algorithm())
.hash_alg(sec_key.hash_alg())
.hashed_subpackets(hashed_subpackets)
.unhashed_subpackets(vec![Subpacket::regular(SubpacketData::Issuer(
sec_key.key_id(),
Expand Down
2 changes: 2 additions & 0 deletions src/composed/key/shared.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ impl KeyDetails {
let config = SignatureConfigBuilder::default()
.typ(SignatureType::CertGeneric)
.pub_alg(key.algorithm())
.hash_alg(key.hash_alg())
.hashed_subpackets(hashed_subpackets)
.unhashed_subpackets(vec![Subpacket::regular(SubpacketData::Issuer(
key.key_id(),
Expand All @@ -109,6 +110,7 @@ impl KeyDetails {
let config = SignatureConfigBuilder::default()
.typ(SignatureType::CertGeneric)
.pub_alg(key.algorithm())
.hash_alg(key.hash_alg())
.hashed_subpackets(vec![
Subpacket::regular(SubpacketData::SignatureCreationTime(
chrono::Utc::now().trunc_subsecs(0),
Expand Down
1 change: 1 addition & 0 deletions src/packet/public_key_macro.rs
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ macro_rules! impl_public_key {

config
.pub_alg(key.algorithm())
.hash_alg(key.hash_alg())
.hashed_subpackets(vec![$crate::packet::Subpacket::regular(
$crate::packet::SubpacketData::SignatureCreationTime(
chrono::Utc::now().trunc_subsecs(0),
Expand Down
1 change: 1 addition & 0 deletions src/packet/secret_key_macro.rs
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ macro_rules! impl_secret_key {

config
.pub_alg(key.algorithm())
.hash_alg(key.hash_alg())
.hashed_subpackets(vec![$crate::packet::Subpacket::regular(
$crate::packet::SubpacketData::SignatureCreationTime(
chrono::Utc::now().trunc_subsecs(0),
Expand Down
2 changes: 0 additions & 2 deletions src/packet/signature/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,6 @@ pub struct SignatureConfig {
pub version: SignatureVersion,
pub typ: SignatureType,
pub pub_alg: PublicKeyAlgorithm,

#[builder(default)]
pub hash_alg: HashAlgorithm,

pub unhashed_subpackets: Vec<Subpacket>,
Expand Down
1 change: 1 addition & 0 deletions src/packet/user_attribute.rs
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ impl UserAttribute {
let config = SignatureConfigBuilder::default()
.typ(SignatureType::CertGeneric)
.pub_alg(key.algorithm())
.hash_alg(key.hash_alg())
.hashed_subpackets(vec![Subpacket::regular(
SubpacketData::SignatureCreationTime(Utc::now().trunc_subsecs(0)),
)])
Expand Down
1 change: 1 addition & 0 deletions src/packet/user_id.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ impl UserId {
let config = SignatureConfigBuilder::default()
.typ(SignatureType::CertGeneric)
.pub_alg(key.algorithm())
.hash_alg(key.hash_alg())
.hashed_subpackets(vec![Subpacket::regular(
SubpacketData::SignatureCreationTime(Utc::now().trunc_subsecs(0)),
)])
Expand Down

0 comments on commit 6cda288

Please sign in to comment.