summaryrefslogtreecommitdiffstats
path: root/lasso
diff options
context:
space:
mode:
authorBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-12-14 12:10:47 +0100
committerBenjamin Dauvergne <bdauvergne@entrouvert.com>2010-12-14 12:10:47 +0100
commit4391f1ffb91e59545c6c324068e22fb7a5da7d27 (patch)
treea5d4db6166bfec9e472252e969e0316b52cd46ff /lasso
parent4f5e6c60007c85f8fdca2a05544151300c522d74 (diff)
downloadlasso-4391f1ffb91e59545c6c324068e22fb7a5da7d27.tar.gz
lasso-4391f1ffb91e59545c6c324068e22fb7a5da7d27.tar.xz
lasso-4391f1ffb91e59545c6c324068e22fb7a5da7d27.zip
[saml2] make LASSO_SIGNATURE_VERIFY_HINT_FORCE as least as stringent as _MAYBE when checking signature on messages
Diffstat (limited to 'lasso')
-rw-r--r--lasso/saml-2.0/profile.c32
1 files changed, 23 insertions, 9 deletions
diff --git a/lasso/saml-2.0/profile.c b/lasso/saml-2.0/profile.c
index 41af2fd0..ff1b67a3 100644
--- a/lasso/saml-2.0/profile.c
+++ b/lasso/saml-2.0/profile.c
@@ -1040,12 +1040,19 @@ lasso_saml20_profile_validate_request(LassoProfile *profile, gboolean needs_iden
lasso_saml20_profile_init_response(profile, status_response,
LASSO_SAML2_STATUS_CODE_SUCCESS, NULL);
- if (lasso_profile_get_signature_verify_hint(profile) == LASSO_PROFILE_SIGNATURE_VERIFY_HINT_MAYBE &&
- profile->signature_status) {
- lasso_saml20_profile_set_response_status(profile,
- LASSO_SAML2_STATUS_CODE_REQUESTER,
- LASSO_LIB_STATUS_CODE_INVALID_SIGNATURE);
- return profile->signature_status;
+ switch (lasso_profile_get_signature_verify_hint(profile)) {
+ case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_MAYBE:
+ case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_FORCE:
+ if (profile->signature_status) {
+ lasso_saml20_profile_set_response_status(profile,
+ LASSO_SAML2_STATUS_CODE_REQUESTER,
+ LASSO_LIB_STATUS_CODE_INVALID_SIGNATURE);
+ return profile->signature_status;
+ }
+ case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_IGNORE:
+ break;
+ case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_LAST:
+ g_assert_not_reached();
}
cleanup:
@@ -1412,9 +1419,16 @@ cleanup:
if (rc) {
return rc;
}
- if ((signature_verify_hint == LASSO_PROFILE_SIGNATURE_VERIFY_HINT_MAYBE) &&
- profile->signature_status) {
- return LASSO_PROFILE_ERROR_CANNOT_VERIFY_SIGNATURE;
+ switch (lasso_profile_get_signature_verify_hint(profile)) {
+ case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_MAYBE:
+ case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_FORCE:
+ if (profile->signature_status) {
+ return LASSO_PROFILE_ERROR_CANNOT_VERIFY_SIGNATURE;
+ }
+ case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_IGNORE:
+ break;
+ case LASSO_PROFILE_SIGNATURE_VERIFY_HINT_LAST:
+ g_assert_not_reached();
}
if (missing_issuer) {
return LASSO_PROFILE_ERROR_MISSING_ISSUER;