public static bool VerifySignature(string publicKey, byte[] signedData, byte[] dataHash) { var eth = new EthECKey(publicKey.HexToByteArray(), false); var result = eth.Verify(dataHash, EthECDSASignature.FromDER(signedData)); return(result); }
public void SigTest() { var key = EthECKey.GenerateKey(); var privatekey1 = key.GetPrivateKey(); var publicKeyAddress = key.GetPublicAddress(); var str = "0a0277372208420acec80decf6fc40b8b9d59dd72e5a68080112640a2d747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e73666572436f6e747261637412330a1541b221f7d502a2120fe5eafd6c87507741955f168812154194c5e2d9527ddb212e4b69fb52e62b551ee39eee1880ade20470aaf7d19dd72e"; var signHex = EthECKey.Sign(str.HexToByteArray(), privatekey1); var verify = EthECKey.Verify(str.HexToByteArray(), signHex, publicKeyAddress); }
public void ShouldSignEncodeTransactionAndRecoverPublicAddress() { var privateKey = "b5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7"; var sendersAddress = "12890d2cce102216644c59daE5baed380d84830c"; var publicKey = "87977ddf1e8e4c3f0a4619601fc08ac5c1dcf78ee64e826a63818394754cef52457a10a599cb88afb7c5a6473b7534b8b150d38d48a11c9b515dd01434cceb08"; var key = new EthECKey(privateKey.HexToByteArray(), true); var hash = "test".ToHexUTF8().HexToByteArray(); var signature = key.Sign(hash); Assert.True(key.Verify(hash, signature)); Assert.Equal(key.GetPubKeyNoPrefix().ToHex(), publicKey); Assert.Equal(sendersAddress.EnsureHexPrefix().ToLower(), key.GetPublicAddress().EnsureHexPrefix().ToLower()); }
public bool IsValid() { if (FromAddress == null) { return(true); } if (Signature == null) { throw new Exception("No singature in this promise."); } byte[] hashBytes = Encoding.UTF8.GetBytes(CalculateHash()); EthECKey pubKeyRecovered = EthECKey.RecoverFromSignature(Signature, hashBytes); return(pubKeyRecovered.Verify(hashBytes, Signature)); }