创建“手动”数字签名的签名值?

时间:2019-02-21 18:19:38

标签: xml digital-signature xml-signature

我正在使用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上签名该数据。

我认为有什么不对吗?

0 个答案:

没有答案