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