Создание значения подписи цифровой подписи «вручную»? - PullRequest
0 голосов
/ 21 февраля 2019

Я пользуюсь Salesforce, и мне нужно подписать XML.Проблема в том, что я не могу использовать собственный метод подписи Salesforce, потому что мне нужно поместить подпись в элемент заголовка soap: а это невозможно.В 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, используя мой ключ.

Что-то не так в моем мышлении?

...