4 个版本
0.0.3 | 2021年10月4日 |
---|---|
0.0.2 | 2021年5月11日 |
0.0.1 | 2021年3月9日 |
0.0.0 | 2021年3月5日 |
#5 in #diem
每月 43 次下载
用于 5 个 包(4 个直接使用)
250KB
4.5K SLoC
id: crypto title: Crypto custom_edit_url: https://github.com/diem/diem/edit/main/crypto/crypto/README.md
加密组件包含我们在Diem中使用的所有加密原语实现:哈希、签名和密钥派生/生成。使用traits.rs的库部分包含加密API,该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。
依赖关系
~5–6.5MB
~131K SLoC