diff options
| author | Frederic Peters <fpeters@entrouvert.com> | 2005-08-24 16:28:46 +0000 |
|---|---|---|
| committer | Frederic Peters <fpeters@entrouvert.com> | 2005-08-24 16:28:46 +0000 |
| commit | 1601b3ecc5229ad6d371d5dd2b48efd0cccbceef (patch) | |
| tree | 970eb3fe5538aad8a37fed3b3c1e4f7916242643 | |
| parent | 6f6b0d66c10bc2be861fa1dddaaa26c3470178c7 (diff) | |
| download | lasso-1601b3ecc5229ad6d371d5dd2b48efd0cccbceef.tar.gz lasso-1601b3ecc5229ad6d371d5dd2b48efd0cccbceef.tar.xz lasso-1601b3ecc5229ad6d371d5dd2b48efd0cccbceef.zip | |
don't output xmlsec errors when trying to get a working public key but fails
with a message if it can't find a key.
| -rw-r--r-- | lasso/id-ff/provider.c | 17 | ||||
| -rw-r--r-- | lasso/id-ff/server.c | 10 |
2 files changed, 21 insertions, 6 deletions
diff --git a/lasso/id-ff/provider.c b/lasso/id-ff/provider.c index ab816844..04abe1f9 100644 --- a/lasso/id-ff/provider.c +++ b/lasso/id-ff/provider.c @@ -698,12 +698,17 @@ lasso_provider_new(LassoProviderRole role, const char *metadata, provider->public_key = g_strdup(public_key); provider->ca_cert_chain = g_strdup(ca_cert_chain); - lasso_provider_load_public_key(provider); + if (lasso_provider_load_public_key(provider) == FALSE) { + message(G_LOG_LEVEL_CRITICAL, "Failed to load public key for %s.", + provider->ProviderID); + lasso_node_destroy(LASSO_NODE(provider)); + return NULL; + } return provider; } -void +gboolean lasso_provider_load_public_key(LassoProvider *provider) { LassoPemFileType file_type; @@ -721,7 +726,7 @@ lasso_provider_load_public_key(LassoProvider *provider) int i; if (provider->public_key == NULL && provider->private_data->signing_key_descriptor == NULL) - return; + return FALSE; if (provider->public_key == NULL) { xmlNode *t = provider->private_data->signing_key_descriptor->children; @@ -755,15 +760,17 @@ lasso_provider_load_public_key(LassoProvider *provider) xmlFree(b64_value); g_free(value); } + xmlSecErrorsDefaultCallbackEnableOutput(FALSE); for (i=0; key_formats[i] && pub_key == NULL; i++) { pub_key = xmlSecCryptoAppKeyLoadMemory(value, rc, key_formats[i], NULL, NULL, NULL); } + xmlSecErrorsDefaultCallbackEnableOutput(TRUE); xmlFree(b64_value); g_free(value); provider->private_data->public_key = pub_key; if (pub_key) { - return; + return TRUE; } } @@ -783,6 +790,8 @@ lasso_provider_load_public_key(LassoProvider *provider) break; /* with a warning ? */ } provider->private_data->public_key = pub_key; + + return (pub_key != NULL); } diff --git a/lasso/id-ff/server.c b/lasso/id-ff/server.c index 6e3e8ec9..77f20d99 100644 --- a/lasso/id-ff/server.c +++ b/lasso/id-ff/server.c @@ -207,8 +207,14 @@ init_from_xml(LassoNode *node, xmlNode *xmlnode) } p = g_object_new(LASSO_TYPE_PROVIDER, NULL); LASSO_NODE_GET_CLASS(p)->init_from_xml(LASSO_NODE(p), t2); - lasso_provider_load_public_key(p); - g_hash_table_insert(server->providers, g_strdup(p->ProviderID), p); + if (lasso_provider_load_public_key(p) == TRUE) { + g_hash_table_insert(server->providers, + g_strdup(p->ProviderID), p); + } else { + message(G_LOG_LEVEL_CRITICAL, + "Failed to load public key for %s.", + p->ProviderID); + } t2 = t2->next; } } |
