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)));
 }