diff --git a/radicle/src/identity.rs b/radicle/src/identity.rs index 05de2aa9..94276aac 100644 --- a/radicle/src/identity.rs +++ b/radicle/src/identity.rs @@ -121,7 +121,7 @@ impl Identity { let quorum = untrusted .sigs .iter() - .filter(|(key, _)| trusted.delegates.iter().any(|d| &**d == key)) + .filter(|(key, _)| trusted.delegates.iter().any(|d| **d == **key)) .count(); if quorum < trusted.threshold { return Err(IdentityError::ThresholdNotReached( diff --git a/radicle/src/identity/doc.rs b/radicle/src/identity/doc.rs index 843699c6..1a8bff74 100644 --- a/radicle/src/identity/doc.rs +++ b/radicle/src/identity/doc.rs @@ -1,6 +1,6 @@ mod id; -use std::collections::BTreeMap; +use std::collections::{BTreeMap, HashMap}; use std::fmt; use std::fmt::Write as _; use std::marker::PhantomData; @@ -122,7 +122,7 @@ pub struct DocAt { /// The parsed document. pub doc: Doc, /// The validated commit signatures. - pub sigs: Vec<(PublicKey, Signature)>, + pub sigs: HashMap, } /// An identity document. diff --git a/radicle/src/storage/git.rs b/radicle/src/storage/git.rs index 64eb09f2..beb9c641 100644 --- a/radicle/src/storage/git.rs +++ b/radicle/src/storage/git.rs @@ -840,10 +840,10 @@ pub mod trailers { Signature(#[from] SignatureError), } - pub fn parse_signatures(msg: &str) -> Result, Error> { + pub fn parse_signatures(msg: &str) -> Result, Error> { let trailers = git2::message_trailers_strs(msg).map_err(|_| Error::SignatureTrailerFormat)?; - let mut signatures = Vec::with_capacity(trailers.len()); + let mut signatures = HashMap::with_capacity(trailers.len()); for (key, val) in trailers.iter() { if key == SIGNATURE_TRAILER { @@ -851,7 +851,7 @@ pub mod trailers { let pk = PublicKey::from_str(pk)?; let sig = Signature::from_str(sig)?; - signatures.push((pk, sig)); + signatures.insert(pk, sig); } else { return Err(Error::SignatureTrailerFormat); }