robrichards/xmlseclibs
A PHP library for XML Security
4.0.0
88M downloads/mo
#466 most downloaded on Packagist
robrichards/xmlseclibs
What this package is like to depend on
Last release today
22 Aug 2026
Ships unpredictably
gaps range from 2 weeks to 4.2 years
Some releases are documented
notes for 6 of 23 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
25 releases · first in 2015
5 releases in the last 12 months
see the full history below
Release timeline
25 releases · May 2015 to Aug 2026Releases
latest 25-
4.0.022 Aug 2026Release notes
Open source →xmlseclibs 4.0.0
PHP 8.0+ and
phpseclib/phpseclib~3.0 required; OpenSSL is optional.Highlights
- Crypto moved to phpseclib (symmetric, RSA, RSA-OAEP, X.509); RSA-PSS (
RSA_SHA256_MGF1) supported - Safe-by-default
verifyDocument()— pinned key, algorithm allowlists, validated node set enableLegacyMode()for temporary pre-4.0 interop while migrating peers- Compact templates via
stripWhitespace;omit_urifor references without a URI; extensibility via protected members (#152)
Security (breaking defaults)
- DOCTYPE rejected on signature verify (entity-ref / Id bypass; same class of issue as CVE-2025-23369); also rejected in decrypted XML
- XPath Filtering Transforms rejected on verify by default (pre-auth DoS); capped when enabled
- RSA-1.5 key transport denied on decrypt by default; uniform decrypt errors (no padding oracle)
verify()always binds SignatureMethod to the supplied key; HMAC cannot be loaded from certs/PEM- References fail closed (unknown transforms, external/duplicate-Id URIs, unknown C14N)
- SSRF hardening on
add509Cert()URL fetch; EncryptedKey/RetrievalMethod depth caps;hash_equalsfor digests/HMAC
Other
- Configurable transforms element;
setSignatureId(); clearer throws when signature context is missing - Interop: whitespace-stripped signature/EncryptedData templates for C# SignedXml / Python signxml-style peers
- PHP 8 / static-analysis hardening; PHP 8.5 deprecation fix in
makeAsnSegment()
Migration
Prefer
verifyDocument()with a pinned key. UseenableLegacyMode()only while updating peers — it restores DOCTYPE-on-verify, XPath transforms, and RSA-1.5; it does not undo algorithm/key binding, uniform decrypt errors, or decrypted-XML DOCTYPE rejection. Prefer RSA-OAEP and AES-GCM for new deployments.Full detail:
CHANGELOG.txt(4.0.0) and the “Breaking changes (3.1 → 4.0)” section inREADME.md.Full Changelog: 3.1.5...4.0.0
- Crypto moved to phpseclib (symmetric, RSA, RSA-OAEP, X.509); RSA-PSS (
-
4.0.0-beta208 Aug 2026 pre-releaseNothing published for this version
-
4.0.0-beta124 Jul 2026 pre-releaseNothing published for this version
-
3.1.513 Mar 2026 -
3.1.408 Dec 2025 -
3.1.320 Nov 2024 -
3.1.220 Nov 2024Release notes
Open source →Add tab to list of whitespace values to remove from cert
loadKey should check return value for openssl_get_privatekey
Switch to GitHub actions
Support OAEP (from unreleased 3.1.1) -
3.1.105 Sep 2020Nothing published for this version
-
3.1.022 Apr 2020 -
3.0.405 Nov 2019Nothing published for this version
-
3.0.315 Nov 2018Nothing published for this version
-
3.0.227 Sep 2018Nothing published for this version
-
3.0.131 Aug 2017Nothing published for this version
-
3.0.025 May 2017Nothing published for this version
-
2.1.105 Nov 2019Nothing published for this version
-
2.1.015 Nov 2018Nothing published for this version
-
2.0.108 Sep 2016Nothing published for this version
-
2.0.031 Jul 2015Nothing published for this version
-
1.4.312 Nov 2019Nothing published for this version
-
1.4.208 Sep 2016Nothing published for this version
-
1.4.131 Jul 2015Nothing published for this version
-
1.4.023 Jun 2015Nothing published for this version
-
1.3.424 Jun 2015Nothing published for this version
-
1.3.302 Jun 2015Nothing published for this version
-
1.3.221 May 2015Nothing published for this version