Skip to content

nworbnhoj/signal-xous

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Signal-Xous App

A work-in-progress towards a Signal client for xous.

Working Notes

The basic idea is to save all msg directly to the PDDB, and for the UI to traverse a subset of the msg's in the PDDB.

Next Steps

  • develop xous tls library to manage the explicit trust of CA Certificates
  • confirm tls connection Precursor <=> chat.signal..org [ xous shellchat wlan on net tls probe chat.signal.org net tls test chat.signal.org ]
  • confirm websocket connection Precursor <=> chat.signal.org
  • develop xous chat library to provide a UI to interact with a Dialogue of Posts stored in the PDDB
  • resurvey Whisperfish, signal-cli & gurk for useful stuff (see useful below)
  • link a Precursor to an existing Signal account
  • sync messages with an individual recipient
  • send a new message to an individual recipient
  • register a Precursor as a Signal device
  • enable Signal groups

Useful

  • libsignal contains platform-agnostic APIs used by the official Signal clients and servers, written in Rust, and released under AGPL 3.0.
  • The Whisperfish project is a helpful working example of a Signal client developed in Rust on the official Signal libsignal API. Unfortunately Whisperfish has a tokio dependency. See also libsignal-service-rs and Presage
  • There is also Signal-Desktop signal-cli and gurk
  • A basic xous websocket with tls support is available to connect with Signal servers.
  • xous supports qr-codes to facilitate device registration
  • xous supports png image processing but the websocket would need to be extended to present as a Reader.

Unknowns

libc dependencies

xous has only limited libc support

Running cargo tree -e no-build -e no-dev over libsignal and extracted the libc dependencies gives

device-transfer v0.1.0 (/libsignal/rust/device-transfer)
├── boring v2.1.0 (https://github.com/signalapp/boring?branch=libsignal#3809a7e1)
│   └── libc v0.2.144
└── libc v0.2.144

libsignal-protocol v0.1.0 (/libsignal/rust/protocol)
├── curve25519-dalek v3.2.1 (https://github.com/signalapp/curve25519-dalek?branch=lizard2#4f0aa665)
│   ├── rand_core v0.5.1
│   │   └── getrandom v0.1.16
│   │       └── libc v0.2.144
├── pqcrypto-kyber v0.7.6
│   ├── libc v0.2.144
│   ├── pqcrypto-internals v0.2.4
│   │   ├── getrandom v0.2.9
│   │   │   └── libc v0.2.144
│   │   └── libc v0.2.144
├── rand v0.7.3
│   ├── libc v0.2.144

  • device transfer can probably be re-implemented without too much fuss
  • curve25519-dalek ... getrandom
  • pqcrypto-kyber appears to be used only in tests
  • rand boils down to use rand::{Rng, thread_rng, rngs::OsRng, prelude::*, distributions::Uniform, prelude::{Rng, ThreadRng}, RngCore, seq::SliceRandom}

Hopefully the getrandom and rand dependencies are covered by the xous libc rand implementation.

64 bit dependencies

About

A Signal client for xous

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages