2020-07-30 19:22:35 +02:00
|
|
|
# Overview
|
|
|
|
|
2020-11-30 19:40:46 +01:00
|
|
|
libsignal-client is an implementation of the Signal client protocol in Rust.
|
2020-07-30 19:22:35 +02:00
|
|
|
|
2020-09-18 22:06:50 +02:00
|
|
|
Work in progress. Subject to change without notice, use outside Signal not yet recommended.
|
|
|
|
|
2020-11-12 22:12:19 +01:00
|
|
|
# Building
|
|
|
|
|
2020-11-30 21:56:24 +01:00
|
|
|
To build anything in this repository you must have [Rust](https://rust-lang.org) installed.
|
|
|
|
The build currently uses a specific version of the Rust nightly compiler, which
|
|
|
|
will be downloaded automatically by cargo. To build and test the basic protocol
|
|
|
|
libraries:
|
2020-11-12 22:12:19 +01:00
|
|
|
|
|
|
|
```shell
|
|
|
|
$ cargo build
|
|
|
|
...
|
|
|
|
$ cargo test
|
|
|
|
...
|
|
|
|
```
|
|
|
|
|
|
|
|
## Java/Android
|
|
|
|
|
|
|
|
To build for Android you must install several additional packages including a JDK,
|
|
|
|
the Android NDK/SDK, and add the Android targets to the Rust compiler, using
|
|
|
|
|
|
|
|
```rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android```
|
|
|
|
|
2021-02-08 20:52:01 +01:00
|
|
|
as well as the Cargo NDK tool using
|
|
|
|
|
|
|
|
```cargo install --version=1.0.0 cargo-ndk```
|
|
|
|
|
2020-11-12 22:12:19 +01:00
|
|
|
To build the Java/Android ``jar`` and ``aar``, and run the tests:
|
|
|
|
|
|
|
|
```shell
|
|
|
|
$ cd java
|
|
|
|
$ ./gradlew test
|
|
|
|
```
|
|
|
|
|
2020-11-12 23:32:02 +01:00
|
|
|
Alternately, a build system using Docker is available:
|
2020-11-12 22:12:19 +01:00
|
|
|
|
|
|
|
```shell
|
|
|
|
$ cd java
|
|
|
|
$ make java_test
|
|
|
|
```
|
|
|
|
|
|
|
|
## Swift
|
|
|
|
|
2020-12-04 18:31:29 +01:00
|
|
|
To learn about the Swift build process see [``swift/README.md``](swift/)
|
2020-11-12 22:12:19 +01:00
|
|
|
|
2020-11-30 19:40:46 +01:00
|
|
|
# Contributions
|
|
|
|
|
|
|
|
Signal does accept external contributions to this project. However unless the change is
|
|
|
|
simple and easily understood, for example fixing a bug or portability issue, adding a new
|
|
|
|
test, or improving performance, first open an issue to discuss your intended change as not
|
|
|
|
all changes can be accepted.
|
|
|
|
|
2020-11-30 21:56:24 +01:00
|
|
|
Signing a [CLA (Contributor License Agreement)](https://signal.org/cla/) is required for all contributions.
|
2020-11-30 19:40:46 +01:00
|
|
|
|
2020-07-30 19:22:35 +02:00
|
|
|
# Legal things
|
|
|
|
## Cryptography Notice
|
|
|
|
|
|
|
|
This distribution includes cryptographic software. The country in which you currently reside may have restrictions on
|
|
|
|
the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption
|
|
|
|
software, please check your country's laws, regulations and policies concerning the import, possession, or use, and
|
|
|
|
re-export of encryption software, to see if this is permitted. See <http://www.wassenaar.org/> for more information.
|
|
|
|
|
|
|
|
The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as
|
|
|
|
Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing
|
|
|
|
cryptographic functions with asymmetric algorithms. The form and manner of this distribution makes it eligible for
|
|
|
|
export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export
|
|
|
|
Administration Regulations, Section 740.13) for both object code and source code.
|
|
|
|
|
|
|
|
## License
|
|
|
|
|
|
|
|
Copyright 2020 Signal Messenger, LLC
|
|
|
|
|
2020-10-29 18:43:04 +01:00
|
|
|
Licensed under the AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html
|