public static Keys GenerateKeys(EllipticCurve curve) { var privateKey = RandomBigInteger(curve.Parameters.FieldCharacteristic); var publicKey = curve.Multiply(privateKey, curve.Parameters.BasePoint); return(new Keys(privateKey, publicKey)); }
static void Main(string[] args) { var parameters = ParametersFactory.Secp256k1(); var EC = new EllipticCurve(parameters); DH.Execute(EC); }
public static void Execute(EllipticCurve curve) { var AliceKeys = GenerateKeys(curve); var BobKeys = GenerateKeys(curve); Console.WriteLine("\nAlice`s key:\n"); Console.WriteLine(AliceKeys); Console.WriteLine("\nBob`s key\n"); Console.WriteLine(BobKeys); var AliceSecret = curve.Multiply(AliceKeys.Private, BobKeys.Public); var BobSecret = curve.Multiply(BobKeys.Private, AliceKeys.Public); Console.WriteLine("\nAlice`s secret:\n"); Console.WriteLine(AliceSecret); Console.WriteLine("\nBob`s secret\n"); Console.WriteLine(BobSecret); }