diff options
| author | Valery Febvre <vfebvre at easter-eggs.com> | 2004-07-22 00:53:54 +0000 |
|---|---|---|
| committer | Valery Febvre <vfebvre at easter-eggs.com> | 2004-07-22 00:53:54 +0000 |
| commit | f46a076daf3352ecdcd6f274ffb0252f248d4e1b (patch) | |
| tree | db95c455e59ac349fd8c204205f60f6ce8668425 | |
| parent | eb682633945cdd2cfafb3fb082b9c9b6b5e31bba (diff) | |
| download | lasso-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.c | 44 | ||||
| -rw-r--r-- | lasso/id-ff/server.h | 8 |
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 >*/ }; |
