Skip to main content

SignXML: XML Signature in Python

SignXML is an implementation of the W3C XML Signature standard in Python (both “Second Edition” and Version 1.1). This standard (also known as XMLDSig and RFC 3275) is used to provide payload security in SAML 2.0, among other uses. SignXML implements all of the required components of the standard, and most recommended ones. Its features are:

  • Use of defusedxml.lxml to defend against common XML-based attacks when verifying signatures

  • Extensions to allow signing with and verifying X.509 certificate chains, including hostname/CN validation

  • Support for exclusive XML canonicalization with inclusive prefixes (InclusiveNamespaces PrefixList, required to verify signatures generated by some SAML implementations)

  • Modern Python compatibility (2.7-3.4+ and PyPy)

  • Well-supported, portable, reliable dependencies: lxml, defusedxml, cryptography, eight, pyOpenSSL

  • Comprehensive testing (including the XMLDSig interoperability suite) and continuous integration

  • Simple interface with useful defaults

  • Compactness, readability, and extensibility

Installation

pip install signxml

Synopsis

SignXML uses the ElementTree API (also supported by lxml) to work with XML data.

from signxml import xmldsig

cert = open("example.pem").read()
key = open("example.key").read()
root = ElementTree.fromstring(signature_data)
xmldsig(root).sign(key=key, cert=cert)
xmldsig(root).verify()

Verifying SAML assertions

Assuming metadata.xml contains SAML metadata for the assertion source:

from lxml import etree
from base64 import b64decode
from signxml import xmldsig

with open("metadata.xml", "rb") as fh:
    cert = etree.parse(fh).find("//ds:X509Certificate").text

root = etree.parse(b64decode(assertion)).getroot()
xmldsig(root).verify(x509_cert=cert)

See the API documentation for more.

Authors

  • Andrey Kislyuk

License

Licensed under the terms of the Apache License, Version 2.0.

https://travis-ci.org/kislyuk/signxml.png https://coveralls.io/repos/kislyuk/signxml/badge.png?branch=master https://pypip.in/v/signxml/badge.png https://pypip.in/d/signxml/badge.png https://readthedocs.org/projects/signxml/badge/?version=latest

Metadata

Release files for signxml 0.3.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for signxml 0.3.5
File Size Uploaded
signxml-0.3.5.tar.gz 129.0 kB Details

Release files / signxml-0.3.5.tar.gz

Download URL signxml-0.3.5.tar.gz
Size 129.0 kB
Tags Source
SHA-256 checksum
How to use checksums
4adc985da7b6272d6482fcfce1adccdb7364d4a05ae077912bb8f18dbfaf4eea
BLAKE2b-256 checksum
How to use checksums
b592e99a59ae6b5a496bbf601b658c2caafc2b50ec9d464f4c0a892b4becb23f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

5.1.0

2 release files

5.0.1

2 release files

5.0.0

2 release files

4.5.1

2 release files

4.4.0

2 release files

4.3.1

2 release files

4.3.0

2 release files

4.2.2

2 release files

4.2.1

2 release files

4.2.0

2 release files

4.1.0

2 release files

4.0.5

2 release files

4.0.4

2 release files

4.0.3

2 release files

4.0.2

2 release files

4.0.1

2 release files

4.0.0

2 release files

3.2.2

2 release files

3.2.1

2 release files

3.2.0

2 release files

3.1.1

2 release files

3.1.0

2 release files

3.0.2

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.10.0

2 release files

2.9.0

2 release files

2.8.2

2 release files

2.8.1

2 release files

2.8.0

2 release files

2.7.3

2 release files

2.7.2

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.6.0

2 release files

2.5.2

2 release files

2.4.0

2 release files

2.3.0

2 release files

2.2.6

2 release files

2.2.4

2 release files

2.2.3

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.4

2 release files

2.0.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

1 release file

0.4.0

1 release file

0.3.9

1 release file

0.3.8

1 release file

0.3.7

1 release file

0.3.6

1 release file

This release

0.3.5 This release

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.9

1 release file

0.2.8

1 release file

0.2.7

1 release file

0.2.6

1 release file

0.2.5

1 release file

0.2.4

1 release file

0.2.3

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page