示例#1
0
        private byte[] Encryption(byte[] data, string aesKey)
        {
            var discarded = 0;

            byte[]       iv     = new byte[16];
            SecureRandom random = new SecureRandom();

            random.NextBytes(iv);
            var key = HexEncoding.GetBytes(aesKey, out discarded);

            return(HexEncoding.GetBytes(BitConverter.ToString(iv) + BitConverter.ToString(EncryptAES(iv, key, data)), out discarded));
        }
示例#2
0
        public void UpdateBalanceTask()
        {
            CancellationTokenSource cts = this.cancellation;

            Device.StartTimer(TimeSpan.FromSeconds(30), () =>
            {
                if (cts.IsCancellationRequested)
                {
                    return(false);
                }
                if (BleDevice == null)
                {
                    return(true);
                }
                if (BleDevice.Status != ConnectionStatus.Connected)
                {
                    //Interlocked.Exchange(ref this.cancellation, new CancellationTokenSource()).Cancel();
                    UserDialogs.Instance.Toast("Can't find the badge near you..");
                    Task.Run(async() =>
                    {
                        await Reconnect();
                    });
                    return(true);
                }
                Task.Run(async() =>
                {
                    var badgeSetting = App.Database.BadgeDAO.GetItemsAsync().Result.Last();
                    var aesKey       = badgeSetting.AESKey;
                    var discard      = 0;

                    var hexOfContractBalance = BitConverter.ToString(BitConverter.GetBytes((double)(await EthService.Instance.GetTokenBalance("0x" + badgeSetting.Address, EthService.Instance.HitConCoinContract)) / 1000000000000000000)).Replace("-", string.Empty);
                    var hexOfEthBalance      = BitConverter.ToString(BitConverter.GetBytes((double)(await EthService.Instance.GetBalance("0x" + badgeSetting.Address)) / 1000000000000000000)).Replace("-", string.Empty);
                    //var contractAddress = EthService.Instance.HitConCoinContract.Remove(0, 2);//string.Format("{0:X2}", balance.ToString("X2").Length / 2) + balance.ToString("X2")
                    var contractAddress = EthService.Instance.HitConCoinContract.Remove(0, 2);
                    var plainData       = HexEncoding.GetBytes("01" + string.Format("{0:X2}", contractAddress.Length / 2) + contractAddress +
                                                               "02" + "08" + hexOfContractBalance +
                                                               "01" + string.Format("{0:X2}", badgeSetting.Address.Length / 2) + badgeSetting.Address +
                                                               "02" + "08" + hexOfEthBalance, out discard);
                    byte[] encrypteddata = Encryption(plainData, aesKey);
                    await Badge.Instance.DoWrite(Badge.Instance.CharacteristicUpdateBalance, true, encrypteddata);
                });
                return(true);
            });
        }