Ejemplo n.º 1
0
        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( );
            }
        }
Ejemplo n.º 2
0
        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( );
            }
        }
Ejemplo n.º 3
0
        public void UpdateQuota( )
        {
            Logger.LogTrace("Update Quota");

            Quota = PageBlobProvider.GetQuota( );
        }