FileStore.FileStore.DecryptData C# (CSharp) Method

DecryptData() private method

private DecryptData ( byte data ) : byte[]
data byte
return byte[]
        private byte[] DecryptData(byte[] data)
        {
            if(_useDPAPI) {
                try {
                    return ProtectedData.Unprotect(data, null, DataProtectionScope.CurrentUser);
                }
                catch(Exception e) {
                    Debug.ReportError("Failed to decrypt data using DPAPI. Exception: {0}", e.Message);
                    return new byte[0];
                }
            }
            else {
                RijndaelManaged aes = null;
                MemoryStream inputStream = null;
                CryptoStream decStream = null;

                try {
                    InitEncryptionAlgorithm();

                    inputStream = new MemoryStream(data);
                    aes = new RijndaelManaged();
                    aes.IV = EncryptionIV;
                    aes.Key = _encryptionKey;
                    ICryptoTransform decryptor = aes.CreateDecryptor(_encryptionKey, EncryptionIV);

                    // decrypt
                    decStream = new CryptoStream(inputStream, decryptor, CryptoStreamMode.Read);

                    byte[] buffer = new byte[data.Length];
                    int length = decStream.Read(buffer, 0, data.Length);

                    if(length == 0) {
                        return new byte[0];
                    }
                    else {
                        byte[] decryptedData = new byte[data.Length];
                        buffer.CopyTo(decryptedData, 0);

                        return buffer;
                    }
                }
                catch(Exception e) {
                    Debug.ReportError("Failed to decrypt data using AES. Exception: {0}", e.Message);
                    return null;
                }
                finally {
                    if(aes != null) {
                        aes.Clear();
                    }
                    if(decStream != null) {
                        decStream.Close();
                    }
                    if(inputStream != null) {
                        inputStream.Close();
                    }
                }
            }
        }