diff --git a/Fededim.Extensions.Configuration.Protected.DataProtectionAPI/Fededim.Extensions.Configuration.Protected.DataProtectionAPI.csproj b/Fededim.Extensions.Configuration.Protected.DataProtectionAPI/Fededim.Extensions.Configuration.Protected.DataProtectionAPI.csproj index 0edd206..c33394e 100644 --- a/Fededim.Extensions.Configuration.Protected.DataProtectionAPI/Fededim.Extensions.Configuration.Protected.DataProtectionAPI.csproj +++ b/Fededim.Extensions.Configuration.Protected.DataProtectionAPI/Fededim.Extensions.Configuration.Protected.DataProtectionAPI.csproj @@ -64,8 +64,8 @@ v1.0.10 - Dependency: requires at least Fededim.Extensions.Configuration.Protected version 1.0.22 - updated minimum framework to net472 due to XUnit V3 requirements (net462 apps can still use netstandard2.0 version of the package) - - removed net6.0 as target framework due to package compatibility not guaranteed (net6.0 apps can still use netstandard2.0 version of the package) - - added missing net48 as target framework + - readded net8.0 as target framework (net6.0 was not possible due to updated package compatibility issues, however net6.0 apps can still use netstandard2.0 version of the package) + - added net48 as target framework diff --git a/Fededim.Extensions.Configuration.Protected.DataProtectionAPI/docs/README.md b/Fededim.Extensions.Configuration.Protected.DataProtectionAPI/docs/README.md index 1008187..d654217 100644 --- a/Fededim.Extensions.Configuration.Protected.DataProtectionAPI/docs/README.md +++ b/Fededim.Extensions.Configuration.Protected.DataProtectionAPI/docs/README.md @@ -239,8 +239,8 @@ v1.0.9 v1.0.10 - updated minimum framework to net472 due to XUnit V3 requirements (net462 apps can still use netstandard2.0 version of the package) -- removed net6.0 as target framework due to package compatibility not guaranteed (net6.0 apps can still use netstandard2.0 version of the package) -- added missing net48 as target framework +- readded net8.0 as target framework (net6.0 was not possible due to updated package compatibility issues, however net6.0 apps can still use netstandard2.0 version of the package) +- added net48 as target framework # Detailed guide diff --git a/Fededim.Extensions.Configuration.Protected/Fededim.Extensions.Configuration.Protected.csproj b/Fededim.Extensions.Configuration.Protected/Fededim.Extensions.Configuration.Protected.csproj index 57b094b..3f66ab6 100644 --- a/Fededim.Extensions.Configuration.Protected/Fededim.Extensions.Configuration.Protected.csproj +++ b/Fededim.Extensions.Configuration.Protected/Fededim.Extensions.Configuration.Protected.csproj @@ -112,8 +112,8 @@ v1.0.22 - updated minimum framework to net472 due to XUnit V3 requirements (net462 apps can still use netstandard2.0 version of the package) - - removed net6.0 as target framework due to package compatibility not guaranteed (net6.0 apps can still use netstandard2.0 version of the package) - - added missing net48 as target framework + - readded net8.0 as target framework (net6.0 was not possible due to updated package compatibility issues, however net6.0 apps can still use netstandard2.0 version of the package) + - added net48 as target framework diff --git a/Fededim.Extensions.Configuration.Protected/docs/README.md b/Fededim.Extensions.Configuration.Protected/docs/README.md index 639e7ce..c2a1c61 100644 --- a/Fededim.Extensions.Configuration.Protected/docs/README.md +++ b/Fededim.Extensions.Configuration.Protected/docs/README.md @@ -297,8 +297,8 @@ v1.0.21 v1.0.22 - updated minimum framework to net472 due to XUnit V3 requirements (net462 apps can still use netstandard2.0 version of the package) -- removed net6.0 as target framework due to package compatibility not guaranteed (net6.0 apps can still use netstandard2.0 version of the package) -- added missing net48 as target framework +- readded net8.0 as target framework (net6.0 was not possible due to updated package compatibility issues, however net6.0 apps can still use netstandard2.0 version of the package) +- added net48 as target framework # Detailed guide diff --git a/misc/last_build_artifacts/Cobertura.xml b/misc/last_build_artifacts/Cobertura.xml index eab06e7..8c0aac1 100644 --- a/misc/last_build_artifacts/Cobertura.xml +++ b/misc/last_build_artifacts/Cobertura.xml @@ -1,6 +1,6 @@ - + D:/a/Fededim.Extensions.Configuration.Protected/Fededim.Extensions.Configuration.Protected/ D:/a/Fededim.Extensions.Configuration.Protected/Fededim.Extensions.Configuration.Protected/Fededim.Extensions.Configuration.Protected.DataProtectionAPI/ @@ -50,31 +50,31 @@ - + - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + @@ -98,8 +98,8 @@ - - + + @@ -148,27 +148,27 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + @@ -176,8 +176,8 @@ - - + + @@ -190,18 +190,18 @@ - - + + - - + + - - + + - + - + @@ -211,18 +211,18 @@ - - + + - - + + - - + + - + - + @@ -382,17 +382,17 @@ - + - + - + @@ -405,9 +405,9 @@ - - - + + + @@ -533,20 +533,20 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -648,20 +648,20 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -784,17 +784,17 @@ - - - - - - - - - - - + + + + + + + + + + + @@ -819,17 +819,17 @@ - - - - - - - - - - - + + + + + + + + + + + @@ -845,14 +845,14 @@ - + - + - + @@ -875,8 +875,8 @@ - - + + @@ -893,105 +893,105 @@ - - + + - - + + - - - - - - + + + + + + - + - + - - - - + + + + - + - - + + - - + + - - - - + + + + - - - - - - + + + + + + - + - + - - - - + + + + - + - + - + - - - + + + - - - - - - + + + + + + diff --git a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected.DataProataProtectionAPIProtectConfigurationData.html b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected.DataProataProtectionAPIProtectConfigurationData.html index 81e06db..be5c7ea 100644 --- a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected.DataProataProtectionAPIProtectConfigurationData.html +++ b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected.DataProataProtectionAPIProtectConfigurationData.html @@ -29,7 +29,7 @@

