p2panda_encryption/traits/key_bundle.rs
1// SPDX-License-Identifier: MIT OR Apache-2.0
2
3use crate::crypto::x25519::PublicKey;
4use crate::key_bundle::{KeyBundleError, Lifetime, OneTimePreKeyId};
5
6/// Key bundle holding data to establish a X3DH key-agreement.
7pub trait KeyBundle {
8 fn identity_key(&self) -> &PublicKey;
9
10 fn signed_prekey(&self) -> &PublicKey;
11
12 fn onetime_prekey(&self) -> Option<&PublicKey>;
13
14 fn onetime_prekey_id(&self) -> Option<OneTimePreKeyId>;
15
16 fn lifetime(&self) -> &Lifetime;
17
18 fn verify(&self) -> Result<(), KeyBundleError>;
19}