예제 #1
0
        public void HexToBufferConvertTest(int count)
        {
            var expectedBuffer = new byte[count];

            new Random(count).NextBytes(expectedBuffer);
            var expectedHexString = BitConverter.ToString(expectedBuffer).Replace("-", "").ToLowerInvariant();
            var expectedHexBuffer = expectedHexString.ToCharArray();

            // hex string -> buffer
            var buffer = HexConvert.ToBytes(expectedHexString, 0, expectedHexString.Length);

            Assert.Equal(expectedBuffer, buffer);
            // hex buffer -> buffer
            buffer = HexConvert.ToBytes(expectedHexBuffer, 0, expectedHexBuffer.Length);
            Assert.Equal(expectedBuffer, buffer);

            // hex buffer -> buffer (copy)
            buffer = new byte[expectedBuffer.Length];
            HexConvert.Decode(new ArraySegment <char>(expectedHexBuffer, 0, expectedHexBuffer.Length), new ArraySegment <byte>(buffer));
            Assert.Equal(expectedBuffer, buffer);

            // hex buffer -> buffer (copy)
            buffer = new byte[expectedBuffer.Length];
            HexConvert.Decode(expectedHexString, 0, expectedHexBuffer.Length, new ArraySegment <byte>(buffer));
            Assert.Equal(expectedBuffer, buffer);
        }
예제 #2
0
        public void ToBytesByteArrayPartialTest()
        {
            var baseNCharBytes = "999c99".ToCharArray().Select(ch => (byte)ch).ToArray();
            var expected       = new byte[] { 156 };

            var actual = HexConvert.ToBytes(baseNCharBytes, 2, baseNCharBytes.Length - 4);

            Assert.Equal(expected, actual);
        }
예제 #3
0
        public void ToByteStringTest()
        {
            var baseNString = "9c";
            var expected    = new byte[] { 156 };

            var actual = HexConvert.ToBytes(baseNString);

            Assert.Equal(expected, actual);
        }
예제 #4
0
        public void ToBytesByteArrayTest()
        {
            var baseNCharBytes = "9c".ToCharArray().Select(ch => (byte)ch).ToArray();
            var expected       = new byte[] { 156 };

            var actual = HexConvert.ToBytes(baseNCharBytes);

            Assert.Equal(expected, actual);
        }
예제 #5
0
        public void ToBytesCharArrayPartialTest()
        {
            var baseNChars = "999c99".ToCharArray();
            var expected   = new byte[] { 156 };

            var actual = HexConvert.ToBytes(baseNChars, 2, baseNChars.Length - 4);

            Assert.Equal(expected, actual);
        }
예제 #6
0
        public void ToBytesCharArrayTest()
        {
            var baseNChars = "9c".ToCharArray();
            var expected   = new byte[] { 156 };

            var actual = HexConvert.ToBytes(baseNChars);

            Assert.Equal(expected, actual);
        }
예제 #7
0
        public void ToBytesStringPartialTest()
        {
            var baseNString = "999c99";
            var expected    = new byte[] { 156 };

            var actual = HexConvert.ToBytes(baseNString, 2, baseNString.Length - 4);

            Assert.Equal(expected, actual);
        }
예제 #8
0
        public void HexConvert_FromBytes_ToBytes_GoodResult()
        {
            //Arrange
            var hash       = Hash.ComputeSha256(new byte[0]);
            var hashstring = HexConvert.FromBytes(hash);
            var str        = hashstring;

            //Act

            //Assert
            Assert.AreEqual(hash, HexConvert.ToBytes(str));
        }
        private void ButtonToPay_Click(object sender, RoutedEventArgs e)
        {
            if (int.Parse(TextBoxAmountAct.Text) > Amount)
            {
                MessageBox.Show("Error!", "You haven't avaliable ACT for makking transaction.", MessageBoxButton.OK,
                                MessageBoxImage.Error);
                return;
            }

            var recipientUserHash = HexConvert.ToBytes(TextBoxRecipientId.Text);

            var inEntry = new InEntry()
            {
                PublicKey = _userCoinPocket.KeyPair.PublicKey,
                Amount    = Amount
            };

            var outEntry = new List <OutEntry>(15)
            {
                new OutEntry()
                {
                    RecipientHash = recipientUserHash,
                    Value         = int.Parse(TextBoxAmountAct.Text)
                },
                new OutEntry()
                {
                    RecipientHash = _userCoinPocket.KeyPair.PublicKey,
                    Value         = Amount - int.Parse(TextBoxAmountAct.Text)
                }
            };

            var transaction = new Transaction()
            {
                Id        = DataManager.UploadBlockchainDictionary().Last().Value.Transaction.Id + 1,
                InEntries = new List <InEntry>()
                {
                    inEntry
                },
                OutEntries = outEntry,
                Signature  = EccService.Sign(_userCoinPocket.KeyPair.PublicKey, _userCoinPocket.KeyPair.PrivateKey,
                                             _userCoinPocket.KeyPair.PublicKey),
                Timestamp = DateTime.Now
            };

            var message = BlockchainUtil.SerializeTransaction(transaction);

            var senderUdpClient = new UdpClient(_userCoinPocket.ReceivePort);

            try
            {
                senderUdpClient.Send(
                    message,
                    message.Length,
                    "127.0.0.1",
                    9999);
            }

            catch
            {
                throw new Exception();
            }

            finally
            {
                senderUdpClient.Close();
            }

            var        receiver = new UdpClient(_userCoinPocket.ReceivePort);
            IPEndPoint remoteIp = null;
            var        data     = receiver.Receive(ref remoteIp);
            var        chain    = MessagePackSerializer.Deserialize <KeyValuePair <string, Block> >(data);
            var        json     = JsonConvert.SerializeObject(chain, Formatting.Indented);

            GroupBoxStatus.Header = "You trancsaction has been added";

            var blockchain = DataManager.UploadBlockchainDictionary();

            TextBlockAct.Text = Executor
                                .GetCashRec(blockchain, _userCoinPocket.KeyPair.PublicKey, blockchain.Last().Key).ToString();
            TextBlockStatus.Text = json;
            receiver.Close();
        }