Skip to content

Digest calculation with Java endpoint #92

@carbonrobot

Description

@carbonrobot

I am connecting to a java endpoint that calculates the digest in a different way. I believe it has something to do with an option to sign the Timestamp element itself or the Timestamp content.

For the following xml fragment:

<wsu:Timestamp wsu:Id="TS-f3c103e9-1897-43d8-8cf6-274bdb647678">
  <wsu:Created>2016-02-24T15:32:12.693Z</wsu:Created>
  <wsu:Expires>2016-02-24T15:37:12.693Z</wsu:Expires>
</wsu:Timestamp>

Java produces the following transform:

<ds:Reference URI="#TS-f3c103e9-1897-43d8-8cf6-274bdb647678">
    <ds:Transforms>
       <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
          <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="wsse soap"/>
       </ds:Transform>
   </ds:Transforms>
   <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
   <ds:DigestValue>1rjXQQWVMM5KBWY8uswUynk6PCk=</ds:DigestValue>
</ds:Reference>

However, the same xml fragment produces a different digest value using xml-crypto. I am assuming it has something to do with canonicalization between node and java.

In java, there is an option to sign the "contents" or the "element". By default it signs the contents, although its difficult to tell what that really means.

Is there a known issue when interop between java/soap and other libs? Is there someway to solve the mismatch?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions