从 .NET 11 开始,macOS 不再支持数字签名算法 (DSA)。 此删除仅影响“有限域”DSA。 椭圆曲线 DSA (EC-DSA) 不受影响。 尝试使用DSA、DSACryptoServiceProvider或其他与DSA交互的API会在macOS上抛出PlatformNotSupportedException。
已引入的版本
.NET 11 预览版 1
以前的行为
以前,DSA 算法及其支持类型、DSADSACryptoServiceProvider和带有 DSA 密钥的 X.509 证书能够在 macOS 上运行。
新行为
DSA 在 macOS 上不再正常工作。 尝试使用DSA、DSACryptoServiceProvider或其他与 DSA 交互的 API 会引发PlatformNotSupportedException。
破坏性变更的类型
此更改为行为更改。
更改原因
macOS 上的 .NET 依赖于操作系统提供 DSA 的实现。 Apple 通过现已过时的名为 SecurityTransforms 的库执行此作,无需更换。 Apple 提供的实现在功能上也受到限制。 它仅支持使用 SHA-1 的 DSA-1024,该 DSA-1 被视为弱。 此外,它从未支持生成 DSA 密钥。
iOS、tvOS 和 MacCatalyst 从未支持 DSA。
建议的措施
从 DSA 算法迁移,并使用新式加密数字签名算法,例如 EC-DSA(椭圆曲线 DSA)。
受影响的 API
- DSA.Create
- DSACryptoServiceProvider 构造函数
- DSACertificateExtensions.GetDSAPrivateKey(X509Certificate2)
- DSACertificateExtensions.GetDSAPublicKey(X509Certificate2)
- DSACertificateExtensions.CopyWithPrivateKey(X509Certificate2, DSA)
此外,任何与 DSA 密钥交互的 API 都会受到影响。