diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2004-07-08 16:18:56 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2004-07-08 16:18:56 +0000 |
| commit | 58440c666dfc38b41f32f08f778b05ca1ad4291a (patch) | |
| tree | 5660028a5227665d89658f0020d7b5d7e74d485b | |
| parent | 5b88b7ad847c0f2710561b0a5ee6a92140115afb (diff) | |
*** empty log message ***
| -rw-r--r-- | lasso/Attic/protocols/provider.h | 4 | ||||
| -rw-r--r-- | lasso/id-ff/server.c | 22 | ||||
| -rw-r--r-- | lasso/id-ff/server.h | 5 | ||||
| -rw-r--r-- | lasso/id-ff/user.c | 55 | ||||
| -rw-r--r-- | lasso/id-ff/user.h | 11 |
5 files changed, 71 insertions, 26 deletions
diff --git a/lasso/Attic/protocols/provider.h b/lasso/Attic/protocols/provider.h index 4c0d802b..20a7f16c 100644 --- a/lasso/Attic/protocols/provider.h +++ b/lasso/Attic/protocols/provider.h @@ -38,6 +38,10 @@ extern "C" { #define LASSP_IS_PROVIDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LASSO_TYPE_PROVIDER)) #define LASSO_PROVIDER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), LASSO_TYPE_PROVIDER, LassoProviderClass)) +#define LASSO_PROVIDER_NODE "LassoProvider" +#define LASSO_PROVIDER_PUBLIC_KEY_NODE "LassoPublicKey" +#define LASSO_PROVIDER_CERTIFICATE_NODE "LassoCertificate" + typedef struct _LassoProvider LassoProvider; typedef struct _LassoProviderClass LassoProviderClass; diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c index ac7a9a88..fa9a8ff5 100644 --- a/lasso/id-ff/server.c +++ b/lasso/id-ff/server.c @@ -39,11 +39,11 @@ lasso_server_dump(LassoServer *server) server_node = lasso_node_new(); server_class = LASSO_NODE_GET_CLASS(server_node); - server_class->set_name(server_node, "Server"); + server_class->set_name(server_node, LASSO_SERVER_NODE); /* set private key and signature method */ if(server->private_key) - server_class->set_prop(server_node, "PrivateKey", server->private_key); + server_class->set_prop(server_node, LASSO_SERVER_PRIVATE_KEY_NODE, server->private_key); /* TODO : add the signature method in the dump */ @@ -51,14 +51,14 @@ lasso_server_dump(LassoServer *server) provider = LASSO_PROVIDER(server); server_class->add_child(server_node, provider->metadata, FALSE); if(provider->public_key) - server_class->set_prop(server_node, "PublicKey", provider->public_key); + server_class->set_prop(server_node, LASSO_PROVIDER_PUBLIC_KEY_NODE, provider->public_key); if(provider->certificate) - server_class->set_prop(server_node, "Certificate", provider->certificate); + server_class->set_prop(server_node, LASSO_PROVIDER_CERTIFICATE_NODE, provider->certificate); /* set Providers node */ providers_node = lasso_node_new(); providers_class = LASSO_NODE_GET_CLASS(providers_node); - providers_class->set_name(providers_node, "Providers"); + providers_class->set_name(providers_node, LASSO_SERVER_PROVIDERS_NODE); /* add providers */ for(i = 0; i<server->providers->len; i++){ @@ -190,25 +190,25 @@ lasso_server_new_from_dump(xmlChar *dump) return(NULL); } - content = xmlGetProp(xmlNode, "PrivateKey"); + content = xmlGetProp(xmlNode, LASSO_SERVER_PRIVATE_KEY_NODE); if(content){ server->private_key = content; } - content = xmlGetProp(xmlNode, "SignatureMethod"); + content = xmlGetProp(xmlNode, LASSO_SERVER_SIGNATURE_METHOD_NODE); if(content){ server->signature_method = atoi(content); } /* set providers */ - providers_node = lasso_node_get_child(server_node, "Providers", NULL); + providers_node = lasso_node_get_child(server_node, LASSO_SERVER_PROVIDERS_NODE, NULL); providers_class = LASSO_NODE_GET_CLASS(providers_node); if(providers_node){ providers_xmlNode = providers_class->get_xmlNode(providers_node); provider_xmlNode = providers_xmlNode->children; while(provider_xmlNode){ /* a provider node, get the public key, certifcate and metadata */ - if(provider_xmlNode->type==XML_ELEMENT_NODE && xmlStrEqual(provider_xmlNode->name, "Provider")){ + if(provider_xmlNode->type==XML_ELEMENT_NODE && xmlStrEqual(provider_xmlNode->name, LASSO_PROVIDER_NODE)){ /* get the metadata child node */ entity_xmlNode = provider_xmlNode->children; while(entity_xmlNode){ @@ -216,8 +216,8 @@ lasso_server_new_from_dump(xmlChar *dump) break; entity_xmlNode = entity_xmlNode->next; } - public_key = xmlGetProp(provider_xmlNode, "PublicKey"); - certificate = xmlGetProp(provider_xmlNode, "Certificate"); + public_key = xmlGetProp(provider_xmlNode, LASSO_PROVIDER_PUBLIC_KEY_NODE); + certificate = xmlGetProp(provider_xmlNode, LASSO_PROVIDER_CERTIFICATE_NODE); /* add a new provider */ /* provider = lasso_provider_new_metadata_xmlNode(metadata); */ diff --git a/lasso/id-ff/server.h b/lasso/id-ff/server.h index 351442bf..a006d68e 100644 --- a/lasso/id-ff/server.h +++ b/lasso/id-ff/server.h @@ -39,6 +39,11 @@ extern "C" { #define LASSP_IS_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LASSO_TYPE_SERVER)) #define LASSO_SERVER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), LASSO_TYPE_SERVER, LassoServerClass)) +#define LASSO_SERVER_NODE "LassoServer" +#define LASSO_SERVER_PROVIDERS_NODE "LassoProviders" +#define LASSO_SERVER_PRIVATE_KEY_NODE "LassoPrivateKey" +#define LASSO_SERVER_SIGNATURE_METHOD_NODE "LassoSignatureMethod" + typedef struct _LassoServer LassoServer; typedef struct _LassoServerClass LassoServerClass; diff --git a/lasso/id-ff/user.c b/lasso/id-ff/user.c index a676bb19..dc393270 100644 --- a/lasso/id-ff/user.c +++ b/lasso/id-ff/user.c @@ -33,7 +33,22 @@ lasso_user_dump_assertion(gpointer key, gpointer value, LassoNode *assertions) { - + LassoNode *assertion; + LassoNodeClass *assertion_class, *assertions_class; + + /* a new lasso assertion dump node */ + assertion = lasso_node_new(); + assertion_class = LASSO_NODE_GET_CLASS(assertion); + assertion_class->set_name(assertion, LASSO_USER_ASSERTION_NODE); + + /* set the remote provider id */ + assertion_class->set_prop(assertion, LASSO_USER_REMOTE_PROVIDERID_NODE, value); + + /* add the liberty alliance assertion node */ + assertions_class = LASSO_NODE_GET_CLASS(assertions); + + /* add the lasso assertion node in lasso assertions node */ + assertion_class->add_child(assertions, assertion, FALSE); } static void @@ -59,19 +74,19 @@ lasso_user_dump(LassoUser *user) user_node = lasso_node_new(); user_class = LASSO_NODE_GET_CLASS(user_node); - user_class->set_name(user_node, "User"); + user_class->set_name(user_node, LASSO_USER_NODE); /* dump the assertions */ assertions_node = lasso_node_new(); assertions_class = LASSO_NODE_GET_CLASS(assertions_node); - assertions_class->set_name(assertions_node, "Assertions"); + assertions_class->set_name(assertions_node, LASSO_USER_ASSERTIONS_NODE); g_hash_table_foreach(user->assertions, lasso_user_dump_assertion, assertions_node); user_class->add_child(user_node, assertions_node, FALSE); /* dump the identities */ identities_node = lasso_node_new(); identities_class = LASSO_NODE_GET_CLASS(identities_node); - identities_class->set_name(identities_node, "Identities"); + identities_class->set_name(identities_node, LASSO_USER_IDENTITIES_NODE); g_hash_table_foreach(user->identities, lasso_user_dump_identity, identities_node); user_class->add_child(user_node, identities_node, FALSE); @@ -163,30 +178,44 @@ lasso_user_new() LassoUser* lasso_user_new_from_dump(xmlChar *dump) { - LassoNode *user_node, *identities_node; - LassoNodeClass *identities_class; + LassoNode *user_node, *identities_node, *assertions_node, *assertion_node; + LassoNodeClass *identities_class, *assertions_class; LassoIdentity *identity; - xmlNodePtr xmlNode; + xmlNodePtr xmlNode, assertion_xmlNode; LassoUser *user; xmlChar *remote_providerID; /* new object */ user = LASSO_USER(g_object_new(LASSO_TYPE_USER, NULL)); - /* get node from dump */ + /* get user */ user_node = lasso_node_new_from_dump(dump); - /* get the assertions */ + /* get lasso assertion */ + assertions_node = lasso_node_get_child(user_node, LASSO_USER_ASSERTIONS_NODE, NULL); + if(assertions_node){ + assertions_class = LASSO_NODE_GET_CLASS(identities_node); + xmlNode = assertions_class->get_xmlNode(assertions_node); + assertion_xmlNode = xmlNode->children; + while(assertion_xmlNode){ + if(assertion_xmlNode->type==XML_ELEMENT_NODE && xmlStrEqual(assertion_xmlNode->name, LASSO_USER_ASSERTION_NODE)){ + remote_providerID = xmlGetProp(assertion_xmlNode, LASSO_USER_REMOTE_PROVIDERID_NODE); + assertion_node = lasso_node_new_from_xmlNode(assertion_xmlNode); + lasso_user_add_assertion(user, remote_providerID, assertion_node); + } + assertion_xmlNode = assertion_xmlNode->next; + } + } - /* set the identities */ - identities_node = lasso_node_get_child(user_node, "Identities", NULL); + /* get the lasso identities */ + identities_node = lasso_node_get_child(user_node, LASSO_USER_IDENTITIES_NODE, NULL); identities_class = LASSO_NODE_GET_CLASS(identities_node); xmlNode = identities_class->get_xmlNode(identities_node); if(xmlNode){ xmlNode = xmlNode->children; while(xmlNode){ - if(xmlNode->type==XML_ELEMENT_NODE && xmlStrEqual(xmlNode->name, "Identity")){ - identity = lasso_identity_new(xmlGetProp(xmlNode, "RemoteProviderID")); + if(xmlNode->type==XML_ELEMENT_NODE && xmlStrEqual(xmlNode->name, LASSO_USER_IDENTITY_NODE)){ + identity = lasso_identity_new(xmlGetProp(xmlNode, LASSO_USER_REMOTE_PROVIDERID_NODE)); lasso_identity_set_local_nameIdentifier(user, identity); xmlNode = xmlNode->next; } diff --git a/lasso/id-ff/user.h b/lasso/id-ff/user.h index 7dede871..0db5714f 100644 --- a/lasso/id-ff/user.h +++ b/lasso/id-ff/user.h @@ -40,6 +40,13 @@ extern "C" { #define LASSP_IS_USER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), LASSO_TYPE_USER)) #define LASSO_USER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), LASSO_TYPE_USER, LassoUserClass)) +#define LASSO_USER_NODE "LassoUser" +#define LASSO_USER_IDENTITIES_NODE "LassoIdentities" +#define LASSO_USER_IDENTITY_NODE "LassoIdentity" +#define LASSO_USER_ASSERTIONS_NODE "LassoAssertions" +#define LASSO_USER_ASSERTION_NODE "LassoAssertion" +#define LASSO_USER_REMOTE_PROVIDERID_NODE "RemoteProviderID" + typedef struct _LassoUser LassoUser; typedef struct _LassoUserClass LassoUserClass; @@ -47,8 +54,8 @@ struct _LassoUser { GObject parent; /*< public >*/ - GHashTable *assertions; /* hash for assertions with nameIdentifier as key */ - GHashTable *identities; /* hash for identities with remote ProviderID as key */ + GHashTable *assertions; /* hash for assertions with remote providerID as key */ + GHashTable *identities; /* hash for identities with remote ProviderID as key */ /*< private >*/ }; |
