diff options
| author | Frederic Peters <fpeters@entrouvert.com> | 2006-11-06 15:48:30 +0000 |
|---|---|---|
| committer | Frederic Peters <fpeters@entrouvert.com> | 2006-11-06 15:48:30 +0000 |
| commit | dfa8e3175d675cfb3c87c9d14055934a653cf263 (patch) | |
| tree | 9552f652c069d69dfc6bdcccb6ee71c6c42eb9ca | |
| parent | c9733028cb8b83e77234a2c83d9eb5d951ea6893 (diff) | |
better loading of public key from metadata; full support for embedded PEM,
and suppressed output when not base64.
| -rw-r--r-- | lasso/id-ff/provider.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/lasso/id-ff/provider.c b/lasso/id-ff/provider.c index fbd39df5..4dc43f48 100644 --- a/lasso/id-ff/provider.c +++ b/lasso/id-ff/provider.c @@ -767,13 +767,13 @@ lasso_provider_load_public_key(LassoProvider *provider) if (t->type == XML_ELEMENT_NODE) { if (strcmp((char*)t->name, "KeyInfo") == 0 || strcmp((char*)t->name, "X509Data") == 0) { - xmlSecKeyInfoNodeRead(t, xmlseckey, ctx); - break; t = t->children; continue; } if (strcmp((char*)t->name, "X509Certificate") == 0) break; + if (strcmp((char*)t->name, "KeyValue") == 0) + break; } t = t->next; } @@ -783,13 +783,15 @@ lasso_provider_load_public_key(LassoProvider *provider) b64_value = xmlNodeGetContent(t); length = strlen((char*)b64_value); value = g_malloc(length); + xmlSecErrorsDefaultCallbackEnableOutput(FALSE); rc = xmlSecBase64Decode(b64_value, value, length); if (rc < 0) { /* bad base-64 */ g_free(value); value = g_strdup(b64_value); + rc = strlen(value); } - xmlSecErrorsDefaultCallbackEnableOutput(FALSE); + for (i=0; key_formats[i] && pub_key == NULL; i++) { pub_key = xmlSecCryptoAppKeyLoadMemory(value, rc, key_formats[i], NULL, NULL, NULL); |
