1*7c568831SAndroid Build Coastguard Worker /* 2*7c568831SAndroid Build Coastguard Worker * Summary: Provide Canonical XML and Exclusive XML Canonicalization 3*7c568831SAndroid Build Coastguard Worker * Description: the c14n modules provides a 4*7c568831SAndroid Build Coastguard Worker * 5*7c568831SAndroid Build Coastguard Worker * "Canonical XML" implementation 6*7c568831SAndroid Build Coastguard Worker * http://www.w3.org/TR/xml-c14n 7*7c568831SAndroid Build Coastguard Worker * 8*7c568831SAndroid Build Coastguard Worker * and an 9*7c568831SAndroid Build Coastguard Worker * 10*7c568831SAndroid Build Coastguard Worker * "Exclusive XML Canonicalization" implementation 11*7c568831SAndroid Build Coastguard Worker * http://www.w3.org/TR/xml-exc-c14n 12*7c568831SAndroid Build Coastguard Worker 13*7c568831SAndroid Build Coastguard Worker * Copy: See Copyright for the status of this software. 14*7c568831SAndroid Build Coastguard Worker * 15*7c568831SAndroid Build Coastguard Worker * Author: Aleksey Sanin <[email protected]> 16*7c568831SAndroid Build Coastguard Worker */ 17*7c568831SAndroid Build Coastguard Worker #ifndef __XML_C14N_H__ 18*7c568831SAndroid Build Coastguard Worker #define __XML_C14N_H__ 19*7c568831SAndroid Build Coastguard Worker 20*7c568831SAndroid Build Coastguard Worker #include <libxml/xmlversion.h> 21*7c568831SAndroid Build Coastguard Worker 22*7c568831SAndroid Build Coastguard Worker #ifdef LIBXML_C14N_ENABLED 23*7c568831SAndroid Build Coastguard Worker 24*7c568831SAndroid Build Coastguard Worker #include <libxml/tree.h> 25*7c568831SAndroid Build Coastguard Worker #include <libxml/xpath.h> 26*7c568831SAndroid Build Coastguard Worker 27*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus 28*7c568831SAndroid Build Coastguard Worker extern "C" { 29*7c568831SAndroid Build Coastguard Worker #endif /* __cplusplus */ 30*7c568831SAndroid Build Coastguard Worker 31*7c568831SAndroid Build Coastguard Worker /* 32*7c568831SAndroid Build Coastguard Worker * XML Canonicalization 33*7c568831SAndroid Build Coastguard Worker * http://www.w3.org/TR/xml-c14n 34*7c568831SAndroid Build Coastguard Worker * 35*7c568831SAndroid Build Coastguard Worker * Exclusive XML Canonicalization 36*7c568831SAndroid Build Coastguard Worker * http://www.w3.org/TR/xml-exc-c14n 37*7c568831SAndroid Build Coastguard Worker * 38*7c568831SAndroid Build Coastguard Worker * Canonical form of an XML document could be created if and only if 39*7c568831SAndroid Build Coastguard Worker * a) default attributes (if any) are added to all nodes 40*7c568831SAndroid Build Coastguard Worker * b) all character and parsed entity references are resolved 41*7c568831SAndroid Build Coastguard Worker * In order to achieve this in libxml2 the document MUST be loaded with 42*7c568831SAndroid Build Coastguard Worker * following options: XML_PARSE_DTDATTR | XML_PARSE_NOENT 43*7c568831SAndroid Build Coastguard Worker */ 44*7c568831SAndroid Build Coastguard Worker 45*7c568831SAndroid Build Coastguard Worker /* 46*7c568831SAndroid Build Coastguard Worker * xmlC14NMode: 47*7c568831SAndroid Build Coastguard Worker * 48*7c568831SAndroid Build Coastguard Worker * Predefined values for C14N modes 49*7c568831SAndroid Build Coastguard Worker * 50*7c568831SAndroid Build Coastguard Worker */ 51*7c568831SAndroid Build Coastguard Worker typedef enum { 52*7c568831SAndroid Build Coastguard Worker XML_C14N_1_0 = 0, /* Original C14N 1.0 spec */ 53*7c568831SAndroid Build Coastguard Worker XML_C14N_EXCLUSIVE_1_0 = 1, /* Exclusive C14N 1.0 spec */ 54*7c568831SAndroid Build Coastguard Worker XML_C14N_1_1 = 2 /* C14N 1.1 spec */ 55*7c568831SAndroid Build Coastguard Worker } xmlC14NMode; 56*7c568831SAndroid Build Coastguard Worker 57*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 58*7c568831SAndroid Build Coastguard Worker xmlC14NDocSaveTo (xmlDocPtr doc, 59*7c568831SAndroid Build Coastguard Worker xmlNodeSetPtr nodes, 60*7c568831SAndroid Build Coastguard Worker int mode, /* a xmlC14NMode */ 61*7c568831SAndroid Build Coastguard Worker xmlChar **inclusive_ns_prefixes, 62*7c568831SAndroid Build Coastguard Worker int with_comments, 63*7c568831SAndroid Build Coastguard Worker xmlOutputBufferPtr buf); 64*7c568831SAndroid Build Coastguard Worker 65*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 66*7c568831SAndroid Build Coastguard Worker xmlC14NDocDumpMemory (xmlDocPtr doc, 67*7c568831SAndroid Build Coastguard Worker xmlNodeSetPtr nodes, 68*7c568831SAndroid Build Coastguard Worker int mode, /* a xmlC14NMode */ 69*7c568831SAndroid Build Coastguard Worker xmlChar **inclusive_ns_prefixes, 70*7c568831SAndroid Build Coastguard Worker int with_comments, 71*7c568831SAndroid Build Coastguard Worker xmlChar **doc_txt_ptr); 72*7c568831SAndroid Build Coastguard Worker 73*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 74*7c568831SAndroid Build Coastguard Worker xmlC14NDocSave (xmlDocPtr doc, 75*7c568831SAndroid Build Coastguard Worker xmlNodeSetPtr nodes, 76*7c568831SAndroid Build Coastguard Worker int mode, /* a xmlC14NMode */ 77*7c568831SAndroid Build Coastguard Worker xmlChar **inclusive_ns_prefixes, 78*7c568831SAndroid Build Coastguard Worker int with_comments, 79*7c568831SAndroid Build Coastguard Worker const char* filename, 80*7c568831SAndroid Build Coastguard Worker int compression); 81*7c568831SAndroid Build Coastguard Worker 82*7c568831SAndroid Build Coastguard Worker 83*7c568831SAndroid Build Coastguard Worker /** 84*7c568831SAndroid Build Coastguard Worker * This is the core C14N function 85*7c568831SAndroid Build Coastguard Worker */ 86*7c568831SAndroid Build Coastguard Worker /** 87*7c568831SAndroid Build Coastguard Worker * xmlC14NIsVisibleCallback: 88*7c568831SAndroid Build Coastguard Worker * @user_data: user data 89*7c568831SAndroid Build Coastguard Worker * @node: the current node 90*7c568831SAndroid Build Coastguard Worker * @parent: the parent node 91*7c568831SAndroid Build Coastguard Worker * 92*7c568831SAndroid Build Coastguard Worker * Signature for a C14N callback on visible nodes 93*7c568831SAndroid Build Coastguard Worker * 94*7c568831SAndroid Build Coastguard Worker * Returns 1 if the node should be included 95*7c568831SAndroid Build Coastguard Worker */ 96*7c568831SAndroid Build Coastguard Worker typedef int (*xmlC14NIsVisibleCallback) (void* user_data, 97*7c568831SAndroid Build Coastguard Worker xmlNodePtr node, 98*7c568831SAndroid Build Coastguard Worker xmlNodePtr parent); 99*7c568831SAndroid Build Coastguard Worker 100*7c568831SAndroid Build Coastguard Worker XMLPUBFUN int 101*7c568831SAndroid Build Coastguard Worker xmlC14NExecute (xmlDocPtr doc, 102*7c568831SAndroid Build Coastguard Worker xmlC14NIsVisibleCallback is_visible_callback, 103*7c568831SAndroid Build Coastguard Worker void* user_data, 104*7c568831SAndroid Build Coastguard Worker int mode, /* a xmlC14NMode */ 105*7c568831SAndroid Build Coastguard Worker xmlChar **inclusive_ns_prefixes, 106*7c568831SAndroid Build Coastguard Worker int with_comments, 107*7c568831SAndroid Build Coastguard Worker xmlOutputBufferPtr buf); 108*7c568831SAndroid Build Coastguard Worker 109*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus 110*7c568831SAndroid Build Coastguard Worker } 111*7c568831SAndroid Build Coastguard Worker #endif /* __cplusplus */ 112*7c568831SAndroid Build Coastguard Worker 113*7c568831SAndroid Build Coastguard Worker #endif /* LIBXML_C14N_ENABLED */ 114*7c568831SAndroid Build Coastguard Worker #endif /* __XML_C14N_H__ */ 115*7c568831SAndroid Build Coastguard Worker 116