Example #1
0
        /// <summary>
        /// Function will add new Neblio Account without Private Key to the VEDLDataContext.Accounts
        /// Account can be used just for the observation.
        /// </summary>
        /// <param name="baseInfo"></param>
        /// <param name="address"></param>
        /// <param name="verifyActive"></param>
        /// <returns></returns>
        public static async Task <bool> AddReadOnlyNeblioAccount(AdminActionBase baseInfo, string address, bool verifyActive = false)
        {
            if (verifyActive)
            {
                var vres = await VerifyAdminAction(baseInfo.Admin, baseInfo.Signature, baseInfo.Message);

                if (vres == null)
                {
                    return(false);
                }
            }

            var acc = new NeblioAccount();
            var res = await acc.LoadAccountWithDummyKey("", address);

            if (!res)
            {
                return(false);
            }
            if (VEDLDataContext.Accounts.TryAdd(address, acc))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #2
0
        /// <summary>
        /// Connect Doge account to the Neblio Account
        /// </summary>
        /// <param name="baseInfo"></param>
        /// <param name="dto"></param>
        /// <param name="verifyActive"></param>
        /// <returns></returns>
        public static async Task <bool> ConnectDogeAccount(AdminActionBase baseInfo, ConnectDogeAccountDto dto, bool verifyActive = false)
        {
            if (verifyActive)
            {
                var vres = await VerifyAdminAction(baseInfo.Admin, baseInfo.Signature, baseInfo.Message);

                if (vres == null)
                {
                    return(false);
                }
            }

            try
            {
                if (!VEDLDataContext.Accounts.TryGetValue(dto.AccountAddress, out var account))
                {
                    return(false);
                }
                if (!VEDLDataContext.DogeAccounts.TryGetValue(dto.dogeAccountAddress, out var doge))
                {
                    return(false);
                }

                await account.ConnectDogeAccount(doge.Address);

                return(true);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Cannot connect doge account {dto.dogeAccountAddress} to the neblio account {dto.AccountAddress}. " + ex.Message);
                return(false);
            }
        }
Example #3
0
        /// <summary>
        /// Function will add new Neblio Account to the VEDLDataContext.Accounts
        /// </summary>
        /// <param name="baseInfo"></param>
        /// <param name="address"></param>
        /// <param name="verifyActive"></param>
        /// <returns></returns>
        public static async Task <bool> AddEmptyNeblioAccount(AdminActionBase baseInfo, string address, bool verifyActive = false)
        {
            if (verifyActive)
            {
                var vres = await VerifyAdminAction(baseInfo.Admin, baseInfo.Signature, baseInfo.Message);

                if (vres == null)
                {
                    return(false);
                }
            }

            if (VEDLDataContext.Accounts.TryAdd(address, new NeblioAccount()))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #4
0
        /// <summary>
        /// Remove Doge Account from the VEDLDataContext.DogeAccounts
        /// </summary>
        /// <param name="baseInfo"></param>
        /// <param name="address"></param>
        /// <param name="verifyActive"></param>
        /// <returns></returns>
        public static async Task <bool> RemoveDogeAccount(AdminActionBase baseInfo, string address, bool verifyActive = false)
        {
            if (verifyActive)
            {
                var vres = await VerifyAdminAction(baseInfo.Admin, baseInfo.Signature, baseInfo.Message);

                if (vres == null)
                {
                    return(false);
                }
            }

            if (VEDLDataContext.DogeAccounts.TryRemove(address, out var acc))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
Example #5
0
        /// <summary>
        /// Decrypt and oad file from VENFT app to account
        /// If account already exists, the data is updates.
        /// If account do not exists, it will create new one and fill with the data
        /// All accounts are stored in VEDLDataContext static class
        /// After upload of the data, the local backup file is created. It is ecnrypted with private key, so key.json file is still required for the restart
        /// </summary>
        /// <param name="baseInfo"></param>
        /// <param name="data"></param>
        /// <param name="verifyActive"></param>
        /// <returns></returns>
        public static async Task <bool> LoadVENFTBackup(AdminActionBase baseInfo, EncryptedBackupDto data, bool verifyActive = false)
        {
            IAdminAction vres = null;

            if (verifyActive)
            {
                vres = await VerifyAdminAction(baseInfo.Admin, baseInfo.Signature, baseInfo.Message);

                if (vres == null)
                {
                    return(false);
                }
            }

            if (vres.Type != AdminActionTypes.ImportVENFTBackup)
            {
                throw new Exception("Provided Wrong action type.");
            }

            if (!VEDLDataContext.Accounts.TryGetValue(baseInfo.Admin, out var admin))
            {
                return(false);
            }

            var dadd = await ECDSAProvider.DecryptMessage(data.eadd, admin.Secret);

            var dbackup = await ECDSAProvider.DecryptMessage(data.edata, admin.Secret);

            var dpass = await ECDSAProvider.DecryptMessage(data.epass, admin.Secret);

            if (!dbackup.Item1 || !dpass.Item1 || !dadd.Item1)
            {
                return(false);
            }
            Console.WriteLine("Loaded correct information for the update from the backup.");
            if (VEDLDataContext.Accounts.TryGetValue(dadd.Item2, out var acc))
            {
                var r = await acc.LoadAccountFromVENFTBackup(dpass.Item2, dbackup.Item2);

                if (r)
                {
                    FileHelpers.WriteTextToFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, dadd.Item2 + "-backup.json"), JsonConvert.SerializeObject(data));
                }
                Console.WriteLine("Account updated from the backup.");
                return(true);
            }
            else
            {
                var account = new NeblioAccount();
                var res     = await account.LoadAccountFromVENFTBackup(dpass.Item2, dbackup.Item2);

                if (res && VEDLDataContext.Accounts.TryAdd(dadd.Item2, new NeblioAccount()))
                {
                    FileHelpers.WriteTextToFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, dadd.Item2 + "-backup.json"), JsonConvert.SerializeObject(data));
                    if (data.asAdmin)
                    {
                        VEDLDataContext.AdminAddresses.Add(dadd.Item2);
                    }
                    Console.WriteLine("Account updated from the backup.");
                    return(true);
                }
            }

            return(false);
        }