public static void MultiplyAddToExt(uint[] x, uint[] y, uint[] zz) { Nat256.MulAddTo(x, y, zz); if (Nat.Gte(16, zz, Curve25519Field.PExt)) { Curve25519Field.SubPExtFrom(zz); } }
public static void MultiplyAddToExt(uint[] x, uint[] y, uint[] zz) { Nat256.MulAddTo(x, y, zz); if (Nat.Gte(16, zz, PExt)) { SubPExtFrom(zz); } }
public static void MultiplyAddToExt(uint[] x, uint[] y, uint[] zz) { uint c = Nat256.MulAddTo(x, y, zz); if (c != 0 || (zz[15] >= PExt15 && Nat.Gte(16, zz, PExt))) { Nat.SubFrom(16, PExt, zz); } }
public static void MultiplyAddToExt(uint[] x, uint[] y, uint[] zz) { uint c = Nat256.MulAddTo(x, y, zz); if (c != 0 || (zz[15] == PExt15 && Nat.Gte(16, zz, PExt))) { if (Nat.AddTo(PExtInv.Length, PExtInv, zz) != 0) { Nat.IncAt(16, zz, PExtInv.Length); } } }
private static byte[] CalculateS(byte[] r, byte[] k, byte[] s) { uint[] t = new uint[ScalarUints * 2]; DecodeScalar(r, 0, t); uint[] u = new uint[ScalarUints]; DecodeScalar(k, 0, u); uint[] v = new uint[ScalarUints]; DecodeScalar(s, 0, v); Nat256.MulAddTo(u, v, t); byte[] result = new byte[ScalarBytes * 2]; for (int i = 0; i < t.Length; ++i) { Encode32(t[i], result, i * 4); } return(ReduceScalar(result)); }