Title: Message
Hello, I wanted to follow up on this and post my solution. In the end, it turned out to be pretty easy. The stumbling block I ran into was that by default, libxml adds 3 I/O handlers, the 3rd being a file handler, which is the default match due to:
 
int
xmlFileMatch (const char *filename ATTRIBUTE_UNUSED) {
    return(1);
}
 
adding my custom handler never got hit, because it is added to the callback list AFTER the defaults, so it never gets hit...
 
solution was to remove them all and then add them back in the order I wanted. So the following snippet of code adds in my CID handler:
 
 xmlSecIOCleanupCallbacks();
#ifdef LIBXML_HTTP_ENABLED
 res = xmlSecIORegisterCallbacks(xmlIOHTTPMatch, xmlIOHTTPOpen,
                       xmlIOHTTPRead, xmlIOHTTPClose);
#endif
#ifdef LIBXML_FTP_ENABLED
 res = xmlSecIORegisterCallbacks(xmlIOFTPMatch, xmlIOFTPOpen,
                       xmlIOFTPRead, xmlIOFTPClose);
#endif
 res = xmlSecIORegisterCallbacks(xmlIOCIDMatch, xmlIOCIDOpen,
                        xmlIOCIDRead, xmlIOCIDClose);
 res = xmlSecIORegisterCallbacks(xmlFileMatch, xmlFileOpen,
                       xmlFileRead, xmlFileClose);
 
Notice my CID handler now gets into the callback pointer list prior to the file handler.
 
The other way to go would be to simply replace the xmlFileXXXX handler with a custom one that knows how to resolved cid: to the correct resource.
 
~R
 
-----Original Message-----
From: Robert Fox
Sent: Friday, October 22, 2004 9:22 AM
To: '[EMAIL PROTECTED]'
Subject: Handling CID: moniker to sign attachments

 
I am new to libxml and xmlsec, and having a hard time figuring out how to wedge in a protocol handler to take care of resolving cid references. I looked at the links below, and just am not sure how this would work for selectively handling cid, but letting everything else (http, ftp, etc) pass through... I have looked through the documentation, and traced the source...
 
my real question is this: By now, I assume that many of you have had to implement handling the signing of attachments, I am just looking for a good starting point of how you implemented this. I assume I have to somehow tap into the xmlSecTransformCtxUriExecute function and do my own file reading... but can't seem to figure out how..
 
any tips/suggestions would be greatly appreciated.
 
I saw a thread in the mail list regarding this, the original answer is posted at the bottom of this email, I have read the links, and still am unsure how to proceed on this.
 
~Rob
 
>> Well, probably the best option for you would be option #2: use special URL protocol
>> in URI attributes like "cid:<attachment id>" and create custom protocol handlers
>> for "cid". Take a look at LibXML2 IO tutorial:
>>
>>     http://xmlsoft.org/xmlio.html
>>
>>and xmlsec API reference:
>>
>>     http://www.aleksey.com/xmlsec/api/xmlsec-io.html
>>
>>And do not forget to register your protocol handlers in both xmlsec and libxml2.
>>
>>Aleksey
_______________________________________________
xmlsec mailing list
[EMAIL PROTECTED]
http://www.aleksey.com/mailman/listinfo/xmlsec

Reply via email to