https://github.com/dotnet/runtime/blob/9e8d0a81a35f05eaa2c4d0ab258ed9a1f4e2ec76/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate2.cs#L937-L963 可能是一个合理的起点......但是它的很多实现使用了.NET Standard 2.1中没有的东西。
1条答案
按热度按时间bis0qfac1#
.NET Standard 2.1是一个不寻常的目标,因为它本质上只是.NET Core开发线(尽管Unity已经更新了他们的.NET副本,使其兼容.NET Standard 2.1)。因此,业界最常见的答案是避免该目标,而只针对满足您需求的.NET Core / .NET 5+版本。
但是,如果您确实希望以.NET标准2.1为目标,则需要
byte[]
(编码内容)或string
(文件名)构造函数加载证书,这两个构造函数都理解PEM格式(但不会加载私钥)。Encoding.Utf8.GetBytes
将其转换为字节cert.GetKeyAlgorithm()
的值了解私钥使用的算法。根据需要调用RSA.Create()、ECDsa.Create()、ECDiffieHellman.Create()或DSA.Create()。X509Certificate2 combined = cert.CopyWithPrivateKey(key);
合并证书和密钥https://github.com/dotnet/runtime/blob/9e8d0a81a35f05eaa2c4d0ab258ed9a1f4e2ec76/src/libraries/System.Security.Cryptography/src/System/Security/Cryptography/X509Certificates/X509Certificate2.cs#L937-L963 可能是一个合理的起点......但是它的很多实现使用了.NET Standard 2.1中没有的东西。