diff --git a/src/contact.rs b/src/contact.rs index 5dbe8ed40..307315b45 100644 --- a/src/contact.rs +++ b/src/contact.rs @@ -804,14 +804,14 @@ impl Contact { } if let Some(peerstate) = peerstate { - if peerstate.verified_key().is_some() { + if peerstate.verified_key.is_some() { return VerifiedStatus::BidirectVerified; } } let peerstate = Peerstate::from_addr(context, &context.sql, &self.addr); if let Some(ps) = peerstate { - if ps.verified_key().is_some() { + if ps.verified_key.is_some() { return VerifiedStatus::BidirectVerified; } } diff --git a/src/peerstate.rs b/src/peerstate.rs index 9d4dc5123..1e8bc97cb 100644 --- a/src/peerstate.rs +++ b/src/peerstate.rs @@ -23,7 +23,7 @@ pub struct Peerstate<'a> { pub gossip_key: Option, pub gossip_timestamp: i64, pub gossip_key_fingerprint: Option, - verified_key: VerifiedKey, + pub verified_key: Option, pub verified_key_fingerprint: Option, pub to_save: Option, pub degrade_event: Option, @@ -85,32 +85,6 @@ pub enum DegradeEvent { FingerprintChanged = 0x02, } -#[derive(Debug, Copy, Clone, PartialEq, Eq)] -enum VerifiedKey { - Gossip, - Public, - None, -} - -impl Default for VerifiedKey { - fn default() -> Self { - VerifiedKey::None - } -} - -impl VerifiedKey { - pub fn is_none(&self) -> bool { - match self { - VerifiedKey::None => true, - _ => false, - } - } - - pub fn is_some(&self) -> bool { - !self.is_none() - } -} - impl<'a> Peerstate<'a> { pub fn new(context: &'a Context) -> Self { Peerstate { @@ -124,21 +98,13 @@ impl<'a> Peerstate<'a> { gossip_key: None, gossip_key_fingerprint: None, gossip_timestamp: 0, - verified_key: Default::default(), + verified_key: None, verified_key_fingerprint: None, to_save: None, degrade_event: None, } } - pub fn verified_key(&self) -> Option<&Key> { - match self.verified_key { - VerifiedKey::Public => self.public_key.as_ref(), - VerifiedKey::Gossip => self.gossip_key.as_ref(), - VerifiedKey::None => None, - } - } - pub fn from_header(context: &'a Context, header: &Aheader, message_time: i64) -> Self { let mut res = Self::new(context); @@ -242,19 +208,11 @@ impl<'a> Peerstate<'a> { .get(6) .ok() .and_then(|blob: Vec| Key::from_slice(&blob, KeyType::Public)); - let vk = row + res.verified_key = row .get(9) .ok() .and_then(|blob: Vec| Key::from_slice(&blob, KeyType::Public)); - res.verified_key = if vk == res.gossip_key && res.gossip_key.is_some() { - VerifiedKey::Gossip - } else if vk == res.public_key { - VerifiedKey::Public - } else { - VerifiedKey::None - }; - Ok(res) }) .ok() @@ -374,7 +332,7 @@ impl<'a> Peerstate<'a> { } if 0 != min_verified { - return self.verified_key(); + return self.verified_key.as_ref(); } if self.public_key.is_some() { return self.public_key.as_ref(); @@ -391,7 +349,7 @@ impl<'a> Peerstate<'a> { && self.public_key_fingerprint.as_ref().unwrap() == fingerprint { self.to_save = Some(ToSave::All); - self.verified_key = VerifiedKey::Public; + self.verified_key = self.public_key.clone(); self.verified_key_fingerprint = self.public_key_fingerprint.clone(); success = true; } @@ -400,7 +358,7 @@ impl<'a> Peerstate<'a> { && self.gossip_key_fingerprint.as_ref().unwrap() == fingerprint { self.to_save = Some(ToSave::All); - self.verified_key = VerifiedKey::Gossip; + self.verified_key = self.gossip_key.clone(); self.verified_key_fingerprint = self.gossip_key_fingerprint.clone(); success = true; } @@ -438,7 +396,7 @@ impl<'a> Peerstate<'a> { self.gossip_key.as_ref().map(|k| k.to_bytes()), &self.public_key_fingerprint, &self.gossip_key_fingerprint, - self.verified_key().map(|k| k.to_bytes()), + self.verified_key.as_ref().map(|k| k.to_bytes()), &self.verified_key_fingerprint, &self.addr, ],