Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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());
        }
Example #4
0
        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));
        }