public static CertificateOutputViewModel GenerateCertificate(this CertificateInputViewModel 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); IHashAlgorithm hash = GetHashAlgorithm(vm.SelectedHashAlgorithmName); var signature = new Core.Signature.DigitalSignature(hash: hash, algorithm: asymmetric); var certificate = new DigitalCertificate( envelope: envelope, signature: signature ); byte[] _gen = certificate.Create(input: inputBytes); (bool, byte[])_degen = certificate.Check(); var model = new CertificateOutputViewModel(_gen, envelope.Data, envelope.Key, hash.AlgorithmName, vm.SelectedSymmetricAlgorithmName, vm.SelectedSymmetricAlgorithmKey, vm.SelectedAsymmetricAlgorithmName, vm.SelectedAsymmetricAlgorithmKey, file: Constants.File.Name.CERTIFICATE) { InputText = vm.InputText }; return(model); }
public static SignatureOutputViewModel GenerateSignature(this SignatureInputViewModel vm) { var inputBytes = Encoding.ASCII.GetBytes(vm.InputText); // new byte[] { }; IHashAlgorithm hash = GetHashAlgorithm(vm.SelectedHashAlgorithmName); IAsymmetricCryptoAlgorithm asymmetric = GetAsymmetricAlgorithm(vm.SelectedAsymmetricAlgorithmName, vm.SelectedAsymmetricAlgorithmKey); var signature = new Core.Signature.DigitalSignature(hash: hash, algorithm: asymmetric); var _sign = signature.Sign(input: inputBytes); var valid = signature.Check(_sign); var file = ""; var output = new SignatureOutputViewModel(_sign, vm.SelectedHashAlgorithmName, vm.SelectedAsymmetricAlgorithmName, vm.SelectedAsymmetricAlgorithmKey, file: Constants.File.Name.SIGNATURE) { InputText = vm.InputText }; return(output); }