#secure-scuttlebutt #scuttlebutt #ssb #crypto

no-std ssb-crypto

Secure Scuttlebutt使用的加密原语

9个版本

0.2.3 2021年8月18日
0.2.2 2020年12月17日
0.2.1 2020年9月25日
0.1.4 2019年12月21日
0.1.1 2019年4月21日

#773 in 密码学

Download history 74/week @ 2024-03-15 63/week @ 2024-03-22 108/week @ 2024-03-29 51/week @ 2024-04-05 51/week @ 2024-04-12 67/week @ 2024-04-19 60/week @ 2024-04-26 42/week @ 2024-05-03 46/week @ 2024-05-10 49/week @ 2024-05-17 55/week @ 2024-05-24 54/week @ 2024-05-31 31/week @ 2024-06-07 43/week @ 2024-06-14 47/week @ 2024-06-21 18/week @ 2024-06-28

每月144次下载
用于 15 个crate(直接使用9个)

LGPL-3.0

50KB
890

ssb-crypto

Documentation

此crate提供了实现Secure Scuttlebutt网络协议以及内容签名和加密所需的加密功能。

请参阅文档以获取更多信息。


lib.rs:

此crate提供了实现Secure Scuttlebutt网络协议以及内容签名和加密所需的加密功能。

提供了两种加密操作实现;一种使用libsodium C库(通过sodiumoxide crate),另一种是纯Rust实现,使用dalekRustCrypto crates(默认)。您可以通过Cargo.toml功能标志选择要使用的实现(见下文)。

功能

如果您只需要结构定义和基本操作,请禁用默认功能,并(可选)启用b64。

[dependencies.ssb-crypto]
version = "0.2"
default_features = false
features = ["b64"]

dalek

默认开启。使用dalek/RustCrypto的加密操作实现。加密功能通过方便的方法暴露,例如 Keypair::signPublicKey::verify。如果未启用daleksodium功能,则这些方法不可用。

rand

默认开启。提供生成密钥和随机数的函数,使用用户指定的加密安全的随机数生成器(例如,Nonce::generate_with_rng)。这些函数可用于不受getrandom支持的no_std环境。如果启用了dalek,则启用此功能。

getrandom

默认开启。提供使用操作系统提供的加密安全的随机数生成器生成密钥和随机数的函数(通过getrandom crate)。对于不受getrandom支持的环境,请禁用此功能并使用generate_with_rng()函数代替。

b64

默认开启。为KeypairPublicKeySignatureHashNetworkKey启用from_base64函数。也被alloc启用。

alloc

默认开启。为KeypairPublicKeySignatureHash启用as_base64函数。

sodium

使用libsodium/sodiumoxide实现的加密操作。如果同时启用了sodiumdalek功能,结构体方法(例如,Keypair::sign)将使用dalek实现。注意,如果多个依赖项使用ssb-crypto,其中一些偏好sodium,而另一些偏好dalek,则可能会发生这种情况。要强制方法使用sodium实现,请启用force_sodium功能。

警告:如果您使用sodium实现,则必须调用ssb_crypto::sodium::init()。如果不这样做,libsodium的随机数生成和密钥生成函数不是线程安全的。

[dependencies.ssb-crypto]
version = "0.2"
default_features = false
features = ["sodium", "b64"]

sodium_module

启用包含使用libsodium/sodiumoxide实现的独立加密函数的sodium模块。这主要用于测试;例如,cargo test --features sodium_module将测试dalek和sodium实现以检查兼容性。请注意,sodium和dalek模块在文档中是隐藏的;如果您想直接使用它们,则需要查看代码。

no_std支持

要为嵌入式(即no_std)环境构建,请禁用默认功能,启用dalek和可选的b64。例如

cargo build --no-default-features --features dalek,b64 --target thumbv7em-none-eabihf

依赖项

~2.2-8.5MB
~86K SLoC