mirror of
https://github.com/saymrwulf/curve25519-dalek-source.git
synced 2026-09-07 20:50:39 +00:00
Add constant for MSQRT_M1, equal to -SQRT_M1
This commit is contained in:
parent
e1feb653be
commit
fb0c431184
1 changed files with 13 additions and 2 deletions
|
|
@ -29,9 +29,18 @@ pub const d: FieldElement = FieldElement([
|
||||||
pub const d2: FieldElement = FieldElement([
|
pub const d2: FieldElement = FieldElement([
|
||||||
-21827239, -5839606, -30745221, 13898782, 229458,
|
-21827239, -5839606, -30745221, 13898782, 229458,
|
||||||
15978800, -12551817, -6495438, 29715968, 9444199, ]);
|
15978800, -12551817, -6495438, 29715968, 9444199, ]);
|
||||||
|
|
||||||
|
/// Precomputed value of one of the square roots of -1 (mod p)
|
||||||
pub const SQRT_M1: FieldElement = FieldElement([
|
pub const SQRT_M1: FieldElement = FieldElement([
|
||||||
-32595792, -7943725, 9377950, 3500415, 12389472,
|
-32595792, -7943725, 9377950, 3500415, 12389472,
|
||||||
-272473, -25146209, -2005654, 326686, 11406482, ]);
|
-272473, -25146209, -2005654, 326686, 11406482, ]);
|
||||||
|
|
||||||
|
/// Precomputed value of the other square root of -1 (mod p),
|
||||||
|
/// i.e., MSQRT_M1 = -SQRT_M1.
|
||||||
|
pub const MSQRT_M1: FieldElement = FieldElement([
|
||||||
|
32595792, 7943725, -9377950, -3500415, -12389472,
|
||||||
|
272473, 25146209, 2005654, -326686, -11406482, ]);
|
||||||
|
|
||||||
/// Precomputed value of 1/2 (mod p).
|
/// Precomputed value of 1/2 (mod p).
|
||||||
pub const HALF: FieldElement = FieldElement([
|
pub const HALF: FieldElement = FieldElement([
|
||||||
10, 0, 0, 0, 0, 0, 0, 0, 0, -16777216, ]);
|
10, 0, 0, 0, 0, 0, 0, 0, 0, -16777216, ]);
|
||||||
|
|
@ -1491,11 +1500,13 @@ mod test {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
/// Test that SQRT_M1 is a square root of -1
|
/// Test that SQRT_M1 and MSQRT_M1 are square roots of -1
|
||||||
fn test_sqrt_minus_one() {
|
fn test_sqrt_minus_one() {
|
||||||
let minus_one = FieldElement([-1,0,0,0,0,0,0,0,0,0]);
|
let minus_one = FieldElement([-1,0,0,0,0,0,0,0,0,0]);
|
||||||
let sqrt_m1_sq = &constants::SQRT_M1 * &constants::SQRT_M1;
|
let sqrt_m1_sq = &constants::SQRT_M1 * &constants::SQRT_M1;
|
||||||
assert_eq!(minus_one, sqrt_m1_sq);
|
let msqrt_m1_sq = &constants::MSQRT_M1 * &constants::MSQRT_M1;
|
||||||
|
assert_eq!(minus_one, sqrt_m1_sq);
|
||||||
|
assert_eq!(minus_one, msqrt_m1_sq);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue