Changeset 1157 for trunk/CrypPlugins/DES


Ignore:
Timestamp:
Feb 21, 2010, 3:11:18 AM (12 years ago)
Author:
Arno Wacker
Message:

AnotherEditor

  • Yet another Invoke during a single log message changed into BeginInvoke

IControlEncryption

  • Removed obsolete signature

CryptoolStream

  • Added a try-catch when deleting a file. An exception occurs when the file is locked. Clearly, in this case there not much one can do.. the file remains on the disk. Waiting for CStream...

AES, DES, SDES

  • Cleanup of IControl interface and general code cleanup
  • Fixed compatibility with KeySearcher - now all three should work again. (However, kind of slow)

StreamToStringConverter

  • Updated license

Sample update

  • KeySearcher-Sample-DES.cte, KeySearcher-Sample-DES.cte, KeySearcher-Sample-SDES.cte: Compatibility with IControl changes and slight rearrangement.
  • P2P-DES-BruteforceManger.cte, P2P-DES-BruteforceWorker.cte: Compatibility

New binaries

  • CrypWin.exe
  • AnotherEditor.dll
Location:
trunk/CrypPlugins/DES
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/DES/DES.cs

    r1121 r1157  
    1717namespace Cryptool.Plugins.Cryptography.Encryption
    1818{
     19    [Author("Dr. Arno Wacker", "arno.wacker@cryptool.org", "Uni Duisburg", "http://www.uni-duisburg-essen.de")]
    1920    [PluginInfo(false, "DES", "Data Encryption Standard", "DES/DetailedDescription/Description.xaml", "DES/icon.png", "DES/Images/encrypt.png", "DES/Images/decrypt.png")]
    2021    [EncryptionType(EncryptionType.SymmetricBlock)]
     
    3334        #endregion
    3435
     36
     37        #region Initialisation
     38       
    3539        public DES()
    3640        {
    3741            this.settings = new DESSettings();
    38             this.settings.OnPluginStatusChanged += settings_OnPluginStatusChanged;
    39         }
    40 
    41         void settings_OnPluginStatusChanged(IPlugin sender, StatusEventArgs args)
    42         {
    43             if(OnPluginStatusChanged != null)OnPluginStatusChanged(this, args);
    44         }
    45 
    46         public ISettings Settings
    47         {
    48             get { return this.settings; }
    49             set { this.settings = (DESSettings)value; }
    50         }
     42        }
     43
     44
     45       
     46
     47        #endregion
     48
     49        #region External connection properties
     50
     51        [PropertyInfo(Direction.ControlSlave, "DES Slave for Cryptanalysis", "Direct access to the DES component for cryptanalysis.", "", DisplayLevel.Beginner)]
     52        public IControlEncryption ControlSlave
     53        {
     54            get
     55            {
     56                if (controlSlave == null)
     57                    controlSlave = new DESControl(this);
     58                return controlSlave;
     59            }
     60        }
     61
     62        private IControlCubeAttack desSlave;
     63        [PropertyInfo(Direction.ControlSlave, "DES Slave for cube attack", "Direct access to the DES component for usage with the cube attack plugin.", "", DisplayLevel.Beginner)]
     64        public IControlCubeAttack DESSlave
     65        {
     66            get
     67            {
     68                if (desSlave == null)
     69                    desSlave = new CubeAttackControl(this);
     70                return desSlave;
     71            }
     72        }
     73
    5174
    5275        [PropertyInfo(Direction.InputData, "Input", "Data to be encrypted or decrypted", null, true, false, DisplayLevel.Beginner, QuickWatchFormat.Hex, null)]
     
    7295        }
    7396
    74         [PropertyInfo(Direction.InputData, "Key", "Must be 8 bytes.", null, true, false, DisplayLevel.Beginner, QuickWatchFormat.Hex, null)]
     97        [PropertyInfo(Direction.InputData, "Key", "The key for encryption7decryption. It must be exactly 8 bytes (64 Bits).", null, true, false, DisplayLevel.Beginner, QuickWatchFormat.Hex, null)]
    7598        public byte[] InputKey
    7699        {
     
    83106        }
    84107
    85         [PropertyInfo(Direction.InputData, "IV", "IV to be used in chaining modes, must be the same as the Blocksize in bytes (8 bytes).", null, true, false, DisplayLevel.Beginner, QuickWatchFormat.Hex, null)]
     108        [PropertyInfo(Direction.InputData, "IV", "IV to be used in chaining modes, must be the same as the Blocksize in bytes (8 bytes).", null, false, false, DisplayLevel.Beginner, QuickWatchFormat.Hex, null)]
    86109        public byte[] InputIV
    87110        {
     
    116139        }
    117140
     141        #endregion       
     142
     143        #region Public IPlugin Member
     144
     145        #region Events
     146        public event StatusChangedEventHandler OnPluginStatusChanged;
     147        public event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
     148        public event PluginProgressChangedEventHandler OnPluginProgressChanged;
     149        #endregion
     150
     151        public ISettings Settings
     152        {
     153            get { return this.settings; }
     154            set { this.settings = (DESSettings)value; }
     155        }
     156
     157        public UserControl Presentation
     158        {
     159            get { return null; }
     160        }
     161
     162        public UserControl QuickWatchPresentation
     163        {
     164            get { return null; }
     165        }
     166
     167        public void Initialize()
     168        {
     169        }
     170
     171        public void Execute()
     172        {
     173            process(settings.Action);
     174        }
     175
     176
     177        public void Pause()
     178        {
     179
     180        }
     181
     182        public void Stop()
     183        {
     184            this.stop = true;
     185        }
     186
     187        public void Dispose()
     188        {
     189            try
     190            {
     191                stop = false;
     192                inputKey = null;
     193                inputIV = null;
     194
     195                inputStream = null;
     196                outputStream = null;
     197
     198                foreach (CryptoolStream stream in listCryptoolStreamsOut)
     199                {
     200                    stream.Close();
     201                }
     202                listCryptoolStreamsOut.Clear();
     203
     204                if (p_crypto_stream != null)
     205                {
     206                    p_crypto_stream.Flush();
     207                    p_crypto_stream.Close();
     208                    p_crypto_stream = null;
     209                }
     210            }
     211            catch (Exception ex)
     212            {
     213                GuiLogMessage(ex.Message, NotificationLevel.Error);
     214            }
     215            this.stop = false;
     216        }
     217
     218       
     219
     220        public void PostExecution()
     221        {
     222            Dispose();
     223        }
     224
     225        public void PreExecution()
     226        {
     227            Dispose();
     228        }
     229
     230        #endregion
     231
     232        #region INotifyPropertyChanged Members
     233
     234        public event PropertyChangedEventHandler PropertyChanged;
     235
     236        public void OnPropertyChanged(string name)
     237        {
     238            if (PropertyChanged != null)
     239            {
     240                PropertyChanged(this, new PropertyChangedEventArgs(name));
     241            }
     242        }
     243
     244        #endregion
     245
     246           
     247
     248        #region Public DES specific members
     249
     250        public bool isStopped()
     251        {
     252
     253            return this.stop;
     254        }
     255
     256        #endregion
     257
     258
     259        #region Private methods
     260
    118261        private void ConfigureAlg(SymmetricAlgorithm alg)
    119262        {
     
    124267                inputKey = new byte[8];
    125268                // write a warning to the ouside word
    126                 GuiLogMessage("WARNING - No key provided. Using 0x000..00!", NotificationLevel.Warning);
     269                GuiLogMessage("ERROR: No key provided. Using 0x000..00!", NotificationLevel.Error);
    127270            }
    128271            alg.Key = this.inputKey;
     
    133276                //create a trivial key
    134277                inputIV = new byte[alg.BlockSize / 8];
    135                GuiLogMessage("WARNING - No IV provided. Using 0x000..00!", NotificationLevel.Warning);
     278                GuiLogMessage("NOTE: No IV provided. Using 0x000..00!", NotificationLevel.Info);
    136279            }
    137280            alg.IV = this.inputIV;
     
    160303                String dummystring = "Dummy string - no input provided - \"Hello DES World\" - dummy string - no input provided!";
    161304                this.inputStream = new CryptoolStream();
    162                 this.inputStream.OpenRead(this.GetPluginInfoAttribute().Caption, Encoding.Default.GetBytes(dummystring.ToCharArray()));
     305                this.inputStream.OpenRead(Encoding.Default.GetBytes(dummystring.ToCharArray()));
    163306                // write a warning to the ouside word
    164307                GuiLogMessage("WARNING - No input provided. Using dummy data. (" + dummystring + ")", NotificationLevel.Warning);
    165             }
    166         }
    167 
    168         public void Execute()
    169         {
    170             try
    171             {
    172                 //copy inputStream for Slave
    173                 if (controlSlave is object && InputStream is object && InputIV is object)
    174                 {
    175                     CryptoolStream cs = new CryptoolStream();
    176                     cs.OpenRead(inputStream.FileName);
    177                     ((DESControl)controlSlave).InputStream = cs;
    178                 }
    179 
    180                 process(settings.Action);
    181 
    182                 //Work with slave
    183                 if (controlSlave is object && InputStream is object && InputIV is object)
    184                 {
    185                     ((DESControl)controlSlave).reset();
    186                     ((DESControl)controlSlave).onStatusChanged();
    187 
    188                 }
    189             }
    190             finally
    191             {
    192                 if (controlSlave is object && ((DESControl)controlSlave).InputStream is object)
    193                     ((DESControl)controlSlave).closeStreams();
    194308            }
    195309        }
     
    225339                outputStream = new CryptoolStream();
    226340                listCryptoolStreamsOut.Add(outputStream);
    227                 outputStream.OpenWrite(this.GetPluginInfoAttribute().Caption);
     341                outputStream.OpenWrite();
    228342                p_crypto_stream = new CryptoStream((Stream)inputStream, p_encryptor, CryptoStreamMode.Read);
    229343                byte[] buffer = new byte[p_alg.BlockSize / 8];
     
    244358
    245359                p_crypto_stream.Flush();
    246                 outputStream.Close();
    247360                DateTime stopTime = DateTime.Now;
    248361                TimeSpan duration = stopTime - startTime;
     
    252365                    GuiLogMessage("Wrote data to file: " + outputStream.FileName, NotificationLevel.Info);
    253366                    GuiLogMessage("Time used: " + duration.ToString(), NotificationLevel.Debug);
     367                    outputStream.Close();
    254368                    OnPropertyChanged("OutputStream");
    255369                }
    256370                if (stop)
    257371                {
     372                    outputStream.Close();
    258373                    GuiLogMessage("Aborted!", NotificationLevel.Info);
    259374                }
     375                ProgressChanged(1, 1);
     376
    260377            }
    261378            catch (CryptographicException cryptographicException)
     
    274391        }
    275392
    276         public void Encrypt()
    277         {
    278             //Encrypt Stream
    279             process(0);
    280         }
    281 
    282         public void Decrypt()
    283         {
    284             //Decrypt Stream
    285             process(1);
    286         }
    287 
    288         #region IPlugin Member
    289 
    290         public UserControl Presentation
    291         {
    292             get { return null; }
    293         }
    294 
    295         public UserControl QuickWatchPresentation
    296         {
    297           get { return null; }
    298         }
    299 
    300         public void Initialize()
    301         {
    302         }
    303 
    304         public void Dispose()
    305         {
    306             try
    307             {
    308                 stop = false;
    309                 inputKey = null;
    310                 inputIV = null;
    311 
    312                 inputStream = null;
    313                 outputStream = null;
    314 
    315                 foreach (CryptoolStream stream in listCryptoolStreamsOut)
    316                 {
    317                     stream.Close();
    318                 }
    319                 listCryptoolStreamsOut.Clear();
    320 
    321                 if (p_crypto_stream != null)
    322                 {
    323                     p_crypto_stream.Flush();
    324                     p_crypto_stream.Close();
    325                     p_crypto_stream = null;
    326                 }
    327             }
    328             catch (Exception ex)
    329             {
    330                 GuiLogMessage(ex.Message, NotificationLevel.Error);
    331             }
    332             this.stop = false;
    333         }
    334 
    335         public void Stop()
    336         {
    337             this.stop = true;
    338         }
    339 
    340         public bool isStopped(){
    341 
    342             return this.stop;
    343         }
    344 
    345         public void PostExecution()
    346         {
    347             Dispose();
    348         }
    349 
    350         public void PreExecution()
    351         {
    352             Dispose();
    353         }
    354 
    355         #endregion
    356 
    357         #region INotifyPropertyChanged Members
    358 
    359         public event PropertyChangedEventHandler PropertyChanged;
    360 
    361         public void OnPropertyChanged(string name)
    362         {
    363             if (PropertyChanged != null)
    364             {
    365                 PropertyChanged(this, new PropertyChangedEventArgs(name));
    366             }
    367         }
    368 
    369         #endregion
    370 
    371         #region IPlugin Members
    372 
    373         public event StatusChangedEventHandler OnPluginStatusChanged;
    374 
    375         public event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
    376         public void GuiLogMessage(string message, NotificationLevel logLevel)
    377         {
    378           if (OnGuiLogNotificationOccured != null)
    379           {
    380             OnGuiLogNotificationOccured(this, new GuiLogEventArgs(message, this, logLevel));
    381           }
    382         }
    383 
    384         public event PluginProgressChangedEventHandler OnPluginProgressChanged;
     393        private void GuiLogMessage(string message, NotificationLevel logLevel)
     394        {
     395            if (OnGuiLogNotificationOccured != null)
     396            {
     397                OnGuiLogNotificationOccured(this, new GuiLogEventArgs(message, this, logLevel));
     398            }
     399        }
     400
     401
    385402        private void ProgressChanged(double value, double max)
    386403        {
    387           if (OnPluginProgressChanged != null)
    388           {
    389             OnPluginProgressChanged(this, new PluginProgressEventArgs(value, max));
    390           }
    391         }
    392 
    393         public void Pause()
    394         {
    395          
    396         }
    397 
    398         #endregion
    399 
    400         [PropertyInfo(Direction.ControlSlave, "DES Slave", "Direct access to DES.", "", DisplayLevel.Beginner)]
    401         public IControlEncryption ControlSlave
    402         {
    403           get
    404           {
    405               if (controlSlave == null)
    406                   controlSlave = new DESControl(this);
    407               return controlSlave;
    408           }
    409         }
    410 
    411         private IControlCubeAttack desSlave;
    412         [PropertyInfo(Direction.ControlSlave, "DES for cube attack", "Direct access to DES.", "", DisplayLevel.Beginner)]
    413         public IControlCubeAttack DESSlave
    414         {
    415             get
    416             {
    417                 if (desSlave == null)
    418                     desSlave = new CubeAttackControl(this);
    419                 return desSlave;
    420             }
    421         }
     404            if (OnPluginProgressChanged != null)
     405            {
     406                OnPluginProgressChanged(this, new PluginProgressEventArgs(value, max));
     407            }
     408        }
     409
     410        #endregion
     411
    422412    }
    423413
     414   
    424415    #region DESControl : IControlCubeAttack
    425416
     
    528519    #endregion
    529520
     521
     522    #region DESControl : IControlEncryption
    530523    public class DESControl : IControlEncryption
    531524    {
    532525        public event KeyPatternChanged keyPatternChanged;
    533526        public event IControlStatusChangedEventHandler OnStatusChanged;
     527
     528       
    534529        private DES plugin;
    535         private SymmetricAlgorithm des_algorithm = null;
    536         private byte[] input;
    537         private Stream inputStream;
    538  
    539         public CryptoolStream InputStream{
    540             get;set;
    541         }
    542 
    543         public void reset()
    544         {
    545             input = null;
    546             des_algorithm = null;
    547         }
    548 
    549         public void closeStreams()
    550         {
    551             if (inputStream != null)
    552                 inputStream.Close();
    553             if (InputStream != null)
    554                 InputStream.Close();
    555         }
    556530
    557531        public DESControl(DES Plugin)
    558532        {
    559533            this.plugin = Plugin;
    560         }
    561 
    562         #region IControlEncryption Members
     534
     535            // Change the padding mode to zeroes, since we want to do bruteforcing..
     536            ((DESSettings)plugin.Settings).Padding = 0;
     537        }
     538
     539       
    563540
    564541        public byte[] Encrypt(byte[] key, int blocksize)
     
    572549        {
    573550            CryptoStream crypto_stream = null;
    574             byte[] output = new byte[8];
     551            byte[] output = new byte[ciphertext.Length];
    575552           
    576553            // always recreating this instance is thread-safe, but may cost us some performance
    577554            SymmetricAlgorithm des_algorithm  = new DESCryptoServiceProvider();
    578555
    579             // TODO: this should be configurable via method signature
    580             des_algorithm.Mode = CipherMode.ECB;
    581             des_algorithm.Padding = PaddingMode.PKCS7;
     556            switch (((DESSettings)plugin.Settings).Mode)
     557            { //0="ECB"=default, 1="CBC", 2="CFB", 3="OFB"
     558                case 1: des_algorithm.Mode = CipherMode.CBC; break;
     559                case 2: des_algorithm.Mode = CipherMode.CFB; break;
     560                case 3: des_algorithm.Mode = CipherMode.OFB; break;
     561                default: des_algorithm.Mode = CipherMode.ECB; break;
     562            }
     563
     564            // Padding for DES must always be set to zeroes
     565            // other padding types lead to error while decrypting
     566            // padding type of none leads to error if size does not match exactly a multiple of 8 Byte
     567            des_algorithm.Padding = PaddingMode.Zeros;
     568
     569            // TODO: this must be passed via the interface
     570            des_algorithm.IV = new byte[des_algorithm.BlockSize / 8]; // IV of 0x00..00
    582571
    583572            try
     
    589578                //dirty hack to allow weak keys:
    590579                FieldInfo field = des_algorithm.GetType().GetField("KeyValue", BindingFlags.NonPublic | BindingFlags.Instance);
    591                 Console.WriteLine(des_algorithm.GetType());
     580                //Console.WriteLine(des_algorithm.GetType());
    592581                field.SetValue(des_algorithm, key);
    593582            }
     
    606595            }
    607596
    608             crypto_stream = new CryptoStream(new MemoryStream(ciphertext, false), p_decryptor, CryptoStreamMode.Read);
     597            crypto_stream = new CryptoStream(new MemoryStream(ciphertext), p_decryptor, CryptoStreamMode.Read);
    609598
    610599            int read, readOverall = 0;
     
    616605
    617606            return output;
    618 
    619             //try
    620             //{
    621             //    des_algorithm.IV = this.plugin.InputIV;
    622             //}
    623             //catch
    624             //{
    625             //    //dirty hack to allow weak keys:
    626             //    FieldInfo field = des_algorithm.GetType().GetField("IVValue", BindingFlags.NonPublic | BindingFlags.Instance);
    627             //    field.SetValue(des_algorithm, this.plugin.InputIV);
    628             //}
    629 
    630             //switch (((DESSettings)plugin.Settings).Mode)
    631             //{ //0="ECB"=default, 1="CBC", 2="CFB", 3="OFB"
    632             //    case 1: alg.Mode = CipherMode.CBC; break;
    633             //    case 2: alg.Mode = CipherMode.CFB; break;
    634             //    case 3: alg.Mode = CipherMode.OFB; break;
    635             //    default: alg.Mode = CipherMode.ECB; break;
    636             //}
    637             //switch (((DESSettings)plugin.Settings).Padding)
    638             //{ //0="Zeros"=default, 1="None", 2="PKCS7"
    639             //    case 1: alg.Padding = PaddingMode.None; break;
    640             //    case 2: alg.Padding = PaddingMode.PKCS7; break;
    641             //    case 3: alg.Padding = PaddingMode.ANSIX923; break;
    642             //    case 4: alg.Padding = PaddingMode.ISO10126; break;
    643             //    default: alg.Padding = PaddingMode.Zeros; break;
    644             //}
    645         }
    646 
    647         [Obsolete("this signature doesn't pass the ciphertext, use Decrypt(byte[], byte[]) instead")]
    648         public byte[] Decrypt(byte[] key, int blocksize)
    649         {
    650             int size = (int)this.InputStream.Length;
    651 
    652             if (blocksize < size)
    653                 size = blocksize;
    654 
    655             if (!(this.input is object))
    656             {
    657                 input = new byte[size];
    658                 this.InputStream.Seek(0, 0);
    659                 for (int i = 0; i < size && i < this.InputStream.Length; i++)
    660                     input[i] = (byte)this.InputStream.ReadByte();
    661                 inputStream = new MemoryStream(input);
    662             }
    663             inputStream.Seek(0, 0);
    664 
    665             CryptoStream crypto_stream = null;
    666             byte[] output = new byte[blocksize];
    667 
    668             //Decrypt Stream
    669             try
    670             {
    671                 if (!(des_algorithm is object))
    672                 {
    673                     des_algorithm = new DESCryptoServiceProvider();
    674                 }
    675 
    676                 this.ConfigureAlg(des_algorithm, key);
    677 
    678                 ICryptoTransform p_decryptor;
    679                 try
    680                 {
    681                     p_decryptor = des_algorithm.CreateDecryptor();
    682                 }
    683                 catch
    684                 {
    685                     //dirty hack to allow weak keys:
    686                     MethodInfo mi = des_algorithm.GetType().GetMethod("_NewEncryptor", BindingFlags.NonPublic | BindingFlags.Instance);
    687                     object[] Par = { des_algorithm.Key, des_algorithm.Mode, des_algorithm.IV, des_algorithm.FeedbackSize, 0 };
    688                     p_decryptor = mi.Invoke(des_algorithm, Par) as ICryptoTransform;
    689                 }
    690 
    691                 crypto_stream = new CryptoStream((Stream)inputStream, p_decryptor, CryptoStreamMode.Read);
    692 
    693                 byte[] buffer = new byte[des_algorithm.BlockSize / 8];
    694                 int bytesRead;
    695                 int position = 0;
    696 
    697                 while ((bytesRead = crypto_stream.Read(buffer, 0, buffer.Length)) > 0 && !plugin.isStopped())
    698                 {
    699                     for (int i = 0; i < bytesRead; i++)
    700                     {
    701                         if (position + i < output.Length)
    702                         {
    703                             output[position + i] = buffer[i];
    704                         }
    705                         else
    706                         {
    707                             break;
    708                         }
    709                     }
    710                     position += bytesRead;
    711                 }
    712 
    713 
    714             }
    715             catch (Exception exception)
    716             {
    717                 des_algorithm = null;   // we got an exception so we do not use this object any more
    718                 throw exception;
    719             }
    720 
    721             return output;
    722         }
    723 
    724         [Obsolete("being used by obsolete Decrypt(byte[], int)")]
    725         private void ConfigureAlg(SymmetricAlgorithm alg, byte[] key)
    726         {
    727             try
    728             {
    729                 alg.Key = key;
    730             }
    731             catch
    732             {
    733                 //dirty hack to allow weak keys:
    734                 FieldInfo field = des_algorithm.GetType().GetField("KeyValue", BindingFlags.NonPublic | BindingFlags.Instance);
    735                 field.SetValue(alg, key);
    736             }
    737 
    738             try
    739             {
    740                 alg.IV = this.plugin.InputIV;
    741             }
    742             catch
    743             {
    744                 //dirty hack to allow weak keys:
    745                 FieldInfo field = des_algorithm.GetType().GetField("IVValue", BindingFlags.NonPublic | BindingFlags.Instance);
    746                 field.SetValue(alg, this.plugin.InputIV);
    747             }
    748 
    749             switch (((DESSettings)plugin.Settings).Mode)
    750             { //0="ECB"=default, 1="CBC", 2="CFB", 3="OFB"
    751                 case 1: alg.Mode = CipherMode.CBC; break;
    752                 case 2: alg.Mode = CipherMode.CFB; break;
    753                 case 3: alg.Mode = CipherMode.OFB; break;
    754                 default: alg.Mode = CipherMode.ECB; break;
    755             }
    756             switch (((DESSettings)plugin.Settings).Padding)
    757             { //0="Zeros"=default, 1="None", 2="PKCS7"
    758                 case 1: alg.Padding = PaddingMode.None; break;
    759                 case 2: alg.Padding = PaddingMode.PKCS7; break;
    760                 case 3: alg.Padding = PaddingMode.ANSIX923; break;
    761                 case 4: alg.Padding = PaddingMode.ISO10126; break;
    762                 default: alg.Padding = PaddingMode.Zeros; break;
    763             }
    764 
    765         }
    766 
    767         /// <summary>
    768         /// Called by DES if its status changes
    769         /// </summary>
    770         public void onStatusChanged()
    771         {
    772             if (OnStatusChanged != null)
    773                 OnStatusChanged(this, true);
    774607        }
    775608
     
    833666        {
    834667            DESControl des = new DESControl(plugin);
    835             CryptoolStream cs = new CryptoolStream();
    836             cs.OpenRead(InputStream.FileName);
    837             des.InputStream = cs;
    838             des.reset();
    839668            return des;
    840669        }
     
    842671        public void Dispose()
    843672        {
    844             closeStreams();
    845         }
    846 
    847         void IControlEncryption.changeSettings(string setting, object value)
     673           
     674        }
     675
     676        public void changeSettings(string setting, object value)
    848677        {
    849678            throw new NotImplementedException();
    850679        }
    851680
    852 
    853         #endregion
    854681    }
     682    #endregion
    855683}
  • trunk/CrypPlugins/DES/DESSettings.cs

    r230 r1157  
    7676        #endregion
    7777
    78         public event StatusChangedEventHandler OnPluginStatusChanged;
    79 
    80         private void ChangePluginIcon(int Icon)
    81         {
    82             if (OnPluginStatusChanged != null) OnPluginStatusChanged(null, new StatusEventArgs(StatusChangedMode.ImageUpdate, Icon));
    83         }
    84 
    8578    }
    8679}
Note: See TracChangeset for help on using the changeset viewer.