2022-12-24 15:09:09 -05:00
|
|
|
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
|
2023-03-20 20:10:00 -04:00
|
|
|
#![doc = include_str!("../README.md")]
|
2023-04-22 04:38:47 -04:00
|
|
|
#![no_std]
|
2023-08-01 02:49:31 -04:00
|
|
|
|
2025-08-28 03:36:15 -04:00
|
|
|
prime_field::odd_prime_field!(
|
|
|
|
|
FieldElement,
|
|
|
|
|
// 2**448 - 2**224 - 1
|
|
|
|
|
concat!(
|
|
|
|
|
"00",
|
|
|
|
|
"fffffffffffffffffffffffffffffffffffffffffffffffffffffffe",
|
|
|
|
|
"ffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
|
|
|
),
|
|
|
|
|
"07",
|
|
|
|
|
false
|
|
|
|
|
);
|
2022-10-29 03:54:42 -05:00
|
|
|
|
2025-08-28 03:36:15 -04:00
|
|
|
prime_field::odd_prime_field!(
|
|
|
|
|
Scalar,
|
|
|
|
|
concat!(
|
|
|
|
|
"00",
|
|
|
|
|
"3fffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
|
|
|
"7cca23e9c44edb49aed63690216cc2728dc58f552378c292ab5844f3",
|
|
|
|
|
),
|
|
|
|
|
"02",
|
|
|
|
|
false
|
|
|
|
|
);
|
2022-10-29 03:54:42 -05:00
|
|
|
|
2023-03-20 20:10:00 -04:00
|
|
|
mod point;
|
2022-10-29 03:54:42 -05:00
|
|
|
pub use point::Point;
|
2025-08-20 04:50:37 -04:00
|
|
|
|
|
|
|
|
mod ciphersuite;
|
2025-08-28 03:36:15 -04:00
|
|
|
|
|
|
|
|
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
|
|
|
|
|
}
|