Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

pure Python XML Security

Project description

python XML Security

Travis Build Coverage Requirements Status Code Climate License Format PyPI Version

This is a python implementation of XML-Security - XML-DSIG only right now. There are no dependencies except lxml and pyca/cryptography currently.

This code was inspired by (this implementation is a refactor and extension of that implementation) and in former versions used to include a pure-python RSA implementation by and with permission from Andrew Yates. Cryptographic primitives are now provided by pyca/cryptography (

In order to sign with a PKCS#11-module you need to install pykcs11 (

This package is available under the NORDUnet BSD license (cf LICENSE.txt)


  • only support for RSA-SHA1/256/512 signatures with PKCS1.5 padding
  • no encryption support

Some of those limitations might be addressed. Patches and pull-requests are most welcome!



Release date: UNRELEASED


Release date: Mon Aug 27 12:42:45 CEST 2012

  • more rubust algorithm uri parsing
  • support for “#”-style IDs
  • partial support for <Transform/> elts with child-elements
  • make all exceptions an XMLSecException
  • first draft: sign
  • various cleanups


Release date: Tue Aug 28 09:46:47 CEST 2012

  • handle #-style references (remove top-level comments and PIs)
  • don’t unescape &amp; &lt; and &gt;
  • don’t give empty inclusive ns prefix list to c14n
  • move exception to separate file
  • first version of the pkcs11 shim layer


Release date: Wed Aug 29 12:43:05 CEST 2012

  • starting on tests
  • cleanup pkcs11 layer
  • various bugfixes and cleanup


Release date: Wed Sep 5 11:52:58 CEST 2012

  • Fix bug when signing using non-p11 keys
  • More robust PEM-unfolding


Release date: Fri Nov 30 10:29:03 CET 2012


Release date: Mon Feb 4 15:53:32 CET 2013

  • Minor fixes


Release date: Wed Apr 3 09:05:53 CEST 2013

  • Multiple bugfixes
  • More SAML and P11 testcases


Release date: Mon Jun 24 11:24:20 CEST 2013

  • Bugfixes
  • Protection against wrapping attacks (new API!)


Release date: Thu Sep 12 20:16:04 CEST 2013

  • fix PEM parser bug
  • switch to semantic versioning


Release date: Fri Oct 11 17:06:53 CEST 2013

  • better control over the position of the signature element


Release date: Wed Dec 4 15:00:29 CET 2013

  • use pyconfig to control configuration parameters
  • support sha2 algorithms
  • several bugfixes for c14n


Release date: lör 22 mar 2014 10:44:49 CET

  • various unicode fixes related to pkcs#11
  • skip certain tests unless opensc is installed
  • use existing SignatureValue if present
  • various fixes from Fredrik T and Maya W


Release date: Mon Dec 1 08:58:54 CET 2014

  • Add explicit call to C_Initialize
  • Various bugs fixed - from Fredrik T
  • Allow caller control over session close


Release date: mån 16 nov 2015 13:40:26 CET

  • xmlsign: a simple sign cmdline tool
  • optionally drop signatures when validating
  • avoid logging keysize in p11 case
  • put a lock around pyasn1 parser
  • make cert loading thread safe
  • bugfixes


Release ons 13 dec 2017 21:10:29 CET

  • crypto abstraction
  • switch to sha256 default
  • verify and sign cmdline tools
  • lots of bugfixes


Release tor 14 dec 2017 12:27:48 CET

  • fix base64 bug
  • fix bug in cmdline verify serialization


Release fre 25 maj 2018 19:43:54 CEST

  • fix verification bug affecting sha512


Release tis 22 jan 2019 13:53:49 CET

  • python3 compatibility
  • fix private key leak issue
  • P11 fixes
  • test improvements


Release tis 10 sep 2019 19:41:58 CEST

  • more p3 compat

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pyXMLSecurity, version 0.20
Filename, size File type Python version Upload date Hashes
Filename, size pyXMLSecurity-0.20-py2.py3-none-any.whl (30.8 kB) File type Wheel Python version 3.5 Upload date Hashes View hashes
Filename, size pyXMLSecurity-0.20.tar.gz (27.6 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page