libsignal_protocol/
lib.rs1#![warn(clippy::unwrap_used)]
18#![deny(unsafe_code)]
19
20mod consts;
26mod crypto;
27mod double_ratchet;
28pub mod error;
29mod fingerprint;
30mod group_cipher;
31mod handshake;
32mod identity_key;
33pub mod incremental_mac;
34pub mod kem;
35pub mod pqxdh;
36mod proto;
37mod protocol;
38mod ratchet;
39mod sealed_sender;
40mod sender_keys;
41mod session;
42#[cfg(test)]
43mod session_cipher_legacy;
44mod session_management;
45mod state;
46mod storage;
47mod timestamp;
48mod triple_ratchet;
49
50use error::Result;
51pub use error::SignalProtocolError;
52pub use fingerprint::{
53 DisplayableFingerprint, Error as FingerprintError, Fingerprint, ScannableFingerprint,
54};
55pub use group_cipher::{
56 create_sender_key_distribution_message, group_decrypt, group_encrypt,
57 process_sender_key_distribution_message,
58};
59pub use identity_key::{IdentityKey, IdentityKeyPair};
60pub use libsignal_core::curve::{KeyPair, PrivateKey, PublicKey};
61pub use libsignal_core::{
62 Aci, DeviceId, Pni, ProtocolAddress, ServiceId, ServiceIdFixedWidthBinaryBytes, ServiceIdKind,
63};
64pub use protocol::{
65 CiphertextMessage, CiphertextMessageType, DecryptionErrorMessage, KyberPayload,
66 PlaintextContent, PreKeySignalMessage, SenderKeyDistributionMessage, SenderKeyMessage,
67 SignalMessage, extract_decryption_error_message_from_serialized_content,
68 should_use_nonpq_session,
69};
70pub use ratchet::{
71 AliceSignalProtocolParameters, BobSignalProtocolParameters, initialize_alice_session_record,
72 initialize_bob_session_record,
73};
74pub use sealed_sender::{
75 ContentHint, SealedSenderDecryptionResult, SealedSenderV2SentMessage,
76 SealedSenderV2SentMessageRecipient, SenderCertificate, ServerCertificate,
77 UnidentifiedSenderMessageContent, sealed_sender_decrypt, sealed_sender_decrypt_to_usmc,
78 sealed_sender_encrypt, sealed_sender_encrypt_from_usmc, sealed_sender_multi_recipient_encrypt,
79};
80pub use sender_keys::SenderKeyRecord;
81pub use session::{process_prekey, process_prekey_bundle};
82pub use session_management::{
83 message_decrypt, message_decrypt_prekey, message_decrypt_signal, message_encrypt,
84};
85pub use state::{
86 GenericSignedPreKey, KyberPreKeyId, KyberPreKeyRecord, PreKeyBundle, PreKeyBundleContent,
87 PreKeyId, PreKeyRecord, SessionRecord, SessionUsabilityRequirements, SignedPreKeyId,
88 SignedPreKeyRecord,
89};
90pub use storage::{
91 Direction, IdentityChange, IdentityKeyStore, InMemIdentityKeyStore, InMemKyberPreKeyStore,
92 InMemPreKeyStore, InMemSenderKeyStore, InMemSessionStore, InMemSignalProtocolStore,
93 InMemSignedPreKeyStore, KyberPreKeyStore, PreKeyStore, ProtocolStore, SenderKeyStore,
94 SessionStore, SignedPreKeyStore,
95};
96pub use timestamp::Timestamp;