public static Dictionary <string, object> DecryptSEBSettings(byte[] sebData, bool forEditing, ref string sebFilePassword, ref bool passwordIsHash, ref X509Certificate2 sebFileCertificateRef)
{
byte[] numArray1 = GZipByte.Decompress(sebData);
if (numArray1 != null)
{
sebData = numArray1;
}
byte[] numArray2 = sebData.Clone() as byte[];
string prefixStringFromData = SEBConfigFileManager.GetPrefixStringFromData(ref sebData);
if (prefixStringFromData.CompareTo("pkhs") == 0)
{
sebData = SEBConfigFileManager.DecryptDataWithPublicKeyHashPrefix(sebData, forEditing, ref sebFileCertificateRef);
if (sebData == null)
{
return((Dictionary <string, object>)null);
}
prefixStringFromData = SEBConfigFileManager.GetPrefixStringFromData(ref sebData);
}
if (prefixStringFromData.CompareTo("pswd") == 0)
{
string passwordRequestText = SEBUIStrings.enterPassword;
int num1 = 5;
string passphrase;
byte[] numArray3;
do
{
--num1;
passphrase = ThreadedDialog.ShowPasswordDialogForm(SEBUIStrings.loadingSettings, passwordRequestText);
if (passphrase == null)
{
return((Dictionary <string, object>)null);
}
numArray3 = SEBProtectionController.DecryptDataWithPassword(sebData, passphrase);
passwordRequestText = SEBUIStrings.enterPasswordAgain;
}while (numArray3 == null && num1 > 0);
if (numArray3 == null)
{
int num2 = (int)SEBMessageBox.Show(SEBUIStrings.decryptingSettingsFailed, SEBUIStrings.decryptingSettingsFailedReason, MessageBoxIcon.Hand, MessageBoxButtons.OK, forEditing);
return((Dictionary <string, object>)null);
}
sebData = numArray3;
if (forEditing)
{
sebFilePassword = passphrase;
}
}
else
{
if (prefixStringFromData.CompareTo("pwcc") == 0)
{
return(SEBConfigFileManager.DecryptDataWithPasswordForConfiguringClient(sebData, forEditing, ref sebFilePassword, ref passwordIsHash));
}
if (prefixStringFromData.CompareTo("plnd") != 0)
{
if (prefixStringFromData.CompareTo("<?xm") == 0)
{
sebData = numArray2;
}
else
{
int num = (int)SEBMessageBox.Show(SEBUIStrings.settingsNotUsable, SEBUIStrings.settingsNotUsableReason, MessageBoxIcon.Hand, MessageBoxButtons.OK, forEditing);
return((Dictionary <string, object>)null);
}
}
}
if (prefixStringFromData.CompareTo("<?xm") != 0)
{
sebData = GZipByte.Decompress(sebData);
}
Dictionary <string, object> dictFromConfigData = SEBConfigFileManager.GetPreferencesDictFromConfigData(sebData, forEditing);
if (dictFromConfigData == null)
{
return((Dictionary <string, object>)null);
}
dictFromConfigData["sebConfigPurpose"] = (object)0;
return(dictFromConfigData);
}