diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2008-11-02 11:49:56 +0000 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2008-11-02 11:49:56 +0000 |
| commit | 5f163bbffdcb560b3b651f634fb3ada523e3ce0c (patch) | |
| tree | 5105c9ffad9ed0da2585ee16ba69500726eeb1e4 | |
| parent | 2ca9f2c46a9a7450f8255dba395988b22be47a82 (diff) | |
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.
| -rw-r--r-- | lasso/id-ff/provider.c | 3 | ||||
| -rw-r--r-- | lasso/id-ff/server.c | 35 | ||||
| -rw-r--r-- | lasso/id-ff/server.h | 5 |
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, |
