2

我一直试图围绕 ECDsaCng、CngKey 和有效的 EC 证书进行签名。该证书由“Symantec Class 3 ECC 256 bit Extended Validation CA”颁发,签名算法为“sha256ECDSA”,签名哈希算法为“sha256”,公钥参数=“ECDSA_P256”,密钥用法=“数字签名( 80)”。

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

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

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

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

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

几乎任何帮助表示赞赏!

此致,

亨里克

4

1 回答 1

1

.NET 4.6.1 显着增加了对执行 ECDSA 的支持。特别是GetECDsaPrivateKey(扩展)方法

由于签名和验证方法位于 ECDsa 基类(从 .NET 4.6.1 开始),因此您实际上不需要直接使用 ECDsaCng 类型,除非您尝试与命名系统密钥或其他直接交互系统互操作。

于 2016-08-12T15:25:19.193 回答