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); }
protected override void ApplyTemplate(ITemplateEngine templateEngine, ICryptoCodeGenerationTaskModel model, Project project, FileInfo file) { var ns = ProjectHelpers.GetFileNameSpace(project, file.FullName); templateEngine.AddReplacementValue(CodeGenerationTemplateKeys.Namespace, ns); }
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()); } }
protected override void ApplyTemplate(ITemplateEngine templateEngine, ICryptoCodeGenerationTaskModel model, Project project, FileInfo file) { if (!(model is SymmetricEncryptionCryptoTaskModel cryptoModel)) { return; } var ns = ProjectHelpers.GetFileNameSpace(project, file.FullName); templateEngine.AddReplacementValue(SymmetricCryptoProviderTemplateKeys.Namespace, ns); SetConfiguration(templateEngine, cryptoModel); SetMethods(templateEngine, cryptoModel); }
protected override void ApplyTemplate(ITemplateEngine templateEngine, ICryptoCodeGenerationTaskModel model, Project project, FileInfo file) { templateEngine.AddReplacementValue("namespace", "System"); templateEngine.AddReplacementValue("classname", "TestClass"); }