summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-07-28 16:17:07 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-07-28 16:17:07 +0000
commit6bc0e66f643dc42617be3425b0a277229d60c5eb (patch)
treec04529725daa34ed95977fa797d092c6b8fd3f52
parent4eca515b432f16b3ff07a19389e63660739eb580 (diff)
downloadlasso-6bc0e66f643dc42617be3425b0a277229d60c5eb.tar.gz
lasso-6bc0e66f643dc42617be3425b0a277229d60c5eb.tar.xz
lasso-6bc0e66f643dc42617be3425b0a277229d60c5eb.zip
Added lasso_server_copy() method
-rw-r--r--lasso/id-ff/server.c31
-rw-r--r--lasso/id-ff/server.h36
2 files changed, 48 insertions, 19 deletions
diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c
index c7e77904..762d7a72 100644
--- a/lasso/id-ff/server.c
+++ b/lasso/id-ff/server.c
@@ -145,6 +145,35 @@ lasso_server_add_provider(LassoServer *server,
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)
{
@@ -218,7 +247,7 @@ lasso_server_dispose(LassoServer *server)
}
server->private->dispose_has_run = TRUE;
- debug("Server object 0x%x finalized ...\n", server);
+ debug("Server object 0x%x disposed ...\n", server);
/* free allocated memory for providers array */
for (i=0; i<server->providers->len; i++) {
diff --git a/lasso/id-ff/server.h b/lasso/id-ff/server.h
index 7734cea8..928db467 100644
--- a/lasso/id-ff/server.h
+++ b/lasso/id-ff/server.h
@@ -60,32 +60,32 @@ struct _LassoServerClass {
LassoProviderClass parent;
};
-LASSO_EXPORT GType lasso_server_get_type (void);
+LASSO_EXPORT GType lasso_server_get_type (void);
-LASSO_EXPORT LassoServer* lasso_server_new (gchar *metadata,
- gchar *public_key,
- gchar *private_key,
- gchar *certificate,
- guint signature_method);
+LASSO_EXPORT LassoServer* lasso_server_new (gchar *metadata,
+ gchar *public_key,
+ gchar *private_key,
+ gchar *certificate,
+ guint signature_method);
-LASSO_EXPORT LassoServer *lasso_server_new_from_dump (gchar *dump);
+LASSO_EXPORT LassoServer* lasso_server_new_from_dump (gchar *dump);
-LASSO_EXPORT gint lasso_server_add_provider (LassoServer *server,
- gchar *metadata,
- gchar *public_key,
- gchar *ca_certificate);
+LASSO_EXPORT gint lasso_server_add_provider (LassoServer *server,
+ gchar *metadata,
+ gchar *public_key,
+ gchar *ca_certificate);
-LASSO_EXPORT gchar *lasso_server_dump (LassoServer *server);
+LASSO_EXPORT LassoServer* lasso_server_copy (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);
-
-LASSO_EXPORT gchar *lasso_server_get_providerID_from_hash(LassoServer *server,
- gchar *hash);
+LASSO_EXPORT void lasso_server_destroy (LassoServer *server);
+LASSO_EXPORT LassoProvider* lasso_server_get_provider (LassoServer *server,
+ gchar *providerID);
+LASSO_EXPORT gchar* lasso_server_get_providerID_from_hash (LassoServer *server,
+ gchar *hash);
#ifdef __cplusplus
}