#libsodium #aead #nacl #xchacha20-poly1305 #stream-cipher #crypto

已删除 钠氧化物-xchacha20poly1305

A sodiumoxide binding for the XChaCha20-Poly1305 AEAD stream cipher for Rust

使用旧的 Rust 2015

0.1.0 2018年11月24日

#30 in #nacl

MIT/Apache

2MB
1K SLoC

钠氧化物-xchacha20poly1305

软件包 文档
Crates.io Docs

注意:此包仅包含一个钠氧化物包装,用于XChaCha20-Poly1305 AEAD流密码,该密码是其他包所需的,并且一旦钠氧化物在新的软件包版本中支持此功能,它很可能将被弃用。如果您需要完整的绑定,则建议您使用钠氧化物而不是此包。

NaCl (发音为 "salt") 是一个易于使用的高速网络通信、加密、解密、签名等软件库。NaCl的目标是提供构建高级加密工具所需的所有核心操作。当然,已经存在其他用于这些核心操作的库。NaCl通过提高安全性、可用性和速度来推进技术前沿。

Sodium 是 NaCl 的一个可移植、可交叉编译、可安装、可打包的分支,基于最新的已发布上游版本 nacl-20110221),具有兼容的 API。

Sodiumoxide 是一个快速加密库,用于 Rust,完全绑定到 libsodium。

基本用法

构建

cargo build/

测试

cargo test

文档

cargo doc

文档将在 target/doc/... 中生成

大部分文档来自 NaCl,在 API 之间有微小修改。

依赖项

C 编译器(ccclang、...)必须安装,才能从源代码构建 libsodium。

扩展用法

默认情况下,该项目会下载并构建 libsodium,优先使用静态构建的固定版本的本机库。

虽然强烈推荐使用默认方式并锁定版本,但您可以使用几种方式使用此软件包

  • 将其链接到系统上安装的库
  • 将其链接到您自己构建的预编译库

您可以通过设置环境变量来实现这一点。

名称 描述 示例值 备注
SODIUM_LIB_DIR 预编译库的位置 /usr/lib/x86_64-linux-gnu/ 该值应设置为包含 .so.a.la.dll.lib 的目录
SODIUM_SHARED 告诉 rustc 链接动态库 1 仅与 SODIUM_LIB_DIR 一起使用。我们只检查是否存在
SODIUM_USE_PKG_CONFIG 告诉 build.rs 使用 pkg-config 或 vcpkg 查找系统库 1 我们只检查是否存在
SODIUM_DISABLE_PIE 使用 --disable-pie 编译 1 某些情况下可能需要使用 --disable-pie 配置的libsodium库进行编译。仅在Windows上适用,并且是从源代码编译libsodium时使用。我们只检查是否存在
VCPKGRS_DYNAMIC 告诉 vcpkg 查找libsodium 1 仅在Windows上与 SODIUM_USE_PKG_CONFIG 一起使用。更多信息:[https://docs.rs/vcpkg/](https://docs.rs/vcpkg/)

在*nix上的示例

使用pkg-config

(Ubuntu: apt install pkg-config,OSX: brew install pkg-config,...)

export SODIUM_USE_PKG_CONFIG=1
cargo build

使用预编译库

见[https://download.libsodium.org/doc/installation](https://download.libsodium.org/doc/installation)。

export SODIUM_LIB_DIR=/home/user/libsodium-1.0.16/release/lib/
export SODIUM_SHARED=1
cargo build

在Windows上的示例

使用vcpkg

见[https://github.com/Microsoft/vcpkg](https://github.com/Microsoft/vcpkg)。

C:\Users\user\dev\vcpkg\vcpkg.exe install libsodium --triplet x64-windows
set SODIUM_USE_PKG_CONFIG=1
set VCPKGRS_DYNAMIC=1
cargo build

可选功能

提供了一些可选功能

  • std(默认:启用)。当此功能被禁用时,sodiumoxide使用#![no_std]构建。可能会丢失一些功能。需要Rust的nightly构建。

  • serde(默认:启用)。允许使用serde库进行密钥、认证标签等的序列化和反序列化。

  • benchmarks(默认:禁用)。编译基准测试。需要Rust的nightly构建。

交叉编译

为armv7-unknown-linux-gnueabihf交叉编译

  1. 安装依赖和工具链
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
  1. 将以下内容添加到.cargo/config文件
[target.armv7-unknown-linux-gnueabihf]
linker = "arm-linux-gnueabihf-gcc"
  1. 运行以下命令进行构建
cargo build --release --target armv7-unknown-linux-gnueabihf

为32位Linux交叉编译

  1. 安装依赖和工具链
sudo apt update
sudo apt install build-essential gcc-multilib -y
rustup target add i686-unknown-linux-gnu
  1. 运行以下命令进行构建
cargo build --release --target i686-unknown-linux-gnu

示例

待定

平台兼容性

Sodiumoxide已在以下平台上进行测试

  • Linux:是
  • Windows:是(MSVC)
  • Mac OS:是
  • IOS:待定
  • Android:待定

加入我们

在问题跟踪器中提交错误

主git仓库

git clone https://github.com/sodiumoxide/sodiumoxide.git

许可证

根据您的选择,受以下任一许可证的约束

  • Apache License, Version 2.0,[https://github.com/return/sodiumoxide-xchacha20poly1305/blob/HEAD/LICENSE-APACHE](https://github.com/return/sodiumoxide-xchacha20poly1305/blob/HEAD/LICENSE-APACHE) 或 [http://apache.ac.cn/licenses/LICENSE-2.0](http://apache.ac.cn/licenses/LICENSE-2.0)
  • MIT许可证[https://github.com/return/sodiumoxide-xchacha20poly1305/blob/HEAD/LICENSE-MIT](https://github.com/return/sodiumoxide-xchacha20poly1305/blob/HEAD/LICENSE-MIT) 或 [http://opensource.org/licenses/MIT](http://opensource.org/licenses/MIT)

贡献

通过阅读CONTRIBUTING.md文档了解如何为此项目做出贡献。

除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据Apache-2.0许可证的定义,都应如上双许可,而无需任何额外的条款或条件。

行为准则

我们相信为开发人员创造一个有利的社区,并制定了一般的行为准则。请阅读并采纳它,以帮助我们实现并保持期望的社区标准。

依赖项

~17MB
~112K SLoC