From e76546078f8aaba9586dd674650ad4436408186e Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Mon, 4 Jan 2010 09:14:01 +0000 Subject: 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. --- lasso/id-ff/provider.c | 39 ++++++++++++++++++++++++++++++++++++++- lasso/id-ff/providerprivate.h | 4 +++- 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) { @@ -1265,6 +1285,23 @@ lasso_provider_set_encryption_sym_key_type(LassoProvider *provider, provider->private_data->encryption_sym_key_type = encryption_sym_key_type; } +/** + * 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 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); -- cgit