public static SqlXml generateKeys(SqlString keySize, SqlString network) { AsymmetricCipherKeyPair key = BCFunctions.GenerateKeys(Convert.ToInt16(keySize.ToString())); ECPublicKeyParameters publicKeyParam = (ECPublicKeyParameters)key.Public; ECPrivateKeyParameters privateKeyParam = (ECPrivateKeyParameters)key.Private; var privateKey = privateKeyParam.D.ToString(); BigInteger d = new BigInteger(privateKey, 10); var publicKey = BCFunctions.RetrievePublicKey(keySize.ToString(), d); var addressText = "0x" + BitConverter.ToString(BCFunctions.Hash(publicKey, network.ToString())).Replace("-", ""); var r = "<sqroot><D>" + privateKey + "</D><Q>" + publicKey + "</Q><A>" + addressText + "</A></sqroot>"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(r); XmlNodeReader xnr = new XmlNodeReader(xmlDoc); SqlXml rx = new SqlXml(xnr); return(rx); }
public static SqlString retrievePublicKey(SqlString keySize, SqlString privateKey) { BigInteger DString = new BigInteger(privateKey.ToString(), 10); return(BCFunctions.RetrievePublicKey(keySize.ToString(), DString)); }