internal static IEnumerable <Account> DecryptAccounts(R.EncryptedEntry entry, Dictionary <string, byte[]> keys) { // Important: key lookup must be case insensitive! There's a case mismatch in the parsed JSON. if (!keys.TryGetValue(entry.Id.ToLower(), out var key)) { return(Array.Empty <Account>()); } var folder = DecryptVaultFolder(entry, key); return(folder.Items .Where(x => !x.IsDeleted) .Select(x => new Account(id: x.Id ?? "", name: x.Name ?? "", username: x.Username ?? "", password: x.Password ?? "", url: x.Url ?? "", note: x.Note ?? "", folder: folder.Name ?? ""))); }
internal static R.VaultFolder DecryptVaultFolder(R.EncryptedEntry entry, byte[] key) { return(Deserialize <R.VaultFolder>(Decrypt(entry.EncryptedBundle, key))); }
internal static R.Keyset DecryptKeyset(R.EncryptedEntry entry, byte[] key) { return(Deserialize <R.Keyset>(Decrypt(entry.EncryptedBundle, key))); }