public static void AddOne(uint[] x, uint[] z) { Nat.Inc(8, x, z); if (Nat256.Gte(z, Curve25519Field.P)) { Curve25519Field.SubPFrom(z); } }
public static void Add(uint[] x, uint[] y, uint[] z) { Nat256.Add(x, y, z); if (Nat256.Gte(z, Curve25519Field.P)) { Curve25519Field.SubPFrom(z); } }
public static void Twice(uint[] x, uint[] z) { Nat.ShiftUpBit(8, x, 0u, z); if (Nat256.Gte(z, Curve25519Field.P)) { Curve25519Field.SubPFrom(z); } }
public static void Reduce27(uint x, uint[] z) { uint num = z[7]; uint num2 = x << 1 | num >> 31; num &= 2147483647u; num += Nat.AddWordTo(7, num2 * 19u, z); z[7] = num; if (num >= 2147483647u && Nat256.Gte(z, Curve25519Field.P)) { Curve25519Field.SubPFrom(z); } }
public static void Reduce(uint[] xx, uint[] z) { uint num = xx[7]; Nat.ShiftUpBit(8, xx, 8, num, z, 0); uint num2 = Nat256.MulByWordAddTo(19u, xx, z) << 1; uint num3 = z[7]; num2 += (num3 >> 31) - (num >> 31); num3 &= 2147483647u; num3 += Nat.AddWordTo(7, num2 * 19u, z); z[7] = num3; if (num3 >= 2147483647u && Nat256.Gte(z, Curve25519Field.P)) { Curve25519Field.SubPFrom(z); } }