Exemple #1
0
        private void SetMethods(ITemplateEngine templateEngine, SymmetricEncryptionCryptoTaskModel cryptoModel)
        {
            if (cryptoModel.UsePassword)
            {
                string macSuffix = string.Empty;
                if (cryptoModel.UseMac)
                {
                    macSuffix = "Mac";
                }

                var passwordMethodsTemplate = new SimpleTemplateEngine(
                    GetTemplateStream($"Resources.CodeTemplates.SymmetricEncryption.PasswordMethods{macSuffix}.txt"));

                string sha = "SHA256";

                switch (cryptoModel.SelectedSecurityLevel)
                {
                case SecurityLevel.Default:
                    break;

                case SecurityLevel.VerySecure:
                    sha = "SHA512";
                    break;
                }

                //passwordMethodsTemplate.AddReplacementValue(SymmetricCryptoProviderTemplateKeys.ShaImplementation, sha);

                templateEngine.AddReplacementValue(SymmetricCryptoProviderTemplateKeys.PasswordMethods, passwordMethodsTemplate.GetResult());
            }
        }
Exemple #2
0
        private void SetConfiguration(ITemplateEngine te, SymmetricEncryptionCryptoTaskModel model)
        {
            if (model.UsePassword)
            {
                var passwordConfigTemplate = new SimpleTemplateEngine(
                    GetTemplateStream($"Resources.CodeTemplates.SymmetricEncryption.PasswordConfiguration.txt"));


                int saltSize   = 64;
                int iterations = 1000;

                switch (model.SelectedSecurityLevel)
                {
                case SecurityLevel.Default:
                    saltSize = 265;
                    break;

                case SecurityLevel.VerySecure:
                    saltSize   = 512;
                    iterations = 10000;
                    break;
                }

                passwordConfigTemplate.AddReplacementValue(SymmetricCryptoProviderTemplateKeys.SaltSize, saltSize);
                passwordConfigTemplate.AddReplacementValue(SymmetricCryptoProviderTemplateKeys.Iterations, iterations);

                te.AddReplacementValue(SymmetricCryptoProviderTemplateKeys.PasswordConfiguration, passwordConfigTemplate.GetResult());
            }

            int    keySize = 128;
            string aes     = "AesManaged";
            string mac     = "HMACSHA256";

            switch (model.SelectedSecurityLevel)
            {
            case SecurityLevel.Default:
                keySize = 192;
                mac     = "HMACSHA384";
                break;

            case SecurityLevel.VerySecure:
                keySize = 256;
                aes     = "AesCryptoServiceProvider";
                mac     = "HMACSHA512";
                break;
            }
            if (model.UseMac)
            {
                te.AddReplacementValue(SymmetricCryptoProviderTemplateKeys.MacMode, mac);
            }
            te.AddReplacementValue(SymmetricCryptoProviderTemplateKeys.Blocksize, 128);
            te.AddReplacementValue(SymmetricCryptoProviderTemplateKeys.KeySize, keySize);
            te.AddReplacementValue(SymmetricCryptoProviderTemplateKeys.AesProvider, aes);
        }
 public ICryptoCodeGenerationTaskModel CreateAndSetModel()
 {
     Model = new SymmetricEncryptionCryptoTaskModel();
     return(Model);
 }