11个版本 (6个重大更新)
0.7.0 | 2024年7月11日 |
---|---|
0.5.1 | 2023年8月22日 |
0.5.0 | 2022年10月4日 |
0.3.0 | 2022年5月31日 |
#476 in 密码学
2,609 每月下载量
用于 4 个crate(3 个直接使用)
2MB
523 行
具有运行时派发算法的混合公钥加密
此crate提供对hpke
crate的通用接口,该crate是RFC9180草案的Rust实现,用于混合公钥加密方案。如果您在编译时知道特定的(aead,kdf,kem)三元组,您应直接使用hpke
crate。
目前,此crate仅公开hpke草案中描述的基础模式(0)的接口,在基础模式下,仅提供无状态单次消息加密/解密,如RFC9180§6中定义。
WebAssembly就绪
此crate还作为hpke
发布到npm,作为一个typescript/javascript包,也可以使用wasm-pack
为特定wasm用例进行自定义构建(省略未使用的算法)。有关从node使用库的示例,请参阅examples/example.ts
仅限夜间构建的功能,用于解决wasm-bindgen的bug:cfg_eval
为了从wasm构建中排除algo-all
,您必须使用夜间版本并启用cfg_eval
cargo功能。这是由于wasm-bindgen#2058。即使排除algo-all
,即使从rust使用,这也不是必需的。
可用的cargo功能
-
cfg_eval
:允许此crate在夜间Rust上构建wasm而无需algo-all
。请注意,algo-all
(所有算法)将具有此功能在任何通道上构建wasm。默认禁用。尝试使用子集构建wasm。 -
base-mode-open:启用 hpke 基本模式的单次打开行为(接收功能)。默认启用。
-
base-mode-seal:启用 hpke 基本模式的单次密封行为(发送功能)。默认启用。
-
algo-all:启用所有 aead、kdf 和 kem 算法。默认启用。
-
aead-all:启用
aead-aes-gcm-128
、aead-aes-gcm-256
和aead-chacha-20-poly-1305
算法功能。默认启用。 -
kdf-all:启用
kdf-sha256
、kdf-sha384
和kdf-sha512
算法功能。默认启用。 -
kem-all:启用
kem-dh-p256-hkdf-sha256
、kem-dh-p384-hkdf-sha384
、kem-dh-p521-hkdf-sha512
和kem-x25519-hkdf-sha256
算法功能。默认启用。 -
serde:为所有公共结构和枚举启用衍生 serde 序列化和反序列化。默认禁用。
示例功能使用
要从 rust 依赖此包并使用所有算法,base-mode-open
和 base-mode-seal
,请使用默认功能。
要从 rust 依赖此包并使用所有算法和 serde,但不需要 base-mode-seal
: default-features = false, features = ["algo-all", "base-mode-open", "serde"]
构建不带 kem-x25519-hkdf-sha256 或
base-mode-open
的 wasm: wasm-pack build --no-default-features --features aead-all,kdf-all,kem-dh-p256-hkdf-sha256,base-mode-seal,cfg_eval
构建带所有算法但不带 base-mode-open 的 wasm: wasm-pack build --no-default-features --features algo-all,base-mode-seal
依赖关系
~4–6MB
~79K SLoC