summaryrefslogtreecommitdiffstats
path: root/lasso
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2008-11-02 11:49:56 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2008-11-02 11:49:56 +0000
commit5f163bbffdcb560b3b651f634fb3ada523e3ce0c (patch)
tree5105c9ffad9ed0da2585ee16ba69500726eeb1e4 /lasso
parent2ca9f2c46a9a7450f8255dba395988b22be47a82 (diff)
downloadlasso-5f163bbffdcb560b3b651f634fb3ada523e3ce0c.tar.gz
lasso-5f163bbffdcb560b3b651f634fb3ada523e3ce0c.tar.xz
lasso-5f163bbffdcb560b3b651f634fb3ada523e3ce0c.zip
Add new constructor lasso_server_new_from_buffers
* lasso/id-ff/server.c, lasso/id-ff/server.h: add new function to build a LassoServer object holding content of certificate and private key files intead of loading them everytime signing is needed. You must instead load them yourself the first time.
Diffstat (limited to 'lasso')
-rw-r--r--lasso/id-ff/provider.c3
-rw-r--r--lasso/id-ff/server.c35
-rw-r--r--lasso/id-ff/server.h5
3 files changed, 43 insertions, 0 deletions
diff --git a/lasso/id-ff/provider.c b/lasso/id-ff/provider.c
index 363223b6..3276f622 100644
--- a/lasso/id-ff/provider.c
+++ b/lasso/id-ff/provider.c
@@ -703,6 +703,9 @@ lasso_provider_load_metadata_from_buffer(LassoProvider *provider, const gchar *m
return FALSE;
}
ret = lasso_provider_load_metadata_from_doc(provider, doc);
+ if (ret == TRUE) {
+ lasso_assign_string(provider->metadata_filename, metadata);
+ }
lasso_release_doc(doc);
return ret;
diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c
index b4f84fa4..04569291 100644
--- a/lasso/id-ff/server.c
+++ b/lasso/id-ff/server.c
@@ -45,6 +45,8 @@
#include <lasso/xml/id-wsf-2.0/disco_service_context.h>
#endif
+#include "../utils.h"
+
/*****************************************************************************/
/* public methods */
/*****************************************************************************/
@@ -772,6 +774,39 @@ lasso_server_new(const gchar *metadata,
}
/**
+ * lasso_server_new_from_buffers:
+ * @metadata: NULL terminated string containing the content of an ID-FF 1.2 metadata file
+ * @privatekey: NULL terminated string containing a PEM formatted private key
+ * @private_key_password: a NULL terminated string which is the optional password of the private key
+ * @certificate: NULL terminated string containing a PEM formatted X509 certificate
+ *
+ * Creates a new #LassoServer.
+ *
+ * Return value: a newly created #LassoServer object; or NULL if an error occured
+ */
+LassoServer*
+lasso_server_new_from_buffers(const char *metadata, const char *private_key_content, const char
+ *private_key_password, const char *certificate_content)
+{
+ LassoServer *server;
+
+ server = g_object_new(LASSO_TYPE_SERVER, NULL);
+ /* metadata can be NULL (if server is a LECP) */
+ if (metadata != NULL) {
+ if (lasso_provider_load_metadata_from_buffer(LASSO_PROVIDER(server), metadata) == FALSE) {
+ message(G_LOG_LEVEL_CRITICAL,
+ "Failed to load metadata from preloaded buffer");
+ lasso_node_destroy(LASSO_NODE(server));
+ return NULL;
+ }
+ }
+ lasso_assign_string(server->private_key, private_key_content);
+ lasso_assign_string(server->private_key_password, private_key_password);
+ lasso_assign_string(server->certificate, certificate_content);
+
+ return server;
+}
+/**
* lasso_server_new_from_dump:
* @dump: XML server dump
*
diff --git a/lasso/id-ff/server.h b/lasso/id-ff/server.h
index 7de16564..863e7894 100644
--- a/lasso/id-ff/server.h
+++ b/lasso/id-ff/server.h
@@ -81,6 +81,11 @@ LASSO_EXPORT LassoServer* lasso_server_new(const gchar *metadata,
const gchar *private_key_password,
const gchar *certificate);
+LASSO_EXPORT LassoServer* lasso_server_new_from_buffers(const gchar *metadata,
+ const gchar *private_key,
+ const gchar *private_key_password,
+ const gchar *certificate);
+
LASSO_EXPORT LassoServer* lasso_server_new_from_dump(const gchar *dump);
LASSO_EXPORT gint lasso_server_add_provider (LassoServer *server,