private void tsEncryptionLabel_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(FileName)) { if (Program.InfoMsg("To set the encryption mode for a new file you have to save it first. Save now?", true) == DialogResult.Yes) { SaveText(false, false); } } else { var GS = AppSettings.GlobalSettings(); if (GS == null) { GS = new AppSettings() { Restrictions = new Restrictions() }; } using (var dlgModes = new frmCryptoModeSelect(Settings, GS.Restrictions.AllowedModes, CurrentFile.AllModes)) { if (dlgModes.ShowDialog() == DialogResult.OK) { if (dlgModes.Modes == 0) { Program.ErrorMsg("Please select at least one mode of encryption"); } else { var Params = new Dictionary <CryptoMode, object>(); if (dlgModes.Modes.HasFlag(CryptoMode.Password)) { Params[CryptoMode.Password] = dlgModes.Password; } if (dlgModes.Modes.HasFlag(CryptoMode.Keyfile)) { Params[CryptoMode.Keyfile] = dlgModes.Keyfile; } if (dlgModes.Modes.HasFlag(CryptoMode.RSA)) { Params[CryptoMode.RSA] = dlgModes.RsaKey.Key; } try { CurrentFile = Encryption.Encrypt(dlgModes.Modes, Encoding.UTF8.GetBytes(tbEditor.Text), Params); if (Program.InfoMsg("The cryptographic modes were changed. Save the file now?", true) == DialogResult.Yes) { SaveText(false, false); } } catch (Exception ex) { Program.ErrorMsg($"Unable to encrypt your file.\r\n{ex.Message}"); } } } } } }
private bool SaveText(bool SaveAs, bool AskToSave) { if (AskToSave) { var dlgresult = Program.AlertMsg("Save changes to the current file?", true, true); if (dlgresult == DialogResult.No) { return(true); } if (dlgresult == DialogResult.Cancel) { return(false); } } if ((!string.IsNullOrEmpty(FileName) && !SaveAs) || dlgSave.ShowDialog() == DialogResult.OK) { if (CurrentFile == null) { var GS = AppSettings.GlobalSettings(); if (GS == null) { GS = new AppSettings() { Restrictions = new Restrictions() }; } using (var dlgCrypt = new frmCryptoModeSelect(Settings, GS.Restrictions.AllowedModes)) { if (dlgCrypt.ShowDialog() == DialogResult.OK) { if (dlgCrypt.Modes == 0 && GS.Restrictions.AutoRsaKeys.Length == 0) { Program.ErrorMsg("Please select at least one mode of encryption"); return(false); } var Params = new Dictionary <CryptoMode, object>(); if (dlgCrypt.Modes.HasFlag(CryptoMode.Password)) { Params[CryptoMode.Password] = dlgCrypt.Password; } if (dlgCrypt.Modes.HasFlag(CryptoMode.Keyfile)) { Params[CryptoMode.Keyfile] = dlgCrypt.Keyfile; } if (dlgCrypt.Modes.HasFlag(CryptoMode.RSA) || GS.Restrictions.AutoRsaKeys.Length > 0) { var RsaList = new List <RSAParameters>(GS.Restrictions.AutoRsaKeys.Select(m => m.Key)); if (dlgCrypt.Modes.HasFlag(CryptoMode.RSA)) { RsaList.Add(dlgCrypt.RsaKey.Key); } Params[CryptoMode.RSA] = RsaList; } try { CurrentFile = Encryption.Encrypt(dlgCrypt.Modes, Encoding.UTF8.GetBytes(tbEditor.Text), Params); FileParams = Params; } catch (Exception ex) { Program.ErrorMsg($"Unable to encrypt your file.\r\n{ex.Message}"); return(false); } } else { return(false); } } } else { Encryption.ReEncrypt(CurrentFile, Encoding.UTF8.GetBytes(tbEditor.Text)); } if (SaveAs || string.IsNullOrEmpty(FileName)) { FileName = dlgSave.FileName; } try { File.WriteAllText(FileName, CurrentFile.ToXML()); } catch (Exception ex) { Program.ErrorMsg($"Unable to save your file.\r\n{ex.Message}"); return(false); } //Saved the current file BaseContent = tbEditor.Text; UpdateStatus(); return(true); } return(false); }