diff options
| author | Damien Laniel <dlaniel@entrouvert.com> | 2007-06-12 14:10:34 +0000 |
|---|---|---|
| committer | Damien Laniel <dlaniel@entrouvert.com> | 2007-06-12 14:10:34 +0000 |
| commit | ebdd769f0317b95f6630cd0a271ad45f82e6602d (patch) | |
| tree | 0c3ba5c6ba70fe43908fb4a46159d24fdfae9f07 | |
| parent | d10770c933aff001b794dd1023593cfe9196eece (diff) | |
| download | lasso-ebdd769f0317b95f6630cd0a271ad45f82e6602d.tar.gz lasso-ebdd769f0317b95f6630cd0a271ad45f82e6602d.tar.xz lasso-ebdd769f0317b95f6630cd0a271ad45f82e6602d.zip | |
save provider encryption in dumps and reload it from dump + reloads the keys after loading a dump
| -rw-r--r-- | lasso/id-ff/provider.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/lasso/id-ff/provider.c b/lasso/id-ff/provider.c index fe6f9ecf..c44ba9a5 100644 --- a/lasso/id-ff/provider.c +++ b/lasso/id-ff/provider.c @@ -411,11 +411,14 @@ get_xmlNode(LassoNode *node, gboolean lasso_dump) xmlNode *xmlnode; LassoProvider *provider = LASSO_PROVIDER(node); char *roles[] = { "None", "SP", "IdP"}; + char *encryption_mode[] = { "None", "NameId", "Assertion", "Both" }; xmlnode = parent_class->get_xmlNode(node, lasso_dump); xmlSetProp(xmlnode, (xmlChar*)"ProviderDumpVersion", (xmlChar*)"2"); if (provider->role) xmlSetProp(xmlnode, (xmlChar*)"ProviderRole", (xmlChar*)roles[provider->role]); + xmlSetProp(xmlnode, (xmlChar*)"EncryptionMode", + (xmlChar*)encryption_mode[provider->private_data->encryption_mode]); return xmlnode; } @@ -440,9 +443,25 @@ init_from_xml(LassoNode *node, xmlNode *xmlnode) if (s) xmlFree(s); + s = xmlGetProp(xmlnode, (xmlChar*)"EncryptionMode"); + if (s != NULL && strcmp((char*)s, "NameId") == 0) { + provider->private_data->encryption_mode = LASSO_ENCRYPTION_MODE_NAMEID; + } else if (s != NULL && strcmp((char*)s, "Assertion") == 0) { + provider->private_data->encryption_mode = LASSO_ENCRYPTION_MODE_ASSERTION; + } else if (s != NULL && strcmp((char*)s, "Both") == 0) { + provider->private_data->encryption_mode = + LASSO_ENCRYPTION_MODE_NAMEID | LASSO_ENCRYPTION_MODE_ASSERTION; + } + if (s != NULL) { + xmlFree(s); + } + if (provider->metadata_filename) lasso_provider_load_metadata(provider, provider->metadata_filename); + lasso_provider_load_public_key(provider, LASSO_PUBLIC_KEY_SIGNING); + lasso_provider_load_public_key(provider, LASSO_PUBLIC_KEY_ENCRYPTION); + return 0; } @@ -908,9 +927,6 @@ lasso_provider_new_from_dump(const gchar *dump) init_from_xml(LASSO_NODE(provider), xmlDocGetRootElement(doc)); xmlFreeDoc(doc); - lasso_provider_load_public_key(provider, LASSO_PUBLIC_KEY_SIGNING); - lasso_provider_load_public_key(provider, LASSO_PUBLIC_KEY_ENCRYPTION); - return provider; } |
