diff options
| author | Damien Laniel <dlaniel@entrouvert.com> | 2006-12-04 17:21:00 +0000 |
|---|---|---|
| committer | Damien Laniel <dlaniel@entrouvert.com> | 2006-12-04 17:21:00 +0000 |
| commit | 6b0381bdc235f7c23c02a602fd0000eca754ef93 (patch) | |
| tree | 73e40230ffa963d4dca7cb95f9e5bbc473a5a2b1 | |
| parent | 993f96ed4047ba843ea7a2ce50c44dbeb8668b87 (diff) | |
Verify message signature in lasso_saml20_login_process_authn_response_msg
| -rw-r--r-- | lasso/id-ff/provider.c | 10 | ||||
| -rw-r--r-- | lasso/saml-2.0/login.c | 4 |
2 files changed, 9 insertions, 5 deletions
diff --git a/lasso/id-ff/provider.c b/lasso/id-ff/provider.c index aaf7511f..33545745 100644 --- a/lasso/id-ff/provider.c +++ b/lasso/id-ff/provider.c @@ -916,12 +916,12 @@ int lasso_provider_verify_signature(LassoProvider *provider, msg = (char*)message; if (message == NULL) - return -2; + return LASSO_PROFILE_ERROR_INVALID_MSG; if (format == LASSO_MESSAGE_FORMAT_ERROR) - return -2; + return LASSO_PROFILE_ERROR_INVALID_MSG; if (format == LASSO_MESSAGE_FORMAT_UNKNOWN) - return -2; + return LASSO_PROFILE_ERROR_INVALID_MSG; if (format == LASSO_MESSAGE_FORMAT_QUERY) { return lasso_query_verify_signature(message, @@ -933,7 +933,7 @@ int lasso_provider_verify_signature(LassoProvider *provider, rc = xmlSecBase64Decode((xmlChar*)message, (xmlChar*)msg, strlen(message)); if (rc < 0) { g_free(msg); - return -3; + return LASSO_PROFILE_ERROR_INVALID_MSG; } } @@ -957,7 +957,7 @@ int lasso_provider_verify_signature(LassoProvider *provider, xmlXPathFreeContext(xpathCtx); if (xmlnode == NULL) { xmlFreeDoc(doc); - return -4; + return LASSO_PROFILE_ERROR_INVALID_MSG; } } else { xmlnode = xmlDocGetRootElement(doc); diff --git a/lasso/saml-2.0/login.c b/lasso/saml-2.0/login.c index fe062ced..1637611f 100644 --- a/lasso/saml-2.0/login.c +++ b/lasso/saml-2.0/login.c @@ -916,6 +916,10 @@ lasso_saml20_login_process_authn_response_msg(LassoLogin *login, gchar *authn_re return critical_error(LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND); /* XXX: verify signature ? */ + profile->signature_status = lasso_provider_verify_signature( + remote_provider, authn_response_msg, "ID", format); + if (profile->signature_status != 0) + return profile->signature_status; return lasso_saml20_login_process_response_status_and_assertion(login); } |
