mirror of
https://github.com/chatmail/core.git
synced 2026-05-13 03:46:32 +03:00
Replace u32 with a PeerstateKeyType enum
This commit is contained in:
@@ -1664,7 +1664,7 @@ fn check_verified_properties(
|
|||||||
let fp = peerstate.gossip_key_fingerprint.clone();
|
let fp = peerstate.gossip_key_fingerprint.clone();
|
||||||
if let Some(fp) = fp {
|
if let Some(fp) = fp {
|
||||||
peerstate.set_verified(
|
peerstate.set_verified(
|
||||||
DC_PS_GOSSIP_KEY,
|
PeerstateKeyType::GossipKey,
|
||||||
&fp,
|
&fp,
|
||||||
PeerstateVerifiedStatus::BidirectVerified,
|
PeerstateVerifiedStatus::BidirectVerified,
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -12,8 +12,11 @@ use crate::error::*;
|
|||||||
use crate::key::*;
|
use crate::key::*;
|
||||||
use crate::sql::{self, Sql};
|
use crate::sql::{self, Sql};
|
||||||
|
|
||||||
pub const DC_PS_GOSSIP_KEY: u32 = 0;
|
#[derive(Debug)]
|
||||||
pub const DC_PS_PUBLIC_KEY: u32 = 1;
|
pub enum PeerstateKeyType {
|
||||||
|
GossipKey,
|
||||||
|
PublicKey,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq, Clone, Copy, FromPrimitive)]
|
#[derive(Debug, PartialEq, Eq, Clone, Copy, FromPrimitive)]
|
||||||
#[repr(u8)]
|
#[repr(u8)]
|
||||||
@@ -346,35 +349,40 @@ impl<'a> Peerstate<'a> {
|
|||||||
|
|
||||||
pub fn set_verified(
|
pub fn set_verified(
|
||||||
&mut self,
|
&mut self,
|
||||||
which_key: u32,
|
which_key: PeerstateKeyType,
|
||||||
fingerprint: &str,
|
fingerprint: &str,
|
||||||
verified: PeerstateVerifiedStatus,
|
verified: PeerstateVerifiedStatus,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
let mut success = false;
|
if verified == PeerstateVerifiedStatus::BidirectVerified {
|
||||||
if !(which_key != DC_PS_GOSSIP_KEY && which_key != DC_PS_PUBLIC_KEY
|
match which_key {
|
||||||
|| verified != PeerstateVerifiedStatus::BidirectVerified)
|
PeerstateKeyType::PublicKey => {
|
||||||
{
|
if self.public_key_fingerprint.is_some()
|
||||||
if which_key == DC_PS_PUBLIC_KEY
|
&& self.public_key_fingerprint.as_ref().unwrap() == fingerprint
|
||||||
&& self.public_key_fingerprint.is_some()
|
{
|
||||||
&& self.public_key_fingerprint.as_ref().unwrap() == fingerprint
|
self.to_save = Some(ToSave::All);
|
||||||
{
|
self.verified_key = self.public_key.clone();
|
||||||
self.to_save = Some(ToSave::All);
|
self.verified_key_fingerprint = self.public_key_fingerprint.clone();
|
||||||
self.verified_key = self.public_key.clone();
|
true
|
||||||
self.verified_key_fingerprint = self.public_key_fingerprint.clone();
|
} else {
|
||||||
success = true;
|
false
|
||||||
}
|
}
|
||||||
if which_key == DC_PS_GOSSIP_KEY
|
}
|
||||||
&& self.gossip_key_fingerprint.is_some()
|
PeerstateKeyType::GossipKey => {
|
||||||
&& self.gossip_key_fingerprint.as_ref().unwrap() == fingerprint
|
if self.gossip_key_fingerprint.is_some()
|
||||||
{
|
&& self.gossip_key_fingerprint.as_ref().unwrap() == fingerprint
|
||||||
self.to_save = Some(ToSave::All);
|
{
|
||||||
self.verified_key = self.gossip_key.clone();
|
self.to_save = Some(ToSave::All);
|
||||||
self.verified_key_fingerprint = self.gossip_key_fingerprint.clone();
|
self.verified_key = self.gossip_key.clone();
|
||||||
success = true;
|
self.verified_key_fingerprint = self.gossip_key_fingerprint.clone();
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
success
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn save_to_db(&self, sql: &Sql, create: bool) -> Result<()> {
|
pub fn save_to_db(&self, sql: &Sql, create: bool) -> Result<()> {
|
||||||
|
|||||||
@@ -691,7 +691,7 @@ fn mark_peer_as_verified(context: &Context, fingerprint: impl AsRef<str>) -> Res
|
|||||||
Peerstate::from_fingerprint(context, &context.sql, fingerprint.as_ref())
|
Peerstate::from_fingerprint(context, &context.sql, fingerprint.as_ref())
|
||||||
{
|
{
|
||||||
if peerstate.set_verified(
|
if peerstate.set_verified(
|
||||||
DC_PS_PUBLIC_KEY,
|
PeerstateKeyType::PublicKey,
|
||||||
fingerprint.as_ref(),
|
fingerprint.as_ref(),
|
||||||
PeerstateVerifiedStatus::BidirectVerified,
|
PeerstateVerifiedStatus::BidirectVerified,
|
||||||
) {
|
) {
|
||||||
|
|||||||
Reference in New Issue
Block a user