summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-07-22 00:53:54 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-07-22 00:53:54 +0000
commitf46a076daf3352ecdcd6f274ffb0252f248d4e1b (patch)
treedb95c455e59ac349fd8c204205f60f6ce8668425
parenteb682633945cdd2cfafb3fb082b9c9b6b5e31bba (diff)
downloadlasso-f46a076daf3352ecdcd6f274ffb0252f248d4e1b.tar.gz
lasso-f46a076daf3352ecdcd6f274ffb0252f248d4e1b.tar.xz
lasso-f46a076daf3352ecdcd6f274ffb0252f248d4e1b.zip
Added "ProviderID" attribut in server object
A memory leak was removed in lasso_server_new
-rw-r--r--lasso/id-ff/server.c44
-rw-r--r--lasso/id-ff/server.h8
2 files changed, 39 insertions, 13 deletions
diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c
index dbe277a3..b8cb3a91 100644
--- a/lasso/id-ff/server.c
+++ b/lasso/id-ff/server.c
@@ -26,6 +26,7 @@
#define LASSO_SERVER_NODE "LassoServer"
#define LASSO_SERVER_PROVIDERS_NODE "LassoProviders"
+#define LASSO_SERVER_PROVIDERID_NODE "ProviderID"
#define LASSO_SERVER_PRIVATE_KEY_NODE "PrivateKey"
#define LASSO_SERVER_CERTIFICATE_NODE "Certificate"
#define LASSO_SERVER_SIGNATURE_METHOD_NODE "SignatureMethod"
@@ -56,6 +57,10 @@ lasso_server_dump(LassoServer *server)
sprintf(signature_method_str, "%d", server->signature_method);
server_class->set_prop(server_node, LASSO_SERVER_SIGNATURE_METHOD_NODE, signature_method_str);
+ /* providerID */
+ if(server->providerID)
+ server_class->set_prop(server_node, LASSO_SERVER_PROVIDERID_NODE, server->providerID);
+
/* private key */
if(server->private_key)
server_class->set_prop(server_node, LASSO_SERVER_PRIVATE_KEY_NODE, server->private_key);
@@ -202,6 +207,7 @@ lasso_server_finalize(LassoServer *server)
{
debug(DEBUG, "Server object 0x%x finalized ...\n", server);
+ g_free(server->providerID);
g_free(server->private_key);
g_free(server->certificate);
@@ -216,6 +222,7 @@ static void
lasso_server_instance_init(LassoServer *server)
{
server->providers = g_ptr_array_new();
+ server->providerID = NULL;
server->private_key = NULL;
server->certificate = NULL;
server->signature_method = lassoSignatureMethodRsaSha1;
@@ -264,25 +271,39 @@ lasso_server_new(gchar *metadata,
LassoServer *server;
xmlDocPtr doc;
xmlNodePtr root;
- LassoNode *metadata_node;
+ LassoNode *md_node;
+ gchar *providerID;
- g_return_val_if_fail(metadata!=NULL, NULL);
+ g_return_val_if_fail(metadata != NULL, NULL);
- server = LASSO_SERVER(g_object_new(LASSO_TYPE_SERVER,
- NULL));
+ /* put server metadata in a LassoNode */
+ doc = xmlParseFile(metadata);
+ root = xmlCopyNode(xmlDocGetRootElement(doc), 1);
+ xmlFreeDoc(doc);
+ md_node = lasso_node_new();
+ LASSO_NODE_GET_CLASS(md_node)->set_xmlNode(md_node, root);
+ /* md_node = lasso_node_new_from_xmlNode(root); */
+
+ /* get ProviderID in metadata */
+ providerID = lasso_node_get_attr_value(md_node, "ProviderID");
+ if (providerID == NULL) {
+ debug(ERROR, "ProviderID is missing in server metadata.\n");
+ lasso_node_destroy(md_node);
+ return (NULL);
+ }
+
+ /* Ok, we can create server */
+ server = LASSO_SERVER(g_object_new(LASSO_TYPE_SERVER, NULL));
+ LASSO_PROVIDER(server)->metadata = md_node;
+
+ server->providerID = providerID;
server->private_key = g_strdup(private_key);
server->certificate = g_strdup(certificate);
server->signature_method = signature_method;
- doc = xmlParseFile(metadata);
- root = xmlCopyNode(xmlDocGetRootElement(doc), 1);
- xmlFreeDoc(doc);
- metadata_node = lasso_node_new_from_xmlNode(root);
-
LASSO_PROVIDER(server)->public_key = g_strdup(public_key);
LASSO_PROVIDER(server)->ca_certificate = NULL;
- LASSO_PROVIDER(server)->metadata = metadata_node;
return(server);
}
@@ -307,6 +328,9 @@ lasso_server_new_from_dump(gchar *dump)
}
server_class = LASSO_NODE_GET_CLASS(server_node);
+ /* providerID */
+ server->providerID = lasso_node_get_attr_value(server_node, LASSO_SERVER_PROVIDERID_NODE);
+
/* private key */
server->private_key = lasso_node_get_attr_value(server_node, LASSO_SERVER_PRIVATE_KEY_NODE);
diff --git a/lasso/id-ff/server.h b/lasso/id-ff/server.h
index 2c273458..e4b2fba0 100644
--- a/lasso/id-ff/server.h
+++ b/lasso/id-ff/server.h
@@ -46,9 +46,11 @@ struct _LassoServer {
LassoProvider parent;
GPtrArray *providers;
- gchar *private_key;
- gchar *certificate;
- guint signature_method;
+
+ gchar *providerID;
+ gchar *private_key;
+ gchar *certificate;
+ guint signature_method;
/*< private >*/
};