rust_sodium

Rust bindings to libsodium.

This project is largely based on sodiumoxide. Some main differences are:

|Crate|Documentation|Linux/macOS|Windows|Issues| |:---:|:-----------:|:--------:|:-----:|:----:| ||Documentation|Build Status|Build status|Stories in Ready|

| MaidSafe website | SAFE Dev Forum | SAFE Network Forum | |:----------------------------------------:|:-------------------------------------------:|:----------------------------------------------:|

Note for building on Linux

Certain situations may require building libsodium configured with --disable-pie. To enable this, set an environment variable RUST_SODIUM_DISABLE_PIE while building, e.g.

sh RUST_SODIUM_DISABLE_PIE=1 cargo build

To use your own copy of libsodium

If you already have a copy of libsodium, you can choose to link this rather than having rust_sodium download and build libsodium for you. You should ensure that it is the same version as is specified in VERSION of our build.rs file.

Set an environment variable RUST_SODIUM_LIB_DIR to the folder where libsodium exists. A static version of libsodium will be preferred unless you also set RUST_SODIUM_SHARED to any value.

Alternatively, you can use pkgconfig if appropriate to locate libsodium by setting RUST_SODIUM_USE_PKG_CONFIG to any value. In this case, RUST_SODIUM_SHARED has no effect, and generally a shared version of libsodium will be used.

Cross-Compiling

Cross-Compiling for ARM

  1. Install dependencies and toolchain:

    sh sudo apt update sudo apt install build-essential gcc-arm-linux-gnueabihf libc6-armhf-cross libc6-dev-armhf-cross -y rustup target add armv7-unknown-linux-gnueabihf

  2. Add the following to a .cargo/config file:

    [target.armv7-unknown-linux-gnueabihf] linker = "arm-linux-gnueabihf-gcc"

  3. Build by running:

    sh cargo build --release --target armv7-unknown-linux-gnueabihf

Cross-Compiling for 32-bit Linux

  1. Install dependencies and toolchain:

    sh sudo apt update sudo apt install build-essential gcc-multilib -y rustup target add i686-unknown-linux-gnu

  2. Build by running:

    sh cargo build --release --target i686-unknown-linux-gnu

License

This SAFE Network library is dual-licensed under the Modified BSD (LICENSE-BSD https://opensource.org/licenses/BSD-3-Clause) or the MIT license (LICENSE-MIT https://opensource.org/licenses/MIT) at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.