public async static Task<PwDatabase> LoadDatabase(IStorageFile database, string password, string keyPath) { var userKeys = new List<IUserKey>(); var hasher = new SHA256HasherRT(); if (!string.IsNullOrEmpty(password)) { userKeys.Add(await KcpPassword.Create(password, hasher)); } if (!string.IsNullOrEmpty(keyPath)) { var keyfile = await Helpers.Helpers.GetKeyFile(keyPath); userKeys.Add(await KcpKeyFile.Create(new WinRTFile(keyfile), hasher)); } var readerFactory = new KdbReaderFactory( new WinRTCrypto(), new MultiThreadedBouncyCastleCrypto(), new SHA256HasherRT(), new GZipFactoryRT()); var file = await FileIO.ReadBufferAsync(database); MemoryStream kdbDataReader = new MemoryStream(file.AsBytes()); return await readerFactory.LoadAsync(kdbDataReader, userKeys); }
public async Task LoadPwDatabase(IStorageFile pwDatabaseFile, IList<IUserKey> userKeys, IProgress<double> percentComplete) { StorageFile = pwDatabaseFile; var factory = new KdbReaderFactory(_encryptionEngine, _keyTransformer, _hasher, _gzipStreamFactory); var file = await pwDatabaseFile.OpenAsync(FileAccessMode.Read); Stream kdbDataReader = file.AsStream(); this.PwDatabase = await factory.LoadAsync(kdbDataReader, userKeys, percentComplete); }