diff options
| author | Nicolas Clapies <nclapies@entrouvert.com> | 2004-09-23 16:49:31 +0000 |
|---|---|---|
| committer | Nicolas Clapies <nclapies@entrouvert.com> | 2004-09-23 16:49:31 +0000 |
| commit | c8b4f3a49d4fcbd8dee10f42235aae3fc7e7f356 (patch) | |
| tree | 52d87d2a1fef3f40bb1ac22a20d7d4c4e49d4669 | |
| parent | 3e35952c6a29797604bf41210ffe441923bd93c0 (diff) | |
| download | lasso-c8b4f3a49d4fcbd8dee10f42235aae3fc7e7f356.tar.gz lasso-c8b4f3a49d4fcbd8dee10f42235aae3fc7e7f356.tar.xz lasso-c8b4f3a49d4fcbd8dee10f42235aae3fc7e7f356.zip | |
Major update of code in lasso_name_identifier_mapping_init_request(), lasso_name_identifier_mapping_process_request(), lasso_name_identifier_mapping_validate_request(). Added binding in swig for name identifier mapping profile
| -rw-r--r-- | lasso/Attic/protocols/name_identifier_mapping_request.c | 115 | ||||
| -rw-r--r-- | lasso/Attic/protocols/name_identifier_mapping_request.h | 16 | ||||
| -rw-r--r-- | lasso/Attic/protocols/name_identifier_mapping_response.c | 92 | ||||
| -rw-r--r-- | lasso/Attic/protocols/name_identifier_mapping_response.h | 29 | ||||
| -rw-r--r-- | swig/Lasso.i | 174 |
5 files changed, 348 insertions, 78 deletions
diff --git a/lasso/Attic/protocols/name_identifier_mapping_request.c b/lasso/Attic/protocols/name_identifier_mapping_request.c index a6fde0da..b4c42351 100644 --- a/lasso/Attic/protocols/name_identifier_mapping_request.c +++ b/lasso/Attic/protocols/name_identifier_mapping_request.c @@ -68,11 +68,13 @@ GType lasso_name_identifier_mapping_request_get_type() { } LassoNode* -lasso_name_identifier_mapping_request_new(const xmlChar *providerID, - const xmlChar *nameIdentifier, - const xmlChar *nameQualifier, - const xmlChar *format, - const xmlChar *targetNameSpace) +lasso_name_identifier_mapping_request_new(const xmlChar *providerID, + const xmlChar *nameIdentifier, + const xmlChar *nameQualifier, + const xmlChar *format, + const xmlChar *targetNameSpace, + lassoSignatureType sign_type, + lassoSignatureMethod sign_method) { LassoNode *request, *identifier; xmlChar *id, *time; @@ -124,7 +126,7 @@ lasso_name_identifier_mapping_request_new(const xmlChar *providerID, return request; } -LassoNode * +static LassoNode * lasso_name_identifier_mapping_request_new_from_query(const gchar *query) { LassoNode *request, *identifier; @@ -137,36 +139,85 @@ lasso_name_identifier_mapping_request_new_from_query(const gchar *query) /* RequestID */ str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "RequestID"), 0); + if (str == NULL) { + g_datalist_clear(&gd); + g_object_unref(request); + return NULL; + } lasso_samlp_request_abstract_set_requestID(LASSO_SAMLP_REQUEST_ABSTRACT(request), str); /* MajorVersion */ str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MajorVersion"), 0); + if (str == NULL) { + g_datalist_clear(&gd); + g_object_unref(request); + return NULL; + } lasso_samlp_request_abstract_set_majorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request), str); /* MinorVersion */ str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "MinorVersion"), 0); + if (str == NULL) { + g_datalist_clear(&gd); + g_object_unref(request); + return NULL; + } lasso_samlp_request_abstract_set_minorVersion(LASSO_SAMLP_REQUEST_ABSTRACT(request), str); /* IssueInstant */ str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "IssueInstant"), 0); + if (str == NULL) { + g_datalist_clear(&gd); + g_object_unref(request); + return NULL; + } lasso_samlp_request_abstract_set_issueInstant(LASSO_SAMLP_REQUEST_ABSTRACT(request), str); - + /* ProviderID */ str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "ProviderID"), 0); + if (str == NULL) { + g_datalist_clear(&gd); + g_object_unref(request); + return NULL; + } lasso_lib_name_identifier_mapping_request_set_providerID(LASSO_LIB_NAME_IDENTIFIER_MAPPING_REQUEST(request), str); /* NameIdentifier */ str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "NameIdentifier"), 0); + if (str == NULL) { + g_datalist_clear(&gd); + g_object_unref(request); + return NULL; + } identifier = lasso_saml_name_identifier_new(str); str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "NameQualifier"), 0); + if (str == NULL) { + g_datalist_clear(&gd); + g_object_unref(request); + return NULL; + } lasso_saml_name_identifier_set_nameQualifier(LASSO_SAML_NAME_IDENTIFIER(identifier), str); str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "Format"), 0); + if (str == NULL) { + g_datalist_clear(&gd); + g_object_unref(request); + return NULL; + } lasso_saml_name_identifier_set_format(LASSO_SAML_NAME_IDENTIFIER(identifier), str); lasso_lib_name_identifier_mapping_request_set_nameIdentifier(LASSO_LIB_NAME_IDENTIFIER_MAPPING_REQUEST(request), LASSO_SAML_NAME_IDENTIFIER(identifier)); lasso_node_destroy(identifier); - + + /* TargetNameSpace */ + str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "TargetNameSpace"), 0); + if (str == NULL) { + g_datalist_clear(&gd); + g_object_unref(request); + return NULL; + } + lasso_lib_name_identifier_mapping_request_set_targetNameSpace(LASSO_LIB_NAME_IDENTIFIER_MAPPING_REQUEST(request), str); + /* consent */ str = lasso_g_ptr_array_index((GPtrArray *)g_datalist_get_data(&gd, "consent"), 0); if (str != NULL) @@ -177,7 +228,7 @@ lasso_name_identifier_mapping_request_new_from_query(const gchar *query) return request; } -LassoNode * +static LassoNode * lasso_name_identifier_mapping_request_new_from_soap(const gchar *buffer) { LassoNode *request; @@ -201,3 +252,49 @@ lasso_name_identifier_mapping_request_new_from_soap(const gchar *buffer) return request; } + +static LassoNode * +lasso_name_identifier_mapping_request_new_from_xml(gchar *buffer) +{ + LassoNode *request; + LassoNode *lassoNode_request; + xmlNodePtr xmlNode_request; + LassoNodeClass *class; + + request = LASSO_NODE(g_object_new(LASSO_TYPE_NAME_IDENTIFIER_MAPPING_REQUEST, NULL)); + + lassoNode_request = lasso_node_new_from_dump(buffer); + class = LASSO_NODE_GET_CLASS(lassoNode_request); + xmlNode_request = xmlCopyNode(class->get_xmlNode(LASSO_NODE(lassoNode_request)), 1); + class = LASSO_NODE_GET_CLASS(request); + class->set_xmlNode(LASSO_NODE(request), xmlNode_request); + lasso_node_destroy(lassoNode_request); + + return request; +} + +LassoNode* +lasso_name_identifier_mapping_request_new_from_export(gchar *buffer, + lassoNodeExportType export_type) +{ + LassoNode *request = NULL; + + g_return_val_if_fail(buffer != NULL, NULL); + + switch(export_type){ + case lassoNodeExportTypeQuery: + request = lasso_name_identifier_mapping_request_new_from_query(buffer); + break; + case lassoNodeExportTypeSoap: + request = lasso_name_identifier_mapping_request_new_from_soap(buffer); + break; + case lassoNodeExportTypeXml: + request = lasso_name_identifier_mapping_request_new_from_xml(buffer); + break; + default: + message(G_LOG_LEVEL_CRITICAL, "Unsupported export type\n"); + break; + } + + return request; +} diff --git a/lasso/Attic/protocols/name_identifier_mapping_request.h b/lasso/Attic/protocols/name_identifier_mapping_request.h index 40e2eb26..df66c81c 100644 --- a/lasso/Attic/protocols/name_identifier_mapping_request.h +++ b/lasso/Attic/protocols/name_identifier_mapping_request.h @@ -53,15 +53,17 @@ struct _LassoNameIdentifierMappingRequestClass { }; LASSO_EXPORT GType lasso_name_identifier_mapping_request_get_type (void); -LASSO_EXPORT LassoNode *lasso_name_identifier_mapping_request_new (const xmlChar *providerID, - const xmlChar *nameIdentifier, - const xmlChar *nameQualifier, - const xmlChar *format, - const xmlChar *targetNameSpace); +LASSO_EXPORT LassoNode *lasso_name_identifier_mapping_request_new (const xmlChar *providerID, + const xmlChar *nameIdentifier, + const xmlChar *nameQualifier, + const xmlChar *format, + const xmlChar *targetNameSpace, + lassoSignatureType sign_type, + lassoSignatureMethod sign_method); -LASSO_EXPORT LassoNode *lasso_name_identifier_mapping_request_new_from_query (const gchar *query); -LASSO_EXPORT LassoNode *lasso_name_identifier_mapping_request_new_from_soap (const gchar *buffer); +LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_request_new_from_export (gchar *buffer, + lassoNodeExportType export_type); #ifdef __cplusplus } diff --git a/lasso/Attic/protocols/name_identifier_mapping_response.c b/lasso/Attic/protocols/name_identifier_mapping_response.c index 749f76e6..0bdc3e79 100644 --- a/lasso/Attic/protocols/name_identifier_mapping_response.c +++ b/lasso/Attic/protocols/name_identifier_mapping_response.c @@ -67,9 +67,14 @@ GType lasso_name_identifier_mapping_response_get_type() { } LassoNode* -lasso_name_identifier_mapping_response_new(const xmlChar *providerID, - const xmlChar *statusCodeValue, - LassoNode *request) +lasso_name_identifier_mapping_response_new(const xmlChar *providerID, + const xmlChar *statusCodeValue, + LassoNode *request, + xmlChar *content, + xmlChar *nameQualifier, + xmlChar *format, + lassoSignatureType sign_type, + lassoSignatureMethod sign_method) { /* FIXME : change request type */ LassoNode *response, *ss, *ssc; @@ -125,18 +130,6 @@ lasso_name_identifier_mapping_response_new(const xmlChar *providerID, } LassoNode * -lasso_name_identifier_mapping_response_new_from_dump(const gchar *buffer) -{ - LassoNode *response; - - response = LASSO_NODE(g_object_new(LASSO_TYPE_NAME_IDENTIFIER_MAPPING_RESPONSE, NULL)); - lasso_node_import(response, buffer); - - return response; -} - -/* build a NameIdentifierMappingResponse from a query form NameIdentifierMappingResponse */ -LassoNode * lasso_name_identifier_mapping_response_new_from_query(const gchar *query) { LassoNode *response; @@ -180,24 +173,6 @@ lasso_name_identifier_mapping_response_new_from_query(const gchar *query) return response; } -/* build a NameIdentifierMappingRespose from a soap form NameIdentifierMappingRequest */ -LassoNode * -lasso_name_identifier_mapping_response_new_from_request_soap(const gchar *buffer, - const xmlChar *providerID, - const xmlChar *statusCodeValue) -{ - LassoNode *request, *response; - - request = lasso_name_identifier_mapping_request_new_from_soap(buffer); - - response = lasso_name_identifier_mapping_response_new(providerID, - statusCodeValue, - request); - lasso_node_destroy(request); - - return response; -} - LassoNode * lasso_name_identifier_mapping_response_new_from_soap(const gchar *buffer) { @@ -223,20 +198,49 @@ lasso_name_identifier_mapping_response_new_from_soap(const gchar *buffer) return response; } -/* build a NameIdentifierMappingResponse from a query form NameIdentifierMappingRequest */ -LassoNode * -lasso_name_identifier_mapping_response_new_from_request_query(const gchar *query, - const xmlChar *providerID, - const xmlChar *statusCodeValue) + +static LassoNode * +lasso_name_identifier_mapping_response_new_from_xml(gchar *buffer) { - LassoNode *request, *response; + LassoNode *response; + LassoNode *lassoNode_response; + xmlNodePtr xmlNode_response; + LassoNodeClass *class; + + response = LASSO_NODE(g_object_new(LASSO_TYPE_NAME_IDENTIFIER_MAPPING_RESPONSE, NULL)); - request = lasso_name_identifier_mapping_request_new_from_query(query); + lassoNode_response = lasso_node_new_from_dump(buffer); + class = LASSO_NODE_GET_CLASS(lassoNode_response); + xmlNode_response = xmlCopyNode(class->get_xmlNode(LASSO_NODE(lassoNode_response)), 1); + class = LASSO_NODE_GET_CLASS(response); + class->set_xmlNode(LASSO_NODE(response), xmlNode_response); + lasso_node_destroy(lassoNode_response); - response = lasso_name_identifier_mapping_response_new(providerID, - statusCodeValue, - request); - lasso_node_destroy(request); + return response; +} + +LassoNode* +lasso_name_identifier_mapping_response_new_from_export(gchar *buffer, + lassoNodeExportType export_type) +{ + LassoNode *response; + + g_return_val_if_fail(buffer != NULL, NULL); + + switch(export_type){ + case lassoNodeExportTypeQuery: + response = lasso_name_identifier_mapping_response_new_from_query(buffer); + break; + case lassoNodeExportTypeSoap: + response = lasso_name_identifier_mapping_response_new_from_soap(buffer); + break; + case lassoNodeExportTypeXml: + response = lasso_name_identifier_mapping_response_new_from_xml(buffer); + break; + default: + message(G_LOG_LEVEL_WARNING, "Invalid export type\n"); + return NULL; + } return response; } diff --git a/lasso/Attic/protocols/name_identifier_mapping_response.h b/lasso/Attic/protocols/name_identifier_mapping_response.h index 4d848509..a82723a0 100644 --- a/lasso/Attic/protocols/name_identifier_mapping_response.h +++ b/lasso/Attic/protocols/name_identifier_mapping_response.h @@ -55,24 +55,17 @@ struct _LassoNameIdentifierMappingResponseClass { LASSO_EXPORT GType lasso_name_identifier_mapping_response_get_type (void); -LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_response_new (const xmlChar *providerID, - const xmlChar *statusCodeValue, - LassoNode *request); - -LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_response_new_from_dump (const gchar *buffer); - -LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_response_new_from_query (const gchar *query); - -LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_response_new_from_request_soap (const gchar *buffer, - const xmlChar *providerID, - const xmlChar *statusCodeValue); - -LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_response_new_from_soap (const gchar *buffer); - -LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_response_new_from_request_query (const gchar *query, - const xmlChar *providerID, - const xmlChar *statusCodeValue); - +LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_response_new (const xmlChar *providerID, + const xmlChar *statusCodeValue, + LassoNode *request, + xmlChar *content, + xmlChar *qualifier, + xmlChar *format, + lassoSignatureType sign_type, + lassoSignatureMethod sign_method); + +LASSO_EXPORT LassoNode* lasso_name_identifier_mapping_response_new_from_export (gchar *buffer, + lassoNodeExportType export_type); #ifdef __cplusplus } diff --git a/swig/Lasso.i b/swig/Lasso.i index 9f17ed65..3a9a9feb 100644 --- a/swig/Lasso.i +++ b/swig/Lasso.i @@ -2214,6 +2214,180 @@ gint LassoLecp_setSessionFromDump(LassoLecp *self, gchar *dump) { %} +/*********************************************************************** + * NameIdentifierMapping + ***********************************************************************/ + + +#ifndef SWIGPHP4 +%rename(NameIdentifierMapping) LassoNameIdentifierMapping; +#endif +typedef struct { + %extend { + /* Attributes inherited from LassoProfile */ + + %newobject identity_get; + LassoIdentity *identity; + + %immutable isIdentityDirty; + gboolean isIdentityDirty; + + %immutable isSessionDirty; + gboolean isSessionDirty; + + %immutable msgBody; + gchar *msgBody; + + %immutable msgUrl; + gchar *msgUrl; + + %immutable nameIdentifier; + gchar *nameIdentifier; + + %newobject remoteProviderId_get; + gchar *remoteProviderId; + + %newobject session_get; + LassoSession *session; + + /* Constructor, Destructor & Static Methods */ + + LassoNameIdentifierMapping(LassoServer *server); + + ~LassoNameIdentifierMapping(); + + /* Methods inherited from LassoProfile */ + + THROW_ERROR + void setIdentityFromDump(gchar *dump); + END_THROW_ERROR + + THROW_ERROR + void setSessionFromDump(gchar *dump); + END_THROW_ERROR + + /* Methods */ + + THROW_ERROR + void buildRequestMsg(); + END_THROW_ERROR + + THROW_ERROR + void buildResponseMsg(); + END_THROW_ERROR + + %newobject dump; + gchar *dump(); + + THROW_ERROR + void initRequest(gchar *targetNameSpace, gchar *remoteProviderId = NULL); + END_THROW_ERROR + + THROW_ERROR + void processRequestMsg(gchar *requestMsg, lassoHttpMethod httpMethod); + END_THROW_ERROR + + THROW_ERROR + void processResponseMsg(gchar *responseMsg, lassoHttpMethod httpMethod); + END_THROW_ERROR + + THROW_ERROR + void validateRequest(); + END_THROW_ERROR + } +} LassoNameIdentifierMapping; + +%{ + +/* Attributes inherited from LassoProfile implementations */ + +/* identity */ +#define LassoNameIdentifierMapping_get_identity LassoNameIdentifierMapping_identity_get +LassoIdentity *LassoNameIdentifierMapping_identity_get(LassoNameIdentifierMapping *self) { + return lasso_profile_get_identity(LASSO_PROFILE(self)); +} +#define LassoNameIdentifierMapping_set_identity LassoNameIdentifierMapping_identity_set +gint LassoNameIdentifierMapping_identity_set(LassoNameIdentifierMapping *self, LassoIdentity *identity) { + return lasso_profile_set_identity(LASSO_PROFILE(self), identity); +} + +/* isIdentityDirty */ +#define LassoNameIdentifierMapping_get_isIdentityDirty LassoNameIdentifierMapping_isIdentityDirty_get +gboolean LassoNameIdentifierMapping_isIdentityDirty_get(LassoNameIdentifierMapping *self) { + return lasso_profile_is_identity_dirty(LASSO_PROFILE(self)); +} + +/* isSessionDirty */ +#define LassoNameIdentifierMapping_get_isSessionDirty LassoNameIdentifierMapping_isSessionDirty_get +gboolean LassoNameIdentifierMapping_isSessionDirty_get(LassoNameIdentifierMapping *self) { + return lasso_profile_is_session_dirty(LASSO_PROFILE(self)); +} + +/* msgBody */ +#define LassoNameIdentifierMapping_get_msgBody LassoNameIdentifierMapping_msgBody_get +gchar *LassoNameIdentifierMapping_msgBody_get(LassoNameIdentifierMapping *self) { + return LASSO_PROFILE(self)->msg_body; +} + +/* msgUrl */ +#define LassoNameIdentifierMapping_get_msgUrl LassoNameIdentifierMapping_msgUrl_get +gchar *LassoNameIdentifierMapping_msgUrl_get(LassoNameIdentifierMapping *self) { + return LASSO_PROFILE(self)->msg_url; +} + +/* nameIdentifier */ +#define LassoNameIdentifierMapping_get_nameIdentifier LassoNameIdentifierMapping_nameIdentifier_get +gchar *LassoNameIdentifierMapping_nameIdentifier_get(LassoNameIdentifierMapping *self) { + return LASSO_PROFILE(self)->nameIdentifier; +} + +/* remoteProviderId */ +#define LassoNameIdentifierMapping_get_remoteProviderId LassoNameIdentifierMapping_remoteProviderId_get +gchar *LassoNameIdentifierMapping_remoteProviderId_get(LassoNameIdentifierMapping *self) { + return lasso_profile_get_remote_providerID(LASSO_PROFILE(self)); +} +#define LassoNameIdentifierMapping_set_remoteProviderId LassoNameIdentifierMapping_remoteProviderId_set +void LassoNameIdentifierMapping_remoteProviderId_set(LassoNameIdentifierMapping *self, gchar *remoteProviderId) { + lasso_profile_set_remote_providerID(LASSO_PROFILE(self), remoteProviderId); +} + +/* session */ +#define LassoNameIdentifierMapping_get_session LassoNameIdentifierMapping_session_get +LassoSession *LassoNameIdentifierMapping_session_get(LassoNameIdentifierMapping *self) { + return lasso_profile_get_session(LASSO_PROFILE(self)); +} +#define LassoNameIdentifierMapping_set_session LassoNameIdentifierMapping_session_set +gint LassoNameIdentifierMapping_session_set(LassoNameIdentifierMapping *self, LassoSession *session) { + return lasso_profile_set_session(LASSO_PROFILE(self), session); +} + +/* Constructors, destructors & static methods implementations */ + +#define new_LassoNameIdentifierMapping lasso_name_identifier_mapping_new +#define delete_LassoNameIdentifierMapping lasso_name_identifier_mapping_destroy + +/* Methods inherited from LassoProfile implementations */ + +gint LassoNameIdentifierMapping_setIdentityFromDump(LassoNameIdentifierMapping *self, gchar *dump) { + return lasso_profile_set_identity_from_dump(LASSO_PROFILE(self), dump); +} + +gint LassoNameIdentifierMapping_setSessionFromDump(LassoNameIdentifierMapping *self, gchar *dump) { + return lasso_profile_set_session_from_dump(LASSO_PROFILE(self), dump); +} + +/* Methods implementations */ + +#define LassoNameIdentifierMapping_buildRequestMsg lasso_name_identifier_mapping_build_request_msg +#define LassoNameIdentifierMapping_buildResponseMsg lasso_name_identifier_mapping_build_response_msg +#define LassoNameIdentifierMapping_dump lasso_name_identifier_mapping_dump +#define LassoNameIdentifierMapping_initRequest lasso_name_identifier_mapping_init_request +#define LassoNameIdentifierMapping_processRequestMsg lasso_name_identifier_mapping_process_request_msg +#define LassoNameIdentifierMapping_processResponseMsg lasso_name_identifier_mapping_process_response_msg +#define LassoNameIdentifierMapping_validateRequest lasso_name_identifier_mapping_validate_request + +%} + /*********************************************************************** * NameRegistration |
