diff options
| -rw-r--r-- | lasso/id-ff/provider.c | 39 | ||||
| -rw-r--r-- | 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) { @@ -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); |
