pub struct DcgkaState<ID, OP, PKI, DGM, KMG>where
ID: IdentityHandle,
OP: OperationId,
PKI: IdentityRegistry<ID, PKI::State> + PreKeyRegistry<ID, LongTermKeyBundle>,
DGM: GroupMembership<ID, OP>,
KMG: IdentityManager<KMG::State> + PreKeyManager,{
pub pki: PKI::State,
pub my_keys: KMG::State,
pub my_id: ID,
pub two_party: HashMap<ID, TwoPartyState<LongTermKeyBundle>>,
pub dgm: DGM::State,
}Available on crate features
data_scheme only.Expand description
Serializable state of “data encryption” DCGKA (for persistence).
Fields§
§pki: PKI::StatePublic Key Infrastructure (PKI). From here we retrieve the identity keys and long-term pre-key bundles for each member to do 2SM.
my_keys: KMG::StateOur own key manager state holding the secret parts for our own identity keys and published long-term pre-key bundles so we can do 2SM.
my_id: IDOur id which is used as a unique handle inside this group.
two_party: HashMap<ID, TwoPartyState<LongTermKeyBundle>>Handlers for each member to manage the “Two-Party Secure Messaging” (2SM) key-agreement protocol as specified in the paper.
dgm: DGM::StateDecentralised group membership (DGM) state.
Trait Implementations§
Source§impl<ID, OP, PKI, DGM, KMG> Clone for DcgkaState<ID, OP, PKI, DGM, KMG>where
ID: IdentityHandle + Clone,
OP: OperationId + Clone,
PKI: IdentityRegistry<ID, PKI::State> + PreKeyRegistry<ID, LongTermKeyBundle> + Clone,
DGM: GroupMembership<ID, OP> + Clone,
KMG: IdentityManager<KMG::State> + PreKeyManager + Clone,
PKI::State: Clone,
KMG::State: Clone,
DGM::State: Clone,
impl<ID, OP, PKI, DGM, KMG> Clone for DcgkaState<ID, OP, PKI, DGM, KMG>where
ID: IdentityHandle + Clone,
OP: OperationId + Clone,
PKI: IdentityRegistry<ID, PKI::State> + PreKeyRegistry<ID, LongTermKeyBundle> + Clone,
DGM: GroupMembership<ID, OP> + Clone,
KMG: IdentityManager<KMG::State> + PreKeyManager + Clone,
PKI::State: Clone,
KMG::State: Clone,
DGM::State: Clone,
Source§fn clone(&self) -> DcgkaState<ID, OP, PKI, DGM, KMG>
fn clone(&self) -> DcgkaState<ID, OP, PKI, DGM, KMG>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<ID, OP, PKI, DGM, KMG> Debug for DcgkaState<ID, OP, PKI, DGM, KMG>where
ID: IdentityHandle + Debug,
OP: OperationId + Debug,
PKI: IdentityRegistry<ID, PKI::State> + PreKeyRegistry<ID, LongTermKeyBundle> + Debug,
DGM: GroupMembership<ID, OP> + Debug,
KMG: IdentityManager<KMG::State> + PreKeyManager + Debug,
PKI::State: Debug,
KMG::State: Debug,
DGM::State: Debug,
impl<ID, OP, PKI, DGM, KMG> Debug for DcgkaState<ID, OP, PKI, DGM, KMG>where
ID: IdentityHandle + Debug,
OP: OperationId + Debug,
PKI: IdentityRegistry<ID, PKI::State> + PreKeyRegistry<ID, LongTermKeyBundle> + Debug,
DGM: GroupMembership<ID, OP> + Debug,
KMG: IdentityManager<KMG::State> + PreKeyManager + Debug,
PKI::State: Debug,
KMG::State: Debug,
DGM::State: Debug,
Source§impl<'de, ID, OP, PKI, DGM, KMG> Deserialize<'de> for DcgkaState<ID, OP, PKI, DGM, KMG>where
ID: IdentityHandle + Deserialize<'de>,
OP: OperationId,
PKI: IdentityRegistry<ID, PKI::State> + PreKeyRegistry<ID, LongTermKeyBundle>,
DGM: GroupMembership<ID, OP>,
KMG: IdentityManager<KMG::State> + PreKeyManager,
PKI::State: Deserialize<'de>,
KMG::State: Deserialize<'de>,
DGM::State: Deserialize<'de>,
impl<'de, ID, OP, PKI, DGM, KMG> Deserialize<'de> for DcgkaState<ID, OP, PKI, DGM, KMG>where
ID: IdentityHandle + Deserialize<'de>,
OP: OperationId,
PKI: IdentityRegistry<ID, PKI::State> + PreKeyRegistry<ID, LongTermKeyBundle>,
DGM: GroupMembership<ID, OP>,
KMG: IdentityManager<KMG::State> + PreKeyManager,
PKI::State: Deserialize<'de>,
KMG::State: Deserialize<'de>,
DGM::State: Deserialize<'de>,
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<ID, OP, PKI, DGM, KMG> Serialize for DcgkaState<ID, OP, PKI, DGM, KMG>where
ID: IdentityHandle + Serialize,
OP: OperationId,
PKI: IdentityRegistry<ID, PKI::State> + PreKeyRegistry<ID, LongTermKeyBundle>,
DGM: GroupMembership<ID, OP>,
KMG: IdentityManager<KMG::State> + PreKeyManager,
PKI::State: Serialize,
KMG::State: Serialize,
DGM::State: Serialize,
impl<ID, OP, PKI, DGM, KMG> Serialize for DcgkaState<ID, OP, PKI, DGM, KMG>where
ID: IdentityHandle + Serialize,
OP: OperationId,
PKI: IdentityRegistry<ID, PKI::State> + PreKeyRegistry<ID, LongTermKeyBundle>,
DGM: GroupMembership<ID, OP>,
KMG: IdentityManager<KMG::State> + PreKeyManager,
PKI::State: Serialize,
KMG::State: Serialize,
DGM::State: Serialize,
Auto Trait Implementations§
impl<ID, OP, PKI, DGM, KMG> Freeze for DcgkaState<ID, OP, PKI, DGM, KMG>where
<PKI as PreKeyRegistry<ID, LongTermKeyBundle>>::State: Freeze,
<KMG as PreKeyManager>::State: Freeze,
ID: Freeze,
<DGM as GroupMembership<ID, OP>>::State: Freeze,
impl<ID, OP, PKI, DGM, KMG> RefUnwindSafe for DcgkaState<ID, OP, PKI, DGM, KMG>where
<PKI as PreKeyRegistry<ID, LongTermKeyBundle>>::State: RefUnwindSafe,
<KMG as PreKeyManager>::State: RefUnwindSafe,
ID: RefUnwindSafe,
<DGM as GroupMembership<ID, OP>>::State: RefUnwindSafe,
impl<ID, OP, PKI, DGM, KMG> Send for DcgkaState<ID, OP, PKI, DGM, KMG>where
<PKI as PreKeyRegistry<ID, LongTermKeyBundle>>::State: Send,
<KMG as PreKeyManager>::State: Send,
ID: Send,
<DGM as GroupMembership<ID, OP>>::State: Send,
impl<ID, OP, PKI, DGM, KMG> Sync for DcgkaState<ID, OP, PKI, DGM, KMG>where
<PKI as PreKeyRegistry<ID, LongTermKeyBundle>>::State: Sync,
<KMG as PreKeyManager>::State: Sync,
ID: Sync,
<DGM as GroupMembership<ID, OP>>::State: Sync,
impl<ID, OP, PKI, DGM, KMG> Unpin for DcgkaState<ID, OP, PKI, DGM, KMG>where
<PKI as PreKeyRegistry<ID, LongTermKeyBundle>>::State: Unpin,
<KMG as PreKeyManager>::State: Unpin,
ID: Unpin,
<DGM as GroupMembership<ID, OP>>::State: Unpin,
impl<ID, OP, PKI, DGM, KMG> UnsafeUnpin for DcgkaState<ID, OP, PKI, DGM, KMG>where
<PKI as PreKeyRegistry<ID, LongTermKeyBundle>>::State: UnsafeUnpin,
<KMG as PreKeyManager>::State: UnsafeUnpin,
ID: UnsafeUnpin,
<DGM as GroupMembership<ID, OP>>::State: UnsafeUnpin,
impl<ID, OP, PKI, DGM, KMG> UnwindSafe for DcgkaState<ID, OP, PKI, DGM, KMG>where
<PKI as PreKeyRegistry<ID, LongTermKeyBundle>>::State: UnwindSafe,
<KMG as PreKeyManager>::State: UnwindSafe,
ID: UnwindSafe,
<DGM as GroupMembership<ID, OP>>::State: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more