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 密码学

Download history 681/week @ 2024-04-26 1101/week @ 2024-05-03 789/week @ 2024-05-10 802/week @ 2024-05-17 793/week @ 2024-05-24 737/week @ 2024-05-31 1064/week @ 2024-06-07 1083/week @ 2024-06-14 772/week @ 2024-06-21 347/week @ 2024-06-28 736/week @ 2024-07-05 684/week @ 2024-07-12 770/week @ 2024-07-19 660/week @ 2024-07-26 618/week @ 2024-08-02 484/week @ 2024-08-09

2,609 每月下载量
用于 4 个crate(3 个直接使用)

MPL-2.0 许可证

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-128aead-aes-gcm-256aead-chacha-20-poly-1305 算法功能。默认启用。

  • kdf-all:启用 kdf-sha256kdf-sha384kdf-sha512 算法功能。默认启用。

  • kem-all:启用 kem-dh-p256-hkdf-sha256kem-dh-p384-hkdf-sha384kem-dh-p521-hkdf-sha512kem-x25519-hkdf-sha256 算法功能。默认启用。

  • serde:为所有公共结构和枚举启用衍生 serde 序列化和反序列化。默认禁用。

示例功能使用

要从 rust 依赖此包并使用所有算法,base-mode-openbase-mode-seal,请使用默认功能。

要从 rust 依赖此包并使用所有算法和 serde,但不需要 base-mode-sealdefault-features = false, features = ["algo-all", "base-mode-open", "serde"]

构建不带 kem-x25519-hkdf-sha256base-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