0001-Remove-ID-WSF-1.0-2.0-and-WS-support.patch
bindings/bindings.py | ||
---|---|---|
268 | 268 |
skip = func.attrib.get('skip') |
269 | 269 |
if skip == 'true': |
270 | 270 |
self.skip = True |
271 |
elif skip == 'unless-id-wsf' and not binding.options.idwsf: |
|
272 |
self.skip = True |
|
273 | 271 |
elif binding.options.language in skip.split(','): |
274 | 272 |
self.skip = True |
275 | 273 |
if func.attrib.get('return_type_qualifier'): |
... | ... | |
558 | 556 | |
559 | 557 | |
560 | 558 |
def parse_headers(srcdir): |
561 |
wsf_prefixes = ['disco_', 'dst_', 'is_', 'profile_service_', 'discovery_', |
|
562 |
'wsf_', 'interaction_', 'utility_', 'sa_', 'authentication_', |
|
563 |
'wsse_', 'sec_', 'idwsf2_', 'wsf2_', 'wsa_', 'wsu', 'soap_binding'] |
|
564 | ||
565 | 559 |
srcdir = os.path.abspath(srcdir) |
566 | 560 |
parentdir = os.path.dirname(srcdir) |
567 | 561 | |
568 |
exclusion = ('xml_idff.h', 'xml_idwsf.h', 'xml_saml2.h', \ |
|
569 |
'xml_idwsf2.h', 'xml_soap11.h', |
|
570 |
'lasso_config.h', 'saml2_xsd.h' ) |
|
571 |
if not binding.options.idwsf: |
|
572 |
exclusion += ( 'idwsf_strings.h', ) |
|
562 |
exclusion = ('xml_idff.h', 'xml_saml2.h', 'xml_soap11.h', 'lasso_config.h', 'saml2_xsd.h' ) |
|
573 | 563 |
for base, dirnames, filenames in os.walk(srcdir): |
574 | 564 |
dirnames.sort() |
575 | 565 |
filenames.sort() |
... | ... | |
580 | 570 |
if not 'Makefile.am' in filenames: |
581 | 571 |
# not a source dir |
582 | 572 |
continue |
583 |
if not binding.options.idwsf and (bname == 'id-wsf' or \ |
|
584 |
bname == 'id-wsf-2.0' or bname == 'ws'): |
|
585 |
# ignore ID-WSF |
|
586 |
continue |
|
587 | 573 |
makefile_am = open(os.path.join(base, 'Makefile.am')).read() |
588 | 574 |
filenames = [x for x in filenames if x.endswith('.h') if x in makefile_am] |
589 | 575 |
for filename in filenames: |
... | ... | |
591 | 577 |
continue |
592 | 578 |
if 'private' in filename: |
593 | 579 |
continue |
594 |
if not binding.options.idwsf: |
|
595 |
if True in (filename.startswith(wsf_prefix) for wsf_prefix in wsf_prefixes): |
|
596 |
continue |
|
597 | 580 |
header_path = os.path.join(base, filename) |
598 | 581 |
header_relpath = os.path.relpath(header_path, parentdir) |
599 | 582 | |
600 | 583 |
binding.headers.append(header_relpath) |
601 | 584 |
parse_header(header_path) |
602 |
binding.constants.append(('b', 'LASSO_WSF_ENABLED')) |
|
603 | 585 | |
604 | 586 |
def main(): |
605 | 587 |
global binding |
... | ... | |
607 | 589 |
parser = OptionParser() |
608 | 590 |
parser.add_option('-l', '--language', dest = 'language') |
609 | 591 |
parser.add_option('-s', '--src-dir', dest = 'srcdir', default = '../lasso/') |
610 |
parser.add_option('--enable-id-wsf', dest = 'idwsf', action = 'store_true') |
|
611 | 592 |
parser.add_option('--enable-exception-docs', dest= 'exception_doc', action = 'store_true') |
612 | 593 | |
613 | 594 |
options, args = parser.parse_args() |
bindings/java/Makefile.am | ||
---|---|---|
28 | 28 |
java_extension_LTLIBRARIES = libjnilasso.la |
29 | 29 |
java_extensiondir = ${libdir}/java |
30 | 30 | |
31 |
if WSF_ENABLED |
|
32 |
EXTRA_ARGS = --enable-id-wsf |
|
33 |
endif |
|
34 | ||
35 | 31 |
java_lasso_source_files := $(shell $(PYTHON) $(top_srcdir)/bindings/bindings.py -l java-list --src-dir=$(top_srcdir)/lasso/ $(EXTRA_ARGS) ) |
36 | 32 | |
37 | 33 |
lasso_jardir=$(prefix)/share/java |
bindings/overrides.xml | ||
---|---|---|
34 | 34 |
rename="lasso_profile_has_dirty_identity"/> |
35 | 35 |
<func name="lasso_profile_is_session_dirty" |
36 | 36 |
rename="lasso_profile_has_dirty_session"/> |
37 |
<!-- LassoWsfProfile --> |
|
38 |
<func name="lasso_wsf_profile_get_identity" return_owner="false" /> |
|
39 |
<func name="lasso_wsf_profile_get_session" return_owner="false" /> |
|
40 |
<func name="lasso_wsf_profile_get_remote_provider" skip="java,perl"/> |
|
41 |
<func name="lasso_data_service_get_answer" skip="java,perl"/> |
|
42 |
<func name="lasso_data_service_get_query_item" skip="java,perl"/> |
|
43 |
<func name="lasso_data_service_add_modification" skip="java,perl"/> |
|
44 |
<func name="lasso_data_service_get_answers" skip="java,perl"/> |
|
45 |
<func name="lasso_data_service_get_answers_by_select" skip="java,perl"/> |
|
46 |
<func name="lasso_data_service_get_answers_by_item_id" skip="java,perl"/> |
|
47 |
<func name="lasso_saml2_encrypted_element_decrypt" skip="true"/> |
|
48 | 37 |
<!-- LassoIdentity --> |
49 | 38 |
<func name="lasso_identity_get_federation" return_owner="false" /> |
50 | 39 |
<func name="lasso_identity_get_svc_md_ids" return_type_qualifier="char*"/> |
... | ... | |
164 | 153 |
<param name="service_type" optional="true"/> |
165 | 154 |
</func> |
166 | 155 |
<func name="lasso_discovery_get_description_auto" return_owner="false"/> |
167 |
<func name="lasso_server_get_service" skip="unless-id-wsf" /> |
|
168 |
<func name="lasso_login_set_encryptedResourceId" skip="unless-id-wsf"/> |
|
169 | 156 |
<func name="lasso_node_new_from_dump" skip="java"/> |
170 | 157 |
<func name="lasso_node_new_from_soap" skip="java"/> |
171 | 158 |
<func name="lasso_node_new_from_xmlNode" skip="java"/> |
... | ... | |
175 | 162 |
<func name="lasso_server_load_metadata" skip="perl,java" /> |
176 | 163 |
<!-- IdWsf --> |
177 | 164 |
<arg name="abstract" rename="abstract_" language="java"/> |
178 |
<func name="lasso_personal_profile_service_new_full" rename="lasso_personal_profile_server_new_personal_profile_service_full"/> |
|
179 |
<func name="lasso_wsf_profile_new_full" rename="lasso_wsf_profile_wsf_profile_new_full"/> |
|
180 |
<func name="lasso_wsa_endpoint_reference_get_target_identity_token" skip="true"/> |
|
181 |
<func name="lasso_wsa_endpoint_reference_get_security_token" skip="true"/> |
|
182 |
<func name="lasso_wsa_endpoint_reference_associate_service_to_type" skip="true"/> |
|
183 |
<func name="lasso_authentication_get_type" skip="true"/> |
|
184 |
<func name="lasso_authentication_get_type" skip="true"/> |
|
185 |
<func name="lasso_authentication_new" skip="true"/> |
|
186 |
<func name="lasso_authentication_destroy" skip="true"/> |
|
187 |
<func name="lasso_authentication_client_start" skip="true"/> |
|
188 |
<func name="lasso_authentication_client_step" skip="true"/> |
|
189 |
<func name="lasso_authentication_get_mechanism_list" skip="true"/> |
|
190 |
<func name="lasso_authentication_init_request" skip="true"/> |
|
191 |
<func name="lasso_authentication_process_request_msg" skip="true"/> |
|
192 |
<func name="lasso_authentication_process_response_msg" skip="true"/> |
|
193 |
<func name="lasso_authentication_server_start" skip="true"/> |
|
194 |
<func name="lasso_authentication_server_step" skip="true"/> |
|
195 |
<struct name="LassoAuthentication" skip="true"/> |
|
196 |
<func name="lasso_wsse_username_token_derive_key" skip="true"/> |
|
197 |
<func name="lasso_wsa_endpoint_reference_add_security_token" skip="true"/> |
|
198 | 165 |
<func name="lasso_log_set_handler" skip="true"/> |
199 | 166 |
<func name="lasso_log_remove_handler" skip="true"/> |
200 | 167 |
<func name="lasso_key_new_for_signature_from_memory" skip="true"/> |
... | ... | |
216 | 183 |
<category name="Logout" parent="Profile"/> |
217 | 184 |
<category name="Defederation" parent="Profile"/> |
218 | 185 |
<category name="NameIdentifierMapping" parent="Profile"/> |
219 |
<category name="WsfProfile" parent="Profile"/> |
|
220 |
<category name="Discovery" parent="WsfProfile"/> |
|
221 |
<category name="DataService" parent="WsfProfile"/> |
|
222 |
<category name="Dst" parent="WsfProfile"/> |
|
223 | 186 |
</exception> |
224 | 187 |
</overrides> |
bindings/perl/Makefile.am | ||
---|---|---|
30 | 30 | |
31 | 31 |
EXTRA_DIST=$(TOCOPY) typemap-in typemap-out lang.py __init__.py test.sh |
32 | 32 | |
33 |
if WSF_ENABLED |
|
34 |
EXTRA_ARGS = --enable-id-wsf |
|
35 |
endif |
|
36 | ||
37 | 33 |
# Copy if out of a build |
38 | 34 |
Makefile.perl: $(srcdir)/Makefile.PL Lasso.xs Lasso.pm |
39 | 35 |
$(AM_V_GEN) if [ "$(srcdir)" != "$(builddir)" ]; then \ |
bindings/perl/lang.py | ||
---|---|---|
208 | 208 |
self.xs.pn('sv_setiv(ct, %s);' % name) |
209 | 209 |
elif type == 's': |
210 | 210 |
self.xs.pn('sv_setpv(ct, %s);' % name) |
211 |
elif type == 'b': # only one case LASSO_WSF_ENABLED
|
|
211 |
elif type == 'b': |
|
212 | 212 |
self.xs.unindent() |
213 | 213 |
self.xs.pn('''#ifdef %s |
214 | 214 |
sv_setiv(ct, 1); |
... | ... | |
224 | 224 |
self.xs.pn('ct = newSViv(%s);' % name) |
225 | 225 |
elif type == 's': |
226 | 226 |
self.xs.pn('ct = newSVpv((char*)%s, 0);' % name) |
227 |
elif type == 'b': # only one case LASSO_WSF_ENABLED
|
|
227 |
elif type == 'b': |
|
228 | 228 |
self.xs.unindent() |
229 | 229 |
self.xs.pn('''#ifdef %s |
230 | 230 |
ct = newSViv(1); |
bindings/php5/Makefile.am | ||
---|---|---|
24 | 24 | |
25 | 25 |
BUILT_SOURCES = _lasso.c |
26 | 26 | |
27 |
if WSF_ENABLED |
|
28 |
EXTRA_ARGS = --enable-id-wsf |
|
29 |
endif |
|
30 | ||
31 | ||
32 | 27 |
lasso.php _lasso.c: lang.py wrapper_source.py wrapper_header.py wrapper_source_top.c php_code.py ../overrides.xml |
33 | 28 |
$(AM_V_GEN) $(PYTHON) $(top_srcdir)/bindings/bindings.py -l php5 --src-dir=$(top_srcdir)/lasso/ $(EXTRA_ARGS) |
34 | 29 |
bindings/php7/Makefile.am | ||
---|---|---|
24 | 24 | |
25 | 25 |
BUILT_SOURCES = _lasso.c |
26 | 26 | |
27 |
if WSF_ENABLED |
|
28 |
EXTRA_ARGS = --enable-id-wsf |
|
29 |
endif |
|
30 | ||
31 | ||
32 | 27 |
lasso.php _lasso.c: lang.py wrapper_source.py wrapper_header.py wrapper_source_top.c php_code.py ../overrides.xml |
33 | 28 |
$(AM_V_GEN) $(PYTHON) $(top_srcdir)/bindings/bindings.py -l php7 --src-dir=$(top_srcdir)/lasso/ $(EXTRA_ARGS) |
34 | 29 |
bindings/python/Makefile.am | ||
---|---|---|
32 | 32 | |
33 | 33 |
EXTRA_DIST=lang.py wrapper_bottom.c wrapper_top.c __init__.py examples |
34 | 34 | |
35 |
if WSF_ENABLED |
|
36 |
EXTRA_ARGS = --enable-id-wsf |
|
37 |
endif |
|
38 | ||
39 | 35 |
lasso.py _lasso.c: lang.py wrapper_top.c wrapper_bottom.c ../bindings.py |
40 | 36 |
$(AM_V_GEN) $(PYTHON) $(top_srcdir)/bindings/bindings.py -l python --src-dir=$(top_srcdir)/lasso/ $(EXTRA_ARGS) |
41 | 37 |
bindings/python/lang.py | ||
---|---|---|
270 | 270 | |
271 | 271 |
# backward compatibility with the SWIG binding |
272 | 272 | |
273 |
WSF_SUPPORT = WSF_ENABLED |
|
274 | ||
275 | 273 |
Profile.isIdentityDirty = property(Profile.hasDirtyIdentity) |
276 | 274 |
Profile.isSessionDirty = property(Profile.hasDirtySession) |
277 | 275 | |
... | ... | |
303 | 301 |
NodeList = list |
304 | 302 |
StringList = list |
305 | 303 |
StringDict = dict |
306 |
registerIdWsf2DstService = registerIdwsf2DstService |
|
307 | ||
308 |
if WSF_SUPPORT: |
|
309 |
DiscoDescription_newWithBriefSoapHttpDescription = DiscoDescription.newWithBriefSoapHttpDescription |
|
310 |
Discovery.buildRequestMsg = Discovery.buildSoapRequestMsg |
|
311 |
InteractionProfileService.buildRequestMsg = InteractionProfileService.buildSoapRequestMsg |
|
312 |
InteractionProfileService.buildResponseMsg = InteractionProfileService.buildSoapResponseMsg |
|
313 |
DataService.buildRequestMsg = DataService.buildSoapRequestMsg |
|
314 |
DiscoModifyResponse.newEntryIds = DiscoModifyResponse.newEntryIDs |
|
315 | 304 |
''', file=fd) |
316 | 305 | |
317 | 306 |
def generate_constants(self, fd): |
bindings/python/tests/Makefile.am | ||
---|---|---|
7 | 7 |
TESTS += profiles_tests.py binding_tests.py |
8 | 8 |
endif |
9 | 9 | |
10 |
if WSF_ENABLED |
|
11 |
TESTS += idwsf1_tests.py idwsf2_tests.py |
|
12 |
endif |
|
13 | ||
14 | 10 |
TEST_EXTENSIONS = .py |
15 | 11 |
PY_LOG_COMPILER = $(PYTHON) |
16 | 12 |
bindings/python/tests/idwsf2_tests.py | ||
---|---|---|
1 |
#! /usr/bin/env python |
|
2 |
# -*- coding: utf-8 -*- |
|
3 |
# |
|
4 |
# $Id: idwsf2_tests.py 3254 2007-06-05 21:23:57Z dlaniel $ |
|
5 |
# |
|
6 |
# Python unit tests for Lasso library |
|
7 |
# |
|
8 |
# Copyright (C) 2004-2007 Entr'ouvert |
|
9 |
# http://lasso.entrouvert.org |
|
10 |
# |
|
11 |
# Authors: See AUTHORS file in top-level directory. |
|
12 |
# |
|
13 |
# This program is free software; you can redistribute it and/or modify |
|
14 |
# it under the terms of the GNU General Public License as published by |
|
15 |
# the Free Software Foundation; either version 2 of the License, or |
|
16 |
# (at your option) any later version. |
|
17 |
# |
|
18 |
# This program is distributed in the hope that it will be useful, |
|
19 |
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
20 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
21 |
# GNU General Public License for more details. |
|
22 |
# |
|
23 |
# You should have received a copy of the GNU General Public License |
|
24 |
# along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
25 | ||
26 | ||
27 |
import os |
|
28 |
import unittest |
|
29 |
import sys |
|
30 |
from six import StringIO |
|
31 |
import logging |
|
32 | ||
33 |
logging.basicConfig() |
|
34 | ||
35 |
if not '..' in sys.path: |
|
36 |
sys.path.insert(0, '..') |
|
37 |
if not '../.libs' in sys.path: |
|
38 |
sys.path.insert(0, '../.libs') |
|
39 | ||
40 |
import lasso |
|
41 | ||
42 |
try: |
|
43 |
import lxml.etree as ET |
|
44 |
except ImportError: |
|
45 |
try: |
|
46 |
import elementtree.ElementTree as ET |
|
47 |
except ImportError: |
|
48 |
import xml.etree.ElementTree as ET |
|
49 | ||
50 |
try: |
|
51 |
dataDir |
|
52 |
except NameError: |
|
53 |
dataDir = os.path.join(os.environ['TOP_SRCDIR'], 'tests', 'data') |
|
54 | ||
55 |
idpSoapEndpoint = 'http://idp1/soapEndpoint' |
|
56 |
spSoapEndpoint = 'http://sp1/soapEndpoint' |
|
57 |
spInteractionUrl = 'http://sp1/askMeAQuestion' |
|
58 | ||
59 |
class IdWsf2TestCase(unittest.TestCase): |
|
60 |
def getWspServer(self): |
|
61 |
wsp_metadata = os.path.join(dataDir, 'sp5-saml2/metadata.xml') |
|
62 |
wsp_private_key = os.path.join(dataDir, 'sp5-saml2/private-key.pem') |
|
63 |
idp_metadata = os.path.join(dataDir, 'idp5-saml2/metadata.xml') |
|
64 | ||
65 |
server = lasso.Server(wsp_metadata, wsp_private_key, None, None) |
|
66 |
server.role = lasso.PROVIDER_ROLE_SP |
|
67 |
server.addProvider(lasso.PROVIDER_ROLE_IDP, idp_metadata, None, None) |
|
68 |
server.setEncryptionPrivateKey(wsp_private_key); |
|
69 | ||
70 |
return server; |
|
71 | ||
72 |
def getWscServer(self): |
|
73 |
wsc_metadata = os.path.join(dataDir, 'sp6-saml2/metadata.xml') |
|
74 |
wsc_private_key = os.path.join(dataDir, 'sp6-saml2/private-key.pem') |
|
75 |
idp_metadata = os.path.join(dataDir, 'idp5-saml2/metadata.xml') |
|
76 | ||
77 |
server = lasso.Server(wsc_metadata, wsc_private_key, None, None) |
|
78 |
server.role = lasso.PROVIDER_ROLE_SP |
|
79 |
server.addProvider(lasso.PROVIDER_ROLE_IDP, idp_metadata, None, None) |
|
80 | ||
81 |
return server; |
|
82 | ||
83 |
def getIdpServer(self): |
|
84 |
if hasattr(self, 'idp_server_dump') and self.idp_server_dump is not None: |
|
85 |
server = lasso.Server.newFromDump(self.idp_server_dump) |
|
86 |
server.role = lasso.PROVIDER_ROLE_IDP |
|
87 |
else: |
|
88 |
idp_metadata = os.path.join(dataDir, 'idp5-saml2/metadata.xml') |
|
89 |
idp_private_key = os.path.join(dataDir, 'idp5-saml2/private-key.pem') |
|
90 |
wsp_metadata = os.path.join(dataDir, 'sp5-saml2/metadata.xml') |
|
91 |
wsc_metadata = os.path.join(dataDir, 'sp6-saml2/metadata.xml') |
|
92 | ||
93 |
server = lasso.Server(idp_metadata, idp_private_key, None, None) |
|
94 |
server.role = lasso.PROVIDER_ROLE_IDP |
|
95 |
server.addProvider(lasso.PROVIDER_ROLE_SP, wsp_metadata, None, None) |
|
96 |
server.getProvider(server.providerIds[0]).setEncryptionMode(lasso.ENCRYPTION_MODE_NAMEID); |
|
97 |
server.addProvider(lasso.PROVIDER_ROLE_SP, wsc_metadata, None, None) |
|
98 |
self.idp_server_dump = server.dump() |
|
99 | ||
100 |
return server |
|
101 | ||
102 |
def query(self, wsc, idp, idp_identity_dump, wsc_session_dump, uid, federations, services_map, service_associations, provider_ids = None, service_types = None, options = None, actions = None): |
|
103 |
session = lasso.Session.newFromDump(wsc_session_dump) |
|
104 |
assertion = session.getAssertion(idp.providerId) |
|
105 |
self.failUnless(assertion is not None) |
|
106 |
epr = assertion.idwsf2GetDiscoveryBootstrapEpr() |
|
107 |
self.failUnless(epr is not None) |
|
108 |
wsc_disco = lasso.IdWsf2Discovery(wsc) |
|
109 |
wsc_disco.setEpr(epr) |
|
110 |
wsc_disco.initQuery() |
|
111 |
wsc_disco.addRequestedService(service_types = service_types, provider_ids = provider_ids, options = options, actions = actions) |
|
112 |
wsc_disco.buildRequestMsg() |
|
113 |
idp_disco = lasso.IdWsf2Discovery(idp) |
|
114 |
idp_disco.setIdentityFromDump(idp_identity_dump) |
|
115 |
idp_disco.processRequestMsg(wsc_disco.msgBody) |
|
116 |
f = self.nid2tuple(idp_disco.getNameIdentifier()) |
|
117 |
uid = federations[f] |
|
118 |
for id in service_associations[uid]: |
|
119 |
idp_disco.addServiceMetadata(services_map[id]) |
|
120 |
idp_disco.validateRequest() |
|
121 |
idp_disco.buildResponseMsg() |
|
122 |
wsc_disco.processResponseMsg(idp_disco.msgBody) |
|
123 |
return wsc_disco.endpointReferences |
|
124 | ||
125 | ||
126 | ||
127 |
def metadataRegister(self, wsp, idp, session_dump, abstract = None, address = None, provider_id = None, service_types = None, services_map = None): |
|
128 |
session = lasso.Session.newFromDump(session_dump) |
|
129 |
assertion = session.getAssertion(idp.providerId) |
|
130 |
self.failUnless(assertion is not None) |
|
131 |
epr = assertion.idwsf2GetDiscoveryBootstrapEpr() |
|
132 |
self.failUnless(epr is not None) |
|
133 |
wsp_disco = lasso.IdWsf2Discovery(wsp) |
|
134 |
wsp_disco.setEpr(epr) |
|
135 |
abstract = 'Personal Profile service' |
|
136 |
self.failUnless(abstract is not None) |
|
137 |
self.failUnless(address is not None) |
|
138 |
self.failUnless(service_types is not None) |
|
139 |
self.failUnless(isinstance(services_map, dict)) |
|
140 |
wsp_disco.initMetadataRegister() |
|
141 |
if not provider_id: |
|
142 |
provider_id = wsp.providerId |
|
143 |
wsp_disco.addSimpleServiceMetadata( |
|
144 |
service_types = service_types, |
|
145 |
abstract = abstract, provider_id = provider_id, |
|
146 |
address = address, |
|
147 |
security_mechanisms = (lasso.SECURITY_MECH_BEARER,)) |
|
148 |
wsp_disco.buildRequestMsg() |
|
149 | ||
150 |
idp_disco = lasso.IdWsf2Discovery(idp) |
|
151 |
idp_disco.processRequestMsg(wsp_disco.msgBody) |
|
152 |
idp_disco.checkSecurityMechanism() |
|
153 |
idp_disco.validateRequest() |
|
154 |
self.failUnlessEqual(len(idp_disco.metadatas), 1) |
|
155 |
# add metadatas to directory |
|
156 |
sender = idp_disco.getSoapEnvelopeRequest().sb2GetProviderId() |
|
157 |
self.failUnless(sender is not None) |
|
158 |
metadatas = services_map.get(sender, []) |
|
159 |
for metadata in idp_disco.metadatas: |
|
160 |
services_map[metadata.svcMDID] = metadata |
|
161 |
metadatas.append(metadata.svcMDID) |
|
162 |
services_map[sender] = metadatas |
|
163 |
idp_disco.buildResponseMsg() |
|
164 |
wsp_disco.processResponseMsg(idp_disco.msgBody) |
|
165 |
self.failUnlessEqual(len(wsp_disco.metadatas), 1) |
|
166 |
self.failUnlessEqual(wsp_disco.metadatas[0].svcMDID, wsp_disco.response.svcMDID[0]) |
|
167 |
return wsp_disco.metadatas[0].svcMDID |
|
168 | ||
169 |
def nid2tuple(self, nid): |
|
170 |
return (nid.nameQualifier, nid.format, nid.sPNameQualifier, nid.content) |
|
171 | ||
172 |
def addAssociation(self, wsp, idp, session_dump, svcmdid, service_maps, federations, service_associations): |
|
173 |
self.failUnless(isinstance(service_associations, dict)) |
|
174 |
self.failUnless(isinstance(service_maps, dict)) |
|
175 |
# Get the bootstrap |
|
176 |
session = lasso.Session.newFromDump(session_dump) |
|
177 |
assertion = session.getAssertion(idp.providerId) |
|
178 |
self.failUnless(assertion is not None) |
|
179 |
epr = assertion.idwsf2GetDiscoveryBootstrapEpr() |
|
180 |
self.failUnless(epr is not None) |
|
181 |
wsp_disco = lasso.IdWsf2Discovery(wsp) |
|
182 |
wsp_disco.setEpr(epr) |
|
183 |
wsp_disco.initMetadataAssociationAdd() |
|
184 |
wsp_disco.svcmdids = (svcmdid,) |
|
185 |
wsp_disco.buildRequestMsg() |
|
186 |
# Handle request |
|
187 |
idp_disco = lasso.IdWsf2Discovery(idp) |
|
188 |
idp_disco.processRequestMsg(wsp_disco.msgBody) |
|
189 |
idp_disco.checkSecurityMechanism() |
|
190 |
self.failUnlessEqual(idp_disco.svcmdids, (svcmdid,)) |
|
191 |
sender = idp_disco.getSoapEnvelopeRequest().sb2GetProviderId() |
|
192 |
name_identifier = idp_disco.getNameIdentifier() |
|
193 |
f = self.nid2tuple(name_identifier) |
|
194 |
uid = federations[f] |
|
195 |
l = service_associations.get(uid, []) |
|
196 |
for id in idp_disco.svcmdids: |
|
197 |
# check it exists |
|
198 |
self.failUnless(service_maps.get(id) is not None) |
|
199 |
# create association |
|
200 |
if id not in l: |
|
201 |
l.append(id) |
|
202 |
service_associations[uid] = l |
|
203 |
idp_disco.validateRequest() |
|
204 |
idp_disco.buildResponseMsg() |
|
205 |
wsp_disco.processResponseMsg(idp_disco.msgBody) |
|
206 | ||
207 |
def login(self, sp, idp, user_id, federations, sp_identity_dump=None, sp_session_dump=None, |
|
208 |
idp_identity_dump=None, idp_session_dump=None): |
|
209 |
sp_login = lasso.Login(sp) |
|
210 |
idp_provider_id = 'http://idp5/metadata' |
|
211 |
sp_login.initAuthnRequest(idp_provider_id, lasso.HTTP_METHOD_REDIRECT) |
|
212 |
sp_login.request.nameIDPolicy.format = lasso.SAML2_NAME_IDENTIFIER_FORMAT_PERSISTENT |
|
213 |
sp_login.request.nameIDPolicy.allowCreate = True |
|
214 |
sp_login.buildAuthnRequestMsg() |
|
215 | ||
216 |
idp_login = lasso.Login(idp) |
|
217 |
query = sp_login.msgUrl.split('?')[1] |
|
218 |
if idp_identity_dump is not None: |
|
219 |
idp_login.setIdentityFromDump(idp_identity_dump) |
|
220 |
if idp_session_dump is not None: |
|
221 |
idp_login.setSessionFromDump(idp_session_dump) |
|
222 |
idp_login.processAuthnRequestMsg(query) |
|
223 |
idp_login.validateRequestMsg(True, True) |
|
224 |
idp_login.buildAssertion(lasso.SAML_AUTHENTICATION_METHOD_PASSWORD, None, None, None, None) |
|
225 |
if idp_login.assertion.subject.encryptedId: |
|
226 |
f = self.nid2tuple(idp_login.assertion.subject.encryptedId.originalData) |
|
227 |
else: |
|
228 |
f = self.nid2tuple(idp_login.assertion.subject.nameId) |
|
229 |
federations[f] = user_id |
|
230 |
l = federations.get(user_id, []) |
|
231 |
l.append(f) |
|
232 |
federations[user_id] = l |
|
233 |
idp_login.idwsf2AddDiscoveryBootstrapEpr(url = idpSoapEndpoint, abstract = 'Discovery Service', security_mechanisms = (lasso.SECURITY_MECH_BEARER,)) |
|
234 |
idp_login.buildArtifactMsg(lasso.HTTP_METHOD_ARTIFACT_GET) |
|
235 |
artifact_message = idp_login.artifactMessage |
|
236 | ||
237 |
if idp_login.isIdentityDirty: |
|
238 |
idp_identity_dump = idp_login.identity.dump() |
|
239 |
if idp_login.isSessionDirty: |
|
240 |
idp_session_dump = idp_login.session.dump() |
|
241 | ||
242 |
sp_login = lasso.Login(sp) |
|
243 |
query = idp_login.msgUrl.split('?')[1] |
|
244 |
query = query.replace("%3D", "=") |
|
245 |
sp_login.initRequest(query, lasso.HTTP_METHOD_ARTIFACT_GET) |
|
246 |
sp_login.buildRequestMsg() |
|
247 | ||
248 |
idp_login = lasso.Login(idp) |
|
249 |
idp_login.processRequestMsg(sp_login.msgBody) |
|
250 |
idp_login.artifactMessage = artifact_message |
|
251 |
idp_login.buildResponseMsg(None) |
|
252 | ||
253 |
sp_login.processResponseMsg(idp_login.msgBody) |
|
254 |
sp_login.acceptSso() |
|
255 |
if sp_login.isIdentityDirty: |
|
256 |
sp_identity_dump = sp_login.identity.dump() |
|
257 |
if sp_login.isSessionDirty: |
|
258 |
sp_session_dump = sp_login.session.dump() |
|
259 | ||
260 |
return sp_identity_dump, sp_session_dump, idp_identity_dump, idp_session_dump, sp_login.idwsf2GetDiscoveryBootstrapEpr() |
|
261 | ||
262 | ||
263 |
class MetadataTestCase(IdWsf2TestCase): |
|
264 |
def test01(self): |
|
265 |
"""Test metadata registration on the IdP""" |
|
266 |
idp = self.getIdpServer() |
|
267 |
wsp = self.getWspServer() |
|
268 |
wsp_identity_dump, wsp_session_dump, idp_identity_dump, idp_session_dump, dst_epr = self.login(wsp, idp, 1, {}) |
|
269 | ||
270 |
wsp_disco = lasso.IdWsf2Discovery(wsp) |
|
271 |
wsp_disco.setEpr(dst_epr) |
|
272 | ||
273 |
abstract = 'Personal Profile service' |
|
274 |
wsp_disco.initMetadataRegister() |
|
275 |
self.failUnless(wsp_disco.request is not None) |
|
276 |
wsp_disco.addSimpleServiceMetadata(service_types = |
|
277 |
(lasso.PP11_HREF,), abstract = abstract, |
|
278 |
provider_id = wsp.providerId, address = spSoapEndpoint, |
|
279 |
security_mechanisms = (lasso.SECURITY_MECH_BEARER,)) |
|
280 |
self.failUnlessEqual(len(wsp_disco.metadatas), 1) |
|
281 |
metadata = wsp_disco.metadatas[0] |
|
282 |
self.failUnlessEqual(metadata.abstract, abstract) |
|
283 |
self.failUnlessEqual(metadata.providerId, wsp.providerId) |
|
284 |
self.failUnlessEqual(len(metadata.serviceContext), 1) |
|
285 |
self.failUnlessEqual(len(metadata.serviceContext[0].serviceType), 1) |
|
286 |
self.failUnlessEqual(metadata.serviceContext[0].serviceType[0], |
|
287 |
lasso.PP11_HREF) |
|
288 |
self.failUnlessEqual(len(metadata.serviceContext[0].endpointContext), 1) |
|
289 |
self.failUnlessEqual( |
|
290 |
len(metadata.serviceContext[0].endpointContext[0].address), |
|
291 |
1) |
|
292 |
self.failUnlessEqual(metadata.serviceContext[0].endpointContext[0].address[0], |
|
293 |
spSoapEndpoint) |
|
294 |
self.failUnlessEqual( |
|
295 |
len(metadata.serviceContext[0].endpointContext[0].securityMechId), |
|
296 |
1) |
|
297 |
self.failUnlessEqual( |
|
298 |
metadata.serviceContext[0].endpointContext[0].securityMechId[0], |
|
299 |
lasso.SECURITY_MECH_BEARER) |
|
300 |
self.failUnless(metadata.svcMDID is None) |
|
301 |
wsp_disco.buildRequestMsg() |
|
302 |
self.failUnlessEqual(wsp_disco.msgUrl, idpSoapEndpoint) |
|
303 |
self.failUnless(wsp_disco.msgBody is not None) |
|
304 | ||
305 |
idp_disco = lasso.IdWsf2Discovery(idp) |
|
306 |
self.failUnless(idp_disco is not None) |
|
307 |
idp_disco.processRequestMsg(wsp_disco.msgBody) |
|
308 |
self.failUnless(idp_disco.request is not None) |
|
309 |
self.failUnlessEqual(len(idp_disco.request.svcMD), 1) |
|
310 |
self.failUnless(idp_disco.request.svcMD[0].svcMDID is None) |
|
311 |
try: |
|
312 |
idp_disco.checkSecurityMechanism() |
|
313 |
except lasso.Error as e: |
|
314 |
self.fail(e) |
|
315 |
try: |
|
316 |
idp_disco.validateRequest() |
|
317 |
except lasso.Error as e: |
|
318 |
self.fail(e) |
|
319 |
self.failUnless(idp_disco.response is not None) |
|
320 |
self.failUnlessEqual(len(idp_disco.metadatas), 1) |
|
321 |
metadata = idp_disco.metadatas[0] |
|
322 |
self.failUnlessEqual(metadata.abstract, abstract) |
|
323 |
self.failUnlessEqual(metadata.providerId, wsp.providerId) |
|
324 |
self.failUnlessEqual(len(metadata.serviceContext), 1) |
|
325 |
self.failUnlessEqual(len(metadata.serviceContext[0].serviceType), 1) |
|
326 |
self.failUnlessEqual(metadata.serviceContext[0].serviceType[0], |
|
327 |
lasso.PP11_HREF) |
|
328 |
self.failUnlessEqual(len(metadata.serviceContext[0].endpointContext), 1) |
|
329 |
self.failUnlessEqual( |
|
330 |
len(metadata.serviceContext[0].endpointContext[0].address), |
|
331 |
1) |
|
332 |
self.failUnlessEqual(metadata.serviceContext[0].endpointContext[0].address[0], |
|
333 |
spSoapEndpoint) |
|
334 |
self.failUnlessEqual( |
|
335 |
len(metadata.serviceContext[0].endpointContext[0].securityMechId), |
|
336 |
1) |
|
337 |
self.failUnlessEqual( |
|
338 |
metadata.serviceContext[0].endpointContext[0].securityMechId[0], |
|
339 |
lasso.SECURITY_MECH_BEARER) |
|
340 |
idp_disco.buildResponseMsg() |
|
341 |
self.failUnless(metadata.svcMDID is not None) |
|
342 |
self.failUnless(idp_disco.msgUrl is None) |
|
343 |
self.failUnless(idp_disco.msgBody is not None) |
|
344 | ||
345 |
wsp_disco.processResponseMsg(idp_disco.msgBody) |
|
346 | ||
347 |
self.failUnless(len(wsp_disco.metadatas) == 1, 'missing svcMDID') |
|
348 |
self.failUnless(wsp_disco.metadatas[0].svcMDID, 'missing svcMDID') |
|
349 | ||
350 |
def test02(self): |
|
351 |
"Test failure by IdP for register request" |
|
352 |
idp = self.getIdpServer() |
|
353 |
wsp = self.getWspServer() |
|
354 |
wsp_identity_dump, wsp_session_dump, idp_identity_dump, idp_session_dump, dst_epr = self.login(wsp, idp, 1, {}) |
|
355 | ||
356 |
wsp_disco = lasso.IdWsf2Discovery(wsp) |
|
357 |
wsp_disco.setEpr(dst_epr) |
|
358 | ||
359 |
abstract = 'Personal Profile service' |
|
360 |
wsp_disco.initMetadataRegister() |
|
361 |
self.failUnless(wsp_disco.request is not None) |
|
362 |
wsp_disco.addSimpleServiceMetadata(service_types = |
|
363 |
(lasso.PP11_HREF,), abstract = abstract, |
|
364 |
provider_id = wsp.providerId, address = spSoapEndpoint, |
|
365 |
security_mechanisms= (lasso.SECURITY_MECH_BEARER,)) |
|
366 |
self.failUnlessEqual(len(wsp_disco.metadatas), 1) |
|
367 |
metadata = wsp_disco.metadatas[0] |
|
368 |
self.failUnlessEqual(metadata.abstract, abstract) |
|
369 |
self.failUnlessEqual(metadata.providerId, wsp.providerId) |
|
370 |
self.failUnlessEqual(len(metadata.serviceContext[0].serviceType), 1) |
|
371 |
self.failUnlessEqual(metadata.serviceContext[0].serviceType[0], |
|
372 |
lasso.PP11_HREF) |
|
373 |
self.failUnlessEqual(len(metadata.serviceContext[0].endpointContext), 1) |
|
374 |
self.failUnlessEqual( |
|
375 |
len(metadata.serviceContext[0].endpointContext[0].address), |
|
376 |
1) |
|
377 |
self.failUnlessEqual(metadata.serviceContext[0].endpointContext[0].address[0], |
|
378 |
spSoapEndpoint) |
|
379 |
self.failUnlessEqual( |
|
380 |
len(metadata.serviceContext[0].endpointContext[0].securityMechId), |
|
381 |
1) |
|
382 |
self.failUnlessEqual( |
|
383 |
metadata.serviceContext[0].endpointContext[0].securityMechId[0], |
|
384 |
lasso.SECURITY_MECH_BEARER) |
|
385 |
self.failUnless(metadata.svcMDID is None) |
|
386 |
wsp_disco.buildRequestMsg() |
|
387 |
self.failUnlessEqual(wsp_disco.msgUrl, idpSoapEndpoint) |
|
388 |
self.failUnless(wsp_disco.msgBody is not None) |
|
389 | ||
390 |
idp_disco = lasso.IdWsf2Discovery(idp) |
|
391 |
self.failUnless(idp_disco is not None) |
|
392 |
try: |
|
393 |
idp_disco.processRequestMsg(wsp_disco.msgBody) |
|
394 |
except lasso.Error as e: |
|
395 |
self.fail(e) |
|
396 |
self.failUnless(idp_disco.request is not None) |
|
397 |
try: |
|
398 |
idp_disco.checkSecurityMechanism() |
|
399 |
except lasso.Error as e: |
|
400 |
self.fail(e) |
|
401 |
try: |
|
402 |
idp_disco.failRequest(lasso.IDWSF2_DISCOVERY_STATUS_CODE_FAILED, lasso.IDWSF2_DISCOVERY_STATUS_CODE_FORBIDDEN) |
|
403 |
except lasso.Error as e: |
|
404 |
self.fail(e) |
|
405 |
self.failUnless(idp_disco.response is not None) |
|
406 |
self.failUnless(idp_disco.response.status is not None) |
|
407 |
self.failUnless(idp_disco.response.status.code is not lasso.IDWSF2_DISCOVERY_STATUS_CODE_FAILED) |
|
408 |
self.failUnlessEqual(len(idp_disco.response.status.status), 1) |
|
409 |
self.failUnless(idp_disco.response.status.status[0].code is not lasso.IDWSF2_DISCOVERY_STATUS_CODE_FORBIDDEN) |
|
410 |
idp_disco.buildResponseMsg() |
|
411 |
self.failUnless(idp_disco.msgUrl is None) |
|
412 |
self.failUnless(idp_disco.msgBody is not None) |
|
413 | ||
414 |
try: |
|
415 |
wsp_disco.processResponseMsg(idp_disco.msgBody) |
|
416 |
except lasso.Idwsf2DiscoveryForbiddenError: |
|
417 |
pass |
|
418 |
except lasso.Error as e: |
|
419 |
self.fail(e) |
|
420 | ||
421 |
def test03(self): |
|
422 |
"""Test metadata register with redirection""" |
|
423 |
idp = self.getIdpServer() |
|
424 |
wsp = self.getWspServer() |
|
425 |
wsp_identity_dump, wsp_session_dump, idp_identity_dump, idp_session_dump, dst_epr = self.login(wsp, idp, 1, {}) |
|
426 | ||
427 |
wsp_disco = lasso.IdWsf2Discovery(wsp) |
|
428 |
wsp_disco.setEpr(dst_epr) |
|
429 | ||
430 |
abstract = 'Personal Profile service' |
|
431 |
wsp_disco.initMetadataRegister() |
|
432 |
soap_envelope = wsp_disco.getSoapEnvelopeRequest() |
|
433 |
soap_envelope.setSb2UserInteractionHint(lasso.IDWSF2_SB2_USER_INTERACTION_HINT_INTERACT_IF_NEEDED) |
|
434 |
self.failUnless(isinstance(soap_envelope.header, lasso.SoapHeader)) |
|
435 |
self.failUnless(len(soap_envelope.header.other) > 0) |
|
436 |
self.failUnlessEqual(soap_envelope.getSb2UserInteractionHint(), lasso.IDWSF2_SB2_USER_INTERACTION_HINT_INTERACT_IF_NEEDED) |
|
437 |
self.failUnless(wsp_disco.request is not None) |
|
438 |
wsp_disco.addSimpleServiceMetadata(service_types = |
|
439 |
(lasso.PP11_HREF,), abstract = abstract, |
|
440 |
provider_id = wsp.providerId, address = spSoapEndpoint, |
|
441 |
security_mechanisms = (lasso.SECURITY_MECH_BEARER,)) |
|
442 |
self.failUnlessEqual(len(wsp_disco.metadatas), 1) |
|
443 |
metadata = wsp_disco.metadatas[0] |
|
444 |
self.failUnlessEqual(metadata.abstract, abstract) |
|
445 |
self.failUnlessEqual(metadata.providerId, wsp.providerId) |
|
446 |
self.failUnlessEqual(len(metadata.serviceContext), 1) |
|
447 |
self.failUnlessEqual(len(metadata.serviceContext[0].serviceType), 1) |
|
448 |
self.failUnlessEqual(metadata.serviceContext[0].serviceType[0], |
|
449 |
lasso.PP11_HREF) |
|
450 |
self.failUnlessEqual(len(metadata.serviceContext[0].endpointContext), 1) |
|
451 |
self.failUnlessEqual( |
|
452 |
len(metadata.serviceContext[0].endpointContext[0].address), |
|
453 |
1) |
|
454 |
self.failUnlessEqual(metadata.serviceContext[0].endpointContext[0].address[0], |
|
455 |
spSoapEndpoint) |
|
456 |
self.failUnlessEqual( |
|
457 |
len(metadata.serviceContext[0].endpointContext[0].securityMechId), |
|
458 |
1) |
|
459 |
self.failUnlessEqual( |
|
460 |
metadata.serviceContext[0].endpointContext[0].securityMechId[0], |
|
461 |
lasso.SECURITY_MECH_BEARER) |
|
462 |
self.failUnless(metadata.svcMDID is None) |
|
463 |
wsp_disco.buildRequestMsg() |
|
464 |
self.failUnlessEqual(wsp_disco.msgUrl, idpSoapEndpoint) |
|
465 |
self.failUnless(wsp_disco.msgBody is not None) |
|
466 | ||
467 |
idp_disco = lasso.IdWsf2Discovery(idp) |
|
468 |
self.failUnless(idp_disco is not None) |
|
469 |
idp_disco.processRequestMsg(wsp_disco.msgBody) |
|
470 |
self.failUnless(idp_disco.request is not None) |
|
471 |
self.failUnlessEqual(len(idp_disco.request.svcMD), 1) |
|
472 |
self.failUnless(idp_disco.request.svcMD[0].svcMDID is None) |
|
473 |
soap_envelope = idp_disco.getSoapEnvelopeRequest() |
|
474 |
self.failUnless(soap_envelope is not None) |
|
475 |
self.failUnless(soap_envelope.getMessageId() is not None) |
|
476 |
try: |
|
477 |
idp_disco.checkSecurityMechanism() |
|
478 |
except lasso.Error as e: |
|
479 |
self.fail(e) |
|
480 |
# redirect |
|
481 |
interactionUrl = spInteractionUrl |
|
482 |
idp_disco.redirectUserForInteraction(interactionUrl, False) |
|
483 |
response = idp_disco.response |
|
484 |
self.failUnless(isinstance(response, lasso.SoapFault)) |
|
485 |
self.failUnless(response.detail is not None) |
|
486 |
self.failUnlessEqual(len(response.detail.any), 1) |
|
487 |
self.failUnless(isinstance(response.detail.any[0], lasso.IdWsf2Sb2RedirectRequest)) |
|
488 |
self.failUnless(response.detail.any[0].redirectURL.startswith(interactionUrl + '?transactionID=')) |
|
489 |
try: |
|
490 |
idp_disco.buildResponseMsg() |
|
491 |
except lasso.Error as e: |
|
492 |
self.fail(e) |
|
493 |
self.failUnless(idp_disco.msgBody is not None) |
|
494 | ||
495 | ||
496 |
self.failUnless(idp_disco.msgUrl is None) |
|
497 |
self.failUnless(idp_disco.msgBody is not None) |
|
498 | ||
499 |
try: |
|
500 |
wsp_disco.processResponseMsg(idp_disco.msgBody) |
|
501 |
except lasso.WsfprofileRedirectRequestError: |
|
502 |
pass |
|
503 |
except lasso.Error as e: |
|
504 |
self.fail(e) |
|
505 |
response_envelope = wsp_disco.getSoapEnvelopeResponse() |
|
506 |
self.failUnless(response_envelope.sb2GetRedirectRequestUrl().startswith(interactionUrl + '?transactionID=')) |
|
507 |
# Here keep information about the request associated to ID: response_envelope.getMessageId().content |
|
508 |
wsp_disco_dump = wsp_disco.dump() |
|
509 |
wsp_disco = lasso.Node.newFromDump(wsp_disco_dump) |
|
510 |
wsp_disco.server = wsp |
|
511 |
request_envelope = wsp_disco.getSoapEnvelopeRequest() |
|
512 |
self.failUnless(request_envelope is not None) |
|
513 |
relates_to = request_envelope.getRelatesTo(True) |
|
514 |
self.failUnless(relates_to is not None) |
|
515 |
response_message_id = response_envelope.getMessageId().content |
|
516 |
relates_to.content = response_message_id |
|
517 |
wsp_disco.buildRequestMsg() |
|
518 |
# now redo as for test01 after request building |
|
519 |
self.failUnlessEqual(wsp_disco.msgUrl, idpSoapEndpoint) |
|
520 |
self.failUnless(wsp_disco.msgBody is not None) |
|
521 | ||
522 |
idp_disco = lasso.IdWsf2Discovery(idp) |
|
523 |
self.failUnless(idp_disco is not None) |
|
524 |
idp_disco.processRequestMsg(wsp_disco.msgBody) |
|
525 |
self.failUnless(idp_disco.request is not None) |
|
526 |
self.failUnlessEqual(len(idp_disco.request.svcMD), 1) |
|
527 |
self.failUnless(idp_disco.request.svcMD[0].svcMDID is None) |
|
528 |
try: |
|
529 |
idp_disco.checkSecurityMechanism() |
|
530 |
except lasso.Error as e: |
|
531 |
self.fail(e) |
|
532 |
try: |
|
533 |
idp_disco.validateRequest() |
|
534 |
except lasso.Error as e: |
|
535 |
self.fail(e) |
|
536 |
self.failUnless(idp_disco.response is not None) |
|
537 |
self.failUnlessEqual(len(idp_disco.metadatas), 1) |
|
538 |
metadata = idp_disco.metadatas[0] |
|
539 |
self.failUnlessEqual(metadata.abstract, abstract) |
|
540 |
self.failUnlessEqual(metadata.providerId, wsp.providerId) |
|
541 |
self.failUnlessEqual(len(metadata.serviceContext), 1) |
|
542 |
self.failUnlessEqual(len(metadata.serviceContext[0].serviceType), 1) |
|
543 |
self.failUnlessEqual(metadata.serviceContext[0].serviceType[0], |
|
544 |
lasso.PP11_HREF) |
|
545 |
self.failUnlessEqual(len(metadata.serviceContext[0].endpointContext), 1) |
|
546 |
self.failUnlessEqual( |
|
547 |
len(metadata.serviceContext[0].endpointContext[0].address), |
|
548 |
1) |
|
549 |
self.failUnlessEqual(metadata.serviceContext[0].endpointContext[0].address[0], |
|
550 |
spSoapEndpoint) |
|
551 |
self.failUnlessEqual( |
|
552 |
len(metadata.serviceContext[0].endpointContext[0].securityMechId), |
|
553 |
1) |
|
554 |
self.failUnlessEqual( |
|
555 |
metadata.serviceContext[0].endpointContext[0].securityMechId[0], |
|
556 |
lasso.SECURITY_MECH_BEARER) |
|
557 |
idp_disco.buildResponseMsg() |
|
558 |
self.failUnless(metadata.svcMDID is not None) |
|
559 |
self.failUnless(idp_disco.msgUrl is None) |
|
560 |
self.failUnless(idp_disco.msgBody is not None) |
|
561 | ||
562 |
wsp_disco.processResponseMsg(idp_disco.msgBody) |
|
563 | ||
564 |
self.failUnless(len(wsp_disco.metadatas) == 1, 'missing svcMDID') |
|
565 |
self.failUnless(wsp_disco.metadatas[0].svcMDID, 'missing svcMDID') |
|
566 | ||
567 |
def test04(self): |
|
568 |
"""Test metadata query""" |
|
569 |
idp = self.getIdpServer() |
|
570 |
wsp = self.getWspServer() |
|
571 |
federations = {} |
|
572 |
wsp_identity_dump, wsp_session_dump, idp_identity_dump, idp_session_dump, dst_epr = self.login(wsp, idp, 1, federations) |
|
573 |
service_map = {} |
|
574 |
self.metadataRegister(wsp, idp, wsp_session_dump, service_types = |
|
575 |
(lasso.PP11_HREF,), address = spSoapEndpoint, |
|
576 |
abstract = 'My first PP service', services_map = service_map) |
|
577 |
self.metadataRegister(wsp, idp, wsp_session_dump, service_types = |
|
578 |
(lasso.PP11_HREF,), address = spSoapEndpoint+'2', |
|
579 |
abstract = 'My second PP service', services_map = service_map) |
|
580 |
wsp_identity_dump, wsp_session_dump, idp_identity_dump, idp_session_dump, dst_epr = self.login(wsp, idp, 1, federations) |
|
581 |
wsp_disco = lasso.IdWsf2Discovery(wsp) |
|
582 |
wsp_disco.setEpr(dst_epr) |
|
583 |
wsp_disco.initMetadataQuery() |
|
584 |
wsp_disco.buildRequestMsg() |
|
585 | ||
586 |
idp_disco = lasso.IdWsf2Discovery(idp) |
|
587 |
idp_disco.processRequestMsg(wsp_disco.msgBody) |
|
588 |
idp_disco.checkSecurityMechanism() |
|
589 |
self.failUnlessEqual(idp_disco.svcmdids, ()) |
|
590 |
sender = idp_disco.getSoapEnvelopeRequest().sb2GetProviderId() |
|
591 |
for svcMDID in service_map.get(sender, []): |
|
592 |
idp_disco.addServiceMetadata(service_map.get(svcMDID)) |
|
593 |
idp_disco.validateRequest() |
|
594 |
idp_disco.buildResponseMsg() |
|
595 |
wsp_disco.processResponseMsg(idp_disco.msgBody) |
|
596 |
self.failUnless(len(wsp_disco.metadatas), 2) |
|
597 | ||
598 |
def test05(self): |
|
599 |
"""Test metadata delete""" |
|
600 |
idp = self.getIdpServer() |
|
601 |
wsp = self.getWspServer() |
|
602 |
wsp_identity_dump, wsp_session_dump, idp_identity_dump, idp_session_dump, dst_epr = self.login(wsp, idp, 1, {}) |
|
603 |
service_map = {} |
|
604 |
self.metadataRegister(wsp, idp, wsp_session_dump, service_types = |
|
605 |
(lasso.PP11_HREF,), address = spSoapEndpoint, |
|
606 |
abstract = 'My first PP service', services_map = service_map) |
|
607 |
self.metadataRegister(wsp, idp, wsp_session_dump, service_types = |
|
608 |
(lasso.PP11_HREF,), address = spSoapEndpoint+'2', |
|
609 |
abstract = 'My second PP service', services_map = service_map) |
|
610 |
wsp_identity_dump, wsp_session_dump, idp_identity_dump, idp_session_dump, dst_epr = self.login(wsp, idp, 1, {}) |
|
611 | ||
612 |
wsp_disco = lasso.IdWsf2Discovery(wsp) |
|
613 |
wsp_disco.setEpr(dst_epr) |
|
614 |
wsp_disco.initMetadataDelete() |
|
615 |
svcmdids = tuple(service_map[wsp.providerId]) |
|
616 |
wsp_disco.setSvcmdids(svcmdids) |
|
617 |
wsp_disco.buildRequestMsg() |
|
618 | ||
619 |
idp_disco = lasso.IdWsf2Discovery(idp) |
|
620 |
idp_disco.processRequestMsg(wsp_disco.msgBody) |
|
621 |
idp_disco.checkSecurityMechanism() |
|
622 |
self.failUnlessEqual(idp_disco.svcmdids, svcmdids) |
|
623 |
sender = idp_disco.getSoapEnvelopeRequest().sb2GetProviderId() |
|
624 |
self.failUnlessEqual(sender, wsp.providerId) |
|
625 |
idp_disco.validateRequest() |
|
626 |
idp_disco.buildResponseMsg() |
|
627 |
wsp_disco.processResponseMsg(idp_disco.msgBody) |
|
628 | ||
629 |
class MetadataAssociationTestCase(IdWsf2TestCase): |
|
630 |
def test01(self): |
|
631 |
"""Metadata association add""" |
|
632 |
idp = self.getIdpServer() |
|
633 |
wsp = self.getWspServer() |
|
634 |
wsp_identity_dump, wsp_session_dump, idp_identity_dump, idp_session_dump, dst_epr = self.login(wsp, idp, 1, {}) |
|
635 |
service_map = {} |
|
636 |
svcMDID = self.metadataRegister(wsp, idp, wsp_session_dump, service_types = |
|
637 |
(lasso.PP11_HREF,), address = spSoapEndpoint, |
|
638 |
abstract = 'My first PP service', services_map = service_map) |
|
639 |
# Make the request |
|
640 |
wsp_disco = lasso.IdWsf2Discovery(wsp) |
|
641 |
wsp_disco.setEpr(dst_epr) |
|
642 |
wsp_disco.initMetadataAssociationAdd() |
|
643 |
wsp_disco.svcmdids = (svcMDID,) |
|
644 |
wsp_disco.buildRequestMsg() |
|
645 |
# Receive it |
|
646 |
idp_disco = lasso.IdWsf2Discovery(idp) |
|
647 |
idp_disco.processRequestMsg(wsp_disco.msgBody) |
|
648 |
idp_disco.checkSecurityMechanism() |
|
649 |
self.failUnlessEqual(idp_disco.svcmdids, (svcMDID,)) |
|
650 |
sender = idp_disco.getSoapEnvelopeRequest().sb2GetProviderId() |
|
651 |
name_identifier = idp_disco.getNameIdentifier() |
|
652 |
# Store the association |
|
653 |
self.failUnless(sender is not None) |
|
654 |
self.failUnless(name_identifier is not None) |
|
655 |
idp_disco.validateRequest() |
|
656 |
idp_disco.buildResponseMsg() |
|
657 |
wsp_disco.processResponseMsg(idp_disco.msgBody) |
|
658 | ||
659 |
def test02(self): |
|
660 |
"""Metadata association query""" |
|
661 |
idp = self.getIdpServer() |
|
662 |
wsp = self.getWspServer() |
|
663 |
wsc = self.getWscServer() |
|
664 |
# Register the service, add an association |
|
665 |
federations = {} |
|
666 |
wsp_identity_dump, wsp_session_dump, \ |
|
667 |
idp_identity_dump, idp_session_dump, \ |
|
668 |
wsp_dst_epr = self.login(wsp, idp, 1, federations) |
|
669 |
service_maps = {} |
|
670 |
svcMDID = self.metadataRegister(wsp, idp, wsp_session_dump, |
|
671 |
service_types = (lasso.PP11_HREF,), address = spSoapEndpoint, |
|
672 |
abstract = 'My first PP service', services_map = service_maps) |
|
673 |
service_associations = {} |
|
674 |
self.addAssociation(wsp, idp, wsp_session_dump, svcMDID, service_maps, |
|
675 |
federations, service_associations) |
|
676 |
# Start a query |
|
677 |
wsp_disco = lasso.IdWsf2Discovery(wsp) |
|
678 |
wsp_disco.setEpr(wsp_dst_epr) |
|
679 |
wsp_disco.initMetadataAssociationQuery() |
|
680 |
wsp_disco.buildRequestMsg() |
|
681 |
# |
|
682 |
idp_disco = lasso.IdWsf2Discovery(idp) |
|
683 |
idp_disco.processRequestMsg(wsp_disco.msgBody) |
|
684 |
idp_disco.checkSecurityMechanism() |
|
685 |
self.failUnlessEqual(idp_disco.svcmdids, ()) |
|
686 |
f = self.nid2tuple(idp_disco.getNameIdentifier()) |
|
687 |
uid = federations[f] |
|
688 |
result = [] |
|
689 |
for svcmdid in service_associations[uid]: |
|
690 |
result.append(svcmdid) |
|
691 |
idp_disco.svcmdids = tuple(result) |
|
692 |
idp_disco.validateRequest() |
|
693 |
idp_disco.buildResponseMsg() |
|
694 |
wsp_disco.processResponseMsg(idp_disco.msgBody) |
|
695 |
self.failUnlessEqual(wsp_disco.svcmdids, (svcMDID,)) |
|
696 | ||
697 |
def test03(self): |
|
698 |
"""Metadata association delete""" |
|
699 |
pass |
|
700 | ||
701 |
class QueryTestCase(IdWsf2TestCase): |
|
702 |
def test01(self): |
|
703 |
"""Discovery Service Query""" |
|
704 |
idp = self.getIdpServer() |
|
705 |
wsp = self.getWspServer() |
|
706 |
wsc = self.getWscServer() |
|
707 |
federations = {} |
|
708 |
# Register the service, add an association |
|
709 |
wsp_identity_dump, wsp_session_dump, idp_identity_dump, idp_session_dump, wsp_dst_epr = self.login(wsp, idp, 1, federations) |
|
710 |
service_maps = {} |
|
711 |
svcMDID = self.metadataRegister(wsp, idp, wsp_session_dump, service_types = |
|
712 |
(lasso.PP11_HREF,), address = spSoapEndpoint, |
|
713 |
abstract = 'My first PP service', services_map = service_maps) |
|
714 |
service_associations = {} |
|
715 |
self.addAssociation(wsp, idp, wsp_session_dump, svcMDID, service_maps, federations, service_associations) |
|
716 |
# Try to find the service |
|
717 |
wsc_identity_dump, wsc_session_dump, idp_identity_dump, idp_session_dump, wsc_dst_epr = self.login(wsc, idp, 1, federations, idp_identity_dump = idp_identity_dump, idp_session_dump = idp_session_dump) |
|
718 |
wsc_disco = lasso.IdWsf2Discovery(wsc) |
|
719 |
wsc_disco.setEpr(wsc_dst_epr) |
|
720 |
wsc_disco.initQuery() |
|
721 |
wsc_disco.addRequestedService(service_types = (lasso.PP11_HREF,)) |
|
722 |
wsc_disco.buildRequestMsg() |
|
723 |
idp_disco = lasso.IdWsf2Discovery(idp) |
|
724 |
idp_disco.setIdentityFromDump(idp_identity_dump) |
|
725 |
idp_disco.processRequestMsg(wsc_disco.msgBody) |
|
726 |
f = self.nid2tuple(idp_disco.getNameIdentifier()) |
|
727 |
uid = federations[f] |
|
728 |
for id in service_associations[uid]: |
|
729 |
idp_disco.addServiceMetadata(service_maps[id]) |
|
730 |
idp_disco.validateRequest() |
|
731 |
idp_disco.buildResponseMsg() |
|
732 |
wsc_disco.processResponseMsg(idp_disco.msgBody) |
|
733 |
self.failUnlessEqual(len(wsc_disco.endpointReferences), 1) |
|
734 | ||
735 |
class DstTestCase(IdWsf2TestCase): |
|
736 |
def test01(self): |
|
737 |
"""Data Service Template Query""" |
|
738 |
content = '<pp:PP xmlns:pp="%s">Coin</pp:PP>' % lasso.PP11_HREF |
|
739 |
idp = self.getIdpServer() |
|
740 |
wsp = self.getWspServer() |
|
741 |
wsc = self.getWscServer() |
|
742 |
federations = {} |
|
743 |
# Register the service, add an association |
|
744 |
wsp_identity_dump, wsp_session_dump, idp_identity_dump, \ |
|
745 |
idp_session_dump, wsp_dst_epr = self.login(wsp, idp, 1, |
|
746 |
federations) |
|
747 |
service_maps = {} |
|
748 |
svcMDID = self.metadataRegister(wsp, idp, wsp_session_dump, |
|
749 |
service_types = (lasso.PP11_HREF,), address = |
|
750 |
spSoapEndpoint, abstract = 'My first PP service', |
|
751 |
services_map = service_maps) |
|
752 |
service_associations = {} |
|
753 |
self.addAssociation(wsp, idp, wsp_session_dump, svcMDID, |
|
754 |
service_maps, federations, service_associations) |
|
755 |
wsc_identity_dump, wsc_session_dump, idp_identity_dump, \ |
|
756 |
idp_session_dump, wsc_dst_epr = self.login(wsc, idp, 1, federations, |
|
757 |
idp_identity_dump = idp_identity_dump, idp_session_dump = |
|
758 |
idp_session_dump) |
|
759 |
eprs = self.query(wsc, idp, idp_identity_dump, wsc_session_dump, 1, |
|
760 |
federations, service_maps, service_associations, |
|
761 |
service_types = (lasso.PP11_HREF,)) |
|
762 |
self.failUnless(len(eprs), 1) |
|
763 |
lasso.registerIdwsf2DstService(lasso.PP11_PREFIX, lasso.PP11_HREF) |
|
764 |
wsc_dst = lasso.IdWsf2DataService(wsc) |
|
765 |
wsc_dst.setEpr(eprs[0]) |
|
766 |
wsc_dst.initQuery() |
|
767 |
wsc_dst.setServiceType(lasso.PP11_PREFIX, lasso.PP11_HREF) |
|
768 |
wsc_dst.addQueryItem('/%s:PP' % lasso.PP11_PREFIX, 'xxx') |
|
769 |
wsc_dst.buildRequestMsg() |
|
770 |
wsp_dst = lasso.IdWsf2DataService(wsp) |
|
771 |
wsp_dst.processRequestMsg(wsc_dst.msgBody) |
|
772 |
self.failUnlessEqual(wsp_dst.requestType, lasso.IDWSF2_DATA_SERVICE_REQUEST_TYPE_QUERY) |
|
773 |
wsp_dst.checkSecurityMechanism() |
|
774 |
data = ET.parse(StringIO(content)) |
|
775 |
for item in wsp_dst.items: |
|
776 |
result = data.xpath(item.select, namespaces = { lasso.PP11_PREFIX: lasso.PP11_HREF }) |
|
777 |
for found in result: |
|
778 |
wsp_dst.setQueryItemResult(item.itemId, ET.tostring(found), True) |
|
779 |
wsp_dst.setServiceType(lasso.PP11_PREFIX, lasso.PP11_HREF) |
|
780 |
wsp_dst.validateRequest() |
|
781 |
wsp_dst.buildResponseMsg() |
|
782 |
wsc_dst.processResponseMsg(wsp_dst.msgBody) |
|
783 | ||
784 | ||
785 |
metadataSuite = unittest.makeSuite(MetadataTestCase, 'test') |
|
786 |
metadataAssociationSuite = unittest.makeSuite(MetadataAssociationTestCase, 'test') |
|
787 |
querySuite = unittest.makeSuite(QueryTestCase, 'test') |
|
788 |
dstSuite = unittest.makeSuite(DstTestCase, 'test') |
|
789 | ||
790 | ||
791 |
allTests = unittest.TestSuite((metadataSuite, |
|
792 |
metadataAssociationSuite,querySuite,dstSuite)) |
|
793 | ||
794 |
if __name__ == '__main__': |
|
795 |
sys.exit(not unittest.TextTestRunner(verbosity = 2).run(allTests).wasSuccessful()) |
|
796 |
configure.ac | ||
---|---|---|
679 | 679 |
AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir) |
680 | 680 |
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir) |
681 | 681 | |
682 |
dnl Check if wsf is explicitly disabled. |
|
683 |
AC_ARG_ENABLE(wsf, [ --enable-wsf enable experimental ID-WSF], |
|
684 |
enable_wsf="yes", enable_wsf="no") |
|
685 | ||
686 |
AM_CONDITIONAL([WSF_ENABLED],[test "x$enable_wsf" = "xyes"]) |
|
687 |
LASSO_WSF_SUPPORT=0 |
|
688 |
if test "x$enable_wsf" = "xyes"; then |
|
689 |
AC_DEFINE(LASSO_WSF_ENABLED, [], [Define if ID-WSF support is enabled]) |
|
690 |
LASSO_WSF_SUPPORT=1 |
|
691 |
fi |
|
692 |
AC_SUBST(LASSO_WSF_SUPPORT) |
|
693 | ||
694 | 682 | |
695 | 683 |
dnl API Reference documentation support |
696 | 684 |
# gtkdocize greps for ^GTK_DOC_CHECK and parses it, so you need to have |
... | ... | |
746 | 734 | |
747 | 735 |
AM_CONDITIONAL(WITH_TESTS, [test "x$enable_tests" = "xyes"]) |
748 | 736 | |
749 |
AC_ARG_WITH(sasl2, [ --with-sasl2[=PFX] Use Cyrus SASL library version 2 for WSF-Auth]) |
|
750 |
if test "x$enable_wsf" = "xyes"; then |
|
751 |
if test "$with_sasl2" != "no" && test "$with_sasl2" != "yes" |
|
752 |
then |
|
753 |
CPPFLAGS="$CPPFLAGS -I$with_sasl2/include" |
|
754 |
LDFLAGS="$LDFLAGS -L$with_sasl2/lib" |
|
755 |
fi |
|
756 |
|
|
757 |
saved_LIBS="$LIBS" |
|
758 |
AC_CHECK_LIB(sasl2, sasl_server_init,, |
|
759 |
AC_MSG_ERROR([libsasl must be installed for WSF support]),) |
|
760 |
LIBS="$saved_LIBS" |
|
761 |
LASSO_LIBS="$LASSO_LIBS -lsasl2" |
|
762 |
fi |
|
763 | ||
764 | 737 |
AC_CHECK_PROGS(REST2HTML, rest2html rst2html) |
765 | 738 |
AM_CONDITIONAL(HAVE_REST2HTML, test -n "$ac_cv_prog_REST2HTML") |
766 | 739 | |
... | ... | |
907 | 880 |
docs/reference/lasso/Makefile |
908 | 881 |
lasso/Makefile |
909 | 882 |
lasso/id-ff/Makefile |
910 |
lasso/id-wsf/Makefile |
|
911 | 883 |
lasso/saml-2.0/Makefile |
912 |
lasso/id-wsf-2.0/Makefile |
|
913 | 884 |
lasso/xml/Makefile |
914 | 885 |
lasso/xml/ecp/Makefile |
915 | 886 |
lasso/xml/saml-2.0/Makefile |
916 | 887 |
lasso/xml/soap-1.1/Makefile |
917 |
lasso/xml/id-wsf-2.0/Makefile |
|
918 |
lasso/xml/ws/Makefile |
|
919 | 888 |
lasso/xml/dsig/Makefile |
920 | 889 |
tests/Makefile |
921 | 890 |
tests/data/Makefile |
... | ... | |
961 | 930 |
CFLAGS: ${AM_CFLAGS} ${CFLAGS} |
962 | 931 |
Install prefix: ${prefix} |
963 | 932 |
Debugging: $enable_debugging |
964 |
Experimental ID-WSF: $enable_wsf |
|
965 | 933 | |
966 | 934 |
Optionals builds |
967 | 935 |
---------------- |
docs/reference/lasso/Makefile.am | ||
---|---|---|
81 | 81 |
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h |
82 | 82 |
IGNORE_HFILES= sessionprivate.h logoutprivate.h loginprivate.h profileprivate.h \ |
83 | 83 |
identityprivate.h serverprivate.h providerprivate.h id_ff_extensions_private.h \ |
84 |
wsf_profile_private.h private.h saml_2_0_loginprivate.h \
|
|
84 |
private.h saml_2_0_loginprivate.h \ |
|
85 | 85 |
saml_2_0_profileprivate.h saml_2_0_logoutprivate.h ecpprivate.h \ |
86 | 86 |
saml_2_0_serverprivate.h saml_2_0_providerprivate.h federationprivate.h \ |
87 |
registry-private.h id_wsf_2_0_sessionprivate.h id_wsf_2_0_serverprivate.h \
|
|
88 |
saml2_login_private.h id_wsf_2_0_private.h \
|
|
89 |
backward_comp.h id_wsf_2.h id_wsf.h lasso_config.h utils.h debug.h
|
|
87 |
registry-private.h \ |
|
88 |
saml2_login_private.h \ |
|
89 |
backward_comp.h lasso_config.h utils.h debug.h |
|
90 | 90 |
# Images to copy into HTML directory. |
91 | 91 |
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png |
92 | 92 |
HTML_IMAGES= |
... | ... | |
122 | 122 |
# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt |
123 | 123 |
# DISTCLEANFILES = |
124 | 124 | |
125 |
# Generate lasso.types depending on the WSF_ENABLED flag |
|
126 |
if WSF_ENABLED |
|
127 |
lasso.types: lasso.types.in |
|
128 |
sed -e 's/#WSF# //g' < $(srcdir)/lasso.types.in > lasso.types |
|
129 |
else |
|
130 |
lasso.types: lasso.types.in |
|
131 |
grep -v '#WSF#' $(srcdir)/lasso.types.in > lasso.types |
|
132 |
endif |
|
133 | ||
134 | ||
135 | 125 |
# Comment this out if you want your docs-status tested during 'make check' |
136 | 126 |
if ENABLE_GTK_DOC |
137 | 127 |
TESTS_ENVIRONMENT = cd $(srcdir) |
docs/reference/lasso/lasso-docs.xml | ||
---|---|---|
295 | 295 |
<xi:include href="xml/ecp_relaystate.xml"/> |
296 | 296 |
</chapter> |
297 | 297 | |
298 |
<chapter id="idwsf"> |
|
299 |
<title>Identity Web Services Framework 1.0</title> |
|
300 | ||
301 |
<xi:include href="xml/discovery.xml"/> |
|
302 |
<xi:include href="xml/data_service.xml"/> |
|
303 |
<xi:include href="xml/personal_profile_service.xml"/> |
|
304 |
<xi:include href="xml/authentication.xml"/> |
|
305 |
<xi:include href="xml/wsf_profile.xml"/> |
|
306 |
<xi:include href="xml/interaction_profile_service.xml"/> |
|
307 |
<xi:include href="xml/id_wsf_utils.xml"/> |
|
308 |
</chapter> |
|
309 |
<chapter id="xml-idwsf"> |
|
310 |
<title>Objects from ID-WSF 1.0 schemas</title> |
|
311 |
<xi:include href="xml/id_wsf_strings.xml"/> |
|
312 |
<xi:include href="xml/disco_authenticate_requester.xml"/> |
|
313 |
<xi:include href="xml/disco_authenticate_session_context.xml"/> |
|
314 |
<xi:include href="xml/disco_authorize_requester.xml"/> |
|
315 |
<xi:include href="xml/disco_credentials.xml"/> |
|
316 |
<xi:include href="xml/disco_description.xml"/> |
|
317 |
<xi:include href="xml/disco_encrypted_resource_id.xml"/> |
|
318 |
<xi:include href="xml/disco_encrypt_resource_id.xml"/> |
|
319 |
<xi:include href="xml/disco_generate_bearer_token.xml"/> |
|
320 |
<xi:include href="xml/disco_insert_entry.xml"/> |
|
321 |
<xi:include href="xml/disco_modify_response.xml"/> |
|
322 |
<xi:include href="xml/disco_modify.xml"/> |
|
323 |
<xi:include href="xml/disco_options.xml"/> |
|
324 |
<xi:include href="xml/disco_query_response.xml"/> |
|
325 |
<xi:include href="xml/disco_query.xml"/> |
|
326 |
<xi:include href="xml/disco_remove_entry.xml"/> |
|
327 |
<xi:include href="xml/disco_requested_service_type.xml"/> |
|
328 |
<xi:include href="xml/disco_resource_id.xml"/> |
|
329 |
<xi:include href="xml/disco_resource_offering.xml"/> |
|
330 |
<xi:include href="xml/disco_send_single_logout.xml"/> |
|
331 |
<xi:include href="xml/disco_service_instance.xml"/> |
|
332 |
<xi:include href="xml/dst_data.xml"/> |
|
333 |
<xi:include href="xml/dst_modification.xml"/> |
|
334 |
<xi:include href="xml/dst_modify_response.xml"/> |
|
335 |
<xi:include href="xml/dst_modify.xml"/> |
|
336 |
<xi:include href="xml/dst_new_data.xml"/> |
|
337 |
<xi:include href="xml/dst_query_item.xml"/> |
|
338 |
<xi:include href="xml/dst_query_response.xml"/> |
|
339 |
<xi:include href="xml/dst_query.xml"/> |
|
340 |
<xi:include href="xml/is_redirect_request.xml"/> |
|
341 |
<xi:include href="xml/is_user_interaction.xml"/> |
|
342 |
<xi:include href="xml/sa_credentials.xml"/> |
|
343 |
<xi:include href="xml/sa_parameter.xml"/> |
|
344 |
<xi:include href="xml/sa_password_transforms.xml"/> |
|
345 |
<xi:include href="xml/sa_sasl_request.xml"/> |
|
346 |
<xi:include href="xml/sa_sasl_response.xml"/> |
|
347 |
<xi:include href="xml/sa_transform.xml"/> |
|
348 |
<xi:include href="xml/sec_resource_access_statement.xml"/> |
|
349 |
<xi:include href="xml/soap_binding_consent.xml"/> |
|
350 |
<xi:include href="xml/soap_binding_correlation.xml"/> |
|
351 |
<xi:include href="xml/soap_binding_ext_credentials_context.xml"/> |
|
352 |
<xi:include href="xml/soap_binding_ext_credential.xml"/> |
|
353 |
<xi:include href="xml/soap_binding_ext_service_instance_update.xml"/> |
|
354 |
<xi:include href="xml/soap_binding_ext_timeout.xml"/> |
|
355 |
<xi:include href="xml/soap_binding_processing_context.xml"/> |
|
356 |
<xi:include href="xml/soap_binding_provider.xml"/> |
|
357 |
<xi:include href="xml/soap_binding_usage_directive.xml"/> |
|
358 |
<xi:include href="xml/utility_status.xml"/> |
|
359 |
</chapter> |
|
360 |
<chapter id="idwsf2"> |
|
361 |
<title>ID-WSF 2.0</title> |
|
362 |
<xi:include href="xml/soap_binding2.xml"/> |
|
363 |
<xi:include href="xml/id_wsf_2_0_discovery.xml"/> |
|
364 |
<xi:include href="xml/id_wsf_2_0_data_service.xml"/> |
|
365 |
<xi:include href="xml/id_wsf_2_0_profile.xml"/> |
|
366 |
<xi:include href="xml/id_wsf_2_0_login.xml"/> |
|
367 |
</chapter> |
|
368 |
<chapter id="xml-idwsf2"> |
|
369 |
<title>Objects from ID-WSF 2.0 schemas</title> |
|
370 |
<xi:include href="xml/id_wsf2_strings.xml"/> |
|
371 |
<xi:include href="xml/disco_service_type.xml"/> |
|
372 |
<xi:include href="xml/disco_abstract.xml"/> |
|
373 |
<xi:include href="xml/disco_endpoint_context.xml"/> |
|
374 |
<xi:include href="xml/disco_keys.xml"/> |
|
375 |
<xi:include href="xml/disco_provider_id.xml"/> |
|
376 |
<xi:include href="xml/disco_requested_service.xml"/> |
|
377 |
<xi:include href="xml/disco_security_context.xml"/> |
|
378 |
<xi:include href="xml/disco_service_context.xml"/> |
|
379 |
<xi:include href="xml/disco_svc_md_association_add_response.xml"/> |
|
380 |
<xi:include href="xml/disco_svc_md_association_add.xml"/> |
|
381 |
<xi:include href="xml/disco_svc_md_association_delete_response.xml"/> |
|
382 |
<xi:include href="xml/disco_svc_md_association_delete.xml"/> |
|
383 |
<xi:include href="xml/disco_svc_md_association_query_response.xml"/> |
|
384 |
<xi:include href="xml/disco_svc_md_association_query.xml"/> |
|
385 |
<xi:include href="xml/disco_svc_md_delete_response.xml"/> |
|
386 |
<xi:include href="xml/disco_svc_md_delete.xml"/> |
|
387 |
<xi:include href="xml/disco_svc_md_query_response.xml"/> |
|
388 |
<xi:include href="xml/disco_svc_md_query.xml"/> |
|
389 |
<xi:include href="xml/disco_svc_md_register_response.xml"/> |
|
390 |
<xi:include href="xml/disco_svc_md_register.xml"/> |
|
391 |
<xi:include href="xml/disco_svc_md_replace_response.xml"/> |
|
392 |
<xi:include href="xml/disco_svc_md_replace.xml"/> |
|
393 |
<xi:include href="xml/disco_svc_metadata.xml"/> |
|
394 |
<xi:include href="xml/dst_data_response_base.xml"/> |
|
395 |
<xi:include href="xml/dst_delete_item_base.xml"/> |
|
396 |
<xi:include href="xml/dst_delete_response.xml"/> |
|
397 |
<xi:include href="xml/dstref_app_data.xml"/> |
|
398 |
<xi:include href="xml/dstref_create_item.xml"/> |
|
399 |
<xi:include href="xml/dstref_create_response.xml"/> |
|
400 |
<xi:include href="xml/dstref_create.xml"/> |
|
401 |
<xi:include href="xml/dstref_data_response.xml"/> |
|
402 |
<xi:include href="xml/dstref_data.xml"/> |
|
403 |
<xi:include href="xml/dstref_delete_item.xml"/> |
|
404 |
<xi:include href="xml/dstref_delete_response.xml"/> |
|
405 |
<xi:include href="xml/dstref_delete.xml"/> |
|
406 |
<xi:include href="xml/dstref_item_data.xml"/> |
|
407 |
<xi:include href="xml/dstref_modify_item.xml"/> |
|
408 |
<xi:include href="xml/dstref_modify_response.xml"/> |
|
409 |
<xi:include href="xml/dstref_modify.xml"/> |
|
410 |
<xi:include href="xml/dstref_query_item.xml"/> |
|
411 |
<xi:include href="xml/dstref_query_response.xml"/> |
|
412 |
<xi:include href="xml/dstref_query.xml"/> |
|
413 |
<xi:include href="xml/dstref_result_query.xml"/> |
|
414 |
<xi:include href="xml/dstref_test_item.xml"/> |
|
415 |
<xi:include href="xml/dst_request.xml"/> |
|
416 |
<xi:include href="xml/dst_result_query_base.xml"/> |
|
417 |
<xi:include href="xml/dst_test_item_base.xml"/> |
|
418 |
<xi:include href="xml/ims_identity_mapping_request.xml"/> |
|
419 |
<xi:include href="xml/ims_identity_mapping_response.xml"/> |
|
420 |
<xi:include href="xml/ims_mapping_input.xml"/> |
|
421 |
<xi:include href="xml/ims_mapping_output.xml"/> |
|
422 |
<xi:include href="xml/is_help.xml"/> |
|
423 |
<xi:include href="xml/is_inquiry_element.xml"/> |
|
424 |
<xi:include href="xml/is_inquiry.xml"/> |
|
425 |
<xi:include href="xml/is_interaction_request.xml"/> |
|
426 |
<xi:include href="xml/is_interaction_response.xml"/> |
|
427 |
<xi:include href="xml/is_interaction_statement.xml"/> |
|
428 |
<xi:include href="xml/is_item.xml"/> |
|
429 |
<xi:include href="xml/is_parameter.xml"/> |
|
430 |
<xi:include href="xml/is_select.xml"/> |
|
431 |
<xi:include href="xml/is_text.xml"/> |
|
432 |
<xi:include href="xml/ps_add_collection_request.xml"/> |
|
433 |
<xi:include href="xml/ps_add_collection_response.xml"/> |
|
434 |
<xi:include href="xml/ps_add_entity_request.xml"/> |
|
435 |
<xi:include href="xml/ps_add_entity_response.xml"/> |
|
436 |
<xi:include href="xml/ps_add_known_entity_request.xml"/> |
|
437 |
<xi:include href="xml/ps_add_known_entity_response.xml"/> |
|
438 |
<xi:include href="xml/ps_add_to_collection_request.xml"/> |
|
439 |
<xi:include href="xml/ps_get_object_info_request.xml"/> |
|
440 |
<xi:include href="xml/ps_get_object_info_response.xml"/> |
|
441 |
<xi:include href="xml/ps_item_data.xml"/> |
|
442 |
<xi:include href="xml/ps_list_members_request.xml"/> |
|
443 |
<xi:include href="xml/ps_list_members_response.xml"/> |
|
444 |
<xi:include href="xml/ps_notification.xml"/> |
|
445 |
<xi:include href="xml/ps_notify.xml"/> |
|
446 |
<xi:include href="xml/ps_object.xml"/> |
|
447 |
<xi:include href="xml/ps_query_objects_request.xml"/> |
|
448 |
<xi:include href="xml/ps_query_objects_response.xml"/> |
|
449 |
<xi:include href="xml/ps_remove_collection_request.xml"/> |
|
450 |
<xi:include href="xml/ps_remove_entity_request.xml"/> |
|
451 |
<xi:include href="xml/ps_remove_from_collection_request.xml"/> |
|
452 |
<xi:include href="xml/ps_request_abstract.xml"/> |
|
453 |
<xi:include href="xml/ps_resolve_identifier_request.xml"/> |
|
454 |
<xi:include href="xml/ps_resolve_identifier_response.xml"/> |
|
455 |
<xi:include href="xml/ps_resolve_input.xml"/> |
|
456 |
<xi:include href="xml/ps_response_abstract.xml"/> |
|
457 |
<xi:include href="xml/ps_set_object_info_request.xml"/> |
|
458 |
<xi:include href="xml/ps_test_membership_request.xml"/> |
|
459 |
<xi:include href="xml/ps_test_membership_response.xml"/> |
|
460 |
<xi:include href="xml/sb2_consent.xml"/> |
|
461 |
<xi:include href="xml/sb2_credentials_context.xml"/> |
|
462 |
<xi:include href="xml/sb2_endpoint_update.xml"/> |
|
463 |
<xi:include href="xml/sb2_redirect_request.xml"/> |
|
464 |
<xi:include href="xml/sb2_sender.xml"/> |
|
465 |
<xi:include href="xml/sb2_target_identity.xml"/> |
|
466 |
<xi:include href="xml/sb2_timeout.xml"/> |
|
467 |
<xi:include href="xml/sb2_usage_directive.xml"/> |
|
468 |
<xi:include href="xml/sb2_user_interaction_header.xml"/> |
|
469 |
<xi:include href="xml/sbf_framework.xml"/> |
|
470 |
<xi:include href="xml/sec_token_policy.xml"/> |
|
471 |
<xi:include href="xml/sec_token.xml"/> |
|
472 |
<xi:include href="xml/sec_transited_provider_path.xml"/> |
|
473 |
<xi:include href="xml/subs_notification.xml"/> |
|
474 |
<xi:include href="xml/subs_notify_response.xml"/> |
|
475 |
<xi:include href="xml/subsref_app_data.xml"/> |
|
476 |
<xi:include href="xml/subsref_create_item.xml"/> |
|
477 |
<xi:include href="xml/subsref_create_response.xml"/> |
|
478 |
<xi:include href="xml/subsref_create.xml"/> |
|
479 |
<xi:include href="xml/subsref_data_response.xml"/> |
|
480 |
<xi:include href="xml/subsref_data.xml"/> |
|
481 |
<xi:include href="xml/subsref_delete_item.xml"/> |
|
482 |
<xi:include href="xml/subsref_delete_response.xml"/> |
|
483 |
<xi:include href="xml/subsref_delete.xml"/> |
|
484 |
<xi:include href="xml/subsref_item_data.xml"/> |
|
485 |
<xi:include href="xml/subs_ref_item.xml"/> |
|
486 |
<xi:include href="xml/subsref_modify_item.xml"/> |
|
487 |
<xi:include href="xml/subsref_modify_response.xml"/> |
|
488 |
<xi:include href="xml/subsref_modify.xml"/> |
|
489 |
<xi:include href="xml/subsref_notification.xml"/> |
|
490 |
<xi:include href="xml/subsref_notify_response.xml"/> |
|
491 |
<xi:include href="xml/subsref_notify.xml"/> |
|
492 |
<xi:include href="xml/subsref_query_item.xml"/> |
|
493 |
<xi:include href="xml/subsref_query_response.xml"/> |
|
494 |
<xi:include href="xml/subsref_query.xml"/> |
|
495 |
<xi:include href="xml/subsref_result_query.xml"/> |
|
496 |
<xi:include href="xml/subsref_subscription.xml"/> |
|
497 |
<xi:include href="xml/subsref_test_item.xml"/> |
|
498 |
<xi:include href="xml/subs_subscription.xml"/> |
|
499 |
<xi:include href="xml/util_empty.xml"/> |
|
500 |
<xi:include href="xml/util_extension.xml"/> |
|
501 |
<xi:include href="xml/util_response.xml"/> |
|
502 |
<xi:include href="xml/util_status.xml"/> |
|
503 |
</chapter> |
|
504 | ||
505 | 298 |
<chapter id="soap"> |
506 | 299 |
<title>Object from the SOAP 1.1 schemas</title> |
507 | 300 |
<xi:include href="xml/soap_body.xml"/> |
... | ... | |
520 | 313 |
<xi:include href="xml/dsig_strings.xml"/> |
521 | 314 |
</chapter> |
522 | 315 | |
523 |
<chapter id="ws-addr"> |
|
524 |
<title>Object from the WS-* schemas</title> |
|
525 |
<xi:include href="xml/wsa_attributed_any.xml"/> |
|
526 |
<xi:include href="xml/wsa_attributed_qname.xml"/> |
|
527 |
<xi:include href="xml/wsa_attributed_unsigned_long.xml"/> |
|
528 |
<xi:include href="xml/wsa_attributed_uri.xml"/> |
|
529 |
<xi:include href="xml/wsa_endpoint_reference.xml"/> |
|
530 |
<xi:include href="xml/wsa_metadata.xml"/> |
|
531 |
<xi:include href="xml/wsa_problem_action.xml"/> |
|
532 |
<xi:include href="xml/wsa_reference_parameters.xml"/> |
|
533 |
<xi:include href="xml/wsa_relates_to.xml"/> |
|
534 |
<xi:include href="xml/wsse_embedded.xml"/> |
|
535 |
<xi:include href="xml/wsse_reference.xml"/> |
|
536 |
<xi:include href="xml/wsse_security_header.xml"/> |
|
537 |
<xi:include href="xml/wsse_security_token_reference.xml"/> |
|
538 |
<xi:include href="xml/wsse_transformation_parameters.xml"/> |
|
539 |
<xi:include href="xml/wsse_username_token.xml"/> |
|
540 |
<xi:include href="xml/wsu_timestamp.xml"/> |
|
541 |
<xi:include href="xml/ws_strings.xml"/> |
|
542 |
</chapter> |
|
543 | 316 |
</reference> |
544 | 317 | |
545 | 318 |
<index id="api-index-full"> |
docs/reference/lasso/lasso-sections.txt | ||
---|---|---|
331 | 331 |
LASSO_NAME_IDENTIFIER_MAPPING_GET_CLASS |
332 | 332 |
</SECTION> |
333 | 333 | |
334 |
<SECTION> |
|
335 |
<FILE>wsf_profile</FILE> |
|
336 |
<TITLE>LassoWsfProfile</TITLE> |
|
337 |
LassoWsfProfile |
|
338 |
lasso_wsf_profile_get_identity |
|
339 |
lasso_wsf_profile_get_session |
|
340 |
lasso_wsf_profile_is_identity_dirty |
|
341 |
lasso_wsf_profile_is_session_dirty |
|
342 |
lasso_wsf_profile_set_identity_from_dump |
|
343 |
lasso_wsf_profile_set_session_from_dump |
|
344 |
lasso_wsf_profile_build_soap_request_msg |
|
345 |
lasso_wsf_profile_build_soap_response_msg |
|
346 |
lasso_wsf_profile_init_soap_request |
|
347 |
lasso_wsf_profile_init_soap_response |
|
348 |
lasso_wsf_profile_process_soap_request_msg |
|
349 |
lasso_wsf_profile_process_soap_response_msg |
|
350 |
lasso_wsf_profile_new |
|
351 |
lasso_wsf_profile_new_full |
|
352 |
lasso_wsf_profile_set_description_from_offering |
|
353 |
lasso_wsf_profile_set_description |
|
354 |
lasso_wsf_profile_get_description |
|
355 |
lasso_wsf_profile_get_resource_offering |
|
356 |
lasso_wsf_profile_set_security_mech_id |
|
357 |
lasso_wsf_profile_get_security_mech_id |
|
358 |
lasso_wsf_profile_init |
|
359 |
lasso_wsf_profile_get_remote_provider |
|
360 |
lasso_wsf_profile_get_remote_provider_id |
|
361 |
lasso_wsf_profile_get_soap_fault |
|
362 |
lasso_wsf_profile_set_soap_fault |
|
363 |
lasso_wsf_profile_set_status_code |
|
364 |
lasso_wsf_profile_get_status_code |
|
365 |
lasso_wsf_profile_set_msg_url_from_description |
|
366 |
lasso_wsf_profile_set_resource_offering |
|
367 |
lasso_wsf_profile_init_interaction_service_redirect |
|
368 |
<SUBSECTION Standard> |
|
369 |
LASSO_WSF_PROFILE |
|
370 |
LASSO_IS_WSF_PROFILE |
|
371 |
LASSO_TYPE_WSF_PROFILE |
|
372 |
lasso_wsf_profile_get_type |
|
373 |
LASSO_WSF_PROFILE_CLASS |
|
374 |
LASSO_IS_WSF_PROFILE_CLASS |
|
375 |
LASSO_WSF_PROFILE_GET_CLASS |
|
376 |
</SECTION> |
|
377 | ||
378 | 334 |
<SECTION> |
379 | 335 |
<FILE>authentication</FILE> |
380 | 336 |
LassoUserAccount |
... | ... | |
500 | 456 |
LASSO_DISCOVERY_GET_CLASS |
501 | 457 |
</SECTION> |
502 | 458 | |
503 |
<SECTION> |
|
504 |
<FILE>sa_sasl_request</FILE> |
|
505 |
<TITLE>LassoSaSASLRequest</TITLE> |
|
506 |
LassoSaSASLRequest |
|
507 |
lasso_sa_sasl_request_new |
|
508 |
<SUBSECTION Standard> |
|
509 |
LASSO_SA_SASL_REQUEST |
|
510 |
LASSO_IS_SA_SASL_REQUEST |
|
511 |
LASSO_TYPE_SA_SASL_REQUEST |
|
512 |
lasso_sa_sasl_request_get_type |
|
513 |
LASSO_SA_SASL_REQUEST_CLASS |
|
514 |
LASSO_IS_SA_SASL_REQUEST_CLASS |
|
515 |
LASSO_SA_SASL_REQUEST_GET_CLASS |
|
516 |
</SECTION> |
|
517 | ||
518 |
<SECTION> |
|
519 |
<FILE>dst_modify</FILE> |
|
520 |
<TITLE>LassoDstModify</TITLE> |
|
521 |
LassoDstModify |
|
522 |
lasso_dst_modify_new |
|
523 |
<SUBSECTION Standard> |
|
524 |
LASSO_DST_MODIFY |
|
525 |
LASSO_IS_DST_MODIFY |
|
526 |
LASSO_TYPE_DST_MODIFY |
|
527 |
lasso_dst_modify_get_type |
|
528 |
LASSO_DST_MODIFY_CLASS |
|
529 |
LASSO_IS_DST_MODIFY_CLASS |
|
530 |
LASSO_DST_MODIFY_GET_CLASS |
|
531 |
</SECTION> |
|
532 | ||
533 |
<SECTION> |
|
534 |
<FILE>dst_query</FILE> |
|
535 |
<TITLE>LassoDstQuery</TITLE> |
|
536 |
LassoDstQuery |
|
537 |
lasso_dst_query_new |
|
538 |
<SUBSECTION Standard> |
|
539 |
LASSO_DST_QUERY |
|
540 |
LASSO_IS_DST_QUERY |
|
541 |
LASSO_TYPE_DST_QUERY |
|
542 |
lasso_dst_query_get_type |
|
543 |
LASSO_DST_QUERY_CLASS |
|
544 |
LASSO_IS_DST_QUERY_CLASS |
|
545 |
LASSO_DST_QUERY_GET_CLASS |
|
546 |
</SECTION> |
|
547 | ||
548 | 459 |
<SECTION> |
549 | 460 |
<FILE>lib_federation_termination_notification</FILE> |
550 | 461 |
<TITLE>LassoLibFederationTerminationNotification</TITLE> |
... | ... | |
833 | 744 |
LASSO_SAML2_FIELD_SIGALG |
834 | 745 |
</SECTION> |
835 | 746 | |
836 |
<SECTION> |
|
837 |
<FILE>id_wsf_strings</FILE> |
|
838 |
<TITLE>ID-WSF 1.0 Strings</TITLE> |
|
839 |
<SUBSECTION Namespaces> |
|
840 |
LASSO_DISCO_HREF |
|
841 |
LASSO_DISCO_PREFIX |
|
842 |
LASSO_EP_HREF |
|
843 |
LASSO_EP_PREFIX |
|
844 |
LASSO_IS_HREF |
|
845 |
LASSO_IS_PREFIX |
|
846 |
LASSO_PP10_HREF |
|
847 |
LASSO_PP10_PREFIX |
|
848 |
LASSO_SA_HREF |
|
849 |
LASSO_SA_PREFIX |
|
850 |
LASSO_SEC_HREF |
|
851 |
LASSO_SEC_PREFIX |
|
852 |
LASSO_SOAP_BINDING_EXT_HREF |
|
853 |
LASSO_SOAP_BINDING_EXT_PREFIX |
|
854 |
LASSO_SOAP_BINDING_HREF |
|
855 |
LASSO_SOAP_BINDING_PREFIX |
|
856 |
<SUBSECTION Security Mechanisms> |
|
857 |
LASSO_SECURITY_MECH_NULL |
|
858 |
LASSO_SECURITY_MECH_X509 |
|
859 |
LASSO_SECURITY_MECH_SAML |
|
860 |
LASSO_SECURITY_MECH_BEARER |
|
861 |
LASSO_SECURITY_MECH_TLS |
|
862 |
LASSO_SECURITY_MECH_TLS_X509 |
|
863 |
LASSO_SECURITY_MECH_TLS_SAML |
|
864 |
LASSO_SECURITY_MECH_TLS_BEARER |
|
865 |
LASSO_SECURITY_MECH_CLIENT_TLS |
|
866 |
LASSO_SECURITY_MECH_CLIENT_TLS_X509 |
|
867 |
LASSO_SECURITY_MECH_CLIENT_TLS_SAML |
|
868 |
LASSO_SECURITY_MECH_CLIENT_TLS_BEARER |
|
869 |
LASSO_SECURITY11_MECH_X509 |
|
870 |
LASSO_SECURITY11_MECH_SAML |
|
871 |
LASSO_SECURITY11_MECH_BEARER |
|
872 |
LASSO_SECURITY11_MECH_TLS_X509 |
|
873 |
LASSO_SECURITY11_MECH_TLS_SAML |
|
874 |
LASSO_SECURITY11_MECH_TLS_BEARER |
|
875 |
LASSO_SA_SASL_SERVICE_NAME |
|
876 |
<SUBSECTION Interaction Service Strings> |
|
877 |
LASSO_IS_INTERACT_ATTR_INTERACT_IF_NEEDED |
|
878 |
LASSO_IS_INTERACT_ATTR_DO_NOT_INTERACT |
|
879 |
LASSO_IS_INTERACT_ATTR_DO_NOT_INTERACT_FOR_DATA |
|
880 |
<SUBSECTION Discovery Service Status Codes> |
|
881 |
LASSO_DISCO_STATUS_CODE_OK |
|
882 |
LASSO_DISCO_STATUS_CODE_DISCO_OK |
|
883 |
LASSO_DISCO_STATUS_CODE_FAILED |
|
884 |
LASSO_DISCO_STATUS_CODE_REMOVE_ENTRY |
|
885 |
LASSO_DISCO_STATUS_CODE_FORBIDDEN |
|
886 |
LASSO_DISCO_STATUS_CODE_NO_RESULTS |
|
887 |
LASSO_DISCO_STATUS_CODE_DIRECTIVES |
|
888 |
<SUBSECTION DST Service Status Codes> |
|
889 |
LASSO_DST_STATUS_CODE_OK |
|
890 |
LASSO_DST_STATUS_CODE_FAILED |
|
891 |
LASSO_DST_STATUS_CODE_PARTIAL |
|
892 |
LASSO_DST_STATUS_CODE_ACTION_NOT_AUTHORIZED |
|
893 |
LASSO_DST_STATUS_CODE_ACTION_NOT_SUPPORTED |
|
894 |
LASSO_DST_STATUS_CODE_ALL_RETURNED |
|
895 |
LASSO_DST_STATUS_CODE_CHANGE_HISTORY_NOT_SUPPORTED |
|
896 |
LASSO_DST_STATUS_CODE_CHANGED_SINCE_RETURNS_ALL |
|
897 |
LASSO_DST_STATUS_CODE_DATA_TOO_LONG |
|
898 |
LASSO_DST_STATUS_CODE_EXISTS_ALREADY |
|
899 |
LASSO_DST_STATUS_CODE_EXTENSION_NOT_SUPPORTED |
|
900 |
LASSO_DST_STATUS_CODE_INVALID_DATA |
|
901 |
LASSO_DST_STATUS_CODE_INVALID_RESOURCE_ID |
|
902 |
LASSO_DST_STATUS_CODE_INVALID_SELECT |
|
903 |
LASSO_DST_STATUS_CODE_MISSING_NEW_DATA_ELEMENT |
|
904 |
LASSO_DST_STATUS_CODE_MISSING_RESOURCE_ID_ELEMENT |
|
905 |
LASSO_DST_STATUS_CODE_MISSING_SELECT |
|
906 |
LASSO_DST_STATUS_CODE_MODIFIED_SINCE |
|
907 |
LASSO_DST_STATUS_CODE_NO_MORE_ELEMENTS |
|
908 |
LASSO_DST_STATUS_CODE_NO_MULTIPLE_ALLOWED |
|
909 |
LASSO_DST_STATUS_CODE_NO_MULTIPLE_RESOURCES |
|
910 |
LASSO_DST_STATUS_CODE_TIME_OUT |
|
911 |
LASSO_DST_STATUS_CODE_UNEXPECTED_ERROR |
|
912 |
<SUBSECTION Authentication Service Status Codes> |
|
913 |
LASSO_SA_STATUS_CODE_OK |
|
914 |
LASSO_SA_STATUS_CODE_CONTINUE |
|
915 |
LASSO_SA_STATUS_CODE_ABORT |
|
916 |
<SUBSECTION SOAP Binding Processing Context Values> |
|
917 |
LASSO_SOAP_BINDING_PROCESS_CONTEXT_PRINCIPAL_OFFLINE |
|
918 |
LASSO_SOAP_BINDING_PROCESS_CONTEXT_PRINCIPAL_ONLINE |
|
919 |
LASSO_SOAP_BINDING_PROCESS_CONTEXT_SIMULATE |
|
920 |
</SECTION> |
|
921 | ||
922 |
<SECTION> |
|
923 |
<FILE>id_wsf2_strings</FILE> |
|
924 |
<TITLE>Strings for ID-WSF 2.0</TITLE> |
|
925 |
<SUBSECTION Namespaces> |
|
926 |
LASSO_IDWSF2_SB2_HREF |
|
927 |
LASSO_IDWSF2_SB2_PREFIX |
|
928 |
LASSO_IDWSF2_SBF_HREF |
|
929 |
LASSO_IDWSF2_SBF_PREFIX |
|
930 |
LASSO_IDWSF2_DISCOVERY_HREF |
|
931 |
LASSO_IDWSF2_DISCOVERY_PREFIX |
|
932 |
LASSO_IDWSF2_DST_HREF |
|
933 |
LASSO_IDWSF2_DST_PREFIX |
|
934 |
LASSO_IDWSF2_DSTREF_HREF |
|
935 |
LASSO_IDWSF2_DSTREF_PREFIX |
|
936 |
LASSO_IDWSF2_IMS_HREF |
|
937 |
LASSO_IDWSF2_IMS_PREFIX |
|
938 |
LASSO_IDWSF2_IS_HREF |
|
939 |
LASSO_IDWSF2_IS_PREFIX |
|
940 |
LASSO_IDWSF2_PS_HREF |
|
941 |
LASSO_IDWSF2_PS_PREFIX |
|
942 |
LASSO_IDWSF2_SUBS_HREF |
|
943 |
LASSO_IDWSF2_SUBS_PREFIX |
|
944 |
LASSO_IDWSF2_SUBSREF_HREF |
|
945 |
LASSO_IDWSF2_SUBSREF_PREFIX |
|
946 |
LASSO_IDWSF2_UTIL_HREF |
|
947 |
LASSO_IDWSF2_UTIL_PREFIX |
|
948 |
LASSO_IDWSF2_SEC_HREF |
|
949 |
LASSO_IDWSF2_SEC_PREFIX |
|
950 |
</SECTION> |
|
951 | 747 | |
952 | 748 |
<SECTION> |
953 | 749 |
<FILE>soap_strings</FILE> |
... | ... | |
966 | 762 |
LASSO_DS_PREFIX |
967 | 763 |
</SECTION> |
968 | 764 | |
969 |
<SECTION> |
|
970 |
<FILE>disco_modify</FILE> |
|
971 |
<TITLE>LassoDiscoModify</TITLE> |
|
972 |
LassoDiscoModify |
|
973 |
lasso_disco_modify_new |
|
974 |
<SUBSECTION Standard> |
|
975 |
LASSO_DISCO_MODIFY |
|
976 |
LASSO_IS_DISCO_MODIFY |
|
977 |
LASSO_TYPE_DISCO_MODIFY |
|
978 |
lasso_disco_modify_get_type |
|
979 |
LASSO_DISCO_MODIFY_CLASS |
|
980 |
LASSO_IS_DISCO_MODIFY_CLASS |
|
981 |
LASSO_DISCO_MODIFY_GET_CLASS |
|
982 |
</SECTION> |
|
983 | ||
984 | 765 |
<SECTION> |
985 | 766 |
<FILE>ds_key_info</FILE> |
986 | 767 |
<TITLE>LassoDsKeyInfo</TITLE> |
... | ... | |
996 | 777 |
LASSO_DS_KEY_INFO_GET_CLASS |
997 | 778 |
</SECTION> |
998 | 779 | |
999 |
<SECTION> |
|
1000 |
<FILE>disco_remove_entry</FILE> |
|
1001 |
<TITLE>LassoDiscoRemoveEntry</TITLE> |
|
1002 |
LassoDiscoRemoveEntry |
|
1003 |
lasso_disco_remove_entry_new |
|
1004 |
<SUBSECTION Standard> |
|
1005 |
LASSO_DISCO_REMOVE_ENTRY |
|
1006 |
LASSO_IS_DISCO_REMOVE_ENTRY |
|
1007 |
LASSO_TYPE_DISCO_REMOVE_ENTRY |
|
1008 |
lasso_disco_remove_entry_get_type |
|
1009 |
LASSO_DISCO_REMOVE_ENTRY_CLASS |
|
1010 |
LASSO_IS_DISCO_REMOVE_ENTRY_CLASS |
|
1011 |
LASSO_DISCO_REMOVE_ENTRY_GET_CLASS |
|
1012 |
</SECTION> |
|
1013 | ||
1014 |
<SECTION> |
|
1015 |
<FILE>sec_resource_access_statement</FILE> |
|
1016 |
<TITLE>LassoSecResourceAccessStatement</TITLE> |
|
1017 |
LassoSecResourceAccessStatement |
|
1018 |
lasso_sec_resource_access_statement_new |
|
1019 |
<SUBSECTION Standard> |
|
1020 |
LASSO_SEC_RESOURCE_ACCESS_STATEMENT |
|
1021 |
LASSO_IS_SEC_RESOURCE_ACCESS_STATEMENT |
|
1022 |
LASSO_TYPE_SEC_RESOURCE_ACCESS_STATEMENT |
|
1023 |
lasso_sec_resource_access_statement_get_type |
|
1024 |
LASSO_SEC_RESOURCE_ACCESS_STATEMENT_CLASS |
|
1025 |
LASSO_IS_SEC_RESOURCE_ACCESS_STATEMENT_CLASS |
|
1026 |
LASSO_SEC_RESOURCE_ACCESS_STATEMENT_GET_CLASS |
|
1027 |
</SECTION> |
|
1028 | ||
1029 | 780 |
<SECTION> |
1030 | 781 |
<FILE>saml_subject_locality</FILE> |
1031 | 782 |
<TITLE>LassoSamlSubjectLocality</TITLE> |
... | ... | |
1101 | 852 |
LASSO_SAMLP_REQUEST_ABSTRACT_GET_CLASS |
1102 | 853 |
</SECTION> |
1103 | 854 | |
1104 |
<SECTION> |
|
1105 |
<FILE>disco_description</FILE> |
|
1106 |
<TITLE>LassoDiscoDescription</TITLE> |
|
1107 |
LassoDiscoDescription |
|
1108 |
lasso_disco_description_copy |
|
1109 |
lasso_disco_description_new |
|
1110 |
lasso_disco_description_new_with_WsdlRef |
|
1111 |
lasso_disco_description_new_with_BriefSoapHttpDescription |
|
1112 |
lasso_disco_description_has_saml_authentication |
|
1113 |
lasso_disco_description_has_x509_authentication |
|
1114 |
<SUBSECTION Standard> |
|
1115 |
LASSO_DISCO_DESCRIPTION |
|
1116 |
LASSO_IS_DISCO_DESCRIPTION |
|
1117 |
LASSO_TYPE_DISCO_DESCRIPTION |
|
1118 |
lasso_disco_description_get_type |
|
1119 |
LASSO_DISCO_DESCRIPTION_CLASS |
|
1120 |
LASSO_IS_DISCO_DESCRIPTION_CLASS |
|
1121 |
LASSO_DISCO_DESCRIPTION_GET_CLASS |
|
1122 |
</SECTION> |
|
1123 | ||
1124 |
<SECTION> |
|
1125 |
<FILE>sa_sasl_response</FILE> |
|
1126 |
<TITLE>LassoSaSASLResponse</TITLE> |
|
1127 |
LassoSaSASLResponse |
|
1128 |
lasso_sa_sasl_response_new |
|
1129 |
<SUBSECTION Standard> |
|
1130 |
LASSO_SA_SASL_RESPONSE |
|
1131 |
LASSO_IS_SA_SASL_RESPONSE |
|
1132 |
LASSO_TYPE_SA_SASL_RESPONSE |
|
1133 |
lasso_sa_sasl_response_get_type |
|
1134 |
LASSO_SA_SASL_RESPONSE_CLASS |
|
1135 |
LASSO_IS_SA_SASL_RESPONSE_CLASS |
|
1136 |
LASSO_SA_SASL_RESPONSE_GET_CLASS |
|
1137 |
</SECTION> |
|
1138 | ||
1139 | 855 |
<SECTION> |
1140 | 856 |
<FILE>saml_name_identifier</FILE> |
1141 | 857 |
<TITLE>LassoSamlNameIdentifier</TITLE> |
... | ... | |
1152 | 868 |
LASSO_SAML_NAME_IDENTIFIER_GET_CLASS |
1153 | 869 |
</SECTION> |
1154 | 870 | |
1155 |
<SECTION> |
|
1156 |
<FILE>dst_modification</FILE> |
|
1157 |
<TITLE>LassoDstModification</TITLE> |
|
1158 |
LassoDstModification |
|
1159 |
lasso_dst_modification_new |
|
1160 |
<SUBSECTION Standard> |
|
1161 |
LASSO_DST_MODIFICATION |
|
1162 |
LASSO_IS_DST_MODIFICATION |
|
1163 |
LASSO_TYPE_DST_MODIFICATION |
|
1164 |
lasso_dst_modification_get_type |
|
1165 |
LASSO_DST_MODIFICATION_CLASS |
|
1166 |
LASSO_IS_DST_MODIFICATION_CLASS |
|
1167 |
LASSO_DST_MODIFICATION_GET_CLASS |
|
1168 |
</SECTION> |
|
1169 | ||
1170 | 871 |
<SECTION> |
1171 | 872 |
<FILE>lib_idp_list</FILE> |
1172 | 873 |
<TITLE>LassoLibIDPList</TITLE> |
... | ... | |
1197 | 898 |
LASSO_LIB_AUTHN_CONTEXT_GET_CLASS |
1198 | 899 |
</SECTION> |
1199 | 900 | |
1200 |
<SECTION> |
|
1201 |
<FILE>dst_new_data</FILE> |
|
1202 |
<TITLE>LassoDstNewData</TITLE> |
|
1203 |
LassoDstNewData |
|
1204 |
lasso_dst_new_data_new |
|
1205 |
<SUBSECTION Standard> |
|
1206 |
LASSO_DST_NEW_DATA |
|
1207 |
LASSO_IS_DST_NEW_DATA |
|
1208 |
LASSO_TYPE_DST_NEW_DATA |
|
1209 |
lasso_dst_new_data_get_type |
|
1210 |
LASSO_DST_NEW_DATA_CLASS |
|
1211 |
LASSO_IS_DST_NEW_DATA_CLASS |
|
1212 |
LASSO_DST_NEW_DATA_GET_CLASS |
|
1213 |
</SECTION> |
|
1214 | ||
1215 | 901 |
<SECTION> |
1216 | 902 |
<FILE>lib_idp_entries</FILE> |
1217 | 903 |
<TITLE>LassoLibIDPEntries</TITLE> |
... | ... | |
1227 | 913 |
LASSO_LIB_IDP_ENTRIES_GET_CLASS |
1228 | 914 |
</SECTION> |
1229 | 915 | |
1230 |
<SECTION> |
|
1231 |
<FILE>is_help</FILE> |
|
1232 |
LASSO_IS_IS_HELP |
|
1233 |
<TITLE>LassoIsHelp</TITLE> |
|
1234 |
LassoIsHelp |
|
1235 |
lasso_is_help_new |
|
1236 |
<SUBSECTION Standard> |
|
1237 |
LASSO_IS_HELP |
|
1238 |
LASSO_TYPE_IS_HELP |
|
1239 |
lasso_is_help_get_type |
|
1240 |
LASSO_IS_HELP_CLASS |
|
1241 |
LASSO_IS_IS_HELP_CLASS |
|
1242 |
LASSO_IS_HELP_GET_CLASS |
|
1243 |
</SECTION> |
|
1244 | ||
1245 | 916 |
<SECTION> |
1246 | 917 |
<FILE>samlp_request</FILE> |
1247 | 918 |
<TITLE>LassoSamlpRequest</TITLE> |
... | ... | |
1385 | 1056 |
LASSO_SOAP_FAULT_GET_CLASS |
1386 | 1057 |
</SECTION> |
1387 | 1058 | |
1388 |
<SECTION> |
|
1389 |
<FILE>disco_options</FILE> |
|
1390 |
<TITLE>LassoDiscoOptions</TITLE> |
|
1391 |
LassoDiscoOptions |
|
1392 |
lasso_disco_options_new |
|
1393 |
<SUBSECTION Standard> |
|
1394 |
LASSO_DISCO_OPTIONS |
|
1395 |
LASSO_IS_DISCO_OPTIONS |
|
1396 |
LASSO_TYPE_DISCO_OPTIONS |
|
1397 |
lasso_disco_options_get_type |
|
1398 |
LASSO_DISCO_OPTIONS_CLASS |
|
1399 |
LASSO_IS_DISCO_OPTIONS_CLASS |
|
1400 |
LASSO_DISCO_OPTIONS_GET_CLASS |
|
1401 |
</SECTION> |
|
1402 | ||
1403 | 1059 |
<SECTION> |
1404 | 1060 |
<FILE>ds_key_value</FILE> |
1405 | 1061 |
<TITLE>LassoDsKeyValue</TITLE> |
... | ... | |
1430 | 1086 |
LASSO_LIB_SUBJECT_GET_CLASS |
1431 | 1087 |
</SECTION> |
1432 | 1088 | |
1433 |
<SECTION> |
|
1434 |
<FILE>disco_authorize_requester</FILE> |
|
1435 |
<TITLE>LassoDiscoAuthorizeRequester</TITLE> |
|
1436 |
LassoDiscoAuthorizeRequester |
|
1437 |
lasso_disco_authorize_requester_new |
|
1438 |
<SUBSECTION Standard> |
|
1439 |
LASSO_DISCO_AUTHORIZE_REQUESTER |
|
1440 |
LASSO_IS_DISCO_AUTHORIZE_REQUESTER |
|
1441 |
LASSO_TYPE_DISCO_AUTHORIZE_REQUESTER |
|
1442 |
lasso_disco_authorize_requester_get_type |
|
1443 |
LASSO_DISCO_AUTHORIZE_REQUESTER_CLASS |
|
1444 |
LASSO_IS_DISCO_AUTHORIZE_REQUESTER_CLASS |
|
1445 |
LASSO_DISCO_AUTHORIZE_REQUESTER_GET_CLASS |
|
1446 |
</SECTION> |
|
1447 | ||
1448 | 1089 |
<SECTION> |
1449 | 1090 |
<FILE>samlp_response</FILE> |
1450 | 1091 |
<TITLE>LassoSamlpResponse</TITLE> |
... | ... | |
1475 | 1116 |
LASSO_SAML_ATTRIBUTE_DESIGNATOR_GET_CLASS |
1476 | 1117 |
</SECTION> |
1477 | 1118 | |
1478 |
<SECTION> |
|
1479 |
<FILE>disco_requested_service_type</FILE> |
|
1480 |
<TITLE>LassoDiscoRequestedServiceType</TITLE> |
|
1481 |
LassoDiscoRequestedServiceType |
|
1482 |
lasso_disco_requested_service_type_new |
|
1483 |
<SUBSECTION Standard> |
|
1484 |
LASSO_DISCO_REQUESTED_SERVICE_TYPE |
|
1485 |
LASSO_IS_DISCO_REQUESTED_SERVICE_TYPE |
|
1486 |
LASSO_TYPE_DISCO_REQUESTED_SERVICE_TYPE |
|
1487 |
lasso_disco_requested_service_type_get_type |
|
1488 |
LASSO_DISCO_REQUESTED_SERVICE_TYPE_CLASS |
|
1489 |
LASSO_IS_DISCO_REQUESTED_SERVICE_TYPE_CLASS |
|
1490 |
LASSO_DISCO_REQUESTED_SERVICE_TYPE_GET_CLASS |
|
1491 |
</SECTION> |
|
1492 | ||
1493 | 1119 |
<SECTION> |
1494 | 1120 |
<FILE>saml_authority_binding</FILE> |
1495 | 1121 |
<TITLE>LassoSamlAuthorityBinding</TITLE> |
... | ... | |
1505 | 1131 |
LASSO_SAML_AUTHORITY_BINDING_GET_CLASS |
1506 | 1132 |
</SECTION> |
1507 | 1133 | |
1508 |
<SECTION> |
|
1509 |
<FILE>disco_send_single_logout</FILE> |
|
1510 |
<TITLE>LassoDiscoSendSingleLogout</TITLE> |
|
1511 |
LassoDiscoSendSingleLogout |
|
1512 |
lasso_disco_send_single_logout_new |
|
1513 |
<SUBSECTION Standard> |
|
1514 |
LASSO_DISCO_SEND_SINGLE_LOGOUT |
|
1515 |
LASSO_IS_DISCO_SEND_SINGLE_LOGOUT |
|
1516 |
LASSO_TYPE_DISCO_SEND_SINGLE_LOGOUT |
|
1517 |
lasso_disco_send_single_logout_get_type |
|
1518 |
LASSO_DISCO_SEND_SINGLE_LOGOUT_CLASS |
|
1519 |
LASSO_IS_DISCO_SEND_SINGLE_LOGOUT_CLASS |
|
1520 |
LASSO_DISCO_SEND_SINGLE_LOGOUT_GET_CLASS |
|
1521 |
</SECTION> |
|
1522 | ||
1523 | 1134 |
<SECTION> |
1524 | 1135 |
<FILE>lib_register_name_identifier_request</FILE> |
1525 | 1136 |
<TITLE>LassoLibRegisterNameIdentifierRequest</TITLE> |
... | ... | |
1550 | 1161 |
LASSO_SAML_SUBJECT_STATEMENT_ABSTRACT_GET_CLASS |
1551 | 1162 |
</SECTION> |
1552 | 1163 | |
1553 |
<SECTION> |
|
1554 |
<FILE>dst_query_response</FILE> |
|
1555 |
<TITLE>LassoDstQueryResponse</TITLE> |
|
1556 |
LassoDstQueryResponse |
|
1557 |
lasso_dst_query_response_new |
|
1558 |
<SUBSECTION Standard> |
|
1559 |
LASSO_DST_QUERY_RESPONSE |
|
1560 |
LASSO_IS_DST_QUERY_RESPONSE |
|
1561 |
LASSO_TYPE_DST_QUERY_RESPONSE |
|
1562 |
lasso_dst_query_response_get_type |
|
1563 |
LASSO_DST_QUERY_RESPONSE_CLASS |
|
1564 |
LASSO_IS_DST_QUERY_RESPONSE_CLASS |
|
1565 |
LASSO_DST_QUERY_RESPONSE_GET_CLASS |
|
1566 |
</SECTION> |
|
1567 | ||
1568 |
<SECTION> |
|
1569 |
<FILE>is_interaction_response</FILE> |
|
1570 |
LASSO_IS_IS_INTERACTION_RESPONSE |
|
1571 |
<TITLE>LassoIsInteractionResponse</TITLE> |
|
1572 |
LassoIsInteractionResponse |
|
1573 |
lasso_is_interaction_response_new |
|
1574 |
<SUBSECTION Standard> |
|
1575 |
LASSO_IS_INTERACTION_RESPONSE |
|
1576 |
LASSO_TYPE_IS_INTERACTION_RESPONSE |
|
1577 |
lasso_is_interaction_response_get_type |
|
1578 |
LASSO_IS_INTERACTION_RESPONSE_CLASS |
|
1579 |
LASSO_IS_IS_INTERACTION_RESPONSE_CLASS |
|
1580 |
LASSO_IS_INTERACTION_RESPONSE_GET_CLASS |
|
1581 |
</SECTION> |
|
1582 | ||
1583 |
<SECTION> |
|
1584 |
<FILE>dst_query_item</FILE> |
|
1585 |
<TITLE>LassoDstQueryItem</TITLE> |
|
1586 |
LassoDstQueryItem |
|
1587 |
lasso_dst_query_item_new |
|
1588 |
<SUBSECTION Standard> |
|
1589 |
LASSO_DST_QUERY_ITEM |
|
1590 |
LASSO_IS_DST_QUERY_ITEM |
|
1591 |
LASSO_TYPE_DST_QUERY_ITEM |
|
1592 |
lasso_dst_query_item_get_type |
|
1593 |
LASSO_DST_QUERY_ITEM_CLASS |
|
1594 |
LASSO_IS_DST_QUERY_ITEM_CLASS |
|
1595 |
LASSO_DST_QUERY_ITEM_GET_CLASS |
|
1596 |
</SECTION> |
|
1597 | ||
1598 |
<SECTION> |
|
1599 |
<FILE>disco_query</FILE> |
|
1600 |
<TITLE>LassoDiscoQuery</TITLE> |
|
1601 |
LassoDiscoQuery |
|
1602 |
lasso_disco_query_new |
|
1603 |
<SUBSECTION Standard> |
|
1604 |
LASSO_DISCO_QUERY |
|
1605 |
LASSO_IS_DISCO_QUERY |
|
1606 |
LASSO_TYPE_DISCO_QUERY |
|
1607 |
lasso_disco_query_get_type |
|
1608 |
LASSO_DISCO_QUERY_CLASS |
|
1609 |
LASSO_IS_DISCO_QUERY_CLASS |
|
1610 |
LASSO_DISCO_QUERY_GET_CLASS |
|
1611 |
</SECTION> |
|
1612 | ||
1613 | 1164 |
<SECTION> |
1614 | 1165 |
<FILE>lib_register_name_identifier_response</FILE> |
1615 | 1166 |
<TITLE>LassoLibRegisterNameIdentifierResponse</TITLE> |
... | ... | |
1626 | 1177 |
LASSO_LIB_REGISTER_NAME_IDENTIFIER_RESPONSE_GET_CLASS |
1627 | 1178 |
</SECTION> |
1628 | 1179 | |
1629 |
<SECTION> |
|
1630 |
<FILE>soap_binding_usage_directive</FILE> |
|
1631 |
<TITLE>LassoSoapBindingUsageDirective</TITLE> |
|
1632 |
LassoSoapBindingUsageDirective |
|
1633 |
lasso_soap_binding_usage_directive_new |
|
1634 |
<SUBSECTION Standard> |
|
1635 |
LASSO_SOAP_BINDING_USAGE_DIRECTIVE |
|
1636 |
LASSO_IS_SOAP_BINDING_USAGE_DIRECTIVE |
|
1637 |
LASSO_TYPE_SOAP_BINDING_USAGE_DIRECTIVE |
|
1638 |
lasso_soap_binding_usage_directive_get_type |
|
1639 |
LASSO_SOAP_BINDING_USAGE_DIRECTIVE_CLASS |
|
1640 |
LASSO_IS_SOAP_BINDING_USAGE_DIRECTIVE_CLASS |
|
1641 |
LASSO_SOAP_BINDING_USAGE_DIRECTIVE_GET_CLASS |
|
1642 |
</SECTION> |
|
1643 | ||
1644 |
<SECTION> |
|
1645 |
<FILE>sa_transform</FILE> |
|
1646 |
<TITLE>LassoSaTransform</TITLE> |
|
1647 |
LassoSaTransform |
|
1648 |
lasso_sa_transform_new |
|
1649 |
<SUBSECTION Standard> |
|
1650 |
LASSO_SA_TRANSFORM |
|
1651 |
LASSO_IS_SA_TRANSFORM |
|
1652 |
LASSO_TYPE_SA_TRANSFORM |
|
1653 |
lasso_sa_transform_get_type |
|
1654 |
LASSO_SA_TRANSFORM_CLASS |
|
1655 |
LASSO_IS_SA_TRANSFORM_CLASS |
|
1656 |
LASSO_SA_TRANSFORM_GET_CLASS |
|
1657 |
</SECTION> |
|
1658 | ||
1659 | 1180 |
<SECTION> |
1660 | 1181 |
<FILE>lib_name_identifier_mapping_request</FILE> |
1661 | 1182 |
<TITLE>LassoLibNameIdentifierMappingRequest</TITLE> |
... | ... | |
1717 | 1238 |
LASSO_LIB_AUTHN_RESPONSE_ENVELOPE_GET_CLASS |
1718 | 1239 |
</SECTION> |
1719 | 1240 | |
1720 |
<SECTION> |
|
1721 |
<FILE>is_parameter</FILE> |
|
1722 |
LASSO_IS_IS_PARAMETER |
|
1723 |
<TITLE>LassoIsParameter</TITLE> |
|
1724 |
LassoIsParameter |
|
1725 |
lasso_is_parameter_new |
|
1726 |
<SUBSECTION Standard> |
|
1727 |
LASSO_IS_PARAMETER |
|
1728 |
LASSO_TYPE_IS_PARAMETER |
|
1729 |
lasso_is_parameter_get_type |
|
1730 |
LASSO_IS_PARAMETER_CLASS |
|
1731 |
LASSO_IS_IS_PARAMETER_CLASS |
|
1732 |
LASSO_IS_PARAMETER_GET_CLASS |
|
1733 |
</SECTION> |
|
1734 | ||
1735 | 1241 |
<SECTION> |
1736 | 1242 |
<FILE>saml_statement_abstract</FILE> |
1737 | 1243 |
<TITLE>LassoSamlStatementAbstract</TITLE> |
... | ... | |
1746 | 1252 |
LASSO_SAML_STATEMENT_ABSTRACT_GET_CLASS |
1747 | 1253 |
</SECTION> |
1748 | 1254 | |
1749 |
<SECTION> |
|
1750 |
<FILE>disco_resource_offering</FILE> |
|
1751 |
<TITLE>LassoDiscoResourceOffering</TITLE> |
|
1752 |
LassoDiscoResourceOffering |
|
1753 |
lasso_disco_resource_offering_new |
|
1754 |
<SUBSECTION Standard> |
|
1755 |
LASSO_DISCO_RESOURCE_OFFERING |
|
1756 |
LASSO_IS_DISCO_RESOURCE_OFFERING |
|
1757 |
LASSO_TYPE_DISCO_RESOURCE_OFFERING |
|
1758 |
lasso_disco_resource_offering_get_type |
|
1759 |
LASSO_DISCO_RESOURCE_OFFERING_CLASS |
|
1760 |
LASSO_IS_DISCO_RESOURCE_OFFERING_CLASS |
|
1761 |
LASSO_DISCO_RESOURCE_OFFERING_GET_CLASS |
|
1762 |
</SECTION> |
|
1763 | ||
1764 |
<SECTION> |
|
1765 |
<FILE>soap_binding_correlation</FILE> |
|
1766 |
<TITLE>LassoSoapBindingCorrelation</TITLE> |
|
1767 |
LassoSoapBindingCorrelation |
|
1768 |
lasso_soap_binding_correlation_new |
|
1769 |
<SUBSECTION Standard> |
|
1770 |
LASSO_SOAP_BINDING_CORRELATION |
|
1771 |
LASSO_IS_SOAP_BINDING_CORRELATION |
|
1772 |
LASSO_TYPE_SOAP_BINDING_CORRELATION |
|
1773 |
lasso_soap_binding_correlation_get_type |
|
1774 |
LASSO_SOAP_BINDING_CORRELATION_CLASS |
|
1775 |
LASSO_IS_SOAP_BINDING_CORRELATION_CLASS |
|
1776 |
LASSO_SOAP_BINDING_CORRELATION_GET_CLASS |
|
1777 |
</SECTION> |
|
1778 | ||
1779 |
<SECTION> |
|
1780 |
<FILE>disco_service_instance</FILE> |
|
1781 |
<TITLE>LassoDiscoServiceInstance</TITLE> |
|
1782 |
LassoDiscoServiceInstance |
|
1783 |
lasso_disco_service_instance_copy |
|
1784 |
lasso_disco_service_instance_new |
|
1785 |
<SUBSECTION Standard> |
|
1786 |
LASSO_DISCO_SERVICE_INSTANCE |
|
1787 |
LASSO_IS_DISCO_SERVICE_INSTANCE |
|
1788 |
LASSO_TYPE_DISCO_SERVICE_INSTANCE |
|
1789 |
lasso_disco_service_instance_get_type |
|
1790 |
LASSO_DISCO_SERVICE_INSTANCE_CLASS |
|
1791 |
LASSO_IS_DISCO_SERVICE_INSTANCE_CLASS |
|
1792 |
LASSO_DISCO_SERVICE_INSTANCE_GET_CLASS |
|
1793 |
</SECTION> |
|
1794 | ||
1795 |
<SECTION> |
|
1796 |
<FILE>sa_parameter</FILE> |
|
1797 |
<TITLE>LassoSaParameter</TITLE> |
|
1798 |
LassoSaParameter |
|
1799 |
lasso_sa_parameter_new |
|
1800 |
<SUBSECTION Standard> |
|
1801 |
LASSO_SA_PARAMETER |
|
1802 |
LASSO_IS_SA_PARAMETER |
|
1803 |
LASSO_TYPE_SA_PARAMETER |
|
1804 |
lasso_sa_parameter_get_type |
|
1805 |
LASSO_SA_PARAMETER_CLASS |
|
1806 |
LASSO_IS_SA_PARAMETER_CLASS |
|
1807 |
LASSO_SA_PARAMETER_GET_CLASS |
|
1808 |
</SECTION> |
|
1809 | ||
1810 |
<SECTION> |
|
1811 |
<FILE>disco_resource_id</FILE> |
|
1812 |
<TITLE>LassoDiscoResourceID</TITLE> |
|
1813 |
LassoDiscoResourceID |
|
1814 |
lasso_disco_resource_id_new |
|
1815 |
<SUBSECTION Standard> |
|
1816 |
LASSO_DISCO_RESOURCE_ID |
|
1817 |
LASSO_IS_DISCO_RESOURCE_ID |
|
1818 |
LASSO_TYPE_DISCO_RESOURCE_ID |
|
1819 |
lasso_disco_resource_id_get_type |
|
1820 |
LASSO_DISCO_RESOURCE_ID_CLASS |
|
1821 |
LASSO_IS_DISCO_RESOURCE_ID_CLASS |
|
1822 |
LASSO_DISCO_RESOURCE_ID_GET_CLASS |
|
1823 |
</SECTION> |
|
1824 | ||
1825 | 1255 |
<SECTION> |
1826 | 1256 |
<FILE>soap_header</FILE> |
1827 | 1257 |
<TITLE>LassoSoapHeader</TITLE> |
... | ... | |
1838 | 1268 |
LASSO_SOAP_HEADER_GET_CLASS |
1839 | 1269 |
</SECTION> |
1840 | 1270 | |
1841 |
<SECTION> |
|
1842 |
<FILE>is_user_interaction</FILE> |
|
1843 |
LASSO_IS_IS_USER_INTERACTION |
|
1844 |
<TITLE>LassoIsUserInteraction</TITLE> |
|
1845 |
LassoIsUserInteraction |
|
1846 |
lasso_is_user_interaction_new |
|
1847 |
<SUBSECTION Standard> |
|
1848 |
LASSO_IS_USER_INTERACTION |
|
1849 |
LASSO_TYPE_IS_USER_INTERACTION |
|
1850 |
lasso_is_user_interaction_get_type |
|
1851 |
LASSO_IS_USER_INTERACTION_CLASS |
|
1852 |
LASSO_IS_IS_USER_INTERACTION_CLASS |
|
1853 |
LASSO_IS_USER_INTERACTION_GET_CLASS |
|
1854 |
</SECTION> |
|
1855 | ||
1856 |
<SECTION> |
|
1857 |
<FILE>disco_query_response</FILE> |
|
1858 |
<TITLE>LassoDiscoQueryResponse</TITLE> |
|
1859 |
LassoDiscoQueryResponse |
|
1860 |
lasso_disco_query_response_new |
|
1861 |
<SUBSECTION Standard> |
|
1862 |
LASSO_DISCO_QUERY_RESPONSE |
|
1863 |
LASSO_IS_DISCO_QUERY_RESPONSE |
|
1864 |
LASSO_TYPE_DISCO_QUERY_RESPONSE |
|
1865 |
lasso_disco_query_response_get_type |
|
1866 |
LASSO_DISCO_QUERY_RESPONSE_CLASS |
|
1867 |
LASSO_IS_DISCO_QUERY_RESPONSE_CLASS |
|
1868 |
LASSO_DISCO_QUERY_RESPONSE_GET_CLASS |
|
1869 |
</SECTION> |
|
1870 | ||
1871 |
<SECTION> |
|
1872 |
<FILE>disco_encrypted_resource_id</FILE> |
|
1873 |
<TITLE>LassoDiscoEncryptedResourceID</TITLE> |
|
1874 |
LassoDiscoEncryptedResourceID |
|
1875 |
lasso_disco_encrypted_resource_id_new |
|
1876 |
<SUBSECTION Standard> |
|
1877 |
LASSO_DISCO_ENCRYPTED_RESOURCE_ID |
|
1878 |
LASSO_IS_DISCO_ENCRYPTED_RESOURCE_ID |
|
1879 |
LASSO_TYPE_DISCO_ENCRYPTED_RESOURCE_ID |
|
1880 |
lasso_disco_encrypted_resource_id_get_type |
|
1881 |
LASSO_DISCO_ENCRYPTED_RESOURCE_ID_CLASS |
|
1882 |
LASSO_IS_DISCO_ENCRYPTED_RESOURCE_ID_CLASS |
|
1883 |
LASSO_DISCO_ENCRYPTED_RESOURCE_ID_GET_CLASS |
|
1884 |
</SECTION> |
|
1885 | ||
1886 | 1271 |
<SECTION> |
1887 | 1272 |
<FILE>lib_logout_request</FILE> |
1888 | 1273 |
<TITLE>LassoLibLogoutRequest</TITLE> |
... | ... | |
1899 | 1284 |
LASSO_LIB_LOGOUT_REQUEST_GET_CLASS |
1900 | 1285 |
</SECTION> |
1901 | 1286 | |
1902 |
<SECTION> |
|
1903 |
<FILE>soap_binding_ext_credentials_context</FILE> |
|
1904 |
<TITLE>LassoSoapBindingExtCredentialsContext</TITLE> |
|
1905 |
LassoSoapBindingExtCredentialsContext |
|
1906 |
lasso_soap_binding_ext_credentials_context_new |
|
1907 |
<SUBSECTION Standard> |
|
1908 |
LASSO_SOAP_BINDING_EXT_CREDENTIALS_CONTEXT |
|
1909 |
LASSO_IS_SOAP_BINDING_EXT_CREDENTIALS_CONTEXT |
|
1910 |
LASSO_TYPE_SOAP_BINDING_EXT_CREDENTIALS_CONTEXT |
|
1911 |
lasso_soap_binding_ext_credentials_context_get_type |
|
1912 |
LASSO_SOAP_BINDING_EXT_CREDENTIALS_CONTEXT_CLASS |
|
1913 |
LASSO_IS_SOAP_BINDING_EXT_CREDENTIALS_CONTEXT_CLASS |
|
1914 |
LASSO_SOAP_BINDING_EXT_CREDENTIALS_CONTEXT_GET_CLASS |
|
1915 |
</SECTION> |
|
1916 | ||
1917 | 1287 |
<SECTION> |
1918 | 1288 |
<FILE>misc_text_node</FILE> |
1919 | 1289 |
<TITLE>LassoMiscTextNode</TITLE> |
... | ... | |
1933 | 1303 |
LASSO_MISC_TEXT_NODE_GET_CLASS |
1934 | 1304 |
</SECTION> |
1935 | 1305 | |
1936 |
<SECTION> |
|
1937 |
<FILE>disco_generate_bearer_token</FILE> |
|
1938 |
<TITLE>LassoDiscoGenerateBearerToken</TITLE> |
|
1939 |
LassoDiscoGenerateBearerToken |
|
1940 |
lasso_disco_generate_bearer_token_new |
|
1941 |
<SUBSECTION Standard> |
|
1942 |
LASSO_DISCO_GENERATE_BEARER_TOKEN |
|
1943 |
LASSO_IS_DISCO_GENERATE_BEARER_TOKEN |
|
1944 |
LASSO_TYPE_DISCO_GENERATE_BEARER_TOKEN |
|
1945 |
lasso_disco_generate_bearer_token_get_type |
|
1946 |
LASSO_DISCO_GENERATE_BEARER_TOKEN_CLASS |
|
1947 |
LASSO_IS_DISCO_GENERATE_BEARER_TOKEN_CLASS |
|
1948 |
LASSO_DISCO_GENERATE_BEARER_TOKEN_GET_CLASS |
|
1949 |
</SECTION> |
|
1950 | ||
1951 | 1306 |
<SECTION> |
1952 | 1307 |
<FILE>saml_subject_confirmation</FILE> |
1953 | 1308 |
<TITLE>LassoSamlSubjectConfirmation</TITLE> |
... | ... | |
1978 | 1333 |
LASSO_SAMLP_STATUS_GET_CLASS |
1979 | 1334 |
</SECTION> |
1980 | 1335 | |
1981 |
<SECTION> |
|
1982 |
<FILE>disco_modify_response</FILE> |
|
1983 |
<TITLE>LassoDiscoModifyResponse</TITLE> |
|
1984 |
LassoDiscoModifyResponse |
|
1985 |
lasso_disco_modify_response_new |
|
1986 |
<SUBSECTION Standard> |
|
1987 |
LASSO_DISCO_MODIFY_RESPONSE |
|
1988 |
LASSO_IS_DISCO_MODIFY_RESPONSE |
|
1989 |
LASSO_TYPE_DISCO_MODIFY_RESPONSE |
|
1990 |
lasso_disco_modify_response_get_type |
|
1991 |
LASSO_DISCO_MODIFY_RESPONSE_CLASS |
|
1992 |
LASSO_IS_DISCO_MODIFY_RESPONSE_CLASS |
|
1993 |
LASSO_DISCO_MODIFY_RESPONSE_GET_CLASS |
|
1994 |
</SECTION> |
|
1995 | ||
1996 |
<SECTION> |
|
1997 |
<FILE>soap_binding_provider</FILE> |
|
1998 |
<TITLE>LassoSoapBindingProvider</TITLE> |
|
1999 |
LassoSoapBindingProvider |
|
2000 |
lasso_soap_binding_provider_new |
|
2001 |
<SUBSECTION Standard> |
|
2002 |
LASSO_SOAP_BINDING_PROVIDER |
|
2003 |
LASSO_IS_SOAP_BINDING_PROVIDER |
|
2004 |
LASSO_TYPE_SOAP_BINDING_PROVIDER |
|
2005 |
lasso_soap_binding_provider_get_type |
|
2006 |
LASSO_SOAP_BINDING_PROVIDER_CLASS |
|
2007 |
LASSO_IS_SOAP_BINDING_PROVIDER_CLASS |
|
2008 |
LASSO_SOAP_BINDING_PROVIDER_GET_CLASS |
|
2009 |
</SECTION> |
|
2010 | ||
2011 | 1336 |
<SECTION> |
2012 | 1337 |
<FILE>saml_condition_abstract</FILE> |
2013 | 1338 |
<TITLE>LassoSamlConditionAbstract</TITLE> |
... | ... | |
2022 | 1347 |
LASSO_SAML_CONDITION_ABSTRACT_GET_CLASS |
2023 | 1348 |
</SECTION> |
2024 | 1349 | |
2025 |
<SECTION> |
|
2026 |
<FILE>soap_binding_consent</FILE> |
|
2027 |
<TITLE>LassoSoapBindingConsent</TITLE> |
|
2028 |
LassoSoapBindingConsent |
|
2029 |
lasso_soap_binding_consent_new |
|
2030 |
<SUBSECTION Standard> |
|
2031 |
LASSO_SOAP_BINDING_CONSENT |
|
2032 |
LASSO_IS_SOAP_BINDING_CONSENT |
|
2033 |
LASSO_TYPE_SOAP_BINDING_CONSENT |
|
2034 |
lasso_soap_binding_consent_get_type |
|
2035 |
LASSO_SOAP_BINDING_CONSENT_CLASS |
|
2036 |
LASSO_IS_SOAP_BINDING_CONSENT_CLASS |
|
2037 |
LASSO_SOAP_BINDING_CONSENT_GET_CLASS |
|
2038 |
</SECTION> |
|
2039 | ||
2040 | 1350 |
<SECTION> |
2041 | 1351 |
<FILE>soap_body</FILE> |
2042 | 1352 |
<TITLE>LassoSoapBody</TITLE> |
... | ... | |
2053 | 1363 |
LASSO_SOAP_BODY_GET_CLASS |
2054 | 1364 |
</SECTION> |
2055 | 1365 | |
2056 |
<SECTION> |
|
2057 |
<FILE>is_text</FILE> |
|
2058 |
LASSO_IS_IS_TEXT |
|
2059 |
<TITLE>LassoIsText</TITLE> |
|
2060 |
LassoIsText |
|
2061 |
lasso_is_text_new |
|
2062 |
<SUBSECTION Standard> |
|
2063 |
LASSO_IS_TEXT |
|
2064 |
LASSO_TYPE_IS_TEXT |
|
2065 |
lasso_is_text_get_type |
|
2066 |
LASSO_IS_TEXT_CLASS |
|
2067 |
LASSO_IS_IS_TEXT_CLASS |
|
2068 |
LASSO_IS_TEXT_GET_CLASS |
|
2069 |
</SECTION> |
|
2070 | ||
2071 | 1366 |
<SECTION> |
2072 | 1367 |
<FILE>saml_subject</FILE> |
2073 | 1368 |
<TITLE>LassoSamlSubject</TITLE> |
... | ... | |
2083 | 1378 |
LASSO_SAML_SUBJECT_GET_CLASS |
2084 | 1379 |
</SECTION> |
2085 | 1380 | |
2086 |
<SECTION> |
|
2087 |
<FILE>is_interaction_statement</FILE> |
|
2088 |
LASSO_IS_IS_INTERACTION_STATEMENT |
|
2089 |
<TITLE>LassoIsInteractionStatement</TITLE> |
|
2090 |
LassoIsInteractionStatement |
|
2091 |
lasso_is_interaction_statement_new |
|
2092 |
<SUBSECTION Standard> |
|
2093 |
LASSO_IS_INTERACTION_STATEMENT |
|
2094 |
LASSO_TYPE_IS_INTERACTION_STATEMENT |
|
2095 |
lasso_is_interaction_statement_get_type |
|
2096 |
LASSO_IS_INTERACTION_STATEMENT_CLASS |
|
2097 |
LASSO_IS_IS_INTERACTION_STATEMENT_CLASS |
|
2098 |
LASSO_IS_INTERACTION_STATEMENT_GET_CLASS |
|
2099 |
</SECTION> |
|
2100 | ||
2101 |
<SECTION> |
|
2102 |
<FILE>sa_password_transforms</FILE> |
|
2103 |
<TITLE>LassoSaPasswordTransforms</TITLE> |
|
2104 |
LassoSaPasswordTransforms |
|
2105 |
lasso_sa_password_transforms_new |
|
2106 |
<SUBSECTION Standard> |
|
2107 |
LASSO_SA_PASSWORD_TRANSFORMS |
|
2108 |
LASSO_IS_SA_PASSWORD_TRANSFORMS |
|
2109 |
LASSO_TYPE_SA_PASSWORD_TRANSFORMS |
|
2110 |
lasso_sa_password_transforms_get_type |
|
2111 |
LASSO_SA_PASSWORD_TRANSFORMS_CLASS |
|
2112 |
LASSO_IS_SA_PASSWORD_TRANSFORMS_CLASS |
|
2113 |
LASSO_SA_PASSWORD_TRANSFORMS_GET_CLASS |
|
2114 |
</SECTION> |
|
2115 | ||
2116 | 1381 |
<SECTION> |
2117 | 1382 |
<FILE>lib_scoping</FILE> |
2118 | 1383 |
<TITLE>LassoLibScoping</TITLE> |
... | ... | |
2128 | 1393 |
LASSO_LIB_SCOPING_GET_CLASS |
2129 | 1394 |
</SECTION> |
2130 | 1395 | |
2131 |
<SECTION> |
|
2132 |
<FILE>disco_insert_entry</FILE> |
|
2133 |
<TITLE>LassoDiscoInsertEntry</TITLE> |
|
2134 |
LassoDiscoInsertEntry |
|
2135 |
lasso_disco_insert_entry_new |
|
2136 |
<SUBSECTION Standard> |
|
2137 |
LASSO_DISCO_INSERT_ENTRY |
|
2138 |
LASSO_IS_DISCO_INSERT_ENTRY |
|
2139 |
LASSO_TYPE_DISCO_INSERT_ENTRY |
|
2140 |
lasso_disco_insert_entry_get_type |
|
2141 |
LASSO_DISCO_INSERT_ENTRY_CLASS |
|
2142 |
LASSO_IS_DISCO_INSERT_ENTRY_CLASS |
|
2143 |
LASSO_DISCO_INSERT_ENTRY_GET_CLASS |
|
2144 |
</SECTION> |
|
2145 | ||
2146 |
<SECTION> |
|
2147 |
<FILE>sa_credentials</FILE> |
|
2148 |
<TITLE>LassoSaCredentials</TITLE> |
|
2149 |
LassoSaCredentials |
|
2150 |
lasso_sa_credentials_new |
|
2151 |
<SUBSECTION Standard> |
|
2152 |
LASSO_SA_CREDENTIALS |
|
2153 |
LASSO_IS_SA_CREDENTIALS |
|
2154 |
LASSO_TYPE_SA_CREDENTIALS |
|
2155 |
lasso_sa_credentials_get_type |
|
2156 |
LASSO_SA_CREDENTIALS_CLASS |
|
2157 |
LASSO_IS_SA_CREDENTIALS_CLASS |
|
2158 |
LASSO_SA_CREDENTIALS_GET_CLASS |
|
2159 |
</SECTION> |
|
2160 | ||
2161 |
<SECTION> |
|
2162 |
<FILE>is_select</FILE> |
|
2163 |
LASSO_IS_IS_SELECT |
|
2164 |
<TITLE>LassoIsSelect</TITLE> |
|
2165 |
LassoIsSelect |
|
2166 |
lasso_is_select_new |
|
2167 |
<SUBSECTION Standard> |
|
2168 |
LASSO_IS_SELECT |
|
2169 |
LASSO_TYPE_IS_SELECT |
|
2170 |
lasso_is_select_get_type |
|
2171 |
LASSO_IS_SELECT_CLASS |
|
2172 |
LASSO_IS_IS_SELECT_CLASS |
|
2173 |
LASSO_IS_SELECT_GET_CLASS |
|
2174 |
</SECTION> |
|
2175 | ||
2176 | 1396 |
<SECTION> |
2177 | 1397 |
<FILE>lib_authn_request</FILE> |
2178 | 1398 |
<TITLE>LassoLibAuthnRequest</TITLE> |
... | ... | |
2188 | 1408 |
LASSO_LIB_AUTHN_REQUEST_GET_CLASS |
2189 | 1409 |
</SECTION> |
2190 | 1410 | |
2191 |
<SECTION> |
|
2192 |
<FILE>disco_authenticate_session_context</FILE> |
|
2193 |
<TITLE>LassoDiscoAuthenticateSessionContext</TITLE> |
|
2194 |
LassoDiscoAuthenticateSessionContext |
|
2195 |
lasso_disco_authenticate_session_context_new |
|
2196 |
<SUBSECTION Standard> |
|
2197 |
LASSO_DISCO_AUTHENTICATE_SESSION_CONTEXT |
|
2198 |
LASSO_IS_DISCO_AUTHENTICATE_SESSION_CONTEXT |
|
2199 |
LASSO_TYPE_DISCO_AUTHENTICATE_SESSION_CONTEXT |
|
2200 |
lasso_disco_authenticate_session_context_get_type |
|
2201 |
LASSO_DISCO_AUTHENTICATE_SESSION_CONTEXT_CLASS |
|
2202 |
LASSO_IS_DISCO_AUTHENTICATE_SESSION_CONTEXT_CLASS |
|
2203 |
LASSO_DISCO_AUTHENTICATE_SESSION_CONTEXT_GET_CLASS |
|
2204 |
</SECTION> |
|
2205 | ||
2206 |
<SECTION> |
|
2207 |
<FILE>disco_encrypt_resource_id</FILE> |
|
2208 |
<TITLE>LassoDiscoEncryptResourceID</TITLE> |
|
2209 |
LassoDiscoEncryptResourceID |
|
2210 |
lasso_disco_encrypt_resource_id_new |
|
2211 |
<SUBSECTION Standard> |
|
2212 |
LASSO_DISCO_ENCRYPT_RESOURCE_ID |
|
2213 |
LASSO_IS_DISCO_ENCRYPT_RESOURCE_ID |
|
2214 |
LASSO_TYPE_DISCO_ENCRYPT_RESOURCE_ID |
|
2215 |
lasso_disco_encrypt_resource_id_get_type |
|
2216 |
LASSO_DISCO_ENCRYPT_RESOURCE_ID_CLASS |
|
2217 |
LASSO_IS_DISCO_ENCRYPT_RESOURCE_ID_CLASS |
|
2218 |
LASSO_DISCO_ENCRYPT_RESOURCE_ID_GET_CLASS |
|
2219 |
</SECTION> |
|
2220 | ||
2221 | 1411 |
<SECTION> |
2222 | 1412 |
<FILE>saml_attribute</FILE> |
2223 | 1413 |
<TITLE>LassoSamlAttribute</TITLE> |
... | ... | |
2233 | 1423 |
LASSO_SAML_ATTRIBUTE_GET_CLASS |
2234 | 1424 |
</SECTION> |
2235 | 1425 | |
2236 |
<SECTION> |
|
2237 |
<FILE>is_redirect_request</FILE> |
|
2238 |
LASSO_IS_IS_REDIRECT_REQUEST |
|
2239 |
<TITLE>LassoIsRedirectRequest</TITLE> |
|
2240 |
LassoIsRedirectRequest |
|
2241 |
lasso_is_redirect_request_new |
|
2242 |
<SUBSECTION Standard> |
|
2243 |
LASSO_IS_REDIRECT_REQUEST |
|
2244 |
LASSO_TYPE_IS_REDIRECT_REQUEST |
|
2245 |
lasso_is_redirect_request_get_type |
|
2246 |
LASSO_IS_REDIRECT_REQUEST_CLASS |
|
2247 |
LASSO_IS_IS_REDIRECT_REQUEST_CLASS |
|
2248 |
LASSO_IS_REDIRECT_REQUEST_GET_CLASS |
|
2249 |
</SECTION> |
|
2250 | ||
2251 |
<SECTION> |
|
2252 |
<FILE>soap_binding_ext_credential</FILE> |
|
2253 |
<TITLE>LassoSoapBindingExtCredential</TITLE> |
|
2254 |
LassoSoapBindingExtCredential |
|
2255 |
lasso_soap_binding_ext_credential_new |
|
2256 |
<SUBSECTION Standard> |
|
2257 |
LASSO_SOAP_BINDING_EXT_CREDENTIAL |
|
2258 |
LASSO_IS_SOAP_BINDING_EXT_CREDENTIAL |
|
2259 |
LASSO_TYPE_SOAP_BINDING_EXT_CREDENTIAL |
|
2260 |
lasso_soap_binding_ext_credential_get_type |
|
2261 |
LASSO_SOAP_BINDING_EXT_CREDENTIAL_CLASS |
|
2262 |
LASSO_IS_SOAP_BINDING_EXT_CREDENTIAL_CLASS |
|
2263 |
LASSO_SOAP_BINDING_EXT_CREDENTIAL_GET_CLASS |
|
2264 |
</SECTION> |
|
2265 | ||
2266 | 1426 |
<SECTION> |
2267 | 1427 |
<FILE>saml_advice</FILE> |
2268 | 1428 |
<TITLE>LassoSamlAdvice</TITLE> |
... | ... | |
2293 | 1453 |
LASSO_SAML_AUTHENTICATION_STATEMENT_GET_CLASS |
2294 | 1454 |
</SECTION> |
2295 | 1455 | |
2296 |
<SECTION> |
|
2297 |
<FILE>is_inquiry_element</FILE> |
|
2298 |
LASSO_IS_IS_INQUIRY_ELEMENT |
|
2299 |
<TITLE>LassoIsInquiryElement</TITLE> |
|
2300 |
LassoIsInquiryElement |
|
2301 |
lasso_is_inquiry_element_new |
|
2302 |
<SUBSECTION Standard> |
|
2303 |
LASSO_IS_INQUIRY_ELEMENT |
|
2304 |
LASSO_TYPE_IS_INQUIRY_ELEMENT |
|
2305 |
lasso_is_inquiry_element_get_type |
|
2306 |
LASSO_IS_INQUIRY_ELEMENT_CLASS |
|
2307 |
LASSO_IS_IS_INQUIRY_ELEMENT_CLASS |
|
2308 |
LASSO_IS_INQUIRY_ELEMENT_GET_CLASS |
|
2309 |
</SECTION> |
|
2310 | ||
2311 |
<SECTION> |
|
2312 |
<FILE>dst_data</FILE> |
|
2313 |
<TITLE>LassoDstData</TITLE> |
|
2314 |
LassoDstData |
|
2315 |
lasso_dst_data_new |
|
2316 |
<SUBSECTION Standard> |
|
2317 |
LASSO_DST_DATA |
|
2318 |
LASSO_IS_DST_DATA |
|
2319 |
LASSO_TYPE_DST_DATA |
|
2320 |
lasso_dst_data_get_type |
|
2321 |
LASSO_DST_DATA_CLASS |
|
2322 |
LASSO_IS_DST_DATA_CLASS |
|
2323 |
LASSO_DST_DATA_GET_CLASS |
|
2324 |
</SECTION> |
|
2325 | ||
2326 | 1456 |
<SECTION> |
2327 | 1457 |
<FILE>saml_audience_restriction_condition</FILE> |
2328 | 1458 |
<TITLE>LassoSamlAudienceRestrictionCondition</TITLE> |
... | ... | |
2355 | 1485 |
LASSO_LIB_AUTHENTICATION_STATEMENT_GET_CLASS |
2356 | 1486 |
</SECTION> |
2357 | 1487 | |
2358 |
<SECTION> |
|
2359 |
<FILE>is_inquiry</FILE> |
|
2360 |
LASSO_IS_IS_INQUIRY |
|
2361 |
<TITLE>LassoIsInquiry</TITLE> |
|
2362 |
LassoIsInquiry |
|
2363 |
lasso_is_inquiry_new |
|
2364 |
<SUBSECTION Standard> |
|
2365 |
LASSO_IS_INQUIRY |
|
2366 |
LASSO_TYPE_IS_INQUIRY |
|
2367 |
lasso_is_inquiry_get_type |
|
2368 |
LASSO_IS_INQUIRY_CLASS |
|
2369 |
LASSO_IS_IS_INQUIRY_CLASS |
|
2370 |
LASSO_IS_INQUIRY_GET_CLASS |
|
2371 |
</SECTION> |
|
2372 | ||
2373 | 1488 |
<SECTION> |
2374 | 1489 |
<FILE>lib_authn_request_envelope</FILE> |
2375 | 1490 |
<TITLE>LassoLibAuthnRequestEnvelope</TITLE> |
... | ... | |
2386 | 1501 |
LASSO_LIB_AUTHN_REQUEST_ENVELOPE_GET_CLASS |
2387 | 1502 |
</SECTION> |
2388 | 1503 | |
2389 |
<SECTION> |
|
2390 |
<FILE>disco_credentials</FILE> |
|
2391 |
<TITLE>LassoDiscoCredentials</TITLE> |
|
2392 |
LassoDiscoCredentials |
|
2393 |
lasso_disco_credentials_new |
|
2394 |
<SUBSECTION Standard> |
|
2395 |
LASSO_DISCO_CREDENTIALS |
|
2396 |
LASSO_IS_DISCO_CREDENTIALS |
|
2397 |
LASSO_TYPE_DISCO_CREDENTIALS |
|
2398 |
lasso_disco_credentials_get_type |
|
2399 |
LASSO_DISCO_CREDENTIALS_CLASS |
|
2400 |
LASSO_IS_DISCO_CREDENTIALS_CLASS |
|
2401 |
LASSO_DISCO_CREDENTIALS_GET_CLASS |
|
2402 |
</SECTION> |
|
2403 | ||
2404 |
<SECTION> |
|
2405 |
<FILE>disco_authenticate_requester</FILE> |
|
2406 |
<TITLE>LassoDiscoAuthenticateRequester</TITLE> |
|
2407 |
LassoDiscoAuthenticateRequester |
|
2408 |
lasso_disco_authenticate_requester_new |
|
2409 |
<SUBSECTION Standard> |
|
2410 |
LASSO_DISCO_AUTHENTICATE_REQUESTER |
|
2411 |
LASSO_IS_DISCO_AUTHENTICATE_REQUESTER |
|
2412 |
LASSO_TYPE_DISCO_AUTHENTICATE_REQUESTER |
|
2413 |
lasso_disco_authenticate_requester_get_type |
|
2414 |
LASSO_DISCO_AUTHENTICATE_REQUESTER_CLASS |
|
2415 |
LASSO_IS_DISCO_AUTHENTICATE_REQUESTER_CLASS |
|
2416 |
LASSO_DISCO_AUTHENTICATE_REQUESTER_GET_CLASS |
|
2417 |
</SECTION> |
|
2418 | ||
2419 | 1504 |
<SECTION> |
2420 | 1505 |
<FILE>saml_attribute_statement</FILE> |
2421 | 1506 |
<TITLE>LassoSamlAttributeStatement</TITLE> |
... | ... | |
2446 | 1531 |
LASSO_SAMLP_STATUS_CODE_GET_CLASS |
2447 | 1532 |
</SECTION> |
2448 | 1533 | |
2449 |
<SECTION> |
|
2450 |
<FILE>utility_status</FILE> |
|
2451 |
<TITLE>LassoUtilityStatus</TITLE> |
|
2452 |
LassoUtilityStatus |
|
2453 |
lasso_utility_status_new |
|
2454 |
<SUBSECTION Standard> |
|
2455 |
LASSO_UTILITY_STATUS |
|
2456 |
LASSO_IS_UTILITY_STATUS |
|
2457 |
LASSO_TYPE_UTILITY_STATUS |
|
2458 |
lasso_utility_status_get_type |
|
2459 |
LASSO_UTILITY_STATUS_CLASS |
|
2460 |
LASSO_IS_UTILITY_STATUS_CLASS |
|
2461 |
LASSO_UTILITY_STATUS_GET_CLASS |
|
2462 |
</SECTION> |
|
2463 | ||
2464 | 1534 |
<SECTION> |
2465 | 1535 |
<FILE>soap_detail</FILE> |
2466 | 1536 |
<TITLE>LassoSoapDetail</TITLE> |
... | ... | |
2484 | 1554 |
lasso_soap_envelope_new |
2485 | 1555 |
lasso_soap_envelope_new_full |
2486 | 1556 |
lasso_soap_envelope_new_from_message |
2487 |
<SUBSECTION SoapBinding> |
|
2488 |
lasso_soap_envelope_add_action |
|
2489 |
lasso_soap_envelope_add_security_token |
|
2490 |
lasso_soap_envelope_add_to_body |
|
2491 |
lasso_soap_envelope_get_action |
|
2492 |
lasso_soap_envelope_get_body_content |
|
2493 |
lasso_soap_envelope_get_message_id |
|
2494 |
lasso_soap_envelope_get_relates_to |
|
2495 |
lasso_soap_envelope_get_saml2_security_token |
|
2496 |
lasso_soap_envelope_get_sb2_user_interaction_hint |
|
2497 |
lasso_soap_envelope_sb2_get_provider_id |
|
2498 |
lasso_soap_envelope_sb2_get_redirect_request_url |
|
2499 |
lasso_soap_envelope_sb2_get_target_identity_header |
|
2500 |
lasso_soap_envelope_set_sb2_user_interaction_hint |
|
2501 |
lasso_soap_envelope_wssec_get_security_header |
|
2502 |
lasso_soap_envelope_get_soap_fault |
|
2503 |
lasso_soap_envelope_set_relates_to |
|
2504 | 1557 |
<SUBSECTION Standard> |
2505 | 1558 |
LASSO_SOAP_ENVELOPE |
2506 | 1559 |
LASSO_IS_SOAP_ENVELOPE |
... | ... | |
2541 | 1594 |
LASSO_SAMLP_RESPONSE_ABSTRACT_GET_CLASS |
2542 | 1595 |
</SECTION> |
2543 | 1596 | |
2544 |
<SECTION> |
|
2545 |
<FILE>is_item</FILE> |
|
2546 |
LASSO_IS_IS_ITEM |
|
2547 |
<TITLE>LassoIsItem</TITLE> |
|
2548 |
LassoIsItem |
|
2549 |
lasso_is_item_new |
|
2550 |
<SUBSECTION Standard> |
|
2551 |
LASSO_IS_ITEM |
|
2552 |
LASSO_TYPE_IS_ITEM |
|
2553 |
lasso_is_item_get_type |
|
2554 |
LASSO_IS_ITEM_CLASS |
|
2555 |
LASSO_IS_IS_ITEM_CLASS |
|
2556 |
LASSO_IS_ITEM_GET_CLASS |
|
2557 |
</SECTION> |
|
2558 | ||
2559 |
<SECTION> |
|
2560 |
<FILE>is_interaction_request</FILE> |
|
2561 |
LASSO_IS_IS_INTERACTION_REQUEST |
|
2562 |
<TITLE>LassoIsInteractionRequest</TITLE> |
|
2563 |
LassoIsInteractionRequest |
|
2564 |
lasso_is_interaction_request_new |
|
2565 |
<SUBSECTION Standard> |
|
2566 |
LASSO_IS_INTERACTION_REQUEST |
|
2567 |
LASSO_TYPE_IS_INTERACTION_REQUEST |
|
2568 |
lasso_is_interaction_request_get_type |
|
2569 |
LASSO_IS_INTERACTION_REQUEST_CLASS |
|
2570 |
LASSO_IS_IS_INTERACTION_REQUEST_CLASS |
|
2571 |
LASSO_IS_INTERACTION_REQUEST_GET_CLASS |
|
2572 |
</SECTION> |
|
2573 | ||
2574 |
<SECTION> |
|
2575 |
<FILE>soap_binding_ext_service_instance_update</FILE> |
|
2576 |
<TITLE>LassoSoapBindingExtServiceInstanceUpdate</TITLE> |
|
2577 |
LassoSoapBindingExtServiceInstanceUpdate |
|
2578 |
lasso_soap_binding_ext_service_instance_update_new |
|
2579 |
<SUBSECTION Standard> |
|
2580 |
LASSO_SOAP_BINDING_EXT_SERVICE_INSTANCE_UPDATE |
|
2581 |
LASSO_IS_SOAP_BINDING_EXT_SERVICE_INSTANCE_UPDATE |
|
2582 |
LASSO_TYPE_SOAP_BINDING_EXT_SERVICE_INSTANCE_UPDATE |
|
2583 |
lasso_soap_binding_ext_service_instance_update_get_type |
|
2584 |
LASSO_SOAP_BINDING_EXT_SERVICE_INSTANCE_UPDATE_CLASS |
|
2585 |
LASSO_IS_SOAP_BINDING_EXT_SERVICE_INSTANCE_UPDATE_CLASS |
|
2586 |
LASSO_SOAP_BINDING_EXT_SERVICE_INSTANCE_UPDATE_GET_CLASS |
|
2587 |
</SECTION> |
|
2588 | ||
2589 |
<SECTION> |
|
2590 |
<FILE>soap_binding_processing_context</FILE> |
|
2591 |
<TITLE>LassoSoapBindingProcessingContext</TITLE> |
|
2592 |
LassoSoapBindingProcessingContext |
|
2593 |
lasso_soap_binding_processing_context_new |
|
2594 |
<SUBSECTION Standard> |
|
2595 |
LASSO_SOAP_BINDING_PROCESSING_CONTEXT |
|
2596 |
LASSO_IS_SOAP_BINDING_PROCESSING_CONTEXT |
|
2597 |
LASSO_TYPE_SOAP_BINDING_PROCESSING_CONTEXT |
|
2598 |
lasso_soap_binding_processing_context_get_type |
|
2599 |
LASSO_SOAP_BINDING_PROCESSING_CONTEXT_CLASS |
|
2600 |
LASSO_IS_SOAP_BINDING_PROCESSING_CONTEXT_CLASS |
|
2601 |
LASSO_SOAP_BINDING_PROCESSING_CONTEXT_GET_CLASS |
|
2602 |
</SECTION> |
|
2603 | ||
2604 |
<SECTION> |
|
2605 |
<FILE>soap_binding_ext_timeout</FILE> |
|
2606 |
<TITLE>LassoSoapBindingExtTimeout</TITLE> |
|
2607 |
LassoSoapBindingExtTimeout |
|
2608 |
lasso_soap_binding_ext_timeout_new |
|
2609 |
<SUBSECTION Standard> |
|
2610 |
LASSO_SOAP_BINDING_EXT_TIMEOUT |
|
2611 |
LASSO_IS_SOAP_BINDING_EXT_TIMEOUT |
|
2612 |
LASSO_TYPE_SOAP_BINDING_EXT_TIMEOUT |
|
2613 |
lasso_soap_binding_ext_timeout_get_type |
|
2614 |
LASSO_SOAP_BINDING_EXT_TIMEOUT_CLASS |
|
2615 |
LASSO_IS_SOAP_BINDING_EXT_TIMEOUT_CLASS |
|
2616 |
LASSO_SOAP_BINDING_EXT_TIMEOUT_GET_CLASS |
|
2617 |
</SECTION> |
|
2618 | ||
2619 | 1597 |
<SECTION> |
2620 | 1598 |
<FILE>lib_authn_response</FILE> |
2621 | 1599 |
<TITLE>LassoLibAuthnResponse</TITLE> |
... | ... | |
2646 | 1624 |
LASSO_SAML_ASSERTION_GET_CLASS |
2647 | 1625 |
</SECTION> |
2648 | 1626 | |
2649 |
<SECTION> |
|
2650 |
<FILE>dst_modify_response</FILE> |
|
2651 |
<TITLE>LassoDstModifyResponse</TITLE> |
|
2652 |
LassoDstModifyResponse |
|
2653 |
lasso_dst_modify_response_new |
|
2654 |
<SUBSECTION Standard> |
|
2655 |
LASSO_DST_MODIFY_RESPONSE |
|
2656 |
LASSO_IS_DST_MODIFY_RESPONSE |
|
2657 |
LASSO_TYPE_DST_MODIFY_RESPONSE |
|
2658 |
lasso_dst_modify_response_get_type |
|
2659 |
LASSO_DST_MODIFY_RESPONSE_CLASS |
|
2660 |
LASSO_IS_DST_MODIFY_RESPONSE_CLASS |
|
2661 |
LASSO_DST_MODIFY_RESPONSE_GET_CLASS |
|
2662 |
</SECTION> |
|
2663 | ||
2664 | 1627 |
<SECTION> |
2665 | 1628 |
<FILE>samlp2_artifact_response</FILE> |
2666 | 1629 |
<TITLE>LassoSamlp2ArtifactResponse</TITLE> |
... | ... | |
3462 | 2425 |
</SECTION> |
3463 | 2426 | |
3464 | 2427 |
<SECTION> |
3465 |
<FILE>wsse_security_header</FILE> |
|
3466 |
<TITLE>LassoWsSec1SecurityHeader</TITLE> |
|
3467 |
LassoWsSec1SecurityHeader |
|
3468 |
lasso_wsse_security_header_new |
|
3469 |
<SUBSECTION Standard> |
|
3470 |
LASSO_WSSE_SECURITY_HEADER |
|
3471 |
LASSO_IS_WSSE_SECURITY_HEADER |
|
3472 |
LASSO_TYPE_WSSE_SECURITY_HEADER |
|
3473 |
lasso_wsse_security_header_get_type |
|
3474 |
LASSO_WSSE_SECURITY_HEADER_CLASS |
|
3475 |
LASSO_IS_WSSE_SECURITY_HEADER_CLASS |
|
3476 |
LASSO_WSSE_SECURITY_HEADER_GET_CLASS |
|
3477 |
</SECTION> |
|
3478 | ||
3479 |
<SECTION> |
|
3480 |
<FILE>wsse_transformation_parameters</FILE> |
|
3481 |
<TITLE>LassoWsSec1TransformationParameters</TITLE> |
|
3482 |
LassoWsSec1TransformationParameters |
|
3483 |
lasso_wsse_transformation_parameters_new |
|
3484 |
<SUBSECTION Standard> |
|
3485 |
LASSO_WSSE_TRANSFORMATION_PARAMETERS |
|
3486 |
LASSO_IS_WSSE_TRANSFORMATION_PARAMETERS |
|
3487 |
LASSO_TYPE_WSSE_TRANSFORMATION_PARAMETERS |
|
3488 |
lasso_wsse_transformation_parameters_get_type |
|
3489 |
LASSO_WSSE_TRANSFORMATION_PARAMETERS_CLASS |
|
3490 |
LASSO_IS_WSSE_TRANSFORMATION_PARAMETERS_CLASS |
|
3491 |
LASSO_WSSE_TRANSFORMATION_PARAMETERS_GET_CLASS |
|
3492 |
</SECTION> |
|
3493 | ||
3494 |
<SECTION> |
|
3495 |
<FILE>wsa_problem_action</FILE> |
|
3496 |
<TITLE>LassoWsAddrProblemAction</TITLE> |
|
3497 |
LassoWsAddrProblemAction |
|
3498 |
lasso_wsa_problem_action_new |
|
3499 |
<SUBSECTION Standard> |
|
3500 |
LASSO_WSA_PROBLEM_ACTION |
|
3501 |
LASSO_IS_WSA_PROBLEM_ACTION |
|
3502 |
LASSO_TYPE_WSA_PROBLEM_ACTION |
|
3503 |
lasso_wsa_problem_action_get_type |
|
3504 |
LASSO_WSA_PROBLEM_ACTION_CLASS |
|
3505 |
LASSO_IS_WSA_PROBLEM_ACTION_CLASS |
|
3506 |
LASSO_WSA_PROBLEM_ACTION_GET_CLASS |
|
3507 |
</SECTION> |
|
3508 | ||
3509 |
<SECTION> |
|
3510 |
<FILE>wsa_attributed_any</FILE> |
|
3511 |
<TITLE>LassoWsAddrAttributedAny</TITLE> |
|
3512 |
LassoWsAddrAttributedAny |
|
3513 |
lasso_wsa_attributed_any_new |
|
3514 |
<SUBSECTION Standard> |
|
3515 |
LASSO_WSA_ATTRIBUTED_ANY |
|
3516 |
LASSO_IS_WSA_ATTRIBUTED_ANY |
|
3517 |
LASSO_TYPE_WSA_ATTRIBUTED_ANY |
|
3518 |
lasso_wsa_attributed_any_get_type |
|
3519 |
LASSO_WSA_ATTRIBUTED_ANY_CLASS |
|
3520 |
LASSO_IS_WSA_ATTRIBUTED_ANY_CLASS |
|
3521 |
LASSO_WSA_ATTRIBUTED_ANY_GET_CLASS |
|
3522 |
</SECTION> |
|
3523 | ||
3524 |
<SECTION> |
|
3525 |
<FILE>wsa_relates_to</FILE> |
|
3526 |
<TITLE>LassoWsAddrRelatesTo</TITLE> |
|
3527 |
LassoWsAddrRelatesTo |
|
3528 |
lasso_wsa_relates_to_new |
|
3529 |
lasso_wsa_relates_to_new_with_string |
|
3530 |
<SUBSECTION Standard> |
|
3531 |
LASSO_WSA_RELATES_TO |
|
3532 |
LASSO_IS_WSA_RELATES_TO |
|
3533 |
LASSO_TYPE_WSA_RELATES_TO |
|
3534 |
lasso_wsa_relates_to_get_type |
|
3535 |
LASSO_WSA_RELATES_TO_CLASS |
|
3536 |
LASSO_IS_WSA_RELATES_TO_CLASS |
|
3537 |
LASSO_WSA_RELATES_TO_GET_CLASS |
|
3538 |
</SECTION> |
|
3539 | ||
3540 |
<SECTION> |
|
3541 |
<FILE>wsse_username_token</FILE> |
|
3542 |
LassoWsseUsernameTokenPasswordType |
|
3543 |
<TITLE>LassoWsseUsernameToken</TITLE> |
|
3544 |
LassoWsseUsernameToken |
|
3545 |
lasso_wsse_username_token_new |
|
3546 |
lasso_wsse_username_token_reset_nonce |
|
3547 |
lasso_wsse_username_token_set_password_kind |
|
3548 |
lasso_wsse_username_token_set_password |
|
3549 |
lasso_wsse_username_token_check_password |
|
3550 |
lasso_wsse_username_token_derive_key |
|
3551 |
<SUBSECTION Standard> |
|
3552 |
LASSO_WSSE_USERNAME_TOKEN |
|
3553 |
LASSO_IS_WSSE_USERNAME_TOKEN |
|
3554 |
LASSO_TYPE_WSSE_USERNAME_TOKEN |
|
3555 |
lasso_wsse_username_token_get_type |
|
3556 |
LASSO_WSSE_USERNAME_TOKEN_CLASS |
|
3557 |
LASSO_IS_WSSE_USERNAME_TOKEN_CLASS |
|
3558 |
LASSO_WSSE_USERNAME_TOKEN_GET_CLASS |
|
3559 |
</SECTION> |
|
3560 | ||
3561 |
<SECTION> |
|
3562 |
<FILE>wsa_reference_parameters</FILE> |
|
3563 |
<TITLE>LassoWsAddrReferenceParameters</TITLE> |
|
3564 |
LassoWsAddrReferenceParameters |
|
3565 |
lasso_wsa_reference_parameters_new |
|
3566 |
<SUBSECTION Standard> |
|
3567 |
LASSO_WSA_REFERENCE_PARAMETERS |
|
3568 |
LASSO_IS_WSA_REFERENCE_PARAMETERS |
|
3569 |
LASSO_TYPE_WSA_REFERENCE_PARAMETERS |
|
3570 |
lasso_wsa_reference_parameters_get_type |
|
3571 |
LASSO_WSA_REFERENCE_PARAMETERS_CLASS |
|
3572 |
LASSO_IS_WSA_REFERENCE_PARAMETERS_CLASS |
|
3573 |
LASSO_WSA_REFERENCE_PARAMETERS_GET_CLASS |
|
3574 |
</SECTION> |
|
3575 | ||
3576 |
<SECTION> |
|
3577 |
<FILE>wsa_attributed_qname</FILE> |
|
3578 |
<TITLE>LassoWsAddrAttributedQName</TITLE> |
|
3579 |
LassoWsAddrAttributedQName |
|
3580 |
lasso_wsa_attributed_qname_new |
|
3581 |
lasso_wsa_attributed_qname_new_with_string |
|
3582 |
<SUBSECTION Standard> |
|
3583 |
LASSO_WSA_ATTRIBUTED_QNAME |
|
3584 |
LASSO_IS_WSA_ATTRIBUTED_QNAME |
|
3585 |
LASSO_TYPE_WSA_ATTRIBUTED_QNAME |
|
3586 |
lasso_wsa_attributed_qname_get_type |
|
3587 |
LASSO_WSA_ATTRIBUTED_QNAME_CLASS |
|
3588 |
LASSO_IS_WSA_ATTRIBUTED_QNAME_CLASS |
|
3589 |
LASSO_WSA_ATTRIBUTED_QNAME_GET_CLASS |
|
3590 |
</SECTION> |
|
3591 | ||
3592 |
<SECTION> |
|
3593 |
<FILE>wsa_metadata</FILE> |
|
3594 |
<TITLE>LassoWsAddrMetadata</TITLE> |
|
3595 |
LassoWsAddrMetadata |
|
3596 |
lasso_wsa_metadata_new |
|
3597 |
<SUBSECTION Standard> |
|
3598 |
LASSO_WSA_METADATA |
|
3599 |
LASSO_IS_WSA_METADATA |
|
3600 |
LASSO_TYPE_WSA_METADATA |
|
3601 |
lasso_wsa_metadata_get_type |
|
3602 |
LASSO_WSA_METADATA_CLASS |
|
3603 |
LASSO_IS_WSA_METADATA_CLASS |
|
3604 |
LASSO_WSA_METADATA_GET_CLASS |
|
3605 |
</SECTION> |
|
3606 | ||
3607 |
<SECTION> |
|
3608 |
<FILE>wsa_attributed_unsigned_long</FILE> |
|
3609 |
<TITLE>LassoWsAddrAttributedUnsignedLong</TITLE> |
|
3610 |
LassoWsAddrAttributedUnsignedLong |
|
3611 |
lasso_wsa_attributed_unsigned_long_new |
|
3612 |
<SUBSECTION Standard> |
|
3613 |
LASSO_WSA_ATTRIBUTED_UNSIGNED_LONG |
|
3614 |
LASSO_IS_WSA_ATTRIBUTED_UNSIGNED_LONG |
|
3615 |
LASSO_TYPE_WSA_ATTRIBUTED_UNSIGNED_LONG |
|
3616 |
lasso_wsa_attributed_unsigned_long_get_type |
|
3617 |
LASSO_WSA_ATTRIBUTED_UNSIGNED_LONG_CLASS |
|
3618 |
LASSO_IS_WSA_ATTRIBUTED_UNSIGNED_LONG_CLASS |
|
3619 |
LASSO_WSA_ATTRIBUTED_UNSIGNED_LONG_GET_CLASS |
|
3620 |
</SECTION> |
|
3621 | ||
3622 |
<SECTION> |
|
3623 |
<FILE>wsa_attributed_uri</FILE> |
|
3624 |
<TITLE>LassoWsAddrAttributedURI</TITLE> |
|
3625 |
LassoWsAddrAttributedURI |
|
3626 |
lasso_wsa_attributed_uri_new |
|
3627 |
lasso_wsa_attributed_uri_new_with_string |
|
3628 |
<SUBSECTION Standard> |
|
3629 |
LASSO_WSA_ATTRIBUTED_URI |
|
3630 |
LASSO_IS_WSA_ATTRIBUTED_URI |
|
3631 |
LASSO_TYPE_WSA_ATTRIBUTED_URI |
|
3632 |
lasso_wsa_attributed_uri_get_type |
|
3633 |
LASSO_WSA_ATTRIBUTED_URI_CLASS |
|
3634 |
LASSO_IS_WSA_ATTRIBUTED_URI_CLASS |
|
3635 |
LASSO_WSA_ATTRIBUTED_URI_GET_CLASS |
|
3636 |
</SECTION> |
|
3637 | ||
3638 |
<SECTION> |
|
3639 |
<FILE>wsa_endpoint_reference</FILE> |
|
3640 |
<TITLE>LassoWsAddrEndpointReference</TITLE> |
|
3641 |
LassoWsAddrEndpointReference |
|
3642 |
lasso_wsa_endpoint_reference_new |
|
3643 |
lasso_wsa_endpoint_reference_get_target_identity_token |
|
3644 |
lasso_wsa_endpoint_reference_new_for_idwsf2_service |
|
3645 |
lasso_wsa_endpoint_reference_add_security_token |
|
3646 |
lasso_wsa_endpoint_reference_associate_service_to_type |
|
3647 |
lasso_wsa_endpoint_reference_get_service |
|
3648 |
<SUBSECTION Standard> |
|
3649 |
LASSO_WSA_ENDPOINT_REFERENCE |
|
3650 |
LASSO_IS_WSA_ENDPOINT_REFERENCE |
|
3651 |
LASSO_TYPE_WSA_ENDPOINT_REFERENCE |
|
3652 |
lasso_wsa_endpoint_reference_get_type |
|
3653 |
LASSO_WSA_ENDPOINT_REFERENCE_CLASS |
|
3654 |
LASSO_IS_WSA_ENDPOINT_REFERENCE_CLASS |
|
3655 |
LASSO_WSA_ENDPOINT_REFERENCE_GET_CLASS |
|
3656 |
</SECTION> |
|
3657 | ||
3658 |
<SECTION> |
|
3659 |
<FILE>wsse_reference</FILE> |
|
3660 |
<TITLE>LassoWsSec1Reference</TITLE> |
|
3661 |
LassoWsSec1Reference |
|
3662 |
lasso_wsse_reference_new |
|
3663 |
<SUBSECTION Standard> |
|
3664 |
LASSO_WSSE_REFERENCE |
|
3665 |
LASSO_IS_WSSE_REFERENCE |
|
3666 |
LASSO_TYPE_WSSE_REFERENCE |
|
3667 |
lasso_wsse_reference_get_type |
|
3668 |
LASSO_WSSE_REFERENCE_CLASS |
|
3669 |
LASSO_IS_WSSE_REFERENCE_CLASS |
|
3670 |
LASSO_WSSE_REFERENCE_GET_CLASS |
|
3671 |
</SECTION> |
|
3672 | ||
3673 |
<SECTION> |
|
3674 |
<FILE>wsse_embedded</FILE> |
|
3675 |
<TITLE>LassoWsSec1Embedded</TITLE> |
|
3676 |
LassoWsSec1Embedded |
|
3677 |
lasso_wsse_embedded_new |
|
3678 |
<SUBSECTION Standard> |
|
3679 |
LASSO_WSSE_EMBEDDED |
|
3680 |
LASSO_IS_WSSE_EMBEDDED |
|
3681 |
LASSO_TYPE_WSSE_EMBEDDED |
|
3682 |
lasso_wsse_embedded_get_type |
|
3683 |
LASSO_WSSE_EMBEDDED_CLASS |
|
3684 |
LASSO_IS_WSSE_EMBEDDED_CLASS |
|
3685 |
LASSO_WSSE_EMBEDDED_GET_CLASS |
|
3686 |
</SECTION> |
|
3687 | ||
3688 |
<SECTION> |
|
3689 |
<FILE>wsu_timestamp</FILE> |
|
3690 |
<TITLE>LassoWsUtil1Timestamp</TITLE> |
|
3691 |
LassoWsUtil1Timestamp |
|
3692 |
lasso_wsu_timestamp_new |
|
3693 |
<SUBSECTION Standard> |
|
3694 |
LASSO_WSU_TIMESTAMP |
|
3695 |
LASSO_IS_WSU_TIMESTAMP |
|
3696 |
LASSO_TYPE_WSU_TIMESTAMP |
|
3697 |
lasso_wsu_timestamp_get_type |
|
3698 |
LASSO_WSU_TIMESTAMP_CLASS |
|
3699 |
LASSO_IS_WSU_TIMESTAMP_CLASS |
|
3700 |
LASSO_WSU_TIMESTAMP_GET_CLASS |
|
3701 |
</SECTION> |
|
3702 | ||
3703 |
<SECTION> |
|
3704 |
<FILE>wsse_security_token_reference</FILE> |
|
3705 |
<TITLE>LassoWsSec1SecurityTokenReference</TITLE> |
|
3706 |
LassoWsSec1SecurityTokenReference |
|
3707 |
lasso_wsse_security_token_reference_new |
|
3708 |
<SUBSECTION Standard> |
|
3709 |
LASSO_WSSE_SECURITY_TOKEN_REFERENCE |
|
3710 |
LASSO_IS_WSSE_SECURITY_TOKEN_REFERENCE |
|
3711 |
LASSO_TYPE_WSSE_SECURITY_TOKEN_REFERENCE |
|
3712 |
lasso_wsse_security_token_reference_get_type |
|
3713 |
LASSO_WSSE_SECURITY_TOKEN_REFERENCE_CLASS |
|
3714 |
LASSO_IS_WSSE_SECURITY_TOKEN_REFERENCE_CLASS |
|
3715 |
LASSO_WSSE_SECURITY_TOKEN_REFERENCE_GET_CLASS |
|
3716 |
</SECTION> |
|
3717 | ||
3718 |
<SECTION> |
|
3719 |
<FILE>dst_delete_response</FILE> |
|
3720 |
<TITLE>LassoIdWsf2DstDeleteResponse</TITLE> |
|
3721 |
LassoIdWsf2DstDeleteResponse |
|
3722 |
lasso_idwsf2_dst_delete_response_new |
|
3723 |
<SUBSECTION Standard> |
|
3724 |
LASSO_IDWSF2_DST_DELETE_RESPONSE |
|
3725 |
LASSO_IS_IDWSF2_DST_DELETE_RESPONSE |
|
3726 |
LASSO_TYPE_IDWSF2_DST_DELETE_RESPONSE |
|
3727 |
lasso_idwsf2_dst_delete_response_get_type |
|
3728 |
LASSO_IDWSF2_DST_DELETE_RESPONSE_CLASS |
|
3729 |
LASSO_IS_IDWSF2_DST_DELETE_RESPONSE_CLASS |
|
3730 |
LASSO_IDWSF2_DST_DELETE_RESPONSE_GET_CLASS |
|
3731 |
</SECTION> |
|
3732 | ||
3733 |
<SECTION> |
|
3734 |
<FILE>subsref_create_item</FILE> |
|
3735 |
<TITLE>LassoIdWsf2SubsRefCreateItem</TITLE> |
|
3736 |
LassoIdWsf2SubsRefCreateItem |
|
3737 |
lasso_idwsf2_subsref_create_item_new |
|
3738 |
<SUBSECTION Standard> |
|
3739 |
LASSO_IDWSF2_SUBSREF_CREATE_ITEM |
|
3740 |
LASSO_IS_IDWSF2_SUBSREF_CREATE_ITEM |
|
3741 |
LASSO_TYPE_IDWSF2_SUBSREF_CREATE_ITEM |
|
3742 |
lasso_idwsf2_subsref_create_item_get_type |
|
3743 |
LASSO_IDWSF2_SUBSREF_CREATE_ITEM_CLASS |
|
3744 |
LASSO_IS_IDWSF2_SUBSREF_CREATE_ITEM_CLASS |
|
3745 |
LASSO_IDWSF2_SUBSREF_CREATE_ITEM_GET_CLASS |
|
3746 |
</SECTION> |
|
3747 | ||
3748 |
<SECTION> |
|
3749 |
<FILE>disco_svc_md_query_response</FILE> |
|
3750 |
<TITLE>LassoIdWsf2DiscoSvcMDQueryResponse</TITLE> |
|
3751 |
LassoIdWsf2DiscoSvcMDQueryResponse |
|
3752 |
lasso_idwsf2_disco_svc_md_query_response_new |
|
3753 |
<SUBSECTION Standard> |
|
3754 |
LASSO_IDWSF2_DISCO_SVC_MD_QUERY_RESPONSE |
|
3755 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_QUERY_RESPONSE |
|
3756 |
LASSO_TYPE_IDWSF2_DISCO_SVC_MD_QUERY_RESPONSE |
|
3757 |
lasso_idwsf2_disco_svc_md_query_response_get_type |
|
3758 |
LASSO_IDWSF2_DISCO_SVC_MD_QUERY_RESPONSE_CLASS |
|
3759 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_QUERY_RESPONSE_CLASS |
|
3760 |
LASSO_IDWSF2_DISCO_SVC_MD_QUERY_RESPONSE_GET_CLASS |
|
3761 |
</SECTION> |
|
3762 | ||
3763 |
<SECTION> |
|
3764 |
<FILE>disco_endpoint_context</FILE> |
|
3765 |
<TITLE>LassoIdWsf2DiscoEndpointContext</TITLE> |
|
3766 |
LassoIdWsf2DiscoEndpointContext |
|
3767 |
lasso_idwsf2_disco_endpoint_context_new |
|
3768 |
lasso_idwsf2_disco_endpoint_context_new_full |
|
3769 |
<SUBSECTION Standard> |
|
3770 |
LASSO_IDWSF2_DISCO_ENDPOINT_CONTEXT |
|
3771 |
LASSO_IS_IDWSF2_DISCO_ENDPOINT_CONTEXT |
|
3772 |
LASSO_TYPE_IDWSF2_DISCO_ENDPOINT_CONTEXT |
|
3773 |
lasso_idwsf2_disco_endpoint_context_get_type |
|
3774 |
LASSO_IDWSF2_DISCO_ENDPOINT_CONTEXT_CLASS |
|
3775 |
LASSO_IS_IDWSF2_DISCO_ENDPOINT_CONTEXT_CLASS |
|
3776 |
LASSO_IDWSF2_DISCO_ENDPOINT_CONTEXT_GET_CLASS |
|
3777 |
</SECTION> |
|
3778 | ||
3779 |
<SECTION> |
|
3780 |
<FILE>disco_provider_id</FILE> |
|
3781 |
<TITLE>LassoIdWsf2DiscoProviderID</TITLE> |
|
3782 |
LassoIdWsf2DiscoProviderID |
|
3783 |
lasso_idwsf2_disco_provider_id_new |
|
3784 |
lasso_idwsf2_disco_provider_id_new_with_string |
|
3785 |
<SUBSECTION Standard> |
|
3786 |
LASSO_IDWSF2_DISCO_PROVIDER_ID |
|
3787 |
LASSO_IS_IDWSF2_DISCO_PROVIDER_ID |
|
3788 |
LASSO_TYPE_IDWSF2_DISCO_PROVIDER_ID |
|
3789 |
lasso_idwsf2_disco_provider_id_get_type |
|
3790 |
LASSO_IDWSF2_DISCO_PROVIDER_ID_CLASS |
|
3791 |
LASSO_IS_IDWSF2_DISCO_PROVIDER_ID_CLASS |
|
3792 |
LASSO_IDWSF2_DISCO_PROVIDER_ID_GET_CLASS |
|
3793 |
</SECTION> |
|
3794 | ||
3795 |
<SECTION> |
|
3796 |
<FILE>ps_remove_collection_request</FILE> |
|
3797 |
<TITLE>LassoIdWsf2PsRemoveCollectionRequest</TITLE> |
|
3798 |
LassoIdWsf2PsRemoveCollectionRequest |
|
3799 |
lasso_idwsf2_ps_remove_collection_request_new |
|
3800 |
<SUBSECTION Standard> |
|
3801 |
LASSO_IDWSF2_PS_REMOVE_COLLECTION_REQUEST |
|
3802 |
LASSO_IS_IDWSF2_PS_REMOVE_COLLECTION_REQUEST |
|
3803 |
LASSO_TYPE_IDWSF2_PS_REMOVE_COLLECTION_REQUEST |
|
3804 |
lasso_idwsf2_ps_remove_collection_request_get_type |
|
3805 |
LASSO_IDWSF2_PS_REMOVE_COLLECTION_REQUEST_CLASS |
|
3806 |
LASSO_IS_IDWSF2_PS_REMOVE_COLLECTION_REQUEST_CLASS |
|
3807 |
LASSO_IDWSF2_PS_REMOVE_COLLECTION_REQUEST_GET_CLASS |
|
3808 |
</SECTION> |
|
3809 | ||
3810 |
<SECTION> |
|
3811 |
<FILE>id_wsf_2_0_is_interaction_statement</FILE> |
|
3812 |
LASSO_IS_IDWSF2_IS_INTERACTION_STATEMENT |
|
3813 |
<TITLE>LassoIdWsf2IsInteractionStatement</TITLE> |
|
3814 |
LassoIdWsf2IsInteractionStatement |
|
3815 |
lasso_idwsf2_is_interaction_statement_new |
|
3816 |
<SUBSECTION Standard> |
|
3817 |
LASSO_IDWSF2_IS_INTERACTION_STATEMENT |
|
3818 |
LASSO_TYPE_IDWSF2_IS_INTERACTION_STATEMENT |
|
3819 |
lasso_idwsf2_is_interaction_statement_get_type |
|
3820 |
LASSO_IDWSF2_IS_INTERACTION_STATEMENT_CLASS |
|
3821 |
LASSO_IS_IDWSF2_IS_INTERACTION_STATEMENT_CLASS |
|
3822 |
LASSO_IDWSF2_IS_INTERACTION_STATEMENT_GET_CLASS |
|
3823 |
</SECTION> |
|
3824 | ||
3825 |
<SECTION> |
|
3826 |
<FILE>util_status</FILE> |
|
3827 |
<TITLE>LassoIdWsf2UtilStatus</TITLE> |
|
3828 |
LassoIdWsf2UtilStatus |
|
3829 |
lasso_idwsf2_util_status_new |
|
3830 |
lasso_idwsf2_util_status_new_with_code |
|
3831 |
<SUBSECTION Standard> |
|
3832 |
LASSO_IDWSF2_UTIL_STATUS |
|
3833 |
LASSO_IS_IDWSF2_UTIL_STATUS |
|
3834 |
LASSO_TYPE_IDWSF2_UTIL_STATUS |
|
3835 |
lasso_idwsf2_util_status_get_type |
|
3836 |
LASSO_IDWSF2_UTIL_STATUS_CLASS |
|
3837 |
LASSO_IS_IDWSF2_UTIL_STATUS_CLASS |
|
3838 |
LASSO_IDWSF2_UTIL_STATUS_GET_CLASS |
|
3839 |
</SECTION> |
|
3840 | ||
3841 |
<SECTION> |
|
3842 |
<FILE>dstref_modify</FILE> |
|
3843 |
<TITLE>LassoIdWsf2DstRefModify</TITLE> |
|
3844 |
LassoIdWsf2DstRefModify |
|
3845 |
lasso_idwsf2_dstref_modify_new |
|
3846 |
<SUBSECTION Standard> |
|
3847 |
LASSO_IDWSF2_DSTREF_MODIFY |
|
3848 |
LASSO_IS_IDWSF2_DSTREF_MODIFY |
|
3849 |
LASSO_TYPE_IDWSF2_DSTREF_MODIFY |
|
3850 |
lasso_idwsf2_dstref_modify_get_type |
|
3851 |
LASSO_IDWSF2_DSTREF_MODIFY_CLASS |
|
3852 |
LASSO_IS_IDWSF2_DSTREF_MODIFY_CLASS |
|
3853 |
LASSO_IDWSF2_DSTREF_MODIFY_GET_CLASS |
|
3854 |
</SECTION> |
|
3855 | ||
3856 |
<SECTION> |
|
3857 |
<FILE>subsref_delete_item</FILE> |
|
3858 |
<TITLE>LassoIdWsf2SubsRefDeleteItem</TITLE> |
|
3859 |
LassoIdWsf2SubsRefDeleteItem |
|
3860 |
lasso_idwsf2_subsref_delete_item_new |
|
3861 |
<SUBSECTION Standard> |
|
3862 |
LASSO_IDWSF2_SUBSREF_DELETE_ITEM |
|
3863 |
LASSO_IS_IDWSF2_SUBSREF_DELETE_ITEM |
|
3864 |
LASSO_TYPE_IDWSF2_SUBSREF_DELETE_ITEM |
|
3865 |
lasso_idwsf2_subsref_delete_item_get_type |
|
3866 |
LASSO_IDWSF2_SUBSREF_DELETE_ITEM_CLASS |
|
3867 |
LASSO_IS_IDWSF2_SUBSREF_DELETE_ITEM_CLASS |
|
3868 |
LASSO_IDWSF2_SUBSREF_DELETE_ITEM_GET_CLASS |
|
3869 |
</SECTION> |
|
3870 | ||
3871 |
<SECTION> |
|
3872 |
<FILE>subsref_data_response</FILE> |
|
3873 |
<TITLE>LassoIdWsf2SubsRefDataResponse</TITLE> |
|
3874 |
LassoIdWsf2SubsRefDataResponse |
|
3875 |
lasso_idwsf2_subsref_data_response_new |
|
3876 |
<SUBSECTION Standard> |
|
3877 |
LASSO_IDWSF2_SUBSREF_DATA_RESPONSE |
|
3878 |
LASSO_IS_IDWSF2_SUBSREF_DATA_RESPONSE |
|
3879 |
LASSO_TYPE_IDWSF2_SUBSREF_DATA_RESPONSE |
|
3880 |
lasso_idwsf2_subsref_data_response_get_type |
|
3881 |
LASSO_IDWSF2_SUBSREF_DATA_RESPONSE_CLASS |
|
3882 |
LASSO_IS_IDWSF2_SUBSREF_DATA_RESPONSE_CLASS |
|
3883 |
LASSO_IDWSF2_SUBSREF_DATA_RESPONSE_GET_CLASS |
|
3884 |
</SECTION> |
|
3885 | ||
3886 |
<SECTION> |
|
3887 |
<FILE>id_wsf_2_0_is_parameter</FILE> |
|
3888 |
LASSO_IS_IDWSF2_IS_PARAMETER |
|
3889 |
<TITLE>LassoIdWsf2IsParameter</TITLE> |
|
3890 |
LassoIdWsf2IsParameter |
|
3891 |
lasso_idwsf2_is_parameter_new |
|
3892 |
<SUBSECTION Standard> |
|
3893 |
LASSO_IDWSF2_IS_PARAMETER |
|
3894 |
LASSO_TYPE_IDWSF2_IS_PARAMETER |
|
3895 |
lasso_idwsf2_is_parameter_get_type |
|
3896 |
LASSO_IDWSF2_IS_PARAMETER_CLASS |
|
3897 |
LASSO_IS_IDWSF2_IS_PARAMETER_CLASS |
|
3898 |
LASSO_IDWSF2_IS_PARAMETER_GET_CLASS |
|
3899 |
</SECTION> |
|
3900 | ||
3901 |
<SECTION> |
|
3902 |
<FILE>ps_resolve_identifier_response</FILE> |
|
3903 |
<TITLE>LassoIdWsf2PsResolveIdentifierResponse</TITLE> |
|
3904 |
LassoIdWsf2PsResolveIdentifierResponse |
|
3905 |
lasso_idwsf2_ps_resolve_identifier_response_new |
|
3906 |
<SUBSECTION Standard> |
|
3907 |
LASSO_IDWSF2_PS_RESOLVE_IDENTIFIER_RESPONSE |
|
3908 |
LASSO_IS_IDWSF2_PS_RESOLVE_IDENTIFIER_RESPONSE |
|
3909 |
LASSO_TYPE_IDWSF2_PS_RESOLVE_IDENTIFIER_RESPONSE |
|
3910 |
lasso_idwsf2_ps_resolve_identifier_response_get_type |
|
3911 |
LASSO_IDWSF2_PS_RESOLVE_IDENTIFIER_RESPONSE_CLASS |
|
3912 |
LASSO_IS_IDWSF2_PS_RESOLVE_IDENTIFIER_RESPONSE_CLASS |
|
3913 |
LASSO_IDWSF2_PS_RESOLVE_IDENTIFIER_RESPONSE_GET_CLASS |
|
3914 |
</SECTION> |
|
3915 | ||
3916 |
<SECTION> |
|
3917 |
<FILE>subsref_test_item</FILE> |
|
3918 |
<TITLE>LassoIdWsf2SubsRefTestItem</TITLE> |
|
3919 |
LassoIdWsf2SubsRefTestItem |
|
3920 |
lasso_idwsf2_subsref_test_item_new |
|
3921 |
<SUBSECTION Standard> |
|
3922 |
LASSO_IDWSF2_SUBSREF_TEST_ITEM |
|
3923 |
LASSO_IS_IDWSF2_SUBSREF_TEST_ITEM |
|
3924 |
LASSO_TYPE_IDWSF2_SUBSREF_TEST_ITEM |
|
3925 |
lasso_idwsf2_subsref_test_item_get_type |
|
3926 |
LASSO_IDWSF2_SUBSREF_TEST_ITEM_CLASS |
|
3927 |
LASSO_IS_IDWSF2_SUBSREF_TEST_ITEM_CLASS |
|
3928 |
LASSO_IDWSF2_SUBSREF_TEST_ITEM_GET_CLASS |
|
3929 |
</SECTION> |
|
3930 | ||
3931 |
<SECTION> |
|
3932 |
<FILE>id_wsf_2_0_is_inquiry</FILE> |
|
3933 |
LASSO_IS_IDWSF2_IS_INQUIRY |
|
3934 |
<TITLE>LassoIdWsf2IsInquiry</TITLE> |
|
3935 |
LassoIdWsf2IsInquiry |
|
3936 |
lasso_idwsf2_is_inquiry_new |
|
3937 |
<SUBSECTION Standard> |
|
3938 |
LASSO_IDWSF2_IS_INQUIRY |
|
3939 |
LASSO_TYPE_IDWSF2_IS_INQUIRY |
|
3940 |
lasso_idwsf2_is_inquiry_get_type |
|
3941 |
LASSO_IDWSF2_IS_INQUIRY_CLASS |
|
3942 |
LASSO_IS_IDWSF2_IS_INQUIRY_CLASS |
|
3943 |
LASSO_IDWSF2_IS_INQUIRY_GET_CLASS |
|
3944 |
</SECTION> |
|
3945 | ||
3946 |
<SECTION> |
|
3947 |
<FILE>util_empty</FILE> |
|
3948 |
<TITLE>LassoIdWsf2UtilEmpty</TITLE> |
|
3949 |
LassoIdWsf2UtilEmpty |
|
3950 |
lasso_idwsf2_util_empty_new |
|
3951 |
<SUBSECTION Standard> |
|
3952 |
LASSO_IDWSF2_UTIL_EMPTY |
|
3953 |
LASSO_IS_IDWSF2_UTIL_EMPTY |
|
3954 |
LASSO_TYPE_IDWSF2_UTIL_EMPTY |
|
3955 |
lasso_idwsf2_util_empty_get_type |
|
3956 |
LASSO_IDWSF2_UTIL_EMPTY_CLASS |
|
3957 |
LASSO_IS_IDWSF2_UTIL_EMPTY_CLASS |
|
3958 |
LASSO_IDWSF2_UTIL_EMPTY_GET_CLASS |
|
3959 |
</SECTION> |
|
3960 | ||
3961 |
<SECTION> |
|
3962 |
<FILE>sb2_redirect_request</FILE> |
|
3963 |
<TITLE>LassoIdWsf2Sb2RedirectRequest</TITLE> |
|
3964 |
LassoIdWsf2Sb2RedirectRequest |
|
3965 |
lasso_idwsf2_sb2_redirect_request_new |
|
3966 |
lasso_idwsf2_sb2_redirect_request_new_full |
|
3967 |
<SUBSECTION Standard> |
|
3968 |
LASSO_IDWSF2_SB2_REDIRECT_REQUEST |
|
3969 |
LASSO_IS_IDWSF2_SB2_REDIRECT_REQUEST |
|
3970 |
LASSO_TYPE_IDWSF2_SB2_REDIRECT_REQUEST |
|
3971 |
lasso_idwsf2_sb2_redirect_request_get_type |
|
3972 |
LASSO_IDWSF2_SB2_REDIRECT_REQUEST_CLASS |
|
3973 |
LASSO_IS_IDWSF2_SB2_REDIRECT_REQUEST_CLASS |
|
3974 |
LASSO_IDWSF2_SB2_REDIRECT_REQUEST_GET_CLASS |
|
3975 |
</SECTION> |
|
3976 | ||
3977 |
<SECTION> |
|
3978 |
<FILE>ps_add_known_entity_request</FILE> |
|
3979 |
<TITLE>LassoIdWsf2PsAddKnownEntityRequest</TITLE> |
|
3980 |
LassoIdWsf2PsAddKnownEntityRequest |
|
3981 |
lasso_idwsf2_ps_add_known_entity_request_new |
|
3982 |
<SUBSECTION Standard> |
|
3983 |
LASSO_IDWSF2_PS_ADD_KNOWN_ENTITY_REQUEST |
|
3984 |
LASSO_IS_IDWSF2_PS_ADD_KNOWN_ENTITY_REQUEST |
|
3985 |
LASSO_TYPE_IDWSF2_PS_ADD_KNOWN_ENTITY_REQUEST |
|
3986 |
lasso_idwsf2_ps_add_known_entity_request_get_type |
|
3987 |
LASSO_IDWSF2_PS_ADD_KNOWN_ENTITY_REQUEST_CLASS |
|
3988 |
LASSO_IS_IDWSF2_PS_ADD_KNOWN_ENTITY_REQUEST_CLASS |
|
3989 |
LASSO_IDWSF2_PS_ADD_KNOWN_ENTITY_REQUEST_GET_CLASS |
|
3990 |
</SECTION> |
|
3991 | ||
3992 |
<SECTION> |
|
3993 |
<FILE>id_wsf_2_0_is_text</FILE> |
|
3994 |
LASSO_IS_IDWSF2_IS_TEXT |
|
3995 |
<TITLE>LassoIdWsf2IsText</TITLE> |
|
3996 |
LassoIdWsf2IsText |
|
3997 |
lasso_idwsf2_is_text_new |
|
3998 |
<SUBSECTION Standard> |
|
3999 |
LASSO_IDWSF2_IS_TEXT |
|
4000 |
LASSO_TYPE_IDWSF2_IS_TEXT |
|
4001 |
lasso_idwsf2_is_text_get_type |
|
4002 |
LASSO_IDWSF2_IS_TEXT_CLASS |
|
4003 |
LASSO_IS_IDWSF2_IS_TEXT_CLASS |
|
4004 |
LASSO_IDWSF2_IS_TEXT_GET_CLASS |
|
4005 |
</SECTION> |
|
4006 | ||
4007 |
<SECTION> |
|
4008 |
<FILE>ims_identity_mapping_request</FILE> |
|
4009 |
<TITLE>LassoIdWsf2ImsIdentityMappingRequest</TITLE> |
|
4010 |
LassoIdWsf2ImsIdentityMappingRequest |
|
4011 |
lasso_idwsf2_ims_identity_mapping_request_new |
|
4012 |
<SUBSECTION Standard> |
|
4013 |
LASSO_IDWSF2_IMS_IDENTITY_MAPPING_REQUEST |
|
4014 |
LASSO_IS_IDWSF2_IMS_IDENTITY_MAPPING_REQUEST |
|
4015 |
LASSO_TYPE_IDWSF2_IMS_IDENTITY_MAPPING_REQUEST |
|
4016 |
lasso_idwsf2_ims_identity_mapping_request_get_type |
|
4017 |
LASSO_IDWSF2_IMS_IDENTITY_MAPPING_REQUEST_CLASS |
|
4018 |
LASSO_IS_IDWSF2_IMS_IDENTITY_MAPPING_REQUEST_CLASS |
|
4019 |
LASSO_IDWSF2_IMS_IDENTITY_MAPPING_REQUEST_GET_CLASS |
|
4020 |
</SECTION> |
|
4021 | ||
4022 |
<SECTION> |
|
4023 |
<FILE>dstref_create_item</FILE> |
|
4024 |
<TITLE>LassoIdWsf2DstRefCreateItem</TITLE> |
|
4025 |
LassoIdWsf2DstRefCreateItem |
|
4026 |
lasso_idwsf2_dstref_create_item_new |
|
4027 |
<SUBSECTION Standard> |
|
4028 |
LASSO_IDWSF2_DSTREF_CREATE_ITEM |
|
4029 |
LASSO_IS_IDWSF2_DSTREF_CREATE_ITEM |
|
4030 |
LASSO_TYPE_IDWSF2_DSTREF_CREATE_ITEM |
|
4031 |
lasso_idwsf2_dstref_create_item_get_type |
|
4032 |
LASSO_IDWSF2_DSTREF_CREATE_ITEM_CLASS |
|
4033 |
LASSO_IS_IDWSF2_DSTREF_CREATE_ITEM_CLASS |
|
4034 |
LASSO_IDWSF2_DSTREF_CREATE_ITEM_GET_CLASS |
|
4035 |
</SECTION> |
|
4036 | ||
4037 |
<SECTION> |
|
4038 |
<FILE>ps_response_abstract</FILE> |
|
4039 |
<TITLE>LassoIdWsf2PsResponseAbstract</TITLE> |
|
4040 |
LassoIdWsf2PsResponseAbstract |
|
4041 |
lasso_idwsf2_ps_response_abstract_new |
|
4042 |
<SUBSECTION Standard> |
|
4043 |
LASSO_IDWSF2_PS_RESPONSE_ABSTRACT |
|
4044 |
LASSO_IS_IDWSF2_PS_RESPONSE_ABSTRACT |
|
4045 |
LASSO_TYPE_IDWSF2_PS_RESPONSE_ABSTRACT |
|
4046 |
lasso_idwsf2_ps_response_abstract_get_type |
|
4047 |
LASSO_IDWSF2_PS_RESPONSE_ABSTRACT_CLASS |
|
4048 |
LASSO_IS_IDWSF2_PS_RESPONSE_ABSTRACT_CLASS |
|
4049 |
LASSO_IDWSF2_PS_RESPONSE_ABSTRACT_GET_CLASS |
|
4050 |
</SECTION> |
|
4051 | ||
4052 |
<SECTION> |
|
4053 |
<FILE>disco_svc_md_replace_response</FILE> |
|
4054 |
<TITLE>LassoIdWsf2DiscoSvcMDReplaceResponse</TITLE> |
|
4055 |
LassoIdWsf2DiscoSvcMDReplaceResponse |
|
4056 |
lasso_idwsf2_disco_svc_md_replace_response_new |
|
4057 |
<SUBSECTION Standard> |
|
4058 |
LASSO_IDWSF2_DISCO_SVC_MD_REPLACE_RESPONSE |
|
4059 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_REPLACE_RESPONSE |
|
4060 |
LASSO_TYPE_IDWSF2_DISCO_SVC_MD_REPLACE_RESPONSE |
|
4061 |
lasso_idwsf2_disco_svc_md_replace_response_get_type |
|
4062 |
LASSO_IDWSF2_DISCO_SVC_MD_REPLACE_RESPONSE_CLASS |
|
4063 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_REPLACE_RESPONSE_CLASS |
|
4064 |
LASSO_IDWSF2_DISCO_SVC_MD_REPLACE_RESPONSE_GET_CLASS |
|
4065 |
</SECTION> |
|
4066 | ||
4067 |
<SECTION> |
|
4068 |
<FILE>disco_svc_md_association_delete_response</FILE> |
|
4069 |
<TITLE>LassoIdWsf2DiscoSvcMDAssociationDeleteResponse</TITLE> |
|
4070 |
LassoIdWsf2DiscoSvcMDAssociationDeleteResponse |
|
4071 |
lasso_idwsf2_disco_svc_md_association_delete_response_new |
|
4072 |
<SUBSECTION Standard> |
|
4073 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_DELETE_RESPONSE |
|
4074 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_DELETE_RESPONSE |
|
4075 |
LASSO_TYPE_IDWSF2_DISCO_SVC_MD_ASSOCIATION_DELETE_RESPONSE |
|
4076 |
lasso_idwsf2_disco_svc_md_association_delete_response_get_type |
|
4077 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_DELETE_RESPONSE_CLASS |
|
4078 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_DELETE_RESPONSE_CLASS |
|
4079 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_DELETE_RESPONSE_GET_CLASS |
|
4080 |
</SECTION> |
|
4081 | ||
4082 |
<SECTION> |
|
4083 |
<FILE>id_wsf_2_0_disco_query</FILE> |
|
4084 |
<TITLE>LassoIdWsf2DiscoQuery</TITLE> |
|
4085 |
LassoIdWsf2DiscoQuery |
|
4086 |
lasso_idwsf2_disco_query_new |
|
4087 |
<SUBSECTION Standard> |
|
4088 |
LASSO_IDWSF2_DISCO_QUERY |
|
4089 |
LASSO_IS_IDWSF2_DISCO_QUERY |
|
4090 |
LASSO_TYPE_IDWSF2_DISCO_QUERY |
|
4091 |
lasso_idwsf2_disco_query_get_type |
|
4092 |
LASSO_IDWSF2_DISCO_QUERY_CLASS |
|
4093 |
LASSO_IS_IDWSF2_DISCO_QUERY_CLASS |
|
4094 |
LASSO_IDWSF2_DISCO_QUERY_GET_CLASS |
|
4095 |
</SECTION> |
|
4096 | ||
4097 |
<SECTION> |
|
4098 |
<FILE>disco_svc_md_association_query_response</FILE> |
|
4099 |
<TITLE>LassoIdWsf2DiscoSvcMDAssociationQueryResponse</TITLE> |
|
4100 |
LassoIdWsf2DiscoSvcMDAssociationQueryResponse |
|
4101 |
lasso_idwsf2_disco_svc_md_association_query_response_new |
|
4102 |
<SUBSECTION Standard> |
|
4103 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_QUERY_RESPONSE |
|
4104 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_QUERY_RESPONSE |
|
4105 |
LASSO_TYPE_IDWSF2_DISCO_SVC_MD_ASSOCIATION_QUERY_RESPONSE |
|
4106 |
lasso_idwsf2_disco_svc_md_association_query_response_get_type |
|
4107 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_QUERY_RESPONSE_CLASS |
|
4108 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_QUERY_RESPONSE_CLASS |
|
4109 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_QUERY_RESPONSE_GET_CLASS |
|
4110 |
</SECTION> |
|
4111 | ||
4112 |
<SECTION> |
|
4113 |
<FILE>sec_token_policy</FILE> |
|
4114 |
<TITLE>LassoIdWsf2SecTokenPolicy</TITLE> |
|
4115 |
LassoIdWsf2SecTokenPolicy |
|
4116 |
lasso_idwsf2_sec_token_policy_new |
|
4117 |
<SUBSECTION Standard> |
|
4118 |
LASSO_IDWSF2_SEC_TOKEN_POLICY |
|
4119 |
LASSO_IS_IDWSF2_SEC_TOKEN_POLICY |
|
4120 |
LASSO_TYPE_IDWSF2_SEC_TOKEN_POLICY |
|
4121 |
lasso_idwsf2_sec_token_policy_get_type |
|
4122 |
LASSO_IDWSF2_SEC_TOKEN_POLICY_CLASS |
|
4123 |
LASSO_IS_IDWSF2_SEC_TOKEN_POLICY_CLASS |
|
4124 |
LASSO_IDWSF2_SEC_TOKEN_POLICY_GET_CLASS |
|
4125 |
</SECTION> |
|
4126 | ||
4127 |
<SECTION> |
|
4128 |
<FILE>subs_notify_response</FILE> |
|
4129 |
<TITLE>LassoIdWsf2SubsNotifyResponse</TITLE> |
|
4130 |
LassoIdWsf2SubsNotifyResponse |
|
4131 |
lasso_idwsf2_subs_notify_response_new |
|
4132 |
<SUBSECTION Standard> |
|
4133 |
LASSO_IDWSF2_SUBS_NOTIFY_RESPONSE |
|
4134 |
LASSO_IS_IDWSF2_SUBS_NOTIFY_RESPONSE |
|
4135 |
LASSO_TYPE_IDWSF2_SUBS_NOTIFY_RESPONSE |
|
4136 |
lasso_idwsf2_subs_notify_response_get_type |
|
4137 |
LASSO_IDWSF2_SUBS_NOTIFY_RESPONSE_CLASS |
|
4138 |
LASSO_IS_IDWSF2_SUBS_NOTIFY_RESPONSE_CLASS |
|
4139 |
LASSO_IDWSF2_SUBS_NOTIFY_RESPONSE_GET_CLASS |
|
4140 |
</SECTION> |
|
4141 | ||
4142 |
<SECTION> |
|
4143 |
<FILE>dstref_data</FILE> |
|
4144 |
<TITLE>LassoIdWsf2DstRefData</TITLE> |
|
4145 |
LassoIdWsf2DstRefData |
|
4146 |
lasso_idwsf2_dstref_data_new |
|
4147 |
<SUBSECTION Standard> |
|
4148 |
LASSO_IDWSF2_DSTREF_DATA |
|
4149 |
LASSO_IS_IDWSF2_DSTREF_DATA |
|
4150 |
LASSO_TYPE_IDWSF2_DSTREF_DATA |
|
4151 |
lasso_idwsf2_dstref_data_get_type |
|
4152 |
LASSO_IDWSF2_DSTREF_DATA_CLASS |
|
4153 |
LASSO_IS_IDWSF2_DSTREF_DATA_CLASS |
|
4154 |
LASSO_IDWSF2_DSTREF_DATA_GET_CLASS |
|
4155 |
</SECTION> |
|
4156 | ||
4157 |
<SECTION> |
|
4158 |
<FILE>subsref_query_response</FILE> |
|
4159 |
<TITLE>LassoIdWsf2SubsRefQueryResponse</TITLE> |
|
4160 |
LassoIdWsf2SubsRefQueryResponse |
|
4161 |
lasso_idwsf2_subsref_query_response_new |
|
4162 |
<SUBSECTION Standard> |
|
4163 |
LASSO_IDWSF2_SUBSREF_QUERY_RESPONSE |
|
4164 |
LASSO_IS_IDWSF2_SUBSREF_QUERY_RESPONSE |
|
4165 |
LASSO_TYPE_IDWSF2_SUBSREF_QUERY_RESPONSE |
|
4166 |
lasso_idwsf2_subsref_query_response_get_type |
|
4167 |
LASSO_IDWSF2_SUBSREF_QUERY_RESPONSE_CLASS |
|
4168 |
LASSO_IS_IDWSF2_SUBSREF_QUERY_RESPONSE_CLASS |
|
4169 |
LASSO_IDWSF2_SUBSREF_QUERY_RESPONSE_GET_CLASS |
|
4170 |
</SECTION> |
|
4171 | ||
4172 |
<SECTION> |
|
4173 |
<FILE>dst_delete_item_base</FILE> |
|
4174 |
<TITLE>LassoIdWsf2DstDeleteItemBase</TITLE> |
|
4175 |
LassoIdWsf2DstDeleteItemBase |
|
4176 |
lasso_idwsf2_dst_delete_item_base_new |
|
4177 |
<SUBSECTION Standard> |
|
4178 |
LASSO_IDWSF2_DST_DELETE_ITEM_BASE |
|
4179 |
LASSO_IS_IDWSF2_DST_DELETE_ITEM_BASE |
|
4180 |
LASSO_TYPE_IDWSF2_DST_DELETE_ITEM_BASE |
|
4181 |
lasso_idwsf2_dst_delete_item_base_get_type |
|
4182 |
LASSO_IDWSF2_DST_DELETE_ITEM_BASE_CLASS |
|
4183 |
LASSO_IS_IDWSF2_DST_DELETE_ITEM_BASE_CLASS |
|
4184 |
LASSO_IDWSF2_DST_DELETE_ITEM_BASE_GET_CLASS |
|
4185 |
</SECTION> |
|
4186 | ||
4187 |
<SECTION> |
|
4188 |
<FILE>disco_svc_md_association_query</FILE> |
|
4189 |
<TITLE>LassoIdWsf2DiscoSvcMDAssociationQuery</TITLE> |
|
4190 |
LassoIdWsf2DiscoSvcMDAssociationQuery |
|
4191 |
lasso_idwsf2_disco_svc_md_association_query_new |
|
4192 |
<SUBSECTION Standard> |
|
4193 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_QUERY |
|
4194 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_QUERY |
|
4195 |
LASSO_TYPE_IDWSF2_DISCO_SVC_MD_ASSOCIATION_QUERY |
|
4196 |
lasso_idwsf2_disco_svc_md_association_query_get_type |
|
4197 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_QUERY_CLASS |
|
4198 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_QUERY_CLASS |
|
4199 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_QUERY_GET_CLASS |
|
4200 |
</SECTION> |
|
4201 | ||
4202 |
<SECTION> |
|
4203 |
<FILE>subsref_app_data</FILE> |
|
4204 |
<TITLE>LassoIdWsf2SubsRefAppData</TITLE> |
|
4205 |
LassoIdWsf2SubsRefAppData |
|
4206 |
lasso_idwsf2_subsref_app_data_new |
|
4207 |
<SUBSECTION Standard> |
|
4208 |
LASSO_IDWSF2_SUBSREF_APP_DATA |
|
4209 |
LASSO_IS_IDWSF2_SUBSREF_APP_DATA |
|
4210 |
LASSO_TYPE_IDWSF2_SUBSREF_APP_DATA |
|
4211 |
lasso_idwsf2_subsref_app_data_get_type |
|
4212 |
LASSO_IDWSF2_SUBSREF_APP_DATA_CLASS |
|
4213 |
LASSO_IS_IDWSF2_SUBSREF_APP_DATA_CLASS |
|
4214 |
LASSO_IDWSF2_SUBSREF_APP_DATA_GET_CLASS |
|
4215 |
</SECTION> |
|
4216 | ||
4217 |
<SECTION> |
|
4218 |
<FILE>ps_query_objects_request</FILE> |
|
4219 |
<TITLE>LassoIdWsf2PsQueryObjectsRequest</TITLE> |
|
4220 |
LassoIdWsf2PsQueryObjectsRequest |
|
4221 |
lasso_idwsf2_ps_query_objects_request_new |
|
4222 |
<SUBSECTION Standard> |
|
4223 |
LASSO_IDWSF2_PS_QUERY_OBJECTS_REQUEST |
|
4224 |
LASSO_IS_IDWSF2_PS_QUERY_OBJECTS_REQUEST |
|
4225 |
LASSO_TYPE_IDWSF2_PS_QUERY_OBJECTS_REQUEST |
|
4226 |
lasso_idwsf2_ps_query_objects_request_get_type |
|
4227 |
LASSO_IDWSF2_PS_QUERY_OBJECTS_REQUEST_CLASS |
|
4228 |
LASSO_IS_IDWSF2_PS_QUERY_OBJECTS_REQUEST_CLASS |
|
4229 |
LASSO_IDWSF2_PS_QUERY_OBJECTS_REQUEST_GET_CLASS |
|
4230 |
</SECTION> |
|
4231 | ||
4232 |
<SECTION> |
|
4233 |
<FILE>id_wsf_2_0_is_select</FILE> |
|
4234 |
LASSO_IS_IDWSF2_IS_SELECT |
|
4235 |
<TITLE>LassoIdWsf2IsSelect</TITLE> |
|
4236 |
LassoIdWsf2IsSelect |
|
4237 |
lasso_idwsf2_is_select_new |
|
4238 |
<SUBSECTION Standard> |
|
4239 |
LASSO_IDWSF2_IS_SELECT |
|
4240 |
LASSO_TYPE_IDWSF2_IS_SELECT |
|
4241 |
lasso_idwsf2_is_select_get_type |
|
4242 |
LASSO_IDWSF2_IS_SELECT_CLASS |
|
4243 |
LASSO_IS_IDWSF2_IS_SELECT_CLASS |
|
4244 |
LASSO_IDWSF2_IS_SELECT_GET_CLASS |
|
4245 |
</SECTION> |
|
4246 | ||
4247 |
<SECTION> |
|
4248 |
<FILE>subsref_notify</FILE> |
|
4249 |
<TITLE>LassoIdWsf2SubsRefNotify</TITLE> |
|
4250 |
LassoIdWsf2SubsRefNotify |
|
4251 |
lasso_idwsf2_subsref_notify_new |
|
4252 |
<SUBSECTION Standard> |
|
4253 |
LASSO_IDWSF2_SUBSREF_NOTIFY |
|
4254 |
LASSO_IS_IDWSF2_SUBSREF_NOTIFY |
|
4255 |
LASSO_TYPE_IDWSF2_SUBSREF_NOTIFY |
|
4256 |
lasso_idwsf2_subsref_notify_get_type |
|
4257 |
LASSO_IDWSF2_SUBSREF_NOTIFY_CLASS |
|
4258 |
LASSO_IS_IDWSF2_SUBSREF_NOTIFY_CLASS |
|
4259 |
LASSO_IDWSF2_SUBSREF_NOTIFY_GET_CLASS |
|
4260 |
</SECTION> |
|
4261 | ||
4262 |
<SECTION> |
|
4263 |
<FILE>dstref_delete_item</FILE> |
|
4264 |
<TITLE>LassoIdWsf2DstRefDeleteItem</TITLE> |
|
4265 |
LassoIdWsf2DstRefDeleteItem |
|
4266 |
lasso_idwsf2_dstref_delete_item_new |
|
4267 |
<SUBSECTION Standard> |
|
4268 |
LASSO_IDWSF2_DSTREF_DELETE_ITEM |
|
4269 |
LASSO_IS_IDWSF2_DSTREF_DELETE_ITEM |
|
4270 |
LASSO_TYPE_IDWSF2_DSTREF_DELETE_ITEM |
|
4271 |
lasso_idwsf2_dstref_delete_item_get_type |
|
4272 |
LASSO_IDWSF2_DSTREF_DELETE_ITEM_CLASS |
|
4273 |
LASSO_IS_IDWSF2_DSTREF_DELETE_ITEM_CLASS |
|
4274 |
LASSO_IDWSF2_DSTREF_DELETE_ITEM_GET_CLASS |
|
4275 |
</SECTION> |
|
4276 | ||
4277 |
<SECTION> |
|
4278 |
<FILE>subsref_query</FILE> |
|
4279 |
<TITLE>LassoIdWsf2SubsRefQuery</TITLE> |
|
4280 |
LassoIdWsf2SubsRefQuery |
|
4281 |
lasso_idwsf2_subsref_query_new |
|
4282 |
<SUBSECTION Standard> |
|
4283 |
LASSO_IDWSF2_SUBSREF_QUERY |
|
4284 |
LASSO_IS_IDWSF2_SUBSREF_QUERY |
|
4285 |
LASSO_TYPE_IDWSF2_SUBSREF_QUERY |
|
4286 |
lasso_idwsf2_subsref_query_get_type |
|
4287 |
LASSO_IDWSF2_SUBSREF_QUERY_CLASS |
|
4288 |
LASSO_IS_IDWSF2_SUBSREF_QUERY_CLASS |
|
4289 |
LASSO_IDWSF2_SUBSREF_QUERY_GET_CLASS |
|
4290 |
</SECTION> |
|
4291 | ||
4292 |
<SECTION> |
|
4293 |
<FILE>ps_test_membership_request</FILE> |
|
4294 |
<TITLE>LassoIdWsf2PsTestMembershipRequest</TITLE> |
|
4295 |
LassoIdWsf2PsTestMembershipRequest |
|
4296 |
lasso_idwsf2_ps_test_membership_request_new |
|
4297 |
<SUBSECTION Standard> |
|
4298 |
LASSO_IDWSF2_PS_TEST_MEMBERSHIP_REQUEST |
|
4299 |
LASSO_IS_IDWSF2_PS_TEST_MEMBERSHIP_REQUEST |
|
4300 |
LASSO_TYPE_IDWSF2_PS_TEST_MEMBERSHIP_REQUEST |
|
4301 |
lasso_idwsf2_ps_test_membership_request_get_type |
|
4302 |
LASSO_IDWSF2_PS_TEST_MEMBERSHIP_REQUEST_CLASS |
|
4303 |
LASSO_IS_IDWSF2_PS_TEST_MEMBERSHIP_REQUEST_CLASS |
|
4304 |
LASSO_IDWSF2_PS_TEST_MEMBERSHIP_REQUEST_GET_CLASS |
|
4305 |
</SECTION> |
|
4306 | ||
4307 |
<SECTION> |
|
4308 |
<FILE>disco_svc_md_delete_response</FILE> |
|
4309 |
<TITLE>LassoIdWsf2DiscoSvcMDDeleteResponse</TITLE> |
|
4310 |
LassoIdWsf2DiscoSvcMDDeleteResponse |
|
4311 |
lasso_idwsf2_disco_svc_md_delete_response_new |
|
4312 |
<SUBSECTION Standard> |
|
4313 |
LASSO_IDWSF2_DISCO_SVC_MD_DELETE_RESPONSE |
|
4314 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_DELETE_RESPONSE |
|
4315 |
LASSO_TYPE_IDWSF2_DISCO_SVC_MD_DELETE_RESPONSE |
|
4316 |
lasso_idwsf2_disco_svc_md_delete_response_get_type |
|
4317 |
LASSO_IDWSF2_DISCO_SVC_MD_DELETE_RESPONSE_CLASS |
|
4318 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_DELETE_RESPONSE_CLASS |
|
4319 |
LASSO_IDWSF2_DISCO_SVC_MD_DELETE_RESPONSE_GET_CLASS |
|
4320 |
</SECTION> |
|
4321 | ||
4322 |
<SECTION> |
|
4323 |
<FILE>dstref_delete_response</FILE> |
|
4324 |
<TITLE>LassoIdWsf2DstRefDeleteResponse</TITLE> |
|
4325 |
LassoIdWsf2DstRefDeleteResponse |
|
4326 |
lasso_idwsf2_dstref_delete_response_new |
|
4327 |
<SUBSECTION Standard> |
|
4328 |
LASSO_IDWSF2_DSTREF_DELETE_RESPONSE |
|
4329 |
LASSO_IS_IDWSF2_DSTREF_DELETE_RESPONSE |
|
4330 |
LASSO_TYPE_IDWSF2_DSTREF_DELETE_RESPONSE |
|
4331 |
lasso_idwsf2_dstref_delete_response_get_type |
|
4332 |
LASSO_IDWSF2_DSTREF_DELETE_RESPONSE_CLASS |
|
4333 |
LASSO_IS_IDWSF2_DSTREF_DELETE_RESPONSE_CLASS |
|
4334 |
LASSO_IDWSF2_DSTREF_DELETE_RESPONSE_GET_CLASS |
|
4335 |
</SECTION> |
|
4336 | ||
4337 |
<SECTION> |
|
4338 |
<FILE>ps_request_abstract</FILE> |
|
4339 |
<TITLE>LassoIdWsf2PsRequestAbstract</TITLE> |
|
4340 |
LassoIdWsf2PsRequestAbstract |
|
4341 |
lasso_idwsf2_ps_request_abstract_new |
|
4342 |
<SUBSECTION Standard> |
|
4343 |
LASSO_IDWSF2_PS_REQUEST_ABSTRACT |
|
4344 |
LASSO_IS_IDWSF2_PS_REQUEST_ABSTRACT |
|
4345 |
LASSO_TYPE_IDWSF2_PS_REQUEST_ABSTRACT |
|
4346 |
lasso_idwsf2_ps_request_abstract_get_type |
|
4347 |
LASSO_IDWSF2_PS_REQUEST_ABSTRACT_CLASS |
|
4348 |
LASSO_IS_IDWSF2_PS_REQUEST_ABSTRACT_CLASS |
|
4349 |
LASSO_IDWSF2_PS_REQUEST_ABSTRACT_GET_CLASS |
|
4350 |
</SECTION> |
|
4351 | ||
4352 |
<SECTION> |
|
4353 |
<FILE>subsref_item_data</FILE> |
|
4354 |
<TITLE>LassoIdWsf2SubsRefItemData</TITLE> |
|
4355 |
LassoIdWsf2SubsRefItemData |
|
4356 |
lasso_idwsf2_subsref_item_data_new |
|
4357 |
<SUBSECTION Standard> |
|
4358 |
LASSO_IDWSF2_SUBSREF_ITEM_DATA |
|
4359 |
LASSO_IS_IDWSF2_SUBSREF_ITEM_DATA |
|
4360 |
LASSO_TYPE_IDWSF2_SUBSREF_ITEM_DATA |
|
4361 |
lasso_idwsf2_subsref_item_data_get_type |
|
4362 |
LASSO_IDWSF2_SUBSREF_ITEM_DATA_CLASS |
|
4363 |
LASSO_IS_IDWSF2_SUBSREF_ITEM_DATA_CLASS |
|
4364 |
LASSO_IDWSF2_SUBSREF_ITEM_DATA_GET_CLASS |
|
4365 |
</SECTION> |
|
4366 | ||
4367 |
<SECTION> |
|
4368 |
<FILE>sb2_user_interaction_header</FILE> |
|
4369 |
<TITLE>LassoIdWsf2Sb2UserInteractionHeader</TITLE> |
|
4370 |
LassoIdWsf2Sb2UserInteractionHeader |
|
4371 |
lasso_idwsf2_sb2_user_interaction_header_new |
|
4372 |
<SUBSECTION Standard> |
|
4373 |
LASSO_IDWSF2_SB2_USER_INTERACTION_HEADER |
|
4374 |
LASSO_IS_IDWSF2_SB2_USER_INTERACTION_HEADER |
|
4375 |
LASSO_TYPE_IDWSF2_SB2_USER_INTERACTION_HEADER |
|
4376 |
lasso_idwsf2_sb2_user_interaction_header_get_type |
|
4377 |
LASSO_IDWSF2_SB2_USER_INTERACTION_HEADER_CLASS |
|
4378 |
LASSO_IS_IDWSF2_SB2_USER_INTERACTION_HEADER_CLASS |
|
4379 |
LASSO_IDWSF2_SB2_USER_INTERACTION_HEADER_GET_CLASS |
|
4380 |
</SECTION> |
|
4381 | ||
4382 |
<SECTION> |
|
4383 |
<FILE>dst_result_query_base</FILE> |
|
4384 |
<TITLE>LassoIdWsf2DstResultQueryBase</TITLE> |
|
4385 |
LassoIdWsf2DstResultQueryBase |
|
4386 |
lasso_idwsf2_dst_result_query_base_new |
|
4387 |
<SUBSECTION Standard> |
|
4388 |
LASSO_IDWSF2_DST_RESULT_QUERY_BASE |
|
4389 |
LASSO_IS_IDWSF2_DST_RESULT_QUERY_BASE |
|
4390 |
LASSO_TYPE_IDWSF2_DST_RESULT_QUERY_BASE |
|
4391 |
lasso_idwsf2_dst_result_query_base_get_type |
|
4392 |
LASSO_IDWSF2_DST_RESULT_QUERY_BASE_CLASS |
|
4393 |
LASSO_IS_IDWSF2_DST_RESULT_QUERY_BASE_CLASS |
|
4394 |
LASSO_IDWSF2_DST_RESULT_QUERY_BASE_GET_CLASS |
|
4395 |
</SECTION> |
|
4396 | ||
4397 |
<SECTION> |
|
4398 |
<FILE>ims_mapping_output</FILE> |
|
4399 |
<TITLE>LassoIdWsf2ImsMappingOutput</TITLE> |
|
4400 |
LassoIdWsf2ImsMappingOutput |
|
4401 |
lasso_idwsf2_ims_mapping_output_new |
|
4402 |
<SUBSECTION Standard> |
|
4403 |
LASSO_IDWSF2_IMS_MAPPING_OUTPUT |
|
4404 |
LASSO_IS_IDWSF2_IMS_MAPPING_OUTPUT |
|
4405 |
LASSO_TYPE_IDWSF2_IMS_MAPPING_OUTPUT |
|
4406 |
lasso_idwsf2_ims_mapping_output_get_type |
|
4407 |
LASSO_IDWSF2_IMS_MAPPING_OUTPUT_CLASS |
|
4408 |
LASSO_IS_IDWSF2_IMS_MAPPING_OUTPUT_CLASS |
|
4409 |
LASSO_IDWSF2_IMS_MAPPING_OUTPUT_GET_CLASS |
|
4410 |
</SECTION> |
|
4411 | ||
4412 |
<SECTION> |
|
4413 |
<FILE>ps_get_object_info_request</FILE> |
|
4414 |
<TITLE>LassoIdWsf2PsGetObjectInfoRequest</TITLE> |
|
4415 |
LassoIdWsf2PsGetObjectInfoRequest |
|
4416 |
lasso_idwsf2_ps_get_object_info_request_new |
|
4417 |
<SUBSECTION Standard> |
|
4418 |
LASSO_IDWSF2_PS_GET_OBJECT_INFO_REQUEST |
|
4419 |
LASSO_IS_IDWSF2_PS_GET_OBJECT_INFO_REQUEST |
|
4420 |
LASSO_TYPE_IDWSF2_PS_GET_OBJECT_INFO_REQUEST |
|
4421 |
lasso_idwsf2_ps_get_object_info_request_get_type |
|
4422 |
LASSO_IDWSF2_PS_GET_OBJECT_INFO_REQUEST_CLASS |
|
4423 |
LASSO_IS_IDWSF2_PS_GET_OBJECT_INFO_REQUEST_CLASS |
|
4424 |
LASSO_IDWSF2_PS_GET_OBJECT_INFO_REQUEST_GET_CLASS |
|
4425 |
</SECTION> |
|
4426 | ||
4427 |
<SECTION> |
|
4428 |
<FILE>ps_add_known_entity_response</FILE> |
|
4429 |
<TITLE>LassoIdWsf2PsAddKnownEntityResponse</TITLE> |
|
4430 |
LassoIdWsf2PsAddKnownEntityResponse |
|
4431 |
lasso_idwsf2_ps_add_known_entity_response_new |
|
4432 |
<SUBSECTION Standard> |
|
4433 |
LASSO_IDWSF2_PS_ADD_KNOWN_ENTITY_RESPONSE |
|
4434 |
LASSO_IS_IDWSF2_PS_ADD_KNOWN_ENTITY_RESPONSE |
|
4435 |
LASSO_TYPE_IDWSF2_PS_ADD_KNOWN_ENTITY_RESPONSE |
|
4436 |
lasso_idwsf2_ps_add_known_entity_response_get_type |
|
4437 |
LASSO_IDWSF2_PS_ADD_KNOWN_ENTITY_RESPONSE_CLASS |
|
4438 |
LASSO_IS_IDWSF2_PS_ADD_KNOWN_ENTITY_RESPONSE_CLASS |
|
4439 |
LASSO_IDWSF2_PS_ADD_KNOWN_ENTITY_RESPONSE_GET_CLASS |
|
4440 |
</SECTION> |
|
4441 | ||
4442 |
<SECTION> |
|
4443 |
<FILE>sb2_timeout</FILE> |
|
4444 |
<TITLE>LassoIdWsf2Sb2Timeout</TITLE> |
|
4445 |
LassoIdWsf2Sb2Timeout |
|
4446 |
lasso_idwsf2_sb2_timeout_new |
|
4447 |
<SUBSECTION Standard> |
|
4448 |
LASSO_IDWSF2_SB2_TIMEOUT |
|
4449 |
LASSO_IS_IDWSF2_SB2_TIMEOUT |
|
4450 |
LASSO_TYPE_IDWSF2_SB2_TIMEOUT |
|
4451 |
lasso_idwsf2_sb2_timeout_get_type |
|
4452 |
LASSO_IDWSF2_SB2_TIMEOUT_CLASS |
|
4453 |
LASSO_IS_IDWSF2_SB2_TIMEOUT_CLASS |
|
4454 |
LASSO_IDWSF2_SB2_TIMEOUT_GET_CLASS |
|
4455 |
</SECTION> |
|
4456 | ||
4457 |
<SECTION> |
|
4458 |
<FILE>disco_service_context</FILE> |
|
4459 |
<TITLE>LassoIdWsf2DiscoServiceContext</TITLE> |
|
4460 |
LassoIdWsf2DiscoServiceContext |
|
4461 |
lasso_idwsf2_disco_service_context_new |
|
4462 |
lasso_idwsf2_disco_service_context_new_full |
|
4463 |
<SUBSECTION Standard> |
|
4464 |
LASSO_IDWSF2_DISCO_SERVICE_CONTEXT |
|
4465 |
LASSO_IS_IDWSF2_DISCO_SERVICE_CONTEXT |
|
4466 |
LASSO_TYPE_IDWSF2_DISCO_SERVICE_CONTEXT |
|
4467 |
lasso_idwsf2_disco_service_context_get_type |
|
4468 |
LASSO_IDWSF2_DISCO_SERVICE_CONTEXT_CLASS |
|
4469 |
LASSO_IS_IDWSF2_DISCO_SERVICE_CONTEXT_CLASS |
|
4470 |
LASSO_IDWSF2_DISCO_SERVICE_CONTEXT_GET_CLASS |
|
4471 |
</SECTION> |
|
4472 | ||
4473 |
<SECTION> |
|
4474 |
<FILE>subsref_result_query</FILE> |
|
4475 |
<TITLE>LassoIdWsf2SubsRefResultQuery</TITLE> |
|
4476 |
LassoIdWsf2SubsRefResultQuery |
|
4477 |
lasso_idwsf2_subsref_result_query_new |
|
4478 |
<SUBSECTION Standard> |
|
4479 |
LASSO_IDWSF2_SUBSREF_RESULT_QUERY |
|
4480 |
LASSO_IS_IDWSF2_SUBSREF_RESULT_QUERY |
|
4481 |
LASSO_TYPE_IDWSF2_SUBSREF_RESULT_QUERY |
|
4482 |
lasso_idwsf2_subsref_result_query_get_type |
|
4483 |
LASSO_IDWSF2_SUBSREF_RESULT_QUERY_CLASS |
|
4484 |
LASSO_IS_IDWSF2_SUBSREF_RESULT_QUERY_CLASS |
|
4485 |
LASSO_IDWSF2_SUBSREF_RESULT_QUERY_GET_CLASS |
|
4486 |
</SECTION> |
|
4487 | ||
4488 |
<SECTION> |
|
4489 |
<FILE>ps_add_collection_response</FILE> |
|
4490 |
<TITLE>LassoIdWsf2PsAddCollectionResponse</TITLE> |
|
4491 |
LassoIdWsf2PsAddCollectionResponse |
|
4492 |
lasso_idwsf2_ps_add_collection_response_new |
|
4493 |
<SUBSECTION Standard> |
|
4494 |
LASSO_IDWSF2_PS_ADD_COLLECTION_RESPONSE |
|
4495 |
LASSO_IS_IDWSF2_PS_ADD_COLLECTION_RESPONSE |
|
4496 |
LASSO_TYPE_IDWSF2_PS_ADD_COLLECTION_RESPONSE |
|
4497 |
lasso_idwsf2_ps_add_collection_response_get_type |
|
4498 |
LASSO_IDWSF2_PS_ADD_COLLECTION_RESPONSE_CLASS |
|
4499 |
LASSO_IS_IDWSF2_PS_ADD_COLLECTION_RESPONSE_CLASS |
|
4500 |
LASSO_IDWSF2_PS_ADD_COLLECTION_RESPONSE_GET_CLASS |
|
4501 |
</SECTION> |
|
4502 | ||
4503 |
<SECTION> |
|
4504 |
<FILE>dstref_result_query</FILE> |
|
4505 |
<TITLE>LassoIdWsf2DstRefResultQuery</TITLE> |
|
4506 |
LassoIdWsf2DstRefResultQuery |
|
4507 |
lasso_idwsf2_dstref_result_query_new |
|
4508 |
<SUBSECTION Standard> |
|
4509 |
LASSO_IDWSF2_DSTREF_RESULT_QUERY |
|
4510 |
LASSO_IS_IDWSF2_DSTREF_RESULT_QUERY |
|
4511 |
LASSO_TYPE_IDWSF2_DSTREF_RESULT_QUERY |
|
4512 |
lasso_idwsf2_dstref_result_query_get_type |
|
4513 |
LASSO_IDWSF2_DSTREF_RESULT_QUERY_CLASS |
|
4514 |
LASSO_IS_IDWSF2_DSTREF_RESULT_QUERY_CLASS |
|
4515 |
LASSO_IDWSF2_DSTREF_RESULT_QUERY_GET_CLASS |
|
4516 |
</SECTION> |
|
4517 | ||
4518 |
<SECTION> |
|
4519 |
<FILE>sb2_consent</FILE> |
|
4520 |
<TITLE>LassoIdWsf2Sb2Consent</TITLE> |
|
4521 |
LassoIdWsf2Sb2Consent |
|
4522 |
lasso_idwsf2_sb2_consent_new |
|
4523 |
<SUBSECTION Standard> |
|
4524 |
LASSO_IDWSF2_SB2_CONSENT |
|
4525 |
LASSO_IS_IDWSF2_SB2_CONSENT |
|
4526 |
LASSO_TYPE_IDWSF2_SB2_CONSENT |
|
4527 |
lasso_idwsf2_sb2_consent_get_type |
|
4528 |
LASSO_IDWSF2_SB2_CONSENT_CLASS |
|
4529 |
LASSO_IS_IDWSF2_SB2_CONSENT_CLASS |
|
4530 |
LASSO_IDWSF2_SB2_CONSENT_GET_CLASS |
|
4531 |
</SECTION> |
|
4532 | ||
4533 |
<SECTION> |
|
4534 |
<FILE>ps_item_data</FILE> |
|
4535 |
<TITLE>LassoIdWsf2PsItemData</TITLE> |
|
4536 |
LassoIdWsf2PsItemData |
|
4537 |
lasso_idwsf2_ps_item_data_new |
|
4538 |
<SUBSECTION Standard> |
|
4539 |
LASSO_IDWSF2_PS_ITEM_DATA |
|
4540 |
LASSO_IS_IDWSF2_PS_ITEM_DATA |
|
4541 |
LASSO_TYPE_IDWSF2_PS_ITEM_DATA |
|
4542 |
lasso_idwsf2_ps_item_data_get_type |
|
4543 |
LASSO_IDWSF2_PS_ITEM_DATA_CLASS |
|
4544 |
LASSO_IS_IDWSF2_PS_ITEM_DATA_CLASS |
|
4545 |
LASSO_IDWSF2_PS_ITEM_DATA_GET_CLASS |
|
4546 |
</SECTION> |
|
4547 | ||
4548 |
<SECTION> |
|
4549 |
<FILE>subsref_data</FILE> |
|
4550 |
<TITLE>LassoIdWsf2SubsRefData</TITLE> |
|
4551 |
LassoIdWsf2SubsRefData |
|
4552 |
lasso_idwsf2_subsref_data_new |
|
4553 |
<SUBSECTION Standard> |
|
4554 |
LASSO_IDWSF2_SUBSREF_DATA |
|
4555 |
LASSO_IS_IDWSF2_SUBSREF_DATA |
|
4556 |
LASSO_TYPE_IDWSF2_SUBSREF_DATA |
|
4557 |
lasso_idwsf2_subsref_data_get_type |
|
4558 |
LASSO_IDWSF2_SUBSREF_DATA_CLASS |
|
4559 |
LASSO_IS_IDWSF2_SUBSREF_DATA_CLASS |
|
4560 |
LASSO_IDWSF2_SUBSREF_DATA_GET_CLASS |
|
4561 |
</SECTION> |
|
4562 | ||
4563 |
<SECTION> |
|
4564 |
<FILE>ims_mapping_input</FILE> |
|
4565 |
<TITLE>LassoIdWsf2ImsMappingInput</TITLE> |
|
4566 |
LassoIdWsf2ImsMappingInput |
|
4567 |
lasso_idwsf2_ims_mapping_input_new |
|
4568 |
<SUBSECTION Standard> |
|
4569 |
LASSO_IDWSF2_IMS_MAPPING_INPUT |
|
4570 |
LASSO_IS_IDWSF2_IMS_MAPPING_INPUT |
|
4571 |
LASSO_TYPE_IDWSF2_IMS_MAPPING_INPUT |
|
4572 |
lasso_idwsf2_ims_mapping_input_get_type |
|
4573 |
LASSO_IDWSF2_IMS_MAPPING_INPUT_CLASS |
|
4574 |
LASSO_IS_IDWSF2_IMS_MAPPING_INPUT_CLASS |
|
4575 |
LASSO_IDWSF2_IMS_MAPPING_INPUT_GET_CLASS |
|
4576 |
</SECTION> |
|
4577 | ||
4578 |
<SECTION> |
|
4579 |
<FILE>sb2_usage_directive</FILE> |
|
4580 |
<TITLE>LassoIdWsf2Sb2UsageDirective</TITLE> |
|
4581 |
LassoIdWsf2Sb2UsageDirective |
|
4582 |
lasso_idwsf2_sb2_usage_directive_new |
|
4583 |
<SUBSECTION Standard> |
|
4584 |
LASSO_IDWSF2_SB2_USAGE_DIRECTIVE |
|
4585 |
LASSO_IS_IDWSF2_SB2_USAGE_DIRECTIVE |
|
4586 |
LASSO_TYPE_IDWSF2_SB2_USAGE_DIRECTIVE |
|
4587 |
lasso_idwsf2_sb2_usage_directive_get_type |
|
4588 |
LASSO_IDWSF2_SB2_USAGE_DIRECTIVE_CLASS |
|
4589 |
LASSO_IS_IDWSF2_SB2_USAGE_DIRECTIVE_CLASS |
|
4590 |
LASSO_IDWSF2_SB2_USAGE_DIRECTIVE_GET_CLASS |
|
4591 |
</SECTION> |
|
4592 | ||
4593 |
<SECTION> |
|
4594 |
<FILE>subsref_modify_item</FILE> |
|
4595 |
<TITLE>LassoIdWsf2SubsRefModifyItem</TITLE> |
|
4596 |
LassoIdWsf2SubsRefModifyItem |
|
4597 |
lasso_idwsf2_subsref_modify_item_new |
|
4598 |
<SUBSECTION Standard> |
|
4599 |
LASSO_IDWSF2_SUBSREF_MODIFY_ITEM |
|
4600 |
LASSO_IS_IDWSF2_SUBSREF_MODIFY_ITEM |
|
4601 |
LASSO_TYPE_IDWSF2_SUBSREF_MODIFY_ITEM |
|
4602 |
lasso_idwsf2_subsref_modify_item_get_type |
|
4603 |
LASSO_IDWSF2_SUBSREF_MODIFY_ITEM_CLASS |
|
4604 |
LASSO_IS_IDWSF2_SUBSREF_MODIFY_ITEM_CLASS |
|
4605 |
LASSO_IDWSF2_SUBSREF_MODIFY_ITEM_GET_CLASS |
|
4606 |
</SECTION> |
|
4607 | ||
4608 |
<SECTION> |
|
4609 |
<FILE>dstref_delete</FILE> |
|
4610 |
<TITLE>LassoIdWsf2DstRefDelete</TITLE> |
|
4611 |
LassoIdWsf2DstRefDelete |
|
4612 |
lasso_idwsf2_dstref_delete_new |
|
4613 |
<SUBSECTION Standard> |
|
4614 |
LASSO_IDWSF2_DSTREF_DELETE |
|
4615 |
LASSO_IS_IDWSF2_DSTREF_DELETE |
|
4616 |
LASSO_TYPE_IDWSF2_DSTREF_DELETE |
|
4617 |
lasso_idwsf2_dstref_delete_get_type |
|
4618 |
LASSO_IDWSF2_DSTREF_DELETE_CLASS |
|
4619 |
LASSO_IS_IDWSF2_DSTREF_DELETE_CLASS |
|
4620 |
LASSO_IDWSF2_DSTREF_DELETE_GET_CLASS |
|
4621 |
</SECTION> |
|
4622 | ||
4623 |
<SECTION> |
|
4624 |
<FILE>id_wsf_2_0_is_interaction_request</FILE> |
|
4625 |
LASSO_IS_IDWSF2_IS_INTERACTION_REQUEST |
|
4626 |
<TITLE>LassoIdWsf2IsInteractionRequest</TITLE> |
|
4627 |
LassoIdWsf2IsInteractionRequest |
|
4628 |
lasso_idwsf2_is_interaction_request_new |
|
4629 |
<SUBSECTION Standard> |
|
4630 |
LASSO_IDWSF2_IS_INTERACTION_REQUEST |
|
4631 |
LASSO_TYPE_IDWSF2_IS_INTERACTION_REQUEST |
|
4632 |
lasso_idwsf2_is_interaction_request_get_type |
|
4633 |
LASSO_IDWSF2_IS_INTERACTION_REQUEST_CLASS |
|
4634 |
LASSO_IS_IDWSF2_IS_INTERACTION_REQUEST_CLASS |
|
4635 |
LASSO_IDWSF2_IS_INTERACTION_REQUEST_GET_CLASS |
|
4636 |
</SECTION> |
|
4637 | ||
4638 |
<SECTION> |
|
4639 |
<FILE>ps_object</FILE> |
|
4640 |
<TITLE>LassoIdWsf2PsObject</TITLE> |
|
4641 |
LassoIdWsf2PsObject |
|
4642 |
lasso_idwsf2_ps_object_new |
|
4643 |
<SUBSECTION Standard> |
|
4644 |
LASSO_IDWSF2_PS_OBJECT |
|
4645 |
LASSO_IS_IDWSF2_PS_OBJECT |
|
4646 |
LASSO_TYPE_IDWSF2_PS_OBJECT |
|
4647 |
lasso_idwsf2_ps_object_get_type |
|
4648 |
LASSO_IDWSF2_PS_OBJECT_CLASS |
|
4649 |
LASSO_IS_IDWSF2_PS_OBJECT_CLASS |
|
4650 |
LASSO_IDWSF2_PS_OBJECT_GET_CLASS |
|
4651 |
</SECTION> |
|
4652 | ||
4653 |
<SECTION> |
|
4654 |
<FILE>dstref_create</FILE> |
|
4655 |
<TITLE>LassoIdWsf2DstRefCreate</TITLE> |
|
4656 |
LassoIdWsf2DstRefCreate |
|
4657 |
lasso_idwsf2_dstref_create_new |
|
4658 |
<SUBSECTION Standard> |
|
4659 |
LASSO_IDWSF2_DSTREF_CREATE |
|
4660 |
LASSO_IS_IDWSF2_DSTREF_CREATE |
|
4661 |
LASSO_TYPE_IDWSF2_DSTREF_CREATE |
|
4662 |
lasso_idwsf2_dstref_create_get_type |
|
4663 |
LASSO_IDWSF2_DSTREF_CREATE_CLASS |
|
4664 |
LASSO_IS_IDWSF2_DSTREF_CREATE_CLASS |
|
4665 |
LASSO_IDWSF2_DSTREF_CREATE_GET_CLASS |
|
4666 |
</SECTION> |
|
4667 | ||
4668 |
<SECTION> |
|
4669 |
<FILE>sb2_credentials_context</FILE> |
|
4670 |
<TITLE>LassoIdWsf2Sb2CredentialsContext</TITLE> |
|
4671 |
LassoIdWsf2Sb2CredentialsContext |
|
4672 |
lasso_idwsf2_sb2_credentials_context_new |
|
4673 |
<SUBSECTION Standard> |
|
4674 |
LASSO_IDWSF2_SB2_CREDENTIALS_CONTEXT |
|
4675 |
LASSO_IS_IDWSF2_SB2_CREDENTIALS_CONTEXT |
|
4676 |
LASSO_TYPE_IDWSF2_SB2_CREDENTIALS_CONTEXT |
|
4677 |
lasso_idwsf2_sb2_credentials_context_get_type |
|
4678 |
LASSO_IDWSF2_SB2_CREDENTIALS_CONTEXT_CLASS |
|
4679 |
LASSO_IS_IDWSF2_SB2_CREDENTIALS_CONTEXT_CLASS |
|
4680 |
LASSO_IDWSF2_SB2_CREDENTIALS_CONTEXT_GET_CLASS |
|
4681 |
</SECTION> |
|
4682 | ||
4683 |
<SECTION> |
|
4684 |
<FILE>dstref_modify_response</FILE> |
|
4685 |
<TITLE>LassoIdWsf2DstRefModifyResponse</TITLE> |
|
4686 |
LassoIdWsf2DstRefModifyResponse |
|
4687 |
lasso_idwsf2_dstref_modify_response_new |
|
4688 |
<SUBSECTION Standard> |
|
4689 |
LASSO_IDWSF2_DSTREF_MODIFY_RESPONSE |
|
4690 |
LASSO_IS_IDWSF2_DSTREF_MODIFY_RESPONSE |
|
4691 |
LASSO_TYPE_IDWSF2_DSTREF_MODIFY_RESPONSE |
|
4692 |
lasso_idwsf2_dstref_modify_response_get_type |
|
4693 |
LASSO_IDWSF2_DSTREF_MODIFY_RESPONSE_CLASS |
|
4694 |
LASSO_IS_IDWSF2_DSTREF_MODIFY_RESPONSE_CLASS |
|
4695 |
LASSO_IDWSF2_DSTREF_MODIFY_RESPONSE_GET_CLASS |
|
4696 |
</SECTION> |
|
4697 | ||
4698 |
<SECTION> |
|
4699 |
<FILE>disco_svc_metadata</FILE> |
|
4700 |
<TITLE>LassoIdWsf2DiscoSvcMetadata</TITLE> |
|
4701 |
LassoIdWsf2DiscoSvcMetadata |
|
4702 |
lasso_idwsf2_disco_svc_metadata_new |
|
4703 |
lasso_idwsf2_disco_svc_metadata_new_full |
|
4704 |
<SUBSECTION Standard> |
|
4705 |
LASSO_IDWSF2_DISCO_SVC_METADATA |
|
4706 |
LASSO_IS_IDWSF2_DISCO_SVC_METADATA |
|
4707 |
LASSO_TYPE_IDWSF2_DISCO_SVC_METADATA |
|
4708 |
lasso_idwsf2_disco_svc_metadata_get_type |
|
4709 |
LASSO_IDWSF2_DISCO_SVC_METADATA_CLASS |
|
4710 |
LASSO_IS_IDWSF2_DISCO_SVC_METADATA_CLASS |
|
4711 |
LASSO_IDWSF2_DISCO_SVC_METADATA_GET_CLASS |
|
4712 |
</SECTION> |
|
4713 | ||
4714 |
<SECTION> |
|
4715 |
<FILE>util_response</FILE> |
|
4716 |
<TITLE>LassoIdWsf2UtilResponse</TITLE> |
|
4717 |
LassoIdWsf2UtilResponse |
|
4718 |
lasso_idwsf2_util_response_new |
|
4719 |
lasso_idwsf2_util_response_set_status |
|
4720 |
lasso_idwsf2_util_response_set_status2 |
|
4721 |
<SUBSECTION Standard> |
|
4722 |
LASSO_IDWSF2_UTIL_RESPONSE |
|
4723 |
LASSO_IS_IDWSF2_UTIL_RESPONSE |
|
4724 |
LASSO_TYPE_IDWSF2_UTIL_RESPONSE |
|
4725 |
lasso_idwsf2_util_response_get_type |
|
4726 |
LASSO_IDWSF2_UTIL_RESPONSE_CLASS |
|
4727 |
LASSO_IS_IDWSF2_UTIL_RESPONSE_CLASS |
|
4728 |
LASSO_IDWSF2_UTIL_RESPONSE_GET_CLASS |
|
4729 |
</SECTION> |
|
4730 | ||
4731 |
<SECTION> |
|
4732 |
<FILE>sbf_framework</FILE> |
|
4733 |
<TITLE>LassoIdWsf2SbfFramework</TITLE> |
|
4734 |
LassoIdWsf2SbfFramework |
|
4735 |
lasso_idwsf2_sbf_framework_new |
|
4736 |
lasso_idwsf2_sbf_framework_new_full |
|
4737 |
<SUBSECTION Standard> |
|
4738 |
LASSO_IDWSF2_SBF_FRAMEWORK |
|
4739 |
LASSO_IS_IDWSF2_SBF_FRAMEWORK |
|
4740 |
LASSO_TYPE_IDWSF2_SBF_FRAMEWORK |
|
4741 |
lasso_idwsf2_sbf_framework_get_type |
|
4742 |
LASSO_IDWSF2_SBF_FRAMEWORK_CLASS |
|
4743 |
LASSO_IS_IDWSF2_SBF_FRAMEWORK_CLASS |
|
4744 |
LASSO_IDWSF2_SBF_FRAMEWORK_GET_CLASS |
|
4745 |
</SECTION> |
|
4746 | ||
4747 |
<SECTION> |
|
4748 |
<FILE>disco_requested_service</FILE> |
|
4749 |
<TITLE>LassoIdWsf2DiscoRequestedService</TITLE> |
|
4750 |
LassoIdWsf2DiscoRequestedService |
|
4751 |
lasso_idwsf2_disco_requested_service_new |
|
4752 |
<SUBSECTION Standard> |
|
4753 |
LASSO_IDWSF2_DISCO_REQUESTED_SERVICE |
|
4754 |
LASSO_IS_IDWSF2_DISCO_REQUESTED_SERVICE |
|
4755 |
LASSO_TYPE_IDWSF2_DISCO_REQUESTED_SERVICE |
|
4756 |
lasso_idwsf2_disco_requested_service_get_type |
|
4757 |
LASSO_IDWSF2_DISCO_REQUESTED_SERVICE_CLASS |
|
4758 |
LASSO_IS_IDWSF2_DISCO_REQUESTED_SERVICE_CLASS |
|
4759 |
LASSO_IDWSF2_DISCO_REQUESTED_SERVICE_GET_CLASS |
|
4760 |
</SECTION> |
|
4761 | ||
4762 |
<SECTION> |
|
4763 |
<FILE>ps_list_members_request</FILE> |
|
4764 |
<TITLE>LassoIdWsf2PsListMembersRequest</TITLE> |
|
4765 |
LassoIdWsf2PsListMembersRequest |
|
4766 |
lasso_idwsf2_ps_list_members_request_new |
|
4767 |
<SUBSECTION Standard> |
|
4768 |
LASSO_IDWSF2_PS_LIST_MEMBERS_REQUEST |
|
4769 |
LASSO_IS_IDWSF2_PS_LIST_MEMBERS_REQUEST |
|
4770 |
LASSO_TYPE_IDWSF2_PS_LIST_MEMBERS_REQUEST |
|
4771 |
lasso_idwsf2_ps_list_members_request_get_type |
|
4772 |
LASSO_IDWSF2_PS_LIST_MEMBERS_REQUEST_CLASS |
|
4773 |
LASSO_IS_IDWSF2_PS_LIST_MEMBERS_REQUEST_CLASS |
|
4774 |
LASSO_IDWSF2_PS_LIST_MEMBERS_REQUEST_GET_CLASS |
|
4775 |
</SECTION> |
|
4776 | ||
4777 |
<SECTION> |
|
4778 |
<FILE>subsref_query_item</FILE> |
|
4779 |
<TITLE>LassoIdWsf2SubsRefQueryItem</TITLE> |
|
4780 |
LassoIdWsf2SubsRefQueryItem |
|
4781 |
lasso_idwsf2_subsref_query_item_new |
|
4782 |
<SUBSECTION Standard> |
|
4783 |
LASSO_IDWSF2_SUBSREF_QUERY_ITEM |
|
4784 |
LASSO_IS_IDWSF2_SUBSREF_QUERY_ITEM |
|
4785 |
LASSO_TYPE_IDWSF2_SUBSREF_QUERY_ITEM |
|
4786 |
lasso_idwsf2_subsref_query_item_get_type |
|
4787 |
LASSO_IDWSF2_SUBSREF_QUERY_ITEM_CLASS |
|
4788 |
LASSO_IS_IDWSF2_SUBSREF_QUERY_ITEM_CLASS |
|
4789 |
LASSO_IDWSF2_SUBSREF_QUERY_ITEM_GET_CLASS |
|
4790 |
</SECTION> |
|
4791 | ||
4792 |
<SECTION> |
|
4793 |
<FILE>ps_resolve_identifier_request</FILE> |
|
4794 |
<TITLE>LassoIdWsf2PsResolveIdentifierRequest</TITLE> |
|
4795 |
LassoIdWsf2PsResolveIdentifierRequest |
|
4796 |
lasso_idwsf2_ps_resolve_identifier_request_new |
|
4797 |
<SUBSECTION Standard> |
|
4798 |
LASSO_IDWSF2_PS_RESOLVE_IDENTIFIER_REQUEST |
|
4799 |
LASSO_IS_IDWSF2_PS_RESOLVE_IDENTIFIER_REQUEST |
|
4800 |
LASSO_TYPE_IDWSF2_PS_RESOLVE_IDENTIFIER_REQUEST |
|
4801 |
lasso_idwsf2_ps_resolve_identifier_request_get_type |
|
4802 |
LASSO_IDWSF2_PS_RESOLVE_IDENTIFIER_REQUEST_CLASS |
|
4803 |
LASSO_IS_IDWSF2_PS_RESOLVE_IDENTIFIER_REQUEST_CLASS |
|
4804 |
LASSO_IDWSF2_PS_RESOLVE_IDENTIFIER_REQUEST_GET_CLASS |
|
4805 |
</SECTION> |
|
4806 | ||
4807 |
<SECTION> |
|
4808 |
<FILE>disco_svc_md_replace</FILE> |
|
4809 |
<TITLE>LassoIdWsf2DiscoSvcMDReplace</TITLE> |
|
4810 |
LassoIdWsf2DiscoSvcMDReplace |
|
4811 |
lasso_idwsf2_disco_svc_md_replace_new |
|
4812 |
<SUBSECTION Standard> |
|
4813 |
LASSO_IDWSF2_DISCO_SVC_MD_REPLACE |
|
4814 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_REPLACE |
|
4815 |
LASSO_TYPE_IDWSF2_DISCO_SVC_MD_REPLACE |
|
4816 |
lasso_idwsf2_disco_svc_md_replace_get_type |
|
4817 |
LASSO_IDWSF2_DISCO_SVC_MD_REPLACE_CLASS |
|
4818 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_REPLACE_CLASS |
|
4819 |
LASSO_IDWSF2_DISCO_SVC_MD_REPLACE_GET_CLASS |
|
4820 |
</SECTION> |
|
4821 | ||
4822 |
<SECTION> |
|
4823 |
<FILE>sb2_sender</FILE> |
|
4824 |
<TITLE>LassoIdWsf2Sb2Sender</TITLE> |
|
4825 |
LassoIdWsf2Sb2Sender |
|
4826 |
lasso_idwsf2_sb2_sender_new |
|
4827 |
<SUBSECTION Standard> |
|
4828 |
LASSO_IDWSF2_SB2_SENDER |
|
4829 |
LASSO_IS_IDWSF2_SB2_SENDER |
|
4830 |
LASSO_TYPE_IDWSF2_SB2_SENDER |
|
4831 |
lasso_idwsf2_sb2_sender_get_type |
|
4832 |
LASSO_IDWSF2_SB2_SENDER_CLASS |
|
4833 |
LASSO_IS_IDWSF2_SB2_SENDER_CLASS |
|
4834 |
LASSO_IDWSF2_SB2_SENDER_GET_CLASS |
|
4835 |
</SECTION> |
|
4836 | ||
4837 |
<SECTION> |
|
4838 |
<FILE>dstref_query_response</FILE> |
|
4839 |
<TITLE>LassoIdWsf2DstRefQueryResponse</TITLE> |
|
4840 |
LassoIdWsf2DstRefQueryResponse |
|
4841 |
lasso_idwsf2_dstref_query_response_new |
|
4842 |
<SUBSECTION Standard> |
|
4843 |
LASSO_IDWSF2_DSTREF_QUERY_RESPONSE |
|
4844 |
LASSO_IS_IDWSF2_DSTREF_QUERY_RESPONSE |
|
4845 |
LASSO_TYPE_IDWSF2_DSTREF_QUERY_RESPONSE |
|
4846 |
lasso_idwsf2_dstref_query_response_get_type |
|
4847 |
LASSO_IDWSF2_DSTREF_QUERY_RESPONSE_CLASS |
|
4848 |
LASSO_IS_IDWSF2_DSTREF_QUERY_RESPONSE_CLASS |
|
4849 |
LASSO_IDWSF2_DSTREF_QUERY_RESPONSE_GET_CLASS |
|
4850 |
</SECTION> |
|
4851 | ||
4852 |
<SECTION> |
|
4853 |
<FILE>ps_notify</FILE> |
|
4854 |
<TITLE>LassoIdWsf2PsNotify</TITLE> |
|
4855 |
LassoIdWsf2PsNotify |
|
4856 |
lasso_idwsf2_ps_notify_new |
|
4857 |
<SUBSECTION Standard> |
|
4858 |
LASSO_IDWSF2_PS_NOTIFY |
|
4859 |
LASSO_IS_IDWSF2_PS_NOTIFY |
|
4860 |
LASSO_TYPE_IDWSF2_PS_NOTIFY |
|
4861 |
lasso_idwsf2_ps_notify_get_type |
|
4862 |
LASSO_IDWSF2_PS_NOTIFY_CLASS |
|
4863 |
LASSO_IS_IDWSF2_PS_NOTIFY_CLASS |
|
4864 |
LASSO_IDWSF2_PS_NOTIFY_GET_CLASS |
|
4865 |
</SECTION> |
|
4866 | ||
4867 |
<SECTION> |
|
4868 |
<FILE>ps_get_object_info_response</FILE> |
|
4869 |
<TITLE>LassoIdWsf2PsGetObjectInfoResponse</TITLE> |
|
4870 |
LassoIdWsf2PsGetObjectInfoResponse |
|
4871 |
lasso_idwsf2_ps_get_object_info_response_new |
|
4872 |
<SUBSECTION Standard> |
|
4873 |
LASSO_IDWSF2_PS_GET_OBJECT_INFO_RESPONSE |
|
4874 |
LASSO_IS_IDWSF2_PS_GET_OBJECT_INFO_RESPONSE |
|
4875 |
LASSO_TYPE_IDWSF2_PS_GET_OBJECT_INFO_RESPONSE |
|
4876 |
lasso_idwsf2_ps_get_object_info_response_get_type |
|
4877 |
LASSO_IDWSF2_PS_GET_OBJECT_INFO_RESPONSE_CLASS |
|
4878 |
LASSO_IS_IDWSF2_PS_GET_OBJECT_INFO_RESPONSE_CLASS |
|
4879 |
LASSO_IDWSF2_PS_GET_OBJECT_INFO_RESPONSE_GET_CLASS |
|
4880 |
</SECTION> |
|
4881 | ||
4882 |
<SECTION> |
|
4883 |
<FILE>dstref_test_item</FILE> |
|
4884 |
<TITLE>LassoIdWsf2DstRefTestItem</TITLE> |
|
4885 |
LassoIdWsf2DstRefTestItem |
|
4886 |
lasso_idwsf2_dstref_test_item_new |
|
4887 |
<SUBSECTION Standard> |
|
4888 |
LASSO_IDWSF2_DSTREF_TEST_ITEM |
|
4889 |
LASSO_IS_IDWSF2_DSTREF_TEST_ITEM |
|
4890 |
LASSO_TYPE_IDWSF2_DSTREF_TEST_ITEM |
|
4891 |
lasso_idwsf2_dstref_test_item_get_type |
|
4892 |
LASSO_IDWSF2_DSTREF_TEST_ITEM_CLASS |
|
4893 |
LASSO_IS_IDWSF2_DSTREF_TEST_ITEM_CLASS |
|
4894 |
LASSO_IDWSF2_DSTREF_TEST_ITEM_GET_CLASS |
|
4895 |
</SECTION> |
|
4896 | ||
4897 |
<SECTION> |
|
4898 |
<FILE>id_wsf_2_0_is_item</FILE> |
|
4899 |
LASSO_IS_IDWSF2_IS_ITEM |
|
4900 |
<TITLE>LassoIdWsf2IsItem</TITLE> |
|
4901 |
LassoIdWsf2IsItem |
|
4902 |
lasso_idwsf2_is_item_new |
|
4903 |
<SUBSECTION Standard> |
|
4904 |
LASSO_IDWSF2_IS_ITEM |
|
4905 |
LASSO_TYPE_IDWSF2_IS_ITEM |
|
4906 |
lasso_idwsf2_is_item_get_type |
|
4907 |
LASSO_IDWSF2_IS_ITEM_CLASS |
|
4908 |
LASSO_IS_IDWSF2_IS_ITEM_CLASS |
|
4909 |
LASSO_IDWSF2_IS_ITEM_GET_CLASS |
|
4910 |
</SECTION> |
|
4911 | ||
4912 |
<SECTION> |
|
4913 |
<FILE>subsref_create</FILE> |
|
4914 |
<TITLE>LassoIdWsf2SubsRefCreate</TITLE> |
|
4915 |
LassoIdWsf2SubsRefCreate |
|
4916 |
lasso_idwsf2_subsref_create_new |
|
4917 |
<SUBSECTION Standard> |
|
4918 |
LASSO_IDWSF2_SUBSREF_CREATE |
|
4919 |
LASSO_IS_IDWSF2_SUBSREF_CREATE |
|
4920 |
LASSO_TYPE_IDWSF2_SUBSREF_CREATE |
|
4921 |
lasso_idwsf2_subsref_create_get_type |
|
4922 |
LASSO_IDWSF2_SUBSREF_CREATE_CLASS |
|
4923 |
LASSO_IS_IDWSF2_SUBSREF_CREATE_CLASS |
|
4924 |
LASSO_IDWSF2_SUBSREF_CREATE_GET_CLASS |
|
4925 |
</SECTION> |
|
4926 | ||
4927 |
<SECTION> |
|
4928 |
<FILE>subs_ref_item</FILE> |
|
4929 |
<TITLE>LassoIdWsf2SubsRefItem</TITLE> |
|
4930 |
LassoIdWsf2SubsRefItem |
|
4931 |
lasso_idwsf2_subs_ref_item_new |
|
4932 |
<SUBSECTION Standard> |
|
4933 |
LASSO_IDWSF2_SUBS_REF_ITEM |
|
4934 |
LASSO_IS_IDWSF2_SUBS_REF_ITEM |
|
4935 |
LASSO_TYPE_IDWSF2_SUBS_REF_ITEM |
|
4936 |
lasso_idwsf2_subs_ref_item_get_type |
|
4937 |
LASSO_IDWSF2_SUBS_REF_ITEM_CLASS |
|
4938 |
LASSO_IS_IDWSF2_SUBS_REF_ITEM_CLASS |
|
4939 |
LASSO_IDWSF2_SUBS_REF_ITEM_GET_CLASS |
|
4940 |
</SECTION> |
|
4941 | ||
4942 |
<SECTION> |
|
4943 |
<FILE>sec_token</FILE> |
|
4944 |
<TITLE>LassoIdWsf2SecToken</TITLE> |
|
4945 |
LassoIdWsf2SecToken |
|
4946 |
lasso_idwsf2_sec_token_new |
|
4947 |
<SUBSECTION Standard> |
|
4948 |
LASSO_IDWSF2_SEC_TOKEN |
|
4949 |
LASSO_IS_IDWSF2_SEC_TOKEN |
|
4950 |
LASSO_TYPE_IDWSF2_SEC_TOKEN |
|
4951 |
lasso_idwsf2_sec_token_get_type |
|
4952 |
LASSO_IDWSF2_SEC_TOKEN_CLASS |
|
4953 |
LASSO_IS_IDWSF2_SEC_TOKEN_CLASS |
|
4954 |
LASSO_IDWSF2_SEC_TOKEN_GET_CLASS |
|
4955 |
</SECTION> |
|
4956 | ||
4957 |
<SECTION> |
|
4958 |
<FILE>dst_test_item_base</FILE> |
|
4959 |
<TITLE>LassoIdWsf2DstTestItemBase</TITLE> |
|
4960 |
LassoIdWsf2DstTestItemBase |
|
4961 |
lasso_idwsf2_dst_test_item_base_new |
|
4962 |
<SUBSECTION Standard> |
|
4963 |
LASSO_IDWSF2_DST_TEST_ITEM_BASE |
|
4964 |
LASSO_IS_IDWSF2_DST_TEST_ITEM_BASE |
|
4965 |
LASSO_TYPE_IDWSF2_DST_TEST_ITEM_BASE |
|
4966 |
lasso_idwsf2_dst_test_item_base_get_type |
|
4967 |
LASSO_IDWSF2_DST_TEST_ITEM_BASE_CLASS |
|
4968 |
LASSO_IS_IDWSF2_DST_TEST_ITEM_BASE_CLASS |
|
4969 |
LASSO_IDWSF2_DST_TEST_ITEM_BASE_GET_CLASS |
|
4970 |
</SECTION> |
|
4971 | ||
4972 |
<SECTION> |
|
4973 |
<FILE>ps_add_entity_request</FILE> |
|
4974 |
<TITLE>LassoIdWsf2PsAddEntityRequest</TITLE> |
|
4975 |
LassoIdWsf2PsAddEntityRequest |
|
4976 |
lasso_idwsf2_ps_add_entity_request_new |
|
4977 |
<SUBSECTION Standard> |
|
4978 |
LASSO_IDWSF2_PS_ADD_ENTITY_REQUEST |
|
4979 |
LASSO_IS_IDWSF2_PS_ADD_ENTITY_REQUEST |
|
4980 |
LASSO_TYPE_IDWSF2_PS_ADD_ENTITY_REQUEST |
|
4981 |
lasso_idwsf2_ps_add_entity_request_get_type |
|
4982 |
LASSO_IDWSF2_PS_ADD_ENTITY_REQUEST_CLASS |
|
4983 |
LASSO_IS_IDWSF2_PS_ADD_ENTITY_REQUEST_CLASS |
|
4984 |
LASSO_IDWSF2_PS_ADD_ENTITY_REQUEST_GET_CLASS |
|
4985 |
</SECTION> |
|
4986 | ||
4987 |
<SECTION> |
|
4988 |
<FILE>dst_request</FILE> |
|
4989 |
<TITLE>LassoIdWsf2DstRequest</TITLE> |
|
4990 |
LassoIdWsf2DstRequest |
|
4991 |
lasso_idwsf2_dst_request_new |
|
4992 |
<SUBSECTION Standard> |
|
4993 |
LASSO_IDWSF2_DST_REQUEST |
|
4994 |
LASSO_IS_IDWSF2_DST_REQUEST |
|
4995 |
LASSO_TYPE_IDWSF2_DST_REQUEST |
|
4996 |
lasso_idwsf2_dst_request_get_type |
|
4997 |
LASSO_IDWSF2_DST_REQUEST_CLASS |
|
4998 |
LASSO_IS_IDWSF2_DST_REQUEST_CLASS |
|
4999 |
LASSO_IDWSF2_DST_REQUEST_GET_CLASS |
|
5000 |
</SECTION> |
|
5001 | ||
5002 |
<SECTION> |
|
5003 |
<FILE>subsref_delete</FILE> |
|
5004 |
<TITLE>LassoIdWsf2SubsRefDelete</TITLE> |
|
5005 |
LassoIdWsf2SubsRefDelete |
|
5006 |
lasso_idwsf2_subsref_delete_new |
|
5007 |
<SUBSECTION Standard> |
|
5008 |
LASSO_IDWSF2_SUBSREF_DELETE |
|
5009 |
LASSO_IS_IDWSF2_SUBSREF_DELETE |
|
5010 |
LASSO_TYPE_IDWSF2_SUBSREF_DELETE |
|
5011 |
lasso_idwsf2_subsref_delete_get_type |
|
5012 |
LASSO_IDWSF2_SUBSREF_DELETE_CLASS |
|
5013 |
LASSO_IS_IDWSF2_SUBSREF_DELETE_CLASS |
|
5014 |
LASSO_IDWSF2_SUBSREF_DELETE_GET_CLASS |
|
5015 |
</SECTION> |
|
5016 | ||
5017 |
<SECTION> |
|
5018 |
<FILE>subsref_delete_response</FILE> |
|
5019 |
<TITLE>LassoIdWsf2SubsRefDeleteResponse</TITLE> |
|
5020 |
LassoIdWsf2SubsRefDeleteResponse |
|
5021 |
lasso_idwsf2_subsref_delete_response_new |
|
5022 |
<SUBSECTION Standard> |
|
5023 |
LASSO_IDWSF2_SUBSREF_DELETE_RESPONSE |
|
5024 |
LASSO_IS_IDWSF2_SUBSREF_DELETE_RESPONSE |
|
5025 |
LASSO_TYPE_IDWSF2_SUBSREF_DELETE_RESPONSE |
|
5026 |
lasso_idwsf2_subsref_delete_response_get_type |
|
5027 |
LASSO_IDWSF2_SUBSREF_DELETE_RESPONSE_CLASS |
|
5028 |
LASSO_IS_IDWSF2_SUBSREF_DELETE_RESPONSE_CLASS |
|
5029 |
LASSO_IDWSF2_SUBSREF_DELETE_RESPONSE_GET_CLASS |
|
5030 |
</SECTION> |
|
5031 | ||
5032 |
<SECTION> |
|
5033 |
<FILE>sb2_target_identity</FILE> |
|
5034 |
<TITLE>LassoIdWsf2Sb2TargetIdentity</TITLE> |
|
5035 |
LassoIdWsf2Sb2TargetIdentity |
|
5036 |
lasso_idwsf2_sb2_target_identity_new |
|
5037 |
<SUBSECTION Standard> |
|
5038 |
LASSO_IDWSF2_SB2_TARGET_IDENTITY |
|
5039 |
LASSO_IS_IDWSF2_SB2_TARGET_IDENTITY |
|
5040 |
LASSO_TYPE_IDWSF2_SB2_TARGET_IDENTITY |
|
5041 |
lasso_idwsf2_sb2_target_identity_get_type |
|
5042 |
LASSO_IDWSF2_SB2_TARGET_IDENTITY_CLASS |
|
5043 |
LASSO_IS_IDWSF2_SB2_TARGET_IDENTITY_CLASS |
|
5044 |
LASSO_IDWSF2_SB2_TARGET_IDENTITY_GET_CLASS |
|
5045 |
</SECTION> |
|
5046 | ||
5047 |
<SECTION> |
|
5048 |
<FILE>subsref_notification</FILE> |
|
5049 |
<TITLE>LassoIdWsf2SubsRefNotification</TITLE> |
|
5050 |
LassoIdWsf2SubsRefNotification |
|
5051 |
lasso_idwsf2_subsref_notification_new |
|
5052 |
<SUBSECTION Standard> |
|
5053 |
LASSO_IDWSF2_SUBSREF_NOTIFICATION |
|
5054 |
LASSO_IS_IDWSF2_SUBSREF_NOTIFICATION |
|
5055 |
LASSO_TYPE_IDWSF2_SUBSREF_NOTIFICATION |
|
5056 |
lasso_idwsf2_subsref_notification_get_type |
|
5057 |
LASSO_IDWSF2_SUBSREF_NOTIFICATION_CLASS |
|
5058 |
LASSO_IS_IDWSF2_SUBSREF_NOTIFICATION_CLASS |
|
5059 |
LASSO_IDWSF2_SUBSREF_NOTIFICATION_GET_CLASS |
|
5060 |
</SECTION> |
|
5061 | ||
5062 |
<SECTION> |
|
5063 |
<FILE>ps_test_membership_response</FILE> |
|
5064 |
<TITLE>LassoIdWsf2PsTestMembershipResponse</TITLE> |
|
5065 |
LassoIdWsf2PsTestMembershipResponse |
|
5066 |
lasso_idwsf2_ps_test_membership_response_new |
|
5067 |
<SUBSECTION Standard> |
|
5068 |
LASSO_IDWSF2_PS_TEST_MEMBERSHIP_RESPONSE |
|
5069 |
LASSO_IS_IDWSF2_PS_TEST_MEMBERSHIP_RESPONSE |
|
5070 |
LASSO_TYPE_IDWSF2_PS_TEST_MEMBERSHIP_RESPONSE |
|
5071 |
lasso_idwsf2_ps_test_membership_response_get_type |
|
5072 |
LASSO_IDWSF2_PS_TEST_MEMBERSHIP_RESPONSE_CLASS |
|
5073 |
LASSO_IS_IDWSF2_PS_TEST_MEMBERSHIP_RESPONSE_CLASS |
|
5074 |
LASSO_IDWSF2_PS_TEST_MEMBERSHIP_RESPONSE_GET_CLASS |
|
5075 |
</SECTION> |
|
5076 | ||
5077 |
<SECTION> |
|
5078 |
<FILE>dstref_modify_item</FILE> |
|
5079 |
<TITLE>LassoIdWsf2DstRefModifyItem</TITLE> |
|
5080 |
LassoIdWsf2DstRefModifyItem |
|
5081 |
lasso_idwsf2_dstref_modify_item_new |
|
5082 |
lasso_idwsf2_dstref_modify_item_new_full |
|
5083 |
<SUBSECTION Standard> |
|
5084 |
LASSO_IDWSF2_DSTREF_MODIFY_ITEM |
|
5085 |
LASSO_IS_IDWSF2_DSTREF_MODIFY_ITEM |
|
5086 |
LASSO_TYPE_IDWSF2_DSTREF_MODIFY_ITEM |
|
5087 |
lasso_idwsf2_dstref_modify_item_get_type |
|
5088 |
LASSO_IDWSF2_DSTREF_MODIFY_ITEM_CLASS |
|
5089 |
LASSO_IS_IDWSF2_DSTREF_MODIFY_ITEM_CLASS |
|
5090 |
LASSO_IDWSF2_DSTREF_MODIFY_ITEM_GET_CLASS |
|
5091 |
</SECTION> |
|
5092 | ||
5093 |
<SECTION> |
|
5094 |
<FILE>dstref_app_data</FILE> |
|
5095 |
<TITLE>LassoIdWsf2DstRefAppData</TITLE> |
|
5096 |
LassoIdWsf2DstRefAppData |
|
5097 |
lasso_idwsf2_dstref_app_data_new |
|
5098 |
<SUBSECTION Standard> |
|
5099 |
LASSO_IDWSF2_DSTREF_APP_DATA |
|
5100 |
LASSO_IS_IDWSF2_DSTREF_APP_DATA |
|
5101 |
LASSO_TYPE_IDWSF2_DSTREF_APP_DATA |
|
5102 |
lasso_idwsf2_dstref_app_data_get_type |
|
5103 |
LASSO_IDWSF2_DSTREF_APP_DATA_CLASS |
|
5104 |
LASSO_IS_IDWSF2_DSTREF_APP_DATA_CLASS |
|
5105 |
LASSO_IDWSF2_DSTREF_APP_DATA_GET_CLASS |
|
5106 |
</SECTION> |
|
5107 | ||
5108 |
<SECTION> |
|
5109 |
<FILE>ps_list_members_response</FILE> |
|
5110 |
<TITLE>LassoIdWsf2PsListMembersResponse</TITLE> |
|
5111 |
LassoIdWsf2PsListMembersResponse |
|
5112 |
lasso_idwsf2_ps_list_members_response_new |
|
5113 |
<SUBSECTION Standard> |
|
5114 |
LASSO_IDWSF2_PS_LIST_MEMBERS_RESPONSE |
|
5115 |
LASSO_IS_IDWSF2_PS_LIST_MEMBERS_RESPONSE |
|
5116 |
LASSO_TYPE_IDWSF2_PS_LIST_MEMBERS_RESPONSE |
|
5117 |
lasso_idwsf2_ps_list_members_response_get_type |
|
5118 |
LASSO_IDWSF2_PS_LIST_MEMBERS_RESPONSE_CLASS |
|
5119 |
LASSO_IS_IDWSF2_PS_LIST_MEMBERS_RESPONSE_CLASS |
|
5120 |
LASSO_IDWSF2_PS_LIST_MEMBERS_RESPONSE_GET_CLASS |
|
5121 |
</SECTION> |
|
5122 | ||
5123 |
<SECTION> |
|
5124 |
<FILE>sec_transited_provider_path</FILE> |
|
5125 |
<TITLE>LassoIdWsf2SecTransitedProviderPath</TITLE> |
|
5126 |
LassoIdWsf2SecTransitedProviderPath |
|
5127 |
lasso_idwsf2_sec_transited_provider_path_new |
|
5128 |
<SUBSECTION Standard> |
|
5129 |
LASSO_IDWSF2_SEC_TRANSITED_PROVIDER_PATH |
|
5130 |
LASSO_IS_IDWSF2_SEC_TRANSITED_PROVIDER_PATH |
|
5131 |
LASSO_TYPE_IDWSF2_SEC_TRANSITED_PROVIDER_PATH |
|
5132 |
lasso_idwsf2_sec_transited_provider_path_get_type |
|
5133 |
LASSO_IDWSF2_SEC_TRANSITED_PROVIDER_PATH_CLASS |
|
5134 |
LASSO_IS_IDWSF2_SEC_TRANSITED_PROVIDER_PATH_CLASS |
|
5135 |
LASSO_IDWSF2_SEC_TRANSITED_PROVIDER_PATH_GET_CLASS |
|
5136 |
</SECTION> |
|
5137 | ||
5138 |
<SECTION> |
|
5139 |
<FILE>ps_add_collection_request</FILE> |
|
5140 |
<TITLE>LassoIdWsf2PsAddCollectionRequest</TITLE> |
|
5141 |
LassoIdWsf2PsAddCollectionRequest |
|
5142 |
lasso_idwsf2_ps_add_collection_request_new |
|
5143 |
<SUBSECTION Standard> |
|
5144 |
LASSO_IDWSF2_PS_ADD_COLLECTION_REQUEST |
|
5145 |
LASSO_IS_IDWSF2_PS_ADD_COLLECTION_REQUEST |
|
5146 |
LASSO_TYPE_IDWSF2_PS_ADD_COLLECTION_REQUEST |
|
5147 |
lasso_idwsf2_ps_add_collection_request_get_type |
|
5148 |
LASSO_IDWSF2_PS_ADD_COLLECTION_REQUEST_CLASS |
|
5149 |
LASSO_IS_IDWSF2_PS_ADD_COLLECTION_REQUEST_CLASS |
|
5150 |
LASSO_IDWSF2_PS_ADD_COLLECTION_REQUEST_GET_CLASS |
|
5151 |
</SECTION> |
|
5152 | ||
5153 |
<SECTION> |
|
5154 |
<FILE>disco_svc_md_register</FILE> |
|
5155 |
<TITLE>LassoIdWsf2DiscoSvcMDRegister</TITLE> |
|
5156 |
LassoIdWsf2DiscoSvcMDRegister |
|
5157 |
lasso_idwsf2_disco_svc_md_register_new |
|
5158 |
lasso_idwsf2_disco_svc_md_register_new_full |
|
5159 |
<SUBSECTION Standard> |
|
5160 |
LASSO_IDWSF2_DISCO_SVC_MD_REGISTER |
|
5161 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_REGISTER |
|
5162 |
LASSO_TYPE_IDWSF2_DISCO_SVC_MD_REGISTER |
|
5163 |
lasso_idwsf2_disco_svc_md_register_get_type |
|
5164 |
LASSO_IDWSF2_DISCO_SVC_MD_REGISTER_CLASS |
|
5165 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_REGISTER_CLASS |
|
5166 |
LASSO_IDWSF2_DISCO_SVC_MD_REGISTER_GET_CLASS |
|
5167 |
</SECTION> |
|
5168 | ||
5169 |
<SECTION> |
|
5170 |
<FILE>ps_query_objects_response</FILE> |
|
5171 |
<TITLE>LassoIdWsf2PsQueryObjectsResponse</TITLE> |
|
5172 |
LassoIdWsf2PsQueryObjectsResponse |
|
5173 |
lasso_idwsf2_ps_query_objects_response_new |
|
5174 |
<SUBSECTION Standard> |
|
5175 |
LASSO_IDWSF2_PS_QUERY_OBJECTS_RESPONSE |
|
5176 |
LASSO_IS_IDWSF2_PS_QUERY_OBJECTS_RESPONSE |
|
5177 |
LASSO_TYPE_IDWSF2_PS_QUERY_OBJECTS_RESPONSE |
|
5178 |
lasso_idwsf2_ps_query_objects_response_get_type |
|
5179 |
LASSO_IDWSF2_PS_QUERY_OBJECTS_RESPONSE_CLASS |
|
5180 |
LASSO_IS_IDWSF2_PS_QUERY_OBJECTS_RESPONSE_CLASS |
|
5181 |
LASSO_IDWSF2_PS_QUERY_OBJECTS_RESPONSE_GET_CLASS |
|
5182 |
</SECTION> |
|
5183 | ||
5184 |
<SECTION> |
|
5185 |
<FILE>subs_notification</FILE> |
|
5186 |
<TITLE>LassoIdWsf2SubsNotification</TITLE> |
|
5187 |
LassoIdWsf2SubsNotification |
|
5188 |
lasso_idwsf2_subs_notification_new |
|
5189 |
<SUBSECTION Standard> |
|
5190 |
LASSO_IDWSF2_SUBS_NOTIFICATION |
|
5191 |
LASSO_IS_IDWSF2_SUBS_NOTIFICATION |
|
5192 |
LASSO_TYPE_IDWSF2_SUBS_NOTIFICATION |
|
5193 |
lasso_idwsf2_subs_notification_get_type |
|
5194 |
LASSO_IDWSF2_SUBS_NOTIFICATION_CLASS |
|
5195 |
LASSO_IS_IDWSF2_SUBS_NOTIFICATION_CLASS |
|
5196 |
LASSO_IDWSF2_SUBS_NOTIFICATION_GET_CLASS |
|
5197 |
</SECTION> |
|
5198 | ||
5199 |
<SECTION> |
|
5200 |
<FILE>disco_security_context</FILE> |
|
5201 |
<TITLE>LassoIdWsf2DiscoSecurityContext</TITLE> |
|
5202 |
LassoIdWsf2DiscoSecurityContext |
|
5203 |
lasso_idwsf2_disco_security_context_new |
|
5204 |
<SUBSECTION Standard> |
|
5205 |
LASSO_IDWSF2_DISCO_SECURITY_CONTEXT |
|
5206 |
LASSO_IS_IDWSF2_DISCO_SECURITY_CONTEXT |
|
5207 |
LASSO_TYPE_IDWSF2_DISCO_SECURITY_CONTEXT |
|
5208 |
lasso_idwsf2_disco_security_context_get_type |
|
5209 |
LASSO_IDWSF2_DISCO_SECURITY_CONTEXT_CLASS |
|
5210 |
LASSO_IS_IDWSF2_DISCO_SECURITY_CONTEXT_CLASS |
|
5211 |
LASSO_IDWSF2_DISCO_SECURITY_CONTEXT_GET_CLASS |
|
5212 |
</SECTION> |
|
5213 | ||
5214 |
<SECTION> |
|
5215 |
<FILE>ps_set_object_info_request</FILE> |
|
5216 |
<TITLE>LassoIdWsf2PsSetObjectInfoRequest</TITLE> |
|
5217 |
LassoIdWsf2PsSetObjectInfoRequest |
|
5218 |
lasso_idwsf2_ps_set_object_info_request_new |
|
5219 |
<SUBSECTION Standard> |
|
5220 |
LASSO_IDWSF2_PS_SET_OBJECT_INFO_REQUEST |
|
5221 |
LASSO_IS_IDWSF2_PS_SET_OBJECT_INFO_REQUEST |
|
5222 |
LASSO_TYPE_IDWSF2_PS_SET_OBJECT_INFO_REQUEST |
|
5223 |
lasso_idwsf2_ps_set_object_info_request_get_type |
|
5224 |
LASSO_IDWSF2_PS_SET_OBJECT_INFO_REQUEST_CLASS |
|
5225 |
LASSO_IS_IDWSF2_PS_SET_OBJECT_INFO_REQUEST_CLASS |
|
5226 |
LASSO_IDWSF2_PS_SET_OBJECT_INFO_REQUEST_GET_CLASS |
|
5227 |
</SECTION> |
|
5228 | ||
5229 |
<SECTION> |
|
5230 |
<FILE>disco_svc_md_association_add_response</FILE> |
|
5231 |
<TITLE>LassoIdWsf2DiscoSvcMDAssociationAddResponse</TITLE> |
|
5232 |
LassoIdWsf2DiscoSvcMDAssociationAddResponse |
|
5233 |
lasso_idwsf2_disco_svc_md_association_add_response_new |
|
5234 |
<SUBSECTION Standard> |
|
5235 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE |
|
5236 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE |
|
5237 |
LASSO_TYPE_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE |
|
5238 |
lasso_idwsf2_disco_svc_md_association_add_response_get_type |
|
5239 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE_CLASS |
|
5240 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE_CLASS |
|
5241 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE_GET_CLASS |
|
5242 |
</SECTION> |
|
5243 | ||
5244 |
<SECTION> |
|
5245 |
<FILE>dstref_query</FILE> |
|
5246 |
<TITLE>LassoIdWsf2DstRefQuery</TITLE> |
|
5247 |
LassoIdWsf2DstRefQuery |
|
5248 |
lasso_idwsf2_dstref_query_new |
|
5249 |
<SUBSECTION Standard> |
|
5250 |
LASSO_IDWSF2_DSTREF_QUERY |
|
5251 |
LASSO_IS_IDWSF2_DSTREF_QUERY |
|
5252 |
LASSO_TYPE_IDWSF2_DSTREF_QUERY |
|
5253 |
lasso_idwsf2_dstref_query_get_type |
|
5254 |
LASSO_IDWSF2_DSTREF_QUERY_CLASS |
|
5255 |
LASSO_IS_IDWSF2_DSTREF_QUERY_CLASS |
|
5256 |
LASSO_IDWSF2_DSTREF_QUERY_GET_CLASS |
|
5257 |
</SECTION> |
|
5258 | ||
5259 |
<SECTION> |
|
5260 |
<FILE>ps_remove_from_collection_request</FILE> |
|
5261 |
<TITLE>LassoIdWsf2PsRemoveFromCollectionRequest</TITLE> |
|
5262 |
LassoIdWsf2PsRemoveFromCollectionRequest |
|
5263 |
lasso_idwsf2_ps_remove_from_collection_request_new |
|
5264 |
<SUBSECTION Standard> |
|
5265 |
LASSO_IDWSF2_PS_REMOVE_FROM_COLLECTION_REQUEST |
|
5266 |
LASSO_IS_IDWSF2_PS_REMOVE_FROM_COLLECTION_REQUEST |
|
5267 |
LASSO_TYPE_IDWSF2_PS_REMOVE_FROM_COLLECTION_REQUEST |
|
5268 |
lasso_idwsf2_ps_remove_from_collection_request_get_type |
|
5269 |
LASSO_IDWSF2_PS_REMOVE_FROM_COLLECTION_REQUEST_CLASS |
|
5270 |
LASSO_IS_IDWSF2_PS_REMOVE_FROM_COLLECTION_REQUEST_CLASS |
|
5271 |
LASSO_IDWSF2_PS_REMOVE_FROM_COLLECTION_REQUEST_GET_CLASS |
|
5272 |
</SECTION> |
|
5273 | ||
5274 |
<SECTION> |
|
5275 |
<FILE>dstref_item_data</FILE> |
|
5276 |
<TITLE>LassoIdWsf2DstRefItemData</TITLE> |
|
5277 |
LassoIdWsf2DstRefItemData |
|
5278 |
lasso_idwsf2_dstref_item_data_new |
|
5279 |
<SUBSECTION Standard> |
|
5280 |
LASSO_IDWSF2_DSTREF_ITEM_DATA |
|
5281 |
LASSO_IS_IDWSF2_DSTREF_ITEM_DATA |
|
5282 |
LASSO_TYPE_IDWSF2_DSTREF_ITEM_DATA |
|
5283 |
lasso_idwsf2_dstref_item_data_get_type |
|
5284 |
LASSO_IDWSF2_DSTREF_ITEM_DATA_CLASS |
|
5285 |
LASSO_IS_IDWSF2_DSTREF_ITEM_DATA_CLASS |
|
5286 |
LASSO_IDWSF2_DSTREF_ITEM_DATA_GET_CLASS |
|
5287 |
</SECTION> |
|
5288 | ||
5289 |
<SECTION> |
|
5290 |
<FILE>dstref_create_response</FILE> |
|
5291 |
<TITLE>LassoIdWsf2DstRefCreateResponse</TITLE> |
|
5292 |
LassoIdWsf2DstRefCreateResponse |
|
5293 |
lasso_idwsf2_dstref_create_response_new |
|
5294 |
<SUBSECTION Standard> |
|
5295 |
LASSO_IDWSF2_DSTREF_CREATE_RESPONSE |
|
5296 |
LASSO_IS_IDWSF2_DSTREF_CREATE_RESPONSE |
|
5297 |
LASSO_TYPE_IDWSF2_DSTREF_CREATE_RESPONSE |
|
5298 |
lasso_idwsf2_dstref_create_response_get_type |
|
5299 |
LASSO_IDWSF2_DSTREF_CREATE_RESPONSE_CLASS |
|
5300 |
LASSO_IS_IDWSF2_DSTREF_CREATE_RESPONSE_CLASS |
|
5301 |
LASSO_IDWSF2_DSTREF_CREATE_RESPONSE_GET_CLASS |
|
5302 |
</SECTION> |
|
5303 | ||
5304 |
<SECTION> |
|
5305 |
<FILE>subsref_create_response</FILE> |
|
5306 |
<TITLE>LassoIdWsf2SubsRefCreateResponse</TITLE> |
|
5307 |
LassoIdWsf2SubsRefCreateResponse |
|
5308 |
lasso_idwsf2_subsref_create_response_new |
|
5309 |
<SUBSECTION Standard> |
|
5310 |
LASSO_IDWSF2_SUBSREF_CREATE_RESPONSE |
|
5311 |
LASSO_IS_IDWSF2_SUBSREF_CREATE_RESPONSE |
|
5312 |
LASSO_TYPE_IDWSF2_SUBSREF_CREATE_RESPONSE |
|
5313 |
lasso_idwsf2_subsref_create_response_get_type |
|
5314 |
LASSO_IDWSF2_SUBSREF_CREATE_RESPONSE_CLASS |
|
5315 |
LASSO_IS_IDWSF2_SUBSREF_CREATE_RESPONSE_CLASS |
|
5316 |
LASSO_IDWSF2_SUBSREF_CREATE_RESPONSE_GET_CLASS |
|
5317 |
</SECTION> |
|
5318 | ||
5319 |
<SECTION> |
|
5320 |
<FILE>id_wsf_2_0_is_inquiry_element</FILE> |
|
5321 |
LASSO_IS_IDWSF2_IS_INQUIRY_ELEMENT |
|
5322 |
<TITLE>LassoIdWsf2IsInquiryElement</TITLE> |
|
5323 |
LassoIdWsf2IsInquiryElement |
|
5324 |
lasso_idwsf2_is_inquiry_element_new |
|
5325 |
<SUBSECTION Standard> |
|
5326 |
LASSO_IDWSF2_IS_INQUIRY_ELEMENT |
|
5327 |
LASSO_TYPE_IDWSF2_IS_INQUIRY_ELEMENT |
|
5328 |
lasso_idwsf2_is_inquiry_element_get_type |
|
5329 |
LASSO_IDWSF2_IS_INQUIRY_ELEMENT_CLASS |
|
5330 |
LASSO_IS_IDWSF2_IS_INQUIRY_ELEMENT_CLASS |
|
5331 |
LASSO_IDWSF2_IS_INQUIRY_ELEMENT_GET_CLASS |
|
5332 |
</SECTION> |
|
5333 | ||
5334 |
<SECTION> |
|
5335 |
<FILE>ps_notification</FILE> |
|
5336 |
<TITLE>LassoIdWsf2PsNotification</TITLE> |
|
5337 |
LassoIdWsf2PsNotification |
|
5338 |
lasso_idwsf2_ps_notification_new |
|
5339 |
<SUBSECTION Standard> |
|
5340 |
LASSO_IDWSF2_PS_NOTIFICATION |
|
5341 |
LASSO_IS_IDWSF2_PS_NOTIFICATION |
|
5342 |
LASSO_TYPE_IDWSF2_PS_NOTIFICATION |
|
5343 |
lasso_idwsf2_ps_notification_get_type |
|
5344 |
LASSO_IDWSF2_PS_NOTIFICATION_CLASS |
|
5345 |
LASSO_IS_IDWSF2_PS_NOTIFICATION_CLASS |
|
5346 |
LASSO_IDWSF2_PS_NOTIFICATION_GET_CLASS |
|
5347 |
</SECTION> |
|
5348 | ||
5349 |
<SECTION> |
|
5350 |
<FILE>id_wsf_2_0_disco_query_response</FILE> |
|
5351 |
<TITLE>LassoIdWsf2DiscoQueryResponse</TITLE> |
|
5352 |
LassoIdWsf2DiscoQueryResponse |
|
5353 |
lasso_idwsf2_disco_query_response_new |
|
5354 |
<SUBSECTION Standard> |
|
5355 |
LASSO_IDWSF2_DISCO_QUERY_RESPONSE |
|
5356 |
LASSO_IS_IDWSF2_DISCO_QUERY_RESPONSE |
|
5357 |
LASSO_TYPE_IDWSF2_DISCO_QUERY_RESPONSE |
|
5358 |
lasso_idwsf2_disco_query_response_get_type |
|
5359 |
LASSO_IDWSF2_DISCO_QUERY_RESPONSE_CLASS |
|
5360 |
LASSO_IS_IDWSF2_DISCO_QUERY_RESPONSE_CLASS |
|
5361 |
LASSO_IDWSF2_DISCO_QUERY_RESPONSE_GET_CLASS |
|
5362 |
</SECTION> |
|
5363 | ||
5364 |
<SECTION> |
|
5365 |
<FILE>subsref_modify_response</FILE> |
|
5366 |
<TITLE>LassoIdWsf2SubsRefModifyResponse</TITLE> |
|
5367 |
LassoIdWsf2SubsRefModifyResponse |
|
5368 |
lasso_idwsf2_subsref_modify_response_new |
|
5369 |
<SUBSECTION Standard> |
|
5370 |
LASSO_IDWSF2_SUBSREF_MODIFY_RESPONSE |
|
5371 |
LASSO_IS_IDWSF2_SUBSREF_MODIFY_RESPONSE |
|
5372 |
LASSO_TYPE_IDWSF2_SUBSREF_MODIFY_RESPONSE |
|
5373 |
lasso_idwsf2_subsref_modify_response_get_type |
|
5374 |
LASSO_IDWSF2_SUBSREF_MODIFY_RESPONSE_CLASS |
|
5375 |
LASSO_IS_IDWSF2_SUBSREF_MODIFY_RESPONSE_CLASS |
|
5376 |
LASSO_IDWSF2_SUBSREF_MODIFY_RESPONSE_GET_CLASS |
|
5377 |
</SECTION> |
|
5378 | ||
5379 |
<SECTION> |
|
5380 |
<FILE>subsref_notify_response</FILE> |
|
5381 |
<TITLE>LassoIdWsf2SubsRefNotifyResponse</TITLE> |
|
5382 |
LassoIdWsf2SubsRefNotifyResponse |
|
5383 |
lasso_idwsf2_subsref_notify_response_new |
|
5384 |
<SUBSECTION Standard> |
|
5385 |
LASSO_IDWSF2_SUBSREF_NOTIFY_RESPONSE |
|
5386 |
LASSO_IS_IDWSF2_SUBSREF_NOTIFY_RESPONSE |
|
5387 |
LASSO_TYPE_IDWSF2_SUBSREF_NOTIFY_RESPONSE |
|
5388 |
lasso_idwsf2_subsref_notify_response_get_type |
|
5389 |
LASSO_IDWSF2_SUBSREF_NOTIFY_RESPONSE_CLASS |
|
5390 |
LASSO_IS_IDWSF2_SUBSREF_NOTIFY_RESPONSE_CLASS |
|
5391 |
LASSO_IDWSF2_SUBSREF_NOTIFY_RESPONSE_GET_CLASS |
|
5392 |
</SECTION> |
|
5393 | ||
5394 |
<SECTION> |
|
5395 |
<FILE>ims_identity_mapping_response</FILE> |
|
5396 |
<TITLE>LassoIdWsf2ImsIdentityMappingResponse</TITLE> |
|
5397 |
LassoIdWsf2ImsIdentityMappingResponse |
|
5398 |
lasso_idwsf2_ims_identity_mapping_response_new |
|
5399 |
<SUBSECTION Standard> |
|
5400 |
LASSO_IDWSF2_IMS_IDENTITY_MAPPING_RESPONSE |
|
5401 |
LASSO_IS_IDWSF2_IMS_IDENTITY_MAPPING_RESPONSE |
|
5402 |
LASSO_TYPE_IDWSF2_IMS_IDENTITY_MAPPING_RESPONSE |
|
5403 |
lasso_idwsf2_ims_identity_mapping_response_get_type |
|
5404 |
LASSO_IDWSF2_IMS_IDENTITY_MAPPING_RESPONSE_CLASS |
|
5405 |
LASSO_IS_IDWSF2_IMS_IDENTITY_MAPPING_RESPONSE_CLASS |
|
5406 |
LASSO_IDWSF2_IMS_IDENTITY_MAPPING_RESPONSE_GET_CLASS |
|
5407 |
</SECTION> |
|
5408 | ||
5409 |
<SECTION> |
|
5410 |
<FILE>subsref_modify</FILE> |
|
5411 |
<TITLE>LassoIdWsf2SubsRefModify</TITLE> |
|
5412 |
LassoIdWsf2SubsRefModify |
|
5413 |
lasso_idwsf2_subsref_modify_new |
|
5414 |
<SUBSECTION Standard> |
|
5415 |
LASSO_IDWSF2_SUBSREF_MODIFY |
|
5416 |
LASSO_IS_IDWSF2_SUBSREF_MODIFY |
|
5417 |
LASSO_TYPE_IDWSF2_SUBSREF_MODIFY |
|
5418 |
lasso_idwsf2_subsref_modify_get_type |
|
5419 |
LASSO_IDWSF2_SUBSREF_MODIFY_CLASS |
|
5420 |
LASSO_IS_IDWSF2_SUBSREF_MODIFY_CLASS |
|
5421 |
LASSO_IDWSF2_SUBSREF_MODIFY_GET_CLASS |
|
5422 |
</SECTION> |
|
5423 | ||
5424 |
<SECTION> |
|
5425 |
<FILE>ps_add_to_collection_request</FILE> |
|
5426 |
<TITLE>LassoIdWsf2PsAddToCollectionRequest</TITLE> |
|
5427 |
LassoIdWsf2PsAddToCollectionRequest |
|
5428 |
lasso_idwsf2_ps_add_to_collection_request_new |
|
5429 |
<SUBSECTION Standard> |
|
5430 |
LASSO_IDWSF2_PS_ADD_TO_COLLECTION_REQUEST |
|
5431 |
LASSO_IS_IDWSF2_PS_ADD_TO_COLLECTION_REQUEST |
|
5432 |
LASSO_TYPE_IDWSF2_PS_ADD_TO_COLLECTION_REQUEST |
|
5433 |
lasso_idwsf2_ps_add_to_collection_request_get_type |
|
5434 |
LASSO_IDWSF2_PS_ADD_TO_COLLECTION_REQUEST_CLASS |
|
5435 |
LASSO_IS_IDWSF2_PS_ADD_TO_COLLECTION_REQUEST_CLASS |
|
5436 |
LASSO_IDWSF2_PS_ADD_TO_COLLECTION_REQUEST_GET_CLASS |
|
5437 |
</SECTION> |
|
5438 | ||
5439 |
<SECTION> |
|
5440 |
<FILE>subs_subscription</FILE> |
|
5441 |
<TITLE>LassoIdWsf2SubsSubscription</TITLE> |
|
5442 |
LassoIdWsf2SubsSubscription |
|
5443 |
lasso_idwsf2_subs_subscription_new |
|
5444 |
<SUBSECTION Standard> |
|
5445 |
LASSO_IDWSF2_SUBS_SUBSCRIPTION |
|
5446 |
LASSO_IS_IDWSF2_SUBS_SUBSCRIPTION |
|
5447 |
LASSO_TYPE_IDWSF2_SUBS_SUBSCRIPTION |
|
5448 |
lasso_idwsf2_subs_subscription_get_type |
|
5449 |
LASSO_IDWSF2_SUBS_SUBSCRIPTION_CLASS |
|
5450 |
LASSO_IS_IDWSF2_SUBS_SUBSCRIPTION_CLASS |
|
5451 |
LASSO_IDWSF2_SUBS_SUBSCRIPTION_GET_CLASS |
|
5452 |
</SECTION> |
|
5453 | ||
5454 |
<SECTION> |
|
5455 |
<FILE>dstref_query_item</FILE> |
|
5456 |
<TITLE>LassoIdWsf2DstRefQueryItem</TITLE> |
|
5457 |
LassoIdWsf2DstRefQueryItem |
|
5458 |
lasso_idwsf2_dstref_query_item_new |
|
5459 |
lasso_idwsf2_dstref_query_item_new_full |
|
5460 |
<SUBSECTION Standard> |
|
5461 |
LASSO_IDWSF2_DSTREF_QUERY_ITEM |
|
5462 |
LASSO_IS_IDWSF2_DSTREF_QUERY_ITEM |
|
5463 |
LASSO_TYPE_IDWSF2_DSTREF_QUERY_ITEM |
|
5464 |
lasso_idwsf2_dstref_query_item_get_type |
|
5465 |
LASSO_IDWSF2_DSTREF_QUERY_ITEM_CLASS |
|
5466 |
LASSO_IS_IDWSF2_DSTREF_QUERY_ITEM_CLASS |
|
5467 |
LASSO_IDWSF2_DSTREF_QUERY_ITEM_GET_CLASS |
|
5468 |
</SECTION> |
|
5469 | ||
5470 |
<SECTION> |
|
5471 |
<FILE>ps_add_entity_response</FILE> |
|
5472 |
<TITLE>LassoIdWsf2PsAddEntityResponse</TITLE> |
|
5473 |
LassoIdWsf2PsAddEntityResponse |
|
5474 |
lasso_idwsf2_ps_add_entity_response_new |
|
5475 |
<SUBSECTION Standard> |
|
5476 |
LASSO_IDWSF2_PS_ADD_ENTITY_RESPONSE |
|
5477 |
LASSO_IS_IDWSF2_PS_ADD_ENTITY_RESPONSE |
|
5478 |
LASSO_TYPE_IDWSF2_PS_ADD_ENTITY_RESPONSE |
|
5479 |
lasso_idwsf2_ps_add_entity_response_get_type |
|
5480 |
LASSO_IDWSF2_PS_ADD_ENTITY_RESPONSE_CLASS |
|
5481 |
LASSO_IS_IDWSF2_PS_ADD_ENTITY_RESPONSE_CLASS |
|
5482 |
LASSO_IDWSF2_PS_ADD_ENTITY_RESPONSE_GET_CLASS |
|
5483 |
</SECTION> |
|
5484 | ||
5485 |
<SECTION> |
|
5486 |
<FILE>id_wsf_2_0_is_interaction_response</FILE> |
|
5487 |
LASSO_IS_IDWSF2_IS_INTERACTION_RESPONSE |
|
5488 |
<TITLE>LassoIdWsf2IsInteractionResponse</TITLE> |
|
5489 |
LassoIdWsf2IsInteractionResponse |
|
5490 |
lasso_idwsf2_is_interaction_response_new |
|
5491 |
<SUBSECTION Standard> |
|
5492 |
LASSO_IDWSF2_IS_INTERACTION_RESPONSE |
|
5493 |
LASSO_TYPE_IDWSF2_IS_INTERACTION_RESPONSE |
|
5494 |
lasso_idwsf2_is_interaction_response_get_type |
|
5495 |
LASSO_IDWSF2_IS_INTERACTION_RESPONSE_CLASS |
|
5496 |
LASSO_IS_IDWSF2_IS_INTERACTION_RESPONSE_CLASS |
|
5497 |
LASSO_IDWSF2_IS_INTERACTION_RESPONSE_GET_CLASS |
|
5498 |
</SECTION> |
|
5499 | ||
5500 |
<SECTION> |
|
5501 |
<FILE>disco_svc_md_association_delete</FILE> |
|
5502 |
<TITLE>LassoIdWsf2DiscoSvcMDAssociationDelete</TITLE> |
|
5503 |
LassoIdWsf2DiscoSvcMDAssociationDelete |
|
5504 |
lasso_idwsf2_disco_svc_md_association_delete_new |
|
5505 |
<SUBSECTION Standard> |
|
5506 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_DELETE |
|
5507 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_DELETE |
|
5508 |
LASSO_TYPE_IDWSF2_DISCO_SVC_MD_ASSOCIATION_DELETE |
|
5509 |
lasso_idwsf2_disco_svc_md_association_delete_get_type |
|
5510 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_DELETE_CLASS |
|
5511 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_DELETE_CLASS |
|
5512 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_DELETE_GET_CLASS |
|
5513 |
</SECTION> |
|
5514 | ||
5515 |
<SECTION> |
|
5516 |
<FILE>sb2_endpoint_update</FILE> |
|
5517 |
<TITLE>LassoIdWsf2Sb2EndpointUpdate</TITLE> |
|
5518 |
LassoIdWsf2Sb2EndpointUpdate |
|
5519 |
lasso_idwsf2_sb2_endpoint_update_new |
|
5520 |
<SUBSECTION Standard> |
|
5521 |
LASSO_IDWSF2_SB2_ENDPOINT_UPDATE |
|
5522 |
LASSO_IS_IDWSF2_SB2_ENDPOINT_UPDATE |
|
5523 |
LASSO_TYPE_IDWSF2_SB2_ENDPOINT_UPDATE |
|
5524 |
lasso_idwsf2_sb2_endpoint_update_get_type |
|
5525 |
LASSO_IDWSF2_SB2_ENDPOINT_UPDATE_CLASS |
|
5526 |
LASSO_IS_IDWSF2_SB2_ENDPOINT_UPDATE_CLASS |
|
5527 |
LASSO_IDWSF2_SB2_ENDPOINT_UPDATE_GET_CLASS |
|
5528 |
</SECTION> |
|
5529 | ||
5530 |
<SECTION> |
|
5531 |
<FILE>util_extension</FILE> |
|
5532 |
<TITLE>LassoIdWsf2Utilextension</TITLE> |
|
5533 |
LassoIdWsf2Utilextension |
|
5534 |
lasso_idwsf2_util_extension_new |
|
5535 |
<SUBSECTION Standard> |
|
5536 |
LASSO_IDWSF2_UTIL_EXTENSION |
|
5537 |
LASSO_IS_IDWSF2_UTIL_EXTENSION |
|
5538 |
LASSO_TYPE_IDWSF2_UTIL_EXTENSION |
|
5539 |
lasso_idwsf2_util_extension_get_type |
|
5540 |
LASSO_IDWSF2_UTIL_EXTENSION_CLASS |
|
5541 |
LASSO_IS_IDWSF2_UTIL_EXTENSION_CLASS |
|
5542 |
LASSO_IDWSF2_UTIL_EXTENSION_GET_CLASS |
|
5543 |
</SECTION> |
|
5544 | ||
5545 |
<SECTION> |
|
5546 |
<FILE>disco_svc_md_delete</FILE> |
|
5547 |
<TITLE>LassoIdWsf2DiscoSvcMDDelete</TITLE> |
|
5548 |
LassoIdWsf2DiscoSvcMDDelete |
|
5549 |
lasso_idwsf2_disco_svc_md_delete_new |
|
5550 |
<SUBSECTION Standard> |
|
5551 |
LASSO_IDWSF2_DISCO_SVC_MD_DELETE |
|
5552 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_DELETE |
|
5553 |
LASSO_TYPE_IDWSF2_DISCO_SVC_MD_DELETE |
|
5554 |
lasso_idwsf2_disco_svc_md_delete_get_type |
|
5555 |
LASSO_IDWSF2_DISCO_SVC_MD_DELETE_CLASS |
|
5556 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_DELETE_CLASS |
|
5557 |
LASSO_IDWSF2_DISCO_SVC_MD_DELETE_GET_CLASS |
|
5558 |
</SECTION> |
|
5559 | ||
5560 |
<SECTION> |
|
5561 |
<FILE>disco_svc_md_query</FILE> |
|
5562 |
<TITLE>LassoIdWsf2DiscoSvcMDQuery</TITLE> |
|
5563 |
LassoIdWsf2DiscoSvcMDQuery |
|
5564 |
lasso_idwsf2_disco_svc_md_query_new |
|
5565 |
<SUBSECTION Standard> |
|
5566 |
LASSO_IDWSF2_DISCO_SVC_MD_QUERY |
|
5567 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_QUERY |
|
5568 |
LASSO_TYPE_IDWSF2_DISCO_SVC_MD_QUERY |
|
5569 |
lasso_idwsf2_disco_svc_md_query_get_type |
|
5570 |
LASSO_IDWSF2_DISCO_SVC_MD_QUERY_CLASS |
|
5571 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_QUERY_CLASS |
|
5572 |
LASSO_IDWSF2_DISCO_SVC_MD_QUERY_GET_CLASS |
|
5573 |
</SECTION> |
|
5574 | ||
5575 |
<SECTION> |
|
5576 |
<FILE>id_wsf_2_0_disco_options</FILE> |
|
5577 |
<TITLE>LassoIdWsf2DiscoOptions</TITLE> |
|
5578 |
LassoIdWsf2DiscoOptions |
|
5579 |
lasso_idwsf2_disco_options_new |
|
5580 |
<SUBSECTION Standard> |
|
5581 |
LASSO_IDWSF2_DISCO_OPTIONS |
|
5582 |
LASSO_IS_IDWSF2_DISCO_OPTIONS |
|
5583 |
LASSO_TYPE_IDWSF2_DISCO_OPTIONS |
|
5584 |
lasso_idwsf2_disco_options_get_type |
|
5585 |
LASSO_IDWSF2_DISCO_OPTIONS_CLASS |
|
5586 |
LASSO_IS_IDWSF2_DISCO_OPTIONS_CLASS |
|
5587 |
LASSO_IDWSF2_DISCO_OPTIONS_GET_CLASS |
|
5588 |
</SECTION> |
|
5589 | ||
5590 |
<SECTION> |
|
5591 |
<FILE>disco_svc_md_register_response</FILE> |
|
5592 |
<TITLE>LassoIdWsf2DiscoSvcMDRegisterResponse</TITLE> |
|
5593 |
LassoIdWsf2DiscoSvcMDRegisterResponse |
|
5594 |
lasso_idwsf2_disco_svc_md_register_response_new |
|
5595 |
<SUBSECTION Standard> |
|
5596 |
LASSO_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE |
|
5597 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE |
|
5598 |
LASSO_TYPE_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE |
|
5599 |
lasso_idwsf2_disco_svc_md_register_response_get_type |
|
5600 |
LASSO_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE_CLASS |
|
5601 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE_CLASS |
|
5602 |
LASSO_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE_GET_CLASS |
|
5603 |
</SECTION> |
|
5604 | ||
5605 |
<SECTION> |
|
5606 |
<FILE>disco_svc_md_association_add</FILE> |
|
5607 |
<TITLE>LassoIdWsf2DiscoSvcMDAssociationAdd</TITLE> |
|
5608 |
LassoIdWsf2DiscoSvcMDAssociationAdd |
|
5609 |
lasso_idwsf2_disco_svc_md_association_add_new |
|
5610 |
<SUBSECTION Standard> |
|
5611 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD |
|
5612 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD |
|
5613 |
LASSO_TYPE_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD |
|
5614 |
lasso_idwsf2_disco_svc_md_association_add_get_type |
|
5615 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_CLASS |
|
5616 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_CLASS |
|
5617 |
LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_GET_CLASS |
|
5618 |
</SECTION> |
|
5619 | ||
5620 |
<SECTION> |
|
5621 |
<FILE>disco_abstract</FILE> |
|
5622 |
<TITLE>LassoIdWsf2DiscoAbstract</TITLE> |
|
5623 |
LassoIdWsf2DiscoAbstract |
|
5624 |
lasso_idwsf2_disco_abstract_new |
|
5625 |
lasso_idwsf2_disco_abstract_new_with_string |
|
5626 |
<SUBSECTION Standard> |
|
5627 |
LASSO_IDWSF2_DISCO_ABSTRACT |
|
5628 |
LASSO_IS_IDWSF2_DISCO_ABSTRACT |
|
5629 |
LASSO_TYPE_IDWSF2_DISCO_ABSTRACT |
|
5630 |
lasso_idwsf2_disco_abstract_get_type |
|
5631 |
LASSO_IDWSF2_DISCO_ABSTRACT_CLASS |
|
5632 |
LASSO_IS_IDWSF2_DISCO_ABSTRACT_CLASS |
|
5633 |
LASSO_IDWSF2_DISCO_ABSTRACT_GET_CLASS |
|
5634 |
</SECTION> |
|
5635 | ||
5636 |
<SECTION> |
|
5637 |
<FILE>ps_remove_entity_request</FILE> |
|
5638 |
<TITLE>LassoIdWsf2PsRemoveEntityRequest</TITLE> |
|
5639 |
LassoIdWsf2PsRemoveEntityRequest |
|
5640 |
lasso_idwsf2_ps_remove_entity_request_new |
|
5641 |
<SUBSECTION Standard> |
|
5642 |
LASSO_IDWSF2_PS_REMOVE_ENTITY_REQUEST |
|
5643 |
LASSO_IS_IDWSF2_PS_REMOVE_ENTITY_REQUEST |
|
5644 |
LASSO_TYPE_IDWSF2_PS_REMOVE_ENTITY_REQUEST |
|
5645 |
lasso_idwsf2_ps_remove_entity_request_get_type |
|
5646 |
LASSO_IDWSF2_PS_REMOVE_ENTITY_REQUEST_CLASS |
|
5647 |
LASSO_IS_IDWSF2_PS_REMOVE_ENTITY_REQUEST_CLASS |
|
5648 |
LASSO_IDWSF2_PS_REMOVE_ENTITY_REQUEST_GET_CLASS |
|
5649 |
</SECTION> |
|
5650 | ||
5651 |
<SECTION> |
|
5652 |
<FILE>disco_service_type</FILE> |
|
5653 |
<TITLE>LassoIdWsf2DiscoServiceType</TITLE> |
|
5654 |
LassoIdWsf2DiscoServiceType |
|
5655 |
lasso_idwsf2_disco_service_type_new |
|
5656 |
lasso_idwsf2_disco_service_type_new_with_string |
|
5657 |
<SUBSECTION Standard> |
|
5658 |
LASSO_IDWSF2_DISCO_SERVICE_TYPE |
|
5659 |
LASSO_IS_IDWSF2_DISCO_SERVICE_TYPE |
|
5660 |
LASSO_TYPE_IDWSF2_DISCO_SERVICE_TYPE |
|
5661 |
lasso_idwsf2_disco_service_type_get_type |
|
5662 |
LASSO_IDWSF2_DISCO_SERVICE_TYPE_CLASS |
|
5663 |
LASSO_IS_IDWSF2_DISCO_SERVICE_TYPE_CLASS |
|
5664 |
LASSO_IDWSF2_DISCO_SERVICE_TYPE_GET_CLASS |
|
5665 |
</SECTION> |
|
5666 | ||
5667 |
<SECTION> |
|
5668 |
<FILE>subsref_subscription</FILE> |
|
5669 |
<TITLE>LassoIdWsf2SubsRefSubscription</TITLE> |
|
5670 |
LassoIdWsf2SubsRefSubscription |
|
5671 |
lasso_idwsf2_subsref_subscription_new |
|
5672 |
<SUBSECTION Standard> |
|
5673 |
LASSO_IDWSF2_SUBSREF_SUBSCRIPTION |
|
5674 |
LASSO_IS_IDWSF2_SUBSREF_SUBSCRIPTION |
|
5675 |
LASSO_TYPE_IDWSF2_SUBSREF_SUBSCRIPTION |
|
5676 |
lasso_idwsf2_subsref_subscription_get_type |
|
5677 |
LASSO_IDWSF2_SUBSREF_SUBSCRIPTION_CLASS |
|
5678 |
LASSO_IS_IDWSF2_SUBSREF_SUBSCRIPTION_CLASS |
|
5679 |
LASSO_IDWSF2_SUBSREF_SUBSCRIPTION_GET_CLASS |
|
5680 |
</SECTION> |
|
5681 | ||
5682 |
<SECTION> |
|
5683 |
<FILE>dst_data_response_base</FILE> |
|
5684 |
<TITLE>LassoIdWsf2DstDataResponseBase</TITLE> |
|
5685 |
LassoIdWsf2DstDataResponseBase |
|
5686 |
lasso_idwsf2_dst_data_response_base_new |
|
5687 |
<SUBSECTION Standard> |
|
5688 |
LASSO_IDWSF2_DST_DATA_RESPONSE_BASE |
|
5689 |
LASSO_IS_IDWSF2_DST_DATA_RESPONSE_BASE |
|
5690 |
LASSO_TYPE_IDWSF2_DST_DATA_RESPONSE_BASE |
|
5691 |
lasso_idwsf2_dst_data_response_base_get_type |
|
5692 |
LASSO_IDWSF2_DST_DATA_RESPONSE_BASE_CLASS |
|
5693 |
LASSO_IS_IDWSF2_DST_DATA_RESPONSE_BASE_CLASS |
|
5694 |
LASSO_IDWSF2_DST_DATA_RESPONSE_BASE_GET_CLASS |
|
5695 |
</SECTION> |
|
5696 | ||
5697 |
<SECTION> |
|
5698 |
<FILE>ps_resolve_input</FILE> |
|
5699 |
<TITLE>LassoIdWsf2PsResolveInput</TITLE> |
|
5700 |
LassoIdWsf2PsResolveInput |
|
5701 |
lasso_idwsf2_ps_resolve_input_new |
|
5702 |
<SUBSECTION Standard> |
|
5703 |
LASSO_IDWSF2_PS_RESOLVE_INPUT |
|
5704 |
LASSO_IS_IDWSF2_PS_RESOLVE_INPUT |
|
5705 |
LASSO_TYPE_IDWSF2_PS_RESOLVE_INPUT |
|
5706 |
lasso_idwsf2_ps_resolve_input_get_type |
|
5707 |
LASSO_IDWSF2_PS_RESOLVE_INPUT_CLASS |
|
5708 |
LASSO_IS_IDWSF2_PS_RESOLVE_INPUT_CLASS |
|
5709 |
LASSO_IDWSF2_PS_RESOLVE_INPUT_GET_CLASS |
|
5710 |
</SECTION> |
|
5711 | ||
5712 |
<SECTION> |
|
5713 |
<FILE>id_wsf_2_0_is_help</FILE> |
|
5714 |
LASSO_IS_IDWSF2_IS_HELP |
|
5715 |
<TITLE>LassoIdWsf2IsHelp</TITLE> |
|
5716 |
LassoIdWsf2IsHelp |
|
5717 |
lasso_idwsf2_is_help_new |
|
5718 |
<SUBSECTION Standard> |
|
5719 |
LASSO_IDWSF2_IS_HELP |
|
5720 |
LASSO_TYPE_IDWSF2_IS_HELP |
|
5721 |
lasso_idwsf2_is_help_get_type |
|
5722 |
LASSO_IDWSF2_IS_HELP_CLASS |
|
5723 |
LASSO_IS_IDWSF2_IS_HELP_CLASS |
|
5724 |
LASSO_IDWSF2_IS_HELP_GET_CLASS |
|
5725 |
</SECTION> |
|
5726 | ||
5727 |
<SECTION> |
|
5728 |
<FILE>disco_keys</FILE> |
|
5729 |
<TITLE>LassoIdWsf2DiscoKeys</TITLE> |
|
5730 |
LassoIdWsf2DiscoKeys |
|
5731 |
lasso_idwsf2_disco_keys_new |
|
5732 |
<SUBSECTION Standard> |
|
5733 |
LASSO_IDWSF2_DISCO_KEYS |
|
5734 |
LASSO_IS_IDWSF2_DISCO_KEYS |
|
5735 |
LASSO_TYPE_IDWSF2_DISCO_KEYS |
|
5736 |
lasso_idwsf2_disco_keys_get_type |
|
5737 |
LASSO_IDWSF2_DISCO_KEYS_CLASS |
|
5738 |
LASSO_IS_IDWSF2_DISCO_KEYS_CLASS |
|
5739 |
LASSO_IDWSF2_DISCO_KEYS_GET_CLASS |
|
5740 |
</SECTION> |
|
5741 | ||
5742 |
<SECTION> |
|
5743 |
<FILE>dstref_data_response</FILE> |
|
5744 |
<TITLE>LassoIdWsf2DstRefDataResponse</TITLE> |
|
5745 |
LassoIdWsf2DstRefDataResponse |
|
5746 |
lasso_idwsf2_dstref_data_response_new |
|
5747 |
<SUBSECTION Standard> |
|
5748 |
LASSO_IDWSF2_DSTREF_DATA_RESPONSE |
|
5749 |
LASSO_IS_IDWSF2_DSTREF_DATA_RESPONSE |
|
5750 |
LASSO_TYPE_IDWSF2_DSTREF_DATA_RESPONSE |
|
5751 |
lasso_idwsf2_dstref_data_response_get_type |
|
5752 |
LASSO_IDWSF2_DSTREF_DATA_RESPONSE_CLASS |
|
5753 |
LASSO_IS_IDWSF2_DSTREF_DATA_RESPONSE_CLASS |
|
5754 |
LASSO_IDWSF2_DSTREF_DATA_RESPONSE_GET_CLASS |
|
5755 |
</SECTION> |
|
5756 | ||
5757 |
<SECTION> |
|
5758 |
<FILE>ecp</FILE> |
|
5759 |
<TITLE>LassoEcp</TITLE> |
|
5760 |
LassoEcp |
|
5761 |
lasso_ecp_is_provider_in_sp_idplist |
|
5762 |
lasso_ecp_is_idp_entry_known_idp_supporting_ecp |
|
5763 |
lasso_ecp_set_known_sp_provided_idp_entries_supporting_ecp |
|
5764 |
lasso_ecp_has_sp_idplist |
|
5765 |
lasso_ecp_get_endpoint_url_by_entity_id |
|
5766 |
lasso_ecp_process_sp_idp_list |
|
5767 |
lasso_ecp_new |
|
5768 |
lasso_ecp_process_authn_request_msg |
|
5769 |
lasso_ecp_process_response_msg |
|
5770 |
lasso_ecp_destroy |
|
2428 |
<FILE>ecp</FILE> |
|
2429 |
<TITLE>LassoEcp</TITLE> |
|
2430 |
LassoEcp |
|
2431 |
lasso_ecp_is_provider_in_sp_idplist |
|
2432 |
lasso_ecp_is_idp_entry_known_idp_supporting_ecp |
|
2433 |
lasso_ecp_set_known_sp_provided_idp_entries_supporting_ecp |
|
2434 |
lasso_ecp_has_sp_idplist |
|
2435 |
lasso_ecp_get_endpoint_url_by_entity_id |
|
2436 |
lasso_ecp_process_sp_idp_list |
|
2437 |
lasso_ecp_new |
|
2438 |
lasso_ecp_process_authn_request_msg |
|
2439 |
lasso_ecp_process_response_msg |
|
2440 |
lasso_ecp_destroy |
|
5771 | 2441 |
<SUBSECTION Standard> |
5772 | 2442 |
LASSO_ECP |
5773 | 2443 |
LASSO_IS_ECP |
... | ... | |
5827 | 2497 |
LASSO_ASSERTION_QUERY_GET_CLASS |
5828 | 2498 |
</SECTION> |
5829 | 2499 | |
5830 |
<SECTION> |
|
5831 |
<FILE>id_wsf_2_0_data_service</FILE> |
|
5832 |
<TITLE>LassoIdWsf2DataService</TITLE> |
|
5833 |
LassoIdWsf2DataService |
|
5834 |
lasso_idwsf2_data_service_new |
|
5835 |
lasso_idwsf2_data_service_init_create |
|
5836 |
lasso_idwsf2_data_service_init_delete |
|
5837 |
lasso_idwsf2_data_service_init_modify |
|
5838 |
lasso_idwsf2_data_service_init_query |
|
5839 |
lasso_idwsf2_data_service_add_modify_item |
|
5840 |
lasso_idwsf2_data_service_add_namespace |
|
5841 |
lasso_idwsf2_data_service_add_query_item |
|
5842 |
lasso_idwsf2_data_service_build_request_msg |
|
5843 |
lasso_idwsf2_data_service_build_response_msg |
|
5844 |
lasso_idwsf2_data_service_get_item |
|
5845 |
lasso_idwsf2_data_service_get_query_item_result |
|
5846 |
lasso_idwsf2_data_service_get_query_item_results |
|
5847 |
lasso_idwsf2_data_service_get_request_type |
|
5848 |
lasso_idwsf2_data_service_get_service_type |
|
5849 |
lasso_idwsf2_data_service_get_service_type_prefix |
|
5850 |
lasso_idwsf2_data_service_process_request_msg |
|
5851 |
lasso_idwsf2_data_service_process_response_msg |
|
5852 |
lasso_idwsf2_data_service_set_query_item_result |
|
5853 |
lasso_idwsf2_data_service_get_query_item_result_content |
|
5854 |
lasso_idwsf2_data_service_set_service_type |
|
5855 |
lasso_idwsf2_data_service_set_status_code |
|
5856 |
lasso_idwsf2_data_service_get_item_ids |
|
5857 |
lasso_idwsf2_data_service_get_items |
|
5858 |
lasso_idwsf2_data_service_get_response_status |
|
5859 |
lasso_idwsf2_data_service_validate_request |
|
5860 |
<SUBSECTION Standard> |
|
5861 |
LASSO_IDWSF2_DATA_SERVICE |
|
5862 |
LASSO_IS_IDWSF2_DATA_SERVICE |
|
5863 |
LASSO_TYPE_IDWSF2_DATA_SERVICE |
|
5864 |
lasso_idwsf2_data_service_get_type |
|
5865 |
LASSO_IDWSF2_DATA_SERVICE_CLASS |
|
5866 |
LASSO_IS_IDWSF2_DATA_SERVICE_CLASS |
|
5867 |
LASSO_IDWSF2_DATA_SERVICE_GET_CLASS |
|
5868 |
</SECTION> |
|
5869 | ||
5870 |
<SECTION> |
|
5871 |
<FILE>id_wsf_2_0_profile</FILE> |
|
5872 |
<TITLE>LassoIdWsf2Profile</TITLE> |
|
5873 |
LassoIdWsf2Profile |
|
5874 |
lasso_idwsf2_profile_set_epr |
|
5875 |
lasso_idwsf2_profile_get_epr |
|
5876 |
lasso_idwsf2_profile_get_soap_envelope_request |
|
5877 |
lasso_idwsf2_profile_get_soap_envelope_response |
|
5878 |
lasso_idwsf2_profile_init_request |
|
5879 |
lasso_idwsf2_profile_build_request_msg |
|
5880 |
lasso_idwsf2_profile_process_request_msg |
|
5881 |
lasso_idwsf2_profile_check_security_mechanism |
|
5882 |
lasso_idwsf2_profile_get_name_identifier |
|
5883 |
lasso_idwsf2_profile_init_response |
|
5884 |
lasso_idwsf2_profile_init_soap_fault_response |
|
5885 |
lasso_idwsf2_profile_redirect_user_for_interaction |
|
5886 |
lasso_idwsf2_profile_build_response_msg |
|
5887 |
lasso_idwsf2_profile_process_response_msg |
|
5888 |
<SUBSECTION Standard> |
|
5889 |
LASSO_IDWSF2_PROFILE |
|
5890 |
LASSO_IS_IDWSF2_PROFILE |
|
5891 |
LASSO_TYPE_IDWSF2_PROFILE |
|
5892 |
lasso_idwsf2_profile_get_type |
|
5893 |
LASSO_IDWSF2_PROFILE_CLASS |
|
5894 |
LASSO_IS_IDWSF2_PROFILE_CLASS |
|
5895 |
LASSO_IDWSF2_PROFILE_GET_CLASS |
|
5896 |
</SECTION> |
|
5897 | ||
5898 |
<SECTION> |
|
5899 |
<FILE>id_wsf_2_0_discovery</FILE> |
|
5900 |
<TITLE>LassoIdWsf2Discovery</TITLE> |
|
5901 |
LassoIdWsf2Discovery |
|
5902 |
lasso_idwsf2_discovery_new |
|
5903 |
lasso_idwsf2_discovery_init_metadata_register |
|
5904 |
lasso_idwsf2_discovery_init_metadata_association_add |
|
5905 |
lasso_idwsf2_discovery_init_query |
|
5906 |
lasso_idwsf2_discovery_init_metadata_query |
|
5907 |
lasso_idwsf2_discovery_init_metadata_replace |
|
5908 |
lasso_idwsf2_discovery_init_metadata_delete |
|
5909 |
lasso_idwsf2_discovery_init_metadata_association_delete |
|
5910 |
lasso_idwsf2_discovery_init_metadata_association_query |
|
5911 |
lasso_idwsf2_discovery_add_service_metadata |
|
5912 |
lasso_idwsf2_discovery_add_simple_service_metadata |
|
5913 |
lasso_idwsf2_discovery_get_metadatas |
|
5914 |
lasso_idwsf2_discovery_add_requested_service |
|
5915 |
lasso_idwsf2_discovery_build_request_msg |
|
5916 |
lasso_idwsf2_discovery_process_request_msg |
|
5917 |
lasso_idwsf2_discovery_get_request_type |
|
5918 |
lasso_idwsf2_discovery_validate_request |
|
5919 |
lasso_idwsf2_discovery_fail_request |
|
5920 |
lasso_idwsf2_discovery_process_response_msg |
|
5921 |
lasso_idwsf2_discovery_get_endpoint_references |
|
5922 |
lasso_idwsf2_discovery_get_svcmdids |
|
5923 |
lasso_idwsf2_discovery_set_svcmdids |
|
5924 |
<SUBSECTION Standard> |
|
5925 |
LASSO_IDWSF2_DISCOVERY |
|
5926 |
LASSO_IS_IDWSF2_DISCOVERY |
|
5927 |
LASSO_TYPE_IDWSF2_DISCOVERY |
|
5928 |
lasso_idwsf2_discovery_get_type |
|
5929 |
LASSO_IDWSF2_DISCOVERY_CLASS |
|
5930 |
LASSO_IS_IDWSF2_DISCOVERY_CLASS |
|
5931 |
LASSO_IDWSF2_DISCOVERY_GET_CLASS |
|
5932 |
</SECTION> |
|
5933 | ||
5934 |
<SECTION> |
|
5935 |
<FILE>id_wsf_2_0_login</FILE> |
|
5936 |
<TITLE>Addon to SAML 2.0 profile for ID-WSF 2.0 bootsraping</TITLE> |
|
5937 |
lasso_login_idwsf2_add_discovery_bootstrap_epr |
|
5938 |
lasso_login_idwsf2_get_discovery_bootstrap_epr |
|
5939 |
lasso_saml2_assertion_idwsf2_get_discovery_bootstrap_epr |
|
5940 |
</SECTION> |
|
5941 | ||
5942 | 2500 |
<SECTION> |
5943 | 2501 |
<FILE>errors</FILE> |
5944 | 2502 |
<TITLE>Error Codes</TITLE> |
... | ... | |
6046 | 2604 |
LASSO_SOAP_ERROR_MISSING_HEADER |
6047 | 2605 |
LASSO_SOAP_ERROR_MISSING_BODY |
6048 | 2606 |
LASSO_SOAP_ERROR_MISSING_SOAP_FAULT_DETAIL |
6049 |
LASSO_NAME_IDENTIFIER_MAPPING_ERROR_MISSING_TARGET_NAMESPACE |
|
6050 |
LASSO_NAME_IDENTIFIER_MAPPING_ERROR_FORBIDDEN_CALL_ON_THIS_SIDE |
|
6051 |
LASSO_NAME_IDENTIFIER_MAPPING_ERROR_MISSING_TARGET_IDENTIFIER |
|
6052 |
LASSO_DATA_SERVICE_ERROR_UNREGISTERED_DST |
|
6053 |
LASSO_WSF_PROFILE_ERROR_MISSING_CORRELATION |
|
6054 |
LASSO_WSF_PROFILE_ERROR_MISSING_SECURITY |
|
6055 |
LASSO_WSF_PROFILE_ERROR_MISSING_ASSERTION_ID |
|
6056 |
LASSO_WSF_PROFILE_ERROR_MISSING_ENDPOINT |
|
6057 |
LASSO_WSF_PROFILE_ERROR_SOAP_FAULT |
|
6058 |
LASSO_WSF_PROFILE_ERROR_UNSUPPORTED_SECURITY_MECHANISM |
|
6059 |
LASSO_WSF_PROFILE_ERROR_MISSING_DESCRIPTION |
|
6060 |
LASSO_WSF_PROFILE_ERROR_MISSING_RESOURCE_ID |
|
6061 |
LASSO_WSF_PROFILE_ERROR_MISSING_CREDENTIAL_REF |
|
6062 |
LASSO_WSF_PROFILE_ERROR_INVALID_OR_MISSING_REFERENCE_TO_MESSAGE_ID |
|
6063 |
LASSO_DISCOVERY_ERROR_SVC_METADATA_REGISTER_FAILED |
|
6064 |
LASSO_DISCOVERY_ERROR_SVC_METADATA_ASSOCIATION_ADD_FAILED |
|
6065 |
LASSO_DISCOVERY_ERROR_MISSING_REQUESTED_SERVICE |
|
6066 |
LASSO_DISCOVERY_ERROR_FAILED_TO_BUILD_ENDPOINT_REFERENCE |
|
6067 |
LASSO_DST_ERROR_MISSING_SERVICE_DATA |
|
6068 |
LASSO_DST_ERROR_QUERY_FAILED |
|
6069 |
LASSO_DST_ERROR_QUERY_PARTIALLY_FAILED |
|
6070 |
LASSO_DST_ERROR_MODIFY_FAILED |
|
6071 |
LASSO_DST_ERROR_MODIFY_PARTIALLY_FAILED |
|
6072 |
LASSO_DST_ERROR_NEW_DATA_MISSING |
|
6073 |
LASSO_DST_ERROR_QUERY_NOT_FOUND |
|
6074 |
LASSO_DST_ERROR_NO_DATA |
|
6075 |
LASSO_DST_ERROR_MALFORMED_QUERY |
|
6076 | 2607 |
LASSO_REGISTRY_ERROR_KEY_EXISTS |
6077 | 2608 |
LASSO_PROVIDER_ERROR_MISSING_PUBLIC_KEY |
6078 | 2609 |
</SECTION> |
... | ... | |
6097 | 2628 |
lasso_registry_default_get_mapping |
6098 | 2629 |
</SECTION> |
6099 | 2630 | |
6100 |
<SECTION> |
|
6101 |
<FILE>id_wsf2_utils</FILE> |
|
6102 |
<TITLE>Utility functions for ID-WSF 2.0</TITLE> |
|
6103 |
<SUBSECTION LassoIdentity Extensions> |
|
6104 |
lasso_identity_add_svc_md_id |
|
6105 |
lasso_identity_get_svc_md_ids |
|
6106 |
<SUBSECTION LassoServer Extensions> |
|
6107 |
lasso_server_add_svc_metadata |
|
6108 |
lasso_server_get_svc_metadatas |
|
6109 |
lasso_server_get_svc_metadatas_with_id_and_type |
|
6110 |
lasso_server_create_assertion_as_idwsf2_security_token |
|
6111 |
<SUBSECTION LassoSession Extensions> |
|
6112 |
lasso_session_add_endpoint_reference |
|
6113 |
lasso_session_get_endpoint_reference |
|
6114 |
lasso_session_get_assertion_identity_token |
|
6115 |
<SUBSECTION DST Service Registry> |
|
6116 |
lasso_register_idwsf2_dst_service |
|
6117 |
lasso_get_prefix_for_idwsf2_dst_service_href |
|
6118 |
</SECTION> |
|
6119 | ||
6120 |
<SECTION> |
|
6121 |
<FILE>id_wsf_utils</FILE> |
|
6122 |
<TITLE>Utility functions for ID-WSF 1.0</TITLE> |
|
6123 |
<SUBSECTION Security Mech ID> |
|
6124 |
lasso_security_mech_id_is_null_authentication |
|
6125 |
lasso_security_mech_id_is_x509_authentication |
|
6126 |
lasso_security_mech_id_is_saml_authentication |
|
6127 |
lasso_security_mech_id_is_bearer_authentication |
|
6128 |
<SUBSECTION LassoLogin Extensions> |
|
6129 |
lasso_login_set_encryptedResourceId |
|
6130 |
lasso_login_set_resourceId |
|
6131 |
<SUBSECTION LassoServer Extensions> |
|
6132 |
lasso_server_get_service |
|
6133 |
lasso_server_add_service |
|
6134 |
lasso_server_add_service_from_dump |
|
6135 |
<SUBSECTION LassoIdentity Extensions> |
|
6136 |
lasso_identity_add_resource_offering |
|
6137 |
lasso_identity_remove_resource_offering |
|
6138 |
lasso_identity_get_offerings |
|
6139 |
lasso_identity_get_resource_offering |
|
6140 |
<SUBSECTION Soap Binding> |
|
6141 |
lasso_soap_binding_get_provider |
|
6142 |
lasso_soap_binding_get_correlation |
|
6143 |
<SUBSECTION DST Service Registry> |
|
6144 |
lasso_register_dst_service |
|
6145 |
lasso_get_prefix_for_dst_service_href |
|
6146 |
</SECTION> |
|
6147 | ||
6148 | 2631 |
<SECTION> |
6149 | 2632 |
<FILE>saml2_utils</FILE> |
6150 | 2633 |
<TITLE>Utility functions for SAML 2.0</TITLE> |
... | ... | |
6153 | 2636 |
lasso_provider_saml2_node_encrypt |
6154 | 2637 |
</SECTION> |
6155 | 2638 | |
6156 |
<SECTION> |
|
6157 |
<FILE>soap_binding2</FILE> |
|
6158 |
<TITLE>SOAP Binding utility function for ID-WSF 2.0</TITLE> |
|
6159 |
lasso_soap_envelope_sb2_get_provider_id |
|
6160 |
lasso_soap_envelope_sb2_get_redirect_request_url |
|
6161 |
lasso_soap_envelope_sb2_get_target_identity_header |
|
6162 |
lasso_soap_envelope_get_sb2_user_interaction_header |
|
6163 |
</SECTION> |
|
6164 | ||
6165 | 2639 |
<SECTION> |
6166 | 2640 |
<FILE>logging</FILE> |
6167 | 2641 |
<TITLE>Logging</TITLE> |
docs/reference/lasso/lasso.types | ||
---|---|---|
1 |
#include <lasso/lasso.h> |
|
2 |
#include <lasso/xml/xml_idff.h> |
|
3 |
#include <lasso/xml/saml-2.0/xml_saml2.h> |
|
4 |
#include <lasso/xml/soap-1.1/xml_soap11.h> |
|
5 | ||
6 |
lasso_assertion_query_get_type |
|
7 |
lasso_defederation_get_type |
|
8 |
lasso_ds_key_info_get_type |
|
9 |
lasso_ds_key_value_get_type |
|
10 |
lasso_ds_rsa_key_value_get_type |
|
11 |
lasso_ecp_get_type |
|
12 |
lasso_federation_get_type |
|
13 |
lasso_identity_get_type |
|
14 |
lasso_lecp_get_type |
|
15 |
lasso_lib_assertion_get_type |
|
16 |
lasso_lib_authentication_statement_get_type |
|
17 |
lasso_lib_authn_context_get_type |
|
18 |
lasso_lib_authn_request_envelope_get_type |
|
19 |
lasso_lib_authn_request_get_type |
|
20 |
lasso_lib_authn_response_envelope_get_type |
|
21 |
lasso_lib_authn_response_get_type |
|
22 |
lasso_lib_federation_termination_notification_get_type |
|
23 |
lasso_lib_idp_entries_get_type |
|
24 |
lasso_lib_idp_entry_get_type |
|
25 |
lasso_lib_idp_list_get_type |
|
26 |
lasso_lib_logout_request_get_type |
|
27 |
lasso_lib_logout_response_get_type |
|
28 |
lasso_lib_name_identifier_mapping_request_get_type |
|
29 |
lasso_lib_name_identifier_mapping_response_get_type |
|
30 |
lasso_lib_register_name_identifier_request_get_type |
|
31 |
lasso_lib_register_name_identifier_response_get_type |
|
32 |
lasso_lib_request_authn_context_get_type |
|
33 |
lasso_lib_scoping_get_type |
|
34 |
lasso_lib_status_response_get_type |
|
35 |
lasso_lib_subject_get_type |
|
36 |
lasso_login_get_type |
|
37 |
lasso_logout_get_type |
|
38 |
lasso_misc_text_node_get_type |
|
39 |
lasso_name_identifier_mapping_get_type |
|
40 |
lasso_name_id_management_get_type |
|
41 |
lasso_name_registration_get_type |
|
42 |
lasso_node_get_type |
|
43 |
lasso_profile_get_type |
|
44 |
lasso_provider_get_type |
|
45 |
lasso_saml2_action_get_type |
|
46 |
lasso_saml2_advice_get_type |
|
47 |
lasso_saml2_assertion_get_type |
|
48 |
lasso_saml2_attribute_get_type |
|
49 |
lasso_saml2_attribute_statement_get_type |
|
50 |
lasso_saml2_attribute_value_get_type |
|
51 |
lasso_saml2_audience_restriction_get_type |
|
52 |
lasso_saml2_authn_context_get_type |
|
53 |
lasso_saml2_authn_statement_get_type |
|
54 |
lasso_saml2_authz_decision_statement_get_type |
|
55 |
lasso_saml2_base_idabstract_get_type |
|
56 |
lasso_saml2_condition_abstract_get_type |
|
57 |
lasso_saml2_conditions_get_type |
|
58 |
lasso_saml2_encrypted_element_get_type |
|
59 |
lasso_saml2_evidence_get_type |
|
60 |
lasso_saml2_key_info_confirmation_data_get_type |
|
61 |
lasso_saml2_name_id_get_type |
|
62 |
lasso_saml2_one_time_use_get_type |
|
63 |
lasso_saml2_proxy_restriction_get_type |
|
64 |
lasso_saml2_statement_abstract_get_type |
|
65 |
lasso_saml2_subject_confirmation_data_get_type |
|
66 |
lasso_saml2_subject_confirmation_get_type |
|
67 |
lasso_saml2_subject_get_type |
|
68 |
lasso_saml2_subject_locality_get_type |
|
69 |
lasso_saml_advice_get_type |
|
70 |
lasso_saml_assertion_get_type |
|
71 |
lasso_saml_attribute_designator_get_type |
|
72 |
lasso_saml_attribute_get_type |
|
73 |
lasso_saml_attribute_statement_get_type |
|
74 |
lasso_saml_attribute_value_get_type |
|
75 |
lasso_saml_audience_restriction_condition_get_type |
|
76 |
lasso_saml_authentication_statement_get_type |
|
77 |
lasso_saml_authority_binding_get_type |
|
78 |
lasso_saml_condition_abstract_get_type |
|
79 |
lasso_saml_conditions_get_type |
|
80 |
lasso_saml_name_identifier_get_type |
|
81 |
lasso_samlp2_artifact_resolve_get_type |
|
82 |
lasso_samlp2_artifact_response_get_type |
|
83 |
lasso_samlp2_assertion_id_request_get_type |
|
84 |
lasso_samlp2_attribute_query_get_type |
|
85 |
lasso_samlp2_authn_query_get_type |
|
86 |
lasso_samlp2_authn_request_get_type |
|
87 |
lasso_samlp2_authz_decision_query_get_type |
|
88 |
lasso_samlp2_extensions_get_type |
|
89 |
lasso_samlp2_idp_entry_get_type |
|
90 |
lasso_samlp2_idp_list_get_type |
|
91 |
lasso_samlp2_logout_request_get_type |
|
92 |
lasso_samlp2_logout_response_get_type |
|
93 |
lasso_samlp2_manage_name_id_request_get_type |
|
94 |
lasso_samlp2_manage_name_id_response_get_type |
|
95 |
lasso_samlp2_name_id_mapping_request_get_type |
|
96 |
lasso_samlp2_name_id_mapping_response_get_type |
|
97 |
lasso_samlp2_name_id_policy_get_type |
|
98 |
lasso_samlp2_request_abstract_get_type |
|
99 |
lasso_samlp2_requested_authn_context_get_type |
|
100 |
lasso_samlp2_response_get_type |
|
101 |
lasso_samlp2_scoping_get_type |
|
102 |
lasso_samlp2_status_code_get_type |
|
103 |
lasso_samlp2_status_detail_get_type |
|
104 |
lasso_samlp2_status_get_type |
|
105 |
lasso_samlp2_status_response_get_type |
|
106 |
lasso_samlp2_subject_query_abstract_get_type |
|
107 |
lasso_samlp2_terminate_get_type |
|
108 |
lasso_samlp_request_abstract_get_type |
|
109 |
lasso_samlp_request_get_type |
|
110 |
lasso_samlp_response_abstract_get_type |
|
111 |
lasso_samlp_response_get_type |
|
112 |
lasso_samlp_status_code_get_type |
|
113 |
lasso_samlp_status_get_type |
|
114 |
lasso_saml_statement_abstract_get_type |
|
115 |
lasso_saml_subject_confirmation_get_type |
|
116 |
lasso_saml_subject_get_type |
|
117 |
lasso_saml_subject_locality_get_type |
|
118 |
lasso_saml_subject_statement_abstract_get_type |
|
119 |
lasso_saml_subject_statement_get_type |
|
120 |
lasso_server_get_type |
|
121 |
lasso_session_get_type |
|
122 |
lasso_soap_body_get_type |
|
123 |
lasso_soap_detail_get_type |
|
124 |
lasso_soap_envelope_get_type |
|
125 |
lasso_soap_fault_get_type |
|
126 |
lasso_soap_header_get_type |
docs/reference/lasso/lasso.types.in | ||
---|---|---|
1 |
#include <lasso/lasso.h> |
|
2 |
#include <lasso/xml/xml_idff.h> |
|
3 |
#include <lasso/xml/saml-2.0/xml_saml2.h> |
|
4 |
#WSF##include <lasso/id-wsf/id_wsf.h> |
|
5 |
#WSF##include <lasso/id-wsf-2.0/id_wsf_2.h> |
|
6 |
#WSF##include <lasso/xml/xml_idwsf.h> |
|
7 | ||
8 |
lasso_assertion_query_get_type |
|
9 |
lasso_defederation_get_type |
|
10 |
lasso_ds_key_info_get_type |
|
11 |
lasso_ds_key_value_get_type |
|
12 |
lasso_ds_rsa_key_value_get_type |
|
13 |
lasso_ecp_get_type |
|
14 |
lasso_federation_get_type |
|
15 |
lasso_identity_get_type |
|
16 |
lasso_lecp_get_type |
|
17 |
lasso_lib_assertion_get_type |
|
18 |
lasso_lib_authentication_statement_get_type |
|
19 |
lasso_lib_authn_context_get_type |
|
20 |
lasso_lib_authn_request_envelope_get_type |
|
21 |
lasso_lib_authn_request_get_type |
|
22 |
lasso_lib_authn_response_envelope_get_type |
|
23 |
lasso_lib_authn_response_get_type |
|
24 |
lasso_lib_federation_termination_notification_get_type |
|
25 |
lasso_lib_idp_entries_get_type |
|
26 |
lasso_lib_idp_entry_get_type |
|
27 |
lasso_lib_idp_list_get_type |
|
28 |
lasso_lib_logout_request_get_type |
|
29 |
lasso_lib_logout_response_get_type |
|
30 |
lasso_lib_name_identifier_mapping_request_get_type |
|
31 |
lasso_lib_name_identifier_mapping_response_get_type |
|
32 |
lasso_lib_register_name_identifier_request_get_type |
|
33 |
lasso_lib_register_name_identifier_response_get_type |
|
34 |
lasso_lib_request_authn_context_get_type |
|
35 |
lasso_lib_scoping_get_type |
|
36 |
lasso_lib_status_response_get_type |
|
37 |
lasso_lib_subject_get_type |
|
38 |
lasso_login_get_type |
|
39 |
lasso_logout_get_type |
|
40 |
lasso_misc_text_node_get_type |
|
41 |
lasso_name_identifier_mapping_get_type |
|
42 |
lasso_name_id_management_get_type |
|
43 |
lasso_name_registration_get_type |
|
44 |
lasso_node_get_type |
|
45 |
lasso_profile_get_type |
|
46 |
lasso_provider_get_type |
|
47 |
lasso_saml2_action_get_type |
|
48 |
lasso_saml2_advice_get_type |
|
49 |
lasso_saml2_assertion_get_type |
|
50 |
lasso_saml2_attribute_get_type |
|
51 |
lasso_saml2_attribute_statement_get_type |
|
52 |
lasso_saml2_attribute_value_get_type |
|
53 |
lasso_saml2_audience_restriction_get_type |
|
54 |
lasso_saml2_authn_context_get_type |
|
55 |
lasso_saml2_authn_statement_get_type |
|
56 |
lasso_saml2_authz_decision_statement_get_type |
|
57 |
lasso_saml2_base_idabstract_get_type |
|
58 |
lasso_saml2_condition_abstract_get_type |
|
59 |
lasso_saml2_conditions_get_type |
|
60 |
lasso_saml2_encrypted_element_get_type |
|
61 |
lasso_saml2_evidence_get_type |
|
62 |
lasso_saml2_key_info_confirmation_data_get_type |
|
63 |
lasso_saml2_name_id_get_type |
|
64 |
lasso_saml2_one_time_use_get_type |
|
65 |
lasso_saml2_proxy_restriction_get_type |
|
66 |
lasso_saml2_statement_abstract_get_type |
|
67 |
lasso_saml2_subject_confirmation_data_get_type |
|
68 |
lasso_saml2_subject_confirmation_get_type |
|
69 |
lasso_saml2_subject_get_type |
|
70 |
lasso_saml2_subject_locality_get_type |
|
71 |
lasso_saml_advice_get_type |
|
72 |
lasso_saml_assertion_get_type |
|
73 |
lasso_saml_attribute_designator_get_type |
|
74 |
lasso_saml_attribute_get_type |
|
75 |
lasso_saml_attribute_statement_get_type |
|
76 |
lasso_saml_attribute_value_get_type |
|
77 |
lasso_saml_audience_restriction_condition_get_type |
|
78 |
lasso_saml_authentication_statement_get_type |
|
79 |
lasso_saml_authority_binding_get_type |
|
80 |
lasso_saml_condition_abstract_get_type |
|
81 |
lasso_saml_conditions_get_type |
|
82 |
lasso_saml_name_identifier_get_type |
|
83 |
lasso_samlp2_artifact_resolve_get_type |
|
84 |
lasso_samlp2_artifact_response_get_type |
|
85 |
lasso_samlp2_assertion_id_request_get_type |
|
86 |
lasso_samlp2_attribute_query_get_type |
|
87 |
lasso_samlp2_authn_query_get_type |
|
88 |
lasso_samlp2_authn_request_get_type |
|
89 |
lasso_samlp2_authz_decision_query_get_type |
|
90 |
lasso_samlp2_extensions_get_type |
|
91 |
lasso_samlp2_idp_entry_get_type |
|
92 |
lasso_samlp2_idp_list_get_type |
|
93 |
lasso_samlp2_logout_request_get_type |
|
94 |
lasso_samlp2_logout_response_get_type |
|
95 |
lasso_samlp2_manage_name_id_request_get_type |
|
96 |
lasso_samlp2_manage_name_id_response_get_type |
|
97 |
lasso_samlp2_name_id_mapping_request_get_type |
|
98 |
lasso_samlp2_name_id_mapping_response_get_type |
|
99 |
lasso_samlp2_name_id_policy_get_type |
|
100 |
lasso_samlp2_request_abstract_get_type |
|
101 |
lasso_samlp2_requested_authn_context_get_type |
|
102 |
lasso_samlp2_response_get_type |
|
103 |
lasso_samlp2_scoping_get_type |
|
104 |
lasso_samlp2_status_code_get_type |
|
105 |
lasso_samlp2_status_detail_get_type |
|
106 |
lasso_samlp2_status_get_type |
|
107 |
lasso_samlp2_status_response_get_type |
|
108 |
lasso_samlp2_subject_query_abstract_get_type |
|
109 |
lasso_samlp2_terminate_get_type |
|
110 |
lasso_samlp_request_abstract_get_type |
|
111 |
lasso_samlp_request_get_type |
|
112 |
lasso_samlp_response_abstract_get_type |
|
113 |
lasso_samlp_response_get_type |
|
114 |
lasso_samlp_status_code_get_type |
|
115 |
lasso_samlp_status_get_type |
|
116 |
lasso_saml_statement_abstract_get_type |
|
117 |
lasso_saml_subject_confirmation_get_type |
|
118 |
lasso_saml_subject_get_type |
|
119 |
lasso_saml_subject_locality_get_type |
|
120 |
lasso_saml_subject_statement_abstract_get_type |
|
121 |
lasso_saml_subject_statement_get_type |
|
122 |
lasso_server_get_type |
|
123 |
lasso_session_get_type |
|
124 |
lasso_soap_body_get_type |
|
125 |
lasso_soap_detail_get_type |
|
126 |
lasso_soap_envelope_get_type |
|
127 |
lasso_soap_fault_get_type |
|
128 |
lasso_soap_header_get_type |
|
129 |
#WSF#lasso_authentication_get_type |
|
130 |
#WSF#lasso_data_service_get_type |
|
131 |
#WSF#lasso_disco_authenticate_requester_get_type |
|
132 |
#WSF#lasso_disco_authenticate_session_context_get_type |
|
133 |
#WSF#lasso_disco_authorize_requester_get_type |
|
134 |
#WSF#lasso_disco_credentials_get_type |
|
135 |
#WSF#lasso_disco_description_get_type |
|
136 |
#WSF#lasso_disco_encrypted_resource_id_get_type |
|
137 |
#WSF#lasso_disco_encrypt_resource_id_get_type |
|
138 |
#WSF#lasso_disco_generate_bearer_token_get_type |
|
139 |
#WSF#lasso_disco_insert_entry_get_type |
|
140 |
#WSF#lasso_disco_modify_get_type |
|
141 |
#WSF#lasso_disco_modify_response_get_type |
|
142 |
#WSF#lasso_disco_options_get_type |
|
143 |
#WSF#lasso_disco_query_get_type |
|
144 |
#WSF#lasso_disco_query_response_get_type |
|
145 |
#WSF#lasso_disco_remove_entry_get_type |
|
146 |
#WSF#lasso_disco_requested_service_type_get_type |
|
147 |
#WSF#lasso_disco_resource_id_get_type |
|
148 |
#WSF#lasso_disco_resource_offering_get_type |
|
149 |
#WSF#lasso_disco_send_single_logout_get_type |
|
150 |
#WSF#lasso_disco_service_instance_get_type |
|
151 |
#WSF#lasso_discovery_get_type |
|
152 |
#WSF#lasso_dst_data_get_type |
|
153 |
#WSF#lasso_dst_modification_get_type |
|
154 |
#WSF#lasso_dst_modify_get_type |
|
155 |
#WSF#lasso_dst_modify_response_get_type |
|
156 |
#WSF#lasso_dst_new_data_get_type |
|
157 |
#WSF#lasso_dst_query_get_type |
|
158 |
#WSF#lasso_dst_query_item_get_type |
|
159 |
#WSF#lasso_dst_query_response_get_type |
|
160 |
#WSF#lasso_idwsf2_data_service_get_type |
|
161 |
#WSF#lasso_idwsf2_disco_abstract_get_type |
|
162 |
#WSF#lasso_idwsf2_disco_endpoint_context_get_type |
|
163 |
#WSF#lasso_idwsf2_disco_keys_get_type |
|
164 |
#WSF#lasso_idwsf2_disco_options_get_type |
|
165 |
#WSF#lasso_idwsf2_disco_provider_id_get_type |
|
166 |
#WSF#lasso_idwsf2_disco_query_get_type |
|
167 |
#WSF#lasso_idwsf2_disco_query_response_get_type |
|
168 |
#WSF#lasso_idwsf2_disco_requested_service_get_type |
|
169 |
#WSF#lasso_idwsf2_disco_security_context_get_type |
|
170 |
#WSF#lasso_idwsf2_disco_service_context_get_type |
|
171 |
#WSF#lasso_idwsf2_disco_service_type_get_type |
|
172 |
#WSF#lasso_idwsf2_disco_svc_md_association_add_get_type |
|
173 |
#WSF#lasso_idwsf2_disco_svc_md_association_add_response_get_type |
|
174 |
#WSF#lasso_idwsf2_disco_svc_md_association_delete_get_type |
|
175 |
#WSF#lasso_idwsf2_disco_svc_md_association_delete_response_get_type |
|
176 |
#WSF#lasso_idwsf2_disco_svc_md_association_query_get_type |
|
177 |
#WSF#lasso_idwsf2_disco_svc_md_association_query_response_get_type |
|
178 |
#WSF#lasso_idwsf2_disco_svc_md_delete_get_type |
|
179 |
#WSF#lasso_idwsf2_disco_svc_md_delete_response_get_type |
|
180 |
#WSF#lasso_idwsf2_disco_svc_md_query_get_type |
|
181 |
#WSF#lasso_idwsf2_disco_svc_md_query_response_get_type |
|
182 |
#WSF#lasso_idwsf2_disco_svc_md_register_get_type |
|
183 |
#WSF#lasso_idwsf2_disco_svc_md_register_response_get_type |
|
184 |
#WSF#lasso_idwsf2_disco_svc_md_replace_get_type |
|
185 |
#WSF#lasso_idwsf2_disco_svc_md_replace_response_get_type |
|
186 |
#WSF#lasso_idwsf2_disco_svc_metadata_get_type |
|
187 |
#WSF#lasso_idwsf2_discovery_get_type |
|
188 |
#WSF#lasso_idwsf2_dst_data_response_base_get_type |
|
189 |
#WSF#lasso_idwsf2_dst_delete_item_base_get_type |
|
190 |
#WSF#lasso_idwsf2_dst_delete_response_get_type |
|
191 |
#WSF#lasso_idwsf2_dstref_app_data_get_type |
|
192 |
#WSF#lasso_idwsf2_dstref_create_get_type |
|
193 |
#WSF#lasso_idwsf2_dstref_create_item_get_type |
|
194 |
#WSF#lasso_idwsf2_dstref_create_response_get_type |
|
195 |
#WSF#lasso_idwsf2_dstref_data_get_type |
|
196 |
#WSF#lasso_idwsf2_dstref_data_response_get_type |
|
197 |
#WSF#lasso_idwsf2_dstref_delete_get_type |
|
198 |
#WSF#lasso_idwsf2_dstref_delete_item_get_type |
|
199 |
#WSF#lasso_idwsf2_dstref_delete_response_get_type |
|
200 |
#WSF#lasso_idwsf2_dstref_item_data_get_type |
|
201 |
#WSF#lasso_idwsf2_dstref_modify_get_type |
|
202 |
#WSF#lasso_idwsf2_dstref_modify_item_get_type |
|
203 |
#WSF#lasso_idwsf2_dstref_modify_response_get_type |
|
204 |
#WSF#lasso_idwsf2_dstref_query_get_type |
|
205 |
#WSF#lasso_idwsf2_dstref_query_item_get_type |
|
206 |
#WSF#lasso_idwsf2_dstref_query_response_get_type |
|
207 |
#WSF#lasso_idwsf2_dstref_result_query_get_type |
|
208 |
#WSF#lasso_idwsf2_dstref_test_item_get_type |
|
209 |
#WSF#lasso_idwsf2_dst_request_get_type |
|
210 |
#WSF#lasso_idwsf2_dst_result_query_base_get_type |
|
211 |
#WSF#lasso_idwsf2_dst_test_item_base_get_type |
|
212 |
#WSF#lasso_idwsf2_ims_identity_mapping_request_get_type |
|
213 |
#WSF#lasso_idwsf2_ims_identity_mapping_response_get_type |
|
214 |
#WSF#lasso_idwsf2_ims_mapping_input_get_type |
|
215 |
#WSF#lasso_idwsf2_ims_mapping_output_get_type |
|
216 |
#WSF#lasso_idwsf2_is_help_get_type |
|
217 |
#WSF#lasso_idwsf2_is_inquiry_element_get_type |
|
218 |
#WSF#lasso_idwsf2_is_inquiry_get_type |
|
219 |
#WSF#lasso_idwsf2_is_interaction_request_get_type |
|
220 |
#WSF#lasso_idwsf2_is_interaction_response_get_type |
|
221 |
#WSF#lasso_idwsf2_is_interaction_statement_get_type |
|
222 |
#WSF#lasso_idwsf2_is_item_get_type |
|
223 |
#WSF#lasso_idwsf2_is_parameter_get_type |
|
224 |
#WSF#lasso_idwsf2_is_select_get_type |
|
225 |
#WSF#lasso_idwsf2_is_text_get_type |
|
226 |
#WSF#lasso_idwsf2_profile_get_type |
|
227 |
#WSF#lasso_idwsf2_ps_add_collection_request_get_type |
|
228 |
#WSF#lasso_idwsf2_ps_add_collection_response_get_type |
|
229 |
#WSF#lasso_idwsf2_ps_add_entity_request_get_type |
|
230 |
#WSF#lasso_idwsf2_ps_add_entity_response_get_type |
|
231 |
#WSF#lasso_idwsf2_ps_add_known_entity_request_get_type |
|
232 |
#WSF#lasso_idwsf2_ps_add_known_entity_response_get_type |
|
233 |
#WSF#lasso_idwsf2_ps_add_to_collection_request_get_type |
|
234 |
#WSF#lasso_idwsf2_ps_get_object_info_request_get_type |
|
235 |
#WSF#lasso_idwsf2_ps_get_object_info_response_get_type |
|
236 |
#WSF#lasso_idwsf2_ps_item_data_get_type |
|
237 |
#WSF#lasso_idwsf2_ps_list_members_request_get_type |
|
238 |
#WSF#lasso_idwsf2_ps_list_members_response_get_type |
|
239 |
#WSF#lasso_idwsf2_ps_notification_get_type |
|
240 |
#WSF#lasso_idwsf2_ps_notify_get_type |
|
241 |
#WSF#lasso_idwsf2_ps_object_get_type |
|
242 |
#WSF#lasso_idwsf2_ps_query_objects_request_get_type |
|
243 |
#WSF#lasso_idwsf2_ps_query_objects_response_get_type |
|
244 |
#WSF#lasso_idwsf2_ps_remove_collection_request_get_type |
|
245 |
#WSF#lasso_idwsf2_ps_remove_entity_request_get_type |
|
246 |
#WSF#lasso_idwsf2_ps_remove_from_collection_request_get_type |
|
247 |
#WSF#lasso_idwsf2_ps_request_abstract_get_type |
|
248 |
#WSF#lasso_idwsf2_ps_resolve_identifier_request_get_type |
|
249 |
#WSF#lasso_idwsf2_ps_resolve_identifier_response_get_type |
|
250 |
#WSF#lasso_idwsf2_ps_resolve_input_get_type |
|
251 |
#WSF#lasso_idwsf2_ps_response_abstract_get_type |
|
252 |
#WSF#lasso_idwsf2_ps_set_object_info_request_get_type |
|
253 |
#WSF#lasso_idwsf2_ps_test_membership_request_get_type |
|
254 |
#WSF#lasso_idwsf2_ps_test_membership_response_get_type |
|
255 |
#WSF#lasso_idwsf2_sb2_consent_get_type |
|
256 |
#WSF#lasso_idwsf2_sb2_credentials_context_get_type |
|
257 |
#WSF#lasso_idwsf2_sb2_endpoint_update_get_type |
|
258 |
#WSF#lasso_idwsf2_sb2_redirect_request_get_type |
|
259 |
#WSF#lasso_idwsf2_sb2_sender_get_type |
|
260 |
#WSF#lasso_idwsf2_sb2_target_identity_get_type |
|
261 |
#WSF#lasso_idwsf2_sb2_timeout_get_type |
|
262 |
#WSF#lasso_idwsf2_sb2_usage_directive_get_type |
|
263 |
#WSF#lasso_idwsf2_sb2_user_interaction_header_get_type |
|
264 |
#WSF#lasso_idwsf2_sbf_framework_get_type |
|
265 |
#WSF#lasso_idwsf2_sec_token_get_type |
|
266 |
#WSF#lasso_idwsf2_sec_token_policy_get_type |
|
267 |
#WSF#lasso_idwsf2_sec_transited_provider_path_get_type |
|
268 |
#WSF#lasso_idwsf2_subs_notification_get_type |
|
269 |
#WSF#lasso_idwsf2_subs_notify_response_get_type |
|
270 |
#WSF#lasso_idwsf2_subsref_app_data_get_type |
|
271 |
#WSF#lasso_idwsf2_subsref_create_get_type |
|
272 |
#WSF#lasso_idwsf2_subsref_create_item_get_type |
|
273 |
#WSF#lasso_idwsf2_subsref_create_response_get_type |
|
274 |
#WSF#lasso_idwsf2_subsref_data_get_type |
|
275 |
#WSF#lasso_idwsf2_subsref_data_response_get_type |
|
276 |
#WSF#lasso_idwsf2_subsref_delete_get_type |
|
277 |
#WSF#lasso_idwsf2_subsref_delete_item_get_type |
|
278 |
#WSF#lasso_idwsf2_subsref_delete_response_get_type |
|
279 |
#WSF#lasso_idwsf2_subsref_item_data_get_type |
|
280 |
#WSF#lasso_idwsf2_subs_ref_item_get_type |
|
281 |
#WSF#lasso_idwsf2_subsref_modify_get_type |
|
282 |
#WSF#lasso_idwsf2_subsref_modify_item_get_type |
|
283 |
#WSF#lasso_idwsf2_subsref_modify_response_get_type |
|
284 |
#WSF#lasso_idwsf2_subsref_notification_get_type |
|
285 |
#WSF#lasso_idwsf2_subsref_notify_get_type |
|
286 |
#WSF#lasso_idwsf2_subsref_notify_response_get_type |
|
287 |
#WSF#lasso_idwsf2_subsref_query_get_type |
|
288 |
#WSF#lasso_idwsf2_subsref_query_item_get_type |
|
289 |
#WSF#lasso_idwsf2_subsref_query_response_get_type |
|
290 |
#WSF#lasso_idwsf2_subsref_result_query_get_type |
|
291 |
#WSF#lasso_idwsf2_subsref_subscription_get_type |
|
292 |
#WSF#lasso_idwsf2_subsref_test_item_get_type |
|
293 |
#WSF#lasso_idwsf2_subs_subscription_get_type |
|
294 |
#WSF#lasso_idwsf2_util_empty_get_type |
|
295 |
#WSF#lasso_idwsf2_util_extension_get_type |
|
296 |
#WSF#lasso_idwsf2_util_response_get_type |
|
297 |
#WSF#lasso_idwsf2_util_status_get_type |
|
298 |
#WSF#lasso_interaction_profile_service_get_type |
|
299 |
#WSF#lasso_is_help_get_type |
|
300 |
#WSF#lasso_is_inquiry_element_get_type |
|
301 |
#WSF#lasso_is_inquiry_get_type |
|
302 |
#WSF#lasso_is_interaction_request_get_type |
|
303 |
#WSF#lasso_is_interaction_response_get_type |
|
304 |
#WSF#lasso_is_interaction_statement_get_type |
|
305 |
#WSF#lasso_is_item_get_type |
|
306 |
#WSF#lasso_is_parameter_get_type |
|
307 |
#WSF#lasso_is_redirect_request_get_type |
|
308 |
#WSF#lasso_is_select_get_type |
|
309 |
#WSF#lasso_is_text_get_type |
|
310 |
#WSF#lasso_is_user_interaction_get_type |
|
311 |
#WSF#lasso_personal_profile_service_get_type |
|
312 |
#WSF#lasso_sa_credentials_get_type |
|
313 |
#WSF#lasso_sa_parameter_get_type |
|
314 |
#WSF#lasso_sa_password_transforms_get_type |
|
315 |
#WSF#lasso_sa_sasl_request_get_type |
|
316 |
#WSF#lasso_sa_sasl_response_get_type |
|
317 |
#WSF#lasso_sa_transform_get_type |
|
318 |
#WSF#lasso_sec_resource_access_statement_get_type |
|
319 |
#WSF#lasso_soap_binding_consent_get_type |
|
320 |
#WSF#lasso_soap_binding_correlation_get_type |
|
321 |
#WSF#lasso_soap_binding_ext_credential_get_type |
|
322 |
#WSF#lasso_soap_binding_ext_credentials_context_get_type |
|
323 |
#WSF#lasso_soap_binding_ext_service_instance_update_get_type |
|
324 |
#WSF#lasso_soap_binding_ext_timeout_get_type |
|
325 |
#WSF#lasso_soap_binding_processing_context_get_type |
|
326 |
#WSF#lasso_soap_binding_provider_get_type |
|
327 |
#WSF#lasso_soap_binding_usage_directive_get_type |
|
328 |
#WSF#lasso_utility_status_get_type |
|
329 |
#WSF#lasso_wsa_attributed_any_get_type |
|
330 |
#WSF#lasso_wsa_attributed_qname_get_type |
|
331 |
#WSF#lasso_wsa_attributed_unsigned_long_get_type |
|
332 |
#WSF#lasso_wsa_attributed_uri_get_type |
|
333 |
#WSF#lasso_wsa_endpoint_reference_get_type |
|
334 |
#WSF#lasso_wsa_metadata_get_type |
|
335 |
#WSF#lasso_wsa_problem_action_get_type |
|
336 |
#WSF#lasso_wsa_reference_parameters_get_type |
|
337 |
#WSF#lasso_wsa_relates_to_get_type |
|
338 |
#WSF#lasso_wsf_profile_get_type |
|
339 |
#WSF#lasso_wsse_embedded_get_type |
|
340 |
#WSF#lasso_wsse_reference_get_type |
|
341 |
#WSF#lasso_wsse_security_get_type |
|
342 |
#WSF#lasso_wsse_security_header_get_type |
|
343 |
#WSF#lasso_wsse_security_token_reference_get_type |
|
344 |
#WSF#lasso_wsse_transformation_parameters_get_type |
|
345 |
#WSF#lasso_wsse_username_token_get_type |
|
346 |
#WSF#lasso_wsu_timestamp_get_type |
lasso.doap | ||
---|---|---|
13 | 13 |
Lasso (Liberty Alliance Single Sign On) is a free (GNU GPL) implementation |
14 | 14 |
of the Liberty Alliance specifications. Those define protocols for |
15 | 15 |
federated identities, single sign-on, etc. Lasso supports ID-FF 1.2, |
16 |
SAML 2.0 and parts of ID-WSF; it provides both a C library and bindings
|
|
16 |
SAML 2.0; it provides both a C library and bindings |
|
17 | 17 |
for several languages (Python, Java, Perl, PHP 4 and PHP 5). |
18 | 18 |
</description> |
19 | 19 |
<shortdesc>Free Software implementation of Liberty Alliance specifications</shortdesc> |
lasso/Makefile.am | ||
---|---|---|
1 | 1 |
SUBDIRS = xml id-ff saml-2.0 |
2 |
if WSF_ENABLED |
|
3 |
SUBDIRS += id-wsf-2.0 id-wsf |
|
4 |
endif |
|
5 | 2 | |
6 | 3 |
liblassoincludedir = $(includedir)/lasso |
7 | 4 | |
... | ... | |
25 | 22 | |
26 | 23 |
liblasso_la_SOURCES = lasso.c errors.c registry.c utils.c logging.c key.c |
27 | 24 | |
28 |
if WSF_ENABLED |
|
29 |
SYMBOLS_ARGS = -wsf |
|
30 |
endif |
|
31 | ||
32 | 25 |
types.c: $(srcdir)/*.h $(srcdir)/*/*.h $(srcdir)/*/*/*.h |
33 | 26 |
$(PYTHON) $(srcdir)/extract_types.py $(srcdir) $(SYMBOLS_ARGS) |
34 | 27 | |
... | ... | |
45 | 38 |
EXTRA_DIST = $(nodist_liblassoinclude_HEADERS) extract_types.py extract_symbols.py build_strerror.py \ |
46 | 39 |
errors.c.in extract_sections.py errors.c |
47 | 40 | |
48 |
if WSF_ENABLED |
|
49 |
WSF_LIB_FILE = $(top_builddir)/lasso/id-wsf/liblasso-id-wsf.la |
|
50 | ||
51 |
WSF2_LIB_FILES = $(top_builddir)/lasso/id-wsf-2.0/liblasso-id-wsf2.la \ |
|
52 |
$(top_builddir)/lasso/xml/id-wsf-2.0/liblasso-xml-id-wsf-2.la \ |
|
53 |
$(top_builddir)/lasso/xml/ws/liblasso-xml-ws.la |
|
54 |
endif |
|
55 | ||
56 | 41 |
if MINGW |
57 | 42 |
liblasso_la_LIBADD = \ |
58 | 43 |
$(top_builddir)/lasso/xml/liblasso-xml.la \ |
... | ... | |
62 | 47 |
$(top_builddir)/lasso/xml/dsig/liblasso-xml-dsig.la \ |
63 | 48 |
$(top_builddir)/lasso/id-ff/liblasso-id-ff.la \ |
64 | 49 |
$(top_builddir)/lasso/saml-2.0/liblasso-saml-20.la \ |
65 |
$(WSF_LIB_FILE) \ |
|
66 |
$(WSF2_LIB_FILES) \ |
|
67 | 50 |
$(LASSO_LIBS) \ |
68 | 51 |
lasso.rc.lo |
69 | 52 |
# Just make damn sure the ABI stays the same between |
... | ... | |
80 | 63 |
$(top_builddir)/lasso/xml/dsig/liblasso-xml-dsig.la \ |
81 | 64 |
$(top_builddir)/lasso/id-ff/liblasso-id-ff.la \ |
82 | 65 |
$(top_builddir)/lasso/saml-2.0/liblasso-saml-20.la \ |
83 |
$(WSF_LIB_FILE) \ |
|
84 |
$(WSF2_LIB_FILES) \ |
|
85 | 66 |
$(LASSO_LIBS) |
86 | 67 |
# Just make damn sure the ABI stays the same between |
87 | 68 |
# upgrades. |
lasso/errors.h | ||
---|---|---|
783 | 783 |
#define LASSO_NAME_IDENTIFIER_MAPPING_ERROR_FORBIDDEN_CALL_ON_THIS_SIDE -901 |
784 | 784 |
#define LASSO_NAME_IDENTIFIER_MAPPING_ERROR_MISSING_TARGET_IDENTIFIER -902 |
785 | 785 | |
786 |
/* Data Service */ |
|
787 |
#define LASSO_DATA_SERVICE_ERROR_UNREGISTERED_DST -1000 |
|
788 |
#define LASSO_DATA_SERVICE_ERROR_CANNOT_ADD_ITEM -1001 |
|
789 | ||
790 |
/* WSF Profile */ |
|
791 |
/** |
|
792 |
* LASSO_WSF_PROFILE_ERROR_MISSING_CORRELATION: |
|
793 |
* |
|
794 |
* Correlation SOAP Header is missing |
|
795 |
*/ |
|
796 |
#define LASSO_WSF_PROFILE_ERROR_MISSING_CORRELATION -1100 |
|
797 |
/** |
|
798 |
* LASSO_WSF_PROFILE_ERROR_MISSING_SECURITY: |
|
799 |
* |
|
800 |
* Security SOAP Header is missing |
|
801 |
*/ |
|
802 |
#define LASSO_WSF_PROFILE_ERROR_MISSING_SECURITY -1101 |
|
803 |
/** |
|
804 |
* LASSO_WSF_PROFILE_ERROR_MISSING_ASSERTION_ID: |
|
805 |
* |
|
806 |
* AssertionID attribute is missing |
|
807 |
*/ |
|
808 |
#define LASSO_WSF_PROFILE_ERROR_MISSING_ASSERTION_ID -1102 |
|
809 |
/** |
|
810 |
* LASSO_WSF_PROFILE_ERROR_MISSING_ENDPOINT: |
|
811 |
* |
|
812 |
* Cannot find an WSP endpoint for the ID-WSF service |
|
813 |
*/ |
|
814 |
#define LASSO_WSF_PROFILE_ERROR_MISSING_ENDPOINT -1103 |
|
815 |
/** |
|
816 |
* LASSO_WSF_PROFILE_ERROR_SOAP_FAULT: |
|
817 |
* |
|
818 |
* SOAP ID-WSF binding returned a SOAP fault |
|
819 |
*/ |
|
820 |
#define LASSO_WSF_PROFILE_ERROR_SOAP_FAULT 1104 |
|
821 |
/** |
|
822 |
* LASSO_WSF_PROFILE_ERROR_UNSUPPORTED_SECURITY_MECHANISM: |
|
823 |
* |
|
824 |
* The specified security mechanism is not supported by lasso ID-WSF library |
|
825 |
*/ |
|
826 |
#define LASSO_WSF_PROFILE_ERROR_UNSUPPORTED_SECURITY_MECHANISM 1105 |
|
827 |
/** |
|
828 |
* LASSO_WSF_PROFILE_ERROR_MISSING_DESCRIPTION: |
|
829 |
* |
|
830 |
* No ID-WSF web Service description could be found for the current security mechanism |
|
831 |
*/ |
|
832 |
#define LASSO_WSF_PROFILE_ERROR_MISSING_DESCRIPTION -1106 |
|
833 |
/** |
|
834 |
* LASSO_WSF_PROFILE_ERROR_MISSING_RESOURCE_ID: |
|
835 |
* |
|
836 |
* The necessary ResourceID or EncryptedResourceID for calling an ID-WSF service is missing. |
|
837 |
*/ |
|
838 |
#define LASSO_WSF_PROFILE_ERROR_MISSING_RESOURCE_ID -1107 |
|
839 |
/** |
|
840 |
* LASSO_WSF_PROFILE_ERROR_MISSING_CREDENTIAL_REF: |
|
841 |
* |
|
842 |
* WS-Security SAML Token secmech needs a CredentialRef |
|
843 |
*/ |
|
844 |
#define LASSO_WSF_PROFILE_ERROR_MISSING_CREDENTIAL_REF -1108 |
|
845 |
/** |
|
846 |
* LASSO_WSF_PROFILE_ERROR_INVALID_OR_MISSING_REFERENCE_TO_MESSAGE_ID: |
|
847 |
* |
|
848 |
* refToMessageID attribute of the Corrrelation header does not match the SOAP request |
|
849 |
*/ |
|
850 |
#define LASSO_WSF_PROFILE_ERROR_INVALID_OR_MISSING_REFERENCE_TO_MESSAGE_ID -1109 |
|
851 |
/** |
|
852 |
* LASSO_WSF_PROFILE_ERROR_SECURITY_MECHANISM_CHECK_FAILED: |
|
853 |
* |
|
854 |
* Check for a security mechanism upon a received request failed. |
|
855 |
*/ |
|
856 |
#define LASSO_WSF_PROFILE_ERROR_SECURITY_MECHANISM_CHECK_FAILED 1110 |
|
857 | ||
858 |
/** |
|
859 |
* LASSO_WSF_PROFILE_ERROR_UNKNOWN_STATUS_CODE: |
|
860 |
* |
|
861 |
* A response contained an unknown status code. |
|
862 |
*/ |
|
863 |
#define LASSO_WSF_PROFILE_ERROR_UNKNOWN_STATUS_CODE 1112 |
|
864 |
/** |
|
865 |
* LASSO_WSF_PROFILE_ERROR_SERVER_INTERACTION_REQUIRED: |
|
866 |
* |
|
867 |
* A interaction is required but the sender did not allow use to make interact redirect requests. |
|
868 |
*/ |
|
869 |
#define LASSO_WSF_PROFILE_ERROR_SERVER_INTERACTION_REQUIRED 1113 |
|
870 |
/** |
|
871 |
* LASSO_WSF_PROFILE_ERROR_SERVER_INTERACTION_REQUIRED_FOR_DATA: |
|
872 |
* |
|
873 |
* A interaction is required to get fresh datas but the sender did not allow use to make interact |
|
874 |
* redirect requests. |
|
875 |
*/ |
|
876 |
#define LASSO_WSF_PROFILE_ERROR_SERVER_INTERACTION_REQUIRED_FOR_DATA 1114 |
|
877 |
/** |
|
878 |
* LASSO_WSF_PROFILE_ERROR_REDIRECT_REQUEST: |
|
879 |
* |
|
880 |
* The last parsed response contained a SOAP fault with a RedirectRequest element. |
|
881 |
*/ |
|
882 |
#define LASSO_WSF_PROFILE_ERROR_REDIRECT_REQUEST 1115 |
|
883 |
/** |
|
884 |
* LASSO_WSF_PROFILE_ERROR_REDIRECT_REQUEST_UNSUPPORTED_BY_REQUESTER: |
|
885 |
* |
|
886 |
* The requester does not support SOAP Fault containing RedirectRequest elements. So it is not |
|
887 |
* possible to use lasso_idwsf2_profile_redirect_user_for_interaction(). |
|
888 |
*/ |
|
889 |
#define LASSO_WSF_PROFILE_ERROR_REDIRECT_REQUEST_UNSUPPORTED_BY_REQUESTER 1116 |
|
890 |
/** |
|
891 |
* LASSO_WSF_PROFILE_ERROR_MISSING_SENDER_ID: |
|
892 |
* |
|
893 |
* The received ID-WSF request miss a Sender id. |
|
894 |
*/ |
|
895 |
#define LASSO_WSF_PROFILE_ERROR_MISSING_SENDER_ID 1117 |
|
896 | ||
897 | ||
898 |
/* ID-WSF 2 Discovery */ |
|
899 |
/** |
|
900 |
* LASSO_DISCOVERY_ERROR_SVC_METADATA_REGISTER_FAILED: |
|
901 |
* |
|
902 |
* Service metadata registration failed |
|
903 |
*/ |
|
904 |
#define LASSO_DISCOVERY_ERROR_SVC_METADATA_REGISTER_FAILED -1200 |
|
905 |
/** |
|
906 |
* LASSO_DISCOVERY_ERROR_SVC_METADATA_ASSOCIATION_ADD_FAILED: |
|
907 |
* |
|
908 |
* Service metadata association failed |
|
909 |
*/ |
|
910 |
#define LASSO_DISCOVERY_ERROR_SVC_METADATA_ASSOCIATION_ADD_FAILED -1201 |
|
911 |
/** |
|
912 |
* LASSO_DISCOVERY_ERROR_MISSING_REQUESTED_SERVICE: |
|
913 |
* |
|
914 |
* Missing requested service |
|
915 |
*/ |
|
916 |
#define LASSO_DISCOVERY_ERROR_MISSING_REQUESTED_SERVICE -1202 |
|
917 |
/** |
|
918 |
* LASSO_DISCOVERY_ERROR_FAILED_TO_BUILD_ENDPOINT_REFERENCE: |
|
919 |
* |
|
920 |
* Failed to build Endpoint Reference |
|
921 |
*/ |
|
922 |
#define LASSO_DISCOVERY_ERROR_FAILED_TO_BUILD_ENDPOINT_REFERENCE -1203 |
|
923 | ||
924 |
/* ID-WSF 2 Data Service */ |
|
925 |
/** |
|
926 |
* LASSO_DST_ERROR_MISSING_SERVICE_DATA: |
|
927 |
* |
|
928 |
* Missing service data |
|
929 |
*/ |
|
930 |
#define LASSO_DST_ERROR_MISSING_SERVICE_DATA -1300 |
|
931 |
/** |
|
932 |
* LASSO_DST_ERROR_QUERY_FAILED: |
|
933 |
* |
|
934 |
* Query failed |
|
935 |
*/ |
|
936 |
#define LASSO_DST_ERROR_QUERY_FAILED -1301 |
|
937 |
/** |
|
938 |
* LASSO_DST_ERROR_QUERY_PARTIALLY_FAILED: |
|
939 |
* |
|
940 |
* Query partially failed : some items were correctly processed |
|
941 |
*/ |
|
942 |
#define LASSO_DST_ERROR_QUERY_PARTIALLY_FAILED -1302 |
|
943 |
/** |
|
944 |
* LASSO_DST_ERROR_MODIFY_FAILED: |
|
945 |
* |
|
946 |
* Modify failed |
|
947 |
*/ |
|
948 |
#define LASSO_DST_ERROR_MODIFY_FAILED -1303 |
|
949 |
/** |
|
950 |
* LASSO_DST_ERROR_MODIFY_PARTIALLY_FAILED: |
|
951 |
* |
|
952 |
* Modify partially failed : some items were correctly processed |
|
953 |
*/ |
|
954 |
#define LASSO_DST_ERROR_MODIFY_PARTIALLY_FAILED -1304 |
|
955 |
/** |
|
956 |
* LASSO_DST_ERROR_NEW_DATA_MISSING: |
|
957 |
* |
|
958 |
* Missing new data |
|
959 |
*/ |
|
960 |
#define LASSO_DST_ERROR_NEW_DATA_MISSING -1305 |
|
961 |
/** |
|
962 |
* LASSO_DST_ERROR_QUERY_NOT_FOUND: |
|
963 |
* |
|
964 |
* Looked query is not found |
|
965 |
*/ |
|
966 |
#define LASSO_DST_ERROR_QUERY_NOT_FOUND -1306 |
|
967 |
/** |
|
968 |
* LASSO_DST_ERROR_NO_DATA: |
|
969 |
* |
|
970 |
* No data or no data for the designated query item in the query response |
|
971 |
*/ |
|
972 |
#define LASSO_DST_ERROR_NO_DATA -1307 |
|
973 |
/** |
|
974 |
* LASSO_DST_ERROR_MALFORMED_QUERY: |
|
975 |
* |
|
976 |
* QueryObject is malformed |
|
977 |
*/ |
|
978 |
#define LASSO_DST_ERROR_MALFORMED_QUERY -1308 |
|
979 |
/** |
|
980 |
* LASSO_DST_ERROR_EMPTY_REQUEST |
|
981 |
* |
|
982 |
* Request is empty. |
|
983 |
*/ |
|
984 |
#define LASSO_DST_ERROR_EMPTY_REQUEST -1309 |
|
985 | ||
986 | 786 |
/* Lasso registry */ |
987 | 787 |
/** |
988 | 788 |
* LASSO_REGISTRY_ERROR_KEY_EXISTS: |
... | ... | |
999 | 799 |
*/ |
1000 | 800 |
#define LASSO_PROVIDER_ERROR_MISSING_PUBLIC_KEY -1500 |
1001 | 801 | |
1002 |
/* WS-Security */ |
|
1003 |
/** |
|
1004 |
* LASSO_WSSEC_ERROR_MISSING_SECURITY_TOKEN: |
|
1005 |
* |
|
1006 |
* The request miss a WS-Security token. |
|
1007 |
*/ |
|
1008 |
#define LASSO_WSSEC_ERROR_MISSING_SECURITY_TOKEN 1600 |
|
1009 | ||
1010 |
/** |
|
1011 |
* LASSO_WSSEC_ERROR_BAD_PASSWORD: |
|
1012 |
* |
|
1013 |
* The known password does not match the UsernameToken |
|
1014 |
*/ |
|
1015 |
#define LASSO_WSSEC_ERROR_BAD_PASSWORD 1601 |
|
1016 | ||
1017 |
/* ID-WSF 2.0 Discovery Service */ |
|
1018 |
/** |
|
1019 |
* LASSO_IDWSF2_DISCOVERY_ERROR_FAILED: |
|
1020 |
* |
|
1021 |
* Last discovery request failed. |
|
1022 |
*/ |
|
1023 |
#define LASSO_IDWSF2_DISCOVERY_ERROR_FAILED 1700 |
|
1024 |
/** |
|
1025 |
* LASSO_IDWSF2_DISCOVERY_ERROR_FORBIDDEN: |
|
1026 |
* |
|
1027 |
* Last discovery request is forbidden by policy. |
|
1028 |
*/ |
|
1029 |
#define LASSO_IDWSF2_DISCOVERY_ERROR_FORBIDDEN 1701 |
|
1030 |
/** |
|
1031 |
* LASSO_IDWSF2_DISCOVERY_ERROR_DUPLICATE: |
|
1032 |
* |
|
1033 |
* Last discovery request was denied because it would result in duplicate data in the service |
|
1034 |
*/ |
|
1035 |
#define LASSO_IDWSF2_DISCOVERY_ERROR_DUPLICATE 1702 |
|
1036 |
/** |
|
1037 |
* LASSO_IDWSF2_DISCOVERY_ERROR_LOGICAL_DUPLICATE: |
|
1038 |
* |
|
1039 |
* Last discovery request was denied because it would result in logically duplicate data in the service |
|
1040 |
*/ |
|
1041 |
#define LASSO_IDWSF2_DISCOVERY_ERROR_LOGICAL_DUPLICATE 1703 |
|
1042 |
/** |
|
1043 |
* LASSO_IDWSF2_DISCOVERY_ERROR_NO_RESULTS: |
|
1044 |
* |
|
1045 |
* The discovery query had no matching results. |
|
1046 |
*/ |
|
1047 |
#define LASSO_IDWSF2_DISCOVERY_ERROR_NO_RESULTS 1704 |
|
1048 |
/** |
|
1049 |
* LASSO_IDWSF2_DISCOVERY_ERROR_NOT_FOUND: |
|
1050 |
* |
|
1051 |
* The specified item(s) were not found. |
|
1052 |
*/ |
|
1053 |
#define LASSO_IDWSF2_DISCOVERY_ERROR_NOT_FOUND 1705 |
|
1054 | ||
1055 |
/* ID-WSF 2.0 Data Service Template */ |
|
1056 | ||
1057 |
/** |
|
1058 |
* LASSO_IDWSF2_DST_ERROR_DUPLICATE_ITEM: |
|
1059 |
* |
|
1060 |
* A call to add a new item would result in duplicate items. |
|
1061 |
*/ |
|
1062 |
#define LASSO_IDWSF2_DST_ERROR_DUPLICATE_ITEM -1801 |
|
1063 | ||
1064 |
/** |
|
1065 |
* LASSO_IDWSF2_DST_ERROR_PARTIAL_FAILURE: |
|
1066 |
* |
|
1067 |
* Server responded with a partial failure status code. |
|
1068 |
*/ |
|
1069 |
#define LASSO_IDWSF2_DST_ERROR_PARTIAL_FAILURE 1802 |
|
1070 | ||
1071 |
/** |
|
1072 |
* LASSO_IDWSF2_DST_ERROR_UNKNOWN_STATUS_CODE: |
|
1073 |
* |
|
1074 |
* Server response with an unknown status code. |
|
1075 |
*/ |
|
1076 |
#define LASSO_IDWSF2_DST_ERROR_UNKNOWN_STATUS_CODE 1803 |
|
1077 |
/** |
|
1078 |
* LASSO_IDWSF2_DST_ERROR_ITEM_NOT_FOUND: |
|
1079 |
* |
|
1080 |
* The item_id was not found in the current query request. |
|
1081 |
*/ |
|
1082 |
#define LASSO_IDWSF2_DST_ERROR_ITEM_NOT_FOUND 1804 |
|
1083 | ||
1084 | 802 |
/** |
1085 | 803 |
* LASSO_ASSERTION_QUERY_ERROR_ATTRIBUTE_REQUEST_ALREADY_EXIST: |
1086 | 804 |
* |
lasso/extract_sections.py | ||
---|---|---|
7 | 7 |
import os.path |
8 | 8 |
from six import print_ |
9 | 9 | |
10 |
enable_wsf = False |
|
11 | ||
12 |
if '-wsf' in sys.argv: |
|
13 |
enable_wsf = True |
|
14 | ||
15 |
if len(sys.argv) == 2+enable_wsf: |
|
10 |
if len(sys.argv) == 2: |
|
16 | 11 |
srcdir = sys.argv[1] |
17 | 12 |
else: |
18 | 13 |
srcdir = '.' |
lasso/extract_symbols.py | ||
---|---|---|
6 | 6 |
import sys |
7 | 7 |
import six |
8 | 8 | |
9 |
enable_wsf = False |
|
10 | ||
11 |
if '-wsf' in sys.argv: |
|
12 |
enable_wsf = True |
|
13 | ||
14 |
if len(sys.argv) == 2+enable_wsf: |
|
9 |
if len(sys.argv) == 2: |
|
15 | 10 |
srcdir = sys.argv[1] |
16 | 11 |
else: |
17 | 12 |
srcdir = '.' |
... | ... | |
21 | 16 |
symbols = [] |
22 | 17 |
for header_file in glob.glob('%s/*/*.h' % srcdir) + glob.glob('%s/*.h' % srcdir) + \ |
23 | 18 |
glob.glob('%s/*/*/*.h' % srcdir): |
24 |
if ('/id-wsf/' in header_file or '/id-wsf-2.0' in header_file) and not enable_wsf: |
|
25 |
continue |
|
19 |
assert not ('/id-wsf/' in header_file or '/id-wsf-2.0' in header_file) |
|
26 | 20 |
symbols.extend(regex.findall(io.open(header_file, encoding='utf-8').read().replace('\\\n', ''))) |
27 | 21 | |
28 |
wsf = ['lasso_disco_', 'lasso_dst_', 'lasso_is_', 'lasso_profile_service_', |
|
29 |
'lasso_discovery', 'lasso_wsf', 'lasso_interaction_', 'lasso_utility_', |
|
30 |
'lasso_sa_', 'lasso_soap_binding', 'lasso_authentication', 'lasso_wsse_', |
|
31 |
'lasso_sec_', 'lasso_idwsf2', 'lasso_wsf2', 'lasso_wsa_', |
|
32 |
'lasso_wsu_'] |
|
33 |
if enable_wsf: |
|
34 |
wsf = [] |
|
35 | ||
36 | 22 |
for s in symbols: |
37 |
for t in wsf: |
|
38 |
if s.startswith(t): |
|
39 |
break |
|
40 |
else: |
|
41 |
six.print_(s) |
|
23 |
six.print_(s) |
|
42 | 24 |
lasso/extract_types.py | ||
---|---|---|
6 | 6 |
import sys |
7 | 7 |
import six |
8 | 8 | |
9 |
enable_wsf = 0 |
|
10 | ||
11 |
if '-wsf' in sys.argv: |
|
12 |
enable_wsf = 1 |
|
13 | ||
14 |
if len(sys.argv) == 2+enable_wsf: |
|
9 |
if len(sys.argv) == 2: |
|
15 | 10 |
srcdir = sys.argv[1] |
16 | 11 |
else: |
17 | 12 |
srcdir = '.' |
18 | 13 | |
19 |
wsf = ['lasso_disco_', 'lasso_dst_', 'lasso_is_', 'lasso_profile_service_', |
|
20 |
'lasso_discovery', 'lasso_wsf', 'lasso_interaction_', 'lasso_utility_', |
|
21 |
'lasso_sa_', 'lasso_soap_binding', 'lasso_authentication', 'lasso_wsse_', |
|
22 |
'lasso_sec_', 'lasso_idwsf2', 'lasso_wsf2', 'lasso_wsa_', |
|
23 |
'lasso_wsu_'] |
|
24 |
if enable_wsf: |
|
25 |
wsf = [] |
|
26 | 14 | |
27 | 15 |
fd = io.StringIO() |
28 | 16 | |
... | ... | |
33 | 21 | |
34 | 22 |
header_files = [] |
35 | 23 |
for header_file in sorted(glob.glob('%s/*/*.h' % srcdir) + glob.glob('%s/*/*/*.h' % srcdir)): |
36 |
if ('/id-wsf/' in header_file or '/id-wsf-2.0' in header_file) and not enable_wsf: |
|
37 |
continue |
|
24 |
assert not ('/id-wsf/' in header_file or '/id-wsf-2.0' in header_file) |
|
38 | 25 |
header_files.append(header_file) |
39 | 26 |
try: |
40 | 27 |
type = re.findall('lasso_.*get_type', io.open(header_file, encoding='utf-8').read())[0] |
41 | 28 |
except IndexError: |
42 | 29 |
continue |
43 |
for t in wsf: |
|
44 |
if type.startswith(t): |
|
45 |
break |
|
46 |
else: |
|
47 |
six.print_("extern GType %s();" % type, file=fd) |
|
30 |
six.print_("extern GType %s();" % type, file=fd) |
|
48 | 31 | |
49 | 32 |
six.print_(u"", file=fd) |
50 | 33 |
six.print_(u"type_function functions[] = {", file=fd) |
... | ... | |
53 | 36 |
type = re.findall('lasso_.*get_type', io.open(header_file, encoding='utf-8').read())[0] |
54 | 37 |
except IndexError: |
55 | 38 |
continue |
56 |
for t in wsf: |
|
57 |
if type.startswith(t): |
|
58 |
break |
|
59 |
else: |
|
60 |
six.print_(u"\t%s," % type, file=fd) |
|
39 |
six.print_(u"\t%s," % type, file=fd) |
|
61 | 40 |
six.print_(u"\tNULL", file=fd) |
62 | 41 |
six.print_(u"};", file=fd) |
63 | 42 |
lasso/id-ff/identity.c | ||
---|---|---|
35 | 35 |
#include "../utils.h" |
36 | 36 |
#include "identity.h" |
37 | 37 | |
38 |
#ifdef LASSO_WSF_ENABLED |
|
39 |
#include "../id-wsf/id_ff_extensions.h" |
|
40 |
#endif |
|
41 | ||
42 | 38 |
#include "identityprivate.h" |
43 | 39 |
#include "../lasso_config.h" |
44 | 40 | |
... | ... | |
144 | 140 |
xmlAddChild(xmlnode, lasso_node_get_xmlNode(LASSO_NODE(value), TRUE)); |
145 | 141 |
} |
146 | 142 | |
147 |
#ifdef LASSO_WSF_ENABLED |
|
148 |
static void |
|
149 |
add_text_childnode_from_list(gchar *value, xmlNode *xmlnode) |
|
150 |
{ |
|
151 |
xmlNewTextChild(xmlnode, NULL, (xmlChar*)"SvcMDID", (xmlChar*)value); |
|
152 |
} |
|
153 |
#endif |
|
154 | ||
155 | 143 |
static xmlNode* |
156 | 144 |
get_xmlNode(LassoNode *node, G_GNUC_UNUSED gboolean lasso_dump) |
157 | 145 |
{ |
158 | 146 |
xmlNode *xmlnode; |
159 | 147 |
LassoIdentity *identity = LASSO_IDENTITY(node); |
160 |
#ifdef LASSO_WSF_ENABLED |
|
161 |
xmlNode *t; |
|
162 |
#endif |
|
163 | 148 | |
164 | 149 |
xmlnode = xmlNewNode(NULL, (xmlChar*)"Identity"); |
165 | 150 |
xmlSetNs(xmlnode, xmlNewNs(xmlnode, (xmlChar*)LASSO_LASSO_HREF, NULL)); |
... | ... | |
169 | 154 |
if (g_hash_table_size(identity->federations)) |
170 | 155 |
g_hash_table_foreach(identity->federations, |
171 | 156 |
(GHFunc)add_childnode_from_hashtable, xmlnode); |
172 |
#ifdef LASSO_WSF_ENABLED |
|
173 |
/* Resource Offerings */ |
|
174 |
g_hash_table_foreach(identity->private_data->resource_offerings_map, |
|
175 |
(GHFunc)add_childnode_from_hashtable, xmlnode); |
|
176 | ||
177 |
/* Service Metadatas IDs (svcMDID) */ |
|
178 |
if (identity->private_data->svcMDID != NULL) { |
|
179 |
t = xmlNewTextChild(xmlnode, NULL, (xmlChar*)"SvcMDIDs", NULL); |
|
180 |
g_list_foreach(identity->private_data->svcMDID, |
|
181 |
(GFunc)add_text_childnode_from_list, t); |
|
182 |
} |
|
183 |
#endif |
|
184 | ||
185 | 157 |
return xmlnode; |
186 | 158 |
} |
187 | 159 | |
... | ... | |
190 | 162 |
{ |
191 | 163 |
LassoIdentity *identity = LASSO_IDENTITY(node); |
192 | 164 |
xmlNode *t; |
193 |
#ifdef LASSO_WSF_ENABLED |
|
194 |
xmlNode *t2; |
|
195 |
xmlChar *xml_content; |
|
196 |
gchar *content; |
|
197 |
#endif |
|
198 | 165 | |
199 | 166 |
t = xmlnode->children; |
200 | 167 |
while (t) { |
... | ... | |
212 | 179 |
g_strdup(federation->remote_providerID), federation); |
213 | 180 |
} |
214 | 181 | |
215 |
#ifdef LASSO_WSF_ENABLED |
|
216 |
/* Resource Offerings */ |
|
217 |
if (strcmp((char*)t->name, "ResourceOffering") == 0) { |
|
218 |
LassoDiscoResourceOffering *offering; |
|
219 |
offering = LASSO_DISCO_RESOURCE_OFFERING(lasso_node_new_from_xmlNode(t)); |
|
220 |
g_hash_table_insert(identity->private_data->resource_offerings_map, |
|
221 |
g_strdup(offering->entryID), |
|
222 |
g_object_ref(offering)); |
|
223 |
} |
|
224 | ||
225 |
/* Service Metadatas IDs (SvcMDID) */ |
|
226 |
if (strcmp((char*)t->name, "SvcMDIDs") == 0) { |
|
227 |
t2 = t->children; |
|
228 |
while (t2) { |
|
229 |
if (t2->type != XML_ELEMENT_NODE) { |
|
230 |
t2 = t2->next; |
|
231 |
continue; |
|
232 |
} |
|
233 |
xml_content = xmlNodeGetContent(t2); |
|
234 |
content = g_strdup((gchar *)xml_content); |
|
235 |
identity->private_data->svcMDID = g_list_append( |
|
236 |
identity->private_data->svcMDID, content); |
|
237 |
xmlFree(xml_content); |
|
238 |
t2 = t2->next; |
|
239 |
} |
|
240 |
} |
|
241 |
#endif |
|
242 | ||
243 | 182 |
t = t->next; |
244 | 183 |
} |
245 | 184 | |
... | ... | |
256 | 195 |
{ |
257 | 196 |
LassoIdentity *identity = LASSO_IDENTITY(object); |
258 | 197 | |
259 | ||
260 | 198 |
if (identity->private_data->dispose_has_run == FALSE) { |
261 | 199 |
identity->private_data->dispose_has_run = TRUE; |
262 |
#ifdef LASSO_WSF_ENABLED |
|
263 |
lasso_release_list_of_strings(identity->private_data->svcMDID); |
|
264 |
lasso_release_ghashtable(identity->private_data->resource_offerings_map); |
|
265 |
#endif |
|
266 | ||
267 | 200 |
lasso_release_ghashtable(identity->federations); |
268 | ||
269 | 201 |
G_OBJECT_CLASS(parent_class)->dispose(object); |
270 | 202 |
} |
271 | 203 |
} |
... | ... | |
288 | 220 |
{ |
289 | 221 |
identity->private_data = g_new0(LassoIdentityPrivate, 1); |
290 | 222 |
identity->private_data->dispose_has_run = FALSE; |
291 |
#ifdef LASSO_WSF_ENABLED |
|
292 |
identity->private_data->svcMDID = NULL; |
|
293 |
identity->private_data->last_entry_id = 0; |
|
294 |
identity->private_data->resource_offerings_map = g_hash_table_new_full(g_str_hash, |
|
295 |
g_str_equal, (GDestroyNotify)g_free, (GDestroyNotify)g_object_unref); |
|
296 |
#endif |
|
297 | 223 |
identity->federations = g_hash_table_new_full(g_str_hash, g_str_equal, |
298 | 224 |
(GDestroyNotify)g_free, |
299 | 225 |
(GDestroyNotify)lasso_federation_destroy); |
lasso/id-ff/identityprivate.h | ||
---|---|---|
33 | 33 |
struct _LassoIdentityPrivate |
34 | 34 |
{ |
35 | 35 |
gboolean dispose_has_run; |
36 |
#ifdef LASSO_WSF_ENABLED |
|
37 |
guint last_entry_id; |
|
38 |
GHashTable *resource_offerings_map; /* of LassoDiscoResourceOffering */ |
|
39 |
GList *svcMDID; /* of char* */ |
|
40 |
#endif |
|
41 | 36 |
}; |
42 | 37 | |
43 | 38 |
gint lasso_identity_add_federation(LassoIdentity *identity, LassoFederation *federation); |
lasso/id-ff/login.c | ||
---|---|---|
270 | 270 |
#include "../saml-2.0/loginprivate.h" |
271 | 271 |
#include "../lasso_config.h" |
272 | 272 | |
273 |
#ifdef LASSO_WSF_ENABLED |
|
274 |
#include "../id-wsf/id_ff_extensions_private.h" |
|
275 |
#endif |
|
276 | ||
277 | 273 |
#define LASSO_LOGIN_GET_PRIVATE(o) \ |
278 | 274 |
(G_TYPE_INSTANCE_GET_PRIVATE ((o), LASSO_TYPE_LOGIN, LassoLoginPrivate)) |
279 | 275 | |
... | ... | |
416 | 412 |
lasso_list_add_gobject(LASSO_SAMLP_RESPONSE(profile->response)->Assertion, |
417 | 413 |
assertion); |
418 | 414 | |
419 |
#ifdef LASSO_WSF_ENABLED |
|
420 |
lasso_login_assertion_add_discovery(login, assertion); |
|
421 |
#endif |
|
422 | ||
423 | 415 |
/* store assertion in session object */ |
424 | 416 |
if (profile->session == NULL) { |
425 | 417 |
profile->session = lasso_session_new(); |
... | ... | |
2445 | 2437 | |
2446 | 2438 |
lasso_release_string(login->private_data->soap_request_msg); |
2447 | 2439 |
lasso_release_gobject(login->private_data->saml2_assertion); |
2448 | ||
2449 |
#ifdef LASSO_WSF_ENABLED |
|
2450 |
lasso_release_gobject(login->private_data->resourceId); |
|
2451 |
lasso_release_gobject(login->private_data->encryptedResourceId); |
|
2452 |
#endif |
|
2453 | 2440 |
lasso_release_string(login->private_data->request_id); |
2454 | 2441 |
G_OBJECT_CLASS(parent_class)->dispose(object); |
2455 | 2442 |
} |
lasso/id-ff/loginprivate.h | ||
---|---|---|
32 | 32 |
#include "config.h" |
33 | 33 |
#include "../xml/saml-2.0/saml2_assertion.h" |
34 | 34 | |
35 |
#ifdef LASSO_WSF_ENABLED |
|
36 |
#include "../xml/disco_resource_id.h" |
|
37 |
#include "../xml/disco_encrypted_resource_id.h" |
|
38 |
#endif |
|
39 | ||
40 | 35 |
struct _LassoLoginPrivate |
41 | 36 |
{ |
42 | 37 |
char *soap_request_msg; |
43 | 38 |
LassoSaml2Assertion *saml2_assertion; |
44 | 39 |
char *request_id; |
45 |
#ifdef LASSO_WSF_ENABLED |
|
46 |
LassoDiscoResourceID *resourceId; |
|
47 |
LassoDiscoEncryptedResourceID *encryptedResourceId; |
|
48 |
#endif |
|
49 | 40 |
}; |
50 | 41 | |
51 | 42 |
#ifdef __cplusplus |
lasso/id-ff/profile.c | ||
---|---|---|
48 | 48 |
#include "../xml/soap-1.1/soap_fault.h" |
49 | 49 |
#include "../utils.h" |
50 | 50 |
#include "../debug.h" |
51 |
#ifdef LASSO_WSF_ENABLED |
|
52 |
#include "../xml/idwsf_strings.h" |
|
53 |
#include "../xml/id-wsf-2.0/idwsf2_strings.h" |
|
54 |
#endif |
|
55 | 51 |
#include "../lasso_config.h" |
56 | 52 | |
57 | 53 |
#include <stdio.h> |
... | ... | |
209 | 205 |
type = LASSO_REQUEST_TYPE_LECP; |
210 | 206 |
} else if (strcmp(name, "ManageNameIDRequest") == 0) { |
211 | 207 |
type = LASSO_REQUEST_TYPE_NAME_ID_MANAGEMENT; |
212 |
#ifdef LASSO_WSF_ENABLED |
|
213 |
} else if (strcmp(name, "Query") == 0) { |
|
214 |
if (strcmp((char*)ns->href, LASSO_DISCO_HREF) == 0) { |
|
215 |
type = LASSO_REQUEST_TYPE_DISCO_QUERY; |
|
216 |
} else if (strcmp((char*)ns->href, LASSO_IDWSF2_DISCOVERY_HREF) == 0) { |
|
217 |
type = LASSO_REQUEST_TYPE_IDWSF2_DISCO_QUERY; |
|
218 |
} else { |
|
219 |
type = LASSO_REQUEST_TYPE_DST_QUERY; |
|
220 |
} |
|
221 |
} else if (strcmp(name, "Modify") == 0) { |
|
222 |
if (strcmp((char*)ns->href, LASSO_DISCO_HREF) == 0) { |
|
223 |
type = LASSO_REQUEST_TYPE_DISCO_MODIFY; |
|
224 |
} else { |
|
225 |
type = LASSO_REQUEST_TYPE_DST_MODIFY; |
|
226 |
} |
|
227 |
} else if (strcmp(name, "SASLRequest") == 0) { |
|
228 |
type = LASSO_REQUEST_TYPE_SASL_REQUEST; |
|
229 |
} else if (strcmp(name, "SvcMDRegister") == 0) { |
|
230 |
type = LASSO_REQUEST_TYPE_IDWSF2_DISCO_SVCMD_REGISTER; |
|
231 |
} else if (strcmp(name, "SvcMDAssociationAdd") == 0) { |
|
232 |
type = LASSO_REQUEST_TYPE_IDWSF2_DISCO_SVCMD_ASSOCIATION_ADD; |
|
233 |
#endif |
|
234 | 208 |
} else { |
235 | 209 |
message(G_LOG_LEVEL_WARNING, "Unknown node name : %s", name); |
236 | 210 |
} |
lasso/id-ff/profile.h | ||
---|---|---|
58 | 58 |
* @LASSO_REQUEST_TYPE_NAME_REGISTRATION: Name Registration |
59 | 59 |
* @LASSO_REQUEST_TYPE_NAME_IDENTIFIER_MAPPING: Name Identifier Mapping |
60 | 60 |
* @LASSO_REQUEST_TYPE_LECP: Liberty-Enabled Client / Proxy |
61 |
* @LASSO_REQUEST_TYPE_DISCO_QUERY: ID-WSF 1.0 Discovery Query request |
|
62 |
* @LASSO_REQUEST_TYPE_DISCO_MODIFY: ID-WSF 1.0 Discovery Modify Request |
|
63 |
* @LASSO_REQUEST_TYPE_DST_QUERY: ID-WSF 1.0 Data Service Template Query request |
|
64 |
* @LASSO_REQUEST_TYPE_DST_MODIFY: ID-WSF 1.0 Data Service Temaplte Modify request |
|
65 |
* @LASSO_REQUEST_TYPE_SASL_REQUEST: ID-WSF 1.0 Authentication request |
|
66 | 61 |
* @LASSO_REQUEST_TYPE_NAME_ID_MANAGEMENT: SAML 2.0 NameID Management request |
67 |
* @LASSO_REQUEST_TYPE_IDWSF2_DISCO_SVCMD_REGISTER: ID-WSF 2.0 Discovery Service Metadata Register |
|
68 |
* request |
|
69 |
* @LASSO_REQUEST_TYPE_IDWSF2_DISCO_SVCMD_ASSOCIATION_ADD: ID-WSF 2.0 Discovery Service Metadata |
|
70 |
* Add Association request |
|
71 |
* @LASSO_REQUEST_TYPE_IDWSF2_DISCO_QUERY: ID-WSF 2.0 Discovery Query request |
|
72 | 62 |
* |
73 | 63 |
* Request types (known for SOAP endpoints) |
74 | 64 |
*/ |
... | ... | |
80 | 70 |
LASSO_REQUEST_TYPE_NAME_REGISTRATION = 4, |
81 | 71 |
LASSO_REQUEST_TYPE_NAME_IDENTIFIER_MAPPING = 5, |
82 | 72 |
LASSO_REQUEST_TYPE_LECP = 6, |
83 |
LASSO_REQUEST_TYPE_DISCO_QUERY = 7, |
|
84 |
LASSO_REQUEST_TYPE_DISCO_MODIFY = 8, |
|
85 |
LASSO_REQUEST_TYPE_DST_QUERY = 9, |
|
86 |
LASSO_REQUEST_TYPE_DST_MODIFY = 10, |
|
87 |
LASSO_REQUEST_TYPE_SASL_REQUEST = 11, |
|
88 | 73 |
LASSO_REQUEST_TYPE_NAME_ID_MANAGEMENT = 12, |
89 |
LASSO_REQUEST_TYPE_IDWSF2_DISCO_SVCMD_REGISTER = 13, |
|
90 |
LASSO_REQUEST_TYPE_IDWSF2_DISCO_SVCMD_ASSOCIATION_ADD = 14, |
|
91 |
LASSO_REQUEST_TYPE_IDWSF2_DISCO_QUERY = 15 |
|
92 | 74 |
} LassoRequestType; |
93 | 75 | |
94 | 76 |
/** |
lasso/id-ff/provider.h | ||
---|---|---|
143 | 143 |
* LassoProtocolConformance: |
144 | 144 |
* @LASSO_PROTOCOL_LIBERTY_1_0: Liberty ID-FF 1.0 |
145 | 145 |
* @LASSO_PROTOCOL_LIBERTY_1_1: Liberty ID-FF 1.1 |
146 |
* @LASSO_PROTOCOL_LIBERTY_1_2: Liberty ID-FF 1.2 / ID-WSF 1.0
|
|
146 |
* @LASSO_PROTOCOL_LIBERTY_1_2: Liberty ID-FF 1.2 |
|
147 | 147 |
* @LASSO_PROTOCOL_SAML_2_0: SAML 2.0 |
148 | 148 |
* |
149 | 149 |
* Provider protocol conformance. |
lasso/id-ff/server.c | ||
---|---|---|
41 | 41 |
#include "../utils.h" |
42 | 42 |
#include "../debug.h" |
43 | 43 |
#include "../lasso_config.h" |
44 |
#ifdef LASSO_WSF_ENABLED |
|
45 |
#include "../id-wsf/id_ff_extensions_private.h" |
|
46 |
#include "../id-wsf-2.0/serverprivate.h" |
|
47 |
#endif |
|
48 | 44 | |
49 | 45 |
#define RSA_SHA1 "RSA_SHA1" |
50 | 46 |
#define DSA_SHA1 "DSA_SHA1" |
... | ... | |
297 | 293 |
{ "SignatureMethod", SNIPPET_ATTRIBUTE, 0, NULL, NULL, NULL }, |
298 | 294 |
{ "Providers", SNIPPET_LIST_NODES, 0, NULL, NULL, NULL }, |
299 | 295 |
{ "ServerDumpVersion", SNIPPET_ATTRIBUTE, 0, NULL, NULL, NULL }, |
300 |
#ifdef LASSO_WSF_ENABLED |
|
301 |
{ "Services", SNIPPET_LIST_NODES, 0, NULL, NULL, NULL }, |
|
302 |
{ "SvcMDs", SNIPPET_LIST_NODES, 0, NULL, NULL, NULL }, |
|
303 |
#endif |
|
304 | ||
305 | 296 |
{NULL, 0, 0, NULL, NULL, NULL} |
306 | 297 |
}; |
307 | 298 | |
... | ... | |
341 | 332 |
(GHFunc)add_provider_childnode, t); |
342 | 333 |
} |
343 | 334 | |
344 |
#ifdef LASSO_WSF_ENABLED |
|
345 |
lasso_server_dump_id_wsf_services(server, xmlnode); |
|
346 |
lasso_server_dump_id_wsf20_svcmds(server, xmlnode); |
|
347 |
#endif |
|
348 | ||
349 | 335 |
xmlCleanNs(xmlnode); |
350 | 336 |
lasso_transfer_xml_node(ret_xmlnode, xmlnode); |
351 | 337 | |
... | ... | |
422 | 408 |
t2 = xmlSecGetNextElementNode(t2->next); |
423 | 409 |
} |
424 | 410 |
} |
425 | ||
426 |
#ifdef LASSO_WSF_ENABLED |
|
427 |
lasso_server_init_id_wsf_services(server, t); |
|
428 |
lasso_server_init_id_wsf20_svcmds(server, t); |
|
429 |
#endif |
|
430 | ||
431 | 411 |
t = xmlSecGetNextElementNode(t->next); |
432 | 412 |
} |
433 | 413 |
lasso/id-ff/session.c | ||
---|---|---|
43 | 43 |
#include <xmlsec/xmltree.h> |
44 | 44 |
#include <xmlsec/base64.h> |
45 | 45 | |
46 |
#ifdef LASSO_WSF_ENABLED |
|
47 |
#include "../id-wsf-2.0/sessionprivate.h" |
|
48 |
#endif |
|
49 | ||
50 | 46 |
static gboolean lasso_match_name_id(LassoNode *a, LassoNode *b); |
51 | 47 | |
52 | 48 |
struct _NidAndSessionIndex { |
... | ... | |
355 | 351 |
if (ret != 0) { |
356 | 352 |
return ret; |
357 | 353 |
} |
358 |
/* ID-WSF specific need */ |
|
359 |
if (LASSO_IS_SAML_ASSERTION(assertion)) { |
|
360 |
LassoSamlAssertion *saml_assertion = LASSO_SAML_ASSERTION(assertion); |
|
361 |
if (saml_assertion->Advice) { |
|
362 |
LassoSamlAdvice *advice = saml_assertion->Advice; |
|
363 |
LassoSamlAssertion *advice_assertion = (LassoSamlAssertion*)advice->Assertion; |
|
364 |
if (LASSO_IS_SAML_ASSERTION(advice_assertion)) { |
|
365 |
xmlNode *node = lasso_node_get_original_xmlnode(&advice_assertion->parent); |
|
366 |
if (xmlSecCheckNodeName(node, (xmlChar*)"Assertion", (xmlChar*)LASSO_SAML_ASSERTION_HREF)) { |
|
367 |
xmlChar *id = xmlGetProp(node, (xmlChar*)"AssertionID"); |
|
368 |
ret = lasso_session_add_assertion_with_id(session, (char*)id, node); |
|
369 |
xmlFree(id); |
|
370 |
} |
|
371 |
} |
|
372 |
} |
|
373 |
} |
|
374 | ||
375 | 354 |
session->is_dirty = TRUE; |
376 | 355 | |
377 | 356 |
return ret; |
... | ... | |
606 | 585 |
{ |
607 | 586 |
return FALSE; |
608 | 587 |
} |
609 |
#ifdef LASSO_WSF_ENABLED |
|
610 |
if (g_hash_table_size(session->eprs)) { |
|
611 |
return FALSE; |
|
612 |
} |
|
613 |
#endif |
|
614 | 588 | |
615 | 589 |
return TRUE; |
616 | 590 |
} |
... | ... | |
818 | 792 |
(GHFunc)xmlnode_add_assertion_nid_and_session_indexes, &context); |
819 | 793 |
} |
820 | 794 | |
821 |
#ifdef LASSO_WSF_ENABLED |
|
822 |
lasso_session_id_wsf2_dump_eprs(session, xmlnode); |
|
823 |
#endif |
|
824 | ||
825 | 795 |
return xmlnode; |
826 | 796 |
} |
827 | 797 | |
... | ... | |
950 | 920 |
init_from_xml_nid_and_session_index(node, t); |
951 | 921 |
} |
952 | 922 | |
953 |
#ifdef LASSO_WSF_ENABLED |
|
954 |
lasso_session_id_wsf2_init_eprs(session, t); |
|
955 |
#endif |
|
956 | ||
957 | 923 |
t = t->next; |
958 | 924 |
} |
959 | 925 |
return 0; |
... | ... | |
981 | 947 |
lasso_release_ghashtable(session->private_data->assertions_by_id); |
982 | 948 |
lasso_release_ghashtable(session->private_data->nid_and_session_indexes); |
983 | 949 | |
984 |
#ifdef LASSO_WSF_ENABLED |
|
985 |
lasso_release_ghashtable(session->private_data->eprs); |
|
986 |
#endif |
|
987 | ||
988 | 950 |
G_OBJECT_CLASS(parent_class)->dispose(object); |
989 | 951 |
} |
990 | 952 | |
... | ... | |
1011 | 973 |
session->private_data->nid_and_session_indexes = g_hash_table_new_full(g_str_hash, |
1012 | 974 |
g_str_equal, (GDestroyNotify)g_free, |
1013 | 975 |
(GDestroyNotify)lasso_release_list_of_nid_an_session_index); |
1014 |
#ifdef LASSO_WSF_ENABLED |
|
1015 |
session->private_data->eprs = g_hash_table_new_full(g_str_hash, g_str_equal, |
|
1016 |
(GDestroyNotify)g_free, |
|
1017 |
(GDestroyNotify)g_object_unref); |
|
1018 |
#endif |
|
1019 | 976 |
} |
1020 | 977 | |
1021 | 978 |
static void |
lasso/id-ff/sessionprivate.h | ||
---|---|---|
41 | 41 |
GHashTable *status; /* hold temporary response status for sso-art */ |
42 | 42 |
GHashTable *assertions_by_id; |
43 | 43 |
GHashTable *nid_and_session_indexes; |
44 |
#ifdef LASSO_WSF_ENABLED |
|
45 |
GHashTable *eprs; |
|
46 |
#endif |
|
47 | 44 |
}; |
48 | 45 | |
49 | 46 |
#define LASSO_SESSION_GET_PRIVATE(o) \ |
lasso/id-wsf-2.0/Makefile.am | ||
---|---|---|
1 |
MAINTAINERCLEANFILES = Makefile.in |
|
2 |
liblassoincludedir = $(includedir)/lasso/id-wsf-2.0 |
|
3 | ||
4 |
AM_CPPFLAGS = \ |
|
5 |
-I$(top_builddir) \ |
|
6 |
-I$(top_srcdir) \ |
|
7 |
$(LASSO_CORE_CFLAGS) \ |
|
8 |
-DG_LOG_DOMAIN=\"lasso\" |
|
9 | ||
10 |
noinst_LTLIBRARIES = liblasso-id-wsf2.la |
|
11 | ||
12 |
lasso_private_h_sources = \ |
|
13 |
private.h \ |
|
14 |
serverprivate.h \ |
|
15 |
sessionprivate.h \ |
|
16 |
idwsf2_helper.h |
|
17 | ||
18 |
liblasso_id_wsf2_la_SOURCES = \ |
|
19 |
server.c \ |
|
20 |
session.c \ |
|
21 |
identity.c \ |
|
22 |
discovery.c \ |
|
23 |
data_service.c \ |
|
24 |
profile.c \ |
|
25 |
saml2_login.c \ |
|
26 |
soap_binding.c \ |
|
27 |
idwsf2_helper.c |
|
28 | ||
29 |
liblassoinclude_HEADERS = \ |
|
30 |
id_wsf_2.h \ |
|
31 |
discovery.h \ |
|
32 |
data_service.h \ |
|
33 |
profile.h \ |
|
34 |
identity.h \ |
|
35 |
server.h \ |
|
36 |
session.h \ |
|
37 |
soap_binding.h \ |
|
38 |
saml2_login.h |
|
39 | ||
40 |
EXTRA_DIST = $(lasso_private_h_sources) |
lasso/id-wsf-2.0/data_service.c | ||
---|---|---|
1 |
/* $Id: idwsf2_data_service.c 3101 2007-05-30 11:40:10Z dlaniel $ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
/** |
|
25 |
* SECTION:idwsf2_data_service |
|
26 |
* @short_description: ID-WSF 2.0 Data Service profile |
|
27 |
* |
|
28 |
* DataService allows Attribute Consumers (WSC) to request an Attribute Provider (WSP) to get |
|
29 |
* or modify data about users with their consent. |
|
30 |
*/ |
|
31 | ||
32 |
#include "../xml/private.h" |
|
33 |
#include <libxml/xpath.h> |
|
34 |
#include <libxml/xpathInternals.h> |
|
35 | ||
36 |
#include "data_service.h" |
|
37 |
#include "../xml/id-wsf-2.0/idwsf2_strings.h" |
|
38 | ||
39 |
#include "../xml/id-wsf-2.0/disco_service_type.h" |
|
40 |
#include "../xml/id-wsf-2.0/dstref_query.h" |
|
41 |
#include "../xml/id-wsf-2.0/dstref_query_response.h" |
|
42 |
#include "../xml/id-wsf-2.0/dstref_data.h" |
|
43 |
#include "../xml/id-wsf-2.0/util_status.h" |
|
44 |
#include "../xml/id-wsf-2.0/util_response.h" |
|
45 |
#include "../xml/id-wsf-2.0/sb2_redirect_request.h" |
|
46 |
#include "../xml/id-wsf-2.0/dstref_modify.h" |
|
47 |
#include "../xml/id-wsf-2.0/dstref_modify_item.h" |
|
48 |
#include "../xml/id-wsf-2.0/dstref_modify_response.h" |
|
49 |
#include "../xml/id-wsf-2.0/dstref_create.h" |
|
50 |
#include "../xml/id-wsf-2.0/dstref_delete.h" |
|
51 | ||
52 |
#include "../xml/soap-1.1/soap_envelope.h" |
|
53 |
#include "../xml/soap-1.1/soap_fault.h" |
|
54 |
#include "../xml/private.h" |
|
55 |
#include "../utils.h" |
|
56 |
#include "private.h" |
|
57 |
#include "idwsf2_helper.h" |
|
58 |
#include "soap_binding.h" |
|
59 | ||
60 |
struct _LassoIdWsf2DataServicePrivate |
|
61 |
{ |
|
62 |
gboolean dispose_has_run; |
|
63 |
GList *query_items; /* of LassoIdWsf2DstRefQueryItem */ |
|
64 |
GList *query_datas; /* of LassoIdWsf2DstRefData */ |
|
65 |
GList *modify_items; /* of LassoIdWsf2DstRefModifyItem */ |
|
66 |
gchar *service_type; |
|
67 |
gchar *service_type_prefix; |
|
68 |
GHashTable *namespaces; |
|
69 |
}; |
|
70 | ||
71 |
extern GHashTable *idwsf2_dst_services_by_prefix; /* cf xml/xml.c */ |
|
72 | ||
73 |
#define lasso_idwsf2_data_service_set_dst_service_type(dst_node, service_type, prefix) \ |
|
74 |
lasso_assign_string(dst_node->hrefServiceType, service_type); \ |
|
75 |
lasso_assign_string(dst_node->prefixServiceType, prefix); \ |
|
76 | ||
77 |
static void |
|
78 |
lasso_idwsf2_data_service_clean_private_data(LassoIdWsf2DataService *service) |
|
79 |
{ |
|
80 |
LassoIdWsf2DataServicePrivate *pdata = service->private_data; |
|
81 | ||
82 |
lasso_release_string(pdata->service_type); |
|
83 |
lasso_release_string(pdata->service_type_prefix); |
|
84 |
lasso_release_list_of_gobjects(pdata->query_items); |
|
85 |
lasso_release_list_of_gobjects(pdata->modify_items); |
|
86 |
lasso_release_ghashtable(pdata->namespaces); |
|
87 |
} |
|
88 | ||
89 | ||
90 |
/** |
|
91 |
* lasso_idwsf2_data_service_set_service_type: |
|
92 |
* @service: a #LassoIdWsf2DataService object |
|
93 |
* @prefix: a prefix to use in producing XML documents |
|
94 |
* @service_type: the service type URI |
|
95 |
* |
|
96 |
* Fix a service type for this @service. |
|
97 |
*/ |
|
98 |
gint |
|
99 |
lasso_idwsf2_data_service_set_service_type(LassoIdWsf2DataService *service, const char *prefix, |
|
100 |
const char *service_type) |
|
101 |
{ |
|
102 |
if (!LASSO_IS_IDWSF2_DATA_SERVICE(service) || lasso_strisempty(prefix) |
|
103 |
|| lasso_strisempty(service_type)) |
|
104 |
return LASSO_PARAM_ERROR_INVALID_VALUE; |
|
105 |
lasso_assign_string(service->private_data->service_type_prefix, prefix); |
|
106 |
lasso_assign_string(service->private_data->service_type, service_type); |
|
107 |
return 0; |
|
108 |
} |
|
109 | ||
110 |
/** |
|
111 |
* lasso_idwsf2_data_service_get_service_type: |
|
112 |
* @service: a #LassoIdWsf2DataService object |
|
113 |
* |
|
114 |
* Return the service type of the received request |
|
115 |
* |
|
116 |
* Return value:(allow-none)(transfer none): the URI of the service type or NULL. |
|
117 |
*/ |
|
118 |
const char* |
|
119 |
lasso_idwsf2_data_service_get_service_type(LassoIdWsf2DataService *service) |
|
120 |
{ |
|
121 |
if (! LASSO_IS_IDWSF2_DATA_SERVICE(service)) |
|
122 |
return NULL; |
|
123 |
return service->private_data->service_type; |
|
124 |
} |
|
125 | ||
126 |
/** |
|
127 |
* lasso_idwsf2_data_service_get_service_type_prefix: |
|
128 |
* @service: a #LassoIdWsf2DataService object |
|
129 |
* |
|
130 |
* Return the service type prefix of the received request |
|
131 |
* |
|
132 |
* Return value:(allow-none)(transfer none): the URI of the service type prefix or NULL. |
|
133 |
*/ |
|
134 |
const char* |
|
135 |
lasso_idwsf2_data_service_get_service_type_prefix(LassoIdWsf2DataService *service) |
|
136 |
{ |
|
137 |
if (! LASSO_IS_IDWSF2_DATA_SERVICE(service)) |
|
138 |
return NULL; |
|
139 |
return service->private_data->service_type_prefix; |
|
140 |
} |
|
141 | ||
142 |
static gint |
|
143 |
lasso_idwsf2_data_service_init_request(LassoIdWsf2DataService *service, |
|
144 |
LassoNode *(*constructor)()) |
|
145 |
{ |
|
146 |
int rc = 0; |
|
147 |
LassoNode *request; |
|
148 |
LassoSoapEnvelope *envelope; |
|
149 |
|
|
150 |
lasso_bad_param(IDWSF2_DATA_SERVICE, service); |
|
151 |
lasso_release_list_of_gobjects(service->private_data->query_items); |
|
152 |
lasso_release_list_of_gobjects(service->private_data->modify_items); |
|
153 |
lasso_check_good_rc(lasso_idwsf2_profile_init_request(&service->parent)); |
|
154 |
request = (LassoNode*)constructor(); |
|
155 |
envelope = lasso_idwsf2_profile_get_soap_envelope_request(&service->parent); |
|
156 |
lasso_assign_new_gobject(service->parent.parent.request, request); |
|
157 |
lasso_soap_envelope_add_to_body(envelope, request); |
|
158 | ||
159 |
cleanup: |
|
160 |
return rc; |
|
161 |
} |
|
162 | ||
163 |
/** |
|
164 |
* lasso_idwsf2_data_service_init_query: |
|
165 |
* @service: a #LassoIdWsf2DataService |
|
166 |
* |
|
167 |
* Initialise an ID-WSF 2.0 DataService query request. |
|
168 |
* |
|
169 |
* Return value: 0 on success; or a negative value otherwise. |
|
170 |
**/ |
|
171 |
gint |
|
172 |
lasso_idwsf2_data_service_init_query(LassoIdWsf2DataService *service) |
|
173 |
{ |
|
174 |
return lasso_idwsf2_data_service_init_request(service, |
|
175 |
(LassoNode *(*)())lasso_idwsf2_dstref_query_new); |
|
176 |
} |
|
177 | ||
178 |
/** |
|
179 |
* lasso_idwsf2_data_service_init_modify: |
|
180 |
* @service: a #LassoIdWsf2DataService |
|
181 |
* |
|
182 |
* Initialise an ID-WSF 2.0 DataService modify request. |
|
183 |
* |
|
184 |
* Return value: 0 on success; or a negative value otherwise. |
|
185 |
**/ |
|
186 |
gint |
|
187 |
lasso_idwsf2_data_service_init_modify(LassoIdWsf2DataService *service) |
|
188 |
{ |
|
189 |
return lasso_idwsf2_data_service_init_request(service, |
|
190 |
(LassoNode *(*)())lasso_idwsf2_dstref_modify_new); |
|
191 |
} |
|
192 | ||
193 |
gint |
|
194 |
lasso_idwsf2_data_service_init_create(LassoIdWsf2DataService *service) |
|
195 |
{ |
|
196 |
return lasso_idwsf2_data_service_init_request(service, |
|
197 |
(LassoNode *(*)())lasso_idwsf2_dstref_create_new); |
|
198 |
} |
|
199 | ||
200 |
gint |
|
201 |
lasso_idwsf2_data_service_init_delete(LassoIdWsf2DataService *service) |
|
202 |
{ |
|
203 |
return lasso_idwsf2_data_service_init_request(service, |
|
204 |
(LassoNode *(*)())lasso_idwsf2_dstref_delete_new); |
|
205 |
} |
|
206 | ||
207 |
/** |
|
208 |
* lasso_idwsf2_data_service_get_request_type: |
|
209 |
* @service: a #LassoIdWsf2DataService object |
|
210 |
* |
|
211 |
* Return the type of the currently handled request. |
|
212 |
*/ |
|
213 |
LassoIdWsf2DataServiceRequestType |
|
214 |
lasso_idwsf2_data_service_get_request_type(LassoIdWsf2DataService *service) |
|
215 |
{ |
|
216 |
GType request_type = 0; |
|
217 | ||
218 |
#define check_request_type(a, b) \ |
|
219 |
if (request_type == a) { \ |
|
220 |
return b ;\ |
|
221 |
} |
|
222 |
if (! LASSO_IS_IDWSF2_DATA_SERVICE(service)) |
|
223 |
return LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_UNKNOWN; |
|
224 |
request_type = G_TYPE_FROM_INSTANCE(service->parent.parent.request); |
|
225 |
check_request_type(LASSO_TYPE_IDWSF2_DSTREF_QUERY, |
|
226 |
LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_QUERY); |
|
227 |
check_request_type(LASSO_TYPE_IDWSF2_DSTREF_MODIFY, |
|
228 |
LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_MODIFY); |
|
229 |
#undef check_request_type |
|
230 |
return LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_UNKNOWN; |
|
231 |
} |
|
232 | ||
233 |
/** |
|
234 |
* lasso_idwsf2_data_service_add_query_item: |
|
235 |
* @service: a #LassoIdWsf2DataService |
|
236 |
* @item_query: a query string |
|
237 |
* @item_id:(allow-none): identifier of the queried item, which will allow to retrieve it in the |
|
238 |
* response |
|
239 |
* |
|
240 |
* Add an item in the query request. |
|
241 |
* |
|
242 |
* Return value: 0 on success; or a negative value otherwise. |
|
243 |
**/ |
|
244 |
gint |
|
245 |
lasso_idwsf2_data_service_add_query_item(LassoIdWsf2DataService *service, const gchar *item_query, |
|
246 |
const gchar *item_id) |
|
247 |
{ |
|
248 |
LassoIdWsf2DstRefQueryItem *item; |
|
249 |
GList *i; |
|
250 |
int rc = 0; |
|
251 | ||
252 |
lasso_bad_param(IDWSF2_DATA_SERVICE, service); |
|
253 |
lasso_check_non_empty_string(item_query); |
|
254 | ||
255 |
if (item_id == NULL) { |
|
256 |
item_id = lasso_build_unique_id(32); |
|
257 |
} |
|
258 |
/* Check duplicates */ |
|
259 |
lasso_foreach(i, service->private_data->query_items) { |
|
260 |
LassoIdWsf2DstRefQueryItem *old_item = (LassoIdWsf2DstRefQueryItem *)i->data; |
|
261 |
if (lasso_strisequal(old_item->parent.parent.itemID,item_id)) { |
|
262 |
return LASSO_IDWSF2_DST_ERROR_DUPLICATE_ITEM; |
|
263 |
} |
|
264 |
} |
|
265 |
item = lasso_idwsf2_dstref_query_item_new_full(item_query, item_id); |
|
266 |
lasso_list_add_gobject(service->private_data->query_items, item); |
|
267 |
cleanup: |
|
268 |
return rc; |
|
269 |
} |
|
270 | ||
271 |
/** |
|
272 |
* lasso_idwsf2_data_service_add_modify_item: |
|
273 |
* @service: a #LassoIdWsf2DataService |
|
274 |
* @item_query: XPATH of the item to modify |
|
275 |
* @new_data:(allow-none):new value for the selected item |
|
276 |
* @overrideAllowed:(allow-none)(default FALSE): FALSE means only allowing to create a new item, but |
|
277 |
* not modify existing one, TRUE means allowing to modify existing item |
|
278 |
* @item_id:(allow-none): identifier of the item to modify |
|
279 |
* |
|
280 |
* Add an item in the modification request. |
|
281 |
* |
|
282 |
* Return value: 0 on success; or a negative value otherwise. |
|
283 |
**/ |
|
284 |
gint |
|
285 |
lasso_idwsf2_data_service_add_modify_item(LassoIdWsf2DataService *service, const gchar *item_query, |
|
286 |
xmlNode *new_data, gboolean overrideAllowed, const gchar *item_id) |
|
287 |
{ |
|
288 |
LassoIdWsf2DstRefModifyItem *item; |
|
289 |
int rc = 0; |
|
290 |
GList *i; |
|
291 | ||
292 |
lasso_bad_param(IDWSF2_DATA_SERVICE, service); |
|
293 |
lasso_check_non_empty_string(item_query); |
|
294 | ||
295 |
if (item_id == NULL) { |
|
296 |
item_id = lasso_build_unique_id(10); |
|
297 |
} |
|
298 |
lasso_foreach(i, service->private_data->modify_items) { |
|
299 |
LassoIdWsf2DstRefModifyItem *old_item = (LassoIdWsf2DstRefModifyItem *)i->data; |
|
300 |
if (lasso_strisequal(old_item->id,item_id)) { |
|
301 |
return LASSO_IDWSF2_DST_ERROR_DUPLICATE_ITEM; |
|
302 |
} |
|
303 |
} |
|
304 |
item = lasso_idwsf2_dstref_modify_item_new_full( |
|
305 |
item_query, item_id, new_data, overrideAllowed); |
|
306 |
lasso_list_add_gobject(service->private_data->modify_items, item); |
|
307 | ||
308 |
cleanup: |
|
309 |
return rc; |
|
310 |
} |
|
311 | ||
312 |
/** |
|
313 |
* lasso_idwsf2_data_service_get_item_ids: |
|
314 |
* @service: a #LassoIdWsf2DataService object |
|
315 |
* |
|
316 |
* Return the list of items ids for the currently handled request. |
|
317 |
* |
|
318 |
* Return value:(element-type utf8)(transfer full): a list of string ids, or NULL if none is found. |
|
319 |
* The caller must free the return value. |
|
320 |
*/ |
|
321 |
GList* |
|
322 |
lasso_idwsf2_data_service_get_item_ids(LassoIdWsf2DataService *service) |
|
323 |
{ |
|
324 |
GList *i, *result = NULL; |
|
325 | ||
326 |
switch (lasso_idwsf2_data_service_get_request_type(service)) { |
|
327 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_QUERY: |
|
328 |
lasso_foreach(i, service->private_data->query_items) { |
|
329 |
LassoIdWsf2DstRefQueryItem *old_item = (LassoIdWsf2DstRefQueryItem *)i->data; |
|
330 |
lasso_list_add_string(result, old_item->parent.parent.itemID); |
|
331 |
} |
|
332 |
break; |
|
333 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_MODIFY: |
|
334 |
lasso_foreach(i, service->private_data->modify_items) { |
|
335 |
LassoIdWsf2DstRefModifyItem *old_item = (LassoIdWsf2DstRefModifyItem *)i->data; |
|
336 |
lasso_list_add_string(result, old_item->id); |
|
337 |
} |
|
338 |
break; |
|
339 |
default: |
|
340 |
break; |
|
341 |
} |
|
342 |
return result; |
|
343 |
} |
|
344 | ||
345 |
/** |
|
346 |
* lasso_idwsf2_data_service_get_items: |
|
347 |
* @service: a #LassoIdWsf2DataService object |
|
348 |
* |
|
349 |
* Return value:(element-type LassoNode)(transfer none): a list of Query or Modify items, or NULL if |
|
350 |
* none is found. |
|
351 |
*/ |
|
352 |
GList* |
|
353 |
lasso_idwsf2_data_service_get_items(LassoIdWsf2DataService *service) |
|
354 |
{ |
|
355 |
switch (lasso_idwsf2_data_service_get_request_type(service)) { |
|
356 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_QUERY: |
|
357 |
return service->private_data->query_items; |
|
358 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_MODIFY: |
|
359 |
return service->private_data->modify_items; |
|
360 |
default: |
|
361 |
break; |
|
362 |
} |
|
363 |
return NULL; |
|
364 |
} |
|
365 | ||
366 |
/** |
|
367 |
* lasso_idwsf2_data_service_get_item: |
|
368 |
* @service: a #LassoIdWsf2DataService object |
|
369 |
* @item_id: the itemID of the item to return, if NULL try to get the only one item (if there is |
|
370 |
* more than one, it returns NULL). |
|
371 |
* |
|
372 |
* Retrieve a specific item from a request. |
|
373 |
* |
|
374 |
* Return value:(transfer none)(allow-none): a #LassoIdWsf2DstRefQueryItem or a #LassoIdWsf2DstRefModifyItem object, or NULL if |
|
375 |
* no item for the given item_id exists. |
|
376 |
*/ |
|
377 |
LassoNode* |
|
378 |
lasso_idwsf2_data_service_get_item(LassoIdWsf2DataService *service, |
|
379 |
const char *item_id) |
|
380 |
{ |
|
381 |
GList *i; |
|
382 | ||
383 |
switch (lasso_idwsf2_data_service_get_request_type(service)) { |
|
384 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_QUERY: |
|
385 |
if (item_id == NULL) { |
|
386 |
if (g_list_length(service->private_data->query_items) == 1) |
|
387 |
return (LassoNode*)service->private_data->query_items->data; |
|
388 |
else |
|
389 |
return NULL; |
|
390 |
} |
|
391 |
lasso_foreach(i, service->private_data->query_items) { |
|
392 |
LassoIdWsf2DstRefQueryItem *old_item = (LassoIdWsf2DstRefQueryItem *)i->data; |
|
393 |
if (lasso_strisequal(old_item->parent.parent.itemID,item_id)) { |
|
394 |
return (LassoNode*)old_item; |
|
395 |
} |
|
396 |
} |
|
397 |
break; |
|
398 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_MODIFY: |
|
399 |
if (item_id == NULL) { |
|
400 |
if (g_list_length(service->private_data->modify_items) == 1) |
|
401 |
return (LassoNode*)service->private_data->modify_items->data; |
|
402 |
else |
|
403 |
return NULL; |
|
404 |
} |
|
405 |
lasso_foreach(i, service->private_data->modify_items) { |
|
406 |
LassoIdWsf2DstRefModifyItem *old_item = (LassoIdWsf2DstRefModifyItem *)i->data; |
|
407 |
if (lasso_strisequal(old_item->id,item_id)) { |
|
408 |
return (LassoNode*)old_item; |
|
409 |
} |
|
410 |
} |
|
411 |
break; |
|
412 |
default: |
|
413 |
break; |
|
414 |
} |
|
415 |
return NULL; |
|
416 |
} |
|
417 | ||
418 |
/** |
|
419 |
* lasso_idwsf2_data_service_add_namespace: |
|
420 |
* @service: a #LassoIdWsf2DataService object |
|
421 |
* |
|
422 |
* Add a new namespace to use for example in XPath elements or in Data or NewData objects. |
|
423 |
* |
|
424 |
* Return value: 0 if successful, an error code otherwise. |
|
425 |
*/ |
|
426 |
gint |
|
427 |
lasso_idwsf2_data_service_add_namespace(LassoIdWsf2DataService *service, const char *prefix, |
|
428 |
const char *href) |
|
429 |
{ |
|
430 |
if (xmlValidateNCName(BAD_CAST prefix, 0) && ! lasso_strisempty(href)) |
|
431 |
return LASSO_PARAM_ERROR_INVALID_VALUE; |
|
432 | ||
433 |
if (g_hash_table_lookup(service->private_data->namespaces, prefix) != NULL || |
|
434 |
lasso_strisequal(service->private_data->service_type_prefix,prefix) || |
|
435 |
lasso_strisequal(prefix,LASSO_IDWSF2_DSTREF_PREFIX)) { |
|
436 |
return LASSO_PARAM_ERROR_INVALID_VALUE; |
|
437 |
} |
|
438 | ||
439 |
g_hash_table_insert(service->private_data->namespaces, g_strdup(prefix), g_strdup(href)); |
|
440 |
return 0; |
|
441 |
} |
|
442 | ||
443 |
static void |
|
444 |
add_custom_namespace(const char *prefix, const char *href, LassoNode *node) |
|
445 |
{ |
|
446 |
lasso_node_add_custom_namespace(node, prefix, href); |
|
447 |
} |
|
448 | ||
449 |
/** |
|
450 |
* lasso_idwsf2_data_service_build_request_msg: |
|
451 |
* @service: a #LassoIdWsf2DataService object |
|
452 |
* @security_mech_id:(allow-none): the security mechanism to employ, default is Bearer mechanism. |
|
453 |
* |
|
454 |
* Build the request message. |
|
455 |
* |
|
456 |
* Return value: 0 if successful, an error code otherwise. |
|
457 |
*/ |
|
458 |
gint |
|
459 |
lasso_idwsf2_data_service_build_request_msg(LassoIdWsf2DataService *service, |
|
460 |
const char *security_mech_id) |
|
461 |
{ |
|
462 |
int rc = 0; |
|
463 |
LassoSoapEnvelope *envelope; |
|
464 |
LassoIdWsf2DstRefQuery *query = (LassoIdWsf2DstRefQuery*)service->parent.parent.request; |
|
465 |
LassoIdWsf2DstRefModify *modify = (LassoIdWsf2DstRefModify*)service->parent.parent.request; |
|
466 |
const char *service_type = NULL; |
|
467 |
const char *prefix = NULL; |
|
468 | ||
469 |
lasso_bad_param(IDWSF2_DATA_SERVICE, service); |
|
470 | ||
471 |
envelope = lasso_idwsf2_profile_get_soap_envelope_request(&service->parent); |
|
472 |
service_type = lasso_wsa_endpoint_reference_get_idwsf2_service_type( |
|
473 |
lasso_idwsf2_profile_get_epr(&service->parent)); |
|
474 |
if (service_type) { |
|
475 |
const char *prefix = lasso_get_prefix_for_idwsf2_dst_service_href(service_type); |
|
476 |
if (! prefix) |
|
477 |
prefix = "dstref"; |
|
478 |
} else { |
|
479 |
service_type = service->private_data->service_type; |
|
480 |
prefix = service->private_data->service_type_prefix; |
|
481 |
} |
|
482 | ||
483 |
switch (lasso_idwsf2_data_service_get_request_type(service)) { |
|
484 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_QUERY: |
|
485 |
if (service_type) { |
|
486 |
lasso_idwsf2_data_service_set_dst_service_type(query, service_type, prefix); |
|
487 |
} |
|
488 |
lasso_assign_list_of_gobjects(query->QueryItem, service->private_data->query_items); |
|
489 |
g_hash_table_foreach(service->private_data->namespaces, |
|
490 |
(GHFunc)add_custom_namespace, |
|
491 |
query); |
|
492 |
break; |
|
493 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_MODIFY: |
|
494 |
if (service_type) { |
|
495 |
lasso_idwsf2_data_service_set_dst_service_type(modify, service_type, prefix); |
|
496 |
} |
|
497 |
lasso_assign_list_of_gobjects(modify->ModifyItem, service->private_data->modify_items); |
|
498 |
break; |
|
499 |
default: |
|
500 |
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_INVALID_REQUEST); |
|
501 |
break; |
|
502 |
} |
|
503 |
rc = lasso_idwsf2_profile_build_request_msg(&service->parent, security_mech_id); |
|
504 |
cleanup: |
|
505 |
return rc; |
|
506 |
} |
|
507 | ||
508 |
static gint |
|
509 |
lasso_idwsf2_data_service_process_query(LassoIdWsf2DataService *service) |
|
510 |
{ |
|
511 |
LassoIdWsf2DstRefQuery *query; |
|
512 |
GList *i; |
|
513 |
int rc = 0; |
|
514 | ||
515 |
query = (LassoIdWsf2DstRefQuery*)service->parent.parent.request; |
|
516 |
lasso_check_good_rc(lasso_idwsf2_data_service_set_service_type( |
|
517 |
service, |
|
518 |
query->prefixServiceType, |
|
519 |
query->hrefServiceType)); |
|
520 | ||
521 |
/* Parse QueryItems to get a list of Query strings */ |
|
522 |
/* FIXME: extract TestItems */ |
|
523 |
lasso_foreach(i, query->QueryItem) |
|
524 |
{ |
|
525 |
LassoIdWsf2DstRefQueryItem *item = (LassoIdWsf2DstRefQueryItem *)i->data; |
|
526 |
/* FIXME: check more query items invariants. */ |
|
527 |
if (! LASSO_IS_IDWSF2_DSTREF_QUERY_ITEM(item)) { |
|
528 |
lasso_release_list_of_gobjects(service->private_data->query_items); |
|
529 |
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_INVALID_REQUEST); |
|
530 |
} |
|
531 |
lasso_list_add_gobject(service->private_data->query_items, |
|
532 |
item); |
|
533 |
} |
|
534 |
cleanup: |
|
535 |
return rc; |
|
536 |
} |
|
537 | ||
538 |
static gint |
|
539 |
lasso_idwsf2_data_service_process_modify(LassoIdWsf2DataService *service) |
|
540 |
{ |
|
541 |
LassoIdWsf2DstRefModify *modify; |
|
542 |
GList *i; |
|
543 |
int rc = 0; |
|
544 | ||
545 |
modify = (LassoIdWsf2DstRefModify*)service->parent.parent.request; |
|
546 |
lasso_foreach(i, modify->ModifyItem) |
|
547 |
{ |
|
548 |
LassoIdWsf2DstRefModifyItem *item = (LassoIdWsf2DstRefModifyItem*)i->data; |
|
549 |
/* FIXME: check more Modify Item invariants */ |
|
550 |
if (! LASSO_IS_IDWSF2_DSTREF_MODIFY_ITEM(item)) { |
|
551 |
lasso_release_list_of_gobjects(service->private_data->modify_items); |
|
552 |
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_INVALID_REQUEST); |
|
553 |
} |
|
554 |
lasso_list_add_gobject(service->private_data->modify_items, item); |
|
555 |
} |
|
556 |
cleanup: |
|
557 |
return rc; |
|
558 |
} |
|
559 | ||
560 |
/** |
|
561 |
* lasso_idwsf2_data_service_process_request_msg: |
|
562 |
* @service: a #LassoIdWsf2DataService object |
|
563 |
* @msg: the message string |
|
564 |
* |
|
565 |
* Process a newly received requests. |
|
566 |
*/ |
|
567 |
gint |
|
568 |
lasso_idwsf2_data_service_process_request_msg(LassoIdWsf2DataService *service, const char *msg) |
|
569 |
{ |
|
570 |
int rc = 0; |
|
571 | ||
572 |
lasso_bad_param(IDWSF2_DATA_SERVICE, service); |
|
573 | ||
574 |
lasso_check_good_rc(lasso_idwsf2_profile_process_request_msg(&service->parent, msg)); |
|
575 |
lasso_idwsf2_data_service_clean_private_data(service); |
|
576 |
switch (lasso_idwsf2_data_service_get_request_type(service)) { |
|
577 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_QUERY: |
|
578 |
rc = lasso_idwsf2_data_service_process_query(service); |
|
579 |
break; |
|
580 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_MODIFY: |
|
581 |
rc = lasso_idwsf2_data_service_process_modify(service); |
|
582 |
break; |
|
583 |
default: |
|
584 |
rc = LASSO_PROFILE_ERROR_INVALID_REQUEST; |
|
585 |
break; |
|
586 |
} |
|
587 |
if (rc == LASSO_PROFILE_ERROR_INVALID_REQUEST) { |
|
588 |
lasso_idwsf2_data_service_set_status_code(service, |
|
589 |
LASSO_DST2_STATUS_CODE1_FAILED, |
|
590 |
"InvalidRequest"); |
|
591 |
} |
|
592 |
cleanup: |
|
593 |
return rc; |
|
594 |
} |
|
595 | ||
596 |
/** |
|
597 |
* lasso_idwsf2_data_service_validate_request: |
|
598 |
* @service: a #LassoIdWsf2DataService object |
|
599 |
* |
|
600 |
* Initialize a new response object corresponding to the current request. If not request if found or |
|
601 |
* the request is invalid, a failure response is created. |
|
602 |
* |
|
603 |
* Return value: 0 if successful, or LASSO_PROFILE_ERROR_INVALID_REQUEST. |
|
604 |
*/ |
|
605 |
gint |
|
606 |
lasso_idwsf2_data_service_validate_request(LassoIdWsf2DataService *service) |
|
607 |
{ |
|
608 |
LassoIdWsf2DstRefQueryResponse *query_response; |
|
609 |
LassoIdWsf2DstRefModifyResponse *modify_response; |
|
610 |
LassoNode *response = NULL; |
|
611 |
int rc = 0; |
|
612 |
const char *service_type = NULL; |
|
613 |
const char *prefix = NULL; |
|
614 | ||
615 |
lasso_bad_param(IDWSF2_DATA_SERVICE, service); |
|
616 | ||
617 |
lasso_check_good_rc(lasso_idwsf2_profile_init_response(&service->parent)); |
|
618 |
if (service_type) { |
|
619 |
const char *prefix = lasso_get_prefix_for_idwsf2_dst_service_href(service_type); |
|
620 |
if (! prefix) |
|
621 |
prefix = "dstref"; |
|
622 |
} else { |
|
623 |
service_type = service->private_data->service_type; |
|
624 |
prefix = service->private_data->service_type_prefix; |
|
625 |
} |
|
626 |
switch (lasso_idwsf2_data_service_get_request_type(service)) { |
|
627 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_QUERY: |
|
628 |
query_response = lasso_idwsf2_dstref_query_response_new(); |
|
629 |
if (service_type) { |
|
630 |
lasso_idwsf2_data_service_set_dst_service_type(query_response, |
|
631 |
service_type, prefix); |
|
632 |
} |
|
633 |
response = (LassoNode*)query_response; |
|
634 |
break; |
|
635 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_MODIFY: |
|
636 |
modify_response = lasso_idwsf2_dstref_modify_response_new(); |
|
637 |
if (service_type) { |
|
638 |
lasso_idwsf2_data_service_set_dst_service_type(modify_response, |
|
639 |
service_type, prefix); |
|
640 |
} |
|
641 |
response = (LassoNode*)modify_response; |
|
642 |
break; |
|
643 |
default: |
|
644 |
lasso_idwsf2_data_service_set_status_code(service, |
|
645 |
LASSO_DST2_STATUS_CODE1_FAILED, "InvalidRequest"); |
|
646 |
return LASSO_PROFILE_ERROR_INVALID_REQUEST; |
|
647 |
} |
|
648 |
if (response) { |
|
649 |
LassoSoapEnvelope *envelope = |
|
650 |
lasso_idwsf2_profile_get_soap_envelope_response(&service->parent); |
|
651 |
lasso_assign_new_gobject(service->parent.parent.response, response); |
|
652 |
lasso_soap_envelope_add_to_body(envelope, response); |
|
653 |
lasso_idwsf2_data_service_set_status_code(service, LASSO_DST2_STATUS_CODE1_OK, NULL); |
|
654 |
} |
|
655 |
cleanup: |
|
656 |
return rc; |
|
657 |
} |
|
658 | ||
659 |
/** |
|
660 |
* lasso_idwsf2_data_service_set_status_code: |
|
661 |
* @service: a #LassoIdWsf2DataService |
|
662 |
* @status_code: a first level status code |
|
663 |
* @status_code2: a second level status code |
|
664 |
* |
|
665 |
* Set the status code for the current response, if no response exists, it starts one using |
|
666 |
* lasso_idwsf2_data_service_validate_request(), if it fails, report a SOAP Fault. |
|
667 |
*/ |
|
668 |
gint |
|
669 |
lasso_idwsf2_data_service_set_status_code(LassoIdWsf2DataService *service, |
|
670 |
const char *status_code, const char *status_code2) |
|
671 |
{ |
|
672 |
LassoNode *response; |
|
673 |
LassoIdWsf2UtilStatus **status = NULL; |
|
674 |
LassoIdWsf2UtilStatus *new_status = NULL; |
|
675 |
int rc = 0; |
|
676 | ||
677 | ||
678 |
response = service->parent.parent.response; |
|
679 |
if (LASSO_IS_IDWSF2_UTIL_RESPONSE(response)) { |
|
680 |
switch (lasso_idwsf2_data_service_get_request_type(service)) { |
|
681 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_QUERY: |
|
682 |
status = &LASSO_IDWSF2_UTIL_RESPONSE(response)->Status; |
|
683 |
break; |
|
684 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_MODIFY: |
|
685 |
status = &LASSO_IDWSF2_UTIL_RESPONSE(response)->Status; |
|
686 |
break; |
|
687 |
default: |
|
688 |
break; |
|
689 |
} |
|
690 |
} |
|
691 | ||
692 |
new_status = lasso_idwsf2_util_status_new_with_code(status_code, status_code2); |
|
693 | ||
694 |
if (! LASSO_IS_IDWSF2_UTIL_RESPONSE(response) || ! status) { |
|
695 |
GList details = { .data = new_status, .next = NULL, .prev = NULL }; |
|
696 | ||
697 |
lasso_check_good_rc(lasso_idwsf2_profile_init_soap_fault_response(&service->parent, |
|
698 |
LASSO_SOAP_FAULT_CODE_CLIENT, "Unknown Request Type", |
|
699 |
&details)); |
|
700 |
} else { |
|
701 |
lasso_assign_gobject(*status, new_status); |
|
702 |
} |
|
703 |
cleanup: |
|
704 |
lasso_release_gobject(new_status); |
|
705 |
return rc; |
|
706 |
} |
|
707 | ||
708 |
/** |
|
709 |
* lasso_idwsf2_data_service_set_query_item_result: |
|
710 |
* @service: a #LassoIdWsf2DataService object |
|
711 |
* @item_id:(allow-none): target a certain QueryItem if NULL, means there is only one query item |
|
712 |
* @xml_data:(allow-none): the data to add |
|
713 |
* @add:(allow-none)(default FALSE): add data to existing datas |
|
714 |
* |
|
715 |
* Set result data for a certain query-item. |
|
716 |
*/ |
|
717 |
gint |
|
718 |
lasso_idwsf2_data_service_set_query_item_result(LassoIdWsf2DataService *service, |
|
719 |
const char *item_id, xmlNode *xml_data, gboolean add) |
|
720 |
{ |
|
721 |
LassoIdWsf2DstRefQueryItem *item; |
|
722 |
LassoIdWsf2DstRefData *data; |
|
723 |
int rc = 0; |
|
724 | ||
725 |
if (lasso_idwsf2_data_service_get_request_type(service) |
|
726 |
!= LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_QUERY) { |
|
727 |
goto_cleanup_with_rc(LASSO_IDWSF2_DST_ERROR_ITEM_NOT_FOUND); |
|
728 |
} |
|
729 |
lasso_bad_param(IDWSF2_DATA_SERVICE, service); |
|
730 |
item = (LassoIdWsf2DstRefQueryItem*)lasso_idwsf2_data_service_get_item(service, item_id); |
|
731 |
if (! LASSO_IS_IDWSF2_DSTREF_QUERY_ITEM(item)) { |
|
732 |
goto_cleanup_with_rc(LASSO_IDWSF2_DST_ERROR_ITEM_NOT_FOUND); |
|
733 |
} |
|
734 |
data = lasso_idwsf2_data_service_get_query_item_result(service, item_id); |
|
735 |
if (data == NULL) { |
|
736 |
data = lasso_idwsf2_dstref_data_new(); |
|
737 |
} |
|
738 |
if (xml_data) { |
|
739 |
if (! add) { |
|
740 |
lasso_release_list_of_xml_node(data->parent.parent.any); |
|
741 |
} |
|
742 |
lasso_list_add_xml_node(data->parent.parent.any, xml_data); |
|
743 |
} |
|
744 |
if (item_id) { |
|
745 |
lasso_assign_string(data->parent.itemIDRef, item_id); |
|
746 |
} |
|
747 |
if (g_list_find(service->private_data->query_datas, data) == NULL) { |
|
748 |
lasso_list_add_gobject(service->private_data->query_datas, data); |
|
749 |
} |
|
750 |
cleanup: |
|
751 |
return rc; |
|
752 |
} |
|
753 | ||
754 |
/** |
|
755 |
* lasso_idwsf2_data_service_build_response_msg: |
|
756 |
* @service: a #LassoIdWsf2DataService object |
|
757 |
* |
|
758 |
* Build the response message corresponding to the current request. |
|
759 |
* |
|
760 |
* Return value: 0 if successfull, an error code otherwise. |
|
761 |
*/ |
|
762 |
gint |
|
763 |
lasso_idwsf2_data_service_build_response_msg(LassoIdWsf2DataService *service) |
|
764 |
{ |
|
765 |
LassoIdWsf2DstRefQueryResponse *query_response; |
|
766 |
GList *datas; |
|
767 |
int rc = 0; |
|
768 | ||
769 |
lasso_bad_param(IDWSF2_DATA_SERVICE, service); |
|
770 |
if (! LASSO_IS_SOAP_FAULT(service->parent.parent.response)) { |
|
771 |
switch (lasso_idwsf2_data_service_get_request_type(service)) { |
|
772 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_QUERY: |
|
773 |
goto_cleanup_if_fail_with_rc( |
|
774 |
LASSO_IS_IDWSF2_DSTREF_QUERY_RESPONSE( |
|
775 |
service->parent.parent.response), |
|
776 |
LASSO_PROFILE_ERROR_INVALID_RESPONSE); |
|
777 |
query_response = (LassoIdWsf2DstRefQueryResponse*)service->parent.parent.response; |
|
778 |
datas = lasso_idwsf2_data_service_get_query_item_results(service); |
|
779 |
lasso_assign_list_of_gobjects(query_response->Data, datas); |
|
780 |
break; |
|
781 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_MODIFY: |
|
782 |
goto_cleanup_with_rc(LASSO_ERROR_UNIMPLEMENTED); |
|
783 |
break; |
|
784 |
default: |
|
785 |
break; |
|
786 |
} |
|
787 |
} |
|
788 |
rc = lasso_idwsf2_profile_build_response_msg(&service->parent); |
|
789 |
cleanup: |
|
790 |
return rc; |
|
791 |
} |
|
792 | ||
793 |
static gint |
|
794 |
_lasso_idwsf2_data_service_process_query_response(LassoIdWsf2DataService * service, |
|
795 |
LassoIdWsf2DstRefQueryResponse *response) |
|
796 |
{ |
|
797 |
int rc = 0; |
|
798 | ||
799 |
goto_cleanup_if_fail_with_rc(LASSO_IS_IDWSF2_DSTREF_QUERY_RESPONSE(response), |
|
800 |
LASSO_PROFILE_ERROR_INVALID_RESPONSE); |
|
801 | ||
802 |
if (service->private_data) { |
|
803 |
lasso_assign_list_of_gobjects(service->private_data->query_datas, response->Data); |
|
804 |
} |
|
805 |
cleanup: |
|
806 |
return rc; |
|
807 |
} |
|
808 | ||
809 |
/** |
|
810 |
* lasso_idwsf2_data_service_process_response_msg: |
|
811 |
* @service: a #LassoIdWsf2DataService object |
|
812 |
* @msg: (allow-none): the message content |
|
813 |
* |
|
814 |
* Process a received SOAP message response. |
|
815 |
* |
|
816 |
* Return value: 0 if successful, an error code otherwise. |
|
817 |
*/ |
|
818 |
gint |
|
819 |
lasso_idwsf2_data_service_process_response_msg( |
|
820 |
LassoIdWsf2DataService *service, const char *msg) |
|
821 |
{ |
|
822 |
LassoIdWsf2DstRefQueryResponse *query_response; |
|
823 |
LassoIdWsf2UtilStatus *status; |
|
824 |
int rc = 0; |
|
825 | ||
826 |
lasso_bad_param(IDWSF2_DATA_SERVICE, service); |
|
827 | ||
828 |
lasso_check_good_rc(lasso_idwsf2_profile_process_response_msg(&service->parent, msg)); |
|
829 | ||
830 |
status = lasso_idwsf2_data_service_get_response_status(service); |
|
831 | ||
832 |
if (! status || ! status->code) { |
|
833 |
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_MISSING_STATUS_CODE); |
|
834 |
} |
|
835 |
if (lasso_strisequal(status->code,LASSO_DST2_STATUS_CODE1_FAILED)) { |
|
836 |
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_STATUS_NOT_SUCCESS); |
|
837 |
} |
|
838 |
if (lasso_strisequal(status->code,LASSO_DST2_STATUS_CODE1_PARTIAL)) { |
|
839 |
rc = LASSO_IDWSF2_DST_ERROR_PARTIAL_FAILURE; |
|
840 |
} |
|
841 |
if (lasso_strisnotequal(status->code,LASSO_DST2_STATUS_CODE1_OK)) { |
|
842 |
rc = LASSO_IDWSF2_DST_ERROR_UNKNOWN_STATUS_CODE; |
|
843 |
} |
|
844 | ||
845 |
switch (lasso_idwsf2_data_service_get_request_type(service)) { |
|
846 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_QUERY: |
|
847 |
query_response = (LassoIdWsf2DstRefQueryResponse*)service->parent.parent.response; |
|
848 |
lasso_check_good_rc(_lasso_idwsf2_data_service_process_query_response(service, query_response)); |
|
849 |
break; |
|
850 |
case LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_MODIFY: |
|
851 |
rc = LASSO_ERROR_UNIMPLEMENTED; |
|
852 |
break; |
|
853 |
default: |
|
854 |
rc = LASSO_ERROR_UNDEFINED; |
|
855 |
break; |
|
856 |
} |
|
857 | ||
858 |
cleanup: |
|
859 |
return rc; |
|
860 |
} |
|
861 | ||
862 |
/** |
|
863 |
* lasso_idwsf2_data_service_get_response_status: |
|
864 |
* @service: a #LassoIdWsf2UtilStatus object |
|
865 |
* |
|
866 |
* Return the status from the current response. |
|
867 |
* |
|
868 |
* Return value:(transfer none)(allow-none): a #LassoIdWsf2UtilStatus object, or NULL. |
|
869 |
*/ |
|
870 |
LassoIdWsf2UtilStatus* |
|
871 |
lasso_idwsf2_data_service_get_response_status(LassoIdWsf2DataService *service) |
|
872 |
{ |
|
873 |
LassoIdWsf2UtilResponse *response; |
|
874 |
LassoSoapFault *fault; |
|
875 | ||
876 |
response = (void*)(fault = (void*)service->parent.parent.response); |
|
877 |
if (LASSO_IS_IDWSF2_UTIL_RESPONSE(response)) { |
|
878 |
return response->Status; |
|
879 |
} |
|
880 |
if (LASSO_IS_SOAP_FAULT(fault)) { |
|
881 |
if (LASSO_IS_SOAP_DETAIL(fault->Detail) && fault->Detail->any |
|
882 |
&& LASSO_IS_IDWSF2_UTIL_STATUS(fault->Detail->any->data)) { |
|
883 |
return (LassoIdWsf2UtilStatus*)fault->Detail->any->data; |
|
884 |
} |
|
885 |
} |
|
886 |
return NULL; |
|
887 |
} |
|
888 | ||
889 |
/** |
|
890 |
* lasso_idwsf2_data_service_get_query_item_result: |
|
891 |
* @service: a #LassoIdWsf2DataService object |
|
892 |
* @item_id:(allow-none): an item_id or NULL if only one data is present |
|
893 |
* |
|
894 |
* Return value:(allow-none)(transfer none): a #LassoIdWsf2DstRefData or NULL if none is found. |
|
895 |
*/ |
|
896 |
LassoIdWsf2DstRefData* |
|
897 |
lasso_idwsf2_data_service_get_query_item_result(LassoIdWsf2DataService *service, |
|
898 |
const char *item_id) |
|
899 |
{ |
|
900 |
GList *i; |
|
901 | ||
902 |
if (! LASSO_IS_IDWSF2_DATA_SERVICE(service)) |
|
903 |
return NULL; |
|
904 |
if (! item_id) { |
|
905 |
if (g_list_length(service->private_data->query_datas) == 1) { |
|
906 |
return (LassoIdWsf2DstRefData*)service->private_data->query_datas->data; |
|
907 |
} |
|
908 |
return NULL; |
|
909 |
} |
|
910 |
lasso_foreach(i, service->private_data->query_datas) { |
|
911 |
LassoIdWsf2DstRefData *data = (LassoIdWsf2DstRefData*)i->data; |
|
912 |
if (lasso_strisequal(data->parent.itemIDRef,item_id)) { |
|
913 |
return data; |
|
914 |
} |
|
915 |
} |
|
916 |
return NULL; |
|
917 |
} |
|
918 | ||
919 |
/** |
|
920 |
* lasso_idwsf2_data_service_get_query_item_result_content: |
|
921 |
* @service: a #LassoIdWsf2DataService object |
|
922 |
* @item_id:(allow-none): the identifier of the result asked, if NULL and there is only one respone, |
|
923 |
* returns it. |
|
924 |
* |
|
925 |
* Returns the text content of the query item result identified by @item_id or the only query item |
|
926 |
* result if @item_id is NULL. |
|
927 |
* <para>If @item_id is NULL and there is multiple results, returns NULL.</para> |
|
928 |
* |
|
929 |
* Return value:(transfer full): the text content of the query item result. |
|
930 |
*/ |
|
931 |
char* |
|
932 |
lasso_idwsf2_data_service_get_query_item_result_content(LassoIdWsf2DataService *service, |
|
933 |
const char *item_id) |
|
934 |
{ |
|
935 |
LassoIdWsf2DstRefData *data = NULL; |
|
936 |
LassoIdWsf2DstRefAppData *app_data = NULL; |
|
937 |
GList *i = NULL; |
|
938 |
GString *gstr = NULL; |
|
939 |
char *result = NULL; |
|
940 | ||
941 |
data = lasso_idwsf2_data_service_get_query_item_result(service, item_id); |
|
942 |
if (! data) |
|
943 |
return NULL; |
|
944 |
app_data = (LassoIdWsf2DstRefAppData*)data; |
|
945 |
gstr = g_string_sized_new(128); |
|
946 |
lasso_foreach(i, app_data->any) { |
|
947 |
xmlNode *node = (xmlNode*)i->data; |
|
948 |
xmlChar *content; |
|
949 |
content = xmlNodeGetContent(node); |
|
950 |
g_string_append(gstr, (char*)content); |
|
951 |
xmlFree(content); |
|
952 |
} |
|
953 |
result = gstr->str; |
|
954 |
lasso_release_gstring(gstr, FALSE); |
|
955 |
return result; |
|
956 |
} |
|
957 | ||
958 |
/** |
|
959 |
* lasso_idwsf2_data_service_get_query_item_results: |
|
960 |
* @service: a #LassoIdWsf2DataService object |
|
961 |
* |
|
962 |
* Return value:(allow-none)(transfer none)(element-type LassoIdWsf2DstRefData): the list of |
|
963 |
* #LassoIdWsf2DstRefData or NULL if none is found. |
|
964 |
*/ |
|
965 |
GList* |
|
966 |
lasso_idwsf2_data_service_get_query_item_results(LassoIdWsf2DataService *service) |
|
967 |
{ |
|
968 | ||
969 |
if (LASSO_IS_IDWSF2_DATA_SERVICE(service) && service->private_data) { |
|
970 |
return service->private_data->query_datas; |
|
971 |
} |
|
972 |
return NULL; |
|
973 |
} |
|
974 | ||
975 |
static LassoNodeClass *parent_class = NULL; |
|
976 | ||
977 |
static void |
|
978 |
dispose(GObject *object) |
|
979 |
{ |
|
980 |
LassoIdWsf2DataService *service = LASSO_IDWSF2_DATA_SERVICE(object); |
|
981 |
LassoIdWsf2DataServicePrivate *pdata = service->private_data; |
|
982 | ||
983 |
if (!pdata || pdata->dispose_has_run == TRUE) |
|
984 |
return; |
|
985 |
pdata->dispose_has_run = TRUE; |
|
986 | ||
987 |
lasso_idwsf2_data_service_clean_private_data(service); |
|
988 |
G_OBJECT_CLASS(parent_class)->dispose(object); |
|
989 |
} |
|
990 | ||
991 |
static void |
|
992 |
finalize(GObject *object) |
|
993 |
{ |
|
994 |
LassoIdWsf2DataService *service = LASSO_IDWSF2_DATA_SERVICE(object); |
|
995 |
lasso_release(service->private_data); |
|
996 |
service->private_data = NULL; |
|
997 |
G_OBJECT_CLASS(parent_class)->finalize(object); |
|
998 |
} |
|
999 | ||
1000 |
static void |
|
1001 |
instance_init(LassoIdWsf2DataService *service) |
|
1002 |
{ |
|
1003 |
service->private_data = g_new0(LassoIdWsf2DataServicePrivate, 1); |
|
1004 |
service->private_data->namespaces = g_hash_table_new_full(g_str_hash, g_str_equal, |
|
1005 |
(GDestroyNotify)g_free, (GDestroyNotify)g_free); |
|
1006 |
} |
|
1007 | ||
1008 |
static void |
|
1009 |
class_init(LassoIdWsf2DataServiceClass *klass, void *unused G_GNUC_UNUSED) |
|
1010 |
{ |
|
1011 |
parent_class = g_type_class_peek_parent(klass); |
|
1012 | ||
1013 |
lasso_node_class_set_nodename(LASSO_NODE_CLASS(klass), "IdWsf2DataService"); |
|
1014 |
lasso_node_class_set_ns(LASSO_NODE_CLASS(klass), LASSO_LASSO_HREF, LASSO_LASSO_PREFIX); |
|
1015 |
G_OBJECT_CLASS(klass)->dispose = dispose; |
|
1016 |
G_OBJECT_CLASS(klass)->finalize = finalize; |
|
1017 |
} |
|
1018 | ||
1019 |
GType |
|
1020 |
lasso_idwsf2_data_service_get_type() |
|
1021 |
{ |
|
1022 |
static GType this_type = 0; |
|
1023 | ||
1024 |
if (!this_type) { |
|
1025 |
static const GTypeInfo this_info = { |
|
1026 |
sizeof(LassoIdWsf2DataServiceClass), |
|
1027 |
NULL, |
|
1028 |
NULL, |
|
1029 |
(GClassInitFunc) class_init, |
|
1030 |
NULL, |
|
1031 |
NULL, |
|
1032 |
sizeof(LassoIdWsf2DataService), |
|
1033 |
0, |
|
1034 |
(GInstanceInitFunc) instance_init, |
|
1035 |
NULL |
|
1036 |
}; |
|
1037 | ||
1038 |
this_type = g_type_register_static(LASSO_TYPE_IDWSF2_PROFILE, |
|
1039 |
"LassoIdWsf2DataService", &this_info, 0); |
|
1040 |
} |
|
1041 |
return this_type; |
|
1042 |
} |
|
1043 | ||
1044 | ||
1045 |
/** |
|
1046 |
* lasso_idwsf2_data_service_new: |
|
1047 |
* @server:(allow-none): a #LassoServer object, for resolving ProviderIDs |
|
1048 |
* |
|
1049 |
* Create a new #LassoIdWsf2DataService. |
|
1050 |
* |
|
1051 |
* Return value: a newly created #LassoIdWsf2DataService object |
|
1052 |
**/ |
|
1053 |
LassoIdWsf2DataService* |
|
1054 |
lasso_idwsf2_data_service_new(LassoServer *server) |
|
1055 |
{ |
|
1056 |
LassoIdWsf2DataService *service; |
|
1057 | ||
1058 |
service = g_object_new(LASSO_TYPE_IDWSF2_DATA_SERVICE, NULL); |
|
1059 |
service->parent.parent.server = lasso_ref(server); |
|
1060 | ||
1061 |
return service; |
|
1062 |
} |
lasso/id-wsf-2.0/data_service.h | ||
---|---|---|
1 |
/* $Id: idwsf2_data_service.h 2736 2007-05-30 17:59:38Z dlaniel $ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#ifndef __LASSO_IDWSF2_DATA_SERVICE_H__ |
|
25 |
#define __LASSO_IDWSF2_DATA_SERVICE_H__ |
|
26 | ||
27 |
#ifdef __cplusplus |
|
28 |
extern "C" { |
|
29 | ||
30 |
#endif /* __cplusplus */ |
|
31 | ||
32 |
#include "profile.h" |
|
33 |
#include "../xml/xml.h" |
|
34 |
#include "../xml/id-wsf-2.0/dstref_query_item.h" |
|
35 |
#include "../xml/id-wsf-2.0/util_status.h" |
|
36 |
#include "../xml/id-wsf-2.0/dstref_data.h" |
|
37 |
#include "../xml/ws/wsa_endpoint_reference.h" |
|
38 | ||
39 | ||
40 |
#define LASSO_TYPE_IDWSF2_DATA_SERVICE (lasso_idwsf2_data_service_get_type()) |
|
41 |
#define LASSO_IDWSF2_DATA_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \ |
|
42 |
LASSO_TYPE_IDWSF2_DATA_SERVICE, LassoIdWsf2DataService)) |
|
43 |
#define LASSO_IDWSF2_DATA_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), \ |
|
44 |
LASSO_TYPE_IDWSF2_DATA_SERVICE, LassoIdWsf2DataServiceClass)) |
|
45 |
#define LASSO_IS_IDWSF2_DATA_SERVICE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ |
|
46 |
LASSO_TYPE_IDWSF2_DATA_SERVICE)) |
|
47 |
#define LASSO_IS_IDWSF2_DATA_SERVICE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ |
|
48 |
LASSO_TYPE_IDWSF2_DATA_SERVICE)) |
|
49 |
#define LASSO_IDWSF2_DATA_SERVICE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), \ |
|
50 |
LASSO_TYPE_IDWSF2_DATA_SERVICE, LassoIdWsf2DataServiceClass)) |
|
51 | ||
52 |
typedef struct _LassoIdWsf2DataService LassoIdWsf2DataService; |
|
53 |
typedef struct _LassoIdWsf2DataServiceClass LassoIdWsf2DataServiceClass; |
|
54 |
typedef struct _LassoIdWsf2DataServicePrivate LassoIdWsf2DataServicePrivate; |
|
55 | ||
56 |
struct _LassoIdWsf2DataService { |
|
57 |
LassoIdWsf2Profile parent; |
|
58 | ||
59 |
/*< private >*/ |
|
60 |
LassoIdWsf2DataServicePrivate *private_data; |
|
61 |
}; |
|
62 | ||
63 |
struct _LassoIdWsf2DataServiceClass { |
|
64 |
LassoIdWsf2ProfileClass parent; |
|
65 |
}; |
|
66 | ||
67 |
typedef enum { |
|
68 |
LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_UNKNOWN, |
|
69 |
LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_QUERY, |
|
70 |
LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_MODIFY, |
|
71 |
LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_CREATE, |
|
72 |
LASSO_IDWSF2_DATA_SERVICE_REQUEST_TYPE_DELETE |
|
73 |
} LassoIdWsf2DataServiceRequestType; |
|
74 | ||
75 |
LASSO_EXPORT GType lasso_idwsf2_data_service_get_type(void); |
|
76 | ||
77 |
/* Service initialization */ |
|
78 |
LASSO_EXPORT LassoIdWsf2DataService* lasso_idwsf2_data_service_new(LassoServer *server); |
|
79 | ||
80 |
/* Request initialization */ |
|
81 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_init_query(LassoIdWsf2DataService *service); |
|
82 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_init_modify(LassoIdWsf2DataService *service); |
|
83 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_init_create(LassoIdWsf2DataService *service); |
|
84 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_init_delete(LassoIdWsf2DataService *service); |
|
85 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_set_service_type(LassoIdWsf2DataService *service, |
|
86 |
const char *prefix, const char *service_type); |
|
87 |
LASSO_EXPORT const char* lasso_idwsf2_data_service_get_service_type( |
|
88 |
LassoIdWsf2DataService *service); |
|
89 |
LASSO_EXPORT const char* lasso_idwsf2_data_service_get_service_type_prefix( |
|
90 |
LassoIdWsf2DataService *service); |
|
91 | ||
92 |
/* Manipulate request */ |
|
93 |
LASSO_EXPORT LassoIdWsf2DataServiceRequestType lasso_idwsf2_data_service_get_request_type( |
|
94 |
LassoIdWsf2DataService *service); |
|
95 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_add_query_item( |
|
96 |
LassoIdWsf2DataService *service, const gchar *item_query, const gchar *item_id); |
|
97 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_add_modify_item(LassoIdWsf2DataService *service, |
|
98 |
const gchar *item_query, xmlNode *new_data, gboolean overrideAllowed, |
|
99 |
const gchar *item_id); |
|
100 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_add_namespace(LassoIdWsf2DataService *data_service, |
|
101 |
const char *prefix, const char *href); |
|
102 | ||
103 |
/* Produce request */ |
|
104 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_build_request_msg(LassoIdWsf2DataService *service, |
|
105 |
const char *security_mech_id); |
|
106 | ||
107 |
/* Handle request */ |
|
108 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_process_request_msg(LassoIdWsf2DataService *service, |
|
109 |
const char *msg); |
|
110 |
LASSO_EXPORT GList *lasso_idwsf2_data_service_get_item_ids(LassoIdWsf2DataService *data_service); |
|
111 |
LASSO_EXPORT GList *lasso_idwsf2_data_service_get_items(LassoIdWsf2DataService *data_service); |
|
112 |
LASSO_EXPORT LassoNode* lasso_idwsf2_data_service_get_item(LassoIdWsf2DataService *data_service, |
|
113 |
const char *item_id); |
|
114 | ||
115 |
/* Reponse initialization */ |
|
116 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_validate_request(LassoIdWsf2DataService *service); |
|
117 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_set_status_code(LassoIdWsf2DataService *service, |
|
118 |
const char *status_code, const char *status_code2); |
|
119 | ||
120 |
/* Manipulate response */ |
|
121 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_set_query_item_result( |
|
122 |
LassoIdWsf2DataService *data_service, const char *item_id, xmlNode *xml_data, |
|
123 |
gboolean add); |
|
124 | ||
125 |
/* Produce response */ |
|
126 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_build_response_msg(LassoIdWsf2DataService *service); |
|
127 | ||
128 |
/* Handle response */ |
|
129 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_data_service_process_response_msg( |
|
130 |
LassoIdWsf2DataService *service, const char *msg); |
|
131 |
LASSO_EXPORT LassoIdWsf2UtilStatus *lasso_idwsf2_data_service_get_response_status( |
|
132 |
LassoIdWsf2DataService *service); |
|
133 |
LASSO_EXPORT LassoIdWsf2DstRefData* lasso_idwsf2_data_service_get_query_item_result( |
|
134 |
LassoIdWsf2DataService *service, const char *item_id); |
|
135 |
LASSO_EXPORT char* lasso_idwsf2_data_service_get_query_item_result_content( |
|
136 |
LassoIdWsf2DataService *service, const char *item_id); |
|
137 |
LASSO_EXPORT GList* lasso_idwsf2_data_service_get_query_item_results( |
|
138 |
LassoIdWsf2DataService *service); |
|
139 | ||
140 |
#ifdef __cplusplus |
|
141 |
} |
|
142 |
#endif /* __cplusplus */ |
|
143 | ||
144 |
#endif /* __LASSO_IDWSF2_DATA_SERVICE_H__ */ |
|
145 |
lasso/id-wsf-2.0/discovery.c | ||
---|---|---|
1 |
/* $Id: discovery.c,v 1.75 2007/01/03 23:35:17 Exp $ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
/** |
|
25 |
* SECTION:idwsf2_discovery |
|
26 |
* @short_description: ID-WSF 2.0 Discovery Service profile |
|
27 |
* |
|
28 |
* The Discovery service usually runs on the principal identity provider and |
|
29 |
* knowns about resources and services related to the principal. Attribute |
|
30 |
* providers can register themselves as offering resources for an user while |
|
31 |
* other services can ask where to find a given resource. |
|
32 |
*/ |
|
33 | ||
34 |
#include "../xml/private.h" |
|
35 |
#include <libxml/xpath.h> |
|
36 |
#include <libxml/xpathInternals.h> |
|
37 | ||
38 |
#include <xmlsec/xmltree.h> |
|
39 | ||
40 |
#include "../saml-2.0/saml2_helper.h" |
|
41 | ||
42 |
#include "../xml/saml_attribute_value.h" |
|
43 |
#include "../xml/xml_enc.h" |
|
44 | ||
45 |
#include "../xml/soap-1.1/soap_fault.h" |
|
46 | ||
47 |
#include "../xml/saml-2.0/saml2_assertion.h" |
|
48 |
#include "../xml/saml-2.0/samlp2_name_id_policy.h" |
|
49 | ||
50 |
#include "../xml/id-wsf-2.0/disco_query.h" |
|
51 |
#include "../xml/id-wsf-2.0/disco_query_response.h" |
|
52 |
#include "../xml/id-wsf-2.0/disco_svc_md_query.h" |
|
53 |
#include "../xml/id-wsf-2.0/disco_svc_md_query_response.h" |
|
54 |
#include "../xml/id-wsf-2.0/disco_svc_md_register.h" |
|
55 |
#include "../xml/id-wsf-2.0/disco_svc_md_register_response.h" |
|
56 |
#include "../xml/id-wsf-2.0/disco_svc_md_replace.h" |
|
57 |
#include "../xml/id-wsf-2.0/disco_svc_md_replace_response.h" |
|
58 |
#include "../xml/id-wsf-2.0/disco_svc_md_delete.h" |
|
59 |
#include "../xml/id-wsf-2.0/disco_svc_md_delete_response.h" |
|
60 |
#include "../xml/id-wsf-2.0/disco_svc_md_association_query.h" |
|
61 |
#include "../xml/id-wsf-2.0/disco_svc_md_association_query_response.h" |
|
62 |
#include "../xml/id-wsf-2.0/disco_svc_md_association_add.h" |
|
63 |
#include "../xml/id-wsf-2.0/disco_svc_md_association_add_response.h" |
|
64 |
#include "../xml/id-wsf-2.0/disco_svc_md_association_delete.h" |
|
65 |
#include "../xml/id-wsf-2.0/disco_svc_md_association_delete_response.h" |
|
66 |
#include "../xml/id-wsf-2.0/disco_requested_service.h" |
|
67 |
#include "../xml/id-wsf-2.0/disco_abstract.h" |
|
68 |
#include "../xml/id-wsf-2.0/disco_provider_id.h" |
|
69 |
#include "../xml/id-wsf-2.0/disco_service_type.h" |
|
70 |
#include "../xml/id-wsf-2.0/disco_security_context.h" |
|
71 |
#include "../xml/id-wsf-2.0/disco_service_context.h" |
|
72 |
#include "../xml/id-wsf-2.0/disco_endpoint_context.h" |
|
73 |
#include "../xml/id-wsf-2.0/disco_options.h" |
|
74 |
#include "../xml/id-wsf-2.0/sec_token.h" |
|
75 |
#include "../xml/id-wsf-2.0/util_status.h" |
|
76 |
#include "../xml/id-wsf-2.0/sbf_framework.h" |
|
77 | ||
78 |
#include "../xml/ws/wsa_endpoint_reference.h" |
|
79 | ||
80 |
#include "../id-ff/server.h" |
|
81 |
#include "../id-ff/provider.h" |
|
82 |
#include "../id-ff/providerprivate.h" |
|
83 | ||
84 |
#include "discovery.h" |
|
85 |
#include "../xml/id-wsf-2.0/idwsf2_strings.h" |
|
86 |
#include "soap_binding.h" |
|
87 |
#include "idwsf2_helper.h" |
|
88 |
#include "saml2_login.h" |
|
89 |
#include "../utils.h" |
|
90 | ||
91 |
struct _LassoIdWsf2DiscoveryPrivate |
|
92 |
{ |
|
93 |
gboolean dispose_has_run; |
|
94 |
GList *metadatas; /* of LassoIdWsf2DiscoSvcMetadata* */ |
|
95 |
GList *requested_services; /* of LassoIdWsf2DiscoRequestedService */ |
|
96 |
GList *svcmdids; /* of utf8 */ |
|
97 |
}; |
|
98 | ||
99 |
#define LASSO_IDWSF2_DISCOVERY_ELEMENT_METADATAS "Metadatas" |
|
100 |
#define LASSO_IDWSF2_DISCOVERY_ELEMENT_REQUESTED_SERVICES "RequestedServices" |
|
101 |
#define LASSO_IDWSF2_DISCOVERY_ELEMENT_REQUESTED_SERVICES "RequestedServices" |
|
102 | ||
103 | ||
104 |
static int |
|
105 |
lasso_idwsf2_discovery_add_identity_to_epr(LassoIdWsf2Discovery *discovery, |
|
106 |
LassoWsAddrEndpointReference *epr, |
|
107 |
const char *provider_id, |
|
108 |
const char *security_mechanism) |
|
109 |
{ |
|
110 |
LassoIdentity *identity = discovery->parent.parent.identity; |
|
111 |
LassoFederation *federation = NULL; |
|
112 |
LassoSaml2Assertion *assertion; |
|
113 |
LassoProvider *provider = NULL; |
|
114 |
GList security_mechanisms = { .data = (char*)security_mechanism, .next = NULL, .prev = NULL }; |
|
115 | ||
116 |
if (! LASSO_IS_IDENTITY(identity)) |
|
117 |
return LASSO_PROFILE_ERROR_IDENTITY_NOT_FOUND; |
|
118 | ||
119 |
federation = lasso_identity_get_federation(identity, provider_id); |
|
120 |
if (federation == NULL || ! LASSO_IS_SAML2_NAME_ID(federation->local_nameIdentifier)) |
|
121 |
return LASSO_PROFILE_ERROR_IDENTITY_NOT_FOUND; |
|
122 |
provider = lasso_server_get_provider(discovery->parent.parent.server, provider_id); |
|
123 |
if (! provider) { |
|
124 |
return LASSO_SERVER_ERROR_PROVIDER_NOT_FOUND; |
|
125 |
} |
|
126 | ||
127 |
assertion = |
|
128 |
lasso_server_create_assertion_as_idwsf2_security_token(discovery->parent.parent.server, |
|
129 |
LASSO_SAML2_NAME_ID(federation->local_nameIdentifier), |
|
130 |
LASSO_DURATION_HOUR, 2 * LASSO_DURATION_DAY, provider ? TRUE : |
|
131 |
FALSE, provider); |
|
132 | ||
133 |
if (assertion == NULL ) { |
|
134 |
return LASSO_ERROR_UNDEFINED; |
|
135 |
} |
|
136 | ||
137 |
return lasso_wsa_endpoint_reference_add_security_token(epr, |
|
138 |
(LassoNode*)assertion, &security_mechanisms); |
|
139 |
} |
|
140 | ||
141 | ||
142 | ||
143 |
static LassoWsAddrEndpointReference* |
|
144 |
lasso_idwsf2_discovery_build_epr(LassoIdWsf2Discovery *discovery, |
|
145 |
LassoIdWsf2DiscoSvcMetadata *svc_metadata, |
|
146 |
LassoIdWsf2DiscoServiceContext *service_context, |
|
147 |
LassoIdWsf2DiscoEndpointContext *endpoint_context) |
|
148 |
{ |
|
149 |
LassoIdentity *identity; |
|
150 |
LassoWsAddrEndpointReference *epr = NULL; |
|
151 |
LassoWsAddrMetadata *metadata = NULL; |
|
152 |
LassoIdWsf2DiscoAbstract *abstract; |
|
153 |
LassoIdWsf2DiscoProviderID *provider_id; |
|
154 |
LassoIdWsf2DiscoServiceType *service_type; |
|
155 |
LassoProvider *provider = NULL; |
|
156 |
GList *i; |
|
157 | ||
158 | ||
159 |
if (LASSO_IS_IDENTITY(discovery->parent.parent.identity)) { |
|
160 |
identity = discovery->parent.parent.identity; |
|
161 |
} |
|
162 |
epr = lasso_wsa_endpoint_reference_new(); |
|
163 |
epr->Address = lasso_wsa_attributed_uri_new_with_string( |
|
164 |
(gchar*)endpoint_context->Address->data); |
|
165 |
metadata = lasso_wsa_metadata_new(); |
|
166 |
epr->Metadata = metadata; |
|
167 |
/* Abstract */ |
|
168 |
if (svc_metadata->Abstract) { |
|
169 |
abstract = lasso_idwsf2_disco_abstract_new_with_string(svc_metadata->Abstract); |
|
170 |
lasso_list_add_new_gobject(metadata->any, abstract); |
|
171 |
} |
|
172 |
/* ProviderID */ |
|
173 |
if (svc_metadata->ProviderID) { |
|
174 |
provider_id = lasso_idwsf2_disco_provider_id_new_with_string(svc_metadata->ProviderID); |
|
175 |
provider = lasso_server_get_provider(discovery->parent.parent.server, svc_metadata->ProviderID); |
|
176 |
lasso_list_add_new_gobject(metadata->any, provider_id); |
|
177 |
} |
|
178 |
/* ServiceType */ |
|
179 |
lasso_foreach(i, service_context->ServiceType) |
|
180 |
{ |
|
181 |
service_type = lasso_idwsf2_disco_service_type_new_with_string(i->data); |
|
182 |
lasso_list_add_new_gobject(metadata->any, service_type); |
|
183 |
} |
|
184 |
/* Framework */ |
|
185 |
lasso_foreach(i, endpoint_context->Framework) |
|
186 |
{ |
|
187 |
lasso_list_add_gobject(metadata->any, i->data); |
|
188 |
} |
|
189 |
/* Identity token */ |
|
190 |
lasso_foreach(i, endpoint_context->SecurityMechID) |
|
191 |
{ |
|
192 |
int rc = lasso_idwsf2_discovery_add_identity_to_epr(discovery, |
|
193 |
epr, |
|
194 |
svc_metadata->ProviderID, |
|
195 |
(char*)i->data); |
|
196 |
if (rc != 0) { |
|
197 |
message(G_LOG_LEVEL_WARNING, |
|
198 |
"%s cannot add identity token to epr: %s", __func__, lasso_strerror(rc)); |
|
199 |
lasso_release_gobject(epr); |
|
200 |
return NULL; |
|
201 |
} |
|
202 |
} |
|
203 |
return epr; |
|
204 |
} |
|
205 | ||
206 |
static gint |
|
207 |
lasso_idwsf2_discovery_status2rc(LassoIdWsf2UtilStatus *status) |
|
208 |
{ |
|
209 |
size_t i = 0; |
|
210 |
static struct { |
|
211 |
const char *code; |
|
212 |
int rc; |
|
213 |
} code2rc[] = { |
|
214 |
{ LASSO_IDWSF2_DISCOVERY_STATUS_CODE_OK, 0}, |
|
215 |
{ LASSO_IDWSF2_DISCOVERY_STATUS_CODE_FAILED, LASSO_IDWSF2_DISCOVERY_ERROR_FAILED }, |
|
216 |
{ LASSO_IDWSF2_DISCOVERY_STATUS_CODE_FORBIDDEN, LASSO_IDWSF2_DISCOVERY_ERROR_FORBIDDEN }, |
|
217 |
{ LASSO_IDWSF2_DISCOVERY_STATUS_CODE_DUPLICATE, LASSO_IDWSF2_DISCOVERY_ERROR_DUPLICATE }, |
|
218 |
{ LASSO_IDWSF2_DISCOVERY_STATUS_CODE_LOGICAL_DUPLICATE, |
|
219 |
LASSO_IDWSF2_DISCOVERY_ERROR_LOGICAL_DUPLICATE }, |
|
220 |
{ LASSO_IDWSF2_DISCOVERY_STATUS_CODE_NO_RESULTS, LASSO_IDWSF2_DISCOVERY_ERROR_NO_RESULTS }, |
|
221 |
{ LASSO_IDWSF2_DISCOVERY_STATUS_CODE_NOT_FOUND, LASSO_IDWSF2_DISCOVERY_ERROR_NOT_FOUND } |
|
222 |
}; |
|
223 |
int rc = LASSO_WSF_PROFILE_ERROR_UNKNOWN_STATUS_CODE; |
|
224 | ||
225 |
if (! LASSO_IS_IDWSF2_UTIL_STATUS(status) || ! status->code) |
|
226 |
return LASSO_PROFILE_ERROR_MISSING_STATUS_CODE; |
|
227 | ||
228 |
for (i = 0; i < G_N_ELEMENTS(code2rc); ++i) { |
|
229 |
if (lasso_strisequal(status->code,code2rc[i].code)) { |
|
230 |
rc = code2rc[i].rc; |
|
231 |
} |
|
232 |
} |
|
233 |
/* check second level if necessary */ |
|
234 |
if (status->Status && rc == LASSO_IDWSF2_DISCOVERY_ERROR_FAILED) { |
|
235 |
int rc2 = lasso_idwsf2_discovery_status2rc(status->Status->data); |
|
236 |
if (rc2 != LASSO_WSF_PROFILE_ERROR_UNKNOWN_STATUS_CODE && |
|
237 |
rc2 != LASSO_PROFILE_ERROR_MISSING_STATUS_CODE) |
|
238 |
rc = rc2; |
|
239 |
} |
|
240 |
return rc; |
|
241 |
} |
|
242 | ||
243 |
#define declare_init_request(name, request_element_type, constructor) \ |
|
244 |
gint \ |
|
245 |
lasso_idwsf2_discovery_init_##name(LassoIdWsf2Discovery *discovery) \ |
|
246 |
{ \ |
|
247 |
LassoIdWsf2Profile *idwsf2_profile = NULL; \ |
|
248 |
LassoProfile *profile = NULL; \ |
|
249 |
request_element_type *request_element = NULL; \ |
|
250 |
LassoSoapEnvelope *envelope = NULL; \ |
|
251 |
int rc = 0; \ |
|
252 |
\ |
|
253 |
lasso_bad_param(IDWSF2_DISCOVERY, discovery); \ |
|
254 |
\ |
|
255 |
lasso_release_list_of_gobjects(discovery->private_data->metadatas) \ |
|
256 |
lasso_release_list_of_gobjects(discovery->private_data->requested_services) \ |
|
257 |
idwsf2_profile = &discovery->parent; \ |
|
258 |
profile = &idwsf2_profile->parent; \ |
|
259 |
lasso_check_good_rc(lasso_idwsf2_profile_init_request(idwsf2_profile)); \ |
|
260 |
request_element = constructor(); \ |
|
261 |
envelope = lasso_idwsf2_profile_get_soap_envelope_request(idwsf2_profile); \ |
|
262 |
lasso_assign_new_gobject(profile->request, request_element); \ |
|
263 |
lasso_soap_envelope_add_to_body(envelope, (LassoNode*)request_element); \ |
|
264 |
\ |
|
265 |
cleanup: \ |
|
266 |
return rc; \ |
|
267 |
} |
|
268 | ||
269 |
/* Metadata requests */ |
|
270 | ||
271 |
/** |
|
272 |
* lasso_idwsf2_discovery_init_query |
|
273 |
* @discovery: a #LassoIdWsf2Discovery |
|
274 |
* |
|
275 |
* Initialise a request for ID-WSF discovery Query to a discovery service. |
|
276 |
* |
|
277 |
* Return value: 0 on success; or a negative value otherwise. |
|
278 |
**/ |
|
279 |
declare_init_request(query, LassoIdWsf2DiscoQuery, lasso_idwsf2_disco_query_new) |
|
280 | ||
281 |
/** |
|
282 |
* lasso_idwsf2_discovery_init_metadata_register: |
|
283 |
* @discovery: a #LassoIdWsf2Discovery object |
|
284 |
* |
|
285 |
* Initialise a ID-WSF service metadata registration request to a Discovery service. |
|
286 |
* |
|
287 |
* Return value: 0 on success; an error code otherwise. |
|
288 |
**/ |
|
289 |
declare_init_request(metadata_register, LassoIdWsf2DiscoSvcMDRegister, |
|
290 |
lasso_idwsf2_disco_svc_md_register_new); |
|
291 | ||
292 |
/** |
|
293 |
* lasso_idwsf2_discovery_init_metadata_replace: |
|
294 |
* @discovery: a #LassoIdWsf2Discovery object |
|
295 |
* |
|
296 |
* Initialise a ID-WSF service metadata replace request to a Discovery service. |
|
297 |
* |
|
298 |
* Return value: 0 on success; an error code otherwise. |
|
299 |
**/ |
|
300 |
declare_init_request(metadata_replace, LassoIdWsf2DiscoSvcMDReplace, |
|
301 |
lasso_idwsf2_disco_svc_md_replace_new); |
|
302 | ||
303 |
/** |
|
304 |
* lasso_idwsf2_discovery_init_metadata_query: |
|
305 |
* @discovery: a #LassoIdWsf2Discovery object |
|
306 |
* |
|
307 |
* Initialise a ID-WSF service metadata query request to a Discovery service |
|
308 |
* |
|
309 |
* Return value: 0 on success; an error code otherwise. |
|
310 |
**/ |
|
311 |
declare_init_request(metadata_query, LassoIdWsf2DiscoSvcMDQuery, |
|
312 |
lasso_idwsf2_disco_svc_md_query_new); |
|
313 | ||
314 |
/** |
|
315 |
* lasso_idwsf2_discovery_init_metadata_delete: |
|
316 |
* @discovery: a #LassoIdWsf2Discovery object |
|
317 |
* |
|
318 |
* Initialise a ID-WSF service metadata query request to a Discovery service |
|
319 |
* |
|
320 |
* Return value: 0 on success; an error code otherwise. |
|
321 |
**/ |
|
322 |
declare_init_request(metadata_delete, LassoIdWsf2DiscoSvcMDDelete, |
|
323 |
lasso_idwsf2_disco_svc_md_delete_new); |
|
324 | ||
325 |
/** |
|
326 |
* lasso_idwsf2_discovery_init_metadata_association_add: |
|
327 |
* @discovery: a #LassoIdWsf2Discovery |
|
328 |
* @svcMDID: identifier of the service metadata the user wants to associate with |
|
329 |
* |
|
330 |
* Initialise a request to associate a user account to a service metadata, allowing |
|
331 |
* a WSC to request this service for data related to this user account. |
|
332 |
* |
|
333 |
* Return value: 0 on success; or a negative value otherwise. |
|
334 |
**/ |
|
335 |
declare_init_request(metadata_association_add, LassoIdWsf2DiscoSvcMDAssociationAdd, |
|
336 |
lasso_idwsf2_disco_svc_md_association_add_new) |
|
337 | ||
338 |
declare_init_request(metadata_association_delete, LassoIdWsf2DiscoSvcMDAssociationDelete, |
|
339 |
lasso_idwsf2_disco_svc_md_association_delete_new) |
|
340 |
declare_init_request(metadata_association_query, LassoIdWsf2DiscoSvcMDAssociationQuery, |
|
341 |
lasso_idwsf2_disco_svc_md_association_query_new) |
|
342 | ||
343 | ||
344 |
/** |
|
345 |
* lasso_idwsf2_discovery_add_service_metadata: |
|
346 |
* @idwsf2_discovery: a #LassoIdWsf2Discovery object |
|
347 |
* @service_metadata: a #LassoIdWsf2DiscoSvcMetadata object to add to the register request. |
|
348 |
* |
|
349 |
* Add a new metadata object to a request. |
|
350 |
* |
|
351 |
* Return value: 0 if successful, an error code otherwise. |
|
352 |
*/ |
|
353 |
int |
|
354 |
lasso_idwsf2_discovery_add_service_metadata(LassoIdWsf2Discovery *discovery, |
|
355 |
LassoIdWsf2DiscoSvcMetadata *service_metadata) |
|
356 |
{ |
|
357 |
lasso_bad_param(IDWSF2_DISCOVERY, discovery); |
|
358 |
lasso_bad_param(IDWSF2_DISCO_SVC_METADATA, service_metadata); |
|
359 |
lasso_list_add_gobject(discovery->private_data->metadatas, |
|
360 |
service_metadata); |
|
361 |
return 0; |
|
362 |
} |
|
363 | ||
364 |
/** |
|
365 |
* lasso_idwsf2_discovery_add_simple_service_metadata: |
|
366 |
* @idwsf2_discovery: a #LassoIdWsf2Discovery object |
|
367 |
* @abstract:(allow-none): a human description of the service |
|
368 |
* @provider_id:(allow-none): the provider id of the service to register, if none is given, |
|
369 |
* providerId of the current #LassoServer object is used |
|
370 |
* @service_types:(element-type utf8)(allow-none): an array of service type URIs |
|
371 |
* @options:(element-type LassoIdWsf2DiscoOptions)(allow-none): an array of option string |
|
372 |
* @address:(allow-none): the URI of the service endpoint for the default EndpointContext |
|
373 |
* @security_mechanisms:(allow-none)(element-type utf8): the security mechanisms supported by the |
|
374 |
* service |
|
375 |
* |
|
376 |
* Add new metadata to the current Metadata Register request. |
|
377 |
* |
|
378 |
* Return value: 0 if successful, an error code otherwise. |
|
379 |
*/ |
|
380 |
int |
|
381 |
lasso_idwsf2_discovery_add_simple_service_metadata(LassoIdWsf2Discovery *idwsf2_discovery, |
|
382 |
const char *abstract, const char *provider_id, GList *service_types, GList *options, |
|
383 |
const char *address, GList *security_mechanisms) |
|
384 |
{ |
|
385 |
LassoIdWsf2DiscoSvcMetadata *service_metadata; |
|
386 |
LassoIdWsf2DiscoServiceContext *service_context; |
|
387 |
LassoIdWsf2DiscoEndpointContext *endpoint_context; |
|
388 |
int rc = 0; |
|
389 | ||
390 |
lasso_bad_param(IDWSF2_DISCOVERY, idwsf2_discovery); |
|
391 |
lasso_check_non_empty_string(address); |
|
392 |
service_metadata = lasso_idwsf2_disco_svc_metadata_new(); |
|
393 |
if (abstract) { |
|
394 |
lasso_assign_string(service_metadata->Abstract, abstract); |
|
395 |
} |
|
396 |
if (provider_id) { |
|
397 |
lasso_assign_string(service_metadata->ProviderID, provider_id); |
|
398 |
} |
|
399 |
service_context = lasso_idwsf2_disco_service_context_new(); |
|
400 |
if (service_types) { |
|
401 |
lasso_assign_list_of_strings(service_context->ServiceType, service_types); |
|
402 |
} |
|
403 |
if (options) { |
|
404 |
lasso_assign_list_of_strings(service_context->Options, options); |
|
405 |
} |
|
406 |
endpoint_context = lasso_idwsf2_disco_endpoint_context_new(); |
|
407 |
if (address) { |
|
408 |
lasso_list_add_string(endpoint_context->Address, address); |
|
409 |
} |
|
410 |
lasso_list_add_new_gobject(endpoint_context->Framework, |
|
411 |
lasso_idwsf2_sbf_framework_new_full("2.0")); |
|
412 |
if (security_mechanisms) { |
|
413 |
lasso_assign_list_of_strings(endpoint_context->SecurityMechID, security_mechanisms); |
|
414 |
} |
|
415 | ||
416 |
lasso_list_add_new_gobject(service_context->EndpointContext, endpoint_context); |
|
417 |
lasso_list_add_new_gobject(service_metadata->ServiceContext, service_context); |
|
418 | ||
419 |
rc = lasso_idwsf2_discovery_add_service_metadata(idwsf2_discovery, service_metadata); |
|
420 |
lasso_release_gobject(service_metadata); |
|
421 |
cleanup: |
|
422 |
return rc; |
|
423 |
} |
|
424 | ||
425 |
/** |
|
426 |
* lasso_idwsf2_discovery_get_metadatas: |
|
427 |
* @discovery: a #LassoIdWsf2Discovery object |
|
428 |
* |
|
429 |
* Return the current list of metadatas in the @discovery object. They can be metadatas just |
|
430 |
* received through a #LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_REGISTER request or added through |
|
431 |
* lasso_idwsf2_discovery_add_service_metadata() or |
|
432 |
* lasso_idwsf2_discovery_add_simple_service_metadata(). |
|
433 |
* |
|
434 |
* Return value:(transfer none)(element-type LassoIdWsf2DiscoSvcMetadata): the list of metadatas. |
|
435 |
*/ |
|
436 |
GList* |
|
437 |
lasso_idwsf2_discovery_get_metadatas(LassoIdWsf2Discovery *discovery) |
|
438 |
{ |
|
439 |
if (! LASSO_IS_IDWSF2_DISCOVERY(discovery) || ! discovery->private_data) |
|
440 |
return NULL; |
|
441 |
return discovery->private_data->metadatas; |
|
442 |
} |
|
443 | ||
444 |
/** |
|
445 |
* lasso_idwsf2_discovery_get_endpoint_references: |
|
446 |
* @discovery: a #LassoIdWsf2Discovery object |
|
447 |
* |
|
448 |
* Return the list of wsa:EndpointReference returned by the last discovery query. |
|
449 |
* |
|
450 |
* Return value:(transfer none)(element-type LassoWsAddrEndpointReference): a #GList of |
|
451 |
* LassoWsAddrEndpointReference objects, or NULL if none is found. |
|
452 |
*/ |
|
453 |
GList* |
|
454 |
lasso_idwsf2_discovery_get_endpoint_references(LassoIdWsf2Discovery *discovery) |
|
455 |
{ |
|
456 |
LassoProfile *profile; |
|
457 |
LassoIdWsf2DiscoQueryResponse *response; |
|
458 |
GList *rc = NULL; |
|
459 | ||
460 |
g_return_val_if_fail (LASSO_IS_IDWSF2_DISCOVERY (discovery), NULL); |
|
461 |
profile = &discovery->parent.parent; |
|
462 | ||
463 |
lasso_extract_node_or_fail (response, profile->response, IDWSF2_DISCO_QUERY_RESPONSE, NULL); |
|
464 |
rc = response->EndpointReference; |
|
465 |
cleanup: |
|
466 |
return rc; |
|
467 |
} |
|
468 | ||
469 |
/** |
|
470 |
* lasso_idwsf2_discovery_get_svcmdids: |
|
471 |
* @discovery: a #LassoIdWsf2Discovery object |
|
472 |
* |
|
473 |
* Return the list of SvcMDID, or service metadata ids, returned by the last discovery query. |
|
474 |
* |
|
475 |
* Return value:(transfer none)(element-type utf8)(allow-none): a list of SvcMDID's. |
|
476 |
*/ |
|
477 |
GList* |
|
478 |
lasso_idwsf2_discovery_get_svcmdids(LassoIdWsf2Discovery *discovery) |
|
479 |
{ |
|
480 |
if (! LASSO_IS_IDWSF2_DISCOVERY(discovery) || ! discovery->private_data) |
|
481 |
return NULL; |
|
482 |
return discovery->private_data->svcmdids; |
|
483 |
} |
|
484 | ||
485 |
/** |
|
486 |
* lasso_idwsf2_discovery_set_svcmdids: |
|
487 |
* @discovery: a #LassoIdWsf2Discovery object |
|
488 |
* @svcmdids:(element-type utf8)(allow-none): a list of service metadata IDs |
|
489 |
* |
|
490 |
* Set the list of SvcMDID, or service metadata ids. |
|
491 |
* |
|
492 |
*/ |
|
493 |
void |
|
494 |
lasso_idwsf2_discovery_set_svcmdids(LassoIdWsf2Discovery *discovery, GList *svcmdids) |
|
495 |
{ |
|
496 |
if (! LASSO_IS_IDWSF2_DISCOVERY(discovery) || ! discovery->private_data) |
|
497 |
return; |
|
498 |
lasso_assign_list_of_strings(discovery->private_data->svcmdids, svcmdids); |
|
499 |
} |
|
500 | ||
501 |
/** |
|
502 |
* lasso_idwsf2_discovery_build_request_msg: |
|
503 |
* @discovery: a #LassoIdWsf2Discovery object |
|
504 |
* @security_mechanism:(allow-none):the security mech id to use, if NULL a Bearer mechanism is used. |
|
505 |
* |
|
506 |
* Build the request message using a security mechanism to authenticate the requester and the target |
|
507 |
* identity. If none is given Bearer mechanism is used. |
|
508 |
* |
|
509 |
* Return value: 0 if successful, an error code otherwise. |
|
510 |
*/ |
|
511 |
gint |
|
512 |
lasso_idwsf2_discovery_build_request_msg(LassoIdWsf2Discovery *discovery, |
|
513 |
const char *security_mechanism) |
|
514 |
{ |
|
515 |
GList *content = NULL; |
|
516 |
LassoIdWsf2DiscoQuery *query = NULL; |
|
517 |
GList **svc_md_ids = NULL; |
|
518 |
GList **metadatas = NULL; |
|
519 |
gboolean check_svcMDID = FALSE; |
|
520 |
int rc = 0; |
|
521 | ||
522 |
lasso_bad_param(IDWSF2_DISCOVERY, discovery); |
|
523 |
content = |
|
524 |
lasso_soap_envelope_get_body_content( |
|
525 |
lasso_idwsf2_profile_get_soap_envelope_request( |
|
526 |
&discovery->parent)); |
|
527 |
switch (lasso_idwsf2_discovery_get_request_type(discovery)) { |
|
528 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_QUERY: |
|
529 |
query = (LassoIdWsf2DiscoQuery*)lasso_list_get_first_child(content); |
|
530 |
lasso_assign_list_of_gobjects(query->RequestedService, |
|
531 |
discovery->private_data->requested_services); |
|
532 | ||
533 |
break; |
|
534 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_REGISTER: |
|
535 |
metadatas = &((LassoIdWsf2DiscoSvcMDRegister*)lasso_list_get_first_child(content))->SvcMD; |
|
536 |
break; |
|
537 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_QUERY: |
|
538 |
svc_md_ids = &((LassoIdWsf2DiscoSvcMDQuery*) |
|
539 |
lasso_list_get_first_child(content))->SvcMDID; |
|
540 |
break; |
|
541 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_REPLACE: |
|
542 |
check_svcMDID = TRUE; |
|
543 |
metadatas = &((LassoIdWsf2DiscoSvcMDReplace*) |
|
544 |
lasso_list_get_first_child(content))->SvcMD; |
|
545 |
break; |
|
546 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_DELETE: |
|
547 |
svc_md_ids = &((LassoIdWsf2DiscoSvcMDDelete*) |
|
548 |
lasso_list_get_first_child(content))->SvcMDID; |
|
549 |
break; |
|
550 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_ADD: |
|
551 |
svc_md_ids = &((LassoIdWsf2DiscoSvcMDAssociationAdd*) |
|
552 |
lasso_list_get_first_child(content))->SvcMDID; |
|
553 |
break; |
|
554 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_DELETE: |
|
555 |
svc_md_ids = &((LassoIdWsf2DiscoSvcMDAssociationDelete*) |
|
556 |
lasso_list_get_first_child(content))->SvcMDID; |
|
557 |
break; |
|
558 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_QUERY: |
|
559 |
svc_md_ids = &((LassoIdWsf2DiscoSvcMDAssociationQuery*) |
|
560 |
lasso_list_get_first_child(content))->SvcMDID; |
|
561 |
break; |
|
562 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_UNKNOWN: |
|
563 |
default: |
|
564 |
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_INVALID_REQUEST); |
|
565 |
break; |
|
566 |
} |
|
567 |
if (metadatas) { |
|
568 |
if (! check_svcMDID) { |
|
569 |
lasso_assign_list_of_gobjects(*metadatas, discovery->private_data->metadatas); |
|
570 |
} else { |
|
571 |
GList *i; |
|
572 |
lasso_foreach(i, discovery->private_data->metadatas) { |
|
573 |
LassoIdWsf2DiscoSvcMetadata *metadata = (LassoIdWsf2DiscoSvcMetadata *)i->data; |
|
574 |
if (lasso_strisempty(metadata->svcMDID)) { |
|
575 |
message(G_LOG_LEVEL_WARNING, "disco:MetadataReplace method called with " \ |
|
576 |
"non registered metadatas " \ |
|
577 |
"(svcMDID attribute is missing)"); |
|
578 |
} else { |
|
579 |
lasso_list_add_gobject(*metadatas, metadata); |
|
580 |
} |
|
581 |
} |
|
582 |
} |
|
583 |
} |
|
584 |
if (svc_md_ids) { |
|
585 |
lasso_assign_list_of_strings(*svc_md_ids, discovery->private_data->svcmdids); |
|
586 |
} |
|
587 |
rc = lasso_idwsf2_profile_build_request_msg(&discovery->parent, security_mechanism); |
|
588 |
cleanup: |
|
589 |
return rc; |
|
590 |
} |
|
591 | ||
592 |
/** |
|
593 |
* lasso_idwsf2_discovery_process_request_msg: |
|
594 |
* @discovery: a #LassoIdWsf2Discovery object |
|
595 |
* @message: a received SOAP message |
|
596 |
* |
|
597 |
* Parse a Discovery service request. |
|
598 |
* |
|
599 |
* Return value: 0 if sucessful, an error code otherwise among: |
|
600 |
* <itemizedlist> |
|
601 |
* <listitem><para>LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ if @profile is not a #LassoIdWsf2Profile |
|
602 |
* object,</para></listitem> |
|
603 |
* <listitem><para>LASSO_PARAM_ERROR_INVALID_VALUE if message is NULL,</para></listitem> |
|
604 |
* <listitem><para>LASSO_PROFILE_ERROR_INVALID_MSG if we cannot parse the message,</para></listitem> |
|
605 |
* <listitem><para>LASSO_SOAP_ERROR_MISSING_BODY if the message has no body |
|
606 |
* content.</para></listitem> |
|
607 |
* </itemizedlist> |
|
608 |
*/ |
|
609 |
int |
|
610 |
lasso_idwsf2_discovery_process_request_msg(LassoIdWsf2Discovery *discovery, const char *message) |
|
611 |
{ |
|
612 |
LassoProfile *profile; |
|
613 |
LassoIdWsf2Profile *idwsf2_profile; |
|
614 |
GList *content; |
|
615 |
GList **svc_md_ids = NULL, **metadatas = NULL, **service_types = NULL; |
|
616 |
int rc = 0; |
|
617 | ||
618 |
lasso_bad_param(IDWSF2_DISCOVERY, discovery); |
|
619 |
idwsf2_profile = &discovery->parent; |
|
620 |
profile = &idwsf2_profile->parent; |
|
621 | ||
622 |
lasso_check_good_rc(lasso_idwsf2_profile_process_request_msg(idwsf2_profile, message)); |
|
623 | ||
624 |
content = |
|
625 |
lasso_soap_envelope_get_body_content( |
|
626 |
lasso_idwsf2_profile_get_soap_envelope_request( |
|
627 |
&discovery->parent)); |
|
628 |
switch (lasso_idwsf2_discovery_get_request_type(discovery)) { |
|
629 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_REGISTER: |
|
630 |
metadatas = &((LassoIdWsf2DiscoSvcMDRegister*) |
|
631 |
lasso_list_get_first_child(content))->SvcMD; |
|
632 |
break; |
|
633 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_QUERY: |
|
634 |
service_types = &((LassoIdWsf2DiscoQuery*) |
|
635 |
lasso_list_get_first_child(content))->RequestedService; |
|
636 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_QUERY: |
|
637 |
svc_md_ids = &((LassoIdWsf2DiscoSvcMDQuery*) |
|
638 |
lasso_list_get_first_child(content))->SvcMDID; |
|
639 |
break; |
|
640 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_DELETE: |
|
641 |
svc_md_ids = &((LassoIdWsf2DiscoSvcMDDelete*) |
|
642 |
lasso_list_get_first_child(content))->SvcMDID; |
|
643 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_ADD: |
|
644 |
svc_md_ids = &((LassoIdWsf2DiscoSvcMDAssociationAdd*) |
|
645 |
lasso_list_get_first_child(content))->SvcMDID; |
|
646 |
break; |
|
647 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_DELETE: |
|
648 |
svc_md_ids = &((LassoIdWsf2DiscoSvcMDAssociationDelete*) |
|
649 |
lasso_list_get_first_child(content))->SvcMDID; |
|
650 |
break; |
|
651 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_QUERY: |
|
652 |
svc_md_ids = &((LassoIdWsf2DiscoSvcMDAssociationQuery*) |
|
653 |
lasso_list_get_first_child(content))->SvcMDID; |
|
654 |
break; |
|
655 |
default: |
|
656 |
lasso_check_good_rc( |
|
657 |
lasso_idwsf2_profile_init_soap_fault_response( |
|
658 |
idwsf2_profile, |
|
659 |
LASSO_SOAP_FAULT_CODE_CLIENT, |
|
660 |
"Unknown Request Type", NULL)); |
|
661 |
rc = LASSO_PROFILE_ERROR_INVALID_REQUEST; |
|
662 |
break; |
|
663 |
} |
|
664 |
if (discovery->private_data && svc_md_ids) { |
|
665 |
lasso_assign_list_of_strings(discovery->private_data->svcmdids, *svc_md_ids); |
|
666 |
} |
|
667 |
if (metadatas) { |
|
668 |
lasso_assign_list_of_gobjects(discovery->private_data->metadatas, *metadatas); |
|
669 |
} |
|
670 |
if (service_types) { |
|
671 |
lasso_assign_list_of_gobjects(discovery->private_data->requested_services, *service_types); |
|
672 |
} |
|
673 | ||
674 |
cleanup: |
|
675 |
return rc; |
|
676 |
} |
|
677 | ||
678 | ||
679 |
/** |
|
680 |
* lasso_idwsf2_discovery_get_request_type: |
|
681 |
* @discovery: a #LassoIdWsf2Discovery object |
|
682 |
* |
|
683 |
* Return the type of the last parsed request. |
|
684 |
* |
|
685 |
* Return value: the type of the last parsed request. |
|
686 |
*/ |
|
687 |
LassoIdWsf2DiscoveryRequestType |
|
688 |
lasso_idwsf2_discovery_get_request_type(LassoIdWsf2Discovery *discovery) |
|
689 |
{ |
|
690 |
if (LASSO_IS_IDWSF2_DISCOVERY(discovery)) |
|
691 |
{ |
|
692 |
GType request_type = 0; |
|
693 | ||
694 |
request_type = G_TYPE_FROM_INSTANCE(discovery->parent.parent.request); |
|
695 | ||
696 |
#define check_request_type(a, b) \ |
|
697 |
if (request_type == a) { \ |
|
698 |
return b ;\ |
|
699 |
} |
|
700 | ||
701 |
check_request_type(LASSO_TYPE_IDWSF2_DISCO_QUERY, |
|
702 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_QUERY); |
|
703 |
check_request_type(LASSO_TYPE_IDWSF2_DISCO_SVC_MD_QUERY, |
|
704 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_QUERY); |
|
705 |
check_request_type(LASSO_TYPE_IDWSF2_DISCO_SVC_MD_REGISTER, |
|
706 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_REGISTER); |
|
707 |
check_request_type(LASSO_TYPE_IDWSF2_DISCO_SVC_MD_REPLACE, |
|
708 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_REPLACE); |
|
709 |
check_request_type(LASSO_TYPE_IDWSF2_DISCO_SVC_MD_DELETE, |
|
710 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_DELETE); |
|
711 |
check_request_type(LASSO_TYPE_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD, |
|
712 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_ADD); |
|
713 |
check_request_type(LASSO_TYPE_IDWSF2_DISCO_SVC_MD_ASSOCIATION_DELETE, |
|
714 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_DELETE); |
|
715 |
check_request_type(LASSO_TYPE_IDWSF2_DISCO_SVC_MD_ASSOCIATION_QUERY, |
|
716 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_QUERY); |
|
717 |
} |
|
718 |
#undef check_request_type |
|
719 |
return LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_UNKNOWN; |
|
720 | ||
721 |
} |
|
722 | ||
723 |
/** |
|
724 |
* lasso_idwsf2_discovery_fail_request: |
|
725 |
* @discovery: a #LassoIdWsf2Discovery |
|
726 |
* @status_code: a status code string |
|
727 |
* @status_code2:(allow-none): a second-level status code |
|
728 |
* |
|
729 |
* Fail the last request with the given status code. |
|
730 |
* |
|
731 |
* Return value: 0 on success; or a negative value otherwise. |
|
732 |
*/ |
|
733 |
gint |
|
734 |
lasso_idwsf2_discovery_fail_request(LassoIdWsf2Discovery *discovery, const char *status_code, |
|
735 |
const char *status_code2) |
|
736 |
{ |
|
737 |
LassoIdWsf2DiscoSvcMDAssociationAddResponse *md_association_add_response; |
|
738 |
LassoIdWsf2DiscoSvcMDAssociationDeleteResponse *md_association_delete_response; |
|
739 |
LassoIdWsf2DiscoSvcMDAssociationQueryResponse *md_association_query_response; |
|
740 |
LassoIdWsf2DiscoSvcMDRegisterResponse *md_register_response; |
|
741 |
LassoIdWsf2DiscoSvcMDQueryResponse *md_query_response; |
|
742 |
LassoIdWsf2DiscoSvcMDDeleteResponse *md_delete_response; |
|
743 |
LassoIdWsf2DiscoSvcMDReplaceResponse *md_replace_response; |
|
744 |
LassoIdWsf2DiscoQueryResponse *query_response; |
|
745 |
int rc = 0; |
|
746 |
LassoIdWsf2UtilStatus **status = NULL; |
|
747 |
LassoNode *response = NULL; |
|
748 | ||
749 |
lasso_bad_param(IDWSF2_DISCOVERY, discovery); |
|
750 | ||
751 |
lasso_check_good_rc(lasso_idwsf2_profile_init_response(&discovery->parent)); |
|
752 |
switch (lasso_idwsf2_discovery_get_request_type(discovery)) { |
|
753 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_QUERY: |
|
754 |
query_response = lasso_idwsf2_disco_query_response_new(); |
|
755 |
response = (LassoNode*)query_response; |
|
756 |
status = &query_response->Status; |
|
757 |
break; |
|
758 | ||
759 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_REGISTER: |
|
760 |
md_register_response = lasso_idwsf2_disco_svc_md_register_response_new(); |
|
761 |
response = (LassoNode*)md_register_response; |
|
762 |
status = &md_register_response->Status; |
|
763 |
break; |
|
764 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_QUERY: |
|
765 |
md_query_response = lasso_idwsf2_disco_svc_md_query_response_new(); |
|
766 |
response = (LassoNode*)md_query_response; |
|
767 |
status = &md_query_response->Status; |
|
768 |
break; |
|
769 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_REPLACE: |
|
770 |
md_replace_response = lasso_idwsf2_disco_svc_md_replace_response_new(); |
|
771 |
response = (LassoNode*)md_replace_response; |
|
772 |
status = &md_replace_response->Status; |
|
773 |
break; |
|
774 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_DELETE: |
|
775 |
md_delete_response = lasso_idwsf2_disco_svc_md_delete_response_new(); |
|
776 |
response = (LassoNode*)md_delete_response; |
|
777 |
status = &md_delete_response->Status; |
|
778 |
break; |
|
779 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_ADD: |
|
780 |
md_association_add_response = |
|
781 |
lasso_idwsf2_disco_svc_md_association_add_response_new(); |
|
782 |
response = (LassoNode*)md_association_add_response; |
|
783 |
status = &md_association_add_response->Status; |
|
784 |
break; |
|
785 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_DELETE: |
|
786 |
md_association_delete_response = |
|
787 |
lasso_idwsf2_disco_svc_md_association_delete_response_new(); |
|
788 |
response = (LassoNode*)md_association_delete_response; |
|
789 |
status = &md_association_delete_response->Status; |
|
790 |
break; |
|
791 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_QUERY: |
|
792 |
md_association_query_response = |
|
793 |
lasso_idwsf2_disco_svc_md_association_query_response_new(); |
|
794 |
response = (LassoNode*)md_association_query_response; |
|
795 |
status = &md_association_query_response->Status; |
|
796 |
break; |
|
797 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_UNKNOWN: |
|
798 |
default: |
|
799 |
response = (LassoNode*)lasso_soap_fault_new_full( |
|
800 |
LASSO_SOAP_FAULT_CODE_CLIENT, "Invalid request"); |
|
801 |
break; |
|
802 |
} |
|
803 |
if (response) { |
|
804 |
LassoSoapEnvelope *envelope = |
|
805 |
lasso_idwsf2_profile_get_soap_envelope_response(&discovery->parent); |
|
806 |
lasso_assign_new_gobject(discovery->parent.parent.response, response); |
|
807 |
lasso_soap_envelope_add_to_body(envelope, response); |
|
808 |
} |
|
809 |
if (status) { |
|
810 |
lasso_assign_new_gobject(*status, |
|
811 |
lasso_idwsf2_util_status_new_with_code(status_code, status_code2)); |
|
812 |
} |
|
813 | ||
814 |
cleanup: |
|
815 |
return rc; |
|
816 |
} |
|
817 | ||
818 |
static gboolean |
|
819 |
_string_list_intersect(GList *a, GList *b) |
|
820 |
{ |
|
821 |
GList *i, *j; |
|
822 | ||
823 |
if (a == NULL) { |
|
824 |
return TRUE; |
|
825 |
} |
|
826 |
lasso_foreach(i, a) |
|
827 |
{ |
|
828 |
lasso_foreach(j, b) |
|
829 |
if (lasso_strisequal(i->data,j->data)) { |
|
830 |
return TRUE; |
|
831 |
} |
|
832 |
} |
|
833 |
return FALSE; |
|
834 |
} |
|
835 | ||
836 |
static gboolean |
|
837 |
_string_list_contains(GList *a, const char *str) |
|
838 |
{ |
|
839 |
GList *i; |
|
840 | ||
841 |
if (a == NULL) |
|
842 |
return TRUE; |
|
843 |
lasso_foreach(i, a) |
|
844 |
if (lasso_strisequal(i->data,str)) { |
|
845 |
return TRUE; |
|
846 |
} |
|
847 |
return FALSE; |
|
848 |
} |
|
849 | ||
850 |
static gboolean |
|
851 |
_string_list_contains_list(GList *a, GList *b) |
|
852 |
{ |
|
853 |
GList *i; |
|
854 |
/* empty = all */ |
|
855 |
if (a == NULL) |
|
856 |
return TRUE; |
|
857 |
lasso_foreach(i, b) |
|
858 |
if (! _string_list_contains(a, i->data)) |
|
859 |
return FALSE; |
|
860 |
return TRUE; |
|
861 |
} |
|
862 | ||
863 |
void |
|
864 |
lasso_idwsf2_discovery_match_request_service_and_metadata2( |
|
865 |
LassoIdWsf2Discovery *discovery, |
|
866 |
LassoIdWsf2DiscoRequestedService *requested_service, |
|
867 |
LassoIdWsf2DiscoSvcMetadata *metadata, |
|
868 |
LassoIdWsf2DiscoServiceContext *service_context, |
|
869 |
LassoIdWsf2DiscoEndpointContext *endpoint_context, |
|
870 |
GList **eprs) |
|
871 |
{ |
|
872 |
GList *i; |
|
873 |
gboolean result = TRUE; |
|
874 |
gboolean option_result = TRUE; |
|
875 |
LassoIdWsf2DiscoOptions *options = NULL; |
|
876 |
GList *service_options = NULL; |
|
877 | ||
878 | ||
879 |
result = result && |
|
880 |
_string_list_intersect(requested_service->ServiceType, service_context->ServiceType); |
|
881 |
if (result) { |
|
882 |
result = result && _string_list_contains(requested_service->ProviderID, metadata->ProviderID); |
|
883 |
} |
|
884 |
/* Accumulate options */ |
|
885 |
if (result) { |
|
886 |
lasso_foreach(i, service_context->Options) |
|
887 |
{ |
|
888 |
options = (LassoIdWsf2DiscoOptions*)i->data; |
|
889 |
service_options = g_list_concat(service_options, |
|
890 |
g_list_copy(options->Option)); |
|
891 |
} |
|
892 |
lasso_foreach(i, requested_service->Options) |
|
893 |
{ |
|
894 |
option_result = FALSE; |
|
895 |
if (_string_list_contains_list(service_options, |
|
896 |
((LassoIdWsf2DiscoOptions*)i->data)->Option)) |
|
897 |
{ |
|
898 |
option_result = TRUE; |
|
899 |
break; |
|
900 |
} |
|
901 |
} |
|
902 |
lasso_release_list(service_options); |
|
903 |
result = result && option_result; |
|
904 |
} |
|
905 |
if (result) { |
|
906 |
result = result && |
|
907 |
_string_list_intersect(requested_service->SecurityMechID, endpoint_context->SecurityMechID); |
|
908 |
} |
|
909 |
if (result) { |
|
910 |
if (requested_service->Framework) { |
|
911 |
result = result && |
|
912 |
_string_list_intersect(requested_service->Framework, endpoint_context->Framework); |
|
913 |
} else { |
|
914 |
/* FIXME: should be the value of the query SOAP header sbf:Framework */ |
|
915 |
GList *k; |
|
916 |
gboolean has20 = FALSE; |
|
917 |
lasso_foreach (k, endpoint_context->Framework) { |
|
918 |
LassoIdWsf2SbfFramework *framework = k->data; |
|
919 |
if (LASSO_IS_IDWSF2_SBF_FRAMEWORK(framework) && lasso_strisequal(framework->version,"2.0")) |
|
920 |
has20 = TRUE; |
|
921 |
} |
|
922 |
result = result && has20; |
|
923 |
} |
|
924 |
} |
|
925 |
if (result) { |
|
926 |
result = result && _string_list_intersect(endpoint_context->Action, requested_service->Action); |
|
927 |
} |
|
928 | ||
929 |
if (result) { |
|
930 |
lasso_list_add_new_gobject(*eprs, |
|
931 |
lasso_idwsf2_discovery_build_epr( |
|
932 |
discovery, |
|
933 |
metadata, |
|
934 |
service_context, |
|
935 |
endpoint_context)); |
|
936 |
} |
|
937 | ||
938 |
} |
|
939 | ||
940 |
void |
|
941 |
lasso_idwsf2_discovery_match_request_service_and_metadata( |
|
942 |
LassoIdWsf2Discovery *discovery, |
|
943 |
LassoIdWsf2DiscoRequestedService *requested_service, |
|
944 |
LassoIdWsf2DiscoSvcMetadata *metadata, |
|
945 |
GList **eprs) |
|
946 |
{ |
|
947 |
GList *i, *j; |
|
948 | ||
949 |
lasso_foreach(i, metadata->ServiceContext) |
|
950 |
lasso_foreach(j, ((LassoIdWsf2DiscoServiceContext*)i->data)->EndpointContext) |
|
951 | ||
952 |
lasso_idwsf2_discovery_match_request_service_and_metadata2( |
|
953 |
discovery, |
|
954 |
requested_service, |
|
955 |
metadata, |
|
956 |
(LassoIdWsf2DiscoServiceContext*)i->data, |
|
957 |
(LassoIdWsf2DiscoEndpointContext*)j->data, eprs); |
|
958 | ||
959 |
} |
|
960 | ||
961 |
static gint |
|
962 |
lasso_idwsf2_discovery_validate_request_query(LassoIdWsf2Discovery *discovery) |
|
963 |
{ |
|
964 |
LassoIdWsf2DiscoQuery *query; |
|
965 |
LassoIdWsf2DiscoQueryResponse *query_response; |
|
966 |
GList *eprs = NULL; |
|
967 |
int rc = 0; |
|
968 | ||
969 |
/* Build EPRs */ |
|
970 |
query = (LassoIdWsf2DiscoQuery*)discovery->parent.parent.request; |
|
971 |
lasso_foreach_full_begin(LassoIdWsf2DiscoRequestedService*, requested_service, i, |
|
972 |
query->RequestedService) |
|
973 |
lasso_foreach_full_begin(LassoIdWsf2DiscoSvcMetadata*, metadata, j, |
|
974 |
discovery->private_data->metadatas) |
|
975 |
lasso_idwsf2_discovery_match_request_service_and_metadata(discovery, requested_service, |
|
976 |
metadata, &eprs); |
|
977 |
lasso_foreach_full_end() |
|
978 |
lasso_foreach_full_end() |
|
979 | ||
980 |
if (eprs) { |
|
981 |
query_response = lasso_idwsf2_disco_query_response_new(); |
|
982 |
query_response->Status = lasso_idwsf2_util_status_new_with_code( |
|
983 |
LASSO_IDWSF2_DISCOVERY_STATUS_CODE_OK, NULL); |
|
984 |
query_response->EndpointReference = eprs; |
|
985 |
lasso_check_good_rc(lasso_idwsf2_profile_init_response(&discovery->parent)); |
|
986 |
lasso_soap_envelope_add_to_body( |
|
987 |
lasso_idwsf2_profile_get_soap_envelope_response(&discovery->parent), |
|
988 |
(LassoNode*)query_response); |
|
989 |
discovery->parent.parent.response = &query_response->parent; |
|
990 |
} else { |
|
991 |
return lasso_idwsf2_discovery_fail_request(discovery, |
|
992 |
LASSO_IDWSF2_DISCOVERY_STATUS_CODE_NO_RESULTS, NULL); |
|
993 |
} |
|
994 |
cleanup: |
|
995 |
return rc; |
|
996 |
} |
|
997 | ||
998 |
/** |
|
999 |
* lasso_idwsf2_discovery_validate_md_register: |
|
1000 |
* @discovery: a #LassoIdWsf2Discovery |
|
1001 |
* |
|
1002 |
* Process received metadata register request. |
|
1003 |
* If successful, register the service metadata into the discovery service. |
|
1004 |
* |
|
1005 |
* Return value: 0 on success; or a negative value otherwise. |
|
1006 |
**/ |
|
1007 |
static gint |
|
1008 |
lasso_idwsf2_discovery_validate_md_register(LassoIdWsf2Discovery *discovery) |
|
1009 |
{ |
|
1010 |
LassoIdWsf2Profile *profile = NULL; |
|
1011 |
LassoIdWsf2DiscoSvcMDRegisterResponse *response = NULL; |
|
1012 |
LassoSoapEnvelope *envelope = NULL; |
|
1013 |
LassoIdWsf2DiscoSvcMDRegister *request = NULL; |
|
1014 |
GList *SvcMD = NULL; |
|
1015 |
GList *SvcMDs = NULL; |
|
1016 |
int rc = 0; |
|
1017 | ||
1018 |
profile = LASSO_IDWSF2_PROFILE(discovery); |
|
1019 |
lasso_release_list_of_gobjects(discovery->private_data->metadatas); |
|
1020 |
request = (LassoIdWsf2DiscoSvcMDRegister*)profile->parent.request; |
|
1021 | ||
1022 |
lasso_release_list_of_gobjects(discovery->private_data->metadatas); |
|
1023 |
/* Allocate SvcMDIDs and add the metadatas */ |
|
1024 |
for (SvcMD = request->SvcMD; SvcMD != NULL; SvcMD = g_list_next(SvcMD)) { |
|
1025 |
if (LASSO_IS_IDWSF2_DISCO_SVC_METADATA(SvcMD->data)) { |
|
1026 |
lasso_list_add_gobject(discovery->private_data->metadatas, SvcMD->data); |
|
1027 |
lasso_assign_new_string( |
|
1028 |
LASSO_IDWSF2_DISCO_SVC_METADATA( |
|
1029 |
SvcMD->data)->svcMDID, |
|
1030 |
lasso_build_unique_id(32)); |
|
1031 |
} |
|
1032 |
} |
|
1033 | ||
1034 |
response = lasso_idwsf2_disco_svc_md_register_response_new(); |
|
1035 |
response->Status = |
|
1036 |
lasso_idwsf2_util_status_new_with_code(LASSO_IDWSF2_DISCOVERY_STATUS_CODE_OK, NULL); |
|
1037 |
for (SvcMDs = discovery->private_data->metadatas; SvcMDs != NULL; SvcMDs = g_list_next(SvcMDs)) { |
|
1038 |
lasso_list_add_string(response->SvcMDID, |
|
1039 |
LASSO_IDWSF2_DISCO_SVC_METADATA(SvcMDs->data)->svcMDID); |
|
1040 |
} |
|
1041 | ||
1042 |
lasso_check_good_rc(lasso_idwsf2_profile_init_response(&discovery->parent)); |
|
1043 |
envelope = lasso_idwsf2_profile_get_soap_envelope_response(profile); |
|
1044 |
lasso_soap_envelope_add_to_body(envelope, &response->parent); |
|
1045 |
lasso_assign_gobject(profile->parent.response, response); |
|
1046 |
cleanup: |
|
1047 |
lasso_release_gobject(response); |
|
1048 |
return rc; |
|
1049 |
} |
|
1050 | ||
1051 |
/** |
|
1052 |
* lasso_idwsf2_discovery_validate_request: |
|
1053 |
* @discovery: a #LassoIdWsf2Discovery object |
|
1054 |
* |
|
1055 |
* Accept the discovery request, and produce the response. |
|
1056 |
* |
|
1057 |
* Return value: 0 on success; or a negative value otherwise. |
|
1058 |
*/ |
|
1059 |
gint |
|
1060 |
lasso_idwsf2_discovery_validate_request(LassoIdWsf2Discovery *discovery) |
|
1061 |
{ |
|
1062 |
LassoIdWsf2DiscoSvcMDAssociationAddResponse *md_association_add_response; |
|
1063 |
LassoIdWsf2DiscoSvcMDAssociationDeleteResponse *md_association_delete_response; |
|
1064 |
LassoIdWsf2DiscoSvcMDAssociationQueryResponse *md_association_query_response; |
|
1065 |
LassoIdWsf2DiscoSvcMDQueryResponse *md_query_response; |
|
1066 |
LassoIdWsf2DiscoSvcMDQuery *md_query; |
|
1067 |
LassoIdWsf2DiscoSvcMDDeleteResponse *md_delete_response; |
|
1068 |
LassoIdWsf2DiscoSvcMDReplaceResponse *md_replace_response; |
|
1069 |
LassoNode *response = NULL; |
|
1070 |
int rc = 0; |
|
1071 |
GList *i; |
|
1072 |
LassoIdWsf2UtilStatus **status = NULL; |
|
1073 | ||
1074 |
lasso_bad_param(IDWSF2_DISCOVERY, discovery); |
|
1075 |
switch (lasso_idwsf2_discovery_get_request_type(discovery)) { |
|
1076 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_QUERY: |
|
1077 |
lasso_check_good_rc(lasso_idwsf2_discovery_validate_request_query(discovery)); |
|
1078 |
break; |
|
1079 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_REGISTER: |
|
1080 |
lasso_check_good_rc(lasso_idwsf2_discovery_validate_md_register(discovery)); |
|
1081 |
break; |
|
1082 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_QUERY: |
|
1083 |
md_query_response = lasso_idwsf2_disco_svc_md_query_response_new(); |
|
1084 |
md_query = (LassoIdWsf2DiscoSvcMDQuery*)discovery->parent.parent.request; |
|
1085 |
response = (LassoNode*)md_query_response; |
|
1086 |
if (md_query->SvcMDID) { |
|
1087 |
lasso_foreach(i, discovery->private_data->metadatas) { |
|
1088 |
LassoIdWsf2DiscoSvcMetadata *metadata = i->data; |
|
1089 |
if (LASSO_IS_IDWSF2_DISCO_SVC_METADATA(metadata) |
|
1090 |
&& _string_list_contains(md_query->SvcMDID, metadata->svcMDID)) { |
|
1091 |
lasso_list_add_gobject(md_query_response->SvcMD, i->data); |
|
1092 |
} |
|
1093 |
} |
|
1094 |
} else { |
|
1095 |
lasso_assign_list_of_gobjects(md_query_response->SvcMD, |
|
1096 |
discovery->private_data->metadatas); |
|
1097 |
} |
|
1098 |
status = &md_query_response->Status; |
|
1099 |
break; |
|
1100 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_REPLACE: |
|
1101 |
md_replace_response = lasso_idwsf2_disco_svc_md_replace_response_new(); |
|
1102 |
response = (LassoNode*)md_replace_response; |
|
1103 |
status = &md_replace_response->Status; |
|
1104 |
break; |
|
1105 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_DELETE: |
|
1106 |
md_delete_response = lasso_idwsf2_disco_svc_md_delete_response_new(); |
|
1107 |
response = (LassoNode*)md_delete_response; |
|
1108 |
status = &md_delete_response->Status; |
|
1109 |
break; |
|
1110 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_ADD: |
|
1111 |
md_association_add_response = |
|
1112 |
lasso_idwsf2_disco_svc_md_association_add_response_new(); |
|
1113 |
response = (LassoNode*)md_association_add_response; |
|
1114 |
status = &md_association_add_response->Status; |
|
1115 |
break; |
|
1116 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_DELETE: |
|
1117 |
md_association_delete_response = |
|
1118 |
lasso_idwsf2_disco_svc_md_association_delete_response_new(); |
|
1119 |
response = (LassoNode*)md_association_delete_response; |
|
1120 |
status = &md_association_delete_response->Status; |
|
1121 |
break; |
|
1122 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_QUERY: |
|
1123 |
md_association_query_response = |
|
1124 |
lasso_idwsf2_disco_svc_md_association_query_response_new(); |
|
1125 |
response = (LassoNode*)md_association_query_response; |
|
1126 |
lasso_foreach(i, discovery->private_data->svcmdids) { |
|
1127 |
lasso_list_add_string(md_association_query_response->SvcMDID, |
|
1128 |
i->data); |
|
1129 |
} |
|
1130 |
status = &md_association_query_response->Status; |
|
1131 |
break; |
|
1132 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_UNKNOWN: |
|
1133 |
default: |
|
1134 |
lasso_idwsf2_discovery_fail_request(discovery, NULL, NULL); |
|
1135 |
rc = LASSO_PROFILE_ERROR_INVALID_REQUEST; |
|
1136 |
break; |
|
1137 |
} |
|
1138 |
if (response) { |
|
1139 |
LassoSoapEnvelope *envelope = |
|
1140 |
lasso_idwsf2_profile_get_soap_envelope_response(&discovery->parent); |
|
1141 |
lasso_assign_new_gobject(discovery->parent.parent.response, response); |
|
1142 |
lasso_soap_envelope_add_to_body(envelope, response); |
|
1143 |
} |
|
1144 | ||
1145 |
if (status) { |
|
1146 |
lasso_assign_new_gobject(*status, |
|
1147 |
lasso_idwsf2_util_status_new_with_code( |
|
1148 |
LASSO_IDWSF2_DISCOVERY_STATUS_CODE_OK, NULL)); |
|
1149 |
} |
|
1150 | ||
1151 |
cleanup: |
|
1152 |
return rc; |
|
1153 |
} |
|
1154 | ||
1155 |
static gint |
|
1156 |
lasso_idwsf2_discovery_process_metadata_register_response_msg(LassoIdWsf2Discovery *discovery) |
|
1157 |
{ |
|
1158 |
LassoIdWsf2Profile *profile; |
|
1159 |
LassoIdWsf2DiscoSvcMDRegisterResponse *response; |
|
1160 |
LassoIdWsf2DiscoSvcMDRegister *request; |
|
1161 |
GList *i, *j; |
|
1162 |
int rc = 0; |
|
1163 | ||
1164 |
profile = &discovery->parent; |
|
1165 |
lasso_extract_node_or_fail(request, profile->parent.request, IDWSF2_DISCO_SVC_MD_REGISTER, |
|
1166 |
LASSO_PROFILE_ERROR_MISSING_REQUEST); |
|
1167 | ||
1168 |
response = (LassoIdWsf2DiscoSvcMDRegisterResponse*)profile->parent.response; |
|
1169 | ||
1170 |
goto_cleanup_if_fail_with_rc( |
|
1171 |
LASSO_IS_IDWSF2_DISCO_SVC_MD_REGISTER_RESPONSE(response), |
|
1172 |
LASSO_PROFILE_ERROR_INVALID_RESPONSE); |
|
1173 |
lasso_check_good_rc(lasso_idwsf2_discovery_status2rc(response->Status)); |
|
1174 |
goto_cleanup_if_fail_with_rc(g_list_length(response->SvcMDID) == |
|
1175 |
g_list_length(request->SvcMD), LASSO_PROFILE_ERROR_INVALID_RESPONSE); |
|
1176 |
/* Check IDs */ |
|
1177 |
i = response->SvcMDID; |
|
1178 |
lasso_foreach(i, response->SvcMDID) { |
|
1179 |
if (i->data == NULL || ((char*)i->data)[0] == '\0') { |
|
1180 |
rc = LASSO_PROFILE_ERROR_INVALID_RESPONSE; |
|
1181 |
goto cleanup; |
|
1182 |
} |
|
1183 |
} |
|
1184 | ||
1185 |
/* Assign IDs to metadatas */ |
|
1186 |
i = response->SvcMDID; |
|
1187 |
j = request->SvcMD; |
|
1188 |
while (i && j) { |
|
1189 |
lasso_assign_string(((LassoIdWsf2DiscoSvcMetadata*)j->data)->svcMDID, |
|
1190 |
i->data); |
|
1191 |
i = i->next; |
|
1192 |
j = j->next; |
|
1193 |
} |
|
1194 |
if (discovery->private_data && discovery->private_data->metadatas != request->SvcMD) { |
|
1195 |
lasso_assign_list_of_gobjects(discovery->private_data->metadatas, request->SvcMD); |
|
1196 |
} |
|
1197 |
cleanup: |
|
1198 |
return rc; |
|
1199 |
} |
|
1200 | ||
1201 | ||
1202 |
/** |
|
1203 |
* lasso_idwsf2_discovery_add_requested_service: |
|
1204 |
* @discovery: a #LassoIdWsf2Discovery |
|
1205 |
* @service_types:(element-type utf8)(allow-none): the service type (or data profile) requested |
|
1206 |
* @provider_ids:(element-type utf8)(allow-none): the providers ids to select |
|
1207 |
* @options:(element-type utf8)(allow-none): the options to select |
|
1208 |
* @security_mechanisms:(element-type utf8)(allow-none): the security mechanisms to select |
|
1209 |
* @frameworks:(element-type utf8)(allow-none): the ID-WSF framework version to select |
|
1210 |
* @actions:(element-type utf8)(allow-none): the actions to select |
|
1211 |
* @result_type:(allow-none)(default LASSO_IDWSF2_DISCOVERY_QUERY_RESULT_TYPE_NONE): how to filter |
|
1212 |
* the generated EPRs |
|
1213 |
* @req_id:(allow-none): an eventual ID to put on the request, that can be matched with the |
|
1214 |
* generated EndpointReferences |
|
1215 |
* |
|
1216 |
* Add a new request to find some specific services associated to the current principal at the |
|
1217 |
* discovery service. |
|
1218 |
* |
|
1219 |
* Return value: 0 on success; or a negative value otherwise. |
|
1220 |
**/ |
|
1221 |
gint |
|
1222 |
lasso_idwsf2_discovery_add_requested_service(LassoIdWsf2Discovery *discovery, |
|
1223 |
GList *service_types, GList *provider_ids, GList *options, GList *security_mechanisms, |
|
1224 |
GList *frameworks, GList *actions, LassoIdWsf2DiscoveryQueryResultType result_type, |
|
1225 |
const char *req_id) |
|
1226 |
{ |
|
1227 |
LassoIdWsf2DiscoRequestedService *service; |
|
1228 | ||
1229 |
lasso_bad_param(IDWSF2_DISCOVERY, discovery); |
|
1230 |
const char *result_type_s = NULL; |
|
1231 | ||
1232 | ||
1233 |
service = lasso_idwsf2_disco_requested_service_new(); |
|
1234 |
lasso_assign_list_of_strings(service->ServiceType, service_types); |
|
1235 |
lasso_assign_list_of_strings(service->ProviderID, provider_ids); |
|
1236 |
lasso_assign_list_of_strings(service->Framework, frameworks); |
|
1237 |
lasso_assign_list_of_strings(service->Action, actions); |
|
1238 |
lasso_assign_list_of_strings(service->SecurityMechID, security_mechanisms); |
|
1239 |
lasso_assign_list_of_gobjects(service->Options, options); |
|
1240 |
switch (result_type) { |
|
1241 |
case LASSO_IDWSF2_DISCOVERY_QUERY_RESULT_TYPE_BEST: |
|
1242 |
result_type_s = LASSO_IDWSF2_DISCOVERY_RESULT_TYPE_BEST; |
|
1243 |
break; |
|
1244 |
case LASSO_IDWSF2_DISCOVERY_QUERY_RESULT_TYPE_ALL: |
|
1245 |
result_type_s = LASSO_IDWSF2_DISCOVERY_RESULT_TYPE_ALL; |
|
1246 |
break; |
|
1247 |
case LASSO_IDWSF2_DISCOVERY_QUERY_RESULT_TYPE_ONLY_ONE: |
|
1248 |
result_type_s = LASSO_IDWSF2_DISCOVERY_RESULT_TYPE_ONLY_ONE; |
|
1249 |
break; |
|
1250 |
default: |
|
1251 |
break; |
|
1252 |
} |
|
1253 |
lasso_assign_string(service->resultsType, result_type_s); |
|
1254 |
lasso_assign_string(service->reqID, req_id); |
|
1255 | ||
1256 |
lasso_list_add_new_gobject(discovery->private_data->requested_services, service); |
|
1257 |
return 0; |
|
1258 |
} |
|
1259 | ||
1260 |
/** |
|
1261 |
* lasso_idwsf2_discovery_process_response_msg: |
|
1262 |
* @discovery: a #LassoIdWsf2Discovery object |
|
1263 |
* @msg: a string containing the response messages |
|
1264 |
* |
|
1265 |
* Return value: 0 if successful, an error code otherwise. |
|
1266 |
*/ |
|
1267 |
gint |
|
1268 |
lasso_idwsf2_discovery_process_response_msg(LassoIdWsf2Discovery *discovery, |
|
1269 |
const char *msg) |
|
1270 |
{ |
|
1271 |
LassoIdWsf2DiscoSvcMDAssociationAddResponse *md_association_add_response; |
|
1272 |
LassoIdWsf2DiscoSvcMDAssociationDeleteResponse *md_association_delete_response; |
|
1273 |
LassoIdWsf2DiscoSvcMDAssociationQueryResponse *md_association_query_response; |
|
1274 |
LassoIdWsf2DiscoSvcMDQueryResponse *md_query_response; |
|
1275 |
LassoIdWsf2DiscoSvcMDDeleteResponse *md_delete_response; |
|
1276 |
LassoIdWsf2DiscoSvcMDReplaceResponse *md_replace_response; |
|
1277 |
LassoIdWsf2DiscoQueryResponse *query_response; |
|
1278 |
LassoProfile *profile; |
|
1279 |
LassoNode *response; |
|
1280 |
int rc = 0; |
|
1281 | ||
1282 |
lasso_bad_param(IDWSF2_DISCOVERY, discovery); |
|
1283 |
profile = &discovery->parent.parent; |
|
1284 | ||
1285 |
lasso_check_good_rc(lasso_idwsf2_profile_process_response_msg(&discovery->parent, msg)); |
|
1286 |
response = profile->response; |
|
1287 | ||
1288 |
switch (lasso_idwsf2_discovery_get_request_type(discovery)) { |
|
1289 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_QUERY: |
|
1290 |
if (! LASSO_IS_IDWSF2_DISCO_QUERY_RESPONSE(response)) |
|
1291 |
goto bad_response; |
|
1292 |
query_response = (LassoIdWsf2DiscoQueryResponse*)response; |
|
1293 |
rc = lasso_idwsf2_discovery_status2rc(query_response->Status); |
|
1294 |
break; |
|
1295 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_REGISTER: |
|
1296 |
rc = lasso_idwsf2_discovery_process_metadata_register_response_msg( |
|
1297 |
discovery); |
|
1298 |
break; |
|
1299 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_QUERY: |
|
1300 |
if (! LASSO_IDWSF2_DISCO_SVC_MD_QUERY_RESPONSE(response)) |
|
1301 |
goto bad_response; |
|
1302 |
md_query_response = (LassoIdWsf2DiscoSvcMDQueryResponse*)response; |
|
1303 |
lasso_check_good_rc(lasso_idwsf2_discovery_status2rc( |
|
1304 |
md_query_response->Status)); |
|
1305 |
lasso_assign_list_of_gobjects(discovery->private_data->metadatas, |
|
1306 |
md_query_response->SvcMD); |
|
1307 |
break; |
|
1308 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_REPLACE: |
|
1309 |
if (! LASSO_IDWSF2_DISCO_SVC_MD_REPLACE_RESPONSE(response)) |
|
1310 |
goto bad_response; |
|
1311 |
md_replace_response = (LassoIdWsf2DiscoSvcMDReplaceResponse*)response; |
|
1312 |
lasso_check_good_rc(lasso_idwsf2_discovery_status2rc( |
|
1313 |
md_replace_response->Status)); |
|
1314 |
break; |
|
1315 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_DELETE: |
|
1316 |
if (! LASSO_IDWSF2_DISCO_SVC_MD_DELETE_RESPONSE(response)) |
|
1317 |
goto bad_response; |
|
1318 |
md_delete_response = (LassoIdWsf2DiscoSvcMDDeleteResponse*)response; |
|
1319 |
lasso_check_good_rc(lasso_idwsf2_discovery_status2rc( |
|
1320 |
md_delete_response->Status)); |
|
1321 |
break; |
|
1322 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_ADD: |
|
1323 |
if (! LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_ADD_RESPONSE(response)) |
|
1324 |
goto bad_response; |
|
1325 |
md_association_add_response = |
|
1326 |
(LassoIdWsf2DiscoSvcMDAssociationAddResponse*)response; |
|
1327 |
lasso_check_good_rc(lasso_idwsf2_discovery_status2rc( |
|
1328 |
md_association_add_response->Status)); |
|
1329 |
break; |
|
1330 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_DELETE: |
|
1331 |
if (! LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_DELETE_RESPONSE(response)) |
|
1332 |
goto bad_response; |
|
1333 |
md_association_delete_response = |
|
1334 |
(LassoIdWsf2DiscoSvcMDAssociationDeleteResponse*)response; |
|
1335 |
lasso_check_good_rc(lasso_idwsf2_discovery_status2rc( |
|
1336 |
md_association_delete_response->Status)); |
|
1337 |
break; |
|
1338 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_QUERY: |
|
1339 |
if (! LASSO_IDWSF2_DISCO_SVC_MD_ASSOCIATION_QUERY_RESPONSE(response)) |
|
1340 |
goto bad_response; |
|
1341 |
md_association_query_response = |
|
1342 |
(LassoIdWsf2DiscoSvcMDAssociationQueryResponse*)response; |
|
1343 |
lasso_check_good_rc(lasso_idwsf2_discovery_status2rc( |
|
1344 |
md_association_query_response->Status)); |
|
1345 |
lasso_assign_list_of_strings(discovery->private_data->svcmdids, |
|
1346 |
md_association_query_response->SvcMDID); |
|
1347 |
break; |
|
1348 |
case LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_UNKNOWN: |
|
1349 |
default: |
|
1350 |
rc = LASSO_PROFILE_ERROR_INVALID_REQUEST; |
|
1351 |
break; |
|
1352 |
} |
|
1353 |
cleanup: |
|
1354 |
return rc; |
|
1355 |
bad_response: |
|
1356 |
return LASSO_PROFILE_ERROR_INVALID_RESPONSE; |
|
1357 |
} |
|
1358 | ||
1359 |
static LassoNodeClass *parent_class = NULL; |
|
1360 | ||
1361 |
static void |
|
1362 |
dispose(GObject *object) |
|
1363 |
{ |
|
1364 |
LassoIdWsf2Discovery *discovery = LASSO_IDWSF2_DISCOVERY(object); |
|
1365 |
if (discovery->private_data->dispose_has_run == TRUE) |
|
1366 |
return; |
|
1367 |
discovery->private_data->dispose_has_run = TRUE; |
|
1368 |
G_OBJECT_CLASS(parent_class)->dispose(object); |
|
1369 |
} |
|
1370 | ||
1371 |
static void |
|
1372 |
finalize(GObject *object) |
|
1373 |
{ |
|
1374 |
LassoIdWsf2Discovery *discovery = LASSO_IDWSF2_DISCOVERY(object); |
|
1375 |
lasso_release(discovery->private_data); |
|
1376 |
discovery->private_data = NULL; |
|
1377 |
G_OBJECT_CLASS(parent_class)->finalize(object); |
|
1378 |
} |
|
1379 | ||
1380 |
static void |
|
1381 |
instance_init(LassoIdWsf2Discovery *discovery) |
|
1382 |
{ |
|
1383 |
discovery->private_data = g_new0(LassoIdWsf2DiscoveryPrivate, 1); |
|
1384 |
discovery->private_data->dispose_has_run = FALSE; |
|
1385 |
} |
|
1386 | ||
1387 |
static xmlNode* |
|
1388 |
get_xmlNode(LassoNode *node, gboolean lasso_dump) |
|
1389 |
{ |
|
1390 |
xmlNode *xmlnode; |
|
1391 |
LassoIdWsf2Discovery *discovery = (LassoIdWsf2Discovery*)node; |
|
1392 | ||
1393 |
if (! LASSO_IS_IDWSF2_PROFILE(node)) |
|
1394 |
return NULL; |
|
1395 | ||
1396 |
xmlnode = parent_class->get_xmlNode(node, lasso_dump); |
|
1397 | ||
1398 |
if (xmlnode && discovery->private_data) { |
|
1399 |
LassoIdWsf2DiscoveryPrivate *pdata = discovery->private_data; |
|
1400 |
if (pdata->metadatas) { |
|
1401 |
xmlNode *metadatas; |
|
1402 |
GList *i; |
|
1403 |
metadatas = xmlNewChild(xmlnode, NULL, BAD_CAST LASSO_IDWSF2_DISCOVERY_ELEMENT_METADATAS, NULL); |
|
1404 |
lasso_foreach(i, pdata->metadatas) { |
|
1405 |
xmlAddChild(metadatas, lasso_node_get_xmlNode(i->data, lasso_dump)); |
|
1406 |
} |
|
1407 |
} |
|
1408 |
if (pdata->requested_services) { |
|
1409 |
xmlNode *requested_services; |
|
1410 |
GList *i; |
|
1411 |
requested_services = xmlNewChild(xmlnode, NULL, BAD_CAST |
|
1412 |
LASSO_IDWSF2_DISCOVERY_ELEMENT_REQUESTED_SERVICES, NULL); |
|
1413 |
lasso_foreach(i, pdata->requested_services) { |
|
1414 |
xmlAddChild(requested_services, lasso_node_get_xmlNode(i->data, lasso_dump)); |
|
1415 |
} |
|
1416 |
} |
|
1417 |
} |
|
1418 | ||
1419 |
return xmlnode; |
|
1420 |
} |
|
1421 | ||
1422 |
static int |
|
1423 |
init_from_xml(LassoNode *node, xmlNode *xmlnode) |
|
1424 |
{ |
|
1425 |
LassoIdWsf2Discovery *discovery = (LassoIdWsf2Discovery*)node; |
|
1426 |
xmlNode *metadatas_node, *requested_services_node; |
|
1427 |
LassoIdWsf2DiscoveryPrivate *pdata; |
|
1428 | ||
1429 |
if (! LASSO_IS_IDWSF2_DISCOVERY(discovery)) |
|
1430 |
return LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ; |
|
1431 | ||
1432 |
parent_class->init_from_xml(node, xmlnode); |
|
1433 | ||
1434 |
if (xmlnode == NULL) |
|
1435 |
return LASSO_XML_ERROR_OBJECT_CONSTRUCTION_FAILED; |
|
1436 | ||
1437 |
metadatas_node = xmlSecFindChild(xmlnode, |
|
1438 |
BAD_CAST LASSO_IDWSF2_DISCOVERY_ELEMENT_METADATAS, |
|
1439 |
BAD_CAST LASSO_LASSO_HREF); |
|
1440 |
requested_services_node = xmlSecFindChild(xmlnode, |
|
1441 |
BAD_CAST LASSO_IDWSF2_DISCOVERY_ELEMENT_REQUESTED_SERVICES, |
|
1442 |
BAD_CAST LASSO_LASSO_HREF); |
|
1443 | ||
1444 |
if (! discovery->private_data) { |
|
1445 |
discovery->private_data = g_new0(LassoIdWsf2DiscoveryPrivate, 1); |
|
1446 |
} |
|
1447 |
pdata = discovery->private_data; |
|
1448 | ||
1449 |
if (metadatas_node) { |
|
1450 |
xmlNode *it; |
|
1451 |
for (it = xmlSecGetNextElementNode(metadatas_node->children); |
|
1452 |
it != NULL; |
|
1453 |
it = xmlSecGetNextElementNode(it->next)) { |
|
1454 |
LassoIdWsf2DiscoSvcMetadata *metadata; |
|
1455 |
metadata = (LassoIdWsf2DiscoSvcMetadata*)lasso_node_new_from_xmlNode(it); |
|
1456 |
if (! LASSO_IS_IDWSF2_DISCO_SVC_METADATA(metadata)) { |
|
1457 |
lasso_release_gobject(metadata); |
|
1458 |
goto error; |
|
1459 |
} |
|
1460 |
lasso_list_add_new_gobject(pdata->metadatas, metadata); |
|
1461 |
} |
|
1462 |
} |
|
1463 |
if (requested_services_node) { |
|
1464 |
xmlNode *it; |
|
1465 |
for (it = xmlSecGetNextElementNode(requested_services_node->children); |
|
1466 |
it != NULL; |
|
1467 |
it = xmlSecGetNextElementNode(it->next)) { |
|
1468 |
LassoIdWsf2DiscoRequestedService *metadata; |
|
1469 |
metadata = (LassoIdWsf2DiscoRequestedService*)lasso_node_new_from_xmlNode(it); |
|
1470 |
if (! LASSO_IS_IDWSF2_DISCO_REQUESTED_SERVICE(metadata)) { |
|
1471 |
lasso_release_gobject(metadata); |
|
1472 |
goto error; |
|
1473 |
} |
|
1474 |
lasso_list_add_new_gobject(pdata->requested_services, metadata); |
|
1475 |
} |
|
1476 |
} |
|
1477 | ||
1478 |
return 0; |
|
1479 |
error: |
|
1480 |
return LASSO_XML_ERROR_OBJECT_CONSTRUCTION_FAILED; |
|
1481 |
} |
|
1482 | ||
1483 |
static void |
|
1484 |
class_init(LassoIdWsf2DiscoveryClass *klass, void *unused G_GNUC_UNUSED) |
|
1485 |
{ |
|
1486 |
parent_class = g_type_class_peek_parent(klass); |
|
1487 |
lasso_node_class_set_nodename(LASSO_NODE_CLASS(klass), "IdWsf2Discovery"); |
|
1488 |
lasso_node_class_set_ns(LASSO_NODE_CLASS(klass), LASSO_LASSO_HREF, LASSO_LASSO_PREFIX); |
|
1489 |
G_OBJECT_CLASS(klass)->dispose = dispose; |
|
1490 |
G_OBJECT_CLASS(klass)->finalize = finalize; |
|
1491 |
klass->parent.parent.parent.get_xmlNode = get_xmlNode; |
|
1492 |
klass->parent.parent.parent.init_from_xml = init_from_xml; |
|
1493 | ||
1494 |
} |
|
1495 | ||
1496 |
GType |
|
1497 |
lasso_idwsf2_discovery_get_type() |
|
1498 |
{ |
|
1499 |
static GType this_type = 0; |
|
1500 | ||
1501 |
if (!this_type) { |
|
1502 |
static const GTypeInfo this_info = { |
|
1503 |
sizeof(LassoIdWsf2DiscoveryClass), |
|
1504 |
NULL, |
|
1505 |
NULL, |
|
1506 |
(GClassInitFunc) class_init, |
|
1507 |
NULL, |
|
1508 |
NULL, |
|
1509 |
sizeof(LassoIdWsf2Discovery), |
|
1510 |
0, |
|
1511 |
(GInstanceInitFunc) instance_init, |
|
1512 |
NULL |
|
1513 |
}; |
|
1514 | ||
1515 |
this_type = g_type_register_static(LASSO_TYPE_IDWSF2_PROFILE, |
|
1516 |
"LassoIdWsf2Discovery", &this_info, 0); |
|
1517 |
} |
|
1518 |
return this_type; |
|
1519 |
} |
|
1520 | ||
1521 |
/** |
|
1522 |
* lasso_idwsf2_discovery_new: |
|
1523 |
* @server:(allow-none):a #LassoServer object, for resolving ProviderID names |
|
1524 |
* |
|
1525 |
* Create a new #LassoIdWsf2Discovery. |
|
1526 |
* |
|
1527 |
* Return value: a newly created #LassoIdWsf2Discovery object; or NULL if an error occured. |
|
1528 |
**/ |
|
1529 |
LassoIdWsf2Discovery* |
|
1530 |
lasso_idwsf2_discovery_new(LassoServer *server) |
|
1531 |
{ |
|
1532 |
LassoIdWsf2Discovery *discovery = NULL; |
|
1533 | ||
1534 |
discovery = g_object_new(LASSO_TYPE_IDWSF2_DISCOVERY, NULL); |
|
1535 |
discovery->parent.parent.server = lasso_ref(server); |
|
1536 | ||
1537 |
return discovery; |
|
1538 |
} |
lasso/id-wsf-2.0/discovery.h | ||
---|---|---|
1 |
/* $Id: discovery.h,v 1.30 2006/02/21 09:51:49 Exp $ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#ifndef __LASSO_IDWSF2_DISCOVERY_H__ |
|
25 |
#define __LASSO_IDWSF2_DISCOVERY_H__ |
|
26 | ||
27 |
#ifdef __cplusplus |
|
28 |
extern "C" { |
|
29 | ||
30 |
#endif /* __cplusplus */ |
|
31 | ||
32 |
#include "profile.h" |
|
33 |
#include "data_service.h" |
|
34 | ||
35 |
#include "../xml/id-wsf-2.0/disco_query.h" |
|
36 |
#include "../xml/id-wsf-2.0/disco_query_response.h" |
|
37 |
#include "../xml/id-wsf-2.0/disco_svc_metadata.h" |
|
38 | ||
39 |
#define LASSO_TYPE_IDWSF2_DISCOVERY (lasso_idwsf2_discovery_get_type()) |
|
40 |
#define LASSO_IDWSF2_DISCOVERY(obj) \ |
|
41 |
(G_TYPE_CHECK_INSTANCE_CAST((obj), LASSO_TYPE_IDWSF2_DISCOVERY, LassoIdWsf2Discovery)) |
|
42 |
#define LASSO_IDWSF2_DISCOVERY_CLASS(klass) \ |
|
43 |
(G_TYPE_CHECK_CLASS_CAST((klass), LASSO_TYPE_IDWSF2_DISCOVERY, LassoIdWsf2DiscoveryClass)) |
|
44 |
#define LASSO_IS_IDWSF2_DISCOVERY(obj) \ |
|
45 |
(G_TYPE_CHECK_INSTANCE_TYPE((obj), LASSO_TYPE_IDWSF2_DISCOVERY)) |
|
46 |
#define LASSO_IS_IDWSF2_DISCOVERY_CLASS(klass) \ |
|
47 |
(G_TYPE_CHECK_CLASS_TYPE ((klass), LASSO_TYPE_IDWSF2_DISCOVERY)) |
|
48 |
#define LASSO_IDWSF2_DISCOVERY_GET_CLASS(o) \ |
|
49 |
(G_TYPE_INSTANCE_GET_CLASS ((o), LASSO_TYPE_IDWSF2_DISCOVERY, LassoIdWsf2DiscoveryClass)) |
|
50 | ||
51 |
typedef struct _LassoIdWsf2Discovery LassoIdWsf2Discovery; |
|
52 |
typedef struct _LassoIdWsf2DiscoveryClass LassoIdWsf2DiscoveryClass; |
|
53 |
typedef struct _LassoIdWsf2DiscoveryPrivate LassoIdWsf2DiscoveryPrivate; |
|
54 | ||
55 |
struct _LassoIdWsf2Discovery { |
|
56 |
LassoIdWsf2Profile parent; |
|
57 | ||
58 |
/*< private >*/ |
|
59 |
LassoIdWsf2DiscoveryPrivate *private_data; |
|
60 |
}; |
|
61 | ||
62 |
struct _LassoIdWsf2DiscoveryClass { |
|
63 |
LassoIdWsf2ProfileClass parent; |
|
64 |
}; |
|
65 | ||
66 |
LASSO_EXPORT GType lasso_idwsf2_discovery_get_type(void); |
|
67 | ||
68 |
LASSO_EXPORT LassoIdWsf2Discovery* lasso_idwsf2_discovery_new(LassoServer *server); |
|
69 | ||
70 |
/** |
|
71 |
* LassoIdWsf2DiscoveryRequestType: |
|
72 |
* @LASSO_IDWSF2_DISCOVERY_METADATA_REGISTER_REQUEST: |
|
73 |
* @LASSO_IDWSF2_DISCOVERY_METADATA_ASSOCIATION_REQUEST: |
|
74 |
* @LASSO_IDWSF2_DISCOVERY_METADATA_DISSOCIATION_REQUEST: |
|
75 |
* @LASSO_IDWSF2_DISCOVERY_QUERY: |
|
76 |
*/ |
|
77 |
typedef enum { |
|
78 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_UNKNOWN, |
|
79 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_QUERY, |
|
80 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_QUERY, |
|
81 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_REGISTER, |
|
82 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_REPLACE, |
|
83 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_DELETE, |
|
84 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_ADD, |
|
85 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_DELETE, |
|
86 |
LASSO_IDWSF2_DISCOVERY_REQUEST_TYPE_MD_ASSOCIATION_QUERY, |
|
87 |
} LassoIdWsf2DiscoveryRequestType; |
|
88 | ||
89 |
/** |
|
90 |
* LassoIdWsf2DiscoveryQueryResultType: |
|
91 |
* @LASSO_IDWSF2_DISCOVERY_QUERY_RESULT_TYPE_BEST: |
|
92 |
* @LASSO_IDWSF2_DISCOVERY_QUERY_RESULT_TYPE_ALL: |
|
93 |
* @LASSO_IDWSF2_DISCOVERY_QUERY_RESULT_TYPE_ONLY_ONE: |
|
94 |
*/ |
|
95 |
typedef enum { |
|
96 |
LASSO_IDWSF2_DISCOVERY_QUERY_RESULT_TYPE_NONE, |
|
97 |
LASSO_IDWSF2_DISCOVERY_QUERY_RESULT_TYPE_BEST, |
|
98 |
LASSO_IDWSF2_DISCOVERY_QUERY_RESULT_TYPE_ALL, |
|
99 |
LASSO_IDWSF2_DISCOVERY_QUERY_RESULT_TYPE_ONLY_ONE |
|
100 |
} LassoIdWsf2DiscoveryQueryResultType; |
|
101 | ||
102 |
/* Request initialization */ |
|
103 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_init_query(LassoIdWsf2Discovery *discovery); |
|
104 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_init_metadata_query(LassoIdWsf2Discovery *discovery); |
|
105 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_init_metadata_register(LassoIdWsf2Discovery *discovery); |
|
106 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_init_metadata_replace(LassoIdWsf2Discovery *discovery); |
|
107 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_init_metadata_delete(LassoIdWsf2Discovery *discovery); |
|
108 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_init_metadata_association_add( |
|
109 |
LassoIdWsf2Discovery *discovery); |
|
110 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_init_metadata_association_delete( |
|
111 |
LassoIdWsf2Discovery *discovery); |
|
112 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_init_metadata_association_query( |
|
113 |
LassoIdWsf2Discovery *discovery); |
|
114 | ||
115 |
/* Add metadatas to operate on, to make request, but also to make responses. */ |
|
116 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_add_service_metadata( |
|
117 |
LassoIdWsf2Discovery *idwsf2_discovery, LassoIdWsf2DiscoSvcMetadata *service_metadata); |
|
118 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_add_simple_service_metadata( |
|
119 |
LassoIdWsf2Discovery *idwsf2_discovery, const char *abstract, |
|
120 |
const char *provider_id, GList *service_types, GList *options, const char *address, |
|
121 |
GList *security_mechanisms); |
|
122 |
LASSO_EXPORT GList* lasso_idwsf2_discovery_get_metadatas(LassoIdWsf2Discovery *discovery); |
|
123 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_add_requested_service(LassoIdWsf2Discovery *discovery, |
|
124 |
GList *service_types, GList *provider_ids, GList *options, GList *security_mechanisms, |
|
125 |
GList *frameworks, GList *actions, LassoIdWsf2DiscoveryQueryResultType result_type, |
|
126 |
const char *req_id); |
|
127 | ||
128 |
/* Build the request message */ |
|
129 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_build_request_msg(LassoIdWsf2Discovery *discovery, |
|
130 |
const char *security_mechanism); |
|
131 | ||
132 |
/* Handle a request */ |
|
133 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_process_request_msg(LassoIdWsf2Discovery *discovery, |
|
134 |
const char *message); |
|
135 |
LASSO_EXPORT LassoIdWsf2DiscoveryRequestType lasso_idwsf2_discovery_get_request_type(LassoIdWsf2Discovery *discovery); |
|
136 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_validate_request(LassoIdWsf2Discovery *discovery); |
|
137 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_fail_request(LassoIdWsf2Discovery *discovery, |
|
138 |
const char *status_code, const char *status_code2); |
|
139 | ||
140 |
/* Process the response */ |
|
141 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_discovery_process_response_msg(LassoIdWsf2Discovery *discovery, |
|
142 |
const char *msg); |
|
143 |
LASSO_EXPORT GList* lasso_idwsf2_discovery_get_endpoint_references(LassoIdWsf2Discovery *discovery); |
|
144 |
LASSO_EXPORT GList* lasso_idwsf2_discovery_get_svcmdids(LassoIdWsf2Discovery *discovery); |
|
145 |
LASSO_EXPORT void lasso_idwsf2_discovery_set_svcmdids(LassoIdWsf2Discovery *discovery, GList *svcmdids); |
|
146 | ||
147 | ||
148 |
#ifdef __cplusplus |
|
149 |
} |
|
150 |
#endif /* __cplusplus */ |
|
151 | ||
152 |
#endif /* __LASSO_IDWSF2_DISCOVERY_H__ */ |
|
153 |
lasso/id-wsf-2.0/id_wsf_2.h | ||
---|---|---|
1 |
/* $Id$ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#ifndef __LASSO_IDWSF2_ID_WSF_2_H__ |
|
25 |
#define __LASSO_IDWSF2_ID_WSF_2_H__ |
|
26 | ||
27 |
#include "session.h" |
|
28 |
#include "identity.h" |
|
29 |
#include "discovery.h" |
|
30 |
#include "data_service.h" |
|
31 |
#include "server.h" |
|
32 | ||
33 | ||
34 |
#endif /* __LASSO_IDWSF2_ID_WSF_2_H__ */ |
lasso/id-wsf-2.0/identity.c | ||
---|---|---|
1 |
/* $Id$ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#include "identity.h" |
|
25 |
#include "../xml/id-wsf-2.0/idwsf2_strings.h" |
|
26 |
#include "../utils.h" |
|
27 |
#include "../id-ff/identity.h" |
|
28 |
#include "../id-ff/identityprivate.h" |
|
29 | ||
30 |
gint |
|
31 |
lasso_identity_add_svc_md_id(LassoIdentity *identity, gchar *svcMDID) |
|
32 |
{ |
|
33 |
g_return_val_if_fail(LASSO_IS_IDENTITY(identity), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); |
|
34 |
g_return_val_if_fail(svcMDID != NULL, LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); |
|
35 | ||
36 |
lasso_list_add_string(identity->private_data->svcMDID, svcMDID); |
|
37 |
identity->is_dirty = TRUE; |
|
38 | ||
39 |
return 0; |
|
40 |
} |
|
41 | ||
42 |
/** |
|
43 |
* lasso_identity_get_svc_md_ids: |
|
44 |
* @identity: a #LassoIdentity object |
|
45 |
* |
|
46 |
* Return value:(element-type string): a list of all collected svcMDIDs |
|
47 |
*/ |
|
48 |
GList* |
|
49 |
lasso_identity_get_svc_md_ids(LassoIdentity *identity) |
|
50 |
{ |
|
51 |
g_return_val_if_fail(LASSO_IS_IDENTITY(identity), NULL); |
|
52 | ||
53 |
return identity->private_data->svcMDID; |
|
54 |
} |
lasso/id-wsf-2.0/identity.h | ||
---|---|---|
1 |
/* $Id: identity.h 2633 2005-09-05 10:00:07Z dlaniel $ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#ifndef __LASSO_IDWSF2_IDENTITY_H__ |
|
25 |
#define __LASSO_IDWSF2_IDENTITY_H__ |
|
26 | ||
27 |
#ifdef __cplusplus |
|
28 |
extern "C" { |
|
29 |
#endif /* __cplusplus */ |
|
30 | ||
31 |
#include "../id-ff/identity.h" |
|
32 |
#include "../export.h" |
|
33 |
#include <glib.h> |
|
34 | ||
35 |
LASSO_EXPORT lasso_error_t lasso_identity_add_svc_md_id(LassoIdentity *identity, gchar *svcMDID); |
|
36 | ||
37 |
LASSO_EXPORT GList* lasso_identity_get_svc_md_ids(LassoIdentity *identity); |
|
38 | ||
39 |
#ifdef __cplusplus |
|
40 |
} |
|
41 |
#endif /* __cplusplus */ |
|
42 | ||
43 |
#endif /* __LASSO_IDWSF2_IDENTITY_H__ */ |
|
44 |
lasso/id-wsf-2.0/idwsf2_helper.c | ||
---|---|---|
1 |
/* $Id: idwsf2_data_service.c 3101 2007-05-30 11:40:10Z dlaniel $ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#include "idwsf2_helper.h" |
|
25 |
#include "../xml/id-wsf-2.0/idwsf2_strings.h" |
|
26 |
#include "../xml/id-wsf-2.0/disco_abstract.h" |
|
27 |
#include "../xml/id-wsf-2.0/disco_service_type.h" |
|
28 |
#include "../xml/id-wsf-2.0/disco_provider_id.h" |
|
29 |
#include "../xml/id-wsf-2.0/sec_token.h" |
|
30 |
#include "../xml/id-wsf-2.0/sbf_framework.h" |
|
31 |
#include "../xml/misc_text_node.h" |
|
32 |
#include "../utils.h" |
|
33 | ||
34 |
/** |
|
35 |
* SECTION: idwsf2-helper |
|
36 |
* |
|
37 |
* Methods to help manipulate EPR elements |
|
38 |
*/ |
|
39 | ||
40 |
/** |
|
41 |
* lasso_wsa_endpoint_reference_get_idwsf2_service_type: |
|
42 |
* |
|
43 |
* Return the disco:ServiceType metadata element content |
|
44 |
* |
|
45 |
* Return value: (transfer none): the content of the first disco:ServiceType metadata, or NULL if |
|
46 |
* none is found. |
|
47 |
*/ |
|
48 |
const char* |
|
49 |
lasso_wsa_endpoint_reference_get_idwsf2_service_type(const LassoWsAddrEndpointReference *epr) |
|
50 |
{ |
|
51 |
LassoIdWsf2DiscoServiceType *disco2_service_type; |
|
52 | ||
53 |
if (! LASSO_IS_WSA_ENDPOINT_REFERENCE (epr) || epr->Metadata == NULL) |
|
54 |
return NULL; |
|
55 |
disco2_service_type = lasso_extract_gobject_from_list (LassoIdWsf2DiscoServiceType, |
|
56 |
LASSO_TYPE_IDWSF2_DISCO_SERVICE_TYPE, epr->Metadata->any); |
|
57 |
if (disco2_service_type) { |
|
58 |
return disco2_service_type->content; |
|
59 |
} |
|
60 |
return NULL; |
|
61 |
} |
|
62 | ||
63 |
/** |
|
64 |
* lasso_wsa_endpoint_reference_get_idwsf2_provider_id |
|
65 |
* @epr: a #LassoWsAddrEndpointReference object |
|
66 |
* |
|
67 |
* Return the provider ID from the the metadata element of the EPR. |
|
68 |
* |
|
69 |
* Return value: an entityID identifier or NULL if none is found, or the element is empty. |
|
70 |
*/ |
|
71 |
const char* |
|
72 |
lasso_wsa_endpoint_reference_get_idwsf2_provider_id(const LassoWsAddrEndpointReference *epr) |
|
73 |
{ |
|
74 |
LassoIdWsf2DiscoProviderID *disco2_provider_id; |
|
75 | ||
76 |
if (! LASSO_IS_WSA_ENDPOINT_REFERENCE (epr) || epr->Metadata == NULL) |
|
77 |
return NULL; |
|
78 | ||
79 |
/* Get the service type from the EPR */ |
|
80 |
disco2_provider_id = lasso_extract_gobject_from_list (LassoIdWsf2DiscoProviderID, |
|
81 |
LASSO_TYPE_IDWSF2_DISCO_PROVIDER_ID, epr->Metadata->any); |
|
82 | ||
83 |
if (disco2_provider_id) { |
|
84 |
return disco2_provider_id->content; |
|
85 |
} |
|
86 | ||
87 |
return NULL; |
|
88 |
} |
|
89 | ||
90 |
/** |
|
91 |
* lasso_wsa_endpoint_reference_get_idwsf2_security_context_for_security_mechanism: |
|
92 |
* @epr: a #LassoWsAddrEndpointReference object |
|
93 |
* @security_mech_predicate: (allow-none): a predicate to test for security mechanism |
|
94 |
* @security_mech_id: (allow-none): a security mechanism identifier |
|
95 |
* @create: allow to create the element if none if found, @security_mech_id is mandatory when create |
|
96 |
* is TRUE. |
|
97 |
* |
|
98 |
* Return value: (transfer none): a #LassoIdWsf2DiscoSecurityContext, or NULL if none was found and |
|
99 |
* created is FALSE. |
|
100 |
*/ |
|
101 |
LassoIdWsf2DiscoSecurityContext* |
|
102 |
lasso_wsa_endpoint_reference_get_idwsf2_security_context_for_security_mechanism( |
|
103 |
const LassoWsAddrEndpointReference *epr, |
|
104 |
gboolean (*sech_mech_predicate)(const char *), |
|
105 |
const char *security_mech_id, |
|
106 |
gboolean create) |
|
107 |
{ |
|
108 |
LassoIdWsf2DiscoSecurityContext *created = NULL; |
|
109 |
LassoMiscTextNode *new_security_mech_id_declaration; |
|
110 | ||
111 |
if (! LASSO_IS_WSA_ENDPOINT_REFERENCE (epr) || epr->Metadata == NULL) |
|
112 |
return NULL; |
|
113 | ||
114 |
lasso_foreach_full_begin(LassoIdWsf2DiscoSecurityContext*, context, it1, epr->Metadata->any); |
|
115 |
if (LASSO_IS_IDWSF2_DISCO_SECURITY_CONTEXT (context)) { |
|
116 |
lasso_foreach_full_begin(char*, textnode, it2, context->SecurityMechID); |
|
117 |
if (lasso_strisequal(textnode,security_mech_id) || sech_mech_predicate(textnode)) { |
|
118 |
return context; |
|
119 |
} |
|
120 |
lasso_foreach_full_end() |
|
121 |
} |
|
122 |
lasso_foreach_full_end(); |
|
123 | ||
124 |
if (create && security_mech_id) { |
|
125 |
created = lasso_idwsf2_disco_security_context_new(); |
|
126 |
new_security_mech_id_declaration = |
|
127 |
lasso_misc_text_node_new_with_string(security_mech_id); |
|
128 |
new_security_mech_id_declaration->name = "SecurityMechID"; |
|
129 |
new_security_mech_id_declaration->ns_href = LASSO_IDWSF2_DISCOVERY_HREF; |
|
130 |
new_security_mech_id_declaration->ns_prefix = LASSO_IDWSF2_DISCOVERY_PREFIX; |
|
131 |
lasso_list_add_new_gobject (created->SecurityMechID, |
|
132 |
new_security_mech_id_declaration); |
|
133 |
lasso_list_add_new_gobject (epr->Metadata->any, created); |
|
134 |
} |
|
135 |
if (create && ! security_mech_id) { |
|
136 |
message(G_LOG_LEVEL_WARNING, "cannot create a LassoIdWsf2DiscoSecurityContext withou a security_mech_id"); |
|
137 |
} |
|
138 | ||
139 |
return created; |
|
140 |
} |
|
141 | ||
142 |
/** |
|
143 |
* lasso_wsa_endpoint_reference_get_token_by_usage: |
|
144 |
* @epr: a #LassoWsAddrEndpointReference object |
|
145 |
* @security_mech_predicate: (allow-none): a predicate to test for security mechanism |
|
146 |
* @security_mech_id: (allow-none): a security mechanism identifier |
|
147 |
* @usage: the usage to make of the token |
|
148 |
* |
|
149 |
* Try to find a token for the given usage and security mechanism, the security can be chosen by |
|
150 |
* name or by a predicate. |
|
151 |
* |
|
152 |
* Return value: a #LassoNode object or a subclass, representing the token. |
|
153 |
*/ |
|
154 |
static LassoNode* |
|
155 |
lasso_wsa_endpoint_reference_get_token_by_usage( |
|
156 |
const LassoWsAddrEndpointReference *epr, |
|
157 |
gboolean (*sec_mech_predicate)(const char *), |
|
158 |
const char *security_mech_id, const char* usage) |
|
159 |
{ |
|
160 |
LassoIdWsf2DiscoSecurityContext *security_context; |
|
161 | ||
162 |
security_context = |
|
163 |
lasso_wsa_endpoint_reference_get_idwsf2_security_context_for_security_mechanism( |
|
164 |
epr, sec_mech_predicate, security_mech_id, TRUE); |
|
165 |
lasso_foreach_full_begin (LassoIdWsf2SecToken*, token, iter, security_context->Token); |
|
166 |
if (LASSO_IS_IDWSF2_SEC_TOKEN (token)) { |
|
167 |
if (usage && lasso_strisequal(token->usage,usage)) { |
|
168 |
if (LASSO_IS_NODE(token->any)) { |
|
169 |
return (LassoNode*)token->any; |
|
170 |
} else if (token->ref) { |
|
171 |
message(G_LOG_LEVEL_WARNING, "sec:Token ref attribute is not supported"); |
|
172 |
return NULL; |
|
173 |
} |
|
174 |
} |
|
175 | ||
176 |
} |
|
177 |
lasso_foreach_full_end(); |
|
178 | ||
179 |
return NULL; |
|
180 |
} |
|
181 | ||
182 |
/** |
|
183 |
* lasso_wsa_endpoint_reference_get_security_token: |
|
184 |
* @epr: a #LassoWsAddrEndpointReference object |
|
185 |
* @sech_mech_predicate:(allow-none): a boolean function to select the security mechanism for which |
|
186 |
* we want the security token |
|
187 |
* @security_mech_id:(allow-none): an optional specific security mechanism identifier to select the |
|
188 |
* security token. |
|
189 |
* |
|
190 |
* Return the first security token found in the metadata of the @epr object which qualify with |
|
191 |
* respect to the predicate or the given security mechanism identifier. It is an error to pass both |
|
192 |
* of @sech_mech_predicate and @security_mech_id as NULL. |
|
193 |
* |
|
194 |
* Return value:(transfer none): a #LassoNode object or NULL if the query cannot be satisfied. |
|
195 |
*/ |
|
196 |
LassoNode* |
|
197 |
lasso_wsa_endpoint_reference_get_security_token (const LassoWsAddrEndpointReference *epr, |
|
198 |
gboolean (*sech_mech_predicate)(const char *), const char *security_mech_id) |
|
199 |
{ |
|
200 |
return lasso_wsa_endpoint_reference_get_token_by_usage (epr, sech_mech_predicate, |
|
201 |
security_mech_id, LASSO_IDWSF2_SEC_TOKEN_USAGE_SECURITY_TOKEN); |
|
202 |
} |
|
203 | ||
204 |
/** |
|
205 |
* lasso_wsa_endpoint_reference_get_target_identity_token: |
|
206 |
* @epr: a #LassoWsAddrEndpointReference object |
|
207 |
* @sech_mech_predicate:(allow-none): a boolean function to select the security mechanism for which |
|
208 |
* we want the security token |
|
209 |
* @security_mech_id:(allow-none): an optional specific security mechanism identifier to select the |
|
210 |
* security token. |
|
211 |
* |
|
212 |
* Return the first target identity token found in the metadata of the @epr object which qualify |
|
213 |
* with respect to the predicate or the given security mechanism identifier. It is an error to pass |
|
214 |
* both of @sech_mech_predicate and @security_mech_id as NULL. |
|
215 |
* |
|
216 |
* Return value:(transfer none): a #LassoNode object or NULL if the query cannot be satisfied. |
|
217 |
*/ |
|
218 |
LassoNode* |
|
219 |
lasso_wsa_endpoint_reference_get_target_identity_token(const LassoWsAddrEndpointReference *epr, |
|
220 |
gboolean (*sech_mech_predicate)(const char *), const char *security_mech_id) |
|
221 |
{ |
|
222 |
return lasso_wsa_endpoint_reference_get_token_by_usage (epr, sech_mech_predicate, |
|
223 |
security_mech_id, LASSO_IDWSF2_SEC_TOKEN_USAGE_TARGET_IDENTITY); |
|
224 |
} |
|
225 | ||
226 |
/** |
|
227 |
* lasso_wsa_endpoint_reference_new_for_idwsf2_service: |
|
228 |
* @address: the URL of the SOAP endpoint where the service is anchored |
|
229 |
* @service_type: an URI identifying the ID-WSF 2.0 service type |
|
230 |
* @provider_id: an URI identifying the SAML 2.0 service provider hosting the service, this should |
|
231 |
* help in finding key material for security mechanisms. |
|
232 |
* @abstract: a human description of the service. |
|
233 |
* |
|
234 |
* Create and populate a new #LassoWsAddrEndpointReference object. |
|
235 |
* |
|
236 |
* Return value: a newly created #LassoWsAddrEndpointReference. |
|
237 |
*/ |
|
238 |
LassoWsAddrEndpointReference* |
|
239 |
lasso_wsa_endpoint_reference_new_for_idwsf2_service(const char *address, |
|
240 |
const char *service_type, const char *provider_id, const char *abstract) |
|
241 |
{ |
|
242 |
LassoWsAddrEndpointReference *epr = NULL; |
|
243 |
LassoWsAddrMetadata *metadata = NULL; |
|
244 | ||
245 |
/* Check parameters */ |
|
246 |
if (address == NULL || service_type == NULL || provider_id == NULL || abstract == NULL) |
|
247 |
return NULL; |
|
248 | ||
249 |
/* Build EndpointReference */ |
|
250 |
epr = lasso_wsa_endpoint_reference_new(); |
|
251 | ||
252 |
/* Address */ |
|
253 |
epr->Address = lasso_wsa_attributed_uri_new_with_string(address); |
|
254 | ||
255 |
/* Metadatas */ |
|
256 |
metadata = lasso_wsa_metadata_new(); |
|
257 |
epr->Metadata = metadata; |
|
258 | ||
259 |
/* Abstract */ |
|
260 |
lasso_list_add_new_gobject(metadata->any, |
|
261 |
lasso_idwsf2_disco_abstract_new_with_string(abstract)); |
|
262 | ||
263 |
/* ProviderID */ |
|
264 |
lasso_list_add_new_gobject(metadata->any, |
|
265 |
lasso_idwsf2_disco_provider_id_new_with_string(provider_id)); |
|
266 | ||
267 |
/* ServiceType */ |
|
268 |
lasso_list_add_new_gobject(metadata->any, |
|
269 |
lasso_idwsf2_disco_service_type_new_with_string(service_type)); |
|
270 | ||
271 |
/* Framework */ |
|
272 |
lasso_list_add_new_gobject(metadata->any, |
|
273 |
lasso_idwsf2_sbf_framework_new_full("2.0")); |
|
274 | ||
275 |
return epr; |
|
276 |
} |
|
277 | ||
278 |
/** |
|
279 |
* lasso_wsa_endpoint_reference_add_security_token: |
|
280 |
* @epr: a #LassoWsAddrEndpointReference object |
|
281 |
* @security_token: a security token as a #LassoNode object |
|
282 |
* @security_mechanisms:(element-type utf8): a list of security mechanism |
|
283 |
* for whom the token is made |
|
284 |
* |
|
285 |
* Add a new security context declaration for the given security mechanisms identifiers and populate |
|
286 |
* it with a security token. |
|
287 |
* |
|
288 |
* Return value: 0 if successfull, an error code otherwise. |
|
289 |
*/ |
|
290 |
int |
|
291 |
lasso_wsa_endpoint_reference_add_security_token(LassoWsAddrEndpointReference *epr, |
|
292 |
LassoNode *security_token, GList *security_mechanisms) |
|
293 |
{ |
|
294 |
LassoIdWsf2SecToken *sec_token = NULL; |
|
295 |
LassoWsAddrMetadata *metadata = NULL; |
|
296 |
LassoIdWsf2DiscoSecurityContext *security_context = NULL; |
|
297 |
int rc = 0; |
|
298 | ||
299 |
lasso_bad_param(WSA_ENDPOINT_REFERENCE, epr); |
|
300 |
lasso_bad_param(NODE, security_token); |
|
301 | ||
302 |
lasso_extract_node_or_fail(metadata, epr->Metadata, WSA_METADATA, LASSO_PARAM_ERROR_INVALID_VALUE); |
|
303 | ||
304 |
sec_token = lasso_idwsf2_sec_token_new(); |
|
305 |
lasso_assign_gobject(sec_token->any, security_token); |
|
306 |
lasso_assign_string(sec_token->usage, LASSO_IDWSF2_SEC_TOKEN_USAGE_SECURITY_TOKEN); |
|
307 | ||
308 |
security_context = lasso_idwsf2_disco_security_context_new(); |
|
309 |
lasso_assign_list_of_strings(security_context->SecurityMechID, |
|
310 |
security_mechanisms); |
|
311 |
lasso_list_add_new_gobject(security_context->Token, sec_token); |
|
312 |
lasso_list_add_new_gobject(metadata->any, security_context); |
|
313 |
cleanup: |
|
314 |
return rc; |
|
315 |
} |
|
316 | ||
317 |
static GHashTable *_mapping = NULL; |
|
318 | ||
319 |
static GHashTable *_get_mapping() { |
|
320 |
if (_mapping == NULL) { |
|
321 |
_mapping = g_hash_table_new_full(g_str_hash, g_str_equal, (GDestroyNotify) g_free, NULL); |
|
322 |
} |
|
323 |
return _mapping; |
|
324 |
} |
|
325 | ||
326 | ||
327 |
/** |
|
328 |
* lasso_wsa_endpoint_reference_associate_service_to_type: |
|
329 |
* @service_type_uri: a service type to associate |
|
330 |
* @g_type: the type of the profile object handling this service type |
|
331 |
* |
|
332 |
* Associate a profile type to a service type. |
|
333 |
* |
|
334 |
* Return value: 0 if successful, an error code otherwise. |
|
335 |
*/ |
|
336 |
int |
|
337 |
lasso_wsa_endpoint_reference_associate_service_to_type( |
|
338 |
const char *service_type_uri, GType g_type) |
|
339 |
{ |
|
340 |
int rc = 0; |
|
341 | ||
342 |
lasso_check_non_empty_string(service_type_uri); |
|
343 |
if (! g_type_is_a(g_type, LASSO_TYPE_IDWSF2_PROFILE)) { |
|
344 |
return LASSO_PARAM_ERROR_INVALID_VALUE; |
|
345 |
} |
|
346 |
g_hash_table_insert(_get_mapping(), |
|
347 |
g_strdup(service_type_uri), (gpointer)g_type); |
|
348 |
cleanup: |
|
349 |
return rc; |
|
350 |
} |
|
351 | ||
352 |
/** |
|
353 |
* lasso_wsa_endpoint_reference_get_service: |
|
354 |
* @epr: a #LassoWsAddrEndpointReference object |
|
355 |
* |
|
356 |
* Get a profile object able to communicate with the service represented by this EPR. |
|
357 |
* |
|
358 |
* Return object: a newly created #LassoIdWsf2Profile instance. |
|
359 |
*/ |
|
360 |
LassoIdWsf2Profile * |
|
361 |
lasso_wsa_endpoint_reference_get_service( |
|
362 |
LassoWsAddrEndpointReference *epr) |
|
363 |
{ |
|
364 |
GType type; |
|
365 |
const char *service_type_uri; |
|
366 | ||
367 |
if (! LASSO_IS_WSA_ENDPOINT_REFERENCE(epr)) |
|
368 |
return NULL; |
|
369 | ||
370 |
service_type_uri = lasso_wsa_endpoint_reference_get_idwsf2_service_type(epr); |
|
371 |
type = (GType)g_hash_table_lookup(_get_mapping(), service_type_uri); |
|
372 |
if (type) { |
|
373 |
LassoIdWsf2Profile *profile; |
|
374 | ||
375 |
profile = (LassoIdWsf2Profile*)g_object_new(type, NULL); |
|
376 |
lasso_idwsf2_profile_set_epr(profile, epr); |
|
377 | ||
378 |
return profile; |
|
379 |
} |
|
380 |
return NULL; |
|
381 |
} |
lasso/id-wsf-2.0/idwsf2_helper.h | ||
---|---|---|
1 |
/* $Id: wsf_profile.h,v 1.13 2006/11/14 17:07:30 Exp $ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#ifndef __LASSO_IDWSF2_HELPER_H__ |
|
25 |
#define __LASSO_IDWSF2_HELPER_H__ |
|
26 | ||
27 |
#ifdef __cplusplus |
|
28 |
extern "C" { |
|
29 |
#endif /* __cplusplus */ |
|
30 | ||
31 |
#include "../xml/ws/wsa_endpoint_reference.h" |
|
32 |
#include "../xml/id-wsf-2.0/disco_security_context.h" |
|
33 |
#include "profile.h" |
|
34 | ||
35 | ||
36 |
const char* lasso_wsa_endpoint_reference_get_idwsf2_service_type( |
|
37 |
const LassoWsAddrEndpointReference *epr); |
|
38 | ||
39 |
const char* lasso_wsa_endpoint_reference_get_idwsf2_provider_id( |
|
40 |
const LassoWsAddrEndpointReference *epr); |
|
41 | ||
42 |
LassoIdWsf2DiscoSecurityContext* |
|
43 |
lasso_wsa_endpoint_reference_get_idwsf2_security_context_for_security_mechanism( |
|
44 |
const LassoWsAddrEndpointReference *epr, |
|
45 |
gboolean (*sech_mech_predicate)(const char *), |
|
46 |
const char *security_mech_id, |
|
47 |
gboolean create); |
|
48 | ||
49 |
LassoNode* lasso_wsa_endpoint_reference_get_security_token (const LassoWsAddrEndpointReference *epr, |
|
50 |
gboolean (*sech_mech_predicate)(const char *), const char *security_mech_id); |
|
51 | ||
52 |
LASSO_EXPORT LassoNode* lasso_wsa_endpoint_reference_get_target_identity_token( |
|
53 |
const LassoWsAddrEndpointReference *epr, |
|
54 |
gboolean (*sech_mech_predicate)(const char *), const char *security_mech_id); |
|
55 | ||
56 |
LASSO_EXPORT LassoWsAddrEndpointReference* lasso_wsa_endpoint_reference_new_for_idwsf2_service( |
|
57 |
const char *address, const char *service_ype, const char *provider_id, |
|
58 |
const char *abstract); |
|
59 | ||
60 |
LASSO_EXPORT lasso_error_t lasso_wsa_endpoint_reference_add_security_token(LassoWsAddrEndpointReference *epr, |
|
61 |
LassoNode *security_token, GList *security_mechanisms); |
|
62 | ||
63 |
LASSO_EXPORT LassoIdWsf2Profile *lasso_wsa_endpoint_reference_get_service( |
|
64 |
LassoWsAddrEndpointReference *epr); |
|
65 | ||
66 |
LASSO_EXPORT lasso_error_t lasso_wsa_endpoint_reference_associate_service_to_type( |
|
67 |
const char *service_type_uri, GType g_type); |
|
68 | ||
69 |
#ifdef __cplusplus |
|
70 |
} |
|
71 |
#endif /* __cplusplus */ |
|
72 | ||
73 |
#endif /* __LASSO_IDWSF2_HELPER_H__ */ |
|
74 |
lasso/id-wsf-2.0/private.h | ||
---|---|---|
1 |
/* $Id$ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#ifndef __LASSO_ID_WSF_20_PRIVATE_H__ |
|
25 |
#define __LASSO_ID_WSF_20_PRIVATE_H__ |
|
26 | ||
27 |
#ifdef __cplusplus |
|
28 |
extern "C" { |
|
29 |
#endif /* __cplusplus */ |
|
30 | ||
31 |
extern gboolean lasso_flag_follow_id_wsf_stupid_semantic; |
|
32 | ||
33 |
#ifdef __cplusplus |
|
34 |
} |
|
35 |
#endif /* __cplusplus */ |
|
36 | ||
37 |
#endif /* __LASSO_ID_WSF_20_PRIVATE_H__ */ |
lasso/id-wsf-2.0/profile.c | ||
---|---|---|
1 |
/* $Id: wsf_profile.c,v 1.45 2007/01/05 16:11:02 Exp $ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#include <stdio.h> |
|
25 |
#include "../xml/private.h" |
|
26 |
#include <libxml/xpath.h> |
|
27 |
#include <libxml/xpathInternals.h> |
|
28 | ||
29 |
#include <xmlsec/xmltree.h> |
|
30 |
#include <xmlsec/xmldsig.h> |
|
31 |
#include <xmlsec/templates.h> |
|
32 |
#include <xmlsec/crypto.h> |
|
33 | ||
34 |
#include "../id-ff/server.h" |
|
35 |
#include "../id-ff/serverprivate.h" |
|
36 |
#include "../id-ff/providerprivate.h" |
|
37 | ||
38 |
#include "../saml-2.0/profileprivate.h" |
|
39 | ||
40 |
#include "profile.h" |
|
41 |
#include "../xml/id-wsf-2.0/idwsf2_strings.h" |
|
42 |
#include "../xml/idwsf_strings.h" |
|
43 |
#include "session.h" |
|
44 | ||
45 |
#include "../xml/soap-1.1/soap_fault.h" |
|
46 |
#include "../xml/soap_binding_correlation.h" |
|
47 |
#include "../xml/soap_binding_provider.h" |
|
48 |
#include "../xml/soap_binding_processing_context.h" |
|
49 |
#include "../xml/xml_enc.h" |
|
50 |
#include "../xml/id-wsf-2.0/sb2_sender.h" |
|
51 |
#include "../xml/id-wsf-2.0/sb2_redirect_request.h" |
|
52 |
#include "../xml/id-wsf-2.0/util_status.h" |
|
53 | ||
54 |
#include "../xml/ws/wsse_security_header.h" |
|
55 | ||
56 |
#include "../xml/saml-2.0/saml2_assertion.h" |
|
57 |
#include "../xml/misc_text_node.h" |
|
58 |
#include "../utils.h" |
|
59 |
#include "idwsf2_helper.h" |
|
60 |
#include "soap_binding.h" |
|
61 |
#include "../id-wsf/wsf_utils.h" |
|
62 |
#include "../saml-2.0/saml2_helper.h" |
|
63 | ||
64 |
#define LASSO_IDWSF2_PROFILE_ELEMENT_EPR "Epr" |
|
65 |
#define LASSO_IDWSF2_PROFILE_ELEMENT_REQUEST "SoapEnvelopeRequest" |
|
66 |
#define LASSO_IDWSF2_PROFILE_ELEMENT_RESPONSE "SoapEnvelopeResponse" |
|
67 | ||
68 |
/** |
|
69 |
* LassoIdWsf2ProfilePrivate: |
|
70 |
* @epr: the #LassoWsAddrEndpointReference object representing the targetd service |
|
71 |
* @soap_envelope_request: the #LassoSoapEnvelope object for the request message |
|
72 |
* @soap_envelope_response: the #LassoSoapEnvelope object for the response |
|
73 |
*/ |
|
74 |
struct _LassoIdWsf2ProfilePrivate { |
|
75 |
LassoWsAddrEndpointReference *epr; |
|
76 |
LassoSoapEnvelope *soap_envelope_request; |
|
77 |
LassoSoapEnvelope *soap_envelope_response; |
|
78 |
}; |
|
79 | ||
80 |
#define private_accessors(type, name) \ |
|
81 |
static type \ |
|
82 |
_get_##name(LassoIdWsf2Profile *idwsf2_profile)\ |
|
83 |
{ \ |
|
84 |
if (idwsf2_profile && idwsf2_profile->private_data) \ |
|
85 |
{ \ |
|
86 |
return idwsf2_profile->private_data->name; \ |
|
87 |
} \ |
|
88 |
return 0; \ |
|
89 |
} \ |
|
90 |
static void \ |
|
91 |
_set_##name(LassoIdWsf2Profile *idwsf2_profile, \ |
|
92 |
type what) \ |
|
93 |
{ \ |
|
94 |
if (idwsf2_profile && idwsf2_profile->private_data) \ |
|
95 |
{ \ |
|
96 |
lasso_assign_gobject(idwsf2_profile->private_data->name, what); \ |
|
97 |
} \ |
|
98 |
} |
|
99 | ||
100 |
private_accessors(LassoWsAddrEndpointReference*,epr) |
|
101 |
private_accessors(LassoSoapEnvelope*,soap_envelope_request) |
|
102 |
private_accessors(LassoSoapEnvelope*,soap_envelope_response) |
|
103 | ||
104 | ||
105 |
static void |
|
106 |
_add_fault_for_rc(LassoIdWsf2Profile *profile, int rc) |
|
107 |
{ |
|
108 |
LassoSoapFault *fault; |
|
109 |
char *code; |
|
110 | ||
111 |
if (rc) { |
|
112 |
code = g_strdup_printf("LASSO_ERROR_%i", rc); |
|
113 |
fault = lasso_soap_fault_new_full(code, lasso_strerror(rc)); |
|
114 |
lasso_release(code); |
|
115 |
lasso_release_list_of_gobjects(_get_soap_envelope_response(profile)->Header->Other); |
|
116 |
lasso_soap_envelope_add_to_body(_get_soap_envelope_response(profile), (LassoNode*)fault); |
|
117 |
} |
|
118 |
} |
|
119 | ||
120 |
/** |
|
121 |
* lasso_idwsf2_profile_build_soap_envelope: |
|
122 |
* @refToMessageId: (allow-none): the string ID of the request |
|
123 |
* @providerId: (allow-none): the providerID of the sender |
|
124 |
* |
|
125 |
* Build a new SOAP envelope, for transmitting an ID-WSF request of response. If the message is a |
|
126 |
* response, refer to the request whose ID is @refToMessageId. |
|
127 |
* |
|
128 |
* Return value: a new #LassoSoapEnvelope if successful, NULL otherwise. |
|
129 |
*/ |
|
130 |
static LassoSoapEnvelope* |
|
131 |
lasso_idwsf2_profile_build_soap_envelope(const char *refToMessageId, const char *providerID) |
|
132 |
{ |
|
133 |
LassoSoapEnvelope *envelope; |
|
134 |
LassoSoapHeader *header; |
|
135 |
LassoSoapBody *body; |
|
136 |
LassoIdWsf2Sb2Sender *sender; |
|
137 |
LassoWsAddrAttributedURI *message_id; |
|
138 | ||
139 |
/* Body */ |
|
140 |
body = lasso_soap_body_new(); |
|
141 |
body->Id = lasso_build_unique_id(32); |
|
142 |
envelope = lasso_soap_envelope_new(body); |
|
143 | ||
144 |
/* Header */ |
|
145 |
header = lasso_soap_header_new(); |
|
146 |
envelope->Header = header; |
|
147 | ||
148 |
if (providerID) { |
|
149 |
/* Sender */ |
|
150 |
sender = lasso_idwsf2_sb2_sender_new(); |
|
151 |
lasso_assign_string(sender->providerID, providerID); |
|
152 |
lasso_list_add_gobject(header->Other, sender); |
|
153 |
} |
|
154 | ||
155 |
message_id = lasso_soap_envelope_get_message_id(envelope, TRUE); |
|
156 |
message_id->content = lasso_build_unique_id(32); |
|
157 | ||
158 |
if (refToMessageId) { |
|
159 |
LassoWsAddrAttributedURI *relates_to; |
|
160 |
relates_to = lasso_wsa_attributed_uri_new_with_string(refToMessageId); |
|
161 |
lasso_node_set_custom_nodename((LassoNode*)relates_to, "RelatesTo"); |
|
162 |
lasso_list_add_gobject(header->Other, relates_to); |
|
163 |
} |
|
164 | ||
165 |
return envelope; |
|
166 |
} |
|
167 | ||
168 |
/** |
|
169 |
* lasso_idwsf2_profile_init_request: |
|
170 |
* @profile: a #LassoIdWsf2Profile object |
|
171 |
* |
|
172 |
* Initialize a new SOAP ID-WSF 2.0 request. Clear the existing request if one is currently set. |
|
173 |
* |
|
174 |
* Return value: 0 if successful, an error code otherwise. |
|
175 |
*/ |
|
176 |
gint |
|
177 |
lasso_idwsf2_profile_init_request(LassoIdWsf2Profile *idwsf2_profile) |
|
178 |
{ |
|
179 |
LassoSoapEnvelope *envelope = NULL; |
|
180 |
LassoProfile *profile = NULL; |
|
181 |
LassoWsAddrEndpointReference *epr; |
|
182 |
const char *provider_id = NULL; |
|
183 |
int rc = 0; |
|
184 | ||
185 |
lasso_bad_param(IDWSF2_PROFILE, idwsf2_profile); |
|
186 |
profile = &idwsf2_profile->parent; |
|
187 |
epr = lasso_idwsf2_profile_get_epr(idwsf2_profile); |
|
188 | ||
189 |
if (epr) { |
|
190 |
LassoIdWsf2DiscoSecurityContext *security_context; |
|
191 | ||
192 |
security_context = |
|
193 |
lasso_wsa_endpoint_reference_get_idwsf2_security_context_for_security_mechanism( |
|
194 |
epr, lasso_security_mech_id_is_bearer_authentication, NULL, FALSE); |
|
195 |
if (! security_context) { |
|
196 |
return LASSO_WSF_PROFILE_ERROR_UNSUPPORTED_SECURITY_MECHANISM; |
|
197 |
} |
|
198 |
} |
|
199 | ||
200 |
if (LASSO_IS_SERVER(profile->server)) { |
|
201 |
provider_id = profile->server->parent.ProviderID; |
|
202 |
} |
|
203 |
envelope = lasso_idwsf2_profile_build_soap_envelope(NULL, provider_id); |
|
204 |
_set_soap_envelope_request(idwsf2_profile, envelope); |
|
205 |
lasso_release_gobject(profile->request); |
|
206 | ||
207 |
lasso_release_gobject(envelope); |
|
208 |
return rc; |
|
209 |
} |
|
210 | ||
211 |
/** |
|
212 |
* lasso_idwsf2_profile_init_response: |
|
213 |
* @profile: a #LassoIdWsf2Profile object |
|
214 |
* |
|
215 |
* Initialize a new SOAP ID-WSF 2.0 response. Clear the existing response if one is currently set. |
|
216 |
* |
|
217 |
* Return value: 0 if successful, an error code otherwise. |
|
218 |
*/ |
|
219 |
gint |
|
220 |
lasso_idwsf2_profile_init_response(LassoIdWsf2Profile *profile) |
|
221 |
{ |
|
222 |
char *provider_id = NULL; |
|
223 |
LassoSoapEnvelope *soap_envelope; |
|
224 |
int rc = 0; |
|
225 |
LassoWsAddrAttributedURI *request_message_id; |
|
226 |
char *request_message_id_content = NULL; |
|
227 | ||
228 |
lasso_bad_param(IDWSF2_PROFILE, profile); |
|
229 | ||
230 |
if (LASSO_IS_SERVER(profile->parent.server)) { |
|
231 |
provider_id = profile->parent.server->parent.ProviderID; |
|
232 |
} |
|
233 |
request_message_id = lasso_soap_envelope_get_message_id( |
|
234 |
lasso_idwsf2_profile_get_soap_envelope_request(profile), FALSE); |
|
235 |
if (request_message_id) { |
|
236 |
request_message_id_content = request_message_id->content; |
|
237 |
} |
|
238 |
soap_envelope = lasso_idwsf2_profile_build_soap_envelope(request_message_id_content, provider_id); |
|
239 |
_set_soap_envelope_response(profile, soap_envelope); |
|
240 |
lasso_release_gobject(profile->parent.response); |
|
241 | ||
242 |
return rc; |
|
243 |
} |
|
244 | ||
245 |
/** |
|
246 |
* lasso_idwsf2_profile_build_request_msg: |
|
247 |
* @profile: a #LassoIdWsf2Profile object |
|
248 |
* |
|
249 |
* Serialize and sign, if needed, the SOAP request message, put the result in |
|
250 |
* <programlisting>LASSO_PROFILE(profile)->msg_body</programlisting>. |
|
251 |
* |
|
252 |
* FIXME: really do sign messages. |
|
253 |
* |
|
254 |
* Return value: 0 if successful, LASSO_PROFILE_ERROR_BUILDING_REQUEST_FAILED. |
|
255 |
*/ |
|
256 |
gint |
|
257 |
lasso_idwsf2_profile_build_request_msg(LassoIdWsf2Profile *profile, const char *security_mech_id) |
|
258 |
{ |
|
259 |
LassoWsAddrEndpointReference *epr; |
|
260 |
LassoSoapEnvelope *envelope; |
|
261 |
int rc = 0; |
|
262 | ||
263 |
lasso_bad_param(IDWSF2_PROFILE, profile); |
|
264 |
epr = lasso_idwsf2_profile_get_epr(profile); |
|
265 |
envelope = _get_soap_envelope_request(profile); |
|
266 | ||
267 |
/* Handle SOAP Binding and WS-Security, when given an EPR */ |
|
268 |
if (LASSO_IS_WSA_ENDPOINT_REFERENCE(epr)) { |
|
269 |
if (epr->Address != NULL) { |
|
270 |
lasso_assign_string(profile->parent.msg_url, epr->Address->content); |
|
271 |
} |
|
272 | ||
273 |
/* Default try bearer */ |
|
274 |
if (security_mech_id == NULL || lasso_security_mech_id_is_bearer_authentication( |
|
275 |
security_mech_id)) { |
|
276 |
LassoNode *security_token; |
|
277 | ||
278 |
security_token = lasso_wsa_endpoint_reference_get_security_token(epr, |
|
279 |
lasso_security_mech_id_is_bearer_authentication, NULL); |
|
280 |
if (security_token) { |
|
281 |
xmlNode *real_thing; |
|
282 | ||
283 |
real_thing = lasso_node_get_original_xmlnode(security_token); |
|
284 |
if (! real_thing) { |
|
285 |
message(G_LOG_LEVEL_CRITICAL, "Cannot put the unaltered security token in the header"); |
|
286 |
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_BUILDING_REQUEST_FAILED); |
|
287 |
} else { |
|
288 |
LassoMiscTextNode *misc; |
|
289 | ||
290 |
misc = lasso_misc_text_node_new_with_xml_node(real_thing); |
|
291 |
lasso_soap_envelope_add_security_token (envelope, (LassoNode*)misc); |
|
292 |
lasso_release_gobject(misc); |
|
293 |
} |
|
294 |
} else { |
|
295 |
message(G_LOG_LEVEL_WARNING, "No security mechanism specified, " \ |
|
296 |
"failed to find security token for Bearer mechanism"); |
|
297 |
} |
|
298 |
if (lasso_wsa_endpoint_reference_get_target_identity_token(epr, |
|
299 |
lasso_security_mech_id_is_bearer_authentication, NULL) != NULL) { |
|
300 |
message(G_LOG_LEVEL_CRITICAL, "TargetIdentity token are not supported"); |
|
301 |
} |
|
302 |
} else { |
|
303 |
message(G_LOG_LEVEL_CRITICAL, "Only Bearer security mechanism is supported by ID-WSF 2.0 module of Lasso"); |
|
304 |
} |
|
305 |
} |
|
306 | ||
307 |
LASSO_PROFILE(profile)->msg_body = lasso_node_export_to_xml( |
|
308 |
LASSO_NODE(_get_soap_envelope_request(profile))); |
|
309 | ||
310 |
if (! LASSO_PROFILE(profile)->msg_body) |
|
311 |
return LASSO_PROFILE_ERROR_BUILDING_REQUEST_FAILED; |
|
312 | ||
313 |
cleanup: |
|
314 |
return rc; |
|
315 |
} |
|
316 | ||
317 |
/** |
|
318 |
* lasso_idwsf2_profile_process_request_msg: |
|
319 |
* @wsf2_profile: a #LassoIdWsf2Profile object |
|
320 |
* @message: a received SOAP message |
|
321 |
* |
|
322 |
* Parse a SOAP request message and initialize the SOAP Envelope for the response. |
|
323 |
* |
|
324 |
* Return value: 0 if successful, an error code otherwise among: |
|
325 |
* <itemizedlist> |
|
326 |
* <listitem><para>LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ if @profile is not a #LassoIdWsf2Profile |
|
327 |
* object,</para></listitem> |
|
328 |
* <listitem><para>LASSO_PARAM_ERROR_INVALID_VALUE if message is NULL,</para></listitem> |
|
329 |
* <listitem><para>LASSO_PROFILE_ERROR_INVALID_MSG if we cannot parse the message,</para></listitem> |
|
330 |
* <listitem><para>LASSO_SOAP_ERROR_MISSING_BODY if the message has no body |
|
331 |
* content.</para></listitem> |
|
332 |
* </itemizedlist> |
|
333 |
*/ |
|
334 |
gint |
|
335 |
lasso_idwsf2_profile_process_request_msg(LassoIdWsf2Profile *wsf2_profile, const gchar *message) |
|
336 |
{ |
|
337 |
LassoProfile *profile = NULL; |
|
338 |
LassoSoapEnvelope *envelope = NULL; |
|
339 |
LassoWsAddrAttributedURI *message_id; |
|
340 |
char *message_id_content = NULL; |
|
341 |
char *provider_id; |
|
342 |
int rc = 0; |
|
343 | ||
344 |
lasso_bad_param(IDWSF2_PROFILE, wsf2_profile); |
|
345 |
lasso_check_non_empty_string(message); |
|
346 | ||
347 |
/* Clean some fields */ |
|
348 |
lasso_release_gobject(wsf2_profile->parent.nameIdentifier); |
|
349 |
lasso_release_string(wsf2_profile->parent.remote_providerID); |
|
350 |
lasso_release_string(wsf2_profile->parent.msg_body); |
|
351 |
lasso_release_gobject(wsf2_profile->private_data->soap_envelope_response); |
|
352 |
lasso_release_gobject(wsf2_profile->parent.response); |
|
353 | ||
354 |
/* Get soap request */ |
|
355 |
profile = LASSO_PROFILE(wsf2_profile); |
|
356 |
|
|
357 |
lasso_assign_new_gobject(wsf2_profile->private_data->soap_envelope_request, |
|
358 |
lasso_soap_envelope_new_from_message(message)); |
|
359 |
if (! LASSO_IS_SOAP_ENVELOPE(_get_soap_envelope_request(wsf2_profile))) { |
|
360 |
return LASSO_PROFILE_ERROR_INVALID_MSG; |
|
361 |
} |
|
362 |
envelope = _get_soap_envelope_request(wsf2_profile); |
|
363 |
if (envelope != NULL && envelope->Body != NULL && envelope->Body->any != NULL && |
|
364 |
LASSO_IS_NODE(envelope->Body->any->data)) { |
|
365 |
lasso_assign_gobject(profile->request, envelope->Body->any->data); |
|
366 |
} else { |
|
367 |
rc = LASSO_SOAP_ERROR_MISSING_BODY; |
|
368 |
} |
|
369 | ||
370 |
/* Initialize soap response */ |
|
371 |
message_id = lasso_soap_envelope_get_message_id( |
|
372 |
_get_soap_envelope_request(wsf2_profile), FALSE); |
|
373 |
if (message_id) { |
|
374 |
message_id_content = message_id->content; |
|
375 |
} |
|
376 |
if (LASSO_IS_SERVER(profile->server)) { |
|
377 |
provider_id = profile->server->parent.ProviderID; |
|
378 |
lasso_assign_new_gobject(wsf2_profile->private_data->soap_envelope_response, |
|
379 |
lasso_idwsf2_profile_build_soap_envelope(message_id_content, provider_id)); |
|
380 |
} |
|
381 |
_add_fault_for_rc(wsf2_profile, rc); |
|
382 | ||
383 |
cleanup: |
|
384 |
return rc; |
|
385 |
} |
|
386 | ||
387 |
/** |
|
388 |
* lasso_idwsf2_profile_check_security_mechanism: |
|
389 |
* @profile: a #LassoIdWsf2Profile object |
|
390 |
* @security_mech_id:(allow-none): the security mechanism to enforce, if none is provided Bearer is |
|
391 |
* assumed. |
|
392 |
* |
|
393 |
* Check ID-WSF 2.0 Security Mechanism upon the received request. It is mandatory that a |
|
394 |
* #LassoServer is setted for the @profile object. |
|
395 |
* |
|
396 |
* Return value: 0 if the request passed the check, an error code otherwise. |
|
397 |
*/ |
|
398 |
gint |
|
399 |
lasso_idwsf2_profile_check_security_mechanism(LassoIdWsf2Profile *profile, |
|
400 |
const char *security_mech_id) |
|
401 |
{ |
|
402 |
LassoSoapEnvelope *envelope = NULL; |
|
403 |
int rc = LASSO_WSF_PROFILE_ERROR_SECURITY_MECHANISM_CHECK_FAILED; |
|
404 | ||
405 |
if (! LASSO_IS_SERVER(profile->parent.server)) |
|
406 |
return LASSO_PROFILE_ERROR_MISSING_SERVER; |
|
407 | ||
408 |
lasso_bad_param(IDWSF2_PROFILE, profile); |
|
409 |
envelope = _get_soap_envelope_request(profile); |
|
410 |
/* Verify security mechanism */ |
|
411 |
if (security_mech_id == NULL || |
|
412 |
lasso_security_mech_id_is_bearer_authentication(security_mech_id) || lasso_security_mech_id_is_saml_authentication(security_mech_id)) { |
|
413 |
LassoSaml2Assertion *assertion; |
|
414 |
LassoProvider *issuer; |
|
415 |
const char *sender_id = NULL, *local_service_id = NULL; |
|
416 |
const char *name_qualifier = NULL, *sp_name_qualifier = NULL; |
|
417 |
LassoSaml2AssertionValidationState validation_state; |
|
418 |
LassoProviderRole role; |
|
419 | ||
420 |
assertion = lasso_soap_envelope_get_saml2_security_token (envelope); |
|
421 |
if (assertion == NULL) |
|
422 |
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_MISSING_ASSERTION); |
|
423 |
validation_state = lasso_saml2_assertion_validate_conditions(assertion, NULL); |
|
424 |
if (validation_state != LASSO_SAML2_ASSERTION_VALID) |
|
425 |
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_INVALID_ASSERTION_CONDITIONS); |
|
426 |
issuer = lasso_saml2_assertion_get_issuer_provider(assertion, profile->parent.server); |
|
427 |
if (! issuer) |
|
428 |
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_UNKNOWN_ISSUER); |
|
429 |
if (issuer == &profile->parent.server->parent || issuer->role == 0) { |
|
430 |
role = issuer->private_data->roles; |
|
431 |
} else { |
|
432 |
role = issuer->role; |
|
433 |
} |
|
434 |
if ((role & LASSO_PROVIDER_ROLE_IDP) == 0) |
|
435 |
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_ISSUER_IS_NOT_AN_IDP); |
|
436 |
lasso_check_good_rc(lasso_provider_verify_single_node_signature(issuer, |
|
437 |
(LassoNode*)assertion, "ID")); |
|
438 |
lasso_check_good_rc(lasso_saml2_assertion_decrypt_subject(assertion, |
|
439 |
profile->parent.server)); |
|
440 |
if (assertion && assertion->Subject && assertion->Subject->NameID) { |
|
441 |
name_qualifier = assertion->Subject->NameID->NameQualifier; |
|
442 |
sp_name_qualifier = assertion->Subject->NameID->SPNameQualifier; |
|
443 |
} |
|
444 |
if (! name_qualifier || lasso_strisnotequal(name_qualifier,issuer->ProviderID)) |
|
445 |
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_INVALID_ASSERTION); |
|
446 |
/* There is two cases for the NameID of the security assertion: |
|
447 |
* - we are the IdP and the Wsp, so the NameQualifier is us and the SPNameQualifier is the |
|
448 |
* Sender |
|
449 |
* - we are a simple Wsp, so the NameQualifier is an IdP we know and the |
|
450 |
* SPNameQualifier is us. |
|
451 |
*/ |
|
452 |
if (! profile->parent.server) |
|
453 |
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_MISSING_SERVER); |
|
454 |
local_service_id = profile->parent.server->parent.ProviderID; |
|
455 |
sender_id = lasso_soap_envelope_sb2_get_provider_id(envelope); |
|
456 |
if (! sender_id) |
|
457 |
goto_cleanup_with_rc(LASSO_WSF_PROFILE_ERROR_MISSING_SENDER_ID); |
|
458 |
if (local_service_id && lasso_strisequal(local_service_id,name_qualifier) && |
|
459 |
sp_name_qualifier && lasso_strisequal(sp_name_qualifier,sender_id)) { |
|
460 |
/* Ok. */ |
|
461 |
} else if (sp_name_qualifier && lasso_strisequal(sp_name_qualifier,local_service_id)) { |
|
462 |
/* Ok. */ |
|
463 |
} else { |
|
464 |
goto_cleanup_with_rc(LASSO_PROFILE_ERROR_INVALID_ASSERTION); |
|
465 |
} |
|
466 |
} |
|
467 | ||
468 |
if (security_mech_id != NULL && ! lasso_security_mech_id_is_bearer_authentication(security_mech_id)) { |
|
469 |
message(G_LOG_LEVEL_WARNING, "Only Bearer mechanism is supported!"); |
|
470 |
goto_cleanup_with_rc(LASSO_ERROR_UNIMPLEMENTED); |
|
471 |
} |
|
472 |
rc = 0; |
|
473 |
cleanup: |
|
474 |
_add_fault_for_rc(profile, rc); |
|
475 |
return rc; |
|
476 |
} |
|
477 | ||
478 |
/** |
|
479 |
* lasso_idwsf2_profile_init_soap_fault_response: |
|
480 |
* @profile: a #LassoIdWsf2Profile object |
|
481 |
* @faultcode: a SOAP fault code, see #LASSO_SOAP_FAULT_CLIENT, #LASSO_SOAP_FAULT_SERVER. |
|
482 |
* @faultstring:(allow-none): a human description of the error |
|
483 |
* @details:(allow-none)(element-type LassoNode): complementary data describing the error, you can use |
|
484 |
* #LassoIdWsf2UtilStatus. |
|
485 |
* |
|
486 |
* Initialize a new SOAP 1.1 fault. |
|
487 |
* |
|
488 |
* Return value: 0 if successful, an error code otherwise. |
|
489 |
*/ |
|
490 |
gint |
|
491 |
lasso_idwsf2_profile_init_soap_fault_response(LassoIdWsf2Profile *profile, const char *faultcode, |
|
492 |
const char *faultstring, GList *details) |
|
493 |
{ |
|
494 |
int rc = 0; |
|
495 |
LassoSoapEnvelope *envelope; |
|
496 | ||
497 |
lasso_check_good_rc(lasso_idwsf2_profile_init_response(profile)); |
|
498 |
lasso_check_good_rc(lasso_profile_set_soap_fault_response(&profile->parent, faultcode, |
|
499 |
faultstring, details)); |
|
500 |
envelope = lasso_idwsf2_profile_get_soap_envelope_response(profile); |
|
501 |
if (envelope) { |
|
502 |
lasso_list_add_gobject(envelope->Body->any, profile->parent.response); |
|
503 |
} |
|
504 |
cleanup: |
|
505 |
return rc; |
|
506 |
} |
|
507 | ||
508 |
/** |
|
509 |
* lasso_idwsf2_profile_redirect_user_for_interaction: |
|
510 |
* @profile: a #LassoIdWsf2Profile object |
|
511 |
* @redirect_url: an URL where the user must be redirected |
|
512 |
* |
|
513 |
* Create a SOAP fault containing a RedirectRequest element, with a redirectURL property set to |
|
514 |
* @redirect_url concatenated with the parameter "transactionID" set to the messageID of the |
|
515 |
* response message. |
|
516 |
* |
|
517 |
* Return value: 0 if successful, an error code otherwise. |
|
518 |
*/ |
|
519 |
gint |
|
520 |
lasso_idwsf2_profile_redirect_user_for_interaction( |
|
521 |
LassoIdWsf2Profile *profile, const gchar *redirect_url, gboolean for_data) |
|
522 |
{ |
|
523 |
LassoSoapFault *fault = NULL; |
|
524 |
char *url = NULL; |
|
525 |
LassoIdWsf2Sb2RedirectRequest *redirect_request = NULL; |
|
526 |
LassoIdWsf2Sb2UserInteractionHint hint; |
|
527 |
LassoIdWsf2Sb2UserInteractionHeader *user_interaction_header; |
|
528 |
LassoSoapEnvelope *soap_envelope_request; |
|
529 |
LassoWsAddrAttributedURI *messageID; |
|
530 |
int rc = 0; |
|
531 | ||
532 |
lasso_bad_param(IDWSF2_PROFILE, profile); |
|
533 |
lasso_check_non_empty_string(redirect_url); |
|
534 | ||
535 |
soap_envelope_request = lasso_idwsf2_profile_get_soap_envelope_request(profile); |
|
536 |
if (! soap_envelope_request) { |
|
537 |
return LASSO_PROFILE_ERROR_MISSING_REQUEST; |
|
538 |
} |
|
539 |
hint = lasso_soap_envelope_get_sb2_user_interaction_hint(soap_envelope_request); |
|
540 |
switch (hint) { |
|
541 |
case LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_DO_NOT_INTERACT: |
|
542 |
goto_cleanup_with_rc(LASSO_WSF_PROFILE_ERROR_SERVER_INTERACTION_REQUIRED); |
|
543 |
case LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_DO_NOT_INTERACT_FOR_DATA: |
|
544 |
if (for_data) { |
|
545 |
goto_cleanup_with_rc(LASSO_WSF_PROFILE_ERROR_SERVER_INTERACTION_REQUIRED_FOR_DATA); |
|
546 |
} |
|
547 |
default: |
|
548 |
break; |
|
549 |
} |
|
550 |
user_interaction_header = |
|
551 |
lasso_soap_envelope_get_sb2_user_interaction_header(soap_envelope_request, FALSE); |
|
552 |
if (user_interaction_header == FALSE) { |
|
553 |
goto_cleanup_with_rc(LASSO_WSF_PROFILE_ERROR_REDIRECT_REQUEST_UNSUPPORTED_BY_REQUESTER); |
|
554 |
} |
|
555 | ||
556 |
messageID = lasso_soap_envelope_get_message_id(_get_soap_envelope_response(profile), FALSE); |
|
557 |
if (! messageID || ! messageID->content) { |
|
558 |
goto_cleanup_with_rc( |
|
559 |
LASSO_WSF_PROFILE_ERROR_INVALID_OR_MISSING_REFERENCE_TO_MESSAGE_ID); |
|
560 |
} |
|
561 |
if (strchr(redirect_url, '?')) { |
|
562 |
url = g_strconcat(redirect_url, "&transactionID=", messageID->content, NULL); |
|
563 |
} else { |
|
564 |
url = g_strconcat(redirect_url, "?transactionID=", messageID->content, NULL); |
|
565 |
} |
|
566 |
redirect_request = lasso_idwsf2_sb2_redirect_request_new_full(url); |
|
567 |
lasso_release(url); |
|
568 |
lasso_check_good_rc(lasso_idwsf2_profile_init_soap_fault_response(profile, |
|
569 |
LASSO_SOAP_FAULT_CODE_SERVER, "Server Error", &(GList){ .data = |
|
570 |
redirect_request, .next = NULL, .prev = NULL } )); |
|
571 | ||
572 |
cleanup: |
|
573 |
if (rc) { |
|
574 |
LassoIdWsf2UtilStatus *status; |
|
575 |
const char *status_code = NULL; |
|
576 |
fault = (LassoSoapFault*)profile->parent.response; |
|
577 |
lasso_assign_string(fault->faultcode, LASSO_SOAP_FAULT_CODE_SERVER); |
|
578 |
switch (rc) { |
|
579 |
case LASSO_WSF_PROFILE_ERROR_SERVER_INTERACTION_REQUIRED: |
|
580 |
status_code = LASSO_IDWSF2_SB2_STATUS_CODE_SERVER_INTERACTION_REQUIRED; |
|
581 |
break; |
|
582 |
case LASSO_WSF_PROFILE_ERROR_SERVER_INTERACTION_REQUIRED_FOR_DATA: |
|
583 |
status_code = LASSO_IDWSF2_SB2_STATUS_CODE_SERVER_INTERACTION_REQUIRED; |
|
584 |
break; |
|
585 |
case LASSO_WSF_PROFILE_ERROR_REDIRECT_REQUEST_UNSUPPORTED_BY_REQUESTER: |
|
586 |
status_code = "RedirectRequestNeeded"; |
|
587 |
break; |
|
588 |
default: |
|
589 |
status_code = "UnknownInteraction error"; |
|
590 |
break; |
|
591 |
} |
|
592 |
if (status_code) { |
|
593 |
status = lasso_idwsf2_util_status_new_with_code(status_code, NULL); |
|
594 |
lasso_idwsf2_profile_init_soap_fault_response(profile, |
|
595 |
LASSO_SOAP_FAULT_CODE_SERVER, NULL, |
|
596 |
&(GList){ .data = status, .next = NULL, .prev = NULL}); |
|
597 |
} else { |
|
598 |
lasso_idwsf2_profile_init_soap_fault_response(profile, |
|
599 |
LASSO_SOAP_FAULT_CODE_SERVER, NULL, NULL); |
|
600 |
} |
|
601 | ||
602 |
} |
|
603 |
lasso_release_gobject(redirect_request); |
|
604 |
return rc; |
|
605 |
} |
|
606 |
/** |
|
607 |
* lasso_idwsf2_profile_build_response_msg: |
|
608 |
* @idwsf2_profile: a #LassoIdWsf2Profile object |
|
609 |
* |
|
610 |
* Serialize and sign the SOAP, if needed, the response message, put the result in |
|
611 |
* <programlisting>LASSO_PROFILE(profile)->msg_body</programlisting>. |
|
612 |
* |
|
613 |
* Return value: 0 if successful, LASSO_PROFILE_ERROR_BUILDING_RESPONSE_FAILED otherwise. |
|
614 |
*/ |
|
615 |
gint |
|
616 |
lasso_idwsf2_profile_build_response_msg(LassoIdWsf2Profile *idwsf2_profile) |
|
617 |
{ |
|
618 |
LassoSoapEnvelope *envelope; |
|
619 | ||
620 |
lasso_bad_param(IDWSF2_PROFILE, idwsf2_profile); |
|
621 | ||
622 |
envelope = lasso_idwsf2_profile_get_soap_envelope_response(idwsf2_profile); |
|
623 |
if (envelope == NULL) { |
|
624 |
return LASSO_PROFILE_ERROR_MISSING_RESPONSE; |
|
625 |
} |
|
626 |
idwsf2_profile->parent.msg_body = lasso_node_export_to_xml((LassoNode*)envelope); |
|
627 | ||
628 |
if (! LASSO_PROFILE(idwsf2_profile)->msg_body) { |
|
629 |
return LASSO_PROFILE_ERROR_BUILDING_RESPONSE_FAILED; |
|
630 |
} |
|
631 |
return 0; |
|
632 |
} |
|
633 | ||
634 |
/** |
|
635 |
* lasso_idwsf2_profile_process_response_msg: |
|
636 |
* @profile: a #LassoIdWsf2Profile object |
|
637 |
* @message: a string containing a response message |
|
638 |
* |
|
639 |
* Parse a response received by SOAP. Place the parsed message in the #LassoIdWsf2Profile structure |
|
640 |
* in the @soap_envelope_response field and the content of the body in the @response field. |
|
641 |
* |
|
642 |
* Return value: 0 if successful, one of those error codes if the call fails: |
|
643 |
* <itemizedlist> |
|
644 |
* <listitem><para>LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ if first parameter is not |
|
645 |
* a #LassoIdWsf2Profile object,</para></listitem> |
|
646 |
* <listitem><para>LASSO_PARAM_ERROR_INVALID_VALUE if message is NULL,</para></listitem> |
|
647 |
* <listitem><para>LASSO_SOAP_ERROR_MISSING_BODY if no body element is found,</para></listitem> |
|
648 |
* <listitem><para>LASSO_PROFILE_ERROR_MISSING_RESPONSE if the body element is |
|
649 |
* empty.</para></listitem> |
|
650 |
* </itemizedlist> |
|
651 |
*/ |
|
652 |
gint |
|
653 |
lasso_idwsf2_profile_process_response_msg(LassoIdWsf2Profile *profile, const gchar *message) |
|
654 |
{ |
|
655 |
LassoSoapEnvelope *envelope = NULL; |
|
656 |
int rc = 0; |
|
657 | ||
658 |
lasso_bad_param(IDWSF2_PROFILE, profile); |
|
659 |
lasso_check_non_empty_string(message); |
|
660 | ||
661 |
envelope = lasso_soap_envelope_new_from_message(message); |
|
662 |
_set_soap_envelope_response(profile, envelope); |
|
663 | ||
664 |
goto_cleanup_if_fail_with_rc (envelope != NULL, |
|
665 |
LASSO_PROFILE_ERROR_INVALID_RESPONSE); |
|
666 |
goto_cleanup_if_fail_with_rc (envelope->Body != NULL, |
|
667 |
LASSO_SOAP_ERROR_MISSING_BODY); |
|
668 |
goto_cleanup_if_fail_with_rc (envelope->Body->any != NULL && |
|
669 |
LASSO_IS_NODE(envelope->Body->any->data), |
|
670 |
LASSO_PROFILE_ERROR_MISSING_RESPONSE); |
|
671 | ||
672 |
lasso_assign_gobject(profile->parent.response, |
|
673 |
envelope->Body->any->data); |
|
674 | ||
675 |
if (LASSO_IS_SOAP_FAULT(profile->parent.response)) { |
|
676 |
LassoSoapFault *fault = (LassoSoapFault*)profile->parent.response; |
|
677 |
if (LASSO_IS_SOAP_DETAIL(fault->Detail)) { |
|
678 |
LassoIdWsf2Sb2RedirectRequest *redirect_request; |
|
679 |
redirect_request = |
|
680 |
lasso_extract_gobject_from_list( |
|
681 |
LassoIdWsf2Sb2RedirectRequest, |
|
682 |
LASSO_TYPE_IDWSF2_SB2_REDIRECT_REQUEST, |
|
683 |
fault->Detail->any); |
|
684 |
if (redirect_request) { |
|
685 |
lasso_assign_string(profile->parent.msg_url, redirect_request->redirectURL); |
|
686 |
return LASSO_WSF_PROFILE_ERROR_REDIRECT_REQUEST; |
|
687 |
} |
|
688 |
return LASSO_WSF_PROFILE_ERROR_SOAP_FAULT; |
|
689 | ||
690 |
} |
|
691 |
} |
|
692 | ||
693 |
cleanup: |
|
694 |
return rc; |
|
695 |
} |
|
696 | ||
697 |
/** |
|
698 |
* lasso_idwsf2_profile_get_soap_envelope_request: |
|
699 |
* @idwsf2_profile: a #LassoIdWsf2Profile object |
|
700 |
* |
|
701 |
* Return the last parsed SOAP request object. |
|
702 |
* |
|
703 |
* Return value:(transfer none): a #LassoSoapEnvelope object or NULL if no request as ever been |
|
704 |
* parsed with this object. You must free this object. |
|
705 |
*/ |
|
706 |
LassoSoapEnvelope* |
|
707 |
lasso_idwsf2_profile_get_soap_envelope_request(LassoIdWsf2Profile *idwsf2_profile) |
|
708 |
{ |
|
709 |
return _get_soap_envelope_request(idwsf2_profile); |
|
710 | ||
711 |
} |
|
712 | ||
713 |
/** |
|
714 |
* lasso_idwsf2_profile_get_soap_envelope_response: |
|
715 |
* @idwsf2_profile: a #LassoIdWsf2Profile object |
|
716 |
* |
|
717 |
* Return the last parsed SOAP response object. |
|
718 |
* |
|
719 |
* Return value:(transfer none): a #LassoSoapEnvelope object or NULL if no response as ever been |
|
720 |
* parsed with this objects. You must free this object. |
|
721 |
*/ |
|
722 |
LassoSoapEnvelope* |
|
723 |
lasso_idwsf2_profile_get_soap_envelope_response(LassoIdWsf2Profile *idwsf2_profile) |
|
724 |
{ |
|
725 |
return _get_soap_envelope_response(idwsf2_profile); |
|
726 | ||
727 |
} |
|
728 | ||
729 |
/** |
|
730 |
* lasso_idwsf2_profile_get_name_identifier: |
|
731 |
* @idwsf2_profile: a #LassoIdWsf2Profile object |
|
732 |
* |
|
733 |
* Return the NameIdentifier found in a WS-Security authentication token, when Bearer or SAML |
|
734 |
* security mechanism is used. This method does not validate any security conditions on the |
|
735 |
* assertion. |
|
736 |
* |
|
737 |
* Return value:(transfer full)(allow-none): a #LassoNode object or NULL. |
|
738 |
*/ |
|
739 |
LassoNode * |
|
740 |
lasso_idwsf2_profile_get_name_identifier(LassoIdWsf2Profile *idwsf2_profile) |
|
741 |
{ |
|
742 |
LassoSaml2Assertion *assertion = NULL; |
|
743 |
LassoSaml2NameID *nameID = NULL; |
|
744 |
LassoIdWsf2Sb2TargetIdentity *target_identity = NULL; |
|
745 |
LassoSaml2EncryptedElement *encryptedID = NULL; |
|
746 | ||
747 |
if (! LASSO_IS_IDWSF2_PROFILE(idwsf2_profile)) |
|
748 |
return NULL; |
|
749 | ||
750 |
/** Already extracted, return it */ |
|
751 |
if (idwsf2_profile->parent.nameIdentifier != NULL) |
|
752 |
goto cleanup; |
|
753 | ||
754 |
/* Try to get a SAML2 assertion */ |
|
755 |
assertion = lasso_soap_envelope_get_saml2_security_token |
|
756 |
(lasso_idwsf2_profile_get_soap_envelope_request(idwsf2_profile)); |
|
757 |
if (assertion && assertion->Subject) { |
|
758 | ||
759 |
if (lasso_saml2_assertion_decrypt_subject(assertion, |
|
760 |
idwsf2_profile->parent.server) != 0) { |
|
761 |
goto cleanup; |
|
762 |
} |
|
763 | ||
764 |
lasso_assign_gobject (nameID, assertion->Subject->NameID); |
|
765 |
} |
|
766 |
/* We found nothing */ |
|
767 |
if (!nameID && !encryptedID) { |
|
768 |
GList *it; |
|
769 |
/* Go look at the target identity */ |
|
770 |
target_identity = lasso_soap_envelope_sb2_get_target_identity_header ( |
|
771 |
lasso_idwsf2_profile_get_soap_envelope_request (idwsf2_profile)); |
|
772 |
if (target_identity) { |
|
773 |
lasso_foreach (it, target_identity->any) |
|
774 |
{ |
|
775 |
if (LASSO_IS_SAML2_NAME_ID(it->data)) { |
|
776 |
lasso_assign_gobject (nameID, it->data); |
|
777 |
break; |
|
778 |
} |
|
779 |
if (LASSO_IS_SAML2_ENCRYPTED_ELEMENT(it->data)) { |
|
780 |
lasso_assign_gobject (encryptedID, it->data); |
|
781 |
break; |
|
782 |
} |
|
783 |
} |
|
784 |
} |
|
785 |
} |
|
786 | ||
787 |
if (!nameID && encryptedID) { |
|
788 |
/* We need a server object to check for audience and decrypt encrypted NameIDs */ |
|
789 |
if (! LASSO_IS_SERVER(idwsf2_profile->parent.server)) { |
|
790 |
goto cleanup; |
|
791 |
} |
|
792 |
if (lasso_saml20_profile_process_name_identifier_decryption(&idwsf2_profile->parent, &nameID, |
|
793 |
&encryptedID) != 0) { |
|
794 |
message(G_LOG_LEVEL_WARNING, "process_name_identifier_decryption failed "\ |
|
795 |
"when retrieving name identifier for ID-WSF profile"); |
|
796 |
} |
|
797 |
} |
|
798 | ||
799 |
cleanup: |
|
800 |
lasso_release_gobject (assertion); |
|
801 |
lasso_release_gobject (encryptedID); |
|
802 |
lasso_assign_gobject (idwsf2_profile->parent.nameIdentifier, nameID); |
|
803 |
return (LassoNode*)nameID; |
|
804 |
} |
|
805 | ||
806 |
/** |
|
807 |
* lasso_idwsf2_profile_get_epr: |
|
808 |
* @idwsf2_profile: a #LassoIdWsf2Profile object |
|
809 |
* @epr: a #LassoWsAddrEndpointReference object |
|
810 |
* |
|
811 |
* Set the EPR for the service targeted by the profile object. |
|
812 |
* |
|
813 |
*/ |
|
814 |
void |
|
815 |
lasso_idwsf2_profile_set_epr(LassoIdWsf2Profile *idwsf2_profile, |
|
816 |
LassoWsAddrEndpointReference *epr) |
|
817 |
{ |
|
818 |
if (! LASSO_IS_IDWSF2_PROFILE(idwsf2_profile) || ! LASSO_IS_WSA_ENDPOINT_REFERENCE(epr) || |
|
819 |
! idwsf2_profile->private_data) |
|
820 |
return; |
|
821 |
_set_epr(idwsf2_profile, epr); |
|
822 |
} |
|
823 | ||
824 |
/** |
|
825 |
* lasso_idwsf2_profile_get_epr: |
|
826 |
* @idwsf2_profile: a #LassoIdWsf2Profile object |
|
827 |
* |
|
828 |
* Return the EPR used by this profile. |
|
829 |
* |
|
830 |
* Return value:(transfer none): a #LassoWsAddrEndpointReference object, or NULL if none is set. |
|
831 |
*/ |
|
832 |
LassoWsAddrEndpointReference* |
|
833 |
lasso_idwsf2_profile_get_epr(LassoIdWsf2Profile *idwsf2_profile) |
|
834 |
{ |
|
835 |
if (! LASSO_IS_IDWSF2_PROFILE(idwsf2_profile) || ! idwsf2_profile->private_data) |
|
836 |
return NULL; |
|
837 |
return _get_epr(idwsf2_profile); |
|
838 |
} |
|
839 | ||
840 | ||
841 |
static LassoNodeClass *parent_class = NULL; |
|
842 | ||
843 |
static void |
|
844 |
dispose(GObject *object) |
|
845 |
{ |
|
846 |
LassoIdWsf2Profile *profile = LASSO_IDWSF2_PROFILE(object); |
|
847 | ||
848 |
if (profile->private_data) { |
|
849 |
lasso_release_gobject(profile->private_data->soap_envelope_request); |
|
850 |
lasso_release_gobject(profile->private_data->soap_envelope_response); |
|
851 |
} |
|
852 |
lasso_release(profile->private_data); |
|
853 | ||
854 |
G_OBJECT_CLASS(parent_class)->dispose(object); |
|
855 |
} |
|
856 | ||
857 |
static void |
|
858 |
instance_init(LassoIdWsf2Profile *discovery) |
|
859 |
{ |
|
860 |
discovery->private_data = g_new0(LassoIdWsf2ProfilePrivate, 1); |
|
861 |
} |
|
862 | ||
863 |
static xmlNode* |
|
864 |
get_xmlNode(LassoNode *node, gboolean lasso_dump) |
|
865 |
{ |
|
866 |
xmlNode *xmlnode; |
|
867 |
LassoProfile *profile = LASSO_PROFILE(node); |
|
868 |
LassoIdWsf2Profile *wsf2_profile = (LassoIdWsf2Profile*)profile; |
|
869 | ||
870 |
if (! LASSO_IS_IDWSF2_PROFILE(profile)) |
|
871 |
return NULL; |
|
872 | ||
873 |
xmlnode = parent_class->get_xmlNode(node, lasso_dump); |
|
874 | ||
875 |
if (xmlnode && wsf2_profile->private_data) { |
|
876 |
LassoIdWsf2ProfilePrivate *pdata = wsf2_profile->private_data; |
|
877 |
if (pdata->epr) { |
|
878 |
xmlNode *epr; |
|
879 |
epr = xmlNewChild(xmlnode, NULL, BAD_CAST LASSO_IDWSF2_PROFILE_ELEMENT_EPR, |
|
880 |
NULL); |
|
881 |
xmlAddChild(epr, lasso_node_get_xmlNode((LassoNode*) pdata->epr, |
|
882 |
lasso_dump)); |
|
883 |
} |
|
884 |
if (pdata->soap_envelope_request) { |
|
885 |
xmlNode *request; |
|
886 |
request = xmlNewChild(xmlnode, NULL, BAD_CAST |
|
887 |
LASSO_IDWSF2_PROFILE_ELEMENT_REQUEST, NULL); |
|
888 |
xmlAddChild(request, |
|
889 |
lasso_node_get_xmlNode( |
|
890 |
(LassoNode*)pdata->soap_envelope_request, |
|
891 |
lasso_dump)); |
|
892 |
} |
|
893 |
if (pdata->soap_envelope_response) { |
|
894 |
xmlNode *response; |
|
895 |
response = xmlNewChild(xmlnode, NULL, BAD_CAST |
|
896 |
LASSO_IDWSF2_PROFILE_ELEMENT_RESPONSE, NULL); |
|
897 |
xmlAddChild(response, lasso_node_get_xmlNode((LassoNode*) |
|
898 |
pdata->soap_envelope_response, lasso_dump)); |
|
899 |
} |
|
900 |
} |
|
901 | ||
902 |
return xmlnode; |
|
903 |
} |
|
904 | ||
905 |
static int |
|
906 |
init_from_xml(LassoNode *node, xmlNode *xmlnode) |
|
907 |
{ |
|
908 |
LassoIdWsf2Profile *wsf2_profile = (LassoIdWsf2Profile*)node; |
|
909 |
xmlNode *epr_node, *request_node, *response_node; |
|
910 |
LassoWsAddrEndpointReference *epr = NULL; |
|
911 |
LassoSoapEnvelope *request = NULL, *response = NULL; |
|
912 | ||
913 |
if (! LASSO_IS_IDWSF2_PROFILE(wsf2_profile)) |
|
914 |
return LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ; |
|
915 | ||
916 |
parent_class->init_from_xml(node, xmlnode); |
|
917 | ||
918 |
if (xmlnode == NULL) |
|
919 |
return LASSO_XML_ERROR_OBJECT_CONSTRUCTION_FAILED; |
|
920 | ||
921 |
if (! wsf2_profile->private_data) { |
|
922 |
wsf2_profile->private_data = g_new0(LassoIdWsf2ProfilePrivate, 1); |
|
923 |
} |
|
924 |
epr_node = xmlSecFindChild(xmlnode, BAD_CAST LASSO_IDWSF2_PROFILE_ELEMENT_EPR, BAD_CAST |
|
925 |
LASSO_LASSO_HREF); |
|
926 |
request_node = xmlSecFindChild(xmlnode, BAD_CAST LASSO_IDWSF2_PROFILE_ELEMENT_REQUEST, |
|
927 |
BAD_CAST LASSO_LASSO_HREF); |
|
928 |
response_node = xmlSecFindChild(xmlnode, BAD_CAST LASSO_IDWSF2_PROFILE_ELEMENT_RESPONSE, |
|
929 |
BAD_CAST LASSO_LASSO_HREF); |
|
930 | ||
931 |
if (epr_node) { |
|
932 |
epr_node = xmlSecFindChild(epr_node, BAD_CAST "EndpointReference", BAD_CAST |
|
933 |
LASSO_WSA_HREF); |
|
934 |
} |
|
935 |
if (request_node) { |
|
936 |
request_node = xmlSecFindChild(request_node, BAD_CAST "Envelope", BAD_CAST |
|
937 |
LASSO_SOAP_ENV_HREF); |
|
938 |
} |
|
939 |
if (response_node) { |
|
940 |
response_node = xmlSecFindChild(response_node, BAD_CAST "Envelope", BAD_CAST |
|
941 |
LASSO_SOAP_ENV_HREF); |
|
942 |
} |
|
943 | ||
944 |
if (epr_node) { |
|
945 |
epr = (LassoWsAddrEndpointReference*)lasso_node_new_from_xmlNode(epr_node); |
|
946 |
if (! LASSO_IS_WSA_ENDPOINT_REFERENCE(epr)) { |
|
947 |
lasso_release_gobject(epr); |
|
948 |
} |
|
949 |
} |
|
950 |
if (request_node) { |
|
951 |
request = (LassoSoapEnvelope*)lasso_node_new_from_xmlNode(request_node); |
|
952 |
if (! LASSO_IS_SOAP_ENVELOPE(request)) { |
|
953 |
lasso_release_gobject(request); |
|
954 |
} |
|
955 |
} |
|
956 |
if (response_node) { |
|
957 |
response = (LassoSoapEnvelope*)lasso_node_new_from_xmlNode(response_node); |
|
958 |
if (! LASSO_IS_SOAP_ENVELOPE(response)) { |
|
959 |
lasso_release_gobject(response); |
|
960 |
} |
|
961 |
} |
|
962 | ||
963 |
lasso_assign_new_gobject(wsf2_profile->private_data->epr, epr); |
|
964 |
lasso_assign_new_gobject(wsf2_profile->private_data->soap_envelope_request, request); |
|
965 |
lasso_assign_new_gobject(wsf2_profile->private_data->soap_envelope_response, response); |
|
966 | ||
967 |
return 0; |
|
968 |
} |
|
969 | ||
970 |
static void |
|
971 |
class_init(LassoIdWsf2ProfileClass *klass, void *unused G_GNUC_UNUSED) |
|
972 |
{ |
|
973 |
parent_class = g_type_class_peek_parent(klass); |
|
974 | ||
975 |
G_OBJECT_CLASS(klass)->dispose = dispose; |
|
976 |
klass->parent.parent.get_xmlNode = get_xmlNode; |
|
977 |
klass->parent.parent.init_from_xml = init_from_xml; |
|
978 |
} |
|
979 | ||
980 |
GType |
|
981 |
lasso_idwsf2_profile_get_type() |
|
982 |
{ |
|
983 |
static GType this_type = 0; |
|
984 | ||
985 |
if (!this_type) { |
|
986 |
static const GTypeInfo this_info = { |
|
987 |
sizeof(LassoIdWsf2ProfileClass), |
|
988 |
NULL, |
|
989 |
NULL, |
|
990 |
(GClassInitFunc) class_init, |
|
991 |
NULL, |
|
992 |
NULL, |
|
993 |
sizeof(LassoIdWsf2Profile), |
|
994 |
0, |
|
995 |
(GInstanceInitFunc) instance_init, |
|
996 |
NULL |
|
997 |
}; |
|
998 | ||
999 |
this_type = g_type_register_static(LASSO_TYPE_PROFILE, |
|
1000 |
"LassoIdWsf2Profile", &this_info, 0); |
|
1001 |
} |
|
1002 |
return this_type; |
|
1003 |
} |
|
1004 |
lasso/id-wsf-2.0/profile.h | ||
---|---|---|
1 |
/* $Id: wsf_profile.h,v 1.13 2006/11/14 17:07:30 Exp $ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#ifndef __LASSO_IDWSF2_PROFILE_H__ |
|
25 |
#define __LASSO_IDWSF2_PROFILE_H__ |
|
26 | ||
27 |
#ifdef __cplusplus |
|
28 |
extern "C" { |
|
29 |
#endif /* __cplusplus */ |
|
30 | ||
31 |
#include "../id-ff/profile.h" |
|
32 |
#include "../xml/soap-1.1/soap_envelope.h" |
|
33 |
#include "../xml/ws/wsa_endpoint_reference.h" |
|
34 | ||
35 |
#define LASSO_TYPE_IDWSF2_PROFILE (lasso_idwsf2_profile_get_type()) |
|
36 |
#define LASSO_IDWSF2_PROFILE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \ |
|
37 |
LASSO_TYPE_IDWSF2_PROFILE, LassoIdWsf2Profile)) |
|
38 |
#define LASSO_IDWSF2_PROFILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), \ |
|
39 |
LASSO_TYPE_IDWSF2_PROFILE, LassoIdWsf2ProfileClass)) |
|
40 |
#define LASSO_IS_IDWSF2_PROFILE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ |
|
41 |
LASSO_TYPE_IDWSF2_PROFILE)) |
|
42 |
#define LASSO_IS_IDWSF2_PROFILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ |
|
43 |
LASSO_TYPE_IDWSF2_PROFILE)) |
|
44 |
#define LASSO_IDWSF2_PROFILE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), \ |
|
45 |
LASSO_TYPE_IDWSF2_PROFILE, LassoIdWsf2ProfileClass)) |
|
46 | ||
47 | ||
48 |
typedef struct _LassoIdWsf2Profile LassoIdWsf2Profile; |
|
49 |
typedef struct _LassoIdWsf2ProfileClass LassoIdWsf2ProfileClass; |
|
50 |
typedef struct _LassoIdWsf2ProfilePrivate LassoIdWsf2ProfilePrivate; |
|
51 | ||
52 |
struct _LassoIdWsf2Profile { |
|
53 |
LassoProfile parent; |
|
54 | ||
55 |
/*< private >*/ |
|
56 |
LassoIdWsf2ProfilePrivate *private_data; |
|
57 |
}; |
|
58 | ||
59 |
struct _LassoIdWsf2ProfileClass { |
|
60 |
LassoProfileClass parent; |
|
61 |
}; |
|
62 | ||
63 |
LASSO_EXPORT GType lasso_idwsf2_profile_get_type(void); |
|
64 | ||
65 |
/* Initialize profile */ |
|
66 |
LASSO_EXPORT void lasso_idwsf2_profile_set_epr(LassoIdWsf2Profile *idwsf2_profile, |
|
67 |
LassoWsAddrEndpointReference *epr); |
|
68 |
LASSO_EXPORT LassoWsAddrEndpointReference* lasso_idwsf2_profile_get_epr( |
|
69 |
LassoIdWsf2Profile *idwsf2_profile); |
|
70 | ||
71 |
/* Initialize requests */ |
|
72 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_profile_init_request(LassoIdWsf2Profile *profile); |
|
73 | ||
74 |
/* Build request message */ |
|
75 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_profile_build_request_msg(LassoIdWsf2Profile *profile, |
|
76 |
const char *security_mech_id); |
|
77 | ||
78 |
/* Handle request */ |
|
79 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_profile_process_request_msg(LassoIdWsf2Profile *profile, |
|
80 |
const char *msg); |
|
81 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_profile_check_security_mechanism(LassoIdWsf2Profile *profile, |
|
82 |
const char *security_mech_id); |
|
83 |
LASSO_EXPORT LassoSoapEnvelope* lasso_idwsf2_profile_get_soap_envelope_request( |
|
84 |
LassoIdWsf2Profile *idwsf2_profile); |
|
85 |
LASSO_EXPORT LassoNode *lasso_idwsf2_profile_get_name_identifier( |
|
86 |
LassoIdWsf2Profile *idwsf2_profile); |
|
87 | ||
88 |
/* Initialize response */ |
|
89 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_profile_init_response(LassoIdWsf2Profile *profile); |
|
90 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_profile_init_soap_fault_response(LassoIdWsf2Profile *profile, |
|
91 |
const char *faultcode, const char *faultstring, |
|
92 |
GList *details); |
|
93 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_profile_redirect_user_for_interaction(LassoIdWsf2Profile *profile, |
|
94 |
const gchar *redirect_url, gboolean for_data); |
|
95 | ||
96 |
/* Build response message */ |
|
97 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_profile_build_response_msg(LassoIdWsf2Profile *profile); |
|
98 | ||
99 |
/* Handle response */ |
|
100 |
LASSO_EXPORT lasso_error_t lasso_idwsf2_profile_process_response_msg(LassoIdWsf2Profile *profile, |
|
101 |
const char *msg); |
|
102 |
LASSO_EXPORT LassoSoapEnvelope* lasso_idwsf2_profile_get_soap_envelope_response( |
|
103 |
LassoIdWsf2Profile *idwsf2_profile); |
|
104 | ||
105 |
#ifdef __cplusplus |
|
106 |
} |
|
107 |
#endif /* __cplusplus */ |
|
108 | ||
109 |
#endif /* __LASSO_IDWSF2_PROFILE_H__ */ |
|
110 |
lasso/id-wsf-2.0/saml2_login.c | ||
---|---|---|
1 |
/* $Id$ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#include "saml2_login.h" |
|
25 |
#include "../xml/id-wsf-2.0/idwsf2_strings.h" |
|
26 |
#include "identity.h" |
|
27 |
#include "server.h" |
|
28 |
#include "session.h" |
|
29 |
#include "../id-ff/login.h" |
|
30 |
#include "../saml-2.0/saml2_helper.h" |
|
31 |
#include "../saml-2.0/provider.h" |
|
32 |
#include "../xml/saml-2.0/saml2_assertion.h" |
|
33 |
#include "../xml/ws/wsa_endpoint_reference.h" |
|
34 |
#include "../xml/id-wsf-2.0/disco_abstract.h" |
|
35 |
#include "../xml/id-wsf-2.0/disco_provider_id.h" |
|
36 |
#include "../xml/id-wsf-2.0/disco_service_type.h" |
|
37 |
#include "../xml/id-wsf-2.0/disco_service_context.h" |
|
38 |
#include "../xml/id-wsf-2.0/disco_security_context.h" |
|
39 |
#include "../xml/id-wsf-2.0/sec_token.h" |
|
40 |
#include "../xml/id-wsf-2.0/sbf_framework.h" |
|
41 |
#include "../id-wsf/wsf_utils.h" |
|
42 |
#include "../xml/saml-2.0/saml2_attribute.h" |
|
43 |
#include "../xml/saml-2.0/saml2_attribute_statement.h" |
|
44 |
#include "../xml/saml-2.0/saml2_attribute_value.h" |
|
45 |
#include "../xml/saml-2.0/samlp2_response.h" |
|
46 |
#include "idwsf2_helper.h" |
|
47 |
#include "../xml/private.h" |
|
48 | ||
49 | ||
50 |
/** |
|
51 |
* lasso_server_create_assertion_as_idwsf2_security_token: |
|
52 |
* @server: a #LassoServer object |
|
53 |
* @name_id: a #LassoSaml2NameID object |
|
54 |
* @tolerance: tolerance around the normal duration which is accepted |
|
55 |
* @duration: life duration for this assertion in seconds |
|
56 |
* @cipher: whether to cipher the NameID |
|
57 |
* @audience:(allow-none)(optional): if @cipher is true, the provider for which to encrypt the NameID |
|
58 |
* |
|
59 |
* Create a new assertion usable as a security token in an ID-WSF 2.0 EndpointReference. See |
|
60 |
* lasso_saml2_assertion_set_basic_conditions() for detail about @tolerance and @duration. |
|
61 |
* |
|
62 |
* Return value:(transfer full)(allow-none): a newly allocated #LassoSaml2Assertion object, or NULL. |
|
63 |
*/ |
|
64 |
LassoSaml2Assertion* |
|
65 |
lasso_server_create_assertion_as_idwsf2_security_token(LassoServer *server, |
|
66 |
LassoSaml2NameID *name_id, |
|
67 |
int tolerance, |
|
68 |
int duration, |
|
69 |
gboolean cipher, |
|
70 |
LassoProvider *audience) |
|
71 |
{ |
|
72 |
LassoSaml2Assertion *assertion; |
|
73 |
int rc = 0; |
|
74 | ||
75 |
if (! LASSO_IS_SERVER(server)) |
|
76 |
return NULL; |
|
77 |
if (! LASSO_IS_SAML2_NAME_ID(name_id)) |
|
78 |
return NULL; |
|
79 |
if (cipher && ! LASSO_IS_PROVIDER(audience)) |
|
80 |
return NULL; |
|
81 | ||
82 |
assertion = (LassoSaml2Assertion*)lasso_saml2_assertion_new(); |
|
83 |
assertion->ID = lasso_build_unique_id(32); |
|
84 |
assertion->Issuer = (LassoSaml2NameID*)lasso_saml2_name_id_new_with_string(server->parent.ProviderID); |
|
85 |
assertion->Subject = (LassoSaml2Subject*)lasso_saml2_subject_new(); |
|
86 |
if (cipher) { |
|
87 |
LassoSaml2EncryptedElement *encrypted_id = |
|
88 |
lasso_provider_saml2_node_encrypt(audience, (LassoNode*)name_id); |
|
89 |
if (! encrypted_id) { |
|
90 |
lasso_release_gobject(assertion); |
|
91 |
goto cleanup; |
|
92 |
} |
|
93 |
lasso_assign_new_gobject(assertion->Subject->EncryptedID, encrypted_id); |
|
94 |
} else { |
|
95 |
lasso_assign_new_gobject(assertion->Subject->NameID, name_id); |
|
96 |
} |
|
97 |
lasso_saml2_assertion_set_basic_conditions(assertion, |
|
98 |
tolerance, duration, FALSE); |
|
99 |
rc = lasso_server_saml2_assertion_setup_signature(server, assertion); |
|
100 |
if (rc != 0) { |
|
101 |
lasso_release_gobject(assertion); |
|
102 |
} |
|
103 |
cleanup: |
|
104 |
return assertion; |
|
105 |
} |
|
106 | ||
107 | ||
108 | ||
109 | ||
110 |
/** |
|
111 |
* lasso_login_idwsf2_add_discovery_bootstrap_epr: |
|
112 |
* @login: a #LassoLogin object |
|
113 |
* @url: the Disco service address |
|
114 |
* @abstract: the Disco service description |
|
115 |
* @security_mechanisms:(allow-none)(element-type utf8): the list of supported security mechanisms |
|
116 |
* @tolerance:(default -1): see lasso_saml2_assertion_set_basic_conditions(). |
|
117 |
* @duration:(default 0): see lasso_saml2_assertion_set_basic_conditions(). |
|
118 |
* |
|
119 |
* Add the needed bootstrap attribute to the #LassoSaml2Assertion currently container in the |
|
120 |
* #LassoLogin object. This function should be called after lasso_login_build_assertion() by an IdP |
|
121 |
* also having the Discovery service role. |
|
122 |
* |
|
123 |
* The default @tolerance and @duration are respectively ten minutes and two days. |
|
124 |
* |
|
125 |
* Return value: 0 if successfull, otherwise #LASSO_PROFILE_ERROR_MISSING_ASSERTION if no assertion is present |
|
126 |
* in the #LassoLogin object, #LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ if login is not a #LassoLogin |
|
127 |
* object. |
|
128 |
*/ |
|
129 |
int |
|
130 |
lasso_login_idwsf2_add_discovery_bootstrap_epr(LassoLogin *login, const char *url, |
|
131 |
const char *abstract, GList *security_mechanisms, int tolerance, int duration) |
|
132 |
{ |
|
133 |
LassoWsAddrEndpointReference *epr = NULL; |
|
134 |
LassoWsAddrMetadata *metadata = NULL; |
|
135 |
LassoSaml2AttributeStatement *attributeStatement = NULL; |
|
136 |
LassoSaml2Attribute *attribute = NULL; |
|
137 |
LassoSaml2AttributeValue *attributeValue = NULL; |
|
138 |
LassoIdWsf2DiscoSecurityContext *security_context = NULL; |
|
139 |
LassoIdWsf2SecToken *sec_token = NULL; |
|
140 |
LassoSaml2Assertion *assertion_identity_token = NULL; |
|
141 |
LassoSaml2Assertion *assertion = NULL; |
|
142 |
LassoServer *server = NULL; |
|
143 |
LassoSaml2NameID *name_id = NULL; |
|
144 |
int rc = 0; |
|
145 | ||
146 |
lasso_bad_param(LOGIN, login); |
|
147 |
lasso_null_param(url); |
|
148 |
lasso_null_param(abstract); |
|
149 | ||
150 |
/* Check for the presence of an assertion */ |
|
151 |
assertion = (LassoSaml2Assertion*) lasso_login_get_assertion (login); |
|
152 |
if (! LASSO_IS_SAML2_ASSERTION (assertion)) { |
|
153 |
lasso_release_gobject(assertion); |
|
154 |
return LASSO_PROFILE_ERROR_MISSING_ASSERTION; |
|
155 |
} |
|
156 |
lasso_extract_node_or_fail(server, login->parent.server, SERVER, |
|
157 |
LASSO_PROFILE_ERROR_MISSING_SERVER); |
|
158 |
/* Warn if the assertion is not a fresh one, we should not modify received assertion */ |
|
159 |
if (lasso_node_get_original_xmlnode((LassoNode*)assertion) != NULL) { |
|
160 |
message(G_LOG_LEVEL_WARNING, "%s should only be called after lasso_login_build_assertion", __func__); |
|
161 |
} |
|
162 | ||
163 | ||
164 |
/* Build EndpointReference */ |
|
165 |
epr = lasso_wsa_endpoint_reference_new_for_idwsf2_service( |
|
166 |
url, LASSO_IDWSF2_DISCOVERY_HREF, server->parent.ProviderID, abstract); |
|
167 | ||
168 |
/* Security/Identity token */ |
|
169 |
if (duration <= 0) { |
|
170 |
duration = 2 * LASSO_DURATION_DAY; |
|
171 |
} |
|
172 |
if (tolerance < 0) { |
|
173 |
tolerance = 10*LASSO_DURATION_MINUTE; |
|
174 |
} |
|
175 |
/* If the NameID is encrypted try to get to he unencrypted one */ |
|
176 |
if (assertion->Subject->NameID) { |
|
177 |
name_id = assertion->Subject->NameID; |
|
178 |
} else if (assertion->Subject->EncryptedID && |
|
179 |
LASSO_IS_SAML2_NAME_ID(assertion->Subject->EncryptedID->original_data)) { |
|
180 |
name_id = (LassoSaml2NameID*)assertion->Subject->EncryptedID->original_data; |
|
181 |
} |
|
182 |
goto_cleanup_if_fail_with_rc (name_id, LASSO_PROFILE_ERROR_MISSING_NAME_IDENTIFIER); |
|
183 |
assertion_identity_token = lasso_server_create_assertion_as_idwsf2_security_token(server, |
|
184 |
name_id, tolerance, duration, TRUE, &server->parent); |
|
185 | ||
186 |
/* Add the assertion to the EPR */ |
|
187 |
rc = lasso_wsa_endpoint_reference_add_security_token(epr, |
|
188 |
(LassoNode*)assertion_identity_token, security_mechanisms); |
|
189 |
goto_cleanup_if_fail(rc == 0); |
|
190 | ||
191 |
/* Add the EPR to the assertion as a SAML attribute */ |
|
192 |
rc = lasso_saml2_assertion_add_attribute_with_node(assertion, |
|
193 |
LASSO_SAML2_ATTRIBUTE_NAME_EPR, LASSO_SAML2_ATTRIBUTE_NAME_FORMAT_URI, (LassoNode*)epr); |
|
194 |
|
|
195 | ||
196 |
cleanup: |
|
197 |
lasso_release_gobject(assertion); |
|
198 |
lasso_release_gobject(epr); |
|
199 |
lasso_release_gobject(metadata); |
|
200 |
lasso_release_gobject(attributeStatement); |
|
201 |
lasso_release_gobject(attribute); |
|
202 |
lasso_release_gobject(attributeValue); |
|
203 |
lasso_release_gobject(security_context); |
|
204 |
lasso_release_gobject(sec_token); |
|
205 |
lasso_release_gobject(assertion_identity_token); |
|
206 |
return rc; |
|
207 |
} |
|
208 | ||
209 |
/** |
|
210 |
* lasso_saml2_assertion_idwsf2_get_discovery_bootstrap_epr: |
|
211 |
* @assertion: a #LassoSaml2Assertion object |
|
212 |
* |
|
213 |
* Extract the Discovery bootstrap EPR from @assertion. |
|
214 |
* |
|
215 |
* Return value:(transfer none): a #LassoWsAddrEndpointReference or NULL if no bootstrap EPR is found. |
|
216 |
*/ |
|
217 |
LassoWsAddrEndpointReference* |
|
218 |
lasso_saml2_assertion_idwsf2_get_discovery_bootstrap_epr(LassoSaml2Assertion *assertion) |
|
219 |
{ |
|
220 |
LassoSaml2AttributeStatement *attribute_statement = NULL; |
|
221 |
LassoSaml2Attribute *attribute = NULL; |
|
222 |
LassoSaml2AttributeValue *attribute_value = NULL; |
|
223 |
GList *i = NULL, *j = NULL, *k = NULL; |
|
224 |
LassoWsAddrEndpointReference *rc = NULL; |
|
225 | ||
226 |
if (! LASSO_IS_SAML2_ASSERTION (assertion)) { |
|
227 |
return NULL; |
|
228 |
} |
|
229 | ||
230 |
lasso_foreach (i, assertion->AttributeStatement) |
|
231 |
{ |
|
232 |
if (! LASSO_IS_SAML2_ATTRIBUTE_STATEMENT (i->data)) |
|
233 |
continue; |
|
234 | ||
235 |
attribute_statement = LASSO_SAML2_ATTRIBUTE_STATEMENT(i->data); |
|
236 | ||
237 |
lasso_foreach (j, attribute_statement->Attribute) |
|
238 |
{ |
|
239 |
if (! LASSO_IS_SAML2_ATTRIBUTE(j->data)) |
|
240 |
continue; |
|
241 | ||
242 |
attribute = LASSO_SAML2_ATTRIBUTE(j->data); |
|
243 |
if (lasso_strisnotequal(attribute->Name,LASSO_SAML2_ATTRIBUTE_NAME_EPR)) |
|
244 |
continue; |
|
245 |
/* There should only one attribute value, and the EPR should be the first |
|
246 |
* contained node */ |
|
247 |
if (! attribute->AttributeValue) |
|
248 |
continue; |
|
249 | ||
250 |
if (! LASSO_IS_SAML2_ATTRIBUTE_VALUE (attribute->AttributeValue->data)) |
|
251 |
continue; |
|
252 |
attribute_value = (LassoSaml2AttributeValue*)attribute->AttributeValue->data; |
|
253 |
lasso_foreach (k, attribute_value->any) { |
|
254 |
if (! k->data) { |
|
255 |
message(G_LOG_LEVEL_CRITICAL, "found a NULL in attribute_value->any"); |
|
256 |
break; /* NULL here ? bad... */ |
|
257 |
} |
|
258 |
if (! LASSO_IS_WSA_ENDPOINT_REFERENCE (k->data)) |
|
259 |
continue; |
|
260 |
rc = (LassoWsAddrEndpointReference*)g_object_ref(k->data); |
|
261 |
goto cleanup; |
|
262 |
} |
|
263 |
} |
|
264 |
} |
|
265 | ||
266 |
cleanup: |
|
267 |
return rc; |
|
268 | ||
269 |
} |
|
270 | ||
271 |
/** |
|
272 |
* lasso_login_idwsf2_get_discovery_bootstrap_epr: |
|
273 |
* @login: a #LassoLogin object |
|
274 |
* |
|
275 |
* Extract the Discovery boostrap EPR from the attribute named #LASSO_SAML2_ATTRIBUTE_NAME_EPR. |
|
276 |
* |
|
277 |
* Return value:(transfer none): a caller owned #LassoWsAddrEndpointReference object, or NULL if none can be found. |
|
278 |
*/ |
|
279 |
LassoWsAddrEndpointReference * |
|
280 |
lasso_login_idwsf2_get_discovery_bootstrap_epr(LassoLogin *login) |
|
281 |
{ |
|
282 |
LassoProfile *profile = NULL; |
|
283 |
LassoSaml2Assertion *assertion = NULL; |
|
284 |
LassoWsAddrEndpointReference *rc = NULL; |
|
285 | ||
286 |
g_return_val_if_fail (LASSO_IS_LOGIN (login), NULL); |
|
287 |
profile = &login->parent; |
|
288 |
assertion = (LassoSaml2Assertion*)lasso_login_get_assertion(login); |
|
289 |
rc = lasso_saml2_assertion_idwsf2_get_discovery_bootstrap_epr(assertion); |
|
290 |
lasso_release_gobject(assertion); |
|
291 | ||
292 |
return rc; |
|
293 |
} |
lasso/id-wsf-2.0/saml2_login.h | ||
---|---|---|
1 |
/* $Id: server.h 2945 2006-11-19 20:07:46Z dlaniel $ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#ifndef __LASSO_IDWSF2_SAML2_LOGIN_PRIVATE_H__ |
|
25 |
#define __LASSO_IDWSF2_SAML2_LOGIN_PRIVATE_H__ |
|
26 | ||
27 |
#ifdef __cplusplus |
|
28 |
extern "C" { |
|
29 |
#endif /* __cplusplus */ |
|
30 | ||
31 |
#include "../id-ff/login.h" |
|
32 |
#include "../id-ff/provider.h" |
|
33 |
#include "../xml/saml-2.0/saml2_assertion.h" |
|
34 |
#include "../xml/saml-2.0/saml2_name_id.h" |
|
35 |
#include "../xml/ws/wsa_endpoint_reference.h" |
|
36 | ||
37 |
LASSO_EXPORT lasso_error_t lasso_login_idwsf2_add_discovery_bootstrap_epr(LassoLogin *login, const char *url, |
|
38 |
const char *abstract, GList *security_mechanisms, int tolerance, int duration); |
|
39 |
|
|
40 |
LASSO_EXPORT LassoWsAddrEndpointReference *lasso_login_idwsf2_get_discovery_bootstrap_epr( |
|
41 |
LassoLogin *login); |
|
42 | ||
43 |
LASSO_EXPORT LassoWsAddrEndpointReference* |
|
44 |
lasso_saml2_assertion_idwsf2_get_discovery_bootstrap_epr(LassoSaml2Assertion *assertion); |
|
45 | ||
46 |
LASSO_EXPORT LassoSaml2Assertion* lasso_server_create_assertion_as_idwsf2_security_token( |
|
47 |
LassoServer *server, LassoSaml2NameID *name_id, int tolerance, int duration, |
|
48 |
gboolean cipher, LassoProvider *audience); |
|
49 | ||
50 |
#ifdef __cplusplus |
|
51 |
} |
|
52 |
#endif /* __cplusplus */ |
|
53 | ||
54 |
#endif /* __LASSO_IDWSF2_SAML2_LOGIN_PRIVATE_H__ */ |
lasso/id-wsf-2.0/server.c | ||
---|---|---|
1 |
/* $Id$ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#include "server.h" |
|
25 |
#include "../xml/id-wsf-2.0/idwsf2_strings.h" |
|
26 |
#include "../id-ff/server.h" |
|
27 |
#include "../id-ff/serverprivate.h" |
|
28 |
#include "../xml/id-wsf-2.0/disco_svc_metadata.h" |
|
29 |
#include "../xml/id-wsf-2.0/disco_service_context.h" |
|
30 |
#include <libxml/tree.h> |
|
31 | ||
32 |
gint |
|
33 |
lasso_server_add_svc_metadata(LassoServer *server, LassoIdWsf2DiscoSvcMetadata *metadata) |
|
34 |
{ |
|
35 | ||
36 |
g_return_val_if_fail(LASSO_IS_SERVER(server), LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); |
|
37 |
g_return_val_if_fail(LASSO_IS_IDWSF2_DISCO_SVC_METADATA(metadata), |
|
38 |
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); |
|
39 | ||
40 |
server->private_data->svc_metadatas = g_list_append( |
|
41 |
server->private_data->svc_metadatas, g_object_ref(metadata)); |
|
42 | ||
43 |
return 0; |
|
44 |
} |
|
45 | ||
46 | ||
47 |
/** |
|
48 |
* lasso_server_get_svc_metadatas: |
|
49 |
* @server: a #LassoServer object |
|
50 |
* |
|
51 |
* Return value:(element-type LassoIdWsf2DiscoSvcMetadata)(transfer none): a list of #LassoIdWsf2DiscoSvcMetadata |
|
52 |
*/ |
|
53 |
const GList * |
|
54 |
lasso_server_get_svc_metadatas(LassoServer *server) |
|
55 |
{ |
|
56 |
g_return_val_if_fail(LASSO_IS_SERVER(server), NULL); |
|
57 | ||
58 |
return server->private_data->svc_metadatas; |
|
59 |
} |
|
60 | ||
61 | ||
62 |
/** |
|
63 |
* lasso_server_get_svc_metadatas_with_id_and_type: |
|
64 |
* @server: a #LassoServer object |
|
65 |
* @svcMDIDs:(allow-none): a list of service metadata IDs |
|
66 |
* @service_type:(allow-none): a service type identifier |
|
67 |
* |
|
68 |
* Return value:(element-type LassoIdWsf2DiscoSvcMetadata)(transfer full): a list of #LassoIdWsf2DiscoSvcMetadata |
|
69 |
*/ |
|
70 |
GList * |
|
71 |
lasso_server_get_svc_metadatas_with_id_and_type(LassoServer *server, GList *svcMDIDs, |
|
72 |
const gchar *service_type) |
|
73 |
{ |
|
74 |
gchar *svcMDID; |
|
75 |
LassoIdWsf2DiscoSvcMetadata *md; |
|
76 |
GList *result = NULL; |
|
77 |
GList *i; |
|
78 |
GList *j; |
|
79 | ||
80 |
g_return_val_if_fail(LASSO_IS_SERVER(server), NULL); |
|
81 |
g_return_val_if_fail(service_type != NULL, NULL); |
|
82 | ||
83 |
for (i = g_list_first(server->private_data->svc_metadatas); i != NULL; i = g_list_next(i)) { |
|
84 |
md = LASSO_IDWSF2_DISCO_SVC_METADATA(i->data); |
|
85 |
/* FIXME: this assumes there is one and only one service |
|
86 |
* context, and service type, this should be fixed to iterate |
|
87 |
* properly on the GList */ |
|
88 |
if (md->ServiceContext == NULL || strcmp((char*)(LASSO_IDWSF2_DISCO_SERVICE_CONTEXT( |
|
89 |
md->ServiceContext->data)->ServiceType)->data, service_type) != 0) { |
|
90 |
continue; |
|
91 |
} |
|
92 |
if (svcMDIDs == NULL) { |
|
93 |
/* If no svcMDID is given, return all the metadatas with given */ |
|
94 |
/* service type */ |
|
95 |
result = g_list_append(result, g_object_ref(md)); |
|
96 |
} else { |
|
97 |
for (j = g_list_first(svcMDIDs); j != NULL; j = g_list_next(j)) { |
|
98 |
svcMDID = (gchar *)(j->data); |
|
99 |
if (strcmp(svcMDID, md->svcMDID) == 0) { |
|
100 |
result = g_list_append(result, g_object_ref(md)); |
|
101 |
} |
|
102 |
} |
|
103 |
} |
|
104 |
} |
|
105 | ||
106 |
return result; |
|
107 |
} |
|
108 | ||
109 |
void |
|
110 |
lasso_server_init_id_wsf20_svcmds(LassoServer *server, xmlNode *t) |
|
111 |
{ |
|
112 |
xmlNode *t2 = t->children; |
|
113 | ||
114 |
if (strcmp((char*)t->name, "SvcMDs") == 0) { |
|
115 |
while (t2) { |
|
116 |
LassoIdWsf2DiscoSvcMetadata *svcMD; |
|
117 |
if (t2->type != XML_ELEMENT_NODE) { |
|
118 |
t2 = t2->next; |
|
119 |
continue; |
|
120 |
} |
|
121 |
svcMD = lasso_idwsf2_disco_svc_metadata_new(); |
|
122 |
LASSO_NODE_GET_CLASS(svcMD)->init_from_xml(LASSO_NODE(svcMD), t2); |
|
123 |
server->private_data->svc_metadatas = g_list_append( |
|
124 |
server->private_data->svc_metadatas, svcMD); |
|
125 |
t2 = t2->next; |
|
126 |
} |
|
127 |
} |
|
128 |
} |
|
129 | ||
130 |
static void |
|
131 |
add_childnode_from_list(LassoNode *value, xmlNode *xmlnode) |
|
132 |
{ |
|
133 |
xmlAddChild(xmlnode, lasso_node_get_xmlNode(LASSO_NODE(value), TRUE)); |
|
134 |
} |
|
135 | ||
136 |
void |
|
137 |
lasso_server_dump_id_wsf20_svcmds(LassoServer *server, xmlNode *xmlnode) |
|
138 |
{ |
|
139 |
/* Service Metadatas (SvcMD) */ |
|
140 |
if (server->private_data->svc_metadatas != NULL) { |
|
141 |
xmlNode *t; |
|
142 |
t = xmlNewTextChild(xmlnode, NULL, (xmlChar*)"SvcMDs", NULL); |
|
143 |
g_list_foreach(server->private_data->svc_metadatas, |
|
144 |
(GFunc)add_childnode_from_list, t); |
|
145 |
} |
|
146 |
} |
lasso/id-wsf-2.0/server.h | ||
---|---|---|
1 |
/* $Id: server.h 2945 2006-11-19 20:07:46Z dlaniel $ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#ifndef __LASSO_IDWSF2_SERVER_H__ |
|
25 |
#define __LASSO_IDWSF2_SERVER_H__ |
|
26 | ||
27 |
#include "../utils.h" |
|
28 | ||
29 |
#ifdef __cplusplus |
|
30 |
extern "C" { |
|
31 |
#endif /* __cplusplus */ |
|
32 | ||
33 |
#include "../id-ff/server.h" |
|
34 |
#include "../xml/id-wsf-2.0/disco_svc_metadata.h" |
|
35 | ||
36 |
LASSO_EXPORT lasso_error_t lasso_server_add_svc_metadata(LassoServer *server, |
|
37 |
LassoIdWsf2DiscoSvcMetadata *metadata); |
|
38 | ||
39 |
LASSO_EXPORT const GList *lasso_server_get_svc_metadatas(LassoServer *server); |
|
40 | ||
41 |
LASSO_EXPORT GList *lasso_server_get_svc_metadatas_with_id_and_type(LassoServer *server, |
|
42 |
GList *svcMDIDs, const gchar *service_type); |
|
43 | ||
44 |
void lasso_server_init_id_wsf20_services(LassoServer *server, xmlNode *t); |
|
45 | ||
46 |
#ifdef __cplusplus |
|
47 |
} |
|
48 |
#endif /* __cplusplus */ |
|
49 | ||
50 |
#endif /* __LASSO_IDWSF2_SERVER_H__ */ |
|
51 |
lasso/id-wsf-2.0/serverprivate.h | ||
---|---|---|
1 |
/* $Id: server.h 2945 2006-11-19 20:07:46Z dlaniel $ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#ifndef __LASSO_IDWSF2_SERVERPRIVATE_H__ |
|
25 |
#define __LASSO_IDWSF2_SERVERPRIVATE_H__ |
|
26 | ||
27 |
#include "../utils.h" |
|
28 | ||
29 |
#ifdef __cplusplus |
|
30 |
extern "C" { |
|
31 |
#endif /* __cplusplus */ |
|
32 | ||
33 |
#include "../id-ff/server.h" |
|
34 |
#include <libxml/tree.h> |
|
35 | ||
36 |
void lasso_server_init_id_wsf20_svcmds(LassoServer *server, xmlNode *t); |
|
37 | ||
38 |
void lasso_server_dump_id_wsf20_svcmds(LassoServer *server, xmlNode *xmlnode); |
|
39 | ||
40 |
#ifdef __cplusplus |
|
41 |
} |
|
42 |
#endif /* __cplusplus */ |
|
43 | ||
44 |
#endif /* __LASSO_IDWSF2_SERVERPRIVATE_H__ */ |
lasso/id-wsf-2.0/session.c | ||
---|---|---|
1 |
/* $Id$ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
/** |
|
25 |
* SECTION:idwsf2-session-extension |
|
26 |
*/ |
|
27 |
#include "session.h" |
|
28 |
#include "../xml/id-wsf-2.0/idwsf2_strings.h" |
|
29 |
#include "../utils.h" |
|
30 |
#include "../id-ff/session.h" |
|
31 |
#include "../id-ff/sessionprivate.h" |
|
32 |
#include "../xml/misc_text_node.h" |
|
33 |
#include "../xml/ws/wsa_endpoint_reference.h" |
|
34 |
#include "../xml/saml-2.0/saml2_assertion.h" |
|
35 |
#include "../xml/id-wsf-2.0/disco_svc_metadata.h" |
|
36 |
#include "../xml/id-wsf-2.0/disco_service_type.h" |
|
37 |
#include "../xml/id-wsf-2.0/disco_security_context.h" |
|
38 |
#include "../xml/id-wsf-2.0/sec_token.h" |
|
39 | ||
40 | ||
41 |
typedef struct _DumpContext { |
|
42 |
xmlNode *parent; |
|
43 |
} DumpContext; |
|
44 | ||
45 |
/** |
|
46 |
* lasso_session_add_endpoint_reference: |
|
47 |
* @session: a #LassoSession object |
|
48 |
* @epr: a #LassoWsAddrEndpointReference object |
|
49 |
* |
|
50 |
* Add an endpoint reference to a session object. |
|
51 |
* |
|
52 |
* Return value: 0 if successfull, an error code otherwise. |
|
53 |
*/ |
|
54 |
gint |
|
55 |
lasso_session_add_endpoint_reference(LassoSession *session, LassoWsAddrEndpointReference *epr) |
|
56 |
{ |
|
57 |
GList *i; |
|
58 | ||
59 |
g_return_val_if_fail(LASSO_IS_SESSION(session), LASSO_PARAM_ERROR_INVALID_VALUE); |
|
60 |
g_return_val_if_fail(LASSO_IS_WSA_ENDPOINT_REFERENCE(epr), LASSO_PARAM_ERROR_INVALID_VALUE); |
|
61 | ||
62 |
for (i = g_list_first(epr->Metadata->any); i != NULL; i = g_list_next(i)) { |
|
63 |
if (LASSO_IS_IDWSF2_DISCO_SERVICE_TYPE(i->data)) { |
|
64 |
g_hash_table_insert(session->private_data->eprs, |
|
65 |
g_strdup(LASSO_IDWSF2_DISCO_SERVICE_TYPE(i->data)->content), |
|
66 |
g_object_ref(epr)); |
|
67 |
session->is_dirty = TRUE; |
|
68 |
break; |
|
69 |
} |
|
70 |
} |
|
71 | ||
72 |
return 0; |
|
73 |
} |
|
74 | ||
75 |
/** |
|
76 |
* lasso_session_get_endpoint_reference: |
|
77 |
* @session: a #LassoSession object |
|
78 |
* @service_type: a string giving the service type. |
|
79 |
* |
|
80 |
* Return an endpoint reference for the given service type. |
|
81 |
* |
|
82 |
* Return value: a caller owned #LassoWsAddrEndpointReference object for the given service type if |
|
83 |
* one is found, NULL otherwise. |
|
84 |
*/ |
|
85 |
LassoWsAddrEndpointReference* |
|
86 |
lasso_session_get_endpoint_reference(LassoSession *session, const gchar *service_type) |
|
87 |
{ |
|
88 |
LassoWsAddrEndpointReference* epr; |
|
89 | ||
90 |
if (! LASSO_IS_SESSION(session) || service_type == NULL) |
|
91 |
return NULL; |
|
92 | ||
93 |
epr = g_hash_table_lookup(session->private_data->eprs, service_type); |
|
94 |
if (LASSO_IS_WSA_ENDPOINT_REFERENCE(epr)) { |
|
95 |
return (LassoWsAddrEndpointReference*)g_object_ref(epr); |
|
96 |
} else { |
|
97 |
return NULL; |
|
98 |
} |
|
99 |
} |
|
100 | ||
101 |
/** |
|
102 |
* lasso_session_get_assertion_identity_token: |
|
103 |
* @session: a #LassoSession object |
|
104 |
* @service_type: a char* string describing the targeted service |
|
105 |
* |
|
106 |
* Return a security token to contact a specified service. |
|
107 |
* |
|
108 |
* Return value: (allow-none): a #LassoAssertion object or NULL |
|
109 |
*/ |
|
110 |
LassoSaml2Assertion* |
|
111 |
lasso_session_get_assertion_identity_token(LassoSession *session, const gchar *service_type) |
|
112 |
{ |
|
113 |
LassoWsAddrEndpointReference* epr; |
|
114 |
GList *metadata_item; |
|
115 |
GList *i; |
|
116 |
LassoIdWsf2DiscoSecurityContext *security_context; |
|
117 |
LassoIdWsf2SecToken *sec_token; |
|
118 |
LassoSaml2Assertion *assertion = NULL; |
|
119 | ||
120 |
if (LASSO_IS_SESSION(session) == FALSE) { |
|
121 |
return NULL; |
|
122 |
} |
|
123 | ||
124 |
epr = lasso_session_get_endpoint_reference(session, service_type); |
|
125 |
if (epr == NULL || epr->Metadata == NULL) { |
|
126 |
return NULL; |
|
127 |
} |
|
128 | ||
129 |
metadata_item = epr->Metadata->any; |
|
130 |
for (i = g_list_first(metadata_item); i != NULL; i = g_list_next(i)) { |
|
131 |
if (LASSO_IS_IDWSF2_DISCO_SECURITY_CONTEXT(i->data)) { |
|
132 |
security_context = LASSO_IDWSF2_DISCO_SECURITY_CONTEXT(i->data); |
|
133 |
if (security_context->Token != NULL) { |
|
134 |
sec_token = security_context->Token->data; |
|
135 |
if (LASSO_IS_SAML2_ASSERTION(sec_token->any)) { |
|
136 |
lasso_assign_gobject(assertion, sec_token->any); |
|
137 |
break; |
|
138 |
} |
|
139 |
} |
|
140 |
} |
|
141 |
} |
|
142 | ||
143 |
return assertion; |
|
144 |
} |
|
145 | ||
146 |
void |
|
147 |
lasso_session_id_wsf2_init_eprs(LassoSession *session, xmlNode *t) |
|
148 |
{ |
|
149 |
xmlNode *t2; |
|
150 | ||
151 |
/* Endpoint References */ |
|
152 |
if (strcmp((char*)t->name, "EndpointReferences") == 0) { |
|
153 |
t2 = t->children; |
|
154 |
while (t2) { |
|
155 |
LassoWsAddrEndpointReference *epr; |
|
156 |
if (t2->type != XML_ELEMENT_NODE) { |
|
157 |
t2 = t2->next; |
|
158 |
continue; |
|
159 |
} |
|
160 |
epr = LASSO_WSA_ENDPOINT_REFERENCE( |
|
161 |
lasso_wsa_endpoint_reference_new()); |
|
162 |
LASSO_NODE_GET_CLASS(epr)->init_from_xml(LASSO_NODE(epr), t2); |
|
163 |
lasso_session_add_endpoint_reference(session, epr); |
|
164 |
g_object_unref(epr); |
|
165 |
t2 = t2->next; |
|
166 |
} |
|
167 |
} |
|
168 |
} |
|
169 | ||
170 |
static void |
|
171 |
add_childnode_from_hashtable(G_GNUC_UNUSED gchar *key, LassoNode *value, DumpContext *context) |
|
172 |
{ |
|
173 |
xmlNode *xmlnode; |
|
174 | ||
175 |
xmlnode = context->parent; |
|
176 |
xmlAddChild(xmlnode, lasso_node_get_xmlNode(LASSO_NODE(value), TRUE)); |
|
177 |
} |
|
178 | ||
179 |
void |
|
180 |
lasso_session_id_wsf2_dump_eprs(LassoSession *session, xmlNode *xmlnode) { |
|
181 |
xmlNode *t; |
|
182 |
DumpContext context; |
|
183 | ||
184 |
/* Endpoint References */ |
|
185 |
if (session->private_data->eprs != NULL |
|
186 |
&& g_hash_table_size(session->private_data->eprs)) { |
|
187 |
t = xmlNewTextChild(xmlnode, NULL, (xmlChar*)"EndpointReferences", NULL); |
|
188 |
context.parent = t; |
|
189 |
g_hash_table_foreach(session->private_data->eprs, |
|
190 |
(GHFunc)add_childnode_from_hashtable, &context); |
|
191 |
} |
|
192 |
} |
lasso/id-wsf-2.0/session.h | ||
---|---|---|
1 |
/* $Id$ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#ifndef __LASSO_IDWSF2_SESSION_H__ |
|
25 |
#define __LASSO_IDWSF2_SESSION_H__ |
|
26 | ||
27 |
#ifdef __cplusplus |
|
28 |
extern "C" { |
|
29 |
#endif /* __cplusplus */ |
|
30 | ||
31 |
#include "../id-ff/session.h" |
|
32 |
#include "../xml/saml-2.0/saml2_assertion.h" |
|
33 |
#include "../xml/ws/wsa_endpoint_reference.h" |
|
34 | ||
35 |
LASSO_EXPORT lasso_error_t lasso_session_add_endpoint_reference(LassoSession *session, |
|
36 |
LassoWsAddrEndpointReference *epr); |
|
37 | ||
38 |
LASSO_EXPORT LassoWsAddrEndpointReference* lasso_session_get_endpoint_reference( |
|
39 |
LassoSession *session, const gchar *service_type); |
|
40 | ||
41 |
LASSO_EXPORT LassoSaml2Assertion* lasso_session_get_assertion_identity_token( |
|
42 |
LassoSession *session, const gchar *service_type); |
|
43 | ||
44 |
#ifdef __cplusplus |
|
45 |
} |
|
46 |
#endif /* __cplusplus */ |
|
47 | ||
48 |
#endif /* __LASSO_IDWSF2_SESSION_H__ */ |
|
49 |
lasso/id-wsf-2.0/sessionprivate.h | ||
---|---|---|
1 |
/* $Id$ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#ifndef __LASSO_IDWSF2_SERVERPRIVATE_H__ |
|
25 |
#define __LASSO_IDWSF2_SERVERPRIVATE_H__ |
|
26 | ||
27 |
#include "../utils.h" |
|
28 | ||
29 |
#ifdef __cplusplus |
|
30 |
extern "C" { |
|
31 |
#endif /* __cplusplus */ |
|
32 | ||
33 |
#include "../id-ff/session.h" |
|
34 |
#include <libxml/tree.h> |
|
35 | ||
36 |
void lasso_session_id_wsf2_init_eprs(LassoSession *session, xmlNode *t); |
|
37 |
void lasso_session_id_wsf2_dump_eprs(LassoSession *session, xmlNode *xmlnode); |
|
38 | ||
39 |
#ifdef __cplusplus |
|
40 |
} |
|
41 |
#endif /* __cplusplus */ |
|
42 | ||
43 |
#endif /* __LASSO_IDWSF2_SERVERPRIVATE_H__ */ |
lasso/id-wsf-2.0/soap_binding.c | ||
---|---|---|
1 |
/* $Id: wsf_profile.c,v 1.45 2007/01/05 16:11:02 Exp $ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#include "soap_binding.h" |
|
25 |
#include "../xml/idwsf_strings.h" |
|
26 |
#include "../xml/id-wsf-2.0/idwsf2_strings.h" |
|
27 |
#include "../xml/id-wsf-2.0/sb2_sender.h" |
|
28 |
#include "../xml/id-wsf-2.0/sb2_redirect_request.h" |
|
29 |
#include "../xml/id-wsf-2.0/sb2_user_interaction_header.h" |
|
30 |
#include "../xml/ws/wsa_attributed_uri.h" |
|
31 | ||
32 |
#include "../utils.h" |
|
33 | ||
34 |
#define get_header(test) \ |
|
35 |
GList *i = NULL; \ |
|
36 |
\ |
|
37 |
if (! LASSO_IS_SOAP_ENVELOPE(soap_envelope)) \ |
|
38 |
return NULL; \ |
|
39 |
if (! LASSO_IS_SOAP_HEADER(soap_envelope->Header)) \ |
|
40 |
return NULL; \ |
|
41 |
\ |
|
42 |
i = soap_envelope->Header->Other; \ |
|
43 |
for (; i != NULL; i = g_list_next(i)) { \ |
|
44 |
if (test(i->data)) { \ |
|
45 |
break; \ |
|
46 |
} \ |
|
47 |
} |
|
48 | ||
49 |
inline static LassoNode* _get_node(GList **list, GType node_type, const char *node_name, |
|
50 |
const char *node_namespace, const char *node_prefix, gboolean create); |
|
51 | ||
52 |
/** |
|
53 |
* lasso_soap_envelope_sb2_get_provider_id: |
|
54 |
* @soap_envelope: a #LassoSoapEnvelope object |
|
55 |
* |
|
56 |
* Return the providerID contained in the sb2:Sender header. |
|
57 |
* |
|
58 |
* Return value: the providerID string or NULL if no sb2:Sender header is present. |
|
59 |
*/ |
|
60 |
char * |
|
61 |
lasso_soap_envelope_sb2_get_provider_id(LassoSoapEnvelope *soap_envelope) |
|
62 |
{ |
|
63 |
get_header(LASSO_IS_IDWSF2_SB2_SENDER); |
|
64 | ||
65 |
if (i) |
|
66 |
return g_strdup(((LassoIdWsf2Sb2Sender*)i->data)->providerID); |
|
67 |
else |
|
68 |
return NULL; |
|
69 |
} |
|
70 | ||
71 |
/** |
|
72 |
* lasso_soap_envelope_sb2_get_redirect_request_url: |
|
73 |
* @soap_envelope: a #LassoSoapEnvelope object |
|
74 |
* |
|
75 |
* <para>Return the redirect request URL from the sb2:RedirectRequest SOAP Fault detail.</para> |
|
76 |
* |
|
77 |
* <para>The WSC MUST verify that this URL belong to the WSP. You can do this by comparing the domain |
|
78 |
* with the one in the @LassoProfile.msg_url field</para> |
|
79 |
* <para>The WSC MUST redirect the User Agent to this URL with a GET or POST request. It MUST add a |
|
80 |
* parameter named ReturnToURL giving the URL where the WSP will send the User Agent after the |
|
81 |
* interaction. It MAY add an IDP parameter indicating to the WSP how to authenticate the principal |
|
82 |
* if no preexisting session with the User Agent exists</para> |
|
83 |
*<para>The WSP must check that the ReturnToURL belon to the WSP, by using the providerID URL for example.</para> |
|
84 |
<para>After the interaction the WSC must redirect the User Agent to the ReturnToURL URL adding a parameter named ResendMessage. If ResendMessage is 0 or false, it means that the principal refused to continue the process. Any other value means that the prinicpal accepted and so the WSC can try again its request.</para> |
|
85 |
<para>In order to succeed the request need to refer to the SOAP Fault response containing the RedirectRequest element. See lasso_soap_envelope_get_relates_to(), and #LassoWsAddrAttributedURI.</para> |
|
86 |
* |
|
87 |
* Return value:(transfer none)(allow-none): the redirect URL string or NULL if no sb2:RedirectRequest detail is present. |
|
88 |
*/ |
|
89 |
const char * |
|
90 |
lasso_soap_envelope_sb2_get_redirect_request_url(LassoSoapEnvelope *soap_envelope) |
|
91 |
{ |
|
92 |
LassoSoapFault *fault; |
|
93 |
LassoIdWsf2Sb2RedirectRequest *redirect_request; |
|
94 | ||
95 |
fault = lasso_soap_envelope_get_soap_fault(soap_envelope, FALSE); |
|
96 |
if (! fault || ! LASSO_IS_SOAP_DETAIL(fault->Detail)) |
|
97 |
return NULL; |
|
98 | ||
99 |
redirect_request = (LassoIdWsf2Sb2RedirectRequest*) _get_node(&fault->Detail->any, LASSO_TYPE_IDWSF2_SB2_REDIRECT_REQUEST, NULL, NULL, NULL, FALSE); |
|
100 |
if (! redirect_request) |
|
101 |
return NULL; |
|
102 |
return redirect_request->redirectURL; |
|
103 |
} |
|
104 | ||
105 |
/** |
|
106 |
* lasso_soap_envelope_sb2_get_target_identity_header: |
|
107 |
* @soap_envelope: a #LassoSoapEnvelope object. |
|
108 |
* |
|
109 |
* Return the first sb2:TargetIdentity header. |
|
110 |
* |
|
111 |
* Return value: (transfer none): the first #LassoIdWsf2Sb2TargetIdentity object found in the |
|
112 |
* headers of the @soap_envelope, or NULL if none is found. |
|
113 |
*/ |
|
114 |
LassoIdWsf2Sb2TargetIdentity* |
|
115 |
lasso_soap_envelope_sb2_get_target_identity_header(LassoSoapEnvelope *soap_envelope) |
|
116 |
{ |
|
117 |
get_header(LASSO_IS_IDWSF2_SB2_TARGET_IDENTITY); |
|
118 | ||
119 |
if (i) |
|
120 |
return (LassoIdWsf2Sb2TargetIdentity*)i->data; |
|
121 |
else |
|
122 |
return NULL; |
|
123 |
} |
|
124 | ||
125 | ||
126 |
/** |
|
127 |
* lasso_soap_envelope_wssec_get_security_header_impl: |
|
128 |
* @soap_envelope: a #LassoSoapEnvelope object |
|
129 |
* @create: wether to create the header if not found |
|
130 |
* |
|
131 |
* Return value: (transfer none): the wsse:Security header found in the SOAP message, or NULL if |
|
132 |
* none is found, and creation was not allowed. |
|
133 |
*/ |
|
134 |
static LassoWsSec1SecurityHeader* |
|
135 |
lasso_soap_envelope_wssec_get_security_header_impl(LassoSoapEnvelope *soap_envelope, |
|
136 |
gboolean create) |
|
137 |
{ |
|
138 |
get_header(LASSO_IS_WSSE_SECURITY_HEADER); |
|
139 | ||
140 |
if (i) { |
|
141 |
return (LassoWsSec1SecurityHeader*)i->data; |
|
142 |
} |
|
143 | ||
144 |
if (create) { |
|
145 |
LassoWsSec1SecurityHeader *wssec_security = lasso_wsse_security_header_new(); |
|
146 |
lasso_list_add_new_gobject (soap_envelope->Header->Other, wssec_security); |
|
147 |
return wssec_security; |
|
148 |
} |
|
149 | ||
150 |
return NULL; |
|
151 |
} |
|
152 | ||
153 |
/** |
|
154 |
* lasso_soap_envelope_wssec_get_security_header: |
|
155 |
* @soap_envelope: a #LassoSoapEnvelope object |
|
156 |
* |
|
157 |
* Return the first wsse:Security header found in the headers of @soap_envelope. |
|
158 |
* |
|
159 |
* Return value: (transfer none): the wsse:Security header found in the SOAP message, or NULL if |
|
160 |
* none is found. |
|
161 |
*/ |
|
162 |
LassoWsSec1SecurityHeader* |
|
163 |
lasso_soap_envelope_wssec_get_security_header(LassoSoapEnvelope *soap_envelope) |
|
164 |
{ |
|
165 |
return lasso_soap_envelope_wssec_get_security_header_impl (soap_envelope, FALSE); |
|
166 |
} |
|
167 | ||
168 |
/** |
|
169 |
* lasso_soap_envelope_add_security_token: |
|
170 |
* @soap_envelope: a #LassoSoapEnvelope object |
|
171 |
* @token: a #LassoNode to use as a security token |
|
172 |
* |
|
173 |
* Add @token as a security token to the headers of @soap_envelope using a |
|
174 |
* #LassoWsSec1SecurityHeader element as a container. Eventually create the |
|
175 |
* #LassoWsSec1SecurityHeader element if it does not exist already. |
|
176 |
*/ |
|
177 |
void |
|
178 |
lasso_soap_envelope_add_security_token(LassoSoapEnvelope *soap_envelope, LassoNode *token) |
|
179 |
{ |
|
180 |
LassoWsSec1SecurityHeader *wssec_security; |
|
181 | ||
182 |
wssec_security = lasso_soap_envelope_wssec_get_security_header_impl (soap_envelope, TRUE); |
|
183 |
g_return_if_fail (wssec_security != NULL); |
|
184 |
lasso_list_add_gobject(wssec_security->any, token); |
|
185 |
} |
|
186 | ||
187 |
/** |
|
188 |
* lasso_soap_envelope_get_saml2_security_token: |
|
189 |
* @soap_envelope: a #LassoSoapEnvelope object |
|
190 |
* |
|
191 |
* Return a SAML2 Assertion used as a security token if one is found in the headers of |
|
192 |
* @soap_envelope. |
|
193 |
* |
|
194 |
* Return value: (transfer none): a #LassoSaml2Assertion, or NULL if none is found. |
|
195 |
*/ |
|
196 |
LassoSaml2Assertion* |
|
197 |
lasso_soap_envelope_get_saml2_security_token(LassoSoapEnvelope *soap_envelope) |
|
198 |
{ |
|
199 |
const LassoWsSec1SecurityHeader *security; |
|
200 |
GList *it; |
|
201 | ||
202 |
security = lasso_soap_envelope_wssec_get_security_header (soap_envelope); |
|
203 |
if (! security) |
|
204 |
return NULL; |
|
205 |
lasso_foreach (it, security->any) { |
|
206 |
if (LASSO_IS_SAML2_ASSERTION (it->data)) { |
|
207 |
return (LassoSaml2Assertion*)g_object_ref(it->data); |
|
208 |
} |
|
209 |
} |
|
210 |
return NULL; |
|
211 |
} |
|
212 | ||
213 |
/** |
|
214 |
* lasso_soap_envelope_add_action_header: |
|
215 |
* @soap_envelope: a #LassoSoapEnvelope object |
|
216 |
* @action: the action targeted by this message |
|
217 |
* |
|
218 |
* Add an action header to a #LassoSoapEnvelope object. |
|
219 |
*/ |
|
220 |
void |
|
221 |
lasso_soap_envelope_add_action(LassoSoapEnvelope *soap_envelope, const char *action) |
|
222 |
{ |
|
223 |
LassoWsAddrAttributedURI *wsa_action; |
|
224 | ||
225 |
if (! LASSO_IS_SOAP_ENVELOPE(soap_envelope) || ! LASSO_IS_SOAP_HEADER(soap_envelope->Header)) |
|
226 |
return; |
|
227 |
wsa_action = lasso_wsa_attributed_uri_new_with_string(action); |
|
228 |
lasso_node_set_custom_nodename(&wsa_action->parent, "Action"); |
|
229 |
lasso_list_add_new_gobject(soap_envelope->Header->Other, wsa_action); |
|
230 |
} |
|
231 | ||
232 |
const char* |
|
233 |
lasso_soap_envelope_get_action(LassoSoapEnvelope *soap_envelope) |
|
234 |
{ |
|
235 |
GList *i; |
|
236 | ||
237 |
if (! LASSO_IS_SOAP_ENVELOPE(soap_envelope) || ! LASSO_IS_SOAP_HEADER(soap_envelope->Header)) |
|
238 |
return NULL; |
|
239 | ||
240 |
lasso_foreach(i, soap_envelope->Header->Other) { |
|
241 |
if (LASSO_IS_WSA_ATTRIBUTED_URI(i->data) |
|
242 |
&& lasso_strisequal(lasso_node_get_name((LassoNode *)i->data),"Action")) { |
|
243 |
return ((LassoWsAddrAttributedURI*)i->data)->content; |
|
244 |
} |
|
245 |
} |
|
246 |
return NULL; |
|
247 |
} |
|
248 | ||
249 |
/** |
|
250 |
* lasso_soap_envelope_add_to_body: |
|
251 |
* @soap_envelope: a #LassoSoapEnvelope object |
|
252 |
* @content: a #LassoNode object to add to the body of the SOAP message |
|
253 |
* |
|
254 |
* Add new content to the SOAP message body. |
|
255 |
*/ |
|
256 |
void |
|
257 |
lasso_soap_envelope_add_to_body(LassoSoapEnvelope *soap_envelope, LassoNode *content) |
|
258 |
{ |
|
259 |
if (!LASSO_IS_SOAP_ENVELOPE(soap_envelope) || !LASSO_IS_SOAP_BODY(soap_envelope->Body)) |
|
260 |
return; |
|
261 |
lasso_list_add_gobject(soap_envelope->Body->any, content); |
|
262 |
} |
|
263 | ||
264 |
inline static LassoNode* |
|
265 |
_get_node(GList **list, GType node_type, const char *node_name, const char *node_namespace, |
|
266 |
const char *node_prefix, gboolean create) |
|
267 |
{ |
|
268 |
GList *i; |
|
269 | ||
270 |
lasso_foreach(i, (*list)) { |
|
271 |
LassoNode *node = (LassoNode*)i->data; |
|
272 | ||
273 |
if (LASSO_IS_NODE(node) && |
|
274 |
(! node_type || ( G_IS_OBJECT(node) && G_OBJECT_TYPE(node) == node_type)) && |
|
275 |
(! node_name || lasso_strisequal(lasso_node_get_name(node),node_name)) && |
|
276 |
(! node_namespace || |
|
277 |
lasso_strisequal(lasso_node_get_namespace(node),node_namespace))) { |
|
278 |
return node; |
|
279 |
} |
|
280 |
} |
|
281 |
if (create) { |
|
282 |
LassoNode *node = (LassoNode*)g_object_new(node_type, NULL); |
|
283 |
if (! node) { |
|
284 |
return NULL; |
|
285 |
} |
|
286 |
if (lasso_strisnotequal(lasso_node_get_name(node),node_name)) { |
|
287 |
lasso_node_set_custom_nodename(node, node_name); |
|
288 |
} |
|
289 |
if (lasso_strisequal(lasso_node_get_namespace(node),node_namespace)) { |
|
290 |
lasso_node_set_custom_namespace(node, node_namespace, node_prefix); |
|
291 |
} |
|
292 |
lasso_list_add_new_gobject(*list, node); |
|
293 |
return node; |
|
294 |
} |
|
295 |
return NULL; |
|
296 |
} |
|
297 | ||
298 |
LassoNode* |
|
299 |
_lasso_soap_envelope_get_header(LassoSoapEnvelope *soap_envelope, GType node_type, |
|
300 |
const char *node_name, const char *node_namespace, const char *node_prefix, |
|
301 |
gboolean create) |
|
302 |
{ |
|
303 |
if (! LASSO_IS_SOAP_ENVELOPE(soap_envelope) || ! |
|
304 |
LASSO_IS_SOAP_HEADER(soap_envelope->Header)) { |
|
305 |
return NULL; |
|
306 |
} |
|
307 | ||
308 |
return _get_node(&soap_envelope->Header->Other, node_type, node_name, node_namespace, |
|
309 |
node_prefix, create); |
|
310 |
} |
|
311 | ||
312 | ||
313 |
/** |
|
314 |
* lasso_soap_envelope_get_message_id: |
|
315 |
* @soap_envelope: a #LassoSoapEnvelope object |
|
316 |
* @create:(default FALSE): whether to create the node if it is not found |
|
317 |
* |
|
318 |
* Return the WS-Addressing header MessageID content. |
|
319 |
* |
|
320 |
* Return value:(transfer none): a #LassoWsAddrAttributedURI object or NULL if none is found, and |
|
321 |
* creation was not allowed. |
|
322 |
*/ |
|
323 |
LassoWsAddrAttributedURI* |
|
324 |
lasso_soap_envelope_get_message_id(LassoSoapEnvelope *soap_envelope, gboolean create) |
|
325 |
{ |
|
326 |
return (LassoWsAddrAttributedURI*)_lasso_soap_envelope_get_header(soap_envelope, |
|
327 |
LASSO_TYPE_WSA_ATTRIBUTED_URI, LASSO_WSA_ELEMENT_MESSAGE_ID, NULL, NULL, |
|
328 |
create); |
|
329 |
} |
|
330 | ||
331 |
/** |
|
332 |
* lasso_soap_envelope_get_relates_to: |
|
333 |
* @soap_envelope: a #LassoSoapEnvelope object |
|
334 |
* @create:(default FALSE): whether to create the node if it is not found |
|
335 |
* |
|
336 |
* |
|
337 |
* Returns the RelatesTo WS-Addressing header, if it exists. |
|
338 |
* |
|
339 |
* Return value:(transfer none): a #LassoWsAddrAttributedURI object or NULL if none is found, and creation was not allowed. |
|
340 |
*/ |
|
341 |
LassoWsAddrRelatesTo* |
|
342 |
lasso_soap_envelope_get_relates_to(LassoSoapEnvelope *soap_envelope, gboolean create) |
|
343 |
{ |
|
344 |
return (LassoWsAddrRelatesTo*)_lasso_soap_envelope_get_header(soap_envelope, |
|
345 |
LASSO_TYPE_WSA_RELATES_TO, NULL, NULL, NULL, create); |
|
346 |
} |
|
347 | ||
348 |
/** |
|
349 |
* lasso_soap_envelope_set_relates_to: |
|
350 |
* @soap_envelope: a #LassoSoapEnvelope object |
|
351 |
* @value:(allow-none): the value to set into the new header |
|
352 |
* @relationship:(allow-none): kind of the relationship |
|
353 |
* |
|
354 |
* Set the value of the RelatesTo header, if it does not exist it is created. If @value is NULL, the |
|
355 |
* header is removed. |
|
356 |
*/ |
|
357 |
void |
|
358 |
lasso_soap_envelope_set_relates_to(LassoSoapEnvelope *soap_envelope, char *value, char *relationship) |
|
359 |
{ |
|
360 |
LassoWsAddrRelatesTo *relates_to; |
|
361 |
if (! LASSO_IS_SOAP_ENVELOPE(soap_envelope)) |
|
362 |
return; |
|
363 | ||
364 | ||
365 |
relates_to = lasso_soap_envelope_get_relates_to(soap_envelope, TRUE); |
|
366 |
if (value) { |
|
367 |
g_return_if_fail(relates_to); |
|
368 |
lasso_assign_string(relates_to->content, value); |
|
369 |
lasso_assign_string(relates_to->RelationshipType, relationship); |
|
370 |
} else if (relates_to) { |
|
371 |
lasso_list_remove_gobject(soap_envelope->Header->Other, relates_to); |
|
372 |
} |
|
373 |
} |
|
374 | ||
375 |
/** |
|
376 |
* lasso_soap_envelope_get_body_content: |
|
377 |
* @soap_envelope: a #LassoSoapEnvelope object |
|
378 |
* |
|
379 |
* Return the body content of the @soap_envelope object. |
|
380 |
* |
|
381 |
* Return value:(element-type LassoNode): the content or NULL if the concent is empty or the object invalid. |
|
382 |
*/ |
|
383 |
GList* |
|
384 |
lasso_soap_envelope_get_body_content(LassoSoapEnvelope *soap_envelope) { |
|
385 |
if (LASSO_IS_SOAP_ENVELOPE(soap_envelope) && LASSO_IS_SOAP_BODY(soap_envelope->Body)) |
|
386 |
return soap_envelope->Body->any; |
|
387 |
return NULL; |
|
388 |
} |
|
389 | ||
390 |
LassoSoapDetail * |
|
391 |
lasso_soap_fault_get_detail(LassoSoapFault *soap_fault, gboolean create) |
|
392 |
{ |
|
393 |
if (! LASSO_IS_SOAP_FAULT(soap_fault)) |
|
394 |
return NULL; |
|
395 | ||
396 |
if (soap_fault->Detail == NULL && create) { |
|
397 |
soap_fault->Detail = lasso_soap_detail_new(); |
|
398 |
} |
|
399 |
return soap_fault->Detail; |
|
400 |
} |
|
401 | ||
402 | ||
403 |
/** |
|
404 |
* lasso_soap_fault_add_to_detail: |
|
405 |
* @soap_fault: a #LassoSoapFault object |
|
406 |
* @node: a node to add to the Detail sub-element of the @soap_fault object. |
|
407 |
* |
|
408 |
* Fill the detail part of a SOAP fault. |
|
409 |
*/ |
|
410 |
void |
|
411 |
lasso_soap_fault_add_to_detail(LassoSoapFault *soap_fault, |
|
412 |
LassoNode *node) |
|
413 |
{ |
|
414 |
LassoSoapDetail *detail; |
|
415 | ||
416 |
detail = lasso_soap_fault_get_detail(soap_fault, TRUE); |
|
417 |
if (detail) { |
|
418 |
lasso_list_add_gobject(detail->any, node); |
|
419 |
} |
|
420 |
} |
|
421 | ||
422 |
LassoIdWsf2Sb2UserInteractionHeader * |
|
423 |
lasso_soap_envelope_get_sb2_user_interaction_header(LassoSoapEnvelope *soap_envelope, gboolean create) |
|
424 |
{ |
|
425 |
return (LassoIdWsf2Sb2UserInteractionHeader*)_lasso_soap_envelope_get_header(soap_envelope, |
|
426 |
LASSO_TYPE_IDWSF2_SB2_USER_INTERACTION_HEADER, NULL, NULL, NULL, |
|
427 |
create); |
|
428 |
} |
|
429 | ||
430 |
LassoIdWsf2Sb2UserInteractionHint |
|
431 |
lasso_soap_envelope_get_sb2_user_interaction_hint(LassoSoapEnvelope *soap_envelope) |
|
432 |
{ |
|
433 |
const char *hint; |
|
434 |
LassoIdWsf2Sb2UserInteractionHeader *header; |
|
435 | ||
436 |
header = lasso_soap_envelope_get_sb2_user_interaction_header(soap_envelope, FALSE); |
|
437 |
if (header) { |
|
438 |
hint = header->interact; |
|
439 |
if (lasso_strisequal(hint,LASSO_SB2_USER_INTERACTION_INTERACT_IF_NEEDED)) |
|
440 |
return LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_INTERACT_IF_NEEDED; |
|
441 |
if (lasso_strisequal(hint,LASSO_SB2_USER_INTERACTION_DO_NOT_INTERACT)) |
|
442 |
return LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_DO_NOT_INTERACT; |
|
443 |
if (lasso_strisequal(hint,LASSO_SB2_USER_INTERACTION_DO_NOT_INTERACT_FOR_DATA)) |
|
444 |
return LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_DO_NOT_INTERACT_FOR_DATA; |
|
445 | ||
446 |
} |
|
447 |
return LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_NONE; |
|
448 |
} |
|
449 | ||
450 |
void |
|
451 |
lasso_soap_envelope_set_sb2_user_interaction_hint(LassoSoapEnvelope *soap_envelope, |
|
452 |
LassoIdWsf2Sb2UserInteractionHint hint) |
|
453 |
{ |
|
454 |
LassoIdWsf2Sb2UserInteractionHeader *user_interaction; |
|
455 | ||
456 |
user_interaction = lasso_soap_envelope_get_sb2_user_interaction_header(soap_envelope, TRUE); |
|
457 |
switch (hint) { |
|
458 |
case LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_INTERACT_IF_NEEDED: |
|
459 |
lasso_assign_string(user_interaction->interact, |
|
460 |
LASSO_SB2_USER_INTERACTION_INTERACT_IF_NEEDED); |
|
461 |
break; |
|
462 |
case LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_DO_NOT_INTERACT: |
|
463 |
lasso_assign_string(user_interaction->interact, |
|
464 |
LASSO_SB2_USER_INTERACTION_DO_NOT_INTERACT); |
|
465 |
break; |
|
466 |
case LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_DO_NOT_INTERACT_FOR_DATA: |
|
467 |
lasso_assign_string(user_interaction->interact, |
|
468 |
LASSO_SB2_USER_INTERACTION_DO_NOT_INTERACT_FOR_DATA); |
|
469 |
break; |
|
470 |
default: |
|
471 |
lasso_release_string(user_interaction->interact); |
|
472 |
} |
|
473 |
} |
|
474 | ||
475 |
/** |
|
476 |
* lasso_soap_envelope_get_soap_fault: |
|
477 |
* @soap_envelope: a #LassoSoapEnvelope |
|
478 |
* @create:(default FALSE): whether to create the SOAP Fault |
|
479 |
* |
|
480 |
* Return the first SOAP Fault in the Body of the soap message @soap_envelope. |
|
481 |
* |
|
482 |
* Return value:(transfer none)(allow-none): a #LassoSoapFault object or NULL. |
|
483 |
*/ |
|
484 |
LassoSoapFault* |
|
485 |
lasso_soap_envelope_get_soap_fault(LassoSoapEnvelope *soap_envelope, gboolean create) |
|
486 |
{ |
|
487 |
LassoSoapFault *fault; |
|
488 | ||
489 |
if (! LASSO_IS_SOAP_ENVELOPE(soap_envelope) || ! LASSO_SOAP_BODY(soap_envelope->Body)) |
|
490 |
return NULL; |
|
491 | ||
492 |
fault = (LassoSoapFault*)_get_node(&soap_envelope->Body->any, LASSO_TYPE_SOAP_FAULT, NULL, NULL, NULL, create); |
|
493 | ||
494 |
return fault; |
|
495 |
} |
|
496 |
lasso/id-wsf-2.0/soap_binding.h | ||
---|---|---|
1 |
/* $Id: wsf_profile.h,v 1.13 2006/11/14 17:07:30 Exp $ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#ifndef __LASSO_IDWSF2_SOAP_BINDING_H__ |
|
25 |
#define __LASSO_IDWSF2_SOAP_BINDING_H__ |
|
26 | ||
27 |
#ifdef __cplusplus |
|
28 |
extern "C" { |
|
29 |
#endif /* __cplusplus */ |
|
30 | ||
31 |
#include "../export.h" |
|
32 |
#include "../xml/soap-1.1/soap_envelope.h" |
|
33 |
#include "../xml/soap-1.1/soap_fault.h" |
|
34 |
#include "../xml/id-wsf-2.0/sb2_target_identity.h" |
|
35 |
#include "../xml/id-wsf-2.0/sb2_user_interaction_header.h" |
|
36 |
#include "../xml/ws/wsse_security_header.h" |
|
37 |
#include "../xml/ws/wsa_attributed_uri.h" |
|
38 |
#include "../xml/ws/wsa_relates_to.h" |
|
39 |
#include "../xml/saml-2.0/saml2_assertion.h" |
|
40 | ||
41 |
typedef enum { |
|
42 |
LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_NONE, |
|
43 |
LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_INTERACT_IF_NEEDED, |
|
44 |
LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_DO_NOT_INTERACT, |
|
45 |
LASSO_IDWSF2_SB2_USER_INTERACTION_HINT_DO_NOT_INTERACT_FOR_DATA |
|
46 |
} LassoIdWsf2Sb2UserInteractionHint; |
|
47 | ||
48 |
LASSO_EXPORT char* lasso_soap_envelope_sb2_get_provider_id(LassoSoapEnvelope *soap_envelope); |
|
49 | ||
50 |
LASSO_EXPORT const char* lasso_soap_envelope_sb2_get_redirect_request_url( |
|
51 |
LassoSoapEnvelope *soap_envelope); |
|
52 | ||
53 |
LASSO_EXPORT LassoIdWsf2Sb2TargetIdentity* lasso_soap_envelope_sb2_get_target_identity_header( |
|
54 |
LassoSoapEnvelope *soap_envelope); |
|
55 | ||
56 |
LASSO_EXPORT LassoWsSec1SecurityHeader* lasso_soap_envelope_wssec_get_security_header( |
|
57 |
LassoSoapEnvelope *soap_envelope); |
|
58 | ||
59 |
LASSO_EXPORT void lasso_soap_envelope_add_security_token(LassoSoapEnvelope *soap_envelope, |
|
60 |
LassoNode *token); |
|
61 | ||
62 |
LASSO_EXPORT LassoSaml2Assertion *lasso_soap_envelope_get_saml2_security_token( |
|
63 |
LassoSoapEnvelope *soap_envelope); |
|
64 | ||
65 |
LASSO_EXPORT const char* lasso_soap_envelope_get_action(LassoSoapEnvelope *soap_envelope); |
|
66 | ||
67 |
LASSO_EXPORT void lasso_soap_envelope_add_to_body(LassoSoapEnvelope *soap_envelope, |
|
68 |
LassoNode *content); |
|
69 | ||
70 |
LASSO_EXPORT LassoWsAddrAttributedURI *lasso_soap_envelope_get_message_id( |
|
71 |
LassoSoapEnvelope *soap_envelope, gboolean create); |
|
72 | ||
73 |
LASSO_EXPORT LassoWsAddrRelatesTo *lasso_soap_envelope_get_relates_to(LassoSoapEnvelope *envelope, |
|
74 |
gboolean create); |
|
75 | ||
76 |
LASSO_EXPORT GList* lasso_soap_envelope_get_body_content(LassoSoapEnvelope *soap_envelope); |
|
77 | ||
78 |
LASSO_EXPORT void lasso_soap_fault_add_to_detail(LassoSoapFault *soap_fault, |
|
79 |
LassoNode *node); |
|
80 | ||
81 |
LASSO_EXPORT LassoIdWsf2Sb2UserInteractionHeader * |
|
82 |
lasso_soap_envelope_get_sb2_user_interaction_header( |
|
83 |
LassoSoapEnvelope *soap_envelope, gboolean create); |
|
84 | ||
85 |
LASSO_EXPORT LassoIdWsf2Sb2UserInteractionHint |
|
86 |
lasso_soap_envelope_get_sb2_user_interaction_hint( LassoSoapEnvelope *soap_envelope); |
|
87 | ||
88 |
LASSO_EXPORT void lasso_soap_envelope_set_sb2_user_interaction_hint( |
|
89 |
LassoSoapEnvelope *soap_envelope, LassoIdWsf2Sb2UserInteractionHint hint); |
|
90 | ||
91 |
LASSO_EXPORT void lasso_soap_envelope_add_action(LassoSoapEnvelope *soap_envelope, |
|
92 |
const char *action); |
|
93 | ||
94 |
LASSO_EXPORT LassoSoapDetail *lasso_soap_fault_get_detail(LassoSoapFault *soap_fault, |
|
95 |
gboolean create); |
|
96 | ||
97 |
LASSO_EXPORT LassoSoapFault* lasso_soap_envelope_get_soap_fault(LassoSoapEnvelope *soap_envelope, |
|
98 |
gboolean create); |
|
99 | ||
100 |
LASSO_EXPORT void lasso_soap_envelope_set_relates_to(LassoSoapEnvelope *soap_envelope, char *value, char *relationship); |
|
101 | ||
102 |
#ifdef __cplusplus |
|
103 |
} |
|
104 |
#endif /* __cplusplus */ |
|
105 | ||
106 |
#endif /* __LASSO_IDWSF2_SOAP_BINDING_H__ */ |
|
107 |
lasso/id-wsf/Makefile.am | ||
---|---|---|
1 |
MAINTAINERCLEANFILES = Makefile.in |
|
2 |
liblassoincludedir = $(includedir)/lasso/id-wsf |
|
3 | ||
4 |
AM_CPPFLAGS = \ |
|
5 |
-I$(top_builddir) \ |
|
6 |
-I$(top_srcdir) \ |
|
7 |
$(LASSO_CORE_CFLAGS) \ |
|
8 |
-DG_LOG_DOMAIN=\"lasso\" |
|
9 | ||
10 |
lasso_private_h_sources = \ |
|
11 |
wsf_profile_private.h \ |
|
12 |
id_ff_extensions_private.h |
|
13 | ||
14 |
if WSF_ENABLED |
|
15 |
noinst_LTLIBRARIES = liblasso-id-wsf.la |
|
16 |
WSF_C_FILES = \ |
|
17 |
authentication.c \ |
|
18 |
discovery.c \ |
|
19 |
interaction_profile_service.c \ |
|
20 |
personal_profile_service.c \ |
|
21 |
data_service.c \ |
|
22 |
wsf_profile.c \ |
|
23 |
wsf_utils.c \ |
|
24 |
id_ff_extensions.c |
|
25 | ||
26 |
WSF_H_FILES = \ |
|
27 |
id_wsf.h \ |
|
28 |
authentication.h \ |
|
29 |
discovery.h \ |
|
30 |
interaction_profile_service.h \ |
|
31 |
personal_profile_service.h \ |
|
32 |
data_service.h \ |
|
33 |
wsf_profile.h \ |
|
34 |
wsf_utils.h \ |
|
35 |
id_ff_extensions.h |
|
36 |
endif |
|
37 | ||
38 |
liblasso_id_wsf_la_SOURCES = $(WSF_C_FILES) |
|
39 | ||
40 |
liblassoinclude_HEADERS = $(WSF_H_FILES) |
|
41 | ||
42 |
EXTRA_DIST = $(lasso_private_h_sources) |
lasso/id-wsf/authentication.c | ||
---|---|---|
1 |
/* $Id$ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#include "../utils.h" |
|
25 |
#include "authentication.h" |
|
26 |
#include "../xml/idwsf_strings.h" |
|
27 |
#include "../xml/private.h" |
|
28 |
#include "../xml/sa_sasl_request.h" |
|
29 |
#include "../xml/sa_sasl_response.h" |
|
30 |
#include "../xml/soap_binding_correlation.h" |
|
31 |
#include <xmlsec/base64.h> |
|
32 | ||
33 |
/** |
|
34 |
* SECTION:idwsf_authentication |
|
35 |
* @short_description: ID-WSF 1.0 Authentication service |
|
36 |
* @stability: Unstable |
|
37 |
* |
|
38 |
* The authentication service allows to authenticate uniformly using a SOAP encapsulated SASL |
|
39 |
* service. Ideally you can use any SASL profile. |
|
40 |
*/ |
|
41 | ||
42 |
/* SASL client callbacks (for secret, login, password, ... ) */ |
|
43 |
static sasl_callback_t lasso_sasl_callbacks[5]; |
|
44 | ||
45 |
static int |
|
46 |
lasso_sasl_cb_log(G_GNUC_UNUSED void* context, G_GNUC_UNUSED int priority, G_GNUC_UNUSED const char* message) |
|
47 |
{ |
|
48 |
return SASL_OK; |
|
49 |
} |
|
50 | ||
51 |
static int |
|
52 |
lasso_sasl_cb_authname(void* context, G_GNUC_UNUSED int id, const char** result, unsigned* len) |
|
53 |
{ |
|
54 |
LassoUserAccount *account; |
|
55 |
int ret = SASL_FAIL; |
|
56 | ||
57 |
*result = NULL; |
|
58 |
if (len) *len = 0; |
|
59 | ||
60 |
account = (LassoUserAccount *)context; |
|
61 |
if (account != NULL && account->login != NULL) { |
|
62 |
*result = g_strdup(account->login); |
|
63 |
if (len) *len = strlen(account->login); |
|
64 |
ret = SASL_OK; |
|
65 |
} |
|
66 | ||
67 |
return ret; |
|
68 |
} |
|
69 | ||
70 |
static int |
|
71 |
lasso_sasl_cb_pass(G_GNUC_UNUSED sasl_conn_t* conn, void* context, G_GNUC_UNUSED int id, sasl_secret_t** psecret) |
|
72 |
{ |
|
73 |
static sasl_secret_t *s; |
|
74 |
LassoUserAccount *account; |
|
75 |
int ret = SASL_FAIL; |
|
76 | ||
77 |
account = (LassoUserAccount *)context; |
|
78 |
if (account != NULL && account->password != NULL) { |
|
79 |
s = (sasl_secret_t*) g_malloc0(sizeof(sasl_secret_t) + strlen(account->password)); |
|
80 | ||
81 |
strcpy((char*)s->data, account->password); |
|
82 |
s->len = strlen(account->password); |
|
83 | ||
84 |
*psecret = s; |
|
85 | ||
86 |
ret = SASL_OK; |
|
87 |
} |
|
88 | ||
89 |
return ret; |
|
90 |
} |
|
91 | ||
92 |
struct _LassoAuthenticationPrivate |
|
93 |
{ |
|
94 |
gboolean dispose_has_run; |
|
95 |
}; |
|
96 | ||
97 |
static LassoSoapEnvelope* |
|
98 |
lasso_authentication_build_soap_envelope_internal(const char *refToMessageId, |
|
99 |
const char *providerId) |
|
100 |
{ |
|
101 |
LassoSoapEnvelope *envelope; |
|
102 |
LassoSoapHeader *header; |
|
103 |
LassoSoapBody *body; |
|
104 |
LassoSoapBindingCorrelation *correlation; |
|
105 |
gchar *messageId, *timestamp; |
|
106 | ||
107 |
/* Body */ |
|
108 |
body = lasso_soap_body_new(); |
|
109 |
body->Id = lasso_build_unique_id(32); |
|
110 |
envelope = lasso_soap_envelope_new(body); |
|
111 | ||
112 |
/* Header */ |
|
113 |
header = lasso_soap_header_new(); |
|
114 |
envelope->Header = header; |
|
115 | ||
116 |
/* Correlation */ |
|
117 |
messageId = lasso_build_unique_id(32); |
|
118 |
timestamp = lasso_get_current_time(); |
|
119 |
correlation = lasso_soap_binding_correlation_new(messageId, timestamp); |
|
120 |
correlation->id = lasso_build_unique_id(32); |
|
121 |
if (refToMessageId != NULL) |
|
122 |
correlation->refToMessageID = g_strdup(refToMessageId); |
|
123 |
header->Other = g_list_append(header->Other, correlation); |
|
124 | ||
125 |
/* Provider */ |
|
126 |
if (providerId) { |
|
127 |
LassoSoapBindingProvider *provider = lasso_soap_binding_provider_new(providerId); |
|
128 |
provider->id = lasso_build_unique_id(32); |
|
129 |
header->Other = g_list_append(header->Other, provider); |
|
130 |
} |
|
131 | ||
132 |
return envelope; |
|
133 |
} |
|
134 |
gint |
|
135 |
lasso_authentication_client_start(LassoAuthentication *authentication) |
|
136 |
{ |
|
137 |
LassoSaSASLRequest *request; |
|
138 |
int res; |
|
139 |
const char *mechusing; |
|
140 |
const char *out; |
|
141 |
unsigned int outlen = 0; |
|
142 |
xmlChar *outbase64; |
|
143 | ||
144 |
/* Liberty part */ |
|
145 |
request = LASSO_SA_SASL_REQUEST(LASSO_WSF_PROFILE(authentication)->request); |
|
146 | ||
147 |
/* sasl part */ |
|
148 |
res = sasl_client_start(authentication->connection, /* same context from above */ |
|
149 |
request->mechanism, /* list of mechanisms from the server */ |
|
150 |
NULL, /* filled in if an interaction is needed */ |
|
151 |
&out, /* filled in on success */ |
|
152 |
&outlen, /* filled in on success */ |
|
153 |
&mechusing); |
|
154 | ||
155 |
/* mechusing is th resulting best mech to use, so copy it in SASLRequest element */ |
|
156 |
if (mechusing != NULL) { |
|
157 |
lasso_release(request->mechanism); |
|
158 |
request->mechanism = g_strdup(mechusing); |
|
159 |
} |
|
160 | ||
161 |
if (outlen > 0) { |
|
162 |
outbase64 = xmlSecBase64Encode((xmlChar*)out, outlen, 0); |
|
163 |
request->Data = g_list_append(request->Data, g_strdup((char*)outbase64)); |
|
164 |
xmlFree(outbase64); |
|
165 |
} |
|
166 | ||
167 |
return res; |
|
168 |
} |
|
169 | ||
170 |
gint |
|
171 |
lasso_authentication_client_step(LassoAuthentication *authentication) |
|
172 |
{ |
|
173 |
LassoSaSASLRequest *request; |
|
174 |
LassoSaSASLResponse *response; |
|
175 |
int res = 0; |
|
176 |
xmlChar *in = NULL; |
|
177 |
int inlen = 0; |
|
178 |
xmlChar *inbase64 = NULL; |
|
179 | ||
180 |
xmlChar *outbase64; |
|
181 |
const char *out; |
|
182 |
unsigned int outlen = 0; |
|
183 | ||
184 |
/* Liberty part */ |
|
185 |
request = LASSO_SA_SASL_REQUEST(LASSO_WSF_PROFILE(authentication)->request); |
|
186 |
response = LASSO_SA_SASL_RESPONSE(LASSO_WSF_PROFILE(authentication)->response); |
|
187 | ||
188 |
/* sasl part */ |
|
189 | ||
190 |
if (response->Data != NULL && response->Data->data != NULL) { |
|
191 |
inbase64 = response->Data->data; |
|
192 |
in = g_malloc(strlen((char*)inbase64)); |
|
193 |
inlen = xmlSecBase64Decode(inbase64, in, strlen((char*)inbase64)); |
|
194 | ||
195 |
res = sasl_client_step(authentication->connection, /* our context */ |
|
196 |
(char*)in, /* the data from the server */ |
|
197 |
inlen, /* its length */ |
|
198 |
NULL, /* prompt_need */ |
|
199 |
&out, /* client response */ |
|
200 |
&outlen); /* its length */ |
|
201 |
if (outlen > 0) { |
|
202 |
outbase64 = xmlSecBase64Encode((xmlChar*)out, outlen, 0); |
|
203 |
request->Data = g_list_append(request->Data, g_strdup((char*)outbase64)); |
|
204 |
xmlFree(outbase64); |
|
205 |
} |
|
206 |
} |
|
207 | ||
208 |
return res; |
|
209 |
} |
|
210 | ||
211 |
void |
|
212 |
lasso_authentication_destroy(LassoAuthentication *authentication) |
|
213 |
{ |
|
214 |
lasso_node_destroy(LASSO_NODE(authentication)); |
|
215 |
} |
|
216 | ||
217 |
char* |
|
218 |
lasso_authentication_get_mechanism_list(LassoAuthentication *authentication) |
|
219 |
{ |
|
220 |
int res; |
|
221 |
const char *result_string; |
|
222 |
unsigned int string_length; |
|
223 |
int number_of_mechanisms; |
|
224 | ||
225 |
if (authentication->connection == NULL) { |
|
226 |
return NULL; |
|
227 |
} |
|
228 | ||
229 |
res = sasl_listmech(authentication->connection, /* The context for this connection */ |
|
230 |
NULL, /* not supported */ |
|
231 |
"", /* What to prepend the string with */ |
|
232 |
" ", /* What to separate mechanisms with */ |
|
233 |
"", /* What to append to the string */ |
|
234 |
&result_string, /* The produced string. */ |
|
235 |
&string_length, /* length of the string */ |
|
236 |
&number_of_mechanisms); /* Number of mechanisms in |
|
237 |
the string */ |
|
238 |
if (result_string == NULL) |
|
239 |
return NULL; |
|
240 | ||
241 |
return g_strdup(result_string); |
|
242 |
} |
|
243 | ||
244 |
gint |
|
245 |
lasso_authentication_init_request(LassoAuthentication *authentication, |
|
246 |
LassoDiscoDescription *description, |
|
247 |
const gchar *mechanisms, |
|
248 |
LassoUserAccount *account) |
|
249 |
{ |
|
250 |
LassoSoapEnvelope *envelope; |
|
251 |
LassoSaSASLRequest *request; |
|
252 |
int res; |
|
253 | ||
254 |
/* global callback for every connection */ |
|
255 |
static sasl_callback_t global_callbacks[2]; |
|
256 | ||
257 |
g_return_val_if_fail(LASSO_IS_AUTHENTICATION(authentication), |
|
258 |
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); |
|
259 |
g_return_val_if_fail(LASSO_IS_DISCO_DESCRIPTION(description), |
|
260 |
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); |
|
261 |
g_return_val_if_fail(mechanisms != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); |
|
262 | ||
263 | ||
264 |
if (description->Endpoint != NULL) { |
|
265 |
LASSO_WSF_PROFILE(authentication)->msg_url = g_strdup(description->Endpoint); |
|
266 |
} else if (description->WsdlURI != NULL) { |
|
267 | ||
268 |
} |
|
269 | ||
270 |
/* liberty-idwsf-authn-svc-1.1.pdf - page 13 - lignes 342 / 343 : |
|
271 |
In the case where a single SASL mechanism name is conveyed, the <SASLRequest> message |
|
272 |
can contain a so-called initial response (see Section 5.1 of [RFC2222]) in the <Data> |
|
273 |
element. */ |
|
274 |
request = lasso_sa_sasl_request_new(mechanisms); |
|
275 |
LASSO_WSF_PROFILE(authentication)->request = LASSO_NODE(request); |
|
276 | ||
277 |
envelope = lasso_authentication_build_soap_envelope_internal(NULL, NULL); |
|
278 |
LASSO_WSF_PROFILE(authentication)->soap_envelope_request = envelope; |
|
279 |
if (envelope == NULL || envelope->Body == NULL || envelope->Body->any == NULL) { |
|
280 |
return critical_error(LASSO_PROFILE_ERROR_MISSING_REQUEST); |
|
281 |
} |
|
282 |
envelope->Body->any = g_list_append(envelope->Body->any, request); |
|
283 | ||
284 |
/* set up default logging callback */ |
|
285 |
global_callbacks[0].id = SASL_CB_LOG; |
|
286 |
global_callbacks[0].proc = lasso_sasl_cb_log; |
|
287 |
global_callbacks[0].context = NULL; |
|
288 | ||
289 |
global_callbacks[1].id = SASL_CB_LIST_END; |
|
290 |
global_callbacks[1].proc = NULL; |
|
291 |
global_callbacks[1].context = NULL; |
|
292 | ||
293 |
sasl_client_init(global_callbacks); |
|
294 | ||
295 |
/* sasl client new connection */ |
|
296 |
{ |
|
297 |
sasl_callback_t* callback; |
|
298 | ||
299 |
callback = lasso_sasl_callbacks; |
|
300 | ||
301 |
callback->id = SASL_CB_AUTHNAME; |
|
302 |
callback->proc = &lasso_sasl_cb_authname; |
|
303 |
callback->context = account; |
|
304 |
callback++; |
|
305 | ||
306 |
callback->id = SASL_CB_USER; |
|
307 |
callback->proc = &lasso_sasl_cb_authname; |
|
308 |
callback->context = account; |
|
309 |
callback++; |
|
310 | ||
311 |
callback->id = SASL_CB_PASS; |
|
312 |
callback->proc = &lasso_sasl_cb_pass; |
|
313 |
callback->context = account; |
|
314 |
callback++; |
|
315 | ||
316 |
callback->id = SASL_CB_GETREALM; |
|
317 |
callback->proc = NULL; |
|
318 |
callback->context = NULL; |
|
319 |
callback++; |
|
320 | ||
321 |
callback->id = SASL_CB_LIST_END; |
|
322 |
callback->proc = NULL; |
|
323 |
callback->context = NULL; |
|
324 |
} |
|
325 | ||
326 |
res = sasl_client_new(LASSO_SA_SASL_SERVICE_NAME, |
|
327 |
NULL, |
|
328 |
NULL, |
|
329 |
NULL, |
|
330 |
lasso_sasl_callbacks, /* new connection callbacks (log, ...) */ |
|
331 |
0, |
|
332 |
&authentication->connection); |
|
333 | ||
334 |
return res; |
|
335 |
} |
|
336 | ||
337 | ||
338 |
gint |
|
339 |
lasso_authentication_process_request_msg(LassoAuthentication *authentication, |
|
340 |
const gchar *soap_msg) |
|
341 |
{ |
|
342 |
LassoSoapEnvelope *envelope; |
|
343 |
LassoSaSASLResponse *response; |
|
344 |
LassoUtilityStatus *status; |
|
345 |
LassoSoapBindingCorrelation *correlation; |
|
346 |
gchar *messageId; |
|
347 |
int res = 0; |
|
348 | ||
349 |
g_return_val_if_fail(LASSO_IS_AUTHENTICATION(authentication), |
|
350 |
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); |
|
351 |
g_return_val_if_fail(LASSO_IS_AUTHENTICATION(authentication), |
|
352 |
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); |
|
353 |
g_return_val_if_fail(soap_msg != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); |
|
354 | ||
355 |
/* if a previous request and response, then remove */ |
|
356 |
if (LASSO_IS_SOAP_ENVELOPE(LASSO_WSF_PROFILE(authentication)->soap_envelope_response) \ |
|
357 |
== TRUE) { |
|
358 |
lasso_node_destroy(LASSO_NODE(LASSO_WSF_PROFILE(authentication)->\ |
|
359 |
soap_envelope_response)); |
|
360 |
LASSO_WSF_PROFILE(authentication)->soap_envelope_response = NULL; |
|
361 |
LASSO_WSF_PROFILE(authentication)->response = NULL; |
|
362 |
} |
|
363 | ||
364 |
if (LASSO_IS_SOAP_ENVELOPE(LASSO_WSF_PROFILE(authentication)->soap_envelope_request) \ |
|
365 |
== TRUE) { |
|
366 |
lasso_node_destroy(LASSO_NODE(LASSO_WSF_PROFILE(authentication)->\ |
|
367 |
soap_envelope_request)); |
|
368 |
LASSO_WSF_PROFILE(authentication)->soap_envelope_request = NULL; |
|
369 |
LASSO_WSF_PROFILE(authentication)->request = NULL; |
|
370 |
} |
|
371 | ||
372 |
envelope = LASSO_SOAP_ENVELOPE(lasso_node_new_from_dump(soap_msg)); |
|
373 |
LASSO_WSF_PROFILE(authentication)->soap_envelope_request = envelope; |
|
374 |
LASSO_WSF_PROFILE(authentication)->request = LASSO_NODE(envelope->Body->any->data); |
|
375 | ||
376 |
correlation = envelope->Header->Other->data; |
|
377 |
messageId = correlation->messageID; |
|
378 |
envelope = lasso_authentication_build_soap_envelope_internal(messageId, NULL); |
|
379 |
LASSO_WSF_PROFILE(authentication)->soap_envelope_response = envelope; |
|
380 | ||
381 |
status = lasso_utility_status_new(LASSO_SA_STATUS_CODE_OK); |
|
382 |
response = lasso_sa_sasl_response_new(status); |
|
383 |
LASSO_WSF_PROFILE(authentication)->response = LASSO_NODE(response); |
|
384 |
if (envelope == NULL || envelope->Body == NULL || envelope->Body->any == NULL) { |
|
385 |
return critical_error(LASSO_PROFILE_ERROR_MISSING_RESPONSE); |
|
386 |
} |
|
387 |
envelope->Body->any = g_list_append(envelope->Body->any, response); |
|
388 | ||
389 |
/* liberty-idwsf-authn-svc-1.1.pdf - page 13 - lignes 359 / 361 : |
|
390 |
<SASLRequest> message with multiple mechanism MUST NOT contain any "initial response" |
|
391 |
data, and MUST be the initial SASL request. See Section 4.5.2.1.2 for details on the |
|
392 |
returned <SASLResponse> message in this case. */ |
|
393 | ||
394 |
/* liberty-idwsf-authn-svc-1.1.pdf - page 13 - lignes 380 / 384 : |
|
395 |
A NULL string ("") in mechanism list SASLRequest indicates to the authentication server |
|
396 |
that the client wishes to abort the authentication exchange. */ |
|
397 | ||
398 |
return res; |
|
399 |
} |
|
400 | ||
401 |
gint |
|
402 |
lasso_authentication_process_response_msg(LassoAuthentication *authentication, |
|
403 |
const gchar *soap_msg) |
|
404 |
{ |
|
405 |
LassoSoapEnvelope *envelope; |
|
406 |
LassoSaSASLRequest *request; |
|
407 |
LassoSaSASLResponse *response; |
|
408 |
LassoSoapBindingCorrelation *correlation; |
|
409 |
gchar *messageId; |
|
410 | ||
411 |
g_return_val_if_fail(LASSO_IS_AUTHENTICATION(authentication), |
|
412 |
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); |
|
413 |
g_return_val_if_fail(soap_msg != NULL, LASSO_PARAM_ERROR_INVALID_VALUE); |
|
414 | ||
415 |
/* if a previous request or response, remove */ |
|
416 |
if (LASSO_IS_SOAP_ENVELOPE(LASSO_WSF_PROFILE(authentication)->soap_envelope_request) \ |
|
417 |
== TRUE) { |
|
418 |
lasso_node_destroy(LASSO_NODE(LASSO_WSF_PROFILE(authentication)->\ |
|
419 |
soap_envelope_request)); |
|
420 |
LASSO_WSF_PROFILE(authentication)->soap_envelope_request = NULL; |
|
421 |
LASSO_WSF_PROFILE(authentication)->request = NULL; |
|
422 |
} |
|
423 | ||
424 |
if (LASSO_IS_SOAP_ENVELOPE(LASSO_WSF_PROFILE(authentication)->soap_envelope_response) \ |
|
425 |
== TRUE) { |
|
426 |
lasso_node_destroy(LASSO_NODE(LASSO_WSF_PROFILE(authentication)->\ |
|
427 |
soap_envelope_response)); |
|
428 |
LASSO_WSF_PROFILE(authentication)->soap_envelope_response = NULL; |
|
429 |
LASSO_WSF_PROFILE(authentication)->response = NULL; |
|
430 |
} |
|
431 | ||
432 |
envelope = LASSO_SOAP_ENVELOPE(lasso_node_new_from_dump(soap_msg)); |
|
433 |
LASSO_WSF_PROFILE(authentication)->soap_envelope_response = envelope; |
|
434 | ||
435 |
if (envelope == NULL || envelope->Body == NULL || envelope->Body->any == NULL) { |
|
436 |
return critical_error(LASSO_PROFILE_ERROR_MISSING_RESPONSE); |
|
437 |
} |
|
438 |
response = envelope->Body->any->data; |
|
439 |
if (response == NULL) { |
|
440 |
return critical_error(LASSO_PROFILE_ERROR_MISSING_RESPONSE); |
|
441 |
} |
|
442 |
LASSO_WSF_PROFILE(authentication)->response = LASSO_NODE(response); |
|
443 | ||
444 |
if (response->Status == NULL || response->Status->code == NULL) { |
|
445 |
return critical_error(LASSO_PROFILE_ERROR_MISSING_STATUS_CODE); |
|
446 |
} |
|
447 | ||
448 |
/* if continue, init another request */ |
|
449 |
if (g_str_equal(response->Status->code, LASSO_SA_STATUS_CODE_CONTINUE) == TRUE) { |
|
450 |
correlation = envelope->Header->Other->data; |
|
451 |
messageId = correlation->messageID; |
|
452 | ||
453 |
envelope = lasso_authentication_build_soap_envelope_internal(messageId, NULL); |
|
454 |
LASSO_WSF_PROFILE(authentication)->soap_envelope_request = envelope; |
|
455 | ||
456 |
request = lasso_sa_sasl_request_new(g_strdup(response->serverMechanism)); |
|
457 |
LASSO_WSF_PROFILE(authentication)->request = LASSO_NODE(request); |
|
458 | ||
459 |
envelope->Body->any = g_list_append(envelope->Body->any, request); |
|
460 |
} |
|
461 | ||
462 |
return 0; |
|
463 |
} |
|
464 | ||
465 |
gint |
|
466 |
lasso_authentication_server_start(LassoAuthentication *authentication) |
|
467 |
{ |
|
468 |
LassoSaSASLRequest *request; |
|
469 |
LassoSaSASLResponse *response; |
|
470 | ||
471 |
gchar *mechanisms, *chosen; |
|
472 |
gchar **server_mech_list, **client_mech_list, **smech, **cmech; |
|
473 |
int nbmech; |
|
474 | ||
475 |
char *inbase64; |
|
476 |
xmlChar *outbase64; |
|
477 | ||
478 |
char *in = NULL; |
|
479 |
int inlen = 0; |
|
480 | ||
481 |
const char *out; |
|
482 |
unsigned int outlen = 0; |
|
483 | ||
484 |
int res = 0; |
|
485 | ||
486 |
g_return_val_if_fail(LASSO_IS_AUTHENTICATION(authentication), |
|
487 |
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); |
|
488 | ||
489 |
res = sasl_server_init(NULL, "Lasso"); /* FIXME : should be a param */ |
|
490 |
res = sasl_server_new(LASSO_SA_SASL_SERVICE_NAME, |
|
491 |
NULL, |
|
492 |
NULL, |
|
493 |
NULL, |
|
494 |
NULL, |
|
495 |
NULL, |
|
496 |
0, |
|
497 |
&authentication->connection); |
|
498 | ||
499 |
/* Liberty part */ |
|
500 |
request = LASSO_SA_SASL_REQUEST(LASSO_WSF_PROFILE(authentication)->request); |
|
501 |
response = LASSO_SA_SASL_RESPONSE(LASSO_WSF_PROFILE(authentication)->response); |
|
502 | ||
503 |
/* if mechanism is NULL, then abort authentication exchange */ |
|
504 |
chosen = NULL; |
|
505 |
nbmech = 0; |
|
506 |
if (g_str_equal(request->mechanism, "") == FALSE) { |
|
507 |
/* count nb client mechanism list */ |
|
508 |
client_mech_list = g_strsplit(request->mechanism, " ", 0); |
|
509 |
cmech = client_mech_list; |
|
510 |
while (*cmech != NULL) { |
|
511 |
cmech++; |
|
512 |
nbmech++; |
|
513 |
} |
|
514 | ||
515 |
mechanisms = lasso_authentication_get_mechanism_list(authentication); |
|
516 |
server_mech_list = g_strsplit(mechanisms, " ", 0); |
|
517 |
smech = server_mech_list; |
|
518 | ||
519 |
/* get chosen mechanism */ |
|
520 |
while (*smech != NULL) { |
|
521 |
cmech = client_mech_list; |
|
522 |
while (*cmech != NULL) { |
|
523 |
if ( g_str_equal(*smech, *cmech) == TRUE) { |
|
524 |
chosen = g_strdup(*smech); |
|
525 |
break; |
|
526 |
} |
|
527 |
cmech++; |
|
528 |
} |
|
529 |
if (chosen != NULL) |
|
530 |
break; |
|
531 |
smech++; |
|
532 |
} |
|
533 |
} |
|
534 |
if (chosen == NULL) { |
|
535 |
lasso_release(response->Status->code); |
|
536 |
response->Status->code = g_strdup(LASSO_SA_STATUS_CODE_ABORT); |
|
537 |
return res; |
|
538 |
} |
|
539 | ||
540 |
if (nbmech > 1 && request->Data != NULL) { |
|
541 |
lasso_release(response->Status->code); |
|
542 |
response->Status->code = g_strdup(LASSO_SA_STATUS_CODE_ABORT); |
|
543 |
return res; |
|
544 |
} |
|
545 | ||
546 |
/* decode Data if not NULL */ |
|
547 |
if (request->Data != NULL && request->Data->data != NULL) { |
|
548 |
inbase64 = request->Data->data; |
|
549 |
in = g_malloc(strlen(inbase64)); |
|
550 |
inlen = xmlSecBase64Decode((xmlChar*)inbase64, |
|
551 |
(xmlChar*)in, strlen(inbase64)); |
|
552 |
} |
|
553 | ||
554 |
/* process sasl request */ |
|
555 |
res = sasl_server_start(authentication->connection, |
|
556 |
chosen, |
|
557 |
in, |
|
558 |
inlen, |
|
559 |
&out, /* Might not be NULL terminated */ |
|
560 |
&outlen); |
|
561 | ||
562 |
/* set status code in SASLResponse message if not ok */ |
|
563 |
if (res != SASL_OK) { |
|
564 |
lasso_release(response->Status->code); |
|
565 | ||
566 |
/* continue, set Data in response */ |
|
567 |
if (res == SASL_CONTINUE) { |
|
568 |
response->Status->code = g_strdup(LASSO_SA_STATUS_CODE_CONTINUE); |
|
569 |
response->serverMechanism = g_strdup(request->mechanism); |
|
570 |
if (outlen > 0) { |
|
571 |
outbase64 = xmlSecBase64Encode((xmlChar*)out, outlen, 0); |
|
572 |
response->Data = g_list_append(response->Data, |
|
573 |
g_strdup((char*)outbase64)); |
|
574 |
xmlFree(outbase64); |
|
575 |
} |
|
576 |
} else { |
|
577 |
/* abort authentication */ |
|
578 |
response->Status->code = g_strdup(LASSO_SA_STATUS_CODE_ABORT); |
|
579 |
} |
|
580 |
} |
|
581 | ||
582 |
return res; |
|
583 |
} |
|
584 | ||
585 |
gint |
|
586 |
lasso_authentication_server_step(LassoAuthentication *authentication) |
|
587 |
{ |
|
588 |
LassoSaSASLRequest *request; |
|
589 |
LassoSaSASLResponse *response; |
|
590 |
int res; |
|
591 |
char *in = NULL; |
|
592 |
int inlen = 0; |
|
593 |
const char *out; |
|
594 |
unsigned int outlen = 0; |
|
595 |
xmlChar *outbase64, *inbase64; |
|
596 | ||
597 |
g_return_val_if_fail(LASSO_IS_AUTHENTICATION(authentication), |
|
598 |
LASSO_PARAM_ERROR_BAD_TYPE_OR_NULL_OBJ); |
|
599 | ||
600 |
/* Liberty part */ |
|
601 |
request = LASSO_SA_SASL_REQUEST(LASSO_WSF_PROFILE(authentication)->request); |
|
602 |
response = LASSO_SA_SASL_RESPONSE(LASSO_WSF_PROFILE(authentication)->response); |
|
603 | ||
604 |
/* If mechanism is NULL, thene client wants to abort authentication exchange */ |
|
605 |
if (g_str_equal(request->mechanism, "") == TRUE) { |
|
606 |
lasso_release(response->Status->code); |
|
607 |
response->Status->code = g_strdup(LASSO_SA_STATUS_CODE_ABORT); |
|
608 | ||
609 |
return 0; |
|
610 |
} |
|
611 | ||
612 |
if (request->Data != NULL && request->Data->data != NULL) { |
|
613 |
inbase64 = request->Data->data; |
|
614 |
in = g_malloc(strlen((char*)inbase64)); |
|
615 |
inlen = xmlSecBase64Decode(inbase64, (xmlChar*)in, strlen((char*)inbase64)); |
|
616 |
} |
|
617 | ||
618 |
res = sasl_server_step(authentication->connection, |
|
619 |
in, /* what the client gave */ |
|
620 |
inlen, /* it's length */ |
|
621 |
&out, /* Might not be NULL terminated */ |
|
622 |
&outlen); |
|
623 | ||
624 |
if (res != SASL_OK) { |
|
625 |
lasso_release(response->Status->code); |
|
626 | ||
627 |
if (res == SASL_CONTINUE) { |
|
628 |
/* authentication exchange must continue */ |
|
629 |
response->Status->code = g_strdup(LASSO_SA_STATUS_CODE_ABORT); |
|
630 | ||
631 |
if (outlen > 0) { |
|
632 |
outbase64 = xmlSecBase64Encode((xmlChar*)out, outlen, 0); |
|
633 |
response->Data = g_list_append(response->Data, |
|
634 |
g_strdup((char*)outbase64)); |
|
635 |
xmlFree(outbase64); |
|
636 |
} |
|
637 |
} else { |
|
638 |
/* authentication failed, abort exchange */ |
|
639 |
response->Status->code = g_strdup(LASSO_SA_STATUS_CODE_ABORT); |
|
640 |
} |
|
641 |
} |
|
642 | ||
643 |
return res; |
|
644 |
} |
|
645 | ||
646 | ||
647 |
/*****************************************************************************/ |
|
648 |
/* private methods */ |
|
649 |
/*****************************************************************************/ |
|
650 | ||
651 |
static LassoNodeClass *parent_class = NULL; |
|
652 | ||
653 |
static xmlNode* |
|
654 |
get_xmlNode(LassoNode *node, gboolean lasso_dump) |
|
655 |
{ |
|
656 |
xmlNode *xmlnode; |
|
657 | ||
658 |
xmlnode = parent_class->get_xmlNode(node, lasso_dump); |
|
659 |
xmlNodeSetName(xmlnode, (xmlChar*)"Authentication"); |
|
660 |
xmlSetProp(xmlnode, (xmlChar*)"AuthenticationDumpVersion", (xmlChar*)"2"); |
|
661 | ||
662 |
return xmlnode; |
|
663 |
} |
|
664 | ||
665 |
static int |
|
666 |
init_from_xml(LassoNode *node, xmlNode *xmlnode) |
|
667 |
{ |
|
668 |
int rc = 0; |
|
669 | ||
670 |
rc = parent_class->init_from_xml(node, xmlnode); |
|
671 |
if (rc) return rc; |
|
672 | ||
673 |
return 0; |
|
674 |
} |
|
675 | ||
676 |
/*****************************************************************************/ |
|
677 |
/* overrided parent class methods */ |
|
678 |
/*****************************************************************************/ |
|
679 | ||
680 |
static void |
|
681 |
dispose(GObject *object) |
|
682 |
{ |
|
683 |
LassoAuthentication *authentication = LASSO_AUTHENTICATION(object); |
|
684 | ||
685 |
sasl_dispose(&authentication->connection); |
|
686 | ||
687 |
if (authentication->private_data->dispose_has_run == TRUE) |
|
688 |
return; |
|
689 |
authentication->private_data->dispose_has_run = TRUE; |
|
690 | ||
691 |
G_OBJECT_CLASS(parent_class)->dispose(object); |
|
692 |
} |
|
693 | ||
694 |
static void |
|
695 |
finalize(GObject *object) |
|
696 |
{ |
|
697 |
LassoAuthentication *authentication = LASSO_AUTHENTICATION(object); |
|
698 |
lasso_release(authentication->private_data); |
|
699 |
authentication->private_data = NULL; |
|
700 |
G_OBJECT_CLASS(parent_class)->finalize(object); |
|
701 |
} |
|
702 | ||
703 |
/*****************************************************************************/ |
|
704 |
/* instance and class init functions */ |
|
705 |
/*****************************************************************************/ |
|
706 | ||
707 |
static void |
|
708 |
instance_init(LassoAuthentication *authentication) |
|
709 |
{ |
|
710 |
authentication->private_data = g_new0(LassoAuthenticationPrivate, 1); |
|
711 |
authentication->private_data->dispose_has_run = FALSE; |
|
712 |
} |
|
713 | ||
714 |
static void |
|
715 |
class_init(LassoAuthenticationClass *klass, void *unused G_GNUC_UNUSED) |
|
716 |
{ |
|
717 |
parent_class = g_type_class_peek_parent(klass); |
|
718 | ||
719 |
LASSO_NODE_CLASS(klass)->get_xmlNode = get_xmlNode; |
|
720 |
LASSO_NODE_CLASS(klass)->init_from_xml = init_from_xml; |
|
721 | ||
722 |
G_OBJECT_CLASS(klass)->dispose = dispose; |
|
723 |
G_OBJECT_CLASS(klass)->finalize = finalize; |
|
724 |
} |
|
725 | ||
726 |
GType |
|
727 |
lasso_authentication_get_type() |
|
728 |
{ |
|
729 |
static GType this_type = 0; |
|
730 | ||
731 |
if (!this_type) { |
|
732 |
static const GTypeInfo this_info = { |
|
733 |
sizeof(LassoAuthenticationClass), |
|
734 |
NULL, |
|
735 |
NULL, |
|
736 |
(GClassInitFunc) class_init, |
|
737 |
NULL, |
|
738 |
NULL, |
|
739 |
sizeof(LassoAuthentication), |
|
740 |
0, |
|
741 |
(GInstanceInitFunc) instance_init, |
|
742 |
NULL |
|
743 |
}; |
|
744 | ||
745 |
this_type = g_type_register_static(LASSO_TYPE_WSF_PROFILE, |
|
746 |
"LassoAuthentication", &this_info, 0); |
|
747 |
} |
|
748 |
return this_type; |
|
749 |
} |
|
750 | ||
751 |
LassoAuthentication* |
|
752 |
lasso_authentication_new(LassoServer *server) |
|
753 |
{ |
|
754 |
LassoAuthentication *authentication = NULL; |
|
755 | ||
756 |
g_return_val_if_fail(LASSO_IS_SERVER(server), NULL); |
|
757 | ||
758 |
authentication = g_object_new(LASSO_TYPE_AUTHENTICATION, NULL); |
|
759 |
LASSO_WSF_PROFILE(authentication)->server = server; |
|
760 | ||
761 |
return authentication; |
|
762 |
} |
lasso/id-wsf/authentication.h | ||
---|---|---|
1 |
/* $Id$ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
#ifndef __LASSO_AUTHENTICATION_H__ |
|
25 |
#define __LASSO_AUTHENTICATION_H__ |
|
26 | ||
27 |
#ifdef __cplusplus |
|
28 |
extern "C" { |
|
29 | ||
30 |
#endif /* __cplusplus */ |
|
31 | ||
32 |
#include <sasl/sasl.h> |
|
33 | ||
34 |
#include "wsf_profile.h" |
|
35 |
#include "../xml/disco_description.h" |
|
36 | ||
37 |
#define LASSO_TYPE_AUTHENTICATION (lasso_authentication_get_type()) |
|
38 |
#define LASSO_AUTHENTICATION(obj) \ |
|
39 |
(G_TYPE_CHECK_INSTANCE_CAST((obj), LASSO_TYPE_AUTHENTICATION, LassoAuthentication)) |
|
40 |
#define LASSO_AUTHENTICATION_CLASS(klass) \ |
|
41 |
(G_TYPE_CHECK_CLASS_CAST((klass), LASSO_TYPE_AUTHENTICATION, LassoAuthenticationClass)) |
|
42 |
#define LASSO_IS_AUTHENTICATION(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), LASSO_TYPE_AUTHENTICATION)) |
|
43 |
#define LASSO_IS_AUTHENTICATION_CLASS(klass) \ |
|
44 |
(G_TYPE_CHECK_CLASS_TYPE ((klass), LASSO_TYPE_AUTHENTICATION)) |
|
45 |
#define LASSO_AUTHENTICATION_GET_CLASS(o) \ |
|
46 |
(G_TYPE_INSTANCE_GET_CLASS ((o), LASSO_TYPE_AUTHENTICATION, LassoAuthenticationClass)) |
|
47 | ||
48 |
typedef struct _LassoAuthentication LassoAuthentication; |
|
49 |
typedef struct _LassoAuthenticationClass LassoAuthenticationClass; |
|
50 |
typedef struct _LassoAuthenticationPrivate LassoAuthenticationPrivate; |
|
51 | ||
52 |
typedef struct LassoUserAccount LassoUserAccount; |
|
53 | ||
54 |
typedef enum { |
|
55 |
LASSO_SASL_MECH_ANONYMOUS = 1, |
|
56 |
LASSO_SASL_MECH_PLAIN, |
|
57 |
LASSO_SASL_MECH_CRAM_MD5, |
|
58 |
}LassoSaslMechanisms; |
|
59 | ||
60 |
struct LassoUserAccount { |
|
61 |
char *login; |
|
62 |
char *password; |
|
63 |
}; |
|
64 | ||
65 |
struct _LassoAuthentication { |
|
66 |
LassoWsfProfile parent; |
|
67 | ||
68 |
/* The SASL context kept for the life of the connection */ |
|
69 |
sasl_conn_t *connection; |
|
70 |
sasl_interact_t **client_interact; |
|
71 | ||
72 |
/*< private >*/ |
|
73 |
LassoAuthenticationPrivate *private_data; |
|
74 |
}; |
|
75 | ||
76 |
struct _LassoAuthenticationClass { |
|
77 |
LassoWsfProfileClass parent; |
|
78 |
}; |
|
79 | ||
80 |
LASSO_EXPORT GType lasso_authentication_get_type(void); |
|
81 | ||
82 |
LASSO_EXPORT LassoAuthentication* lasso_authentication_new(LassoServer *server); |
|
83 | ||
84 |
LASSO_EXPORT void lasso_authentication_destroy(LassoAuthentication *authentication); |
|
85 | ||
86 |
LASSO_EXPORT lasso_error_t lasso_authentication_client_start(LassoAuthentication *authentication); |
|
87 | ||
88 |
LASSO_EXPORT lasso_error_t lasso_authentication_client_step(LassoAuthentication *authentication); |
|
89 | ||
90 |
LASSO_EXPORT char *lasso_authentication_get_mechanism_list(LassoAuthentication *authentication); |
|
91 | ||
92 |
LASSO_EXPORT lasso_error_t lasso_authentication_init_request(LassoAuthentication *authentication, |
|
93 |
LassoDiscoDescription *description, |
|
94 |
const gchar *mechanisms, |
|
95 |
LassoUserAccount *account); |
|
96 | ||
97 |
LASSO_EXPORT lasso_error_t lasso_authentication_process_request_msg(LassoAuthentication *authentication, |
|
98 |
const gchar *soap_msg); |
|
99 | ||
100 |
LASSO_EXPORT lasso_error_t lasso_authentication_process_response_msg(LassoAuthentication *authentication, |
|
101 |
const gchar *soap_msg); |
|
102 | ||
103 |
LASSO_EXPORT lasso_error_t lasso_authentication_server_start(LassoAuthentication *authentication); |
|
104 | ||
105 |
LASSO_EXPORT lasso_error_t lasso_authentication_server_step(LassoAuthentication *authentication); |
|
106 | ||
107 |
#ifdef __cplusplus |
|
108 |
} |
|
109 |
#endif /* __cplusplus */ |
|
110 | ||
111 |
#endif /* __LASSO_AUTHENTICATION_H__ */ |
lasso/id-wsf/data_service.c | ||
---|---|---|
1 |
/* $Id$ |
|
2 |
* |
|
3 |
* Lasso - A free implementation of the Liberty Alliance specifications. |
|
4 |
* |
|
5 |
* Copyright (C) 2004-2007 Entr'ouvert |
|
6 |
* http://lasso.entrouvert.org |
|
7 |
* |
|
8 |
* Authors: See AUTHORS file in top-level directory. |
|
9 |
* |
|
10 |
* This program is free software; you can redistribute it and/or modify |
|
11 |
* it under the terms of the GNU General Public License as published by |
|
12 |
* the Free Software Foundation; either version 2 of the License, or |
|
13 |
* (at your option) any later version. |
|
14 |
* |
|
15 |
* This program is distributed in the hope that it will be useful, |
|
16 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
17 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
18 |
* GNU General Public License for more details. |
|
19 |
* |
|
20 |
* You should have received a copy of the GNU General Public License |
|
21 |
* along with this program; if not, see <http://www.gnu.org/licenses/>. |
|
22 |
*/ |
|
23 | ||
24 |
/** |
|
25 |
* SECTION:data_service |
|
26 |
* @short_description: ID-WSF Data Service profile |
|
27 |
* |
|
28 |
* DataService allows Attribute Consumers (WSC) to request an Attribute Provider (WSP) to get |
|
29 |
* or modify data about users with their consent. |
|
30 |
* |
|
31 |
* Following up on #LassoDiscovery first example, it created a @service object, |
|
32 |
* this is a #LassoDataService instance. This example continues from that step |
|
33 |
* and retrieves the name of the principal: |
|
34 |
* |
|
35 |
* <informalexample> |
|
36 |
* <programlisting> |
|
37 |
* char *soap_answer; // SOAP answer from data service |
|
38 |
* xmlNode *principal_name; // libxml2 xmlNode with the principal name |
|
39 |
* |
|
40 |
* service = lasso_discovery_get_service(discovery); |
|
41 |
* lasso_data_service_init_query(service, "/pp:PP/pp:InformalName", NULL); |
|
42 |
* lasso_data_service_build_request_msg(service); |
|
43 |
* |
|
44 |
* // service must perform SOAP call to LASSO_WSF_PROFILE(service)->msg_url |
|
45 |
* // the SOAP message is LASSO_WSF_PROFILE(service)->msg_body. The answer |
|
46 |
* // is stored in char* soap_answer; |
|
47 |
* |
|
48 |
* lasso_data_service_process_query_response_msg(service, soap_answer); |
|
49 |
* principal_name = lasso_data_service_get_answer(service, "/pp:PP/pp:InformalName"); |
|
50 |
* |
|
51 |
* // app should probably then use xmlNodeGetContent libxml2 function to get |
|
52 |
* // access to node content. |
|
53 |
* </programlisting> |
|
54 |
* </informalexample> |
|
55 |
* |
|
56 |
*/ |
|
57 | ||
58 |
#include "../xml/private.h" |
|
59 |
#include "../utils.h" |
|
60 |
#include <libxml/xpath.h> |
|
61 |
#include <libxml/xpathInternals.h> |
|
62 | ||
63 |
#include "discovery.h" |
|
64 |
#include "data_service.h" |
|
65 |
#include "../xml/idwsf_strings.h" |
|
66 |
#include "../xml/dst_query.h" |
|
67 |
#include "../xml/dst_query_response.h" |
|
68 |
#include "../xml/dst_modify.h" |