diff options
| author | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-12-14 12:11:18 +0100 |
|---|---|---|
| committer | Benjamin Dauvergne <bdauvergne@entrouvert.com> | 2010-12-14 12:11:18 +0100 |
| commit | 67083e3050d4e84242ffda3bc94bffa006b1e0b9 (patch) | |
| tree | 35a12c5bc5c99ae423caa9c4a1f81d587b3d1d3c | |
| parent | a3aa8e3d1ad610d649a18339069cf312c2c34e6f (diff) | |
| parent | 4391f1ffb91e59545c6c324068e22fb7a5da7d27 (diff) | |
| download | lasso-67083e3050d4e84242ffda3bc94bffa006b1e0b9.tar.gz lasso-67083e3050d4e84242ffda3bc94bffa006b1e0b9.tar.xz lasso-67083e3050d4e84242ffda3bc94bffa006b1e0b9.zip | |
Merge branch 'hotfixes-2.3.5'
| -rw-r--r-- | lasso/saml-2.0/profile.c | 32 |
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; |
