summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDamien Laniel <dlaniel@entrouvert.com>2007-06-12 14:10:34 +0000
committerDamien Laniel <dlaniel@entrouvert.com>2007-06-12 14:10:34 +0000
commitebdd769f0317b95f6630cd0a271ad45f82e6602d (patch)
tree0c3ba5c6ba70fe43908fb4a46159d24fdfae9f07
parentd10770c933aff001b794dd1023593cfe9196eece (diff)
downloadlasso-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.c22
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;
}