我需要使用RSA-SHA1算法對XML文檔的其中一個節點進行簽名(並最終驗證)。 w3.org link如何使用RSA-SHA1算法簽名xml元素?
RSA-SHA1 URI:
http://www.w3.org/2000/09/xmldsig#rsa-sha1
中指定:
節6.4.2 [XMLDSIG-CORE2002]
我下面this example,但想不通怎麼改要求的算法。
簽名產生髮生在這裏:
signedXml.ComputeSignature();
與參數的唯一覆蓋預計KeyedHashAlgorithm
:
public void ComputeSignature(KeyedHashAlgorithm macAlg);
(link)
KeyedHashAlgorithm
(link)又只允許創建HMAC *和MAC *算法,並且沒有RSA-SHA1。
在.NET中用RSA-SHA1簽署XML最無痛的方式是什麼?
編輯:
我試圖用一個X509證書提取的關鍵。證書的簽名算法屬性是sha1RSA
。
這是我如何分配給它:
var signedXml = new SignedXml(xmlDoc);
...
signedXml.SigningKey = (RSACryptoServiceProvider)cert.PrivateKey;
...
signedXml.ComputeSignature();
產生的簽名XML格式匹配預期之一,然而digest
和signature
值無效。
@ user5226582 Ah,SignedXml.SignatureMethod是可寫SignedXml.SignatureInfo.SignatureMethod的只讀投影。修復了答案。 – bartonjs
幫助,非常感謝! – user5226582