Наследование: IKdbWriter
        public async Task CanWrite()
        {
            var database = await Scenarios.LoadDatabase(PasswordDatabasePath, PasswordDatabasePassword, null);
            var writer = new Kdb4Writer(new Kdb4HeaderWriter(),
                      new WinRTCrypto(),
                      new MultiThreadedBouncyCastleCrypto(),
                      new SHA256HasherRT(),
                      new GZipFactoryRT());
         //   .database.var file = await Package.Current.InstalledLocation.GetFileAsync(PasswordDatabasePath);

            try
            {

                var temp = await KnownFolders.DocumentsLibrary.GetFileAsync("file.kdbx");
                await temp.DeleteAsync();
            }catch(Exception e)
            {

            }

            var file = await KnownFolders.DocumentsLibrary.CreateFileAsync("file.kdbx");



            await writer.Write(database, new WinRTFile(file));

            await Scenarios.LoadDatabase(file, PasswordDatabasePassword, null);
        }
        public async Task CanWriteKeePassFiles()
        {
            var queryOptions = new QueryOptions(CommonFileQuery.OrderByName, new[] { ".kdbx" });
            queryOptions.FolderDepth = FolderDepth.Shallow;

            var samples = await Package.Current.InstalledLocation.GetFolderAsync("Samples2");
            var query = samples.CreateFileQueryWithOptions(queryOptions);
            IReadOnlyList<StorageFile> fileList = await query.GetFilesAsync();

            

            var writer = new Kdb4Writer(new Kdb4HeaderWriter(),
                      new WinRTCrypto(),
                      new MultiThreadedBouncyCastleCrypto(),
                      new SHA256HasherRT(),
                      new GZipFactoryRT());

            var listOfFails = new List<object>();

            foreach (var file in fileList)
            {
                PwDatabase database = null;
                string lastFileToTry = file.Name;

                await TryCleanup(lastFileToTry);
                try
                {

                    database = await Scenarios.LoadDatabase(file, "password", null);

                    var newFile = await KnownFolders.DocumentsLibrary.CreateFileAsync(lastFileToTry);
                    await writer.Write(database, new WinRTFile(newFile));
                    await Scenarios.LoadDatabase(newFile, "password", null);
                }
                catch (FormatException e)
                {
                    listOfFails.Add(lastFileToTry);
                }
                catch (Exception e)
                {
                    if(Debugger.IsAttached)
                    {
                        Debugger.Break();
                    }
                    Assert.Fail();
                }
                finally
                {
                    //TryCleanup(lastFileToTry);
                }
            }

            Assert.AreEqual(listOfFails.Count(), 7);
        }