Skip to content

whisperfish/presage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

af5273a · Nov 9, 2024
Oct 21, 2024
Nov 7, 2024
Feb 24, 2024
Nov 7, 2024
Nov 7, 2024
Nov 9, 2024
Jan 29, 2023
Mar 1, 2024
Oct 24, 2024
May 2, 2021
Apr 11, 2024
May 30, 2022

Repository files navigation

Presage

CI Build License API Docs

A Rust library that helps building clients for the Signal Messenger, using libsignal-service-rs. It is designed to provide everything you need to get started.

Features:

  • Local storage (using sled)
  • Registration
    • SMS
    • Voice call
  • Link as secondary device from Android / iOS app (like Signal Desktop)
  • Synchronize contacts from primary device
  • Receive messages
  • Handle groups v2 (and change events)
  • Download + decrypt attachments
  • Send messages
  • Groups support

Instructions

Add the following to your Cargo.toml:

[dependencies]
presage = { git = "https://github.com/whisperfish/presage" }
presage-store-sled = { git = "https://github.com/whisperfish/presage" }

# For a discussion as to why, see: 
# https://github.com/whisperfish/libsignal-service-rs/tree/93c23cf27d27a17a803e34ea3dd6a82d268fa79e#working-around-the-issue-with-curve25519-dalek
[patch.crates-io]
curve25519-dalek = { git = 'https://github.com/signalapp/curve25519-dalek', tag = 'signal-curve25519-4.1.1' }

and look at the generated Rust documentation of the Manager struct to get started.

Demo CLI

Included in this repository is a CLI very similar (on purpose) to the great signal-cli:

# print help section
cargo run -- --help

# link as secondary device, a PNG with a QR code to scan should open
cargo run -- link-device --device-name presage

# start receiving messages
cargo run -- receive

For using the library, the CLI is a good starting point to learn how the API can be used.