public IEnumerator <IFileInfo> GetEnumerator() { Dictionary <string, IFileInfo> keyNameFiles = new Dictionary <string, IFileInfo>(); List <IFileInfo> encryptedFiles = new List <IFileInfo>(); foreach (IFileInfo fileInfo in _innerDirectoryContents) { if (fileInfo.IsDirectory) { yield return(fileInfo); } else { string extension = Path.GetExtension(fileInfo.Name); switch (extension) { case ".encrypted": encryptedFiles.Add(fileInfo); break; case ".keyName": keyNameFiles[fileInfo.Name] = fileInfo; break; } } } foreach (IFileInfo fileInfo in encryptedFiles) { IFileInfo keyNameFile = keyNameFiles.GetValueOrDefault( Path.ChangeExtension(fileInfo.Name, ".keyName")); if (keyNameFile != null) { yield return(EncryptedFileInfo.FromFileInfo(_kms, fileInfo, keyNameFile)); } } }
public IFileInfo GetFileInfo(string subPath) { return(EncryptedFileInfo.FromFileInfo(_kms, _innerProvider.GetFileInfo(subPath), _innerProvider.GetFileInfo(Path.ChangeExtension(subPath, ".keyName")))); }