public static byte[] EncryptSEBSettingsWithCredentials(string settingsPassword, bool passwordIsHash, X509Certificate2 certificateRef, SEBSettings.sebConfigPurposes configPurpose, bool forEditing)
{
byte[] bytes = Encoding.UTF8.GetBytes(Plist.writeXml((object)SEBSettings.settingsCurrent).Replace("<array />", "<array></array>").Replace("<dict />", "<dict></dict>").Replace("<data />", "<data></data>"));
string password = (string)null;
if (string.IsNullOrEmpty(settingsPassword) && configPurpose == SEBSettings.sebConfigPurposes.sebConfigPurposeConfiguringClient)
{
password = "";
}
else if (string.IsNullOrEmpty(settingsPassword) && certificateRef == null)
{
if (SEBMessageBox.Show(SEBUIStrings.noEncryptionChosen, SEBUIStrings.noEncryptionChosenSaveUnencrypted, MessageBoxIcon.Question, MessageBoxButtons.YesNo, forEditing) == DialogResult.Yes)
{
return(bytes);
}
return((byte[])null);
}
byte[] data = GZipByte.Compress(bytes);
if (!string.IsNullOrEmpty(settingsPassword))
{
password = settingsPassword;
}
byte[] numArray1;
if (password != null)
{
numArray1 = SEBConfigFileManager.EncryptDataUsingPassword(data, password, passwordIsHash, configPurpose);
}
else
{
byte[] numArray2 = new byte[data.Length + 4];
Buffer.BlockCopy((Array)Encoding.UTF8.GetBytes("plnd"), 0, (Array)numArray2, 0, 4);
Buffer.BlockCopy((Array)data, 0, (Array)numArray2, 4, data.Length);
numArray1 = (byte[])numArray2.Clone();
}
if (certificateRef != null)
{
numArray1 = SEBConfigFileManager.EncryptDataUsingIdentity(numArray1, certificateRef);
}
return(GZipByte.Compress(numArray1));
}