summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2005-08-19 10:23:54 +0000
committerFrederic Peters <fpeters@entrouvert.com>2005-08-19 10:23:54 +0000
commitc9eeee789691a8b5bee57b52faccb49fe1d744fb (patch)
tree26efe8826170d6d41c02819dcc6fdb2aad94928a
parentfb30438992e6f3020fbd420a50508553b977f3f4 (diff)
tries various key format before giving up
-rw-r--r--lasso/id-ff/provider.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/lasso/id-ff/provider.c b/lasso/id-ff/provider.c
index b0073721..ab816844 100644
--- a/lasso/id-ff/provider.c
+++ b/lasso/id-ff/provider.c
@@ -708,6 +708,17 @@ lasso_provider_load_public_key(LassoProvider *provider)
{
LassoPemFileType file_type;
xmlSecKey *pub_key = NULL;
+ xmlSecKeyDataFormat key_formats[] = {
+ xmlSecKeyDataFormatDer,
+ xmlSecKeyDataFormatCertDer,
+ xmlSecKeyDataFormatPkcs8Der,
+ xmlSecKeyDataFormatCertPem,
+ xmlSecKeyDataFormatPkcs8Pem,
+ xmlSecKeyDataFormatPem,
+ xmlSecKeyDataFormatBinary,
+ 0
+ };
+ int i;
if (provider->public_key == NULL && provider->private_data->signing_key_descriptor == NULL)
return;
@@ -744,15 +755,16 @@ lasso_provider_load_public_key(LassoProvider *provider)
xmlFree(b64_value);
g_free(value);
}
- pub_key = xmlSecCryptoAppKeyLoadMemory(value, rc,
- xmlSecKeyDataFormatCertDer, NULL, NULL, NULL);
+ for (i=0; key_formats[i] && pub_key == NULL; i++) {
+ pub_key = xmlSecCryptoAppKeyLoadMemory(value, rc,
+ key_formats[i], NULL, NULL, NULL);
+ }
xmlFree(b64_value);
g_free(value);
- if (pub_key == NULL) {
- /* XXX: bad key (could try Pem now) */
- }
provider->private_data->public_key = pub_key;
- return;
+ if (pub_key) {
+ return;
+ }
}
file_type = lasso_get_pem_file_type(provider->public_key);