< Summary - Code Coverage and Repor Tag: -103_36020835951 +108_36033389287 @@ -162,10 +162,10 @@

 29        /// <returns>a purpose string</returns>  30        public static String DataProtectionAPIProtectConfigurationStringPurpose(String purpose)  31        { - 4832            if (String.IsNullOrEmpty(purpose)) + 3632            if (String.IsNullOrEmpty(purpose))  033                return DataProtectionAPIProtectConfigurationPurpose;  34 - 4835            return $"{DataProtectionAPIProtectConfigurationPurpose}.{purpose}"; + 3635            return $"{DataProtectionAPIProtectConfigurationPurpose}.{purpose}";  36        }  37  38        /// <summary> @@ -173,7 +173,7 @@

 40        /// </summary>  41        /// <param name="keyNumber">a key number used to derive the encryption key</param>  42        /// <returns>a string containing the key number</returns> - 4843        internal static String DataProtectionAPIProtectConfigurationKeyNumberToString(int keyNumber) => $"Key{keyNumber} + 3643        internal static String DataProtectionAPIProtectConfigurationKeyNumberToString(int keyNumber) => $"Key{keyNumber}  44  45  46 @@ -234,9 +234,9 @@

 101        /// <param name="dataProtectionConfigureAction">a configure action to setup the Data Protection API</param>  102        /// <exception cref="ArgumentException">if either dataProtectionServiceProvider or dataProtectionConfigureAction  103        public DataProtectionAPIProtectConfigurationData(Action<IDataProtectionBuilder> dataProtectionConfigureAction) - 48104            : this(null, null, null, null, dataProtectionConfigureAction, 1) + 36104            : this(null, null, null, null, dataProtectionConfigureAction, 1)  105        { - 48106        } + 36106        }  107  108  109 @@ -286,10 +286,10 @@

 153        /// <param name="keyNumber">a number specifying the index of the key to use</param>  154        /// <exception cref="ArgumentException">if either dataProtectionServiceProvider or dataProtectionConfigureAction  155        public DataProtectionAPIProtectConfigurationData(String protectRegexString = null, String protectedRegexString = - 48156            : this(protectRegexString, protectedRegexString, protectedReplaceString, dataProtectionServiceProvider, data + 36156            : this(protectRegexString, protectedRegexString, protectedReplaceString, dataProtectionServiceProvider, data  157        {  158 - 48159        } + 36159        }  160  161  162 @@ -303,44 +303,44 @@

 170        /// <param name="dataProtectionConfigureAction">a configure action to setup the Data Protection API, this parame  171        /// <param name="purposeString">a string used to derive the encryption key</param>  172        /// <exception cref="ArgumentException">if either dataProtectionServiceProvider or dataProtectionConfigureAction - 48173        public DataProtectionAPIProtectConfigurationData(String protectRegexString = null, String protectedRegexString = + 36173        public DataProtectionAPIProtectConfigurationData(String protectRegexString = null, String protectedRegexString =  174        {  175            // check that at least one parameter is not null - 48176            if (dataProtectionServiceProvider == null && dataProtectionConfigureAction == null) + 36176            if (dataProtectionServiceProvider == null && dataProtectionConfigureAction == null)  0177                throw new ArgumentException("Either dataProtectionServiceProvider or dataProtectionConfigureAction must   178  179            // if dataProtectionServiceProvider is null and we pass a dataProtectionConfigureAction configure a new serv - 48180            if (dataProtectionServiceProvider == null && dataProtectionConfigureAction != null) + 36180            if (dataProtectionServiceProvider == null && dataProtectionConfigureAction != null)  181            { - 48182                var services = new ServiceCollection(); - 48183                dataProtectionConfigureAction(services.AddDataProtection()); - 48184                dataProtectionServiceProvider = services.BuildServiceProvider(); + 36182                var services = new ServiceCollection(); + 36183                dataProtectionConfigureAction(services.AddDataProtection()); + 36184                dataProtectionServiceProvider = services.BuildServiceProvider();  185            }  186  187            // check that dataProtectionServiceProvider resolves the IDataProtector - 48188            var dataProtect = dataProtectionServiceProvider.GetRequiredService<IDataProtectionProvider>().CreateProtecto - 48189            if (dataProtect == null) + 36188            var dataProtect = dataProtectionServiceProvider.GetRequiredService<IDataProtectionProvider>().CreateProtecto + 36189            if (dataProtect == null)  0190                throw new ArgumentException("Either dataProtectionServiceProvider or dataProtectionConfigureAction must   191  192            // sets the abstract class base properties and calls CheckConfigurationIsValid - 48193            if (!String.IsNullOrEmpty(protectRegexString)) + 36193            if (!String.IsNullOrEmpty(protectRegexString))  0194                ProtectRegex = new Regex(protectRegexString);  195 - 48196            if (!String.IsNullOrEmpty(protectedRegexString)) + 36196            if (!String.IsNullOrEmpty(protectedRegexString))  0197                ProtectedRegex = new Regex(protectedRegexString);  198 - 48199            ProtectedReplaceString = protectedReplaceString; + 36199            ProtectedReplaceString = protectedReplaceString;  200 - 48201            ProtectProvider = new DataProtectionAPIProtectProvider(dataProtect); + 36201            ProtectProvider = new DataProtectionAPIProtectProvider(dataProtect);  202 - 48203            CheckConfigurationIsValid(); - 48204        } + 36203            CheckConfigurationIsValid(); + 36204        }  205    }  206} - +

