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);
        }
 // GET: Envelope
 public ActionResult Index(EnvelopeOutputViewModel vm)
 {
     return(View(vm));
 }