summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2006-11-06 15:48:30 +0000
committerFrederic Peters <fpeters@entrouvert.com>2006-11-06 15:48:30 +0000
commitdfa8e3175d675cfb3c87c9d14055934a653cf263 (patch)
tree9552f652c069d69dfc6bdcccb6ee71c6c42eb9ca
parentc9733028cb8b83e77234a2c83d9eb5d951ea6893 (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.c8
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);