/// <summary>
        /// Initializes properties
        /// </summary>
        /// <param name="api">The type of crypto api selected</param>
        private void InitializeProperties(CryptographyApi api)
        {
            //according to the selected cipher api create a cipher object
            switch (api)
            {
            case CryptographyApi.MSDN:
                SelectedCipherApi = new MsdnSymmetricCipher();
                break;

            case CryptographyApi.BouncyCastle:
                SelectedCipherApi = new BouncySymmetricCipher();
                break;

            default:
                Debugger.Break();
                break;
            }

            //Gets all the available algorithims from cipher api
            Algorithims = SelectedCipherApi.GetAlgorthims();

            //Gets all the available key sizes for the currently selected algorithim
            KeySizes = SelectedCipherApi.GetKeySizes(SelectedAlgorithim);

            //As default select the first item in the list
            SelectedKeySize = KeySizes[0];

            //Gets the iv size of the currently selected algorithim
            IvSize = SelectedCipherApi.GetIvSize(SelectedAlgorithim);

            ///Subscribe to the DataChanged event from the <see cref="DataInputViewModel"/>
            DataInput.DataChanged += DataChanged;
        }
        /// <summary>
        /// Default constructor
        /// </summary>
        public SymmetricDesignModel()
        {
            SelectedCipherApi = new BouncySymmetricCipher();
            //SelectedCipherApi = new MsdnSymmetricCipher();
            Algorithims     = SelectedCipherApi.GetAlgorthims();
            KeySizes        = SelectedCipherApi.GetKeySizes(SelectedAlgorithim);
            SelectedKeySize = KeySizes[0];
            IvSize          = SelectedCipherApi.GetIvSize(SelectedAlgorithim);

            DataInput.Data = "Some data";
            DataInput.DataFormatOptions  = Enum.GetValues(typeof(Format)).Cast <Format>().Select(t => t.ToString()).ToList();
            DataInput.DataFormatSelected = Format.File;
            SecretKey = "FFFFFFFFFFFF";
            IV        = "FFFFFFFFFFFF";
            IvSize    = 6 * 8;
            KeySizes  = new ObservableCollection <int> {
                6 * 8, 55, 23
            };
            SelectedKeySize = 6 * 8;
            IvSize          = 6 * 8;
        }