public static EnvelopeOutputViewModel GenerateEnvelope(this EnvelopeInputViewModel vm)
        {
            var inputBytes = Encoding.ASCII.GetBytes(vm.InputText); // new byte[] { };

            ISymmetricCryptoAlgorithm symmetric = GetSymmetricAlgorithm(vm.SelectedSymmetricAlgorithmName,
                                                                        vm.SelectedSymmetricAlgorithmKey, vm.SelectedSymmetricAlgorithmMode);

            IAsymmetricCryptoAlgorithm asymmetric =
                GetAsymmetricAlgorithm(vm.SelectedAsymmetricAlgorithmName, vm.SelectedAsymmetricAlgorithmKey);

            var envelope = new DigitalEnvelope(symmetric: symmetric, asymmetric: asymmetric);

            var _env = envelope.Encrypt(input: inputBytes);

            var data = envelope.Decrypt();

            var model = new EnvelopeOutputViewModel(_env.data, _env.cryptKey, vm.SelectedSymmetricAlgorithmName,
                                                    vm.SelectedSymmetricAlgorithmKey, vm.SelectedAsymmetricAlgorithmName,
                                                    vm.SelectedAsymmetricAlgorithmKey,
                                                    file: Constants.File.Name.ENVELOPE)
            {
                InputText = vm.InputText
            };

            return(model);
        }
        public ActionResult Create(EnvelopeInputViewModel vm)
        {
            var model = vm.GenerateEnvelope();

            return(RedirectToAction("Index", model));
        }
        // GET: Envelope/Create
        public ActionResult Create()
        {
            var model = new EnvelopeInputViewModel();

            return(View(model));
        }