Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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");
        }
Ejemplo n.º 4
0
        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;
                }
            }
        }
Ejemplo n.º 5
0
        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));
            }
        }
Ejemplo n.º 6
0
        public void GetKeyBlankLocationTest()
        {
            var target = new KeyFile();

            target.GetKey(" \t");
        }
Ejemplo n.º 7
0
        public void GetKeyEmptyLocationTest()
        {
            var target = new KeyFile();

            target.GetKey("");
        }