This package provides support for SAML2 based on ``pyxb``.

``pyxb`` (http://pypi.python.org/pypi/PyXB) generates a Python class
collection for an XML schema and provides means to convert between
associated Python instances and xml documents. It is used to generate
and parse SAML2 messages.

The package adds support for digital signatures and SAML2 bindings and
metadata management.


Dependencies
============

PyXB
----

This package's version has been tested with version 1.1.4 of ``pyxb``.
It may not work with other versions.

Class collections generated by ``pyxb`` tend to be very version dependent.
Thus, they must usually be regenerated when the ``pyxb`` version has changed.

The current package's version mostly uses class collections from
the ``wssplat`` and ``saml20`` bundles of ``pyxb``. Thus, they
have a good chance to be updated together with ``pyxb``.
However, the ``pyxb`` ``saml2`` bundle lacks support for
the so called SAML2 context classes. This package contains
class collections generated with ``pyxb==1.1.4``. They need to
be regenerated if the ``pyxb`` version changes (and you use those classes --
which is not very likely).
The ``gen.sh`` script in subpackage ``pyxb``
can provide clues how to regenerate them.

A bug in ``pyxb 1.1.4``
(http://sourceforge.net/apps/trac/pyxb/ticket/130#comment:4)
prevents its installation via package managers (such as
``easy_install``, ``pip``, ``zc.buildout``) for Python versions
without ``os.path.relpath`` (this applies e.g. to Python 2.4).
I work around this problem by downloading the ``pyxb`` source,
apply patch http://sourceforge.net/apps/trac/pyxb/attachment/ticket/130/pyxb_setup.patch
to it and then egg install the result.
After this, ``dm.saml2`` can be installed normally.


dm.xmlsec.binding
-----------------

Check its installation notes should you face related installation problems.


Notes
=====

Note that signature creation and verification will fail with an obscure
error message from ``xmlsec`` when ``xmlsec`` is not properly
initialized. Do not forget to call ``dm.xmlsec.binding.initialize()``.


History
=======

2.0

  Version 2.0 uses ``dm.xmlsec.binding`` as Python binding to the XML
  security library, rather then the no longer maintained ``pyxmlsec``.
  This drastically facilitates installation.

1.0

  Initial release based on ``pyxmlsec``.
