summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValery Febvre <vfebvre at easter-eggs.com>2004-04-13 17:31:35 +0000
committerValery Febvre <vfebvre at easter-eggs.com>2004-04-13 17:31:35 +0000
commit6c29b232c028cb51f8e558ce609093ad9887b42a (patch)
tree355e00e7fbf2c4242154f08dc17e46cd6df5c73a
parentf98a9ea8c7d96ec6dcfc942f0bd0538f6a3b3904 (diff)
downloadlasso-6c29b232c028cb51f8e558ce609093ad9887b42a.tar.gz
lasso-6c29b232c028cb51f8e558ce609093ad9887b42a.tar.xz
lasso-6c29b232c028cb51f8e558ce609093ad9887b42a.zip
*** empty log message ***
-rw-r--r--lasso/Attic/protocols/federation_termination_notification.h2
-rw-r--r--lasso/Attic/protocols/logout.c30
-rw-r--r--lasso/Attic/protocols/logout.h8
-rw-r--r--lasso/Attic/protocols/name_identifier.h2
-rw-r--r--lasso/Attic/protocols/protocols.h23
-rw-r--r--lasso/Attic/protocols/register_name_identifier.h4
-rw-r--r--lasso/Attic/protocols/single_sign_on_and_federation.c37
-rw-r--r--lasso/Attic/protocols/single_sign_on_and_federation.h12
-rw-r--r--lasso/xml/lib_assertion.h2
-rw-r--r--lasso/xml/lib_authentication_statement.h2
-rw-r--r--lasso/xml/lib_authn_response.h1
-rw-r--r--lasso/xml/lib_subject.h1
-rw-r--r--lasso/xml/samlp_response.c16
-rw-r--r--lasso/xml/samlp_response.h6
-rw-r--r--python/lasso.py2
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