private static string getPublicKeyFromPrivateKey(string privateKey) { var p = BigInteger.Parse("0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F", NumberStyles.HexNumber); var b = (BigInteger)7; var a = BigInteger.Zero; var Gx = BigInteger.Parse("79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798", NumberStyles.HexNumber); var Gy = BigInteger.Parse("483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8", NumberStyles.HexNumber); CurveFp curve256 = new CurveFp(p, a, b); Point generator256 = new Point(curve256, Gx, Gy); var secret = BigInteger.Parse(privateKey, NumberStyles.HexNumber); var pubkeyPoint = generator256 * secret; return(pubkeyPoint.x.ToString("X") + pubkeyPoint.y.ToString("X")); }
public Point(CurveFp curve, BigInteger x, BigInteger y) { this.curve = curve; this.x = x; this.y = y; }