diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-02-04 00:02:12 +0000 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-02-04 00:02:12 +0000 |
| commit | f520348197f58815552ceecff74261f96cde881f (patch) | |
| tree | 826ccbdc0c746cfe3e6143b613ae54605c7e7aac | |
| parent | da7dcfaeddbb241f7caaf5ee23ba3e8114a06aba (diff) | |
Core: use lasso_node_new_from_dump to implement _new_from_dump methods
* provider.c:
add annotation for nullable arguments (necessary for bindings of
new_from_buffer).
* server.c: add annotations, allow to set encryption_private_key from
buffers
| -rw-r--r-- | lasso/id-ff/identity.c | 19 | ||||
| -rw-r--r-- | lasso/id-ff/login.c | 16 | ||||
| -rw-r--r-- | lasso/id-ff/logout.c | 15 | ||||
| -rw-r--r-- | lasso/id-ff/provider.c | 23 | ||||
| -rw-r--r-- | lasso/id-ff/server.c | 51 | ||||
| -rw-r--r-- | lasso/id-ff/session.c | 22 |
6 files changed, 51 insertions, 95 deletions
diff --git a/lasso/id-ff/identity.c b/lasso/id-ff/identity.c index be3cf9df..c1b71d06 100644 --- a/lasso/id-ff/identity.c +++ b/lasso/id-ff/identity.c @@ -367,24 +367,11 @@ LassoIdentity* lasso_identity_new_from_dump(const gchar *dump) { LassoIdentity *identity; - xmlDoc *doc; - xmlNode *rootElement; - if (dump == NULL) - return NULL; - - doc = xmlParseMemory(dump, strlen(dump)); - if (doc == NULL) - return NULL; - - rootElement = xmlDocGetRootElement(doc); - if (strcmp((char*)rootElement->name, "Identity") != 0) { - lasso_release_doc(doc); - return NULL; + identity = (LassoIdentity*)lasso_node_new_from_dump(dump); + if (! LASSO_IS_IDENTITY(identity)) { + lasso_release_gobject(identity); } - identity = lasso_identity_new(); - init_from_xml(LASSO_NODE(identity), rootElement); - lasso_release_doc(doc); return identity; } diff --git a/lasso/id-ff/login.c b/lasso/id-ff/login.c index a8037fe0..cf932f4c 100644 --- a/lasso/id-ff/login.c +++ b/lasso/id-ff/login.c @@ -2162,17 +2162,13 @@ LassoLogin* lasso_login_new_from_dump(LassoServer *server, const gchar *dump) { LassoLogin *login; - xmlDoc *doc; - - if (dump == NULL) - return NULL; - - login = g_object_new(LASSO_TYPE_LOGIN, NULL); - doc = xmlParseMemory(dump, strlen(dump)); - init_from_xml(LASSO_NODE(login), xmlDocGetRootElement(doc)); - lasso_assign_gobject(LASSO_PROFILE(login)->server, server); - lasso_release_doc(doc); + login = (LassoLogin*)lasso_node_new_from_dump(dump); + if (! LASSO_IS_LOGIN(login)) { + lasso_release_gobject(login); + } else { + lasso_assign_gobject(login->parent.server, server); + } return login; } diff --git a/lasso/id-ff/logout.c b/lasso/id-ff/logout.c index 0d934208..c260013f 100644 --- a/lasso/id-ff/logout.c +++ b/lasso/id-ff/logout.c @@ -1181,16 +1181,13 @@ LassoLogout* lasso_logout_new_from_dump(LassoServer *server, const char *dump) { LassoLogout *logout; - xmlDoc *doc; - - if (dump == NULL) - return NULL; - - logout = lasso_logout_new(server); - doc = xmlParseMemory(dump, strlen(dump)); - init_from_xml(LASSO_NODE(logout), xmlDocGetRootElement(doc)); - lasso_release_doc(doc); + logout = (LassoLogout*)lasso_node_new_from_dump(dump); + if (! LASSO_IS_LOGOUT(logout)) { + lasso_release_gobject(logout); + } else { + lasso_assign_gobject(logout->parent.server, server); + } return logout; } diff --git a/lasso/id-ff/provider.c b/lasso/id-ff/provider.c index 4ee76a5f..576e5051 100644 --- a/lasso/id-ff/provider.c +++ b/lasso/id-ff/provider.c @@ -72,7 +72,7 @@ static gboolean lasso_provider_load_metadata_from_doc(LassoProvider *provider, x /** * lasso_provider_get_assertion_consumer_service_url: * @provider: a #LassoProvider - * @service_id: the AssertionConsumerServiceID, NULL for default + * @service_id:(allow-none): the AssertionConsumerServiceID, NULL for default * * Extracts the AssertionConsumerServiceURL from the provider metadata * descriptor. @@ -910,8 +910,8 @@ lasso_provider_new_helper(LassoProviderRole role, const char *metadata, * lasso_provider_new: * @role: provider role, identity provider or service provider * @metadata: path to the provider metadata file - * @public_key: path to the provider public key file (may be a certificate) or NULL - * @ca_cert_chain: path to the provider CA certificate chain file or NULL + * @public_key:(allow-none): path to the provider public key file (may be a certificate) or NULL + * @ca_cert_chain:(allow-none): path to the provider CA certificate chain file or NULL * * Creates a new #LassoProvider. * @@ -929,8 +929,8 @@ lasso_provider_new(LassoProviderRole role, const char *metadata, * lasso_provider_new_from_buffer: * @role: provider role, identity provider or service provider * @metadata: string buffer containing a metadata file - * @public_key: path to the provider public key file (may be a certificate) or NULL - * @ca_cert_chain: path to the provider CA certificate chain file or NULL + * @public_key:(allow-none): path to the provider public key file (may be a certificate) or NULL + * @ca_cert_chain:(allow-none): path to the provider CA certificate chain file or NULL * * Creates a new #LassoProvider. * @@ -1074,16 +1074,11 @@ LassoProvider* lasso_provider_new_from_dump(const gchar *dump) { LassoProvider *provider; - xmlDoc *doc; - - if (dump == NULL) - return NULL; - - provider = g_object_new(LASSO_TYPE_PROVIDER, NULL); - doc = lasso_xml_parse_memory(dump, strlen(dump)); - init_from_xml(LASSO_NODE(provider), xmlDocGetRootElement(doc)); - lasso_release_doc(doc); + provider = (LassoProvider*)lasso_node_new_from_dump(dump); + if (! LASSO_IS_PROVIDER(provider)) { + lasso_release_gobject(provider); + } return provider; } diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c index 1ca1ab33..a25021de 100644 --- a/lasso/id-ff/server.c +++ b/lasso/id-ff/server.c @@ -88,8 +88,8 @@ lasso_server_add_provider_helper(LassoServer *server, LassoProviderRole role, * @server: a #LassoServer * @role: provider role, identity provider or service provider * @metadata: path to the provider metadata file - * @public_key: provider public key file (may be a certificate) or NULL - * @ca_cert_chain: provider CA certificate chain file or NULL + * @public_key:(allow-none): provider public key file (may be a certificate) or NULL + * @ca_cert_chain:(allow-none): provider CA certificate chain file or NULL * * Creates a new #LassoProvider and makes it known to the @server * @@ -108,8 +108,8 @@ lasso_server_add_provider(LassoServer *server, LassoProviderRole role, * @server: a #LassoServer * @role: provider role, identity provider or service provider * @metadata: a string buffer containg the metadata file for a new provider - * @public_key: provider public key file (may be a certificate) or NULL - * @ca_cert_chain: provider CA certificate chain file or NULL + * @public_key:(allow-none): provider public key file (may be a certificate) or NULL + * @ca_cert_chain:(allow-none): provider CA certificate chain file or NULL * * Creates a new #LassoProvider and makes it known to the @server * @@ -140,7 +140,7 @@ lasso_server_destroy(LassoServer *server) /** * lasso_server_set_encryption_private_key: * @server: a #LassoServer - * @filename: file name of the encryption key to load + * @filename:(allow-none): file name of the encryption key to load * * Load an encryption private key from a file and set it in the server object * @@ -149,18 +149,18 @@ lasso_server_destroy(LassoServer *server) int lasso_server_set_encryption_private_key(LassoServer *server, const gchar *filename) { - LassoPemFileType file_type; - - lasso_release_sec_key(server->private_data->encryption_private_key); - file_type = lasso_get_pem_file_type(filename); - if (file_type == LASSO_PEM_FILE_TYPE_PRIVATE_KEY) { - server->private_data->encryption_private_key = xmlSecCryptoAppKeyLoad(filename, - xmlSecKeyDataFormatPem, NULL, NULL, NULL); + /* FIXME: add a password argument */ + if (filename) { + xmlSecKey *key = lasso_xmlsec_load_private_key(filename, NULL); + if (! key || ! (xmlSecKeyGetType(key) & xmlSecKeyDataTypePrivate)) { + return LASSO_SERVER_ERROR_SET_ENCRYPTION_PRIVATE_KEY_FAILED; + } + lasso_release_sec_key(server->private_data->encryption_private_key); + server->private_data->encryption_private_key = key; + } else { + lasso_release_sec_key(server->private_data->encryption_private_key); } - if (server->private_data->encryption_private_key == NULL) - return LASSO_SERVER_ERROR_SET_ENCRYPTION_PRIVATE_KEY_FAILED; - return 0; } @@ -533,8 +533,8 @@ lasso_server_get_type() * lasso_server_new: * @metadata: path to the provider metadata file or NULL, for a LECP server * @private_key: path to the the server private key file or NULL - * @private_key_password: password to private key if it is encrypted, or NULL - * @certificate: path to the server certificate file, or NULL + * @private_key_password:(allow-none): password to private key if it is encrypted, or NULL + * @certificate:(allow-none): path to the server certificate file, or NULL * * Creates a new #LassoServer. * @@ -574,8 +574,8 @@ 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 + * @private_key_password:(allow-none): a NULL terminated string which is the optional password of the private key + * @certificate:(allow-none): NULL terminated string containing a PEM formatted X509 certificate * * Creates a new #LassoServer. * @@ -617,16 +617,13 @@ lasso_server_new_from_buffers(const char *metadata, const char *private_key_cont LassoServer* lasso_server_new_from_dump(const gchar *dump) { - LassoNode *server; - server = lasso_node_new_from_dump(dump); - if (server == NULL) - return NULL; + LassoServer *server; - if (LASSO_IS_SERVER(server) == FALSE) { - lasso_node_destroy(LASSO_NODE(server)); - return NULL; + server = (LassoServer*)lasso_node_new_from_dump(dump); + if (! LASSO_IS_SERVER(server)) { + lasso_release_gobject(server); } - return LASSO_SERVER(server); + return server; } /** diff --git a/lasso/id-ff/session.c b/lasso/id-ff/session.c index 95ef3f39..06e0a47e 100644 --- a/lasso/id-ff/session.c +++ b/lasso/id-ff/session.c @@ -756,27 +756,11 @@ LassoSession* lasso_session_new_from_dump(const gchar *dump) { LassoSession *session; - xmlDoc *doc; - xmlNode *rootElement; - if (dump == NULL) - return NULL; - - doc = xmlParseMemory(dump, strlen(dump)); - if (doc == NULL) - return NULL; - - rootElement = xmlDocGetRootElement(doc); - if (strcmp((char*)rootElement->name, "Session") != 0) { - lasso_release_doc(doc); - return NULL; + session = (LassoSession*)lasso_node_new_from_dump(dump); + if (! LASSO_IS_SESSION(session)) { + lasso_release_gobject(session); } - - session = lasso_session_new(); - init_from_xml(LASSO_NODE(session), rootElement); - lasso_release_doc(doc); - session->is_dirty = FALSE; - return session; } |
