Exemple #1
0
        private static Transaction AddTransaction(UInt16 Index)
        {
            Console.Clear();
            Console.Write("Transaction Data: ");
            string Data = Console.ReadLine();

            return(_chain.AddTransaction(config, Index, "Network", "Network", Data));
        }
Exemple #2
0
        public string GetKey()
        {
            var           rsa        = new RSACryptoServiceProvider(1024);
            RSAParameters parameters = rsa.ExportParameters(true);
            Key           key        = new Key(HashGenerator.CalculateHash(Convert.ToBase64String(parameters.D)));

            key.PublicKey =
                HashGenerator.CalculateHash(key.PrivateKey + parameters.D + parameters.DP + parameters.DQ +
                                            parameters.Exponent);
            Transaction tx = new Transaction(TestWalletAddress, key.PublicKey, 50);

            tx.SignTransaction(new Key()
            {
                PrivateKey = TestKey, PublicKey = TestWalletAddress
            });
            KevCoin.AddTransaction(tx);
            // KevCoin.MinePendingTransactions(TestWalletAddress);
            return($"Private key: {key.PrivateKey}" +
                   $"\nPublic key: {key.PublicKey}" +
                   $"\nYour free reward of 50 coins is added to pending transactions.");
        }
Exemple #3
0
        public IActionResult AddTransaction([FromBody] AddTransactionViewModel model)
        {
            try
            {
                var transaction = _blockchain.AddTransaction(model.Sender, model.Receiver, model.Amount);

                return(Ok(transaction));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
Exemple #4
0
        static void Main(string[] args)
        {
            Blockchain blockchain = new Blockchain();

            blockchain.AddTransaction(0, 200, 866m);
            Console.WriteLine(blockchain.MineFirstPendingTransaction(2));
            var    hash       = blockchain.Chain[1].Transactions[0].Hash;
            string hashString = string.Empty;

            foreach (var currByte in hash)
            {
                hashString.Insert(hashString.Length, ((int)currByte).ToString("X4"));
            }
            Console.WriteLine(hashString);
        }
Exemple #5
0
        public async Task <IActionResult> CastVote(UserSignedVoteDTO userSignedVoteDto)
        {
            var user = await _userManager.FindByNameAsync(userSignedVoteDto.UserName);

            // var result = await _userManager.VerifyUserTokenAsync(user, "EVoting", "Vote", userSignedVoteDto.Token);
            // if (!result) return Unauthorized();
            var userDetail = await _context.UserDetails.FirstOrDefaultAsync(x => x.UserId == user.Id);

            var voteToCheck = new Vote()
            {
                EncryptedIV   = userSignedVoteDto.Vote.EncryptedIV,
                EncryptedKey  = userSignedVoteDto.Vote.EncryptedKey,
                EncryptedVote = userSignedVoteDto.Vote.EncryptedVote,
                VoterId       = userSignedVoteDto.Vote.VoterId
            };
            var userSignatureCheck = CryptoService.VerifySignature(Converters.ConvertToByteArray(voteToCheck),
                                                                   userSignedVoteDto.Signature, userDetail.PublicKey);

            if (!userSignatureCheck)
            {
                return(Unauthorized());
            }
            var authPrivateKey    = _authService.GetPrivateKey();
            var authSignedVoteDto = new AuthSignedVoteDTO()
            {
                Vote      = userSignedVoteDto.Vote,
                Signature = CryptoService.SignItem(Converters.ConvertToByteArray(userSignedVoteDto.Vote), authPrivateKey)
            };

            //////////////////////// NODE PART TODO: Move to real nodes ////////////////////////////////////


            var authPublicKey      = _authService.GetPublicKey();
            var authSignatureCheck = CryptoService.VerifySignature(Converters.ConvertToByteArray(authSignedVoteDto.Vote)
                                                                   , authSignedVoteDto.Signature, authPublicKey);

            if (!authSignatureCheck)
            {
                return(Unauthorized());
            }
            var nodePrivateKey = _nodeService.GetPrivateKey();

            var nodeSignature = CryptoService.SignItem(Converters.ConvertToByteArray(authSignedVoteDto.Vote), nodePrivateKey);

            var transaction = new Transaction()
            {
                EncryptedIV   = authSignedVoteDto.Vote.EncryptedIV,
                EncryptedKey  = authSignedVoteDto.Vote.EncryptedKey,
                EncryptedVote = authSignedVoteDto.Vote.EncryptedVote,
                VoterId       = authSignedVoteDto.Vote.VoterId,
                Signature     = nodeSignature
            };

            var nodePublicKey = _nodeService.GetPublicKey();

            _blockchain.AddPublicKey("node", nodePublicKey);

            var transactionAddCheck = _blockchain.AddTransaction(transaction);

            if (!transactionAddCheck)
            {
                return(Unauthorized());
            }
            _blockchain.MineBlock();
            return(Ok(new BaseResponseDTO()
            {
                Success = true,
                Message = "Vote registered succesfully."
            }));
        }