예제 #1
0
        /// <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.");
        }
예제 #2
0
        /// <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;
        }
예제 #3
0
        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);
            }
        }
예제 #4
0
        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);
            }
        }
예제 #5
0
        /// <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);
        }
예제 #6
0
        public void GetBadCrypto()
        {
            var cryptoMng = new CryptographManager();

            Assert.Throws <Exception>(() => { CryptographType.Get("test"); });
        }