Just had a play around and integrated the XSECUri resolver (as apposed to the Xerces resolver) into templatesign. This handles trailing "/" characters fine - mainly because a lack of one gets returned by a web server as a 302 - permanently moved. The Xerces resolver doesn't handle this, but the XSEC one does (mainly because of the interop tests you mentioned :>).
You can call DSIGSignature::setURIResolver() to set a new URI Resolver. There are two classes, XSECURIResolverGenericWin32 and XSECURIResolverGenericUnix, which are re-implementations of the Xerces resolvers that handle 301/302 codes. You can pass the appropriate one into setURIResolver and you should be right.
Cheers, Berin
Berin Lautenbach wrote:
Milan,
I will have a good look at this one the weekend.
I have also been seriously considering a wrapper for the Windows Inet API as it is just the easiest and simplest way to go on the Win platform.
The NIX platform I am not so sure on - any suggestions from anyone welcome.
Cheers, Berin
Milan Tomic wrote:
Which URI resolver are you using? (If you don't set anything you are using XSECURIResolverXerces.
Yes, I didn't set URI resolver. So, I supose I'm using default one.
I am *strongly* considering writing a wrapper for one or two URI handling libraries. *Very* interesting if people have suggestions of good libraries to use. (Xerces has a wrapper for libWWW, but it's not so well supported these days.)
The only URI libraries that I have ever directly used were WinINET (standard Windows libraries). I don't know for any cross platform libraries.
I hope this problem will be solved in the near future, because, Apache C++ libraries would fail on a lot of interoperability tests:
http://www.w3.org/Signature/2001/04/05-xmldsig-interop.html
Best regards, Milan