c# - 从本地机器商店中的证书创建 CngKey 以用于 ECDsaCng(CngKey)?

标签 c# x509certificate signing elliptic-curve jwt

我一直在努力思考 ECDsaCng、CngKey 并使用有效的 EC 证书进行签名。该证书由“Symantec Class 3 ECC 256 bit Extended Validation CA”颁发,签名算法为“sha256ECDSA”,签名哈希算法为“sha256”,公钥参数=“ECDSA_P256”, key 用法=“数字签名( 80)”。

除了 ECDsaCng 之外,我还尝试将 JwtSecurityTokenHandler 与证书一起使用,但出现“不支持证书算法”的异常。使用“标准”2048 位 SSL 证书可以正常工作。

我需要做的是用 ES256 签署一个 JWT,到目前为止,这只能通过使用带有 ECDsaCng 的“随机生成”的 256 位 key 来实现,所以对这些问题中的任何一个的回答都会让我开心:

  1. 如何订购可与 JwtSecurityTokenHandler 一起用于执行 ES256 签名的有效证书?

  2. 如何从商店中的证书创建 CngKey? (证书的私钥不可导出。)

  3. 有没有其他方法可以使用 ES256 和无法从商店导出的证书私钥进行签名?

非常感谢任何帮助!

最好的问候,

亨里克

最佳答案

.NET 4.6.1 为执行 ECDSA 添加了更好的支持。特别是 GetECDsaPrivateKey (extension) method .

由于签名和验证方法在 ECDsa 基类上(自 .NET 4.6.1 起),您实际上不需要直接使用 ECDsaCng 类型,除非您尝试与命名的系统 key 进行交互或其他直接系统互操作。

关于c# - 从本地机器商店中的证书创建 CngKey 以用于 ECDsaCng(CngKey)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22043776/

相关文章:

java - CertandKeygen 的替代方案,用于在 Java 中生成自签名证书

certificate - SSL 证书可以用于对文件进行数字签名吗?

windows - 我应该使用哪种类型的证书对 Windows 桌面应用程序进行代码签名?

c# - 如何命名遍历树的方法和属性,就像在完全展开的文件夹浏览器中向下移动一样?

c# - 编译器错误地指示使用未分配的局部变量错误

c# - 如何正确使用 "this"访问表单控件?

c# - ILMerge问题

wcf - C# WCF 客户端错误 "The private key is not present in the X.509 certificate"

azure - 使用azure管理库时有没有办法缩小授权范围?

android - 有关为 Amazon Android App Store 准备 apk 的问题