public async Task <bool> Update(WalletAggregate wallet, SecureString password) { if (wallet == null) { throw new ArgumentNullException(nameof(wallet)); } if (password == null) { throw new ArgumentNullException(nameof(password)); } var record = await _currentDbContext.Wallets.FirstOrDefaultAsync(w => w.Name == wallet.Name).ConfigureAwait(false); if (record == null) { throw new DataWalletException(ErrorCodes.DoesntExist); } var walletJson = ToJson(wallet); record.SerializedContent = Protect(walletJson, password); await _currentDbContext.SaveChangesAsync().ConfigureAwait(false); return(true); }
public async Task <bool> Add(WalletAggregate wallet, SecureString password) { if (wallet == null) { throw new ArgumentNullException(nameof(wallet)); } if (password == null) { throw new ArgumentNullException(nameof(password)); } var exists = await _currentDbContext.Wallets.AnyAsync(w => w.Name == wallet.Name).ConfigureAwait(false); if (exists) { throw new DataWalletException(ErrorCodes.AlreadyExists); } var walletJson = ToJson(wallet); var record = new Wallet(wallet.Name, Protect(walletJson, password)); _currentDbContext.Wallets.Add(record); await _currentDbContext.SaveChangesAsync().ConfigureAwait(false); return(true); }
private void CreateWallet(object sender, EventArgs e) { if (_viewModel.Password == null || string.IsNullOrWhiteSpace(_viewModel.WalletName)) { return; } var record = new WalletAggregate { Name = _viewModel.WalletName }; _viewModel.ToggleLoading(); _walletRepository.Add(record, _viewModel.Password).ContinueWith((r) => { try { var b = r.Result; } catch { _viewModel.DisplayMessage("Error", "An error occured while trying to create the wallet"); } finally { _viewModel.ToggleLoading(); } }); }
public void SetAuthenticatedWallet(WalletAggregate wallet) { if (wallet == null) { throw new ArgumentNullException(nameof(wallet)); } _authenticatedWallet = wallet; }
private static JObject ToJson(WalletAggregate wallet) { var result = new JObject(); result.Add("name", wallet.Name); result.Add("network", (int)wallet.Network); if (wallet.Addresses != null) { var arr = new JArray(); foreach (var addr in wallet.Addresses) { arr.Add(addr.GetJson()); } result.Add("addrs", arr); } return(result); }
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); var serviceCollection = new ServiceCollection(); serviceCollection.AddCore(); serviceCollection.AddSqlite("Data Source=genesis.db"); serviceCollection.AddTransient <HomePage>(); serviceCollection.AddTransient <CreateWalletPage>(); serviceCollection.AddTransient <AuthenticateWalletPage>(); serviceCollection.AddTransient <WalletPage>(); serviceCollection.AddTransient <BlockChainInformation>(); serviceCollection.AddTransient <WalletInformation>(); serviceCollection.AddTransient <MemoryPoolInformation>(); serviceCollection.AddTransient <SmartContractPage>(); serviceCollection.AddTransient <HomePageViewModel>(); serviceCollection.AddTransient <CreateWalletViewModel>(); serviceCollection.AddTransient <WalletPageViewModel>(); serviceCollection.AddTransient <WalletInformationViewModel>(); serviceCollection.AddTransient <IWalletHelper, WalletHelper>(); serviceCollection.AddSingleton <IDialogCoordinator>(DialogCoordinator.Instance); var serviceProvider = serviceCollection.BuildServiceProvider(); using (var serviceScope = serviceProvider.GetRequiredService <IServiceScopeFactory>().CreateScope()) { var currentDbContext = serviceScope.ServiceProvider.GetService <CurrentDbContext>(); currentDbContext.Database.EnsureCreated(); var genesisWalletAggregate = new WalletAggregate { Name = "genesis", Addresses = new List <WalletAggregateAddress> { new WalletAggregateAddress { Hash = "12M1Wng2vRCT7z3uZcjDYb5i9bJDx4ZEKyVMhEq8", Network = Networks.MainNet, Key = Key.Deserialize(new BigInteger("66661394595692466950200829442443674598224300882267065208709422638481412972116609477112206002430829808784107536250360432119209033266013484787698545014625057"), new BigInteger("43102461949956883352376427470284148089747996528740865531180015053863743793176")) } } }; var clientWalletAggregate = new WalletAggregate { Name = "client", Addresses = new List <WalletAggregateAddress> { new WalletAggregateAddress { Hash = "12K5LnVWKCu9QGyB39uGAgVSAfBs33PKS96HSL93", Network = Networks.MainNet, Key = Key.Deserialize(new BigInteger("55821205064713516294703127430400616105539980828115464481216494737343536494861392791366661233462519462101585894103124424523076975002332234845254777599135465"), new BigInteger("12865140029298721655663530581243123640092469699773563307406591049514067995825")) } } }; var repo = serviceProvider.GetService <IWalletRepository>(); var fact = serviceProvider.GetService <IBlockChainFactory>(); repo.Add(clientWalletAggregate, "password".ToSecureString()); repo.Add(genesisWalletAggregate, "zvhab8rijwl7vwma".ToSecureString()); } MainWin mainWindow = ActivatorUtilities.CreateInstance <MainWin>(serviceProvider); mainWindow.Show(); }