private static void DeserializeFrom(BinaryReader reader, out FiniteFieldPolynomial x, out FiniteFieldPolynomial y) { int x_i = (int)reader.ReadVarInt(); int expectedByteCount = (int)reader.ReadVarInt(); byte[] y_b = reader.ReadBytes(expectedByteCount); IrreduciblePolynomial irp = new IrreduciblePolynomial(expectedByteCount * 8); x = new FiniteFieldPolynomial(irp, x_i); y = new FiniteFieldPolynomial(irp, y_b.ToBigIntegerFromBigEndianUnsignedBytes()); }
private static void DeserializeFrom(BinaryReader reader, out FiniteFieldPolynomial x, out FiniteFieldPolynomial y) { int x_i = (int)reader.ReadVarInt(int.MaxValue); byte[] y_b = reader.ReadVarBytes(); IrreduciblePolynomial irp = new IrreduciblePolynomial(y_b.Length * 8); x = new FiniteFieldPolynomial(irp, x_i); y = new FiniteFieldPolynomial(irp, y_b.ToBigIntegerFromBigEndianUnsignedBytes()); }
public FiniteFieldPolynomial(IrreduciblePolynomial primePolynomial, params int[] setCoefficients) { _PrimePolynomial = primePolynomial; _PolynomialSetCoefficients = BigInteger.Zero; for (int i = 0; i < setCoefficients.Length; i++) { _PolynomialSetCoefficients = _PolynomialSetCoefficients.SetBit(setCoefficients[i]); } }
public FiniteFieldPolynomial(IrreduciblePolynomial primePolynomial, params int[] setCoefficients) { _PrimePolynomial = primePolynomial; _PolynomialSetCoefficients = BigInteger.Zero; for (int i = 0; i < setCoefficients.Length; i++) { _PolynomialSetCoefficients = _PolynomialSetCoefficients.SetBit(setCoefficients[i]); } }
private static IEnumerable<FiniteFieldPolynomial> GetRandomPolynomials(IrreduciblePolynomial irreduciblePolynomial, int total) { var rng = RandomNumberGenerator.Create(); for (int i = 0; i < total; i++) { var randomCoefficientBytes = new byte[irreduciblePolynomial.SizeInBytes]; rng.GetBytes(randomCoefficientBytes); yield return new FiniteFieldPolynomial(irreduciblePolynomial, randomCoefficientBytes.ToBigIntegerFromLittleEndianUnsignedBytes()); } }
private static void DeserializeFrom(BinaryReader reader, out FiniteFieldPolynomial x, out FiniteFieldPolynomial y) { int x_i = (int)reader.ReadVarInt(); int expectedByteCount = (int)reader.ReadVarInt(); byte[] y_b = reader.ReadBytes(expectedByteCount); IrreduciblePolynomial irp = new IrreduciblePolynomial(expectedByteCount * 8); x = new FiniteFieldPolynomial(irp, x_i); y = new FiniteFieldPolynomial(irp, y_b.ToBigIntegerFromBigEndianUnsignedBytes()); }
public static bool TryParse(string s, out FiniteFieldPoint result) { var match = Regex.Match(s, @"(?<x>[0-9]+)-(?<y>[0-9a-fA-F]+)"); if (!match.Success) { result = null; return false; } try { var xString = match.Groups["x"].Value.ToLowerInvariant(); var yString = match.Groups["y"].Value.ToLowerInvariant(); // Each hex letter makes up 4 bits, so to get the degree in bits // we multiply by 4 int polynomialDegree = yString.Length * 4; var irp = new IrreduciblePolynomial(polynomialDegree); var x = new FiniteFieldPolynomial(irp, BigInteger.Parse(xString)); // get bytes var bigEndianBytes = new byte[yString.Length / 2]; for (int i = 0; i < yString.Length; i += 2) { bigEndianBytes[i / 2] = Byte.Parse(yString.Substring(i, 2), NumberStyles.HexNumber); } var y = new FiniteFieldPolynomial(irp, bigEndianBytes.ToBigIntegerFromBigEndianUnsignedBytes()); result = new FiniteFieldPoint(x, y); return true; } catch { result = null; return false; } }
public static bool TryParse(string s, out FiniteFieldPoint result) { var match = Regex.Match(s, @"(?<x>[0-9]+)-(?<y>[0-9a-fA-F]+)"); if (!match.Success) { result = null; return(false); } try { var xString = match.Groups["x"].Value.ToLowerInvariant(); var yString = match.Groups["y"].Value.ToLowerInvariant(); // Each hex letter makes up 4 bits, so to get the degree in bits // we multiply by 4 int polynomialDegree = yString.Length * 4; var irp = new IrreduciblePolynomial(polynomialDegree); var x = new FiniteFieldPolynomial(irp, BigInteger.Parse(xString)); // get bytes var bigEndianBytes = new byte[yString.Length / 2]; for (int i = 0; i < yString.Length; i += 2) { bigEndianBytes[i / 2] = Byte.Parse(yString.Substring(i, 2), NumberStyles.HexNumber); } var y = new FiniteFieldPolynomial(irp, bigEndianBytes.ToBigIntegerFromBigEndianUnsignedBytes()); result = new FiniteFieldPoint(x, y); return(true); } catch { result = null; return(false); } }
public void Deserialize(BinaryReader reader) { int x = (int)reader.ReadVarInt(); int expectedByteCount = (int)reader.ReadVarInt(); byte[] y = reader.ReadBytes(expectedByteCount); IrreduciblePolynomial irp = new IrreduciblePolynomial(expectedByteCount * 8); this.X = new FiniteFieldPolynomial(irp, x); this.Y = new FiniteFieldPolynomial(irp, y.ToBigIntegerFromBigEndianUnsignedBytes()); }
public FiniteFieldPolynomial(IrreduciblePolynomial primePolynomial, BigInteger polynomial) { _PrimePolynomial = primePolynomial; _PolynomialSetCoefficients = polynomial; }
public FiniteFieldPolynomial(IrreduciblePolynomial primePolynomial, BigInteger polynomial) { _PrimePolynomial = primePolynomial; _PolynomialSetCoefficients = polynomial; }
public SplitSecret(int threshold, IrreduciblePolynomial irreduciblePolynomial, FiniteFieldPolynomial[] allCoefficients) { Threshold = threshold; _IrreduciblePolynomial = irreduciblePolynomial; _AllCoefficients = allCoefficients; }