mirror of
https://github.com/serai-dex/serai.git
synced 2025-12-11 13:39:25 +00:00
Add prime-field crate
prime-field introduces a macro to generate a prime field, in its entitrety, de-duplicating code across minimal-ed448, embedwards25519, and secq256k1.
This commit is contained in:
@@ -1,19 +1,47 @@
|
||||
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
|
||||
#![doc = include_str!("../README.md")]
|
||||
#![no_std]
|
||||
#![allow(clippy::redundant_closure_call)]
|
||||
|
||||
#[macro_use]
|
||||
mod backend;
|
||||
prime_field::odd_prime_field!(
|
||||
FieldElement,
|
||||
// 2**448 - 2**224 - 1
|
||||
concat!(
|
||||
"00",
|
||||
"fffffffffffffffffffffffffffffffffffffffffffffffffffffffe",
|
||||
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
),
|
||||
"07",
|
||||
false
|
||||
);
|
||||
|
||||
mod scalar;
|
||||
pub use scalar::Scalar;
|
||||
|
||||
mod field;
|
||||
pub use field::FieldElement;
|
||||
prime_field::odd_prime_field!(
|
||||
Scalar,
|
||||
concat!(
|
||||
"00",
|
||||
"3fffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
||||
"7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3",
|
||||
),
|
||||
"02",
|
||||
false
|
||||
);
|
||||
|
||||
mod point;
|
||||
pub use point::Point;
|
||||
|
||||
mod ciphersuite;
|
||||
pub use crate::ciphersuite::Ed448;
|
||||
|
||||
pub(crate) fn u8_from_bool(bit_ref: &mut bool) -> u8 {
|
||||
use core::hint::black_box;
|
||||
use prime_field::zeroize::Zeroize;
|
||||
|
||||
let bit_ref = black_box(bit_ref);
|
||||
|
||||
let mut bit = black_box(*bit_ref);
|
||||
let res = black_box(u8::from(bit));
|
||||
bit.zeroize();
|
||||
debug_assert!((res | 1) == 1);
|
||||
|
||||
bit_ref.zeroize();
|
||||
res
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user