0.3.2 |
|
---|---|
0.3.1 |
|
0.2.1 |
|
0.1.6 |
|
0.1.4 |
|
#31 in #signing-key
用于 2 个crate(通过 diem-framework-natives)
250KB
4.5K SLoC
加密组件包含我们在Diem中使用的所有加密原语的实现:哈希、签名和密钥推导/生成。使用 traits.rs 的库部分包含强制类型安全的加密API、可验证的随机函数、EdDSA & MultiEdDSA签名。
概述
Diem 使用了多种加密算法
- SHA-3作为主哈希函数。它在FIPS 202中标准化。它基于tiny_keccak库。
- HKDF:基于RFC 5869的基于HMAC的提取和扩展密钥推导函数(HKDF)。它用于从盐(可选)、种子和应用信息(可选)生成密钥。
- traits.rs引入了新的加密API抽象。
- Ed25519使用基于ed25519-dalek库的新API设计进行签名,并增加了额外的安全检查(例如,对可变形性的检查)。
- X25519用于密钥交换。它用于通过Noise Protocol Framework在验证者之间安全通信。它基于x25519-dalek库。
这个模块是如何组织的?
crypto/src
├── hash.rs # Hash function (SHA-3)
├── hkdf.rs # HKDF implementation (HMAC-based Extract-and-Expand Key Derivation Function based on RFC 5869)
├── macros/ # Derivations for SilentDebug and SilentDisplay
├── utils.rs # Serialization utility functions
├── lib.rs
├── ed25519.rs # Ed25519 implementation of the signing/verification API in traits.rs
├── multi_ed25519.rs # MultiEd25519 implementation of the signing/verification API in traits.rs
├── x25519.rs # X25519 wrapper
├── test_utils.rs
├── traits.rs # New API design and the necessary abstractions
└── unit_tests/ # Tests
注意:此crate历史上支持BLS12381、ECVRF和SlIP-0010,但由于使用率低而被删除。删除前的最后一个git版本是00301524。
依赖
~4–6MB
~114K SLoC