The Bouncy Castle team is pleased to announce the release of Bouncy Castle Java 1.85, bringing significant advances in post-quantum cryptography, PKI migration, electronic signatures, secure messaging, and blockchain support.
This release expands the library’s standards coverage while helping organizations prepare for the next generation of cryptographic security and represents a significant hardening of the APIs as a result of the help the team has received from people using advanced AI-based coding analysis tools.
Key Updates
Expanded Post-Quantum Cryptography Support
Version 1.85 significantly expands Bouncy Castle’s post-quantum cryptography (PQC) portfolio by introducing a wide range of additional signature algorithms from the latest NIST and Korean standardisation efforts, alongside new ISO/IEC key encapsulation mechanisms. This comprehensive algorithm coverage enables developers to evaluate, test, and deploy quantum-resistant cryptography using a single, trusted cryptographic provider while preparing for future standards and regulatory requirements.
Practical Post-Quantum Migration for PKI
Moving to post-quantum cryptography is a gradual process, and Bouncy Castle 1.85 introduces the infrastructure needed to support that journey. New capabilities for hybrid certificates, post-quantum keys and signatures in X.509, and standards-based migration mechanisms allow organisations to begin deploying quantum-safe PKI today while maintaining compatibility with existing classical systems.
High-Level CAdES API for Advanced Electronic Signatures
Bouncy Castle 1.85 introduces a new high-level CAdES API supporting all four ETSI EN 319 122 baseline profiles (B-B, B-T, B-LT, and B-LTA). Developers can now build standards-compliant advanced electronic signatures more easily, reducing implementation complexity for document-signing, long-term archival, and eIDAS-compliant applications across regulated industries.
Modernised CMS and Secure Messaging
This release updates Bouncy Castle’s CMS implementation with support for the latest IETF standards, including KEM-based key management, modern key agreement mechanisms, authenticated encryption improvements, and SHAKE support. In addition, built-in downgrade protection helps defend against weaker encryption choices, giving developers stronger security by default while preparing secure messaging applications for the post-quantum era.
Enhanced Blockchain and Digital Asset Support
Bouncy Castle 1.85 adds support for BLS12-381 signatures and Bitcoin Taproot (BIP-340) Schnorr signatures, extending the library’s capabilities for blockchain, digital assets, and threshold signature applications. By bringing these widely adopted algorithms into the same audited cryptographic toolkit used for enterprise PKI and TLS, organisations can simplify their cryptographic stack while reducing supply chain complexity.
Fixed CVEs
Fixes for the following CVEs:
- CVE-2026-8763 - Name Constraints bypass via trailing dot in rfc822Name and URI.
- CVE-2026-12185 - BKS/UBER keystore allocates from untrusted lengths before integrity check.
- CVE-2026-12802 - CMS AuthEnvelopedData fails to enforce tag-length on decryption.
- CVE-2026-12803 - KCCMBlockCipher MAC does not bind nonce when AAD is absent (cross-nonce AEAD forgery).
- CVE-2026-12816 - IESEngine stream-mode MAC forgery via length-dependent KDF split.
- CVE-2026-12817 - OpenPGP AEAD decryption skips final tag on chunk-aligned data.
- CVE-2026-12852 - MLS wire decoder allocates attacker-declared opaque length before bounds check.
- CVE-2026-12860 - RSA PKCS#1 verification skips last two hash bytes in NULL-omitted path.
- CVE-2026-13506 - Lazy ASN.1 sequence forcing resets nesting-depth guard.
- CVE-2026-13586 - PKCS#12 MAC and bag-decryption KDF iteration-count bound (DoS).
- CVE-2026-14682 - Possible OOM from unbounded up-front allocation on a definite-length read.
- CVE-2026-15055 - PKCS#8 / PBES2 decryptors honour unbounded KDF cost from input.
- CVE-2026-58059 - Quadratic-time escaping when stringifying X.500 distinguished names.
- CVE-2026-58060 - HSS public-key level count unbounded, enabling huge allocation on verify.
- CVE-2026-58061 - CCM-family modes write plaintext to caller buffer before tag check.
- CVE-2026-58062 - Stapled OCSP response accepted without binding to the checked certificate.
- CVE-2026-58063 - BCFKS keystore load honours unbounded KDF cost from untrusted file.
- CVE-2026-59638 - JSSE hostname verifier CN-fallback enabled by default despite documented opt-in.
- CVE-2026-59639 - CMS verifySignatures returns true for SignedData with zero signers.
- CVE-2026-59640 - OpenPGP CFB quick-check oracle active on symmetric/session-key paths.
- CVE-2026-59641 - S/MIME validator trusts signer-asserted signingTime for path validation.
- CVE-2026-59642 - CMS AuthenticatedData content not bound to MAC when authAttrs present.
- CVE-2026-59643 - OpenPGP inline-signature policy failures silently ignored.
- CVE-2026-59644 - MLS hash-ratchet honours arbitrary 32-bit generation counter from sender.
- CVE-2026-59645 - OER parser recurses without depth limit on self-referential IEEE 1609.2 schema.
- CVE-2026-59646 - DTLS handshake reassembler allocates buffer from unchecked 24-bit length.
- CVE-2026-59647 - CRMF/CMP password-MAC honours unbounded iteration count.
- CVE-2026-59648 - OpenPGP Argon2 S2K honours attacker-chosen memory and passes.
- CVE-2026-59649 - OpenPGP user-attribute subpacket length bounded only by JVM max memory.
- CVE-2026-59650 - MTI/A0 DH agreement exponentiates unvalidated peer value.
- CVE-2026-59651 - BKS keystore accepts legacy version with 16-bit integrity MAC key.
- CVE-2026-59652 - LDAP filter injection in legacy jdk1.4 LDAPStoreHelper.
Release Notes
For the complete list of added features, fixed security issues and defects, see:
Download
Bouncy Castle Java 1.85 is now available on Maven Central and on bouncycastle.org/download. Software Bill of Materials (BOM) files are available on Maven Central.
Download Java