int main(int argc, char *argv[]) { LassoServer *sp_server, *idp_server; LassoLogin *sp_login, *idp_login; int n; lasso_init(); sp_server = lasso_server_new( SP_METADATA, SP_PKEY, NULL, /* Secret key to unlock private key */ NULL); lasso_server_add_provider( sp_server, LASSO_PROVIDER_ROLE_IDP, IDP_METADATA, IDP_PKEY, NULL); idp_server = lasso_server_new( IDP_METADATA, IDP_PKEY, NULL, /* Secret key to unlock private key */ NULL); lasso_server_add_provider( idp_server, LASSO_PROVIDER_ROLE_SP, SP_METADATA, SP_PKEY, NULL); n = 100; if (argc == 2) { n = atoi(argv[1]); } sp_login = lasso_login_new(sp_server); idp_login = lasso_login_new(idp_server); timing(n, "Generating %d AuthnRequest...\n", create_authn_request, sp_login, idp_login); #if 0 printf("%s\n", lasso_node_export_to_xml(sp_login->parent.request)); #endif timing(n, "Processing %d AuthnRequest...\n", process_authn_request, sp_login, idp_login); timing(n, "Generating %d AuthnResponse...\n", create_authn_response, sp_login, idp_login); #if 0 printf("%s\n", lasso_node_export_to_xml(idp_login->parent.response)); #endif timing(n, "Processing %d AuthnResponse...\n", process_authn_response, sp_login, idp_login); return 0; }
END_TEST START_TEST(test03_server_new_from_dump) { LassoServer *server1, *server2; char *dump; server1 = lasso_server_new( TESTSDATADIR "/idp1-la/metadata.xml", TESTSDATADIR "/idp1-la/private-key-raw.pem", NULL, /* Secret key to unlock private key */ TESTSDATADIR "/idp1-la/certificate.pem"); lasso_server_add_provider( server1, LASSO_PROVIDER_ROLE_SP, TESTSDATADIR "/sp1-la/metadata.xml", TESTSDATADIR "/sp1-la/public-key.pem", TESTSDATADIR "/ca1-la/certificate.pem"); dump = lasso_node_dump(LASSO_NODE(server1)); server2 = lasso_server_new_from_dump(dump); g_free(dump); dump = lasso_node_dump(LASSO_NODE(server2)); g_object_unref(server1); g_object_unref(server2); g_free(dump); }
END_TEST START_TEST(test02_server_add_provider) { LassoServer *server; char *dump; server = lasso_server_new( TESTSDATADIR "/idp1-la/metadata.xml", TESTSDATADIR "/idp1-la/private-key-raw.pem", NULL, /* Secret key to unlock private key */ TESTSDATADIR "/idp1-la/certificate.pem"); fail_unless(LASSO_IS_SERVER(server)); fail_unless(server->private_key != NULL); fail_unless(! server->private_key_password); fail_unless(server->certificate != NULL); fail_unless(server->signature_method == LASSO_SIGNATURE_METHOD_RSA_SHA1); fail_unless(server->providers != NULL); lasso_server_add_provider( server, LASSO_PROVIDER_ROLE_SP, TESTSDATADIR "/sp1-la/metadata.xml", TESTSDATADIR "/sp1-la/public-key.pem", TESTSDATADIR "/ca1-la/certificate.pem"); fail_unless(g_hash_table_size(server->providers) == 1); dump = lasso_node_dump(LASSO_NODE(server)); g_object_unref(server); lasso_release_string(dump); }
END_TEST START_TEST(test01_server_new) { LassoServer *server; LassoProvider *provider; char *dump; char *content = NULL; size_t len; server = lasso_server_new( TESTSDATADIR "/idp1-la/metadata.xml", TESTSDATADIR "/idp1-la/private-key-raw.pem", NULL, /* Secret key to unlock private key */ TESTSDATADIR "/idp1-la/certificate.pem"); fail_unless(LASSO_IS_SERVER(server)); provider = LASSO_PROVIDER(server); fail_unless(server->private_key != NULL); fail_unless(server->private_key_password == NULL); fail_unless(server->certificate != NULL); fail_unless(server->signature_method == LASSO_SIGNATURE_METHOD_RSA_SHA1); fail_unless(provider->ProviderID != NULL); fail_unless(provider->role == 0); fail_unless(g_file_get_contents(TESTSDATADIR "/idp1-la/metadata.xml", &content, &len, NULL)); fail_unless(strcmp(provider->metadata_filename, content) == 0); g_free(content); fail_unless(provider->public_key == NULL); fail_unless(provider->ca_cert_chain == NULL); dump = lasso_node_dump(LASSO_NODE(server)); fail_unless(dump != NULL); g_object_unref(server); server = lasso_server_new_from_dump(dump); fail_unless(LASSO_IS_SERVER(server)); provider = LASSO_PROVIDER(server); fail_unless(server->private_key != NULL); fail_unless(server->private_key_password == NULL); fail_unless(server->certificate != NULL); fail_unless(server->signature_method == LASSO_SIGNATURE_METHOD_RSA_SHA1); fail_unless(server->providers != NULL); fail_unless(provider->ProviderID != NULL); fail_unless(provider->role == 0, "provider->role != 0 => provider := %d", provider->role); fail_unless(g_file_get_contents(TESTSDATADIR "/idp1-la/metadata.xml", &content, &len, NULL)); fail_unless(strcmp(provider->metadata_filename, content) == 0); fail_unless(provider->public_key == NULL); fail_unless(provider->ca_cert_chain == NULL); g_object_unref(server); lasso_release_string(dump); lasso_release_string(content); }
static char* generateServiceProviderContextDump() { LassoServer *serverContext; char *ret; serverContext = lasso_server_new( TESTSDATADIR "/sp1-la/metadata.xml", TESTSDATADIR "/sp1-la/private-key-raw.pem", NULL, /* Secret key to unlock private key */ TESTSDATADIR "/sp1-la/certificate.pem"); check_not_null(serverContext); check_good_rc(lasso_server_add_provider( serverContext, LASSO_PROVIDER_ROLE_IDP, TESTSDATADIR "/idp1-la/metadata.xml", TESTSDATADIR "/idp1-la/public-key.pem", TESTSDATADIR "/ca1-la/certificate.pem")); ret = lasso_server_dump(serverContext); check_not_null(ret); g_object_unref(serverContext); return ret; }