Hi Andrew,

I had only a quick glance at this, but I think it may hve something to do
with the fact that your "Object" is outside the signature, and you specify
the type of the reference to be a reference to a ds:Object element which
should be at the right place in the ds:Signature.

just my 2c,

Karel.


On Thu, 26 Feb 2004, Andrew wrote:

> Good day once again,
>
> The problem did NOT have to do with the fact that I have multiple signatures in
> a single file. The problem is that a Signature had multiple DSIGReference's to
> Object's outside the signature. Leading to failing to verify after the XML file
> is reloaded from disk.
>
> Here is an example of what I found would NOT work:
>
> <?xml version="1.0" encoding="UTF-8" standalone="no" ?><Blah>
> <Object Id="ObjectA"/>
> <Object Id="ObjectB"/>
> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"; Id="Sig">
> <SignedInfo>
>       <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-
> c14n-20010315"/>
>       <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-
> sha1"/>
>       <Reference URI="#ObjectA">
> ...
>       </Reference>
>       <Reference URI="#ObjectB">
> ...
>       </Reference>
> </SignedInfo>
> <SignatureValue>BntNqBw59jQHGi9YObpFsw1W0y8=
> </SignatureValue>
> </Signature>
> </Blah>
>
> By removing ObjectB from the picture everything worked fine:
>
> <?xml version="1.0" encoding="UTF-8" standalone="no" ?><Blah>
> <Object Id="ObjectA"/>
> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"; Id="Sig">
> <SignedInfo>
>       <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-
> c14n-20010315"/>
>       <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-
> sha1"/>
>       <Reference URI="#ObjectA">
> ...
>       </Reference>
> </SignedInfo>
> <SignatureValue>BntNqBw59jQHGi9YObpFsw1W0y8=
> </SignatureValue>
> </Signature>
> </Blah>
>
>
> Even when a signature was referencing only a single Object outside the Signature
> I was left with:
>
> ->createReference(MAKE_UNICODE_STRING("#Tools"),
> HASH_SHA1, "http://www.w3.org/2000/09/xmldsig#Object";); //Doesn't work
>
> once I removed the 3rd "type" parameter then everything worked fine:
>
> ->createReference(MAKE_UNICODE_STRING("#Tools"); //Works
>
> I then confirmed that the Object was being included in the Signature by
> modifying the contents of the file, and observing a failed verify call.
>
> I feel that these are 2 seperate issues, but I could be wrong.
> Perhaps I'm misinterpretting the W3C description of DSig's and what it's
> capable of doing.
>
> My work around is to include the multiple referenced objects under a single
> parent object. So in essence I'm going to use a single object/reference, rather
> than multiple ones (see below):
>
> <?xml version="1.0" encoding="UTF-8" standalone="no" ?><Blah>
> <Object Id="ParentObj">
>    <Object Id="ObjectA"/>
>    <Object Id="ObjectB"/>
> </Object>
> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"; Id="Sig">
> <SignedInfo>
>       <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-
> c14n-20010315"/>
>       <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-
> sha1"/>
>       <Reference URI="#ParentObj">
> ...
>       </Reference>
> </SignedInfo>
> <SignatureValue>BntNqBw59jQHGi9YObpFsw1W0y8=
> </SignatureValue>
> </Signature>
> </Blah>
>
>
> Sorry for the verbose explanation, but I'm hoping it will help someone to tell
> me what I've done wrong if anything, or it helps them to fix whatever bug this
> may prove to be.
>
> Thanks in advance
>
> Andrew
>

Reply via email to