예제 #1
0
파일: pubKey.cs 프로젝트: Calienteam/Velaz2
    static void Main()
    {
        //var privKey = EthECKey.GenerateKey();
        var privKey = new EthECKey("97ddae0f3a25b92268175400149d65d6887b9cefaf28ea2c078e05cdc15a3c0a");

        byte[] pubKeyCompressed = new ECKey(privKey.GetPrivateKeyAsBytes(), true).GetPubKey(true);
        Console.WriteLine("Private key: {0}", privKey.GetPrivateKey().Substring(4));
        Console.WriteLine("Public key: {0}", privKey.GetPubKey().ToHex().Substring(2));
        Console.WriteLine("Public key (compressed): {0}", pubKeyCompressed.ToHex());

        Console.WriteLine();

        string msg = "Message for signing";

        byte[] msgBytes  = Encoding.UTF8.GetBytes(msg);
        byte[] msgHash   = new Sha3Keccack().CalculateHash(msgBytes);
        var    signature = privKey.SignAndCalculateV(msgHash);

        Console.WriteLine("Msg: {0}", msg);
        Console.WriteLine("Msg hash: {0}", msgHash.ToHex());
        Console.WriteLine("Signature: [v = {0}, r = {1}, s = {2}]",
                          signature.V[0] - 27, signature.R.ToHex(), signature.S.ToHex());

        Console.WriteLine();

        var pubKeyRecovered = EthECKey.RecoverFromSignature(signature, msgHash);

        Console.WriteLine("Recovered pubKey: {0}", pubKeyRecovered.GetPubKey().ToHex().Substring(2));

        bool validSig = pubKeyRecovered.Verify(msgHash, signature);

        Console.WriteLine("Signature valid? {0}", validSig);
    }
예제 #2
0
        private void btnOpenWallet_Click(object sender, EventArgs e)
        {
            try
            {
                //var sprivKey = EthECKey.GenerateKey();
                //Console.Write("Private Key: ");
                var    privKey          = new EthECKey(txtOpenWalletPK.Text);
                byte[] pubKeyCompressed = new ECKey(privKey.GetPrivateKeyAsBytes(), true).GetPubKey(true);
                byte[] pubKeyShaRIPE    = RipeMD160(pubKeyCompressed);
                //Console.WriteLine("Private key: {0}", privKey.GetPrivateKey().Substring(4));
                //Console.WriteLine("Public key: {0}", privKey.GetPubKey().ToHex().Substring(2));
                //Console.WriteLine("Public key (compressed): {0}", pubKeyCompressed.ToHex());
                //Console.WriteLine("Public key (RIPEMD160): {0}", pubKeyShaRIPE.ToHex());

                txtOpenWallet.Text = $"Private Key:\n{txtOpenWalletPK.Text}\nExtracted Public Key:\n{pubKeyCompressed.ToHex()} \nAddress:\n{pubKeyShaRIPE.ToHex()}";
                TransactionWallet.addressSession = pubKeyShaRIPE.ToHex();
                TransactionWallet.pubKeySession  = pubKeyCompressed.ToHex();
                MainForm.LabelTextAddress        = pubKeyShaRIPE.ToHex();
                SendToServerGetBalance(pubKeyShaRIPE.ToHex());
            }
            catch (Exception fuku)
            {
                txtOpenWallet.Text = fuku.ToString();
            }
        }
예제 #3
0
        /// <summary>
        /// Encrypt wallet and return keystore
        /// </summary>
        /// <param name="password">The Password to be used for encryption</param>
        /// <returns>Keystore</returns>
        public string encryptWallet(string password)
        {
            EthECKey ethECKey = new EthECKey(_wallet.PK);
            var      service  = new Nethereum.KeyStore.KeyStoreService();

            return(service.EncryptAndGenerateDefaultKeyStoreAsJson(
                       password, ethECKey.GetPrivateKeyAsBytes(), ethECKey.GetPublicAddress()));
        }
예제 #4
0
        public Account GenerateNewAccount()
        {
            EthECKey ecKey      = Nethereum.Signer.EthECKey.GenerateKey();
            string   privateKey = ecKey.GetPrivateKeyAsBytes().ToHex();
            Account  account    = new Nethereum.Web3.Accounts.Account(privateKey);

            return(account);
        }
예제 #5
0
        public void ShouldGenerateECKey()
        {
            var ecKey          = EthECKey.GenerateKey();
            var key            = ecKey.GetPrivateKeyAsBytes();
            var regeneratedKey = new EthECKey(key, true);

            Assert.Equal(key.ToHex(), regeneratedKey.GetPrivateKeyAsBytes().ToHex());
            Assert.Equal(ecKey.GetPublicAddress().EnsureHexPrefix().ToLower(), regeneratedKey.GetPublicAddress().EnsureHexPrefix().ToLower());
        }
예제 #6
0
        public KeyPair GenerateNewWallet(string password)
        {
            EthECKey ecKey      = Nethereum.Signer.EthECKey.GenerateKey();
            string   privateKey = ecKey.GetPrivateKeyAsBytes().ToHex();
            Account  account    = new Account(privateKey);

            return(new KeyPair()
            {
                Private = account.PrivateKey,
                Address = account.Address
            });
        }
예제 #7
0
        static void Main(string[] args)
        {
            EthECKey ethECKey = EthECKey.GenerateKey();

            byte[] key      = ethECKey.GetPrivateKeyAsBytes();
            var    address  = ethECKey.GetPublicAddress();
            string password = "******";
            var    ksvc     = new KeyStoreService();
            string json     = ksvc.EncryptAndGenerateDefaultKeyStoreAsJson(password, key, address);
            var    ksfn     = string.Format(@"e:\{0}.json", ksvc.GenerateUTCFileName(address));

            File.WriteAllText(ksfn, json);
        }
        public static JsonWebKey ToJsonWebKey(
            this EthECKey ecKey)
        {
            var privateKey = ecKey.GetPrivateKeyAsBytes();
            var publicKey  = ecKey.GetPubKey();

            var ecParameters = new ECParameters
            {
                Curve = "SECP256K1",
                D     = privateKey,
                X     = publicKey.Slice(1, 33),
                Y     = publicKey.Slice(33, 65)
            };

            return(new JsonWebKey(ecParameters));
        }
        private static void Main(string[] args)
        {
            //string key = EncryptionUtils.GetRandomBytes(32).ToHex();
            //string key = "0e549dbcccfbd11e255f6037e1e640efaca0e19966ac77a592fdf06d295952a4";
            string key = "7e4670ae70c98d24f3662c172dc510a085578b9ccc717e6c2f4e547edd960a34";

            EthECKey privateKey = new EthECKey(key);

            byte[] privateKeyBytes = privateKey.GetPrivateKeyAsBytes();
            Console.WriteLine("Private key (64 hex digits):\r\n" + privateKeyBytes.ToHex());

            byte[] publicKeyBytes = privateKey.GetPubKeyNoPrefix();
            Console.WriteLine("Public key uncompressed (2 * 64 hex digits):\r\n" + publicKeyBytes.ToHex());

            ECPublicKeyParameters publicKeyParams = new ECKey(privateKeyBytes, true).GetPublicKeyParameters();
            string publicKeyCompressed            = HashUtils.ToHexCompressed(publicKeyParams.Q);

            Console.WriteLine("Public key compressed (65 hex digits):\r\n" + publicKeyCompressed);

            byte[] publicAddress = HashUtils.ComputeRIPEMD160(Utils.GetBytes(publicKeyCompressed));
            Console.WriteLine("Public address (40 hex digits):\r\n" + publicAddress.ToHex());
        }
예제 #10
0
        private void btnGenWallet_Click(object sender, EventArgs e)
        {
            var sprivKey = EthECKey.GenerateKey();

            try
            {
                //var sprivKey = EthECKey.GenerateKey();
                //Console.Write("Private Key: ");
                //string privxKey = Console.ReadLine();
                var    privKey          = new EthECKey(sprivKey.GetPrivateKeyAsBytes().ToHex());
                byte[] pubKeyCompressed = new ECKey(privKey.GetPrivateKeyAsBytes(), true).GetPubKey(true);
                byte[] pubKeyShaRIPE    = RipeMD160(pubKeyCompressed);
                //Console.WriteLine("Private key: {0}", privKey.GetPrivateKey().Substring(4));
                //Console.WriteLine("Public key: {0}", privKey.GetPubKey().ToHex().Substring(2));
                //Console.WriteLine("Public key (compressed): {0}", pubKeyCompressed.ToHex());
                //Console.WriteLine("Public key (RIPEMD160): {0}", pubKeyShaRIPE.ToHex());

                //txtGenWallet.Text = sprivKey.GetPrivateKeyAsBytes().ToHex();
                txtGenWallet.Text = $"Generated Private Key:\n{sprivKey.GetPrivateKeyAsBytes().ToHex()}\nExtracted Public Key:\n{pubKeyCompressed.ToHex()} \nAddress:\n{pubKeyShaRIPE.ToHex()}";

                string data = $"%NEWWALLET%{pubKeyShaRIPE.ToHex()}";

                frmMain.SendToServer(data);

                TransactionWallet.addressSession = pubKeyShaRIPE.ToHex();
                TransactionWallet.pubKeySession  = pubKeyCompressed.ToHex();
                TransactionWallet.privKeySession = sprivKey.GetPrivateKeyAsBytes().ToHex();
                SendToServerGetBalance(pubKeyShaRIPE.ToHex());
                MainForm.LabelTextAddress = pubKeyShaRIPE.ToHex();

                //((Label)frmMain.Controls["lblAccBalance"]).Text = "test";
                //transWal.AddLog(sprivKey.GetPrivateKeyAsBytes().ToHex());
            }
            catch (Exception error)
            {
                txtGenWallet.Text = error.ToString();
            }
        }
예제 #11
0
        public static string GetCoolAddress(EthECKey key, string password)
        {
            var scryptService = new KeyStoreScryptService();
            var scryptResult  = scryptService.EncryptAndGenerateKeyStoreAsJson(password, key.GetPrivateKeyAsBytes(), key.GetPublicAddress().ToLower().Replace("0x", ""), scryptParams);

            var path = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) + "\\" + key.GetPublicAddress().ToLower();

            using (var newfile = File.CreateText(path))
            {
                newfile.Write(scryptResult);
                newfile.Flush();
                return(scryptResult);
            }
        }
예제 #12
0
파일: MainForm.cs 프로젝트: wanpixiaozi/FCS
        public Account CreateAccount(string password, EthECKey key, string path)
        {
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }

            //Create a store service, to encrypt and save the file using the web3 standard
            var service      = new KeyStoreService();
            var encryptedKey = service.EncryptAndGenerateDefaultKeyStoreAsJson(password, key.GetPrivateKeyAsBytes(), key.GetPublicAddress());
            var fileName     = service.GenerateUTCFileName(key.GetPublicAddress());

            //save the File
            using (var newfile = File.CreateText(Path.Combine(path, fileName)))
            {
                newfile.Write(encryptedKey);
                newfile.Flush();
            }

            return(new Account(key.GetPrivateKey()));
        }
예제 #13
0
 private void Initialise(EthECKey key)
 {
     PrivateKey = key.GetPrivateKeyAsBytes();
     Address    = key.GetPublicAddress();
     InitialiseDefaultTransactionManager();
 }