/// <summary> /// Signs the given data with a private key /// </summary> /// <param name="data">Data to sign</param> /// <param name="privKey">Private key</param> /// <returns></returns> public static string Sign(string data, string privKey) { NetherumSigner::EthereumMessageSigner gen = new NetherumSigner::EthereumMessageSigner(); HexUTF8StringConvertor conv = new HexUTF8StringConvertor(); string hexPrivKey = conv.ConvertToHex(privKey); return(gen.EncodeUTF8AndSign(data, new NetherumSigner::EthECKey(hexPrivKey))); }
/// <summary> /// Verifies a message with a given signature and a public key /// </summary> /// <param name="message">The message which got signed</param> /// <param name="signature">The Signature</param> /// <param name="pubKey">The publickey to check against</param> /// <returns></returns> public static bool VerifyMessage(this string message, string signature, string pubKey) { NetherumSigner::EthereumMessageSigner gen = new NetherumSigner::EthereumMessageSigner(); string addr; try { addr = gen.EncodeUTF8AndEcRecover(message, signature); } catch { return(false); } return((addr.ToLower().Equals(pubKey.ToLower())) ? true : false); }