Methods/Properties

diff --git a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected.DataProtectionAPI_DataProtectionAPIProtectProvider.html b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected.DataProtectionAPI_DataProtectionAPIProtectProvider.html index defa1ac..3d19c9c 100644 --- a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected.DataProtectionAPI_DataProtectionAPIProtectProvider.html +++ b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected.DataProtectionAPI_DataProtectionAPIProtectProvider.html @@ -29,7 +29,7 @@

< Summary - Code Coverage and Repor Tag: -103_36020835951 +108_36033389287

@@ -141,10 +141,10 @@

 15        /// The main constructor  16        /// </summary>  17        /// <param name="dataProtector">the <see cref="IDataProtector"/> interface obtained from Data Protection API</pa - 303871218        public DataProtectionAPIProtectProvider(IDataProtector dataProtector) + 227592418        public DataProtectionAPIProtectProvider(IDataProtector dataProtector)  19        { - 303871220            DataProtector = dataProtector; - 303871221        } + 227592420            DataProtector = dataProtector; + 227592421        }  22  23        /// <summary>  24        /// This methods create a new <see cref="IProtectProvider"/> for supporting per configuration value encryption s @@ -154,7 +154,7 @@

 28        /// <returns>a derived <see cref="IProtectProvider"/> based on the <see cref="subkey"/> parameter</returns>  29        public IProtectProvider CreateNewProviderFromSubkey(String key, String subkey)  30        { - 303866431            return new DataProtectionAPIProtectProvider(DataProtector.CreateProtector(subkey)); + 227588831            return new DataProtectionAPIProtectProvider(DataProtector.CreateProtector(subkey));  32        }  33  34 @@ -166,7 +166,7 @@

 40        /// <returns>the decrypted string</returns>  41        public String Decrypt(String key, String encryptedValue)  42        { - 607653743            return DataProtector.Unprotect(encryptedValue); + 455642543            return DataProtector.Unprotect(encryptedValue);  44        }  45  46 @@ -178,14 +178,14 @@

 52        /// <returns>the encrypted string</returns>  53        public String Encrypt(String key, String plainTextValue)  54        { - 607653755            return DataProtector.Protect(plainTextValue); + 455642555            return DataProtector.Protect(plainTextValue);  56        }  57    }  58}

