| 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