예제 #1
0
        public void ShouldGenerateECKey()
        {
            var ecKey          = EthECKey.GenerateKey();
            var key            = ecKey.GetPrivateKeyAsBytes();
            var regeneratedKey = new ECKey(key, true);

            Assert.Equal(key.ToHex(), regeneratedKey.GetPrivateKeyAsBytes().ToHex());
            Assert.Equal(ecKey.GetPublicAddress(), regeneratedKey.GetPublicAddress());
        }
예제 #2
0
        public void ShouldSignEncodeTransactionAndRecoverPublicAddress()
        {
            var privateKey     = "b5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7";
            var sendersAddress = "12890d2cce102216644c59daE5baed380d84830c";
            var publicKey      =
                "87977ddf1e8e4c3f0a4619601fc08ac5c1dcf78ee64e826a63818394754cef52457a10a599cb88afb7c5a6473b7534b8b150d38d48a11c9b515dd01434cceb08";

            var key       = new ECKey(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.ToLower(), key.GetPublicAddress());
        }
예제 #3
0
        public static string GetPublicAddress(string privateKey)
        {
            var key = new ECKey(privateKey.HexToByteArray(), true);

            return(key.GetPublicAddress());
        }