- +

Methods/Properties

diff --git a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ConfigurationBuilderExtensions.html b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ConfigurationBuilderExtensions.html index 35e4674..b403c66 100644 --- a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ConfigurationBuilderExtensions.html +++ b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ConfigurationBuilderExtensions.html @@ -29,7 +29,7 @@

< Summary - Code Coverage and Repor Tag: -103_36020835951 +108_36033389287

@@ -281,7 +281,7 @@

 147        /// <exception cref="ArgumentException"></exception>  148        public static String ProtectConfigurationValue(this IProtectProviderConfigurationData protectProviderConfigurati  149        { - 9595813150            return ProtectConfigurationValueInternal(protectProviderConfigurationData, key, value); + 9597048150            return ProtectConfigurationValueInternal(protectProviderConfigurationData, key, value);  151        }  152  153 @@ -294,28 +294,28 @@

 160        /// <returns></returns>  161        private static String ProtectConfigurationValueInternal(IProtectProviderConfigurationData protectProviderConfigu  162        { - 9595813163            if (value == null) - 640048164                return null; + 9597048163            if (value == null) + 639200164                return null;  165 - 8955765166            protectProviderConfigurationData.CheckConfigurationIsValid(); + 8957848166            protectProviderConfigurationData.CheckConfigurationIsValid();  167 - 8955765168            return protectProviderConfigurationData.ProtectRegex.Replace(value, (me) => - 8955765169            { - 8955765170                var subPurposePresent = !String.IsNullOrEmpty(me.Groups["subPurpose"]?.Value); - 8955765171 - 8955765172                var protectProvider = protectProviderConfigurationData.ProtectProvider; - 8955765173 - 8955765174                if (subPurposePresent) - 8955765175                    protectProvider = protectProviderConfigurationData.ProtectProvider.CreateNewProviderFromSubkey(key,  - 8955765176 - 8955765177                var encryptedValue = protectProvider.Encrypt(key, me.Groups["protectData"].Value); - 8955765178 - 8955765179                // if the encryption function returns null or empty store the original value unencrypted - 8955765180                if (String.IsNullOrEmpty(encryptedValue)) - 8955765181                    return me.Groups["protectData"].Value; - 8955765182                else - 8955765183                    return protectProviderConfigurationData.ProtectedReplaceString.Replace("${subPurposePattern}", subPu - 8955765184            }); + 8957848168            return protectProviderConfigurationData.ProtectRegex.Replace(value, (me) => + 8957848169            { + 8957848170                var subPurposePresent = !String.IsNullOrEmpty(me.Groups["subPurpose"]?.Value); + 8957848171 + 8957848172                var protectProvider = protectProviderConfigurationData.ProtectProvider; + 8957848173 + 8957848174                if (subPurposePresent) + 8957848175                    protectProvider = protectProviderConfigurationData.ProtectProvider.CreateNewProviderFromSubkey(key,  + 8957848176 + 8957848177                var encryptedValue = protectProvider.Encrypt(key, me.Groups["protectData"].Value); + 8957848178 + 8957848179                // if the encryption function returns null or empty store the original value unencrypted + 8957848180                if (String.IsNullOrEmpty(encryptedValue)) + 8957848181                    return me.Groups["protectData"].Value; + 8957848182                else + 8957848183                    return protectProviderConfigurationData.ProtectedReplaceString.Replace("${subPurposePattern}", subPu + 8957848184            });  185        }  186  187 @@ -369,8 +369,8 @@

 235        {  8236            var environmentVariables = Environment.GetEnvironmentVariables(environmentTarget);  237 - 131154238            foreach (String key in environmentVariables.Keys) - 65569239                if (String.IsNullOrEmpty(prefix) || key.StartsWith(prefix)) + 131124238            foreach (String key in environmentVariables.Keys) + 65554239                if (String.IsNullOrEmpty(prefix) || key.StartsWith(prefix))  0240                    Environment.SetEnvironmentVariable(key, protectProviderConfigurationData.ProtectConfigurationValue(k  8241        }  242 @@ -399,7 +399,7 @@

Generated by: ReportGenerator 5.3.8.0
9/24/2026 - 3:38:26 PM
GitHub | reportgenerator.io

+

Methods/Properties

diff --git a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_IProtectProviderConfigurationData.html b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_IProtectProviderConfigurationData.html index 0c3add6..96938de 100644 --- a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_IProtectProviderConfigurationData.html +++ b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_IProtectProviderConfigurationData.html @@ -29,7 +29,7 @@

< Summary - Code Coverage and Repor Tag: -103_36020835951 +108_36033389287

@@ -199,21 +199,21 @@

 75        /// </summary>  76        public virtual void CheckConfigurationIsValid()  77        { - 895590978            ProtectRegex = ProtectRegex ?? new Regex(DefaultProtectRegexString); - 895590979            if (!ProtectRegex.GetGroupNames().Contains("protectData")) + 895799278            ProtectRegex = ProtectRegex ?? new Regex(DefaultProtectRegexString); + 895799279            if (!ProtectRegex.GetGroupNames().Contains("protectData"))  080                throw new ArgumentException("ProtectRegex must contain a group named protectedData!", nameof(ProtectRege  81 - 895590982            ProtectedRegex = ProtectedRegex ?? new Regex(DefaultProtectedRegexString); - 895590983            if (!ProtectedRegex.GetGroupNames().Contains("protectedData")) + 895799282            ProtectedRegex = ProtectedRegex ?? new Regex(DefaultProtectedRegexString); + 895799283            if (!ProtectedRegex.GetGroupNames().Contains("protectedData"))  084                throw new ArgumentException("ProtectedRegex must contain a group named protectedData!", nameof(Protected  85 - 895590986            ProtectedReplaceString = !String.IsNullOrEmpty(ProtectedReplaceString) ? ProtectedReplaceString : DefaultPro - 895590987            if (!ProtectedReplaceString.Contains("${protectedData}")) + 895799286            ProtectedReplaceString = !String.IsNullOrEmpty(ProtectedReplaceString) ? ProtectedReplaceString : DefaultPro + 895799287            if (!ProtectedReplaceString.Contains("${protectedData}"))  088                throw new ArgumentException("ProtectedReplaceString must contain ${protectedData}!", nameof(ProtectedRep  89 - 895590990            if (ProtectProvider == null) + 895799290            if (ProtectProvider == null)  091                throw new ArgumentException("ProtectProvider must not be null!", nameof(ProtectProvider)); - 895590992        } + 895799292        }  93  94  95        /// <summary> @@ -284,7 +284,7 @@

Generated by: ReportGenerator 5.3.8.0
9/24/2026 - 3:38:26 PM
GitHub | reportgenerator.io

+

Methods/Properties

diff --git a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_JsonProtectFileProcessor.html b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_JsonProtectFileProcessor.html index c46faab..ec0c333 100644 --- a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_JsonProtectFileProcessor.html +++ b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_JsonProtectFileProcessor.html @@ -29,7 +29,7 @@

< Summary - Code Coverage and Repor Tag: -103_36020835951 +108_36033389287

@@ -448,7 +448,7 @@

Generated by: ReportGenerator 5.3.8.0
9/24/2026 - 3:38:26 PM
GitHub | reportgenerator.io

+

Methods/Properties

diff --git a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_JsonWithCommentsProtectFileProcessor.html b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_JsonWithCommentsProtectFileProcessor.html index f5d749f..d4e468d 100644 --- a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_JsonWithCommentsProtectFileProcessor.html +++ b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_JsonWithCommentsProtectFileProcessor.html @@ -29,7 +29,7 @@

< Summary - Code Coverage and Repor Tag: -103_36020835951 +108_36033389287

@@ -447,7 +447,7 @@

Generated by: ReportGenerator 5.3.8.0
9/24/2026 - 3:38:26 PM
GitHub | reportgenerator.io

+

Methods/Properties

diff --git a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_PassthroughProtectConfigurationData.html b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_PassthroughProtectConfigurationData.html index fa70727..2c1897a 100644 --- a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_PassthroughProtectConfigurationData.html +++ b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_PassthroughProtectConfigurationData.html @@ -29,7 +29,7 @@

< Summary - Code Coverage and Repor Tag: -103_36020835951 +108_36033389287

@@ -150,7 +150,7 @@

Generated by: ReportGenerator 5.3.8.0
9/24/2026 - 3:38:26 PM
GitHub | reportgenerator.io

+

Methods/Properties

diff --git a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_PassthroughProtectProvider.html b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_PassthroughProtectProvider.html index c2cbb4e..4f094fd 100644 --- a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_PassthroughProtectProvider.html +++ b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_PassthroughProtectProvider.html @@ -29,7 +29,7 @@

< Summary - Code Coverage and Repor Tag: -103_36020835951 +108_36033389287

@@ -149,7 +149,7 @@

 23        /// <returns>a derived <see cref="IProtectProvider"/> based on the <see cref="subkey"/> parameter</returns>  24        public IProtectProvider CreateNewProviderFromSubkey(String key, String subkey)  25        { - 151958626            return this; + 151672926            return this;  27        }  28  29 @@ -161,7 +161,7 @@

 35        /// <returns>the decrypted string</returns>  36        public String Decrypt(String key, String encryptedValue)  37        { - 303434738            return encryptedValue; + 303113438            return encryptedValue;  39        }  40  41 @@ -173,7 +173,7 @@

 47        /// <returns>the encrypted string</returns>  48        public String Encrypt(String key, String plainTextValue)  49        { - 304101250            return plainTextValue; + 303778750            return plainTextValue;  51        }  52    }  53} @@ -181,7 +181,7 @@

Generated by: ReportGenerator 5.3.8.0
9/24/2026 - 3:38:26 PM
GitHub | reportgenerator.io

+

Methods/Properties

diff --git a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectFileOptions.html b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectFileOptions.html index e36403e..a2632ad 100644 --- a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectFileOptions.html +++ b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectFileOptions.html @@ -29,7 +29,7 @@

< Summary - Code Coverage and Repor Tag: -103_36020835951 +108_36033389287

@@ -446,7 +446,7 @@

Generated by: ReportGenerator 5.3.8.0
9/24/2026 - 3:38:26 PM
GitHub | reportgenerator.io

+

Methods/Properties

diff --git a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectProviderConfigurationData.html b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectProviderConfigurationData.html index 27003fd..a8cf978 100644 --- a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectProviderConfigurationData.html +++ b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectProviderConfigurationData.html @@ -29,7 +29,7 @@

< Summary - Code Coverage and Repor Tag: -103_36020835951 +108_36033389287

@@ -284,7 +284,7 @@

Generated by: ReportGenerator 5.3.8.0
9/24/2026 - 3:38:26 PM
GitHub | reportgenerator.io

+

Methods/Properties

diff --git a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectedConfigurationBuilder.html b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectedConfigurationBuilder.html index 2d9e696..2b0451b 100644 --- a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectedConfigurationBuilder.html +++ b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectedConfigurationBuilder.html @@ -29,7 +29,7 @@

< Summary - Code Coverage and Repor Tag: -103_36020835951 +108_36033389287

@@ -277,7 +277,7 @@

Generated by: ReportGenerator 5.3.8.0
9/24/2026 - 3:38:26 PM
GitHub | reportgenerator.io

+

Methods/Properties

diff --git a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectedConfigurationProvider.html b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectedConfigurationProvider.html index 3617391..0432e9d 100644 --- a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectedConfigurationProvider.html +++ b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_ProtectedConfigurationProvider.html @@ -29,7 +29,7 @@

< Summary - Code Coverage and Repor Tag: -103_36020835951 +108_36033389287

@@ -268,21 +268,21 @@

 133            // the speed improvement is more than 3000 times!  72134            if (((dataProperty = ProviderData) != null))  135            { - 51325004136                foreach (var key in dataProperty.Keys.ToList()) + 51334820136                foreach (var key in dataProperty.Keys.ToList())  137                { - 25662430138                    if (!String.IsNullOrEmpty(dataProperty[key])) - 21709863139                        Provider.Set(key, ProtectProviderConfigurationData.ProtectedRegex.Replace(dataProperty[key], me  - 21709863140                        { - 21709863141 - 21709863142                            var subPurposePresent = !String.IsNullOrEmpty(me.Groups["subPurpose"]?.Value); - 21709863143 - 21709863144                            IProtectProvider protectProvider = ProtectProviderConfigurationData.ProtectProvider; - 21709863145 - 21709863146                            if (subPurposePresent) - 21709863147                                protectProvider = protectProvider.CreateNewProviderFromSubkey(key, me.Groups["subPurpose - 21709863148 - 21709863149                            return protectProvider.Decrypt(key, me.Groups["protectedData"].Value); - 21709863150                        })); + 25667338138                    if (!String.IsNullOrEmpty(dataProperty[key])) + 21715490139                        Provider.Set(key, ProtectProviderConfigurationData.ProtectedRegex.Replace(dataProperty[key], me  + 21715490140                        { + 21715490141 + 21715490142                            var subPurposePresent = !String.IsNullOrEmpty(me.Groups["subPurpose"]?.Value); + 21715490143 + 21715490144                            IProtectProvider protectProvider = ProtectProviderConfigurationData.ProtectProvider; + 21715490145 + 21715490146                            if (subPurposePresent) + 21715490147                                protectProvider = protectProvider.CreateNewProviderFromSubkey(key, me.Groups["subPurpose + 21715490148 + 21715490149                            return protectProvider.Decrypt(key, me.Groups["protectedData"].Value); + 21715490150                        }));  151                }  152            }  153            else @@ -389,7 +389,7 @@

Generated by: ReportGenerator 5.3.8.0
9/24/2026 - 3:38:26 PM
GitHub | reportgenerator.io

+

Methods/Properties

diff --git a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_RawProtectFileProcessor.html b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_RawProtectFileProcessor.html index 20f7528..e932253 100644 --- a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_RawProtectFileProcessor.html +++ b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_RawProtectFileProcessor.html @@ -29,7 +29,7 @@

< Summary - Code Coverage and Repor Tag: -103_36020835951 +108_36033389287

@@ -446,7 +446,7 @@

Generated by: ReportGenerator 5.3.8.0
9/24/2026 - 3:38:26 PM
GitHub | reportgenerator.io

+

Methods/Properties

diff --git a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_XmlProtectFileProcessor.html b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_XmlProtectFileProcessor.html index ed11326..d10ff21 100644 --- a/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_XmlProtectFileProcessor.html +++ b/misc/last_build_artifacts/Fededim.Extensions.Configuration.Protected_XmlProtectFileProcessor.html @@ -29,7 +29,7 @@

< Summary - Code Coverage and Repor Tag: -103_36020835951 +108_36033389287

@@ -422,33 +422,33 @@

 297            String value;  298  299            // protects all element attribute values - 9207204300            foreach (var attribute in element.Attributes()) + 9201784300            foreach (var attribute in element.Attributes())  301            { - 333754302                value = attribute.Value; - 333754303                if (protectRegex.IsMatch(value)) - 147071304                    attribute.Value = protectFunction(attribute.Name.LocalName, value); + 333075302                value = attribute.Value; + 333075303                if (protectRegex.IsMatch(value)) + 146693304                    attribute.Value = protectFunction(attribute.Name.LocalName, value);  305            }  306 - 4269848307            if (element.HasElements) + 4267817307            if (element.HasElements)  308            {  309                // recursively protects nested elements - 9739440310                foreach (var nestedElement in element.Elements()) - 4269840311                    ProtectXmlNodes(nestedElement, protectRegex, protectFunction); + 9737350310                foreach (var nestedElement in element.Elements()) + 4267809311                    ProtectXmlNodes(nestedElement, protectRegex, protectFunction);  312            }  313            else  314            {  315                // protects element value if it has no children elements - 3669968316                value = element.Value; - 3669968317                if (protectRegex.IsMatch(value)) - 1450439318                    element.Value = protectFunction(element.Name.LocalName, value); + 3666951316                value = element.Value; + 3666951317                if (protectRegex.IsMatch(value)) + 1450463318                    element.Value = protectFunction(element.Name.LocalName, value);  319            } - 4269848320        } + 4267817320        }  321    }  322}

- +

Methods/Properties

diff --git a/misc/last_build_artifacts/SummaryGithub.md b/misc/last_build_artifacts/SummaryGithub.md index 44f0a22..638b4d2 100644 --- a/misc/last_build_artifacts/SummaryGithub.md +++ b/misc/last_build_artifacts/SummaryGithub.md @@ -3,9 +3,9 @@ ||| |:---|:---| -| Generated on: | 9/24/2026 - 3:38:26 PM | -| Coverage date: | 9/24/2026 - 3:36:46 PM - 9/24/2026 - 3:37:48 PM | -| Parser: | MultiReport (4x Cobertura) | +| Generated on: | 9/24/2026 - 5:25:19 PM | +| Coverage date: | 9/24/2026 - 5:24:06 PM - 9/24/2026 - 5:25:08 PM | +| Parser: | MultiReport (3x Cobertura) | | Assemblies: | 2 | | Classes: | 14 | | Files: | 9 | @@ -18,7 +18,7 @@ | Covered branches: | 68 | | Total branches: | 158 | | **Method coverage:** | [Feature is only available for sponsors](https://reportgenerator.io/pro) | -| Tag: | 103_36020835951 | +| Tag: | 108_36033389287 | diff --git a/misc/last_build_artifacts/index.htm b/misc/last_build_artifacts/index.htm index 6e46f1a..827009c 100644 --- a/misc/last_build_artifacts/index.htm +++ b/misc/last_build_artifacts/index.htm @@ -17,7 +17,7 @@

Summary - Code Coverage and ReportsMultiReport (4x Cobertura) +MultiReport (3x Cobertura) Assemblies: @@ -33,11 +33,11 @@

Summary - Code Coverage and Reports103_36020835951 +108_36033389287 Coverage date: -9/24/2026 - 3:36:46 PM - 9/24/2026 - 3:37:48 PM +9/24/2026 - 5:24:06 PM - 9/24/2026 - 5:25:08 PM

@@ -198,7 +198,7 @@

Coverage

- +