diff options
| author | Valery Febvre <vfebvre at easter-eggs.com> | 2004-08-08 12:34:10 +0000 |
|---|---|---|
| committer | Valery Febvre <vfebvre at easter-eggs.com> | 2004-08-08 12:34:10 +0000 |
| commit | fa6f8ec152ed2580175314ae452dd5aec5d21e5b (patch) | |
| tree | b27e8a30fb5cbb490395666725736f26970e2821 | |
| parent | be08778a03fcbc717deec99e00cb93ba58150bd4 (diff) | |
| download | lasso-fa6f8ec152ed2580175314ae452dd5aec5d21e5b.tar.gz lasso-fa6f8ec152ed2580175314ae452dd5aec5d21e5b.tar.xz lasso-fa6f8ec152ed2580175314ae452dd5aec5d21e5b.zip | |
In the dump of the server object,
rather than use the "Lasso" word in the name of nodes,
the namespace of the root elment is now set to the Lasso namespace (without prefix).
Relpaced the lasso_str_hash() call by lasso_sha1() in the
lasso_server_get_providerID_from_hash() method.
| -rw-r--r-- | lasso/id-ff/server.c | 149 | ||||
| -rw-r--r-- | lasso/id-ff/server.h | 4 |
2 files changed, 78 insertions, 75 deletions
diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c index 0a6a6a07..02ff6587 100644 --- a/lasso/id-ff/server.c +++ b/lasso/id-ff/server.c @@ -25,8 +25,8 @@ #include <lasso/environs/server.h> -#define LASSO_SERVER_NODE "LassoServer" -#define LASSO_SERVER_PROVIDERS_NODE "LassoProviders" +#define LASSO_SERVER_NODE "Server" +#define LASSO_SERVER_PROVIDERS_NODE "Providers" #define LASSO_SERVER_PROVIDERID_NODE "ProviderID" #define LASSO_SERVER_PRIVATE_KEY_NODE "PrivateKey" #define LASSO_SERVER_CERTIFICATE_NODE "Certificate" @@ -59,6 +59,61 @@ lasso_server_add_lasso_provider(LassoServer *server, /* public methods */ /*****************************************************************************/ +gint +lasso_server_add_provider(LassoServer *server, + gchar *metadata, + gchar *public_key, + gchar *ca_certificate) +{ + LassoProvider *provider; + + g_return_val_if_fail(LASSO_IS_SERVER(server), -1); + g_return_val_if_fail(metadata != NULL, -2); + + provider = lasso_provider_new(metadata, public_key, ca_certificate); + g_return_val_if_fail(provider != NULL, -5); + + /* debug(INFO, "Add a provider(%s)\n", lasso_provider_get_providerID(provider)); */ + g_ptr_array_add(server->providers, provider); + + return(0); +} + +LassoServer* +lasso_server_copy(LassoServer *server) +{ + LassoServer *copy; + LassoProvider *p; + guint i; + + g_return_val_if_fail(LASSO_IS_SERVER(server), NULL); + + copy = LASSO_SERVER(g_object_new(LASSO_TYPE_SERVER, NULL)); + + /* herited provider attrs */ + LASSO_PROVIDER(copy)->metadata = lasso_node_copy(LASSO_PROVIDER(server)->metadata); + LASSO_PROVIDER(copy)->public_key = g_strdup(LASSO_PROVIDER(server)->public_key); + LASSO_PROVIDER(copy)->ca_certificate = g_strdup(LASSO_PROVIDER(server)->ca_certificate); + /* server attrs */ + copy->providers = g_ptr_array_new(); + for (i=0; i<server->providers->len; i++) { + p = g_ptr_array_index(server->providers, i); + g_ptr_array_add(copy->providers, lasso_provider_copy(p)); + } + copy->providerID = g_strdup(server->providerID); + copy->private_key = g_strdup(server->private_key); + copy->certificate = g_strdup(server->certificate); + copy->signature_method = server->signature_method; + + return(copy); +} + +void +lasso_server_destroy(LassoServer *server) +{ + g_object_unref(G_OBJECT(server)); +} + gchar * lasso_server_dump(LassoServer *server) { @@ -73,6 +128,7 @@ lasso_server_dump(LassoServer *server) server_node = lasso_node_new(); server_class = LASSO_NODE_GET_CLASS(server_node); server_class->set_name(server_node, LASSO_SERVER_NODE); + server_class->set_ns(server_node, lassoLassoHRef, NULL); /* signature method */ signature_method_str = g_new(gchar, 6); @@ -81,15 +137,15 @@ lasso_server_dump(LassoServer *server) g_free(signature_method_str); /* providerID */ - if(server->providerID) { + if (server->providerID) { server_class->set_prop(server_node, LASSO_SERVER_PROVIDERID_NODE, server->providerID); } /* private key */ - if(server->private_key) { + if (server->private_key) { server_class->set_prop(server_node, LASSO_SERVER_PRIVATE_KEY_NODE, server->private_key); } /* certificate */ - if(server->certificate) { + if (server->certificate) { server_class->set_prop(server_node, LASSO_SERVER_CERTIFICATE_NODE, server->certificate); } /* metadata */ @@ -98,18 +154,18 @@ lasso_server_dump(LassoServer *server) server_class->add_child(server_node, metadata_copy, FALSE); lasso_node_destroy(metadata_copy); /* public key */ - if(provider->public_key) { + if (provider->public_key) { server_class->set_prop(server_node, LASSO_PROVIDER_PUBLIC_KEY_NODE, provider->public_key); } /* ca_certificate */ - if(provider->ca_certificate) { + if (provider->ca_certificate) { server_class->set_prop(server_node, LASSO_PROVIDER_CA_CERTIFICATE_NODE, provider->ca_certificate); } /* providers */ providers_node = lasso_node_new(); providers_class = LASSO_NODE_GET_CLASS(providers_node); providers_class->set_name(providers_node, LASSO_SERVER_PROVIDERS_NODE); - for(i = 0; i<server->providers->len; i++){ + for (i = 0; i<server->providers->len; i++) { dump = lasso_provider_dump(g_ptr_array_index(server->providers, i)); provider_node = lasso_node_new_from_dump(dump); xmlFree(dump); @@ -125,61 +181,6 @@ lasso_server_dump(LassoServer *server) return(dump); } -gint -lasso_server_add_provider(LassoServer *server, - gchar *metadata, - gchar *public_key, - gchar *ca_certificate) -{ - LassoProvider *provider; - - g_return_val_if_fail(LASSO_IS_SERVER(server), -1); - g_return_val_if_fail(metadata != NULL, -2); - - provider = lasso_provider_new(metadata, public_key, ca_certificate); - g_return_val_if_fail(provider != NULL, -5); - - /* debug(INFO, "Add a provider(%s)\n", lasso_provider_get_providerID(provider)); */ - g_ptr_array_add(server->providers, provider); - - return(0); -} - -LassoServer* -lasso_server_copy(LassoServer *server) -{ - LassoServer *copy; - LassoProvider *p; - guint i; - - g_return_val_if_fail(LASSO_IS_SERVER(server), NULL); - - copy = LASSO_SERVER(g_object_new(LASSO_TYPE_SERVER, NULL)); - - /* herited provider attrs */ - LASSO_PROVIDER(copy)->metadata = lasso_node_copy(LASSO_PROVIDER(server)->metadata); - LASSO_PROVIDER(copy)->public_key = g_strdup(LASSO_PROVIDER(server)->public_key); - LASSO_PROVIDER(copy)->ca_certificate = g_strdup(LASSO_PROVIDER(server)->ca_certificate); - /* server attrs */ - copy->providers = g_ptr_array_new(); - for(i=0; i<server->providers->len; i++) { - p = g_ptr_array_index(server->providers, i); - g_ptr_array_add(copy->providers, lasso_provider_copy(p)); - } - copy->providerID = g_strdup(server->providerID); - copy->private_key = g_strdup(server->private_key); - copy->certificate = g_strdup(server->certificate); - copy->signature_method = server->signature_method; - - return(copy); -} - -void -lasso_server_destroy(LassoServer *server) -{ - g_object_unref(G_OBJECT(server)); -} - LassoProvider* lasso_server_get_provider(LassoServer *server, gchar *providerID) @@ -210,7 +211,7 @@ lasso_server_get_provider_ref(LassoServer *server, /* debug(INFO, "Get information of provider id %s\n", providerID); */ len = server->providers->len; - for(index = 0; index<len; index++) { + for (index = 0; index<len; index++) { provider = g_ptr_array_index(server->providers, index); id = lasso_provider_get_providerID(provider, NULL); @@ -233,10 +234,11 @@ lasso_server_get_providerID_from_hash(LassoServer *server, xmlChar *b64_hash_providerID; int i; - for(i=0; i<server->providers->len; i++) { + for (i=0; i<server->providers->len; i++) { provider = g_ptr_array_index(server->providers, i); providerID = lasso_provider_get_providerID(provider, NULL); - hash_providerID = lasso_str_hash(providerID, server->private_key); + /* hash_providerID = lasso_str_hash(providerID, server->private_key); */ + hash_providerID = lasso_sha1(providerID); b64_hash_providerID = xmlSecBase64Encode(hash_providerID, 20, 0); xmlFree(hash_providerID); if (xmlStrEqual(b64_hash_providerID, b64_hash)) { @@ -403,7 +405,7 @@ lasso_server_new_from_dump(gchar *dump) server = LASSO_SERVER(g_object_new(LASSO_TYPE_SERVER, NULL)); server_node = lasso_node_new_from_dump(dump); - if(server_node == NULL) { + if (server_node == NULL) { message(G_LOG_LEVEL_ERROR, "Error while loading server dump\n"); return(NULL); } @@ -437,14 +439,15 @@ lasso_server_new_from_dump(gchar *dump) LASSO_PROVIDER(server)->ca_certificate = lasso_node_get_attr_value(server_node, LASSO_PROVIDER_CA_CERTIFICATE_NODE, NULL); /* providers */ - providers_node = lasso_node_get_child(server_node, LASSO_SERVER_PROVIDERS_NODE, NULL, NULL); - if(providers_node != NULL) { + providers_node = lasso_node_get_child(server_node, LASSO_SERVER_PROVIDERS_NODE, lassoLassoHRef, NULL); + if (providers_node != NULL) { providers_class = LASSO_NODE_GET_CLASS(providers_node); providers_xmlNode = providers_class->get_xmlNode(providers_node); provider_xmlNode = providers_xmlNode->children; - while(provider_xmlNode != NULL){ - if(provider_xmlNode->type==XML_ELEMENT_NODE && xmlStrEqual(provider_xmlNode->name, LASSO_PROVIDER_NODE)){ + while (provider_xmlNode != NULL) { + if (provider_xmlNode->type == XML_ELEMENT_NODE && \ + xmlStrEqual(provider_xmlNode->name, LASSO_PROVIDER_NODE)) { /* provider node */ provider_node = lasso_node_new_from_xmlNode(provider_xmlNode); @@ -460,11 +463,11 @@ lasso_server_new_from_dump(gchar *dump) /* add provider */ provider = lasso_provider_new_from_metadata_node(entity_node); lasso_node_destroy(entity_node); - if(public_key != NULL) { + if (public_key != NULL) { lasso_provider_set_public_key(provider, public_key); xmlFree(public_key); } - if(ca_certificate != NULL) { + if (ca_certificate != NULL) { lasso_provider_set_ca_certificate(provider, ca_certificate); xmlFree(ca_certificate); } diff --git a/lasso/id-ff/server.h b/lasso/id-ff/server.h index 895906b5..699b9560 100644 --- a/lasso/id-ff/server.h +++ b/lasso/id-ff/server.h @@ -77,10 +77,10 @@ LASSO_EXPORT gint lasso_server_add_provider (LassoServer * LASSO_EXPORT LassoServer* lasso_server_copy (LassoServer *server); -LASSO_EXPORT gchar* lasso_server_dump (LassoServer *server); - LASSO_EXPORT void lasso_server_destroy (LassoServer *server); +LASSO_EXPORT gchar* lasso_server_dump (LassoServer *server); + LASSO_EXPORT LassoProvider* lasso_server_get_provider (LassoServer *server, gchar *providerID); |
