[xml] Canonicalization (C14N) of an XML element
- From: Göran Halfvarson <goooran gmail com>
- To: xml gnome org
- Subject: [xml] Canonicalization (C14N) of an XML element
- Date: Tue, 8 Feb 2005 20:05:15 +0100
We are working with XML Digital Signatures, see
http://www.w3.org/TR/xmldsig-core/
I would like to see functions for canonicalization of a single given
XML element,
including its attributes, subelements and contents.
I did not find any such functions, so I made my own functions, see below.
My problem is that only the given element, *without* its attributes,
subelements and contents, is canonicalized (output).
E.g. "<xxx></xxx>"
I am a newbie to libxml2, and I am not familiar with XPath, nor
libxml2's NodeSet.
Please tell me if I am going in the wrong direction.
Here is how I tried to do it:
As far as I can see I can:
- use xmlC14NDocDumpMemory to dump canonicalized to memory
- use xmlC14NDocSave to dump canonicalized to file
These functions take the parameter 'xmlNodeSetPtr nodes', described as
"The nodes set to be included in the canonized image,
or NULL if all document nodes should be included."
So I built a node set, consisting of my single element node.
Should I build a node set including all sub-nodes?
Here is the source code:
int My_xmlC14NElementDumpMemory(xmlNode* Node_p, xmlChar** DocText_pp)
{
int Len = -1;
if ((NULL != Node_p) && (NULL != DocText_pp))
{
xmlNodeSetPtr NodeSet_p = xmlXPathNodeSetCreate(Node_p);
if (NULL != NodeSet_p)
{
Len = xmlC14NDocDumpMemory(
Node_p->doc,
NodeSet_p,
1, //int exclusive
NULL, //xmlChar ** inclusive_ns_prefixes
0, //int with_comments
DocText_pp);
xmlXPathFreeNodeSet(NodeSet_p);
}
}
return Len;
}
int My_xmlC14NElementSave(xmlNode* Node_p, char* FilePathAndName_p)
{
return -1; // will use xmlC14NDocSave
}
Best regards,
Göran Halfvarson
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]