crypto: `impl Signer` based on `Keypair`

Since all signers implement `signature::Keypair`, we can simplify the
implementations of `signature::Signer<ExtendedSignature>`. A blanket
implementation is not possible, because we do not control
`signature::Signer`.
This commit is contained in:
Lorenz Leutgeb 2026-03-13 14:18:46 +01:00
parent f2ad54542e
commit 06fae85e67
No known key found for this signature in database
4 changed files with 10 additions and 7 deletions

View File

@ -27,7 +27,7 @@ git-ref-format-core = { workspace = true, optional = true }
radicle-ssh = { workspace = true, optional = true }
schemars = { workspace = true, optional = true, features = ["derive", "std"] }
serde = { workspace = true, features = ["derive", "std"] }
signature = { workspace = true }
signature = { workspace = true, features = ["std"] }
sqlite = { workspace = true, features = ["bundled"], optional = true }
ssh-key = { version = "0.6.3", default-features = false, features = ["std", "encryption", "getrandom"], optional = true }
thiserror = { workspace = true, default-features = true }

View File

@ -65,9 +65,10 @@ impl signature::Signer<Signature> for AgentSigner {
impl signature::Signer<ExtendedSignature> for AgentSigner {
fn try_sign(&self, msg: &[u8]) -> Result<ExtendedSignature, signature::Error> {
use signature::Keypair as _;
Ok(ExtendedSignature {
key: self.public,
sig: Signer::try_sign(self, msg).map_err(signature::Error::from_source)?,
key: self.verifying_key(),
sig: self.try_sign(msg)?,
})
}
}

View File

@ -258,9 +258,10 @@ impl signature::Signer<Signature> for MemorySigner {
impl signature::Signer<ExtendedSignature> for MemorySigner {
fn try_sign(&self, msg: &[u8]) -> Result<ExtendedSignature, signature::Error> {
use signature::Keypair as _;
Ok(ExtendedSignature {
key: self.public,
sig: Signer::sign(self, msg),
key: self.verifying_key(),
sig: self.try_sign(msg)?,
})
}
}

View File

@ -10,9 +10,10 @@ pub struct MockSigner {
impl signature::Signer<ExtendedSignature> for MockSigner {
fn try_sign(&self, msg: &[u8]) -> Result<ExtendedSignature, signature::Error> {
use signature::Keypair as _;
Ok(ExtendedSignature {
key: self.pk,
sig: signature::Signer::<Signature>::try_sign(self, msg)?,
key: self.verifying_key(),
sig: self.try_sign(msg)?,
})
}
}