public async Task DownloadRemoteBlock( ) { if (!IsModified) { byte [] downloadedData = await PageBlobProvider.DownloadFile(RemoteFileName); if (Metadata.IsEncrypted) { using Aes aes = Aes.Create( ); aes.Key = Metadata.AesKey; aes.IV = Metadata.AesIV; aes.Mode = CipherMode.CBC; aes.Padding = PaddingMode.PKCS7; using ICryptoTransform decryptor = aes.CreateDecryptor( ); Content = decryptor.TransformFinalBlock( downloadedData, 0, downloadedData.Length); } else { Content = downloadedData; } } else { throw new InvalidOperationException( ); } }
public async Task UpdateRemoteBlock( ) { if (IsModified) { byte [] dataToUpload = null; if (Metadata.IsEncrypted) { using Aes aes = Aes.Create( ); aes.Mode = CipherMode.CBC; aes.Padding = PaddingMode.PKCS7; using ICryptoTransform encryptor = aes.CreateEncryptor( ); dataToUpload = encryptor.TransformFinalBlock(Content, 0, Content.Length); Metadata.AesKey = aes.Key; Metadata.AesIV = aes.IV; } else { lock ( Content ) { dataToUpload = ( byte [] )Content.Clone( ); } } await PageBlobProvider.UploadFile(RemoteFileName, dataToUpload); IsModified = false; Metadata.RemoteFileName = RemoteFileName; CloudFileSystem.Current.FlushMetadata( ); } }
public void UpdateQuota( ) { Logger.LogTrace("Update Quota"); Quota = PageBlobProvider.GetQuota( ); }