summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-05-13 15:59:26 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-05-13 15:59:26 +0000
commitbe07d39939733ae7b69f9c324e7f9bc21aab4913 (patch)
tree8c35218317d9bc4b6ae427c34533f44e455b44fe
parent2fc2c93eb6c3712d45a87cb19ebd2f6fd01be58d (diff)
downloadlasso-be07d39939733ae7b69f9c324e7f9bc21aab4913.tar.gz
lasso-be07d39939733ae7b69f9c324e7f9bc21aab4913.tar.xz
lasso-be07d39939733ae7b69f9c324e7f9bc21aab4913.zip
*** empty log message ***
-rw-r--r--lasso/xml/xml.c596
-rw-r--r--lasso/xml/xml.h113
2 files changed, 375 insertions, 334 deletions
diff --git a/lasso/xml/xml.c b/lasso/xml/xml.c
index 858458af..402cd6af 100644
--- a/lasso/xml/xml.c
+++ b/lasso/xml/xml.c
@@ -24,7 +24,6 @@
#include <lasso/xml/xml.h>
#include <lasso/xml/ds_signature.h>
-#include "../export.h"
struct _LassoNodePrivate
{
@@ -36,15 +35,6 @@ struct _LassoNodePrivate
/* virtual public methods */
/*****************************************************************************/
-gchar *
-lasso_node_build_query(LassoNode *node)
-{
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
-
- LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
- return (class->build_query(node));
-}
-
LassoNode *
lasso_node_copy(LassoNode *node)
{
@@ -65,6 +55,44 @@ lasso_node_dump(LassoNode *node,
return (class->dump(node, encoding, format));
}
+xmlChar *
+lasso_node_export(LassoNode *node)
+{
+ g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+
+ LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
+ return (class->export(node));
+}
+
+xmlChar *
+lasso_node_export_to_base64(LassoNode *node)
+{
+ g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+
+ LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
+ return (class->export_to_base64(node));
+}
+
+gchar *
+lasso_node_export_to_query(LassoNode *node,
+ gint sign_method,
+ const gchar *private_key_file)
+{
+ g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+
+ LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
+ return (class->export_to_query(node, sign_method, private_key_file));
+}
+
+xmlChar *
+lasso_node_export_to_soap(LassoNode *node)
+{
+ g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+
+ LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
+ return (class->export_to_soap(node));
+}
+
LassoAttr *
lasso_node_get_attr(LassoNode *node,
const xmlChar *name)
@@ -144,13 +172,13 @@ lasso_node_get_name(LassoNode *node)
}
void
-lasso_node_load_from_buffer(LassoNode *node,
- const char *buffer)
+lasso_node_import(LassoNode *node,
+ const xmlChar *buffer)
{
g_return_if_fail(LASSO_IS_NODE(node));
LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
- class->load_from_buffer(node, buffer);
+ class->import(node, buffer);
}
void
@@ -164,36 +192,6 @@ lasso_node_rename_prop(LassoNode *node,
class->rename_prop(node, old_name, new_name);
}
-GData *
-lasso_node_serialize(LassoNode *node,
- GData *gd)
-{
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
-
- LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
- return (class->serialize(node, gd));
-}
-
-gchar *
-lasso_node_soap_envelop(LassoNode *node)
-{
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
-
- LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
- return (class->soap_envelop(node));
-}
-
-gchar *
-lasso_node_url_encode(LassoNode *node,
- gint sign_method,
- const gchar *private_key_file)
-{
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
-
- LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
- return (class->url_encode(node, sign_method, private_key_file));
-}
-
gint
lasso_node_verify_signature(LassoNode *node,
const gchar *certificate_file)
@@ -231,6 +229,15 @@ lasso_node_add_signature(LassoNode *node,
class->add_signature(node, sign_method, private_key_file, certificate_file);
}
+static gchar *
+lasso_node_build_query(LassoNode *node)
+{
+ g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+
+ LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
+ return (class->build_query(node));
+}
+
static xmlNodePtr
lasso_node_get_xmlNode(LassoNode *node)
{
@@ -264,6 +271,16 @@ lasso_node_new_child(LassoNode *node,
class->new_child(node, name, content, unbounded);
}
+static GData *
+lasso_node_serialize(LassoNode *node,
+ GData *gd)
+{
+ g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+
+ LassoNodeClass *class = LASSO_NODE_GET_CLASS(node);
+ return (class->serialize(node, gd));
+}
+
static void
lasso_node_set_name(LassoNode *node,
const xmlChar *name)
@@ -310,72 +327,6 @@ lasso_node_set_xmlNode(LassoNode *node,
/* implementation methods */
/*****************************************************************************/
-static void gdata_build_query_foreach_func(GQuark key_id,
- gpointer data,
- gpointer user_data) {
- guint i;
- GString *str;
- GPtrArray *array;
-
- array = g_ptr_array_new();
- str = g_string_new("");
- for (i=0; i<((GPtrArray *)data)->len; i++) {
- str = g_string_append(str, g_ptr_array_index((GPtrArray *)data, i));
- if (i<((GPtrArray *)data)->len - 1) {
- str = g_string_append(str, " ");
- }
- }
- g_ptr_array_add(array, g_strdup((gpointer)g_quark_to_string(key_id)));
- g_ptr_array_add(array, str->str);
- g_string_free(str, FALSE);
- g_ptr_array_add((GPtrArray *)user_data, array);
-}
-
-static gchar *
-lasso_node_impl_build_query(LassoNode *node)
-{
- guint i, j;
- GData *gd;
- GPtrArray *a, *aa;
- GString *query;
- xmlChar *str_escaped;
- gchar *ret;
-
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
-
- gd = lasso_node_serialize(node, NULL);
- a = g_ptr_array_new();
- /* transform dict into array
- each key => [val1, val2, ...] of dict become [key, "val1 val2 ..."] */
- g_datalist_foreach(&gd, gdata_build_query_foreach_func, a);
-
- query = g_string_new("");
- for (i=0; i<a->len; i++) {
- aa = g_ptr_array_index(a, i);
- query = g_string_append(query, g_ptr_array_index(aa, 0));
- query = g_string_append(query, "=");
- str_escaped = lasso_str_escape(g_ptr_array_index(aa, 1));
- query = g_string_append(query, str_escaped);
- xmlFree(str_escaped);
- if (i<a->len - 1) {
- query = g_string_append(query, "&");
- }
- /* free allocated memory for array aa */
- for (j=0; j<aa->len; j++) {
- g_free(aa->pdata[j]);
- }
- g_ptr_array_free(aa, TRUE);
- }
- /* free allocated memory for array a */
- g_ptr_array_free(a, TRUE);
- g_datalist_clear(&gd);
-
- ret = g_strdup(query->str);
- g_string_free(query, TRUE);
-
- return (ret);
-}
-
static LassoNode *
lasso_node_impl_copy(LassoNode *node)
{
@@ -424,6 +375,96 @@ lasso_node_impl_dump(LassoNode *node,
return (ret);
}
+static xmlChar *
+lasso_node_impl_export(LassoNode *node)
+{
+ /* using lasso_node_impl_dump because dump method can be overrided */
+ return (lasso_node_impl_dump(node, "utf-8", 1));
+}
+
+static xmlChar *
+lasso_node_impl_export_to_base64(LassoNode *node)
+{
+ xmlChar *buffer, *ret;
+
+ buffer = lasso_node_impl_dump(node, "utf-8", 1);
+ ret = xmlSecBase64Encode((const xmlSecByte *) buffer,
+ (xmlSecSize)strlen((const char *)buffer), 0);
+ xmlFree(buffer);
+
+ return (ret);
+}
+
+static gchar *
+lasso_node_impl_export_to_query(LassoNode *node,
+ gint sign_method,
+ const gchar *private_key_file)
+{
+ GString *query;
+ xmlDocPtr doc;
+ xmlChar *str1, *str2, *str_escaped;
+ gchar *unsigned_query, *ret;
+
+ g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+
+ unsigned_query = lasso_node_build_query(node);
+ query = g_string_new(unsigned_query);
+ g_free(unsigned_query);
+
+ if (sign_method > 0 && private_key_file != NULL) {
+ query = g_string_append(query, "&SigAlg=");
+ switch (sign_method) {
+ case lassoSignatureMethodRsaSha1:
+ str_escaped = lasso_str_escape((xmlChar *)xmlSecHrefRsaSha1);
+ query = g_string_append(query, str_escaped);
+ doc = lasso_str_sign(query->str, xmlSecTransformRsaSha1Id, private_key_file);
+ break;
+ case lassoSignatureMethodDsaSha1:
+ str_escaped = lasso_str_escape((xmlChar *)xmlSecHrefDsaSha1);
+ query = g_string_append(query, str_escaped);
+ doc = lasso_str_sign(query->str, xmlSecTransformDsaSha1Id, private_key_file);
+ break;
+ }
+ xmlFree(str_escaped);
+ query = g_string_append(query, "&Signature=");
+ str1 = lasso_doc_get_node_content(doc, xmlSecNodeSignatureValue);
+ str2 = lasso_str_escape(str1);
+ xmlFree(str1);
+ query = g_string_append(query, str2);
+ xmlFree(str2);
+ xmlFreeDoc(doc);
+ }
+
+ ret = g_strdup(query->str);
+ g_string_free(query, TRUE);
+ return (ret);
+}
+
+static xmlChar *
+lasso_node_impl_export_to_soap(LassoNode *node)
+{
+ LassoNode *envelope, *body;
+ xmlChar *buffer;
+
+ g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+
+ envelope = lasso_node_new();
+ lasso_node_set_name(envelope, "Envelope");
+ lasso_node_set_ns(envelope, lassoSoapEnvHRef, lassoSoapEnvPrefix);
+
+ body = lasso_node_new();
+ lasso_node_set_name(body, "Body");
+ lasso_node_set_ns(body, lassoSoapEnvHRef, lassoSoapEnvPrefix);
+
+ lasso_node_add_child(body, lasso_node_copy(node), 0);
+ lasso_node_add_child(envelope, body, 0);
+
+ buffer = lasso_node_export(envelope);
+ g_object_unref(G_OBJECT(envelope));
+
+ return(buffer);
+}
+
static LassoAttr*
lasso_node_impl_get_attr(LassoNode *node,
const xmlChar *name)
@@ -553,8 +594,8 @@ lasso_node_impl_get_name(LassoNode *node)
}
static void
-lasso_node_impl_load_from_buffer(LassoNode *node,
- const char *buffer)
+lasso_node_impl_import(LassoNode *node,
+ const xmlChar *buffer)
{
xmlDocPtr doc;
xmlNodePtr root;
@@ -588,154 +629,6 @@ lasso_node_impl_rename_prop(LassoNode *node,
}
}
-static void
-gdata_serialize_destroy_notify(gpointer data)
-{
- gint i;
- GPtrArray *array = data;
-
- for (i=0; i<array->len; i++) {
- xmlFree(array->pdata[i]);
- }
- g_ptr_array_free(array, TRUE);
-}
-
-static GData *
-lasso_node_impl_serialize(LassoNode *node,
- GData *gd)
-{
- GPtrArray *attrs, *children;
- GPtrArray *values;
- const xmlChar *name;
- xmlChar *val;
- int i;
-
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
-
- if (gd == NULL) {
- g_datalist_init(&gd);
- }
-
- attrs = lasso_node_get_attrs(node);
- if (attrs != NULL) {
- for(i=0; i<attrs->len; i++) {
- values = g_ptr_array_new();
- name = (xmlChar *)((LassoAttr *)g_ptr_array_index(attrs, i))->name;
- /* xmlGetProp returns a COPY of attr value
- each val must be xmlFree in gdata_serialize_destroy_notify()
- which is called by g_datalist_clear() */
- val = xmlGetProp(node->private->node, name);
- g_ptr_array_add(values, val);
- g_datalist_set_data_full(&gd, name, values, gdata_serialize_destroy_notify);
- }
- g_ptr_array_free(attrs, TRUE);
- }
-
- children = lasso_node_get_children(node);
- if (children != NULL) {
- for(i=0; i<children->len; i++) {
- xmlNodePtr xml_node = ((LassoNode *)g_ptr_array_index(children, i))->private->node;
- switch (xml_node->type) {
- case XML_ELEMENT_NODE:
- gd = lasso_node_serialize(g_ptr_array_index(children, i), gd);
- break;
- case XML_TEXT_NODE:
- name = lasso_node_get_name(node);
- /* xmlNodeGetContent returns a COPY of node content
- each val must be xmlFree in gdata_serialize_destroy_notify()
- which is called by g_datalist_clear() */
- val = xmlNodeGetContent(node->private->node);
- if (val == NULL)
- break;
- values = (GPtrArray *)g_datalist_get_data(&gd, name);
- if (values == NULL) {
- values = g_ptr_array_new();
- g_ptr_array_add(values, val);
- g_datalist_set_data_full(&gd, name, values,
- gdata_serialize_destroy_notify);
- }
- else {
- g_ptr_array_add(values, val);
- }
- break;
- }
- }
- g_ptr_array_free(children, TRUE);
- }
-
- return (gd);
-}
-
-static gchar *
-lasso_node_impl_soap_envelop(LassoNode *node)
-{
- LassoNode *envelope, *body;
- xmlChar *envelope_dump;
-
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
-
- envelope = lasso_node_new();
- lasso_node_set_name(envelope, "Envelope");
- lasso_node_set_ns(envelope, lassoSoapEnvHRef, lassoSoapEnvPrefix);
-
- body = lasso_node_new();
- lasso_node_set_name(body, "Body");
- lasso_node_set_ns(body, lassoSoapEnvHRef, lassoSoapEnvPrefix);
-
- lasso_node_add_child(body, lasso_node_copy(node), 0);
- lasso_node_add_child(envelope, body, 0);
-
- envelope_dump = lasso_node_dump(envelope, "utf-8", 1);
- g_object_unref(envelope);
-
- return(envelope_dump);
-}
-
-static gchar *
-lasso_node_impl_url_encode(LassoNode *node,
- gint sign_method,
- const gchar *private_key_file)
-{
- GString *url;
- xmlDocPtr doc;
- xmlChar *str1, *str2, *str_escaped;
- gchar *unsigned_query, *ret;
-
- g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
-
- unsigned_query = lasso_node_build_query(node);
- url = g_string_new(unsigned_query);
- g_free(unsigned_query);
-
- if (sign_method > 0 && private_key_file != NULL) {
- url = g_string_append(url, "&SigAlg=");
- switch (sign_method) {
- case lassoUrlEncodeRsaSha1:
- str_escaped = lasso_str_escape(xmlSecHrefRsaSha1);
- url = g_string_append(url, str_escaped);
- doc = lasso_str_sign(url->str, xmlSecTransformRsaSha1Id, private_key_file);
- break;
- case lassoUrlEncodeDsaSha1:
- str_escaped = lasso_str_escape(xmlSecHrefDsaSha1);
- url = g_string_append(url, str_escaped);
- doc = lasso_str_sign(url->str, xmlSecTransformDsaSha1Id, private_key_file);
- break;
- }
- xmlFree(str_escaped);
- url = g_string_append(url, "&Signature=");
- str1 = lasso_doc_get_node_content(doc, xmlSecNodeSignatureValue);
- str2 = lasso_str_escape(str1);
- xmlFree(str1);
- url = g_string_append(url, str2);
- xmlFree(str2);
- xmlFreeDoc(doc);
- }
-
- ret = g_strdup(url->str);
- g_string_free(url, TRUE);
- return (ret);
-}
-
static gint
lasso_node_impl_verify_signature(LassoNode *node,
const gchar *certificate_file)
@@ -755,7 +648,7 @@ lasso_node_impl_verify_signature(LassoNode *node,
/* find start node */
signature = xmlSecFindNode(node->private->node, xmlSecNodeSignature,
- xmlSecDSigNs);
+ xmlSecDSigNs);
if (signature == NULL) {
fprintf(stderr, "Error: start node not found\n");
goto done;
@@ -842,26 +735,93 @@ lasso_node_impl_add_child(LassoNode *node,
}
static void
-lasso_node_impl_add_signature(LassoNode *node,
- gint sign_method,
- const xmlChar *private_key_file,
- const xmlChar *certificate_file)
+lasso_node_impl_add_signature(LassoNode *node,
+ gint sign_method,
+ const xmlChar *private_key_file,
+ const xmlChar *certificate_file)
{
- xmlDocPtr doc;
LassoNode *signature;
- /* FIXME : destroy doc after */
- doc = xmlNewDoc("1.0"); // <---
- xmlAddChild((xmlNodePtr)doc, node->private->node);
-
- /* FIXME : use sign_method */
- signature = lasso_ds_signature_new(doc, xmlSecTransformRsaSha1Id);
- lasso_node_add_child(node, signature, 0);
+ switch (sign_method) {
+ case lassoSignatureMethodRsaSha1:
+ signature = lasso_ds_signature_new(node, xmlSecTransformRsaSha1Id);
+ break;
+ case lassoSignatureMethodDsaSha1:
+ signature = lasso_ds_signature_new(node, xmlSecTransformDsaSha1Id);
+ break;
+ }
+ lasso_node_add_child(node, signature, FALSE);
lasso_ds_signature_sign(LASSO_DS_SIGNATURE(signature),
private_key_file,
certificate_file);
}
+static void gdata_build_query_foreach_func(GQuark key_id,
+ gpointer data,
+ gpointer user_data) {
+ guint i;
+ GString *str;
+ GPtrArray *array;
+
+ array = g_ptr_array_new();
+ str = g_string_new("");
+ for (i=0; i<((GPtrArray *)data)->len; i++) {
+ str = g_string_append(str, g_ptr_array_index((GPtrArray *)data, i));
+ if (i<((GPtrArray *)data)->len - 1) {
+ str = g_string_append(str, " ");
+ }
+ }
+ g_ptr_array_add(array, g_strdup((gpointer)g_quark_to_string(key_id)));
+ g_ptr_array_add(array, str->str);
+ g_string_free(str, FALSE);
+ g_ptr_array_add((GPtrArray *)user_data, array);
+}
+
+static gchar *
+lasso_node_impl_build_query(LassoNode *node)
+{
+ guint i, j;
+ GData *gd;
+ GPtrArray *a, *aa;
+ GString *query;
+ xmlChar *str_escaped;
+ gchar *ret;
+
+ g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+
+ gd = lasso_node_serialize(node, NULL);
+ a = g_ptr_array_new();
+ /* transform dict into array
+ each key => [val1, val2, ...] of dict become [key, "val1 val2 ..."] */
+ g_datalist_foreach(&gd, gdata_build_query_foreach_func, a);
+
+ query = g_string_new("");
+ for (i=0; i<a->len; i++) {
+ aa = g_ptr_array_index(a, i);
+ query = g_string_append(query, g_ptr_array_index(aa, 0));
+ query = g_string_append(query, "=");
+ str_escaped = lasso_str_escape(g_ptr_array_index(aa, 1));
+ query = g_string_append(query, str_escaped);
+ xmlFree(str_escaped);
+ if (i<a->len - 1) {
+ query = g_string_append(query, "&");
+ }
+ /* free allocated memory for array aa */
+ for (j=0; j<aa->len; j++) {
+ g_free(aa->pdata[j]);
+ }
+ g_ptr_array_free(aa, TRUE);
+ }
+ /* free allocated memory for array a */
+ g_ptr_array_free(a, TRUE);
+ g_datalist_clear(&gd);
+
+ ret = g_strdup(query->str);
+ g_string_free(query, TRUE);
+
+ return (ret);
+}
+
static xmlNodePtr
lasso_node_impl_get_xmlNode(LassoNode *node)
{
@@ -895,6 +855,84 @@ lasso_node_impl_new_child(LassoNode *node,
}
static void
+gdata_serialize_destroy_notify(gpointer data)
+{
+ gint i;
+ GPtrArray *array = data;
+
+ for (i=0; i<array->len; i++) {
+ xmlFree(array->pdata[i]);
+ }
+ g_ptr_array_free(array, TRUE);
+}
+
+static GData *
+lasso_node_impl_serialize(LassoNode *node,
+ GData *gd)
+{
+ GPtrArray *attrs, *children;
+ GPtrArray *values;
+ const xmlChar *name;
+ xmlChar *val;
+ int i;
+
+ g_return_val_if_fail (LASSO_IS_NODE(node), NULL);
+
+ if (gd == NULL) {
+ g_datalist_init(&gd);
+ }
+
+ attrs = lasso_node_get_attrs(node);
+ if (attrs != NULL) {
+ for(i=0; i<attrs->len; i++) {
+ values = g_ptr_array_new();
+ name = (xmlChar *)((LassoAttr *)g_ptr_array_index(attrs, i))->name;
+ /* xmlGetProp returns a COPY of attr value
+ each val must be xmlFree in gdata_serialize_destroy_notify()
+ which is called by g_datalist_clear() */
+ val = xmlGetProp(node->private->node, name);
+ g_ptr_array_add(values, val);
+ g_datalist_set_data_full(&gd, name, values, gdata_serialize_destroy_notify);
+ }
+ g_ptr_array_free(attrs, TRUE);
+ }
+
+ children = lasso_node_get_children(node);
+ if (children != NULL) {
+ for(i=0; i<children->len; i++) {
+ xmlNodePtr xml_node = ((LassoNode *)g_ptr_array_index(children, i))->private->node;
+ switch (xml_node->type) {
+ case XML_ELEMENT_NODE:
+ gd = lasso_node_serialize(g_ptr_array_index(children, i), gd);
+ break;
+ case XML_TEXT_NODE:
+ name = lasso_node_get_name(node);
+ /* xmlNodeGetContent returns a COPY of node content
+ each val must be xmlFree in gdata_serialize_destroy_notify()
+ which is called by g_datalist_clear() */
+ val = xmlNodeGetContent(node->private->node);
+ if (val == NULL)
+ break;
+ values = (GPtrArray *)g_datalist_get_data(&gd, name);
+ if (values == NULL) {
+ values = g_ptr_array_new();
+ g_ptr_array_add(values, val);
+ g_datalist_set_data_full(&gd, name, values,
+ gdata_serialize_destroy_notify);
+ }
+ else {
+ g_ptr_array_add(values, val);
+ }
+ break;
+ }
+ }
+ g_ptr_array_free(children, TRUE);
+ }
+
+ return (gd);
+}
+
+static void
lasso_node_impl_set_name(LassoNode *node,
const xmlChar *name)
{
@@ -1001,9 +1039,12 @@ lasso_node_class_init(LassoNodeClass *class)
GObjectClass *gobject_class = G_OBJECT_CLASS(class);
/* virtual public methods */
- class->build_query = lasso_node_impl_build_query;
class->copy = lasso_node_impl_copy;
class->dump = lasso_node_impl_dump;
+ class->export = lasso_node_impl_export;
+ class->export_to_base64 = lasso_node_impl_export_to_base64;
+ class->export_to_query = lasso_node_impl_export_to_query;
+ class->export_to_soap = lasso_node_impl_export_to_soap;
class->get_attr = lasso_node_impl_get_attr;
class->get_attr_value = lasso_node_impl_get_attr_value;
class->get_attrs = lasso_node_impl_get_attrs;
@@ -1011,17 +1052,16 @@ lasso_node_class_init(LassoNodeClass *class)
class->get_children = lasso_node_impl_get_children;
class->get_content = lasso_node_impl_get_content;
class->get_name = lasso_node_impl_get_name;
- class->load_from_buffer = lasso_node_impl_load_from_buffer;
+ class->import = lasso_node_impl_import;
class->rename_prop = lasso_node_impl_rename_prop;
- class->serialize = lasso_node_impl_serialize;
- class->soap_envelop = lasso_node_impl_soap_envelop;
- class->url_encode = lasso_node_impl_url_encode;
class->verify_signature = lasso_node_impl_verify_signature;
/* virtual private methods */
class->add_child = lasso_node_impl_add_child;
class->add_signature = lasso_node_impl_add_signature;
+ class->build_query = lasso_node_impl_build_query;
class->get_xmlNode = lasso_node_impl_get_xmlNode;
class->new_child = lasso_node_impl_new_child;
+ class->serialize = lasso_node_impl_serialize;
class->set_name = lasso_node_impl_set_name;
class->set_ns = lasso_node_impl_set_ns;
class->set_prop = lasso_node_impl_set_prop;
@@ -1060,7 +1100,7 @@ lasso_node_new()
}
LassoNode*
-lasso_node_new_from_dump(xmlChar *buffer)
+lasso_node_new_from_dump(const xmlChar *buffer)
{
LassoNode *node;
xmlDocPtr doc;
diff --git a/lasso/xml/xml.h b/lasso/xml/xml.h
index 3df753c2..050f90c5 100644
--- a/lasso/xml/xml.h
+++ b/lasso/xml/xml.h
@@ -60,78 +60,88 @@ struct _LassoNodeClass {
GObjectClass parent_class;
/*< vtable >*/
/*< public >*/
- gchar* (* build_query) (LassoNode *node);
LassoNode* (* copy) (LassoNode *node);
xmlChar* (* dump) (LassoNode *node,
const xmlChar *encoding,
int format);
- LassoAttr* (* get_attr) (LassoNode *,
- const xmlChar *);
+ xmlChar* (* export) (LassoNode *node);
+ xmlChar* (* export_to_base64) (LassoNode *node);
+ gchar* (* export_to_query) (LassoNode *node,
+ gint sign_method,
+ const gchar *private_key_file);
+ xmlChar* (* export_to_soap) (LassoNode *node);
+ LassoAttr* (* get_attr) (LassoNode *node,
+ const xmlChar *name);
xmlChar* (* get_attr_value) (LassoNode *node,
const xmlChar *name);
- GPtrArray* (* get_attrs) (LassoNode *);
- LassoNode* (* get_child) (LassoNode *,
- const xmlChar *);
- GPtrArray* (* get_children) (LassoNode *);
- xmlChar* (* get_content) (LassoNode *);
- const xmlChar* (* get_name) (LassoNode *);
- void (* load_from_buffer) (LassoNode *node,
- const char *buffer);
+ GPtrArray* (* get_attrs) (LassoNode *node);
+ LassoNode* (* get_child) (LassoNode *node,
+ const xmlChar *name);
+ GPtrArray* (* get_children) (LassoNode *node);
+ xmlChar* (* get_content) (LassoNode *node);
+ const xmlChar* (* get_name) (LassoNode *node);
+ void (* import) (LassoNode *node,
+ const xmlChar *buffer);
void (* rename_prop) (LassoNode *node,
const xmlChar *old_name,
const xmlChar *new_name);
- GData* (* serialize) (LassoNode *,
- GData *);
- gchar* (* url_encode) (LassoNode *node,
- gint sign_method,
- const gchar *private_key_file);
- gchar* (* soap_envelop) (LassoNode *node);
gint (* verify_signature) (LassoNode *node,
const gchar *certificate_file);
/*< private >*/
- void (* add_child) (LassoNode *,
- LassoNode *,
- gboolean);
- void (*add_signature) (LassoNode *node,
- gint sign_method,
- const xmlChar *private_key_file,
- const xmlChar *certificate_file);
- xmlNodePtr (* get_xmlNode) (LassoNode *);
- void (* new_child) (LassoNode *,
- const xmlChar *,
- const xmlChar *,
- gboolean);
- void (* set_name) (LassoNode *,
- const xmlChar *);
- void (* set_ns) (LassoNode *node,
- const xmlChar *href,
- const xmlChar *prefix);
- void (* set_prop) (LassoNode *,
- const xmlChar *,
- const xmlChar *);
- void (* set_xmlNode) (LassoNode *,
- xmlNodePtr);
+ void (* add_child) (LassoNode *node,
+ LassoNode *child,
+ gboolean unbounded);
+ void (* add_signature) (LassoNode *node,
+ gint sign_method,
+ const xmlChar *private_key_file,
+ const xmlChar *certificate_file);
+ gchar* (* build_query) (LassoNode *node);
+ xmlNodePtr (* get_xmlNode) (LassoNode *node);
+ void (* new_child) (LassoNode *node,
+ const xmlChar *name,
+ const xmlChar *content,
+ gboolean unbounded);
+ GData* (* serialize) (LassoNode *node,
+ GData *gd);
+ void (* set_name) (LassoNode *node,
+ const xmlChar *name);
+ void (* set_ns) (LassoNode *node,
+ const xmlChar *href,
+ const xmlChar *prefix);
+ void (* set_prop) (LassoNode *node,
+ const xmlChar *name,
+ const xmlChar *value);
+ void (* set_xmlNode) (LassoNode *node,
+ xmlNodePtr libxml_node);
};
typedef enum {
- lassoUrlEncodeRsaSha1 = 1,
- lassoUrlEncodeDsaSha1
-} lassoUrlEncodeSignMethod;
+ lassoSignatureMethodRsaSha1 = 1,
+ lassoSignatureMethodDsaSha1
+} lassoSignatureMethod;
LASSO_EXPORT GType lasso_node_get_type (void);
LASSO_EXPORT LassoNode* lasso_node_new (void);
-LASSO_EXPORT LassoNode* lasso_node_new_from_dump (xmlChar *buffer);
+LASSO_EXPORT LassoNode* lasso_node_new_from_dump (const xmlChar *buffer);
LASSO_EXPORT LassoNode* lasso_node_new_from_xmlNode (xmlNodePtr node);
-LASSO_EXPORT gchar* lasso_node_build_query (LassoNode *node);
-
LASSO_EXPORT LassoNode* lasso_node_copy (LassoNode *node);
LASSO_EXPORT xmlChar* lasso_node_dump (LassoNode *node,
const xmlChar *encoding,
int format);
+LASSO_EXPORT xmlChar* lasso_node_export (LassoNode *node);
+
+LASSO_EXPORT xmlChar* lasso_node_export_to_base64 (LassoNode *node);
+
+LASSO_EXPORT gchar* lasso_node_export_to_query (LassoNode *node,
+ gint sign_method,
+ const gchar *private_key_file);
+
+LASSO_EXPORT xmlChar* lasso_node_export_to_soap (LassoNode *node);
+
LASSO_EXPORT LassoAttr* lasso_node_get_attr (LassoNode *node,
const xmlChar *name);
@@ -149,22 +159,13 @@ LASSO_EXPORT xmlChar* lasso_node_get_content (LassoNode *node);
LASSO_EXPORT const xmlChar* lasso_node_get_name (LassoNode *node);
-LASSO_EXPORT void lasso_node_load_from_buffer (LassoNode *node,
- const char *buffer);
+LASSO_EXPORT void lasso_node_import (LassoNode *node,
+ const xmlChar *buffer);
LASSO_EXPORT void lasso_node_rename_prop (LassoNode *node,
const xmlChar *old_name,
const xmlChar *new_name);
-LASSO_EXPORT GData* lasso_node_serialize (LassoNode *node,
- GData *gd);
-
-LASSO_EXPORT gchar* lasso_node_soap_envelop (LassoNode *node);
-
-LASSO_EXPORT gchar* lasso_node_url_encode (LassoNode *node,
- gint sign_method,
- const gchar *private_key_file);
-
LASSO_EXPORT gint lasso_node_verify_signature (LassoNode *node,
const gchar *certificate_file);