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}