pub trait KyberPreKeyStore {
// Required methods
fn get_kyber_pre_key<'life0, 'async_trait>(
&'life0 self,
kyber_prekey_id: KyberPreKeyId,
) -> Pin<Box<dyn Future<Output = Result<KyberPreKeyRecord>> + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn save_kyber_pre_key<'life0, 'life1, 'async_trait>(
&'life0 mut self,
kyber_prekey_id: KyberPreKeyId,
record: &'life1 KyberPreKeyRecord,
) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn mark_kyber_pre_key_used<'life0, 'life1, 'async_trait>(
&'life0 mut self,
kyber_prekey_id: KyberPreKeyId,
ec_prekey_id: SignedPreKeyId,
base_key: &'life1 PublicKey,
) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
}Expand description
Interface for storing signed Kyber pre-keys downloaded from a server.
NB: libsignal makes no distinction between one-time and last-resort pre-keys.
Required Methods§
Sourcefn get_kyber_pre_key<'life0, 'async_trait>(
&'life0 self,
kyber_prekey_id: KyberPreKeyId,
) -> Pin<Box<dyn Future<Output = Result<KyberPreKeyRecord>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_kyber_pre_key<'life0, 'async_trait>(
&'life0 self,
kyber_prekey_id: KyberPreKeyId,
) -> Pin<Box<dyn Future<Output = Result<KyberPreKeyRecord>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Look up the signed kyber pre-key corresponding to kyber_prekey_id.
Sourcefn save_kyber_pre_key<'life0, 'life1, 'async_trait>(
&'life0 mut self,
kyber_prekey_id: KyberPreKeyId,
record: &'life1 KyberPreKeyRecord,
) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn save_kyber_pre_key<'life0, 'life1, 'async_trait>(
&'life0 mut self,
kyber_prekey_id: KyberPreKeyId,
record: &'life1 KyberPreKeyRecord,
) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Set the entry for kyber_prekey_id to the value of record.
Sourcefn mark_kyber_pre_key_used<'life0, 'life1, 'async_trait>(
&'life0 mut self,
kyber_prekey_id: KyberPreKeyId,
ec_prekey_id: SignedPreKeyId,
base_key: &'life1 PublicKey,
) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn mark_kyber_pre_key_used<'life0, 'life1, 'async_trait>(
&'life0 mut self,
kyber_prekey_id: KyberPreKeyId,
ec_prekey_id: SignedPreKeyId,
base_key: &'life1 PublicKey,
) -> Pin<Box<dyn Future<Output = Result<()>> + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Mark the entry for kyber_prekey_id as “used”.
A one-time Kyber pre-key should be deleted after this point. A last-resort pre-key should not immediately be deleted, but should check whether the same combination of pre-keys was used with the given base key before, and produce an error if so.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".