/// <summary> /// Return new cryptographer by type. /// </summary> /// <param name="type"></param> /// <returns></returns> public ICryptograph Get(CryptographType type) { if (type == CryptographType.AES) { return(new AesCryptograph()); } throw new System.Exception("Get type of cryptographer, that not implemented."); }
/// <summary> /// Edit existed note. /// </summary> /// <param name="noteForEdit"></param> /// <param name="user"></param> /// <param name="cryptoManager"></param> public void EditNote(Note noteForEdit, User user, CryptographManager cryptoManager) { var encoder = cryptoManager.Get(CryptographType.Get(AlgorithName)); noteForEdit.Text = encoder.Encrypt(Text, SecretKey); noteForEdit.Title = encoder.Encrypt(Title, SecretKey); noteForEdit.User = user; noteForEdit.CryptoName = AlgorithName; }
public void GetAllCryptoTypes() { var fields = typeof(CryptographType).GetFields(BindingFlags.Public | BindingFlags.Static); foreach (var field in fields) { var cryptoType = (CryptographType)field.GetValue(null); output.WriteLine("Try find for type - " + cryptoType.Type); Assert.Equal(CryptographType.Get(cryptoType.Type), cryptoType); } }
public NoteForOutput(Note note, CryptographManager manager, string secretCode) { Id = note.Id; var cryptograph = manager.Get(CryptographType.Get(note.CryptoName)); try { Text = cryptograph.Decrypt(note.Text, secretCode); Title = cryptograph.Decrypt(note.Title, secretCode); } catch { Text = Encoding.ASCII.GetString(note.Text); Title = Encoding.ASCII.GetString(note.Title); } }
/// <summary> /// Return note, based on data from current class. /// </summary> /// <param name="manager">For get cryptographer</param> /// <param name="user">Owner of note</param> /// <returns></returns> public Note ToNote(CryptographManager manager, User user, IModelsFactory modelsFactory) { if (AlgorithmName == null) { AlgorithmName = CryptographType.AES.Type; } var encoder = manager.Get(CryptographType.Get(AlgorithmName)); var note = modelsFactory.CreateNote(); note.Title = encoder.Encrypt(Title, SecretKey); note.Text = encoder.Encrypt(Text, SecretKey); note.User = user; note.CryptoName = AlgorithmName; return(note); }
public void GetBadCrypto() { var cryptoMng = new CryptographManager(); Assert.Throws <Exception>(() => { CryptographType.Get("test"); }); }