private void OnFileDownloaded(MetaListItemInfo item, string path, byte[] bytes) { var dispatcher = Dispatcher; try { using (var buffer = new MemoryStream(bytes)) { if (string.IsNullOrEmpty(_folder)) { if (!DatabaseVerifier.Verify(dispatcher, buffer)) { return; } var name = item.Title.RemoveKdbx(); var storage = new DatabaseInfo(); storage.SetDatabase(buffer, new DatabaseDetails { Url = path, Name = name, Modified = item.Modified, Type = SourceTypes.Synchronizable, Source = DatabaseUpdater.ONEDRIVE_UPDATER, }); dispatcher.BeginInvoke( this.BackToDBs); } else { var hash = KeyFile.GetKey(buffer); if (hash == null) { dispatcher.BeginInvoke(() => MessageBox.Show( Properties.Resources.InvalidKeyFile, Properties.Resources.KeyFileTitle, MessageBoxButton.OK)); return; } new DatabaseInfo(_folder) .SetKeyFile(hash); dispatcher.BeginInvoke( this.BackToDBPassword); } } } finally { dispatcher.BeginInvoke(() => progBusy.IsBusy = false); } }
private void OnFileDownloaded(byte[] file, string path, string title, string modified) { var dispatcher = Dispatcher; try { using (var buffer = new MemoryStream(file)) { if (string.IsNullOrEmpty(_folder)) { if (!DatabaseVerifier.Verify(dispatcher, buffer)) { return; } var storage = new DatabaseInfo(); storage.SetDatabase(buffer, new DatabaseDetails { Modified = modified, Name = title.RemoveKdbx(), Url = _client.GetUrl(path), Type = SourceTypes.Synchronizable, Source = DatabaseUpdater.WEBDAV_UPDATER, }); } else { var hash = KeyFile.GetKey(buffer); if (hash == null) { dispatcher.BeginInvoke(() => MessageBox.Show( Properties.Resources.InvalidKeyFile, Properties.Resources.KeyFileTitle, MessageBoxButton.OK)); return; } new DatabaseInfo(_folder) .SetKeyFile(hash); } } dispatcher.BeginInvoke( this.BackToDBs); } finally { dispatcher.BeginInvoke(() => progBusy.IsBusy = false); } }
public void GetKeyTest() { File.Delete("foo.key"); var target = new KeyFile(); target.PutKey(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, "foo.key"); Assert.IsTrue(File.Exists("foo.key")); var key = target.GetKey("foo.key"); Assert.IsNotNull(key); Assert.IsTrue(key.SequenceEqual(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 })); File.Delete("foo.key"); }
public async void ContinueFileOpenPicker(FileOpenPickerContinuationEventArgs args) { InitialLocalValues(); if (args.Files != null && args.Files.Count > 0) { var action = (args.ContinuationData["Action"] as string); StorageFile file; switch (action) { case KdbxFormat: { file = args.Files[0]; if (file.Name.EndsWith(KdbxFormat, StringComparison.OrdinalIgnoreCase)) { var info = new DatabaseInfo(); var test = await file.OpenReadAsync(); info.SetDatabase(test.AsStream(), new DatabaseDetails { Source = "FileSystem", Name = file.Name.RemoveKdbx(), Type = SourceTypes.OneTime, }); this.NavigateTo <MainPage>(); } } break; case KeyFormat: file = args.Files[0]; if (file.Name.EndsWith(KeyFormat, StringComparison.OrdinalIgnoreCase)) { var test = await file.OpenReadAsync(); (new DatabaseInfo(_folder)).SetKeyFile(KeyFile.GetKey(test.AsStream())); NavigationService.GoBack(); // this.NavigateTo<MainPage>(); } break; } } }
private void VerifyAndSaveKeyFile( HttpWebRequest request, Dispatcher dispatcher, HttpWebResponse response, MemoryStream stream) { var hash = KeyFile.GetKey(stream); if (hash != null) { SaveKeyFile(hash); return; } // Not a key file, try to extract links if (response.StatusCode != HttpStatusCode.OK || !DetectLinks(stream, request)) { dispatcher.BeginInvoke(() => MessageBox.Show( Resources.InvalidKeyFile, Resources.KeyFileTitle, MessageBoxButton.OK)); } }
public void GetKeyBlankLocationTest() { var target = new KeyFile(); target.GetKey(" \t"); }
public void GetKeyEmptyLocationTest() { var target = new KeyFile(); target.GetKey(""); }