diff options
| author | Valery Febvre <vfebvre at easter-eggs.com> | 2004-04-13 17:31:35 +0000 |
|---|---|---|
| committer | Valery Febvre <vfebvre at easter-eggs.com> | 2004-04-13 17:31:35 +0000 |
| commit | 6c29b232c028cb51f8e558ce609093ad9887b42a (patch) | |
| tree | 355e00e7fbf2c4242154f08dc17e46cd6df5c73a | |
| parent | f98a9ea8c7d96ec6dcfc942f0bd0538f6a3b3904 (diff) | |
| download | lasso-6c29b232c028cb51f8e558ce609093ad9887b42a.tar.gz lasso-6c29b232c028cb51f8e558ce609093ad9887b42a.tar.xz lasso-6c29b232c028cb51f8e558ce609093ad9887b42a.zip | |
*** empty log message ***
| -rw-r--r-- | lasso/Attic/protocols/federation_termination_notification.h | 2 | ||||
| -rw-r--r-- | lasso/Attic/protocols/logout.c | 30 | ||||
| -rw-r--r-- | lasso/Attic/protocols/logout.h | 8 | ||||
| -rw-r--r-- | lasso/Attic/protocols/name_identifier.h | 2 | ||||
| -rw-r--r-- | lasso/Attic/protocols/protocols.h | 23 | ||||
| -rw-r--r-- | lasso/Attic/protocols/register_name_identifier.h | 4 | ||||
| -rw-r--r-- | lasso/Attic/protocols/single_sign_on_and_federation.c | 37 | ||||
| -rw-r--r-- | lasso/Attic/protocols/single_sign_on_and_federation.h | 12 | ||||
| -rw-r--r-- | lasso/xml/lib_assertion.h | 2 | ||||
| -rw-r--r-- | lasso/xml/lib_authentication_statement.h | 2 | ||||
| -rw-r--r-- | lasso/xml/lib_authn_response.h | 1 | ||||
| -rw-r--r-- | lasso/xml/lib_subject.h | 1 | ||||
| -rw-r--r-- | lasso/xml/samlp_response.c | 16 | ||||
| -rw-r--r-- | lasso/xml/samlp_response.h | 6 | ||||
| -rw-r--r-- | python/lasso.py | 2 |
15 files changed, 90 insertions, 58 deletions
diff --git a/lasso/Attic/protocols/federation_termination_notification.h b/lasso/Attic/protocols/federation_termination_notification.h index 6f0f7b65..f7a90a0a 100644 --- a/lasso/Attic/protocols/federation_termination_notification.h +++ b/lasso/Attic/protocols/federation_termination_notification.h @@ -26,7 +26,7 @@ e Place, Suite 330, Boston, MA 02111-1307 USA #ifndef __FEDERATION_TERMINATION_NOTIFICATION_H__ #define __FEDERATION_TERMINATION_NOTIFICATION_H__ -#include <lasso/lasso.h> +#include <lasso/protocols/protocols.h> LassoNode *lasso_build_full_federationTerminationNotification(const xmlChar *requestID, const xmlChar *majorVersion, diff --git a/lasso/Attic/protocols/logout.c b/lasso/Attic/protocols/logout.c index 9ef83243..b193142f 100644 --- a/lasso/Attic/protocols/logout.c +++ b/lasso/Attic/protocols/logout.c @@ -35,7 +35,7 @@ lasso_logout_request_build_full(const char *requestID, const xmlChar *minorVersion, const xmlChar *issueInstant, const xmlChar *providerID, - const xmlChar *nameIdentifier, + xmlChar *nameIdentifier, const xmlChar *nameQualifier, const xmlChar *format, const xmlChar *sessionIndex, @@ -114,7 +114,7 @@ lasso_logout_request_build_full(const char *requestID, lassoLogoutRequest * lasso_logout_request_create(const xmlChar *providerID, - const xmlChar *nameIdentifier, + xmlChar *nameIdentifier, const xmlChar *nameQualifier, const xmlChar *format, const xmlChar *sessionIndex, @@ -124,17 +124,18 @@ lasso_logout_request_create(const xmlChar *providerID, lassoLogoutRequest *lareq; lareq = g_malloc(sizeof(lassoLogoutRequest)); + lareq->type = lassoProtocolTypeLogoutRequest; lareq->node = lasso_logout_request_build_full(NULL, - NULL, - NULL, - NULL, - providerID, - nameIdentifier, - nameQualifier, - format, - sessionIndex, - relayState, - consent); + NULL, + NULL, + NULL, + providerID, + nameIdentifier, + nameQualifier, + format, + sessionIndex, + relayState, + consent); return(lareq); } @@ -158,7 +159,7 @@ lasso_logout_request_rebuild(const xmlChar *query) lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "RelayState"), 0), lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "consent"), 0)); } - + g_datalist_clear(&gd); return(request); } @@ -241,11 +242,12 @@ lasso_logout_response_build_full(const xmlChar *responseID, } lassoLogoutResponse * -lasso_logout_response_create(const xmlChar *query) +lasso_logout_response_create(xmlChar *query) { lassoLogoutResponse *lares; lares = g_malloc(sizeof(lassoLogoutResponse)); + lares->type = lassoProtocolTypeLogoutResponse; lares->request_query = NULL; if(query!=NULL){ lares->request_query = query; diff --git a/lasso/Attic/protocols/logout.h b/lasso/Attic/protocols/logout.h index 598bf5b5..d1370a1f 100644 --- a/lasso/Attic/protocols/logout.h +++ b/lasso/Attic/protocols/logout.h @@ -26,28 +26,32 @@ #ifndef __LOGOUT_H__ #define __LOGOUT_H__ -#include <lasso/lasso.h> +#include <lasso/protocols/protocols.h> typedef struct _lassoLogoutRequest lassoLogoutRequest; struct _lassoLogoutRequest{ LassoNode *node; + enum lassoProtocolTypes type; }; typedef struct _lassoLogoutResponse lassoLogoutResponse; struct _lassoLogoutResponse{ LassoNode *node; + enum lassoProtocolTypes type; LassoNode *request_node; xmlChar *request_query; }; lassoLogoutRequest * lasso_logout_request_create(const xmlChar *providerID, - const xmlChar *nameIdentifier, + xmlChar *nameIdentifier, const xmlChar *nameQualifier, const xmlChar *format, const xmlChar *sessionIndex, const xmlChar *relayState, const xmlChar *consent); +lassoLogoutResponse * lasso_logout_response_create(xmlChar *query); + #endif /* __LOGOUT_H__ */ diff --git a/lasso/Attic/protocols/name_identifier.h b/lasso/Attic/protocols/name_identifier.h index f91ed92f..714b477f 100644 --- a/lasso/Attic/protocols/name_identifier.h +++ b/lasso/Attic/protocols/name_identifier.h @@ -1,6 +1,6 @@ #ifndef __NAME_IDENTIFIER__ #define __NAME_IDENTIFIER__ -#include <lasso/lasso.h> +#include <lasso/protocols/protocols.h> #endif /* __NAME_IDENTIFIER__ */ diff --git a/lasso/Attic/protocols/protocols.h b/lasso/Attic/protocols/protocols.h index 5073be19..672bed12 100644 --- a/lasso/Attic/protocols/protocols.h +++ b/lasso/Attic/protocols/protocols.h @@ -29,16 +29,21 @@ extern "C" { #endif /* __cplusplus */ -#include <lasso/lasso.h> -#include <lasso/protocols/federation_termination_notification.h> -#include <lasso/protocols/logout.h> -#include <lasso/protocols/register_name_identifier.h> -#include <lasso/protocols/single_sign_on_and_federation.h> +#include <lasso/xml/lib_authn_request.h> +#include <lasso/xml/lib_authn_response.h> +#include <lasso/xml/lib_federation_termination_notification.h> +#include <lasso/xml/lib_logout_request.h> +#include <lasso/xml/lib_logout_response.h> +#include <lasso/xml/lib_register_name_identifier_request.h> +#include <lasso/xml/lib_register_name_identifier_response.h> -GString *lasso_build_encoded_message_url(const char *authority, - LassoNode *request); -void lasso_sign_encoded_message(GString *message, - const char *private_key_filename); +enum lassoProtocolTypes { + lassoProtocolTypeAuthnRequest, + lassoProtocolTypeAuthnResponse, + lassoProtocolTypeLogoutRequest, + lassoProtocolTypeLogoutResponse, + lassoProtocolTypeResponse +}; #ifdef __cplusplus } diff --git a/lasso/Attic/protocols/register_name_identifier.h b/lasso/Attic/protocols/register_name_identifier.h index 3899a74a..6210cae8 100644 --- a/lasso/Attic/protocols/register_name_identifier.h +++ b/lasso/Attic/protocols/register_name_identifier.h @@ -28,9 +28,9 @@ #ifdef __cplusplus extern "C" { -#endif /* __cplusplus */ +#endif /* __cplusplus */ -#include <lasso/lasso.h> +#include <lasso/protocols/protocols.h> LassoNode *lasso_build_full_registerNameIdentifierRequest(const xmlChar *requestID, const xmlChar *majorVersion, diff --git a/lasso/Attic/protocols/single_sign_on_and_federation.c b/lasso/Attic/protocols/single_sign_on_and_federation.c index 18010cef..d592fefc 100644 --- a/lasso/Attic/protocols/single_sign_on_and_federation.c +++ b/lasso/Attic/protocols/single_sign_on_and_federation.c @@ -48,7 +48,7 @@ lasso_authn_request_build_full(const xmlChar *requestID, GPtrArray *idpList, const xmlChar *consent) { - LassoNode *request, *authn_context, *scoping; + LassoNode *request, *authn_context, *scoping; gint i; gboolean authn_context_ok = FALSE; @@ -203,6 +203,7 @@ lasso_authn_request_create(const xmlChar *providerID, lassoAuthnRequest *lareq; lareq = g_malloc(sizeof(lassoAuthnRequest)); + lareq->type = lassoProtocolTypeAuthnRequest; lareq->node = lasso_authn_request_build_full(NULL, NULL, NULL, @@ -236,13 +237,14 @@ lasso_authn_response_create(xmlChar *query, gboolean isAuthenticated) { lassoAuthnResponse *lares; - GData *gd; - gboolean forceAuthn = FALSE; - gboolean isPassive = TRUE; + GData *gd; + gboolean forceAuthn = FALSE; + gboolean isPassive = TRUE; const gchar *authnContextComparison = lassoLibAuthnContextComparisonExact; - gint proxyCount = 0; + gint proxyCount = 0; lares = g_malloc(sizeof(lassoAuthnResponse)); + lares->type = lassoProtocolTypeAuthnResponse; lares->request_query = query; lares->public_key = public_key; lares->private_key = private_key; @@ -353,7 +355,7 @@ lasso_authn_response_init(lassoAuthnResponse *lares, if (authentication_result == TRUE) { content = lasso_node_get_content(lasso_node_get_child(lares->request_node, "NameIDPolicy")); if (xmlStrEqual(content, "none") || content == NULL) { - printf("Pas de NameIDPolicy ou None\n"); + printf("Aucun NameIDPolicy ou None\n"); status_code_value = 0; } xmlFree(content); @@ -416,13 +418,22 @@ lasso_authn_response_add_assertion(lassoAuthnResponse *lares, } LassoNode * -lasso_assertion_build(lassoAuthnResponse *lares, +lasso_assertion_build(gpointer *lares, const xmlChar *issuer) { LassoNode *assertion, *statement, *subject; + LassoAttr *requestID; xmlChar *content; - assertion = lasso_lib_assertion_new(); + g_assert(((lassoAuthnResponse *)lares)->type == lassoProtocolTypeAuthnResponse || + ((lassoAuthnResponse *)lares)->type == lassoProtocolTypeResponse); + + if (((lassoAuthnResponse *)lares)->type == lassoProtocolTypeAuthnResponse) { + assertion = lasso_lib_assertion_new(); + } + else { + assertion = lasso_saml_assertion_new(); + } lasso_saml_assertion_set_assertionID(LASSO_SAML_ASSERTION(assertion), (const xmlChar *)lasso_build_unique_id(32)); @@ -437,7 +448,9 @@ lasso_assertion_build(lassoAuthnResponse *lares, issuer); /* InResponseTo */ - content = xmlNodeGetContent((xmlNodePtr)lasso_node_get_attr(lares->request_node, "RequestID")); + requestID = lasso_node_get_attr(((lassoAuthnResponse *)lares)->request_node, + "RequestID"); + content = xmlNodeGetContent((xmlNodePtr)requestID); if (content != NULL) { lasso_lib_assertion_set_inResponseTo(LASSO_LIB_ASSERTION(assertion), content); @@ -452,7 +465,7 @@ lasso_assertion_add_authenticationStatement(LassoNode *assertion, LassoNode *statement) { lasso_saml_assertion_add_authenticationStatement(LASSO_SAML_ASSERTION(assertion), - LASSO_LIB_AUTHENTICATION_STATEMENT(statement)); + LASSO_SAML_AUTHENTICATION_STATEMENT(statement)); return (1); } @@ -460,10 +473,10 @@ LassoNode * lasso_authentication_statement_build(const xmlChar *authenticationMethod, const xmlChar *sessionIndex, const xmlChar *reauthenticateOnOrAfter, - const xmlChar *nameIdentifier, + xmlChar *nameIdentifier, const xmlChar *nameQualifier, const xmlChar *format, - const xmlChar *idp_nameIdentifier, + xmlChar *idp_nameIdentifier, const xmlChar *idp_nameQualifier, const xmlChar *idp_format, const xmlChar *confirmationMethod) diff --git a/lasso/Attic/protocols/single_sign_on_and_federation.h b/lasso/Attic/protocols/single_sign_on_and_federation.h index 736c1198..574366d2 100644 --- a/lasso/Attic/protocols/single_sign_on_and_federation.h +++ b/lasso/Attic/protocols/single_sign_on_and_federation.h @@ -30,20 +30,22 @@ extern "C" { #endif /* __cplusplus */ -#include <lasso/lasso.h> +#include <lasso/protocols/protocols.h> typedef struct _lassoAuthnRequest lassoAuthnRequest; struct _lassoAuthnRequest { LassoNode *node; + enum lassoProtocolTypes type; }; typedef struct _lassoAuthnResponse lassoAuthnResponse; struct _lassoAuthnResponse { LassoNode *node; - xmlChar *request_query; + enum lassoProtocolTypes type; LassoNode *request_node; + xmlChar *request_query; gboolean isPassive; gboolean mustAuthenticate; const xmlChar *public_key; @@ -79,7 +81,7 @@ gint lasso_authn_response_init(lassoAuthnResponse *lares, gint lasso_authn_response_add_assertion(lassoAuthnResponse *lares, LassoNode *assertion); -LassoNode *lasso_assertion_build(lassoAuthnResponse *lares, +LassoNode *lasso_assertion_build(gpointer *lares, const xmlChar *issuer); gint lasso_assertion_add_authenticationStatement(LassoNode *assertion, @@ -88,10 +90,10 @@ gint lasso_assertion_add_authenticationStatement(LassoNode *assertion, LassoNode *lasso_authentication_statement_build(const xmlChar *authenticationMethod, const xmlChar *sessionIndex, const xmlChar *reauthenticateOnOrAfter, - const xmlChar *nameIdentifier, + xmlChar *nameIdentifier, const xmlChar *nameQualifier, const xmlChar *format, - const xmlChar *idp_nameIdentifier, + xmlChar *idp_nameIdentifier, const xmlChar *idp_nameQualifier, const xmlChar *idp_format, const xmlChar *confirmationMethod); diff --git a/lasso/xml/lib_assertion.h b/lasso/xml/lib_assertion.h index 2156275f..928b7690 100644 --- a/lasso/xml/lib_assertion.h +++ b/lasso/xml/lib_assertion.h @@ -31,6 +31,8 @@ extern "C" { #include <lasso/xml/saml_assertion.h> +#include <lasso/xml/lib_authentication_statement.h> + #define LASSO_TYPE_LIB_ASSERTION (lasso_lib_assertion_get_type()) #define LASSO_LIB_ASSERTION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), LASSO_TYPE_LIB_ASSERTION, LassoLibAssertion)) #define LASSO_LIB_ASSERTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), LASSO_TYPE_LIB_ASSERTION, LassoLibAssertionClass)) diff --git a/lasso/xml/lib_authentication_statement.h b/lasso/xml/lib_authentication_statement.h index 8ccc0df4..e82dbfae 100644 --- a/lasso/xml/lib_authentication_statement.h +++ b/lasso/xml/lib_authentication_statement.h @@ -33,6 +33,8 @@ extern "C" { #include <lasso/xml/saml_authentication_statement.h> #include <lasso/xml/lib_authn_context.h> +#include <lasso/xml/lib_subject.h> + #define LASSO_TYPE_LIB_AUTHENTICATION_STATEMENT (lasso_lib_authentication_statement_get_type()) #define LASSO_LIB_AUTHENTICATION_STATEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), LASSO_TYPE_LIB_AUTHENTICATION_STATEMENT, LassoLibAuthenticationStatement)) #define LASSO_LIB_AUTHENTICATION_STATEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), LASSO_TYPE_LIB_AUTHENTICATION_STATEMENT, LassoLibAuthenticationStatementClass)) diff --git a/lasso/xml/lib_authn_response.h b/lasso/xml/lib_authn_response.h index 139d3bb4..7ed7d5e9 100644 --- a/lasso/xml/lib_authn_response.h +++ b/lasso/xml/lib_authn_response.h @@ -30,6 +30,7 @@ extern "C" { #endif /* __cplusplus */ #include <lasso/xml/samlp_response.h> +#include <lasso/xml/lib_assertion.h> #define LASSO_TYPE_LIB_AUTHN_RESPONSE (lasso_lib_authn_response_get_type()) #define LASSO_LIB_AUTHN_RESPONSE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), LASSO_TYPE_LIB_AUTHN_RESPONSE, LassoLibAuthnResponse)) diff --git a/lasso/xml/lib_subject.h b/lasso/xml/lib_subject.h index 053b07c4..983c6286 100644 --- a/lasso/xml/lib_subject.h +++ b/lasso/xml/lib_subject.h @@ -31,6 +31,7 @@ extern "C" { #include <lasso/lasso.h> #include <lasso/xml/saml_subject.h> +#include <lasso/xml/lib_idp_provided_name_identifier.h> #define LASSO_TYPE_LIB_SUBJECT (lasso_lib_subject_get_type()) #define LASSO_LIB_SUBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), LASSO_TYPE_LIB_SUBJECT, LassoLibSubject)) diff --git a/lasso/xml/samlp_response.c b/lasso/xml/samlp_response.c index 144b34e1..dd351b27 100644 --- a/lasso/xml/samlp_response.c +++ b/lasso/xml/samlp_response.c @@ -46,25 +46,25 @@ Schema fragment (oasis-sstc-saml-schema-protocol-1.0.xsd): /*****************************************************************************/ void -lasso_samlp_response_set_status(LassoSamlpResponse *node, - LassoSamlpStatus *status) +lasso_samlp_response_add_assertion(LassoSamlpResponse *node, + gpointer assertion) { g_assert(LASSO_IS_SAMLP_RESPONSE(node)); - g_assert(LASSO_IS_SAMLP_STATUS(status)); + //g_assert(LASSO_IS_SAML_ASSERTION(assertion)); LassoNodeClass *class = LASSO_NODE_GET_CLASS(node); - class->add_child(LASSO_NODE (node), LASSO_NODE(status), FALSE); + class->add_child(LASSO_NODE (node), LASSO_NODE(assertion), TRUE); } void -lasso_samlp_response_add_assertion(LassoSamlpResponse *node, - gpointer assertion) +lasso_samlp_response_set_status(LassoSamlpResponse *node, + LassoSamlpStatus *status) { g_assert(LASSO_IS_SAMLP_RESPONSE(node)); - //g_assert(LASSO_IS_SAML_ASSERTION(assertion)); + g_assert(LASSO_IS_SAMLP_STATUS(status)); LassoNodeClass *class = LASSO_NODE_GET_CLASS(node); - class->add_child(LASSO_NODE (node), LASSO_NODE(assertion), TRUE); + class->add_child(LASSO_NODE (node), LASSO_NODE(status), FALSE); } /*****************************************************************************/ diff --git a/lasso/xml/samlp_response.h b/lasso/xml/samlp_response.h index 09804355..1fd3e7a1 100644 --- a/lasso/xml/samlp_response.h +++ b/lasso/xml/samlp_response.h @@ -54,12 +54,12 @@ struct _LassoSamlpResponseClass { LASSO_EXPORT GType lasso_samlp_response_get_type(void); LASSO_EXPORT LassoNode* lasso_samlp_response_new(void); -LASSO_EXPORT void lasso_samlp_response_set_status (LassoSamlpResponse *node, - LassoSamlpStatus *status); - LASSO_EXPORT void lasso_samlp_response_add_assertion (LassoSamlpResponse *node, gpointer assertion); +LASSO_EXPORT void lasso_samlp_response_set_status (LassoSamlpResponse *node, + LassoSamlpStatus *status); + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/python/lasso.py b/python/lasso.py index baff0ea8..a276ef12 100644 --- a/python/lasso.py +++ b/python/lasso.py @@ -158,7 +158,7 @@ class LogoutRequest: def __isprivate(self, name): return name == '_o' def __getattr__(self, name): - if self.__isprivate(name):d + if self.__isprivate(name): return self.__dict__[name] if name[:2] == "__" and name[-2:] == "__" and name != "__members__": raise AttributeError, name |
