## Default SignedXML and SignedXMS algorithms changed to SHA256 ### Scope Minor ### Version Introduced 4.7.1 ### Source Analyzer Status NotPlanned ### Change Description In the .NET Framework 4.7 and earlier, SignedXML and SignedCMS default to SHA1 for some operations. Starting with the .NET Framework 4.7.1, SHA256 is enabled by default for these operations. This change is necessary because SHA1 is no longer considered to be secure. - [X] Quirked - [ ] Build-time break ### Recommended Action There are two new context switch values to control whether SHA1 (insecure) or SHA256 is used by default: - Switch.System.Security.Cryptography.Xml.UseInsecureHashAlgorithms - Switch.System.Security.Cryptography.Pkcs.UseInsecureHashAlgorithms For applications that target the .NET Framework 4.7.1 and later versions, if the use of SHA256 is undesirable, you can restore the default to SHA1 by adding the following configuration switch to the [runtime](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app config file: ```xml ``` For applications that target the .NET Framework 4.7 and earlier versions, you can opt into this change by adding the following configuration switch to the [runtime](~/docs/framework/configure-apps/file-schema/runtime/runtime-element.md) section of your app config file: ```xml ``` ### Affected APIs * `T:System.Security.Cryptography.Pkcs.CmsSigner` * `T:System.Security.Cryptography.Xml.SignedXml` * `T:System.Security.Cryptography.Xml.Reference` ### Category Security