diff options
| author | Frederic Peters <fpeters@entrouvert.com> | 2005-08-19 10:23:54 +0000 |
|---|---|---|
| committer | Frederic Peters <fpeters@entrouvert.com> | 2005-08-19 10:23:54 +0000 |
| commit | c9eeee789691a8b5bee57b52faccb49fe1d744fb (patch) | |
| tree | 26efe8826170d6d41c02819dcc6fdb2aad94928a | |
| parent | fb30438992e6f3020fbd420a50508553b977f3f4 (diff) | |
tries various key format before giving up
| -rw-r--r-- | lasso/id-ff/provider.c | 24 |
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); |
