Library for the Signal Private Group System.
Work in progress. Subject to change without notice, use outside Signal not yet recommended.
This library provides zero-knowledge group functionality through several layers of APIs. From lower-level to higher-level:
-
internal.rsprovides the actual Rust implementations, based on Rust structures. -
simpleapi.rsprovides wrapper functions around internal.rs functions that useserdeto serialize/deseralize byte arrays into Rust structures. -
ffiapi.rsandffiapijava.rsprovide wrapper functions aroundsimpleapi.rsfunctions to export them via C and JNI, respectively. -
The subdirectories under
fficontain code in various host languages for accessing the exported functions:-
Under
cis azkgroup.hheader file. -
Under
androidis aZKGroup.javafile and instructions for building an aar. -
Under
nodeis some example code for declaring the FFI functions in javascript.
-
The rust-toolchain.toml file should get things automatically setup for you provided you are using rustup. See it for the toolchain and channel and targets in use for this build.
Run ./gradlew tasks and see make tasks under the "Rust tasks" group.