From 345c3b50f80fc22fd99568469fb2a987f7178b71 Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Fri, 1 Apr 2011 19:34:30 +0200 Subject: [PATCH] [core] rename lasso_server_load_federation to lasso_server_load_metadata The aim of this function is now to load any metadata file, and to replace completely the use of lasso_server_add_provider. The metadata content argument is replaced by a metadata file path to more closely match other APIs. --- bindings/overrides.xml | 2 +- lasso/id-ff/server.c | 11 ++++------- lasso/id-ff/server.h | 2 +- tests/basic_tests.c | 17 +++++++---------- 4 files changed, 13 insertions(+), 19 deletions(-) diff --git a/bindings/overrides.xml b/bindings/overrides.xml index 4d3fc62c..fadccefe 100644 --- a/bindings/overrides.xml +++ b/bindings/overrides.xml @@ -172,7 +172,7 @@ - + diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c index c398b3f6..98f1b88b 100644 --- a/lasso/id-ff/server.c +++ b/lasso/id-ff/server.c @@ -750,7 +750,7 @@ lasso_server_get_encryption_private_key(LassoServer *server) } /** - * lasso_server_load_federation: + * lasso_server_load_metadata: * @server: a #LassoServer object * @role: a #LassoProviderRole value * @federation_file: a C string formatted as SAML 2.0 metadata XML content, @@ -776,8 +776,8 @@ lasso_server_get_encryption_private_key(LassoServer *server) * */ lasso_error_t -lasso_server_load_federation(LassoServer *server, LassoProviderRole role, const gchar *federation_metadata, const gchar - *trusted_roots, GList *blacklisted_entity_ids, GList **loaded_entity_ids) +lasso_server_load_metadata(LassoServer *server, LassoProviderRole role, const gchar *federation_file, + const gchar *trusted_roots, GList *blacklisted_entity_ids, GList **loaded_entity_ids) { xmlDoc *doc = NULL; xmlNode *root = NULL; @@ -794,7 +794,7 @@ lasso_server_load_federation(LassoServer *server, LassoProviderRole role, const lasso_return_val_if_fail(keys_mngr != NULL, LASSO_DS_ERROR_CA_CERT_CHAIN_LOAD_FAILED); } - doc = lasso_xml_parse_memory(federation_metadata, strlen(federation_metadata)); + doc = lasso_xml_parse_file(federation_file); goto_cleanup_if_fail_with_rc(doc, LASSO_SERVER_ERROR_INVALID_XML); root = xmlDocGetRootElement(doc); if (trusted_roots) { @@ -808,12 +808,9 @@ lasso_server_load_federation(LassoServer *server, LassoProviderRole role, const goto_cleanup_with_rc(LASSO_DS_ERROR_INVALID_SIGNATURE); } } - /* TODO: branch to the SAML2 version of this function */ if (lasso_strisequal((char*)root->ns->href, LASSO_SAML2_METADATA_HREF)) { lasso_check_good_rc(lasso_saml20_server_load_federation(server, role, root, blacklisted_entity_ids, loaded_entity_ids)); } else { - /* TODO: iterate SPDescriptor and IDPDescriptor, choose which one to parse by looking at the role enum. - * */ goto_cleanup_with_rc(LASSO_ERROR_UNIMPLEMENTED); } diff --git a/lasso/id-ff/server.h b/lasso/id-ff/server.h index 77939cd8..43033858 100644 --- a/lasso/id-ff/server.h +++ b/lasso/id-ff/server.h @@ -103,7 +103,7 @@ LASSO_EXPORT lasso_error_t lasso_server_load_affiliation(LassoServer *server, co LASSO_EXPORT lasso_error_t lasso_server_set_encryption_private_key_with_password(LassoServer *server, const gchar *filename_or_buffer, const gchar *password); -LASSO_EXPORT lasso_error_t lasso_server_load_federation(LassoServer *server, LassoProviderRole role, +LASSO_EXPORT lasso_error_t lasso_server_load_metadata(LassoServer *server, LassoProviderRole role, const gchar *federation_file, const gchar *trusted_roots, GList *blacklisted_entity_ids, GList **loaded_entity_ids); #ifdef __cplusplus diff --git a/tests/basic_tests.c b/tests/basic_tests.c index 6d1ae89c..2d5af9db 100644 --- a/tests/basic_tests.c +++ b/tests/basic_tests.c @@ -1942,11 +1942,10 @@ END_TEST #include /* test load federation */ -START_TEST(test13_test_lasso_server_load_federation) +START_TEST(test13_test_lasso_server_load_metadata) { LassoServer *server = NULL; GList *loaded_entity_ids = NULL; - char *metadata_content; GList blacklisted_1 = { .data = "https://identities.univ-jfc.fr/idp/prod", .next = NULL }; check_not_null(server = lasso_server_new( @@ -1954,15 +1953,13 @@ START_TEST(test13_test_lasso_server_load_federation) TESTSDATADIR "/idp5-saml2/private-key.pem", NULL, /* Secret key to unlock private key */ NULL)); - check_true(g_file_get_contents(TESTSDATADIR "/renater-metadata.xml", &metadata_content, - NULL, NULL)); - check_good_rc(lasso_server_load_federation(server, LASSO_PROVIDER_ROLE_IDP, - metadata_content, TESTSDATADIR "/metadata-federation-renater.crt", + check_good_rc(lasso_server_load_metadata(server, LASSO_PROVIDER_ROLE_IDP, + TESTSDATADIR "/renater-metadata.xml", + TESTSDATADIR "/metadata-federation-renater.crt", &blacklisted_1, &loaded_entity_ids)); check_equals(g_hash_table_size(server->providers), 101); check_equals(g_list_length(loaded_entity_ids), 101); - lasso_release_string(metadata_content); lasso_release_gobject(server); } END_TEST @@ -1981,7 +1978,7 @@ basic_suite() TCase *tc_registry_new_from_xmlNode = tcase_create("Test parsing a node that has a mapping to Lasso Object in the registry"); TCase *tc_response_new_from_xmlNode = tcase_create("Test parsing a message from Ping Federate"); TCase *tc_custom_namespace = tcase_create("Test custom namespace handling"); - TCase *tc_load_federation = tcase_create("Test loading a federation metadata file"); + TCase *tc_load_metadata = tcase_create("Test loading a federation metadata file"); suite_add_tcase(s, tc_server_load_dump_empty_string); suite_add_tcase(s, tc_server_load_dump_random_string); @@ -1993,7 +1990,7 @@ basic_suite() suite_add_tcase(s, tc_registry_new_from_xmlNode); suite_add_tcase(s, tc_response_new_from_xmlNode); suite_add_tcase(s, tc_custom_namespace); - suite_add_tcase(s, tc_load_federation); + suite_add_tcase(s, tc_load_metadata); tcase_add_test(tc_server_load_dump_empty_string, test01_server_load_dump_empty_string); tcase_add_test(tc_server_load_dump_random_string, test02_server_load_dump_random_string); @@ -2007,7 +2004,7 @@ basic_suite() tcase_add_test(tc_response_new_from_xmlNode, test10_test_alldumps); tcase_add_test(tc_response_new_from_xmlNode, test11_get_default_name_id_format); tcase_add_test(tc_custom_namespace, test12_custom_namespace); - tcase_add_test(tc_load_federation, test13_test_lasso_server_load_federation); + tcase_add_test(tc_load_metadata, test13_test_lasso_server_load_metadata); return s; }