Commit Graph

5171 Commits

Author SHA1 Message Date
Benjamin Dauvergne 95137b1ad1 [tests] add test for rollover on the SP side, i.e. rollover of encryption keys
This test case is the first to abstract the workflow between two
LassoLogin object (for the idp and sp side). This part of the code could
be used to simplify the code of other tests in the future.
2011-11-22 18:51:49 +01:00
Benjamin Dauvergne fd7af65e91 [core] do not emit a warning for expected decryption errors
The only expected decryption error is on decryption of the symetric key
used to crypt the data. All other errors are critical and must be
logged.

Client of lasso_node_decrypt_xmlnode can then log the decryption failure
of the symetric if they tried with all possible keys (key rollover
case).
2011-11-22 18:51:49 +01:00
Benjamin Dauvergne 5957f3e230 [core] add a new class of errors for xml encryption errors
add LASSO_XMLENC_ERROR_INVALID_ENCRYPTED_DATA for generic unrecoverable
xml decryption errors.
2011-11-22 18:51:12 +01:00
Benjamin Dauvergne 26d6b35a49 [leakcheck] fix leaks seen by the unit tests
This commit also improved valgrind suppression file to hide static
allocations done by the GLib type system.
2011-11-22 17:45:52 +01:00
Benjamin Dauvergne 5192cdf7a0 [core] multiple decryption keys support
This commit complements the support for multiple signing certificate
support in the metadata files. The use-case is still key roll-over.

The structure LassoServerPrivateData was changed to accomodate multiple
decryption keys, and so:

 xmlSecKey *encryption_private_key

became:

 GList *encryption_private_keys

All uses of this key were replaced by a loop over this list, terminating
with the first key to be able to decrypt the content.

The private key passed to lasso_server_new() or
lasso_server_new_from_buffers() is first added to the list of decryption
keys. Any other call to
lasso_server_set_encryption_private_key_with_password() or
lasso_server_set_encryption_private_key() will add a new key to the
list.
2011-11-21 10:25:03 +01:00
Benjamin Dauvergne 055b405387 Merge branch 'extension-abi-respecting' 2011-11-18 15:36:57 +01:00
Benjamin Dauvergne f286c7cb5c [saml2] add missing extension point for LassoSaml2SubjectConfirmationData
- it can support any content and any attribute without validation
   xs:any with processContents="lax"
2011-11-18 15:36:41 +01:00
Benjamin Dauvergne 3ec4a2f294 [xml] allow to store XSchema data into a private stucture
- added new macros SNIPPET_STRUCT_MEMBER and SNIPPET_STRUCT_MEMBER_P
   replaces use of G_STRUCT_MEMBER/_P macros.
 - we use the GType of the class containing a given XmlSnippet to find
   the proper private structure.
 - added flag SNIPPET_PRIVATE to state XmlSnippet whose value
   should be extracted from the private structure and not the public
   one.
2011-11-18 15:36:41 +01:00
Benjamin Dauvergne 0e0511c686 [binding python] prevent warning in wrapper_top.c under hardy with gcc 4.2.4 2011-11-18 15:36:41 +01:00
Benjamin Dauvergne 773cdab883 [core] add missing break to switch/case 2011-11-18 15:36:40 +01:00
Benjamin Dauvergne 8002502152 [bindings] fix bug introduced in last commit 2011-11-08 01:10:22 +01:00
Benjamin Dauvergne 3c6970e047 [bindings] fix tree traversal on windows
- The file path separator is not / on all platforms, so do not use it
   when matching filenames.
2011-10-18 17:35:55 +02:00
Benjamin Dauvergne 4552f30293 [misc] apply changes to remove warning blocking compilation with gcc 4.5.2 and php 5.3.5
- gcc now warns when you compate a typedef to the anonymous enum which
   define it.
 - some inline function in the zend.h header do compare between signed
   and unsigned char.
2011-10-18 17:33:43 +02:00
Benjamin Dauvergne b8cf183c37 [xml saml-2.0] add missing annotation for binding generation to header for LassoKeyInformationDataType 2011-10-18 17:32:56 +02:00
Benjamin Dauvergne 94a9fe4f02 [xml saml-2.0] add a class to handle the KeyInfoConfirmationData type
* use a direct mapping to map this class to SubjectConfirmationData
   node having the xsi:type attribute.
 * overload get_xmlNode method to add the xsi:type attribute on output.
