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 doctorGenerated 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:
Now you can run and build this app just like any other Flutter projects.
flutter runIf 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 servercargo r -p client $USER http://localhost:8080For me to install the server,
I use Justfile for hard to remember commands.
just deployDeploys 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 describenative/ 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.