2014-02-26 44 views
2

我一直試圖圍繞ECDsaCng,CngKey和簽署一個有效的EC證書。該證書由「Symantec Class 3 ECC 256位擴展驗證CA」頒發,具有「sha256ECDSA」的簽名算法,「sha256」的簽名散列算法,公鑰參數=「ECDSA_P256」和密鑰用法=「Digital Signature( 80)」。從localmachine商店的cert中創建CngKey以與ECDsaCng(CngKey)一起使用?

除了ECDsaCng我已經嘗試使用JwtSecurityTokenHandler與證書,但我得到「證書算法不支持」異常。使用Works的「標準」2048位SSL證書。

我需要做的是用ES256簽署JWT,到目前爲止,這隻能通過使用256位隨機生成的密鑰和ECDsaCng來實現,所以對這些問題的答案真的會讓我有一天:

  1. 如何訂購可以與JwtSecurityTokenHandler一起使用的有效證書來執行ES256簽名?

  2. 如何從商店中的證書創建CngKey? (證書的私鑰不可導出。)

  3. 是否有任何其他方式使用ES256和無法從存儲導出的證書私鑰簽名?

幾乎所有的幫助表示讚賞!

最好的問候,

亨裏克

+0

你有沒有這方面的運氣? –

+0

是和不是。我不得不使用本地生成的私人/公共密鑰對。我目前的工作理論是,SSL證書(任何種類的)不能用於登錄Microsoft Cng,因爲這似乎強制證書不應該具有「服務器身份驗證」和「代碼簽名」密鑰用法。簽名證書應僅具有「代碼簽名」密鑰用法。 –

回答

1

.NET 4.6.1加入做ECDSA顯著更好的支持。特別是GetECDsaPrivateKey (extension) method

由於簽名和驗證方法位於ECDsa基類(從.NET 4.6.1起),因此您不需要直接使用ECDsaCng類型,除非您嘗試與命名系統交互密鑰或其他直接系統互操作。

相關問題