I took Going Bark: A Furry’s Guide to End-to-End Encryption as a great idea for a project.
X3DH and Double-Ratchet are implemented in Rust in the protocol directory.
DO NOT USE THIS.
ASSUME IT IS INSECURE.
USE Signal instead.
This is for fun and learning :)
To run and build this app, you need to have installed:
You can check that your system is ready with the commands below. Note that all the Flutter subcomponents should be installed.
rustc --version
flutter doctor
cargo install rinf
Generated schema for messages between Dart and Rust are not commited and must be recreated.
If you have newly cloned the project repository
or made changes to the .proto
files in the ./messages
directory,
run the following command:
rinf message
Now you can run and build this app just like any other Flutter projects.
flutter run
If you're building for Android flutter build apk
or flutter run
.
I have these settings:
flutter config --jdk-dir /usr/lib/jvm/java-17-openjdk
flutter config --android-sdk ~/android-sdk
Ensure that you have your config pointing to the correct installations.
To run and build the backend, you need to have installed:
cargo r -p server
cargo r -p client $USER http://localhost:8080
For me to install the server,
I use Justfile for hard to remember commands.
just deploy
Deploys the server to signal.brongan.com
grpcurl is a cool way to see the exposed rpcs from the [proto directory](./native/server/proto/].
grpcurl signal.brongan.com:443 describe
native/
contains rust code.
hub
is the flutter frontending binding package and depends on client
and proto
.
server
implements the gossamer
and service
RPC services and depends on proto
and protocol
.
client
depends on proto
and protocol
and implmenets the client.
proto
defines protobufs at both the RPC level and serialized messages below the protocol level.