2011-10-13 01:12:04 +02:00
Benjamin Dauvergne f69b561c47 [xml] allow node classes to not defined their nodename, useful for simple Type 2011-10-13 01:09:29 +02:00
Benjamin Dauvergne c6d4076599 [id-wsf2 profile] check provider->private_data->roles instead of provider->role
Fixes #140.
2011-10-10 17:38:03 +02:00
Benjamin Dauvergne 984759ea67 [id-wsf discovery] provider can now contain multiple public keys, only consider the first key for id-wsf token generation
ID-WSF never contemplated the fact that sometimes key roll-over happend
(SubjectConfirmation can only containg on ds:KeyInfo), whatever...
2011-10-10 17:26:09 +02:00
Benjamin Dauvergne b7a94f2db8 [saml-2.0] augment lasso_saml20_provider_get_first_http_method to verify presence of synchronous bindings 2011-10-10 16:31:04 +02:00
Benjamin Dauvergne aa7fae5fc1 [xml] if a SNIPPET_LIST_NODES as the SNIPPET_ANY flag, allows really any kind of node through LassoMiscTextNode 2011-10-10 16:31:03 +02:00
Benjamin Dauvergne 7b1aa28c2c [xml] allows LassoMiscText.init_from_xml to parse any xmlNode
If the node has no attributes and has a simple string content, we use the
classic embedding by setting, name, ns_href, ns_prefix. Otherwise the complete
xmlNode is copied.
2011-10-10 16:31:03 +02:00
Benjamin Dauvergne 627294f52c [tests] add non-regression tests concerning the parsing of any xmlNode tree by LassoMiscTextNode when SNIPPET_ANY is used by a LassoNode 2011-10-10 16:31:00 +02:00
Benjamin Dauvergne 94136d639b [xml] only try to map an xmlNode to a class ame if the node has a namespace 2011-10-10 16:17:28 +02:00
Benjamin Dauvergne f638f379e7 [xml saml-2.0] change AttributeValue snippets to accept any children
An AttributeValue has an XSchema type of xs:any.
2011-10-10 16:14:50 +02:00
Benjamin Dauvergne a7be1fa114 [xml] create a static version of lasso_node_new_from_xmlNode_with_type without error logging
When used inside lasso_node_impl_init_from_xml the error logging is
prematurely sent as there is a backup procedure for parsing unknown
nodes inside a SNIPPET_LIST_NODES by creating a LassoMiscTextNode
containing a copy of the parsed xmlNode child.
2011-10-07 13:08:49 +02:00
Benjamin Dauvergne 9430491963 [configure.ac] default AM_MAINTAINER_MODE to enable 2011-09-09 15:39:43 +02:00
Benjamin Dauvergne da5260de18 [configure.ac] remove useless semi-colons 2011-07-08 21:17:01 +02:00
Benjamin Dauvergne b1183fe341 Fix wrong version exported in the PHP binding 2011-07-08 21:15:20 +02:00
Benjamin Dauvergne 14b5c395cc Change the glob expression to match darwin $host_os
Also use the $DARWIN flag to control the setting of JNI_EXTRA_LDFLAGS.
2011-06-03 11:24:02 +02:00
Benjamin Dauvergne 8aadadef4d [java] try to make test works under Mac Os X 2011-05-30 22:24:39 +02:00
Benjamin Dauvergne 9cedec628e [core] finish transition from single encryption key to multiple ones
Some code still reference provider->private->encryption_public_key, this
commit make them use lasso_provider_get_encryption_public_key().
2011-05-30 22:24:37 +02:00
Benjamin Dauvergne 24a29f954a [bindings perl] remove --as-needed from linker flags, it is not supported evrywhere
It can come back if we add proper checking of the support on the
platform, maybe we can leverage tests made by autoconf.
2011-05-27 16:02:30 +02:00
Benjamin Dauvergne ed44ea81a8 Disable metadata loading test with the UK federation files 2011-05-27 16:01:44 +02:00
Benjamin Dauvergne 8036813115 Merge branch 'multi-certificates' 2011-05-23 10:53:50 +02:00
Benjamin Dauvergne bd7e649272 [bindings perl] in Makefile.am, gives a default template to mktemp
Thanks to Nathan Sowatskey for the bug report and the fix.
2011-05-19 17:55:12 +02:00
Benjamin Dauvergne 8191837436 [core] start of support multiple keys for encryption 2011-05-19 17:54:16 +02:00
Benjamin Dauvergne 187cc7a528 [tests] add unit test for the provider with multiple key feature 2011-05-19 17:54:16 +02:00
Benjamin Dauvergne 94a890ddda [tests] add sample metadata for testing metadata with multiple key descriptors 2011-05-19 17:54:16 +02:00
Benjamin Dauvergne e67f2bb658 [core] first try at multiple signing keys support
The idea was to replace every use of an xmlSecKey* by a loop over a
GList* of xmlSecKey*.

 - In the structure LassoProviderPrivate changed
    xmlSecKey*public_key            ->   GList* signing_public_keys
    xmlNode*signing_key_descriptor  ->   GList* signing_key_descriptors.
 - Renamed lasso_provider_try_loading_public_key to
   lasso_provider_try_loading_public_keys and chaned its signature
   accordingly
 - Renamed lasso_provider_get_public_key to
   lasso_provider_get_public_keys and changed the signature accordingly.
 - Changed lasso_provider_get_encryption_public_key to return the first
   signing key from the list as a temporary work around. Multiple
   encryption keys will be supported later.
 - Changed lasso_provider_load_public_key to load keys from the passed
   file on the LassoProvider constructor, from every key descriptors
   found for signing and eventually from the key descriptor marked for
   encryption.
 - Every failure to load from a file or an XML KeyInfo descriptor are
   noew reported as warning.
 - Query signature checking was completely moved to
   lasso_provider_verify_query_signature and
   lasso_provider_verify_signature now calls it.
 - lasso_provider_verify_signature is now using lasso_verify_signature
   from the xml/tools.o module.
 - lasso_provider_verify_single_signature was modified to support
   multiple signing keys.
2011-05-19 17:54:16 +02:00
Benjamin Dauvergne e14652e7a4 [utils] add macros to append to and release a list of xmlSecKey*
[core] make lasso_provider_verify_query_signature use lasso_provider_verify_signature
2011-05-19 17:54:16 +02:00
Benjamin Dauvergne 298e6a50e2 [bindings perl] in Makefile.am, gives a default template to mktemp 2011-05-19 17:53:58 +02:00
Benjamin Dauvergne b7cbdd0d77 [xml] use g_strndup instead of strndup, as it is more portable 2011-05-18 23:44:10 +02:00
Benjamin Dauvergne f455be4387 [tests] fix broken renater metadata file
A modification was introduced which broke the signature, updating to the
last version.
2011-05-17 14:48:27 +02:00
Benjamin Dauvergne ce93f37992 [tests] move renater metadata files into the metadata/ subdirectory 2011-05-16 09:37:04 +02:00
Benjamin Dauvergne 2a3a56f8e1 [saml2] add proper error code for partial logout status code 2011-05-08 00:04:40 +02:00
Benjamin Dauvergne cbeecfe280 [saml2] fix build_request_msg for AuthzDecision assertion queries
The servicepoints and roles arrays did not match the provider role
enumerations.
2011-05-08 00:03:02 +02:00
Benjamin Dauvergne 481aeef4e0 [saml2] if Status is not Success pass continue processing the response
lasso_saml20_login_process_response_status_and_assertion does analyze
the response status code login specific error codes, if the generic
processing from lasso_saml20_profile_process_any_response returns a
status of response is not success, we must continue processing.
2011-04-21 11:23:10 +02:00
Benjamin Dauvergne 7016e7c453 [saml2] for any RequestDenied SAML2 response return LASSO_PROFILE_ERROR_REQUEST_DENIED as error 2011-04-21 11:23:06 +02:00
Benjamin Dauvergne ebd9266cb5 [core] add a generic LASSO_PROFILE_ERROR_REQUEST_DENIED 2011-04-21 11:01:36 +02:00
Benjamin Dauvergne 3c260bfe4a [core] make LassoServerLoadMetadataFlag enum a typedef 2011-04-20 14:53:24 +02:00