summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Clapies <nclapies@entrouvert.com>2004-07-08 16:18:56 +0000
committerNicolas Clapies <nclapies@entrouvert.com>2004-07-08 16:18:56 +0000
commit58440c666dfc38b41f32f08f778b05ca1ad4291a (patch)
tree5660028a5227665d89658f0020d7b5d7e74d485b
parent5b88b7ad847c0f2710561b0a5ee6a92140115afb (diff)
*** empty log message ***
-rw-r--r--lasso/Attic/protocols/provider.h4
-rw-r--r--lasso/id-ff/server.c22
-rw-r--r--lasso/id-ff/server.h5
-rw-r--r--lasso/id-ff/user.c55
-rw-r--r--lasso/id-ff/user.h11
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 >*/
};