1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
|
python-xmlsec
=============
.. image:: https://img.shields.io/pypi/v/xmlsec.svg?logo=python&logoColor=white
:target: https://pypi.python.org/pypi/xmlsec
.. image:: https://results.pre-commit.ci/badge/github/xmlsec/python-xmlsec/master.svg
:target: https://results.pre-commit.ci/latest/github/xmlsec/python-xmlsec/master
:alt: pre-commit.ci status
.. image:: https://img.shields.io/appveyor/ci/hoefling/xmlsec/master.svg?logo=appveyor&logoColor=white&label=AppVeyor
:target: https://ci.appveyor.com/project/hoefling/xmlsec
.. image:: https://github.com/mehcode/python-xmlsec/actions/workflows/manylinux.yml/badge.svg
:target: https://github.com/mehcode/python-xmlsec/actions/workflows/manylinux.yml
.. image:: https://github.com/mehcode/python-xmlsec/actions/workflows/macosx.yml/badge.svg
:target: https://github.com/mehcode/python-xmlsec/actions/workflows/macosx.yml
.. image:: https://github.com/mehcode/python-xmlsec/actions/workflows/linuxbrew.yml/badge.svg
:target: https://github.com/mehcode/python-xmlsec/actions/workflows/linuxbrew.yml
.. image:: https://github.com/mehcode/python-xmlsec/actions/workflows/opensuse-tumbleweed.yml/badge.svg
:target: https://github.com/mehcode/python-xmlsec/actions/workflows/opensuse-tumbleweed.yml
.. image:: https://codecov.io/gh/xmlsec/python-xmlsec/branch/master/graph/badge.svg
:target: https://codecov.io/gh/xmlsec/python-xmlsec
.. image:: https://img.shields.io/readthedocs/xmlsec/latest?logo=read-the-docs
:target: https://xmlsec.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
Python bindings for the `XML Security Library <https://www.aleksey.com/xmlsec/>`_.
Documentation
*************
A documentation for ``xmlsec`` can be found at `xmlsec.readthedocs.io <https://xmlsec.readthedocs.io/>`_.
Usage
*****
Check the `examples <https://xmlsec.readthedocs.io/en/latest/examples.html>`_ section in the documentation to see various examples of signing and verifying using the library.
Requirements
************
- ``libxml2 >= 2.9.1``
- ``libxmlsec1 >= 1.2.33``
Install
*******
``xmlsec`` is available on PyPI:
.. code-block:: bash
pip install xmlsec
Depending on your OS, you may need to install the required native
libraries first:
Linux (Debian)
^^^^^^^^^^^^^^
.. code-block:: bash
apt-get install pkg-config libxml2-dev libxmlsec1-dev libxmlsec1-openssl
Note: There is no required version of LibXML2 for Ubuntu Precise,
so you need to download and install it manually.
.. code-block:: bash
wget http://xmlsoft.org/sources/libxml2-2.9.1.tar.gz
tar -xvf libxml2-2.9.1.tar.gz
cd libxml2-2.9.1
./configure && make && make install
Linux (CentOS)
^^^^^^^^^^^^^^
.. code-block:: bash
yum install libxml2-devel xmlsec1-devel xmlsec1-openssl-devel libtool-ltdl-devel
Linux (Fedora)
^^^^^^^^^^^^^^
.. code-block:: bash
dnf install libxml2-devel xmlsec1-devel xmlsec1-openssl-devel libtool-ltdl-devel
Mac
^^^
.. code-block:: bash
brew install libxml2 libxmlsec1 pkg-config
Alpine
^^^^^^
.. code-block:: bash
apk add build-base libressl libffi-dev libressl-dev libxslt-dev libxml2-dev xmlsec-dev xmlsec
Troubleshooting
***************
Mac
^^^
If you get any fatal errors about missing ``.h`` files, update your
``C_INCLUDE_PATH`` environment variable to include the appropriate
files from the ``libxml2`` and ``libxmlsec1`` libraries.
Windows
^^^^^^^
Starting with 1.3.7, prebuilt wheels are available for Windows,
so running ``pip install xmlsec`` should suffice. If you want
to build from source:
#. Configure build environment, see `wiki.python.org <https://wiki.python.org/moin/WindowsCompilers>`_ for more details.
#. Install from source dist:
.. code-block:: bash
pip install xmlsec --no-binary=xmlsec
Building from source
********************
#. Clone the ``xmlsec`` source code repository to your local computer.
.. code-block:: bash
git clone https://github.com/xmlsec/python-xmlsec.git
#. Change into the ``python-xmlsec`` root directory.
.. code-block:: bash
cd /path/to/xmlsec
#. Install the project and all its dependencies using ``pip``.
.. code-block:: bash
pip install .
Contributing
************
Setting up your environment
^^^^^^^^^^^^^^^^^^^^^^^^^^^
#. Follow steps 1 and 2 of the `manual installation instructions <#building-from-source>`_.
#. Initialize a virtual environment to develop in.
This is done so as to ensure every contributor is working with
close-to-identicial versions of packages.
.. code-block:: bash
mkvirtualenv xmlsec
The ``mkvirtualenv`` command is available from ``virtualenvwrapper`` package which can be installed by following `link <http://virtualenvwrapper.readthedocs.org/en/latest/install.html#basic-installation>`_.
#. Activate the created virtual environment:
.. code-block:: bash
workon xmlsec
#. Install ``xmlsec`` in development mode with testing enabled.
This will download all dependencies required for running the unit tests.
.. code-block:: bash
pip install -r requirements-test.txt
pip install -e "."
Running the test suite
^^^^^^^^^^^^^^^^^^^^^^
#. `Set up your environment <#setting-up-your-environment>`_.
#. Run the unit tests.
.. code-block:: bash
pytest tests
#. Tests configuration
Env variable ``PYXMLSEC_TEST_ITERATIONS`` specifies number of
test iterations to detect memory leaks.
Reporting an issue
^^^^^^^^^^^^^^^^^^
Please attach the output of following information:
* version of ``xmlsec``
* version of ``libxmlsec1``
* version of ``libxml2``
* output from the command
.. code-block:: bash
pkg-config --cflags xmlsec1
License
*******
Unless otherwise noted, all files contained within this project are licensed under the MIT opensource license.
See the included ``LICENSE`` file or visit `opensource.org <http://opensource.org/licenses/MIT>`_ for more information.
|