我正在使用Salesforce,并且需要签署一些xml。问题是我无法使用本地Salesforce签名方法,因为我需要将签名放置在soap:header元素中,而这是不可能的。 Salesforce中也没有本地规范化方法。因此,我是通过手动将XML更改为规范化形式来“手动”创建摘要,这很好。然后,将其放入SignedInfo块中,并尝试在该块上运行signwithcertificate方法。我正在使用RSA-SHA1,但是收到的结果却不是我所期望的。我很好奇我遇到的问题是该SignedInfo块的规范化。
我有这个方块:
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#Body">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>AMyUbs9zGUGJ52sFMalRNFFbI5o=</DigestValue>
</Reference>
</SignedInfo>
我可以对此进行规范化
<SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></CanonicalizationMethod><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod><Reference URI="#Body"><Transforms><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod><DigestValue>AMyUbs9zGUGJ52sFMalRNFFbI5o=</DigestValue></Reference></SignedInfo>
然后我将使用我的密钥在RSA-SHA1上签名该数据。
我认为有什么不对吗?