summaryrefslogtreecommitdiffstats
path: root/lasso/id-ff
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-01-04 09:14:01 +0000
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-01-04 09:14:01 +0000
commite76546078f8aaba9586dd674650ad4436408186e (patch)
treed570af127c34c45a49da47035e633e6d176b91f8 /lasso/id-ff
parent7e22acdd2c784fd4ce279ba2a7fe79ba490d02a0 (diff)
downloadlasso-e76546078f8aaba9586dd674650ad4436408186e.tar.gz
lasso-e76546078f8aaba9586dd674650ad4436408186e.tar.xz
lasso-e76546078f8aaba9586dd674650ad4436408186e.zip
Core: in provider.c, add accessors for encryption informations
* lasso/id-ff/provider.c: add getters for encryption_sym_key_type and encryption_public_key. * lasso/id-ff/providerprivate.h: declare new accessors.
Diffstat (limited to 'lasso/id-ff')
-rw-r--r--lasso/id-ff/provider.c39
-rw-r--r--lasso/id-ff/providerprivate.h4
2 files changed, 41 insertions, 2 deletions
diff --git a/lasso/id-ff/provider.c b/lasso/id-ff/provider.c
index fc25394e..a7df20ba 100644
--- a/lasso/id-ff/provider.c
+++ b/lasso/id-ff/provider.c
@@ -372,12 +372,32 @@ static struct XmlSnippet schema_snippets[] = {
static LassoNodeClass *parent_class = NULL;
xmlSecKey*
-lasso_provider_get_public_key(LassoProvider *provider)
+lasso_provider_get_public_key(const LassoProvider *provider)
{
g_return_val_if_fail(LASSO_IS_PROVIDER(provider), NULL);
return provider->private_data->public_key;
}
+/**
+ * lasso_provider_get_encryption_public_key:
+ * @provider: a #LassoProvider object.
+ *
+ * Return the #xmlSecKey public key to use for encrypting content target at @provider.
+ *
+ * Return value: an #xmlSecKey object, or NULL if no key is known or @provider is not a
+ * #LassoProvider.
+ */
+xmlSecKey*
+lasso_provider_get_encryption_public_key(const LassoProvider *provider)
+{
+ g_return_val_if_fail(LASSO_IS_PROVIDER(provider), NULL);
+
+ if (provider->private_data->encryption_public_key) {
+ return provider->private_data->encryption_public_key;
+ }
+ return lasso_provider_get_public_key(provider);
+}
+
static void
load_descriptor(xmlNode *xmlnode, GHashTable *descriptor, LassoProvider *provider)
{
@@ -1266,6 +1286,23 @@ lasso_provider_set_encryption_sym_key_type(LassoProvider *provider,
}
/**
+ * lasso_provider_get_encryption_sym_key_type:
+ * @provider: a #LassoProvider object
+ *
+ * Return the encryption sym key type for this provider.
+ *
+ * Return value: a #LassoEncryptionSymKeyType value.
+ */
+LassoEncryptionSymKeyType
+lasso_provider_get_encryption_sym_key_type(const LassoProvider *provider)
+{
+ if (LASSO_IS_PROVIDER(provider) && provider->private_data)
+ return provider->private_data->encryption_sym_key_type;
+
+ return LASSO_ENCRYPTION_SYM_KEY_TYPE_DEFAULT;
+}
+
+/**
* lasso_provider_verify_query_signature:
* @provider: the #LassoProvider for the the provider issuing the query
* @message: the URL query string UTF-8 encoded
diff --git a/lasso/id-ff/providerprivate.h b/lasso/id-ff/providerprivate.h
index ad50bade..1d4ae3d3 100644
--- a/lasso/id-ff/providerprivate.h
+++ b/lasso/id-ff/providerprivate.h
@@ -71,7 +71,9 @@ int lasso_provider_verify_signature(LassoProvider *provider,
const char *message, const char *id_attr_name, LassoMessageFormat format);
gboolean lasso_provider_load_public_key(LassoProvider *provider,
LassoPublicKeyType public_key_type);
-xmlSecKey* lasso_provider_get_public_key(LassoProvider *provider);
+xmlSecKey* lasso_provider_get_public_key(const LassoProvider *provider);
+xmlSecKey* lasso_provider_get_encryption_public_key(const LassoProvider *provider);
+LassoEncryptionSymKeyType lasso_provider_get_encryption_sym_key_type(const LassoProvider* provider);
int lasso_provider_verify_saml_signature(LassoProvider *provider, xmlNode *signed_node, xmlDoc *doc);
int lasso_provider_verify_query_signature(LassoProvider *provider, const char *message);