Пример #1
0
 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}");
                     }
                 }
             }
         }
     }
 }
Пример #2
0
        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);
        }