[xmlsec] Question about loading external DTD
Meg Morgan
meg@votehere.net
Thu, 06 Feb 2003 21:23:28 +0000
I'll try to phrase my question better today:
I am not using the command line utility, I am generating encrypted
data in memory and then attempting to decrypt it. It does decrypt
fine, but I get the annoying "validity error" message in my output.
I get this message before I get a chance to tell it where my DTD
is. How do I either:
1) put the dtd URL directly into the encrypted data so it will
know where to find it, or
2) suppress the validity error until I can validate it with the
external dtd.
Here is a code snippet:
xmlDocPtr doc = NULL;
xmlDtdPtr dtd = NULL;
xmlNodePtr cur;
std::string str_edata(encrypted_data); // passed in as argument to my function
int len = str_edata.length();
doc = xmlParseMemory((char *)encrypted_data, len);
if (doc == NULL) {
result = -1;
}
else
{
cur = xmlDocGetRootElement(doc);
if (cur == NULL) {
result = -1;
}
else
{
char * dtdfile = "http://.../my.dtd";
dtd = xmlParseDTD(NULL, (const xmlChar*)dtdfile);
if (dtd != NULL)
{
xmlValidCtxt vctx;
memset(&vctx, 0, sizeof(vctx));
if ( (xmlValidateDtd(&vctx, doc, dtd)) != 1)
{
result = -1;
}
}
else
{
result = -1;
}
}
}
Aleksey Sanin wrote:
>
> In your example "xmlns" is not an attribute but namespace declaration.
> It's very difficult to tell what exactly is wrong with your dtd and file.
> You might try to validate your file against the dtd using LibXML2
> xmllint utility first. It might give you some more information on
> what's wrong.
>
> Aleksey
>
> Meg Morgan wrote:
>
> >Hello,
> >
> >I have upgraded to libxmlsec-0.0.12.win32 and all of the
> >other new windows binaries. I found the code in xmlsec.c
> >which relates to the external dtd when using the command
> >line utility.
> >
> >When I encrypt data, for example, I get something like
> >this:
> >
> ><EncryptedData xmlns="http://www.w3.org/2001/04/xmlenc#">
> >.
> >.
> >.
> ></EncryptedData>
> >
> >When I decrypt, it complains that validation failed, and
> >points to the end of that line (xmlend#). I think I understand
> >how to indicate the external dtd, but how do I get it to either
> >ignore this attribute, or not put it there in the first place?
> >
> >I appreciate your help.
> >meg
> >
> >
> >
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Meg Morgan 425/450-2754
meg@votehere.net http://www.votehere.net