18个版本 (破坏性)
0.13.0 | 2022年12月6日 |
---|---|
0.12.1 | 2022年10月28日 |
0.12.0 | 2022年5月4日 |
0.11.0 | 2021年9月2日 |
0.2.0 | 2017年6月27日 |
#18 in 算法
每月 2,179,053 次下载
在 1,580 个crate中使用 (140直接)
33KB
365 行
ff
ff
是一个纯Rust编写的有限域库,没有 unsafe{}
代码。
免责声明
- 此库不提供恒定时间的保证。特质允许下游用户公开恒定时间的逻辑,但
#[derive(PrimeField)]
特质不会生成恒定时间的代码(即使对于返回恒定时间兼容值的特质方法)。
使用
将 ff
crate 添加到您的 Cargo.toml
[dependencies]
ff = "0.13"
ff
crate 包含 Field
和 PrimeField
特质。有关更多信息,请参阅 文档。
#![derive(PrimeField)]
如果您需要一个素域的实现,此库还提供了一个过程宏,当提供模数时,将展开为素域的高效实现。 PrimeFieldGenerator
必须是 Fp 中 p-1 次序的元素,也是二次非剩余。
首先,启用 derive
crate 功能
[dependencies]
ff = { version = "0.13", features = ["derive"] }
然后使用宏如下
#[macro_use]
extern crate ff;
#[derive(PrimeField)]
#[PrimeFieldModulus = "52435875175126190479447740508185965837690552500527637822603658699938581184513"]
#[PrimeFieldGenerator = "7"]
#[PrimeFieldReprEndianness = "little"]
struct Fp([u64; 4]);
就这样! Fp
现在实现了 Field
和 PrimeField
。
最低支持的Rust版本
需要 Rust 1.56 或更高版本。
最低支持的Rust版本将来可能会更改,但将通过小版本号提升来完成。
许可证
根据您的选择,许可如下
- Apache License,版本2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则根据Apache-2.0许可定义的,您有意提交以包含在作品中的任何贡献,应如上双许可,没有任何额外条款或条件。
依赖关系
~67–610KB
~14K SLoC