Overview (Bouncy Castle Library 1.85 API Specification)
Date: 2026-07-12

Lightweight Crypto Packages
Package | Description
--- | ---
org.bouncycastle.crypto | Base classes for the lightweight API.
org.bouncycastle.crypto.agreement | Basic key agreement classes.
org.bouncycastle.crypto.agreement.ecjpake | Support classes for Elliptic Curve Password Authenticated Key Exchange by Juggling (EC J-PAKE) key exchange.
org.bouncycastle.crypto.agreement.jpake | Support classes for Password Authenticated Key Exchange by Juggling (J-PAKE) key exchange.
org.bouncycastle.crypto.agreement.kdf | Support classes for KDF based key derivation functions.
org.bouncycastle.crypto.agreement.owl | Support classes for the Owl augmented PAKE (Hao, Bag, Chen, Lopez 2024).
org.bouncycastle.crypto.agreement.owl.test |
org.bouncycastle.crypto.agreement.srp | Support classes for Secure Remote Password (SRP) protocol.
org.bouncycastle.crypto.agreement.test |
org.bouncycastle.crypto.bls | BLS signatures over the BLS12-381 curve, per draft-irtf-cfrg-bls-signature.
org.bouncycastle.crypto.commitments | Classes for supporting commitment calculation.
org.bouncycastle.crypto.constraints | Crypto-services-constraint framework: lets callers limit which cryptographic primitives the lightweight API will produce (by key size, by allowlist, by purpose).
org.bouncycastle.crypto.digests | Message digest classes.
org.bouncycastle.crypto.ec | Utility classes for support Elliptic Curve cryptographic transforms.
org.bouncycastle.crypto.ec.test |
org.bouncycastle.crypto.encodings | Block encodings for asymmetric ciphers.
org.bouncycastle.crypto.engines | Basic cipher classes.
org.bouncycastle.crypto.fpe | Format-Preserving Encryption per NIST SP 800-38G: FF1 and FF3-1 modes that produce ciphertext in the same alphabet (digits / strings) as the input plaintext.
org.bouncycastle.crypto.generators | Generators for keys, key pairs and password based encryption algorithms.
org.bouncycastle.crypto.hash2curve | Hash to curve implementation
org.bouncycastle.crypto.hash2curve.data |
org.bouncycastle.crypto.hash2curve.impl |
org.bouncycastle.crypto.hash2curve.test |
org.bouncycastle.crypto.hash2curve.test.impl |
org.bouncycastle.crypto.hpke | Hybrid Public Key Encryption (HPKE) per RFC 9180.
org.bouncycastle.crypto.io | Classes for doing "enhanced" I/O with Digests and MACs.
org.bouncycastle.crypto.kems | Key Encapsulation Mechanisms.
org.bouncycastle.crypto.kems.cmce | The Classic McEliece key encapsulation mechanism as standardised in ISO/IEC 18033-2:2006/Amd 2:2026 (Clause 13): lightweight engine internals for the non-pc and pc ("plaintext confirmation") parameter sets, each in a plain and a semi-systematic ("f") key-generation variant.
org.bouncycastle.crypto.kems.frodo | The FrodoKEM key encapsulation mechanism as standardised in ISO/IEC 18033-2:2006/Amd 2:2026 (Clause 14): lightweight engine internals for the salted "FrodoKEM" and ephemeral "eFrodoKEM" SHAKE parameter sets.
org.bouncycastle.crypto.kems.mlkem | ML-KEM (FIPS 203) bindings of the lightweight KEM API (`EncapsulatedSecretGenerator` / `EncapsulatedSecretExtractor`) sitting on top of the `org.bouncycastle.pqc.crypto.mlkem` primitives.
org.bouncycastle.crypto.macs | Classes for creating MACs and HMACs.
org.bouncycastle.crypto.modes | Modes for symmetric ciphers.
org.bouncycastle.crypto.modes.gcm | GCM mode support classes.
org.bouncycastle.crypto.modes.kgcm | Lookup tables for KGCM (the GCM analogue used by the Ukrainian DSTU 7624 Kalyna cipher).
org.bouncycastle.crypto.paddings | Paddings for symmetric ciphers.
org.bouncycastle.crypto.params | Classes for parameter objects for ciphers and generators.
org.bouncycastle.crypto.parsers | Helper classes for parsing "on the wire" public keys.
org.bouncycastle.crypto.prng | Lightweight psuedo-random number generators and SecureRandom builders.
org.bouncycastle.crypto.prng.drbg | SP800-90A deterministic random bit generators, can be used stand alone or in conjunction with SP800SecureRandomBuilder class.
org.bouncycastle.crypto.prng.test |
org.bouncycastle.crypto.signers | Basic signers.
org.bouncycastle.crypto.signers.mldsa | ML-DSA (FIPS 204) bindings of the lightweight signer API.
org.bouncycastle.crypto.signers.slhdsa | SLH-DSA (FIPS 205) bindings of the lightweight signer API.
org.bouncycastle.crypto.test | Example code and test classes for the lightweight API.
org.bouncycastle.crypto.test.cavp |
org.bouncycastle.crypto.test.speedy |
org.bouncycastle.crypto.threshold | Threshold-cryptography helpers — Shamir secret sharing over GF(28) and supporting polynomial arithmetic.
org.bouncycastle.crypto.threshold.test |
org.bouncycastle.crypto.tls | Legacy lightweight TLS support — predates and is largely superseded by the standalone `org.bouncycastle.tls` TLS / JSSE module.
org.bouncycastle.crypto.util | Some general utility/conversion classes.

ASN.1 Support Packages
Package | Description
--- | ---
org.bouncycastle.asn1 | A library for parsing and writing ASN.1 objects.
org.bouncycastle.asn1.anssi | Support classes for the French ANSSI EC curves.
org.bouncycastle.asn1.bc | ASN.1 classes specific to the Bouncy Castle APIs.
org.bouncycastle.asn1.bsi | ASN.1 classes specific to the Bundesamt für Sicherheit in der Informationstechnik (BSI) standards.
org.bouncycastle.asn1.cmc | Support classes for Certificate Management over CMS (CMC) - RFC 5272 and RFC 6402.
org.bouncycastle.asn1.cmc.test |
org.bouncycastle.asn1.cmp | Support classes useful for encoding and supporting PKIX-CMP as described RFC 4210.
org.bouncycastle.asn1.cmp.test |
org.bouncycastle.asn1.cms | Support classes useful for encoding and supporting Cryptographic Message Syntax as described in PKCS#7 and RFC 3369 (formerly RFC 2630).
org.bouncycastle.asn1.cms.ecc | Support classes for CMS ECC - RFC 5753/3278.
org.bouncycastle.asn1.cms.test |
org.bouncycastle.asn1.crmf | Support classes useful for encoding and supporting PKIX-CRMF as described RFC 4211.
org.bouncycastle.asn1.crmf.test |
org.bouncycastle.asn1.cryptlib | Object identifier constants from the cryptlib OID arc (Peter Gutmann's cryptlib).
org.bouncycastle.asn1.cryptopro | Support classes for CRYPTO-PRO related objects - such as GOST identifiers.
org.bouncycastle.asn1.dvcs | Support classes useful for encoding and processing Data Validation and Certification Server (DVCS) protocols as described in RFC 3029.
org.bouncycastle.asn1.dvcs.test |
org.bouncycastle.asn1.eac | ASN.1 classes specific to the Bundesamt für Sicherheit in der Informationstechnik (BSI) Technical Guideline Advanced Security Mechanisms for Machine Readable Travel Documents.
org.bouncycastle.asn1.edec | Object identifier constants for the Edwards-curve EdDSA algorithms per RFC 8410 (id-X25519, id-X448, id-Ed25519, id-Ed448).
org.bouncycastle.asn1.esf | Support classes useful for encoding and supporting [ESF] RFC3126 Electronic Signature Formats for long term electronic signatures.
org.bouncycastle.asn1.esf.test |
org.bouncycastle.asn1.ess | Support classes useful for encoding and supporting Enhanced Security Services for S/MIME as described RFC 2634 and RFC 5035.
org.bouncycastle.asn1.ess.test |
org.bouncycastle.asn1.est | Support classes for Enrollment over Secure Transport (EST) - RFC 7030.
org.bouncycastle.asn1.gm | Support classes for Chinese Standard (GM) standard curves and algorithms.
org.bouncycastle.asn1.gnu | Object identifier constants from the GNU project's OID arc, including the OIDs used by GnuPG for the Camellia and Brainpool curves.
org.bouncycastle.asn1.iana | Object identifier constants from the IANA-allocated PKIX OID registry — currently covering the HMAC-SHA-1 OID used by IKE / IPsec.
org.bouncycastle.asn1.icao | ICAO ASN.1 classes for electronic passport.
org.bouncycastle.asn1.icao.test |
org.bouncycastle.asn1.isara | Object identifier constants from ISARA Corporation's quantum-safe OID arc — most notably the XMSS / XMSS-MT signature OIDs they registered.
org.bouncycastle.asn1.isismtt | Support classes for the ISIS-MTT Project.
org.bouncycastle.asn1.isismtt.ocsp | Support classes for the ISIS-MTT profile for OCSP.
org.bouncycastle.asn1.isismtt.test |
org.bouncycastle.asn1.isismtt.x509 | Support classes for the ISIS-MTT X.509 Certificate Extensions.
org.bouncycastle.asn1.iso | Support classes for various ISO Standards.
org.bouncycastle.asn1.kisa | Support classes for the Korea Information Security Agency (KISA) standard - SEED algorithm.
org.bouncycastle.asn1.microsoft | Support for Microsoft specific ASN.1 classes and object identifiers.
org.bouncycastle.asn1.microsoft.test |
org.bouncycastle.asn1.misc | Miscellaneous object identifiers and objects.
org.bouncycastle.asn1.misc.test |
org.bouncycastle.asn1.mod |
org.bouncycastle.asn1.mozilla | ASN.1 types and OID constants for Mozilla's SignedPublicKeyAndChallenge (SPKAC) form — the browser-side certificate-enrolment structure historically emitted by `<keygen>` elements.
org.bouncycastle.asn1.nist | Support classes for NIST related objects.
org.bouncycastle.asn1.nsri | Support classes algorithms from the Korean National Security Research Institute.
org.bouncycastle.asn1.ntt | ASN.1 classes relevant to the standards produced by Nippon Telegraph and Telephone.
org.bouncycastle.asn1.ocsp | Support classes useful for encoding and supporting OCSP objects.
org.bouncycastle.asn1.oiw | Objects and OID for the support of ISO OIW.
org.bouncycastle.asn1.pkcs | Support classes useful for encoding and supporting the various RSA PKCS documents.
org.bouncycastle.asn1.plants | ASN.1 types for the IETF PLANTS working group's Merkle Tree Certificate work (`draft-ietf-plants-merkle-tree-certs`), including the `MerkleTreeCertEntry` and `MTCProof` structures.
org.bouncycastle.asn1.rosstandart | Support classes algorithms from the Russian Federal Agency on Technical Regulating and Metrology - Rosstandart.
org.bouncycastle.asn1.sec | Classes for support of the SEC standard for Elliptic Curve.
org.bouncycastle.asn1.smime | Support classes useful for encoding and supporting S/MIME.
org.bouncycastle.asn1.smime.test |
org.bouncycastle.asn1.teletrust | Support classes for TeleTrust related objects.
org.bouncycastle.asn1.test | Test programs for the ASN.1 package.
org.bouncycastle.asn1.tsp | Support classes useful for encoding and supporting Time Stamp Protocol as described RFC 3161.
org.bouncycastle.asn1.ua | Support classes for the Ukrainian DSTU standard.
org.bouncycastle.asn1.util | An ASN.1 dump utility.
org.bouncycastle.asn1.util.test |
org.bouncycastle.asn1.x500 | Support classes for the creation and processing of object based on X.500 names.
org.bouncycastle.asn1.x500.style | Template classes for the common styles used for converting X.500 names to strings and back.
org.bouncycastle.asn1.x509 | Support classes useful for encoding and processing X.509 certificates.
org.bouncycastle.asn1.x509.qualified | Support classes useful for encoding and processing messages based around RFC3739
org.bouncycastle.asn1.x509.sigi | Support classes for the German SigI (Signature Interoperability Specification) standard.
org.bouncycastle.asn1.x9 | Support classes useful for encoding and supporting X9.62 elliptic curve.

Utility Packages
Package | Description
--- | ---
org.bouncycastle.math | The Bouncy Castle math package.
org.bouncycastle.math.ec | Math support for Elliptic Curve.
org.bouncycastle.math.ec.custom.djb | Experimental implementation of curve25519.
org.bouncycastle.math.ec.custom.gm | Custom implementation of SM2 EC curve, SM2-P256V1.
org.bouncycastle.math.ec.custom.sec | Custom implementations of (most of) the curves over Fp from the SEC specification.
org.bouncycastle.math.ec.custom.sec.test |
org.bouncycastle.math.ec.endo | Endomorphism support for the EC math classes — the GLV / GLS decomposition tables that accelerate scalar multiplication on suitable curves (secp256k1, etc.).
org.bouncycastle.math.ec.rfc7748 | Constant-time scalar-multiplication implementations for the Curve25519 and Curve448 elliptic curves per RFC 7748.
org.bouncycastle.math.ec.rfc7748.test |
org.bouncycastle.math.ec.rfc8032 | Constant-time implementations of the Ed25519 and Ed448 signature schemes per RFC 8032, sitting on top of the Curve25519 / Curve448 scalar-multiplication in `org.bouncycastle.math.ec.rfc7748`.
org.bouncycastle.math.ec.rfc8032.test |
org.bouncycastle.math.ec.test |
org.bouncycastle.math.ec.tools | Standalone tools for working with elliptic curves — discrete log calculators, curve parameter generators, and table-generation utilities used to bootstrap the named curves in `org.bouncycastle.math.ec`.
org.bouncycastle.math.field | Polynomial-field math (GF(2m) with various basis representations) used to back the F2m elliptic curves in `org.bouncycastle.math.ec`.
org.bouncycastle.math.raw | Math support for raw multi-precision calculations.
org.bouncycastle.math.raw.test |
org.bouncycastle.math.test |
org.bouncycastle.util | General purpose utility classes used throughout the APIs.
org.bouncycastle.util.encoders | Classes for producing and reading Base64 and Hex strings.
org.bouncycastle.util.encoders.test |
org.bouncycastle.util.io | General purpose I/O helper classes and wrappers.
org.bouncycastle.util.io.pem | Classes for reading and writing raw PEM objects.
org.bouncycastle.util.io.pem.test |
org.bouncycastle.util.io.test |
org.bouncycastle.util.test | Light weight test API.
org.bouncycastle.util.utiltest |

Post-Quantum Lightweight Crypto Packages
Package | Description
--- | ---
org.bouncycastle.pqc.crypto | Root of the lightweight Post-Quantum Cryptography implementations.
org.bouncycastle.pqc.crypto.aimer | Lightweight implementation of AIMer, an MPC-in-the-Head signature scheme built on the AIM2 one-way function, in the NIST PQC additional-digital-signatures round.
org.bouncycastle.pqc.crypto.cmce | Lightweight implementation of Classic McEliece (Round 4 NIST PQC KEM finalist).
org.bouncycastle.pqc.crypto.crystals.dilithium | Lightweight implementation of CRYSTALS-Dilithium (the NIST Round 3 submission that was subsequently standardised as ML-DSA / FIPS 204).
org.bouncycastle.pqc.crypto.faest | Lightweight implementation of FAEST — symmetric-primitive digital signature scheme based on AES and the VOLE-in-the-Head proof system.
org.bouncycastle.pqc.crypto.falcon | Lightweight implementation of Falcon, the NTRU-lattice-based signature scheme selected for standardisation by NIST.
org.bouncycastle.pqc.crypto.frodo | Lightweight implementation of FrodoKEM (a learning-with-errors KEM that did not advance past Round 3 of the NIST PQC process; retained as a conservative reference).
org.bouncycastle.pqc.crypto.haetae | Lightweight implementation of HAETAE, a module-lattice-based signature scheme in the NIST PQC additional-digital-signatures round.
org.bouncycastle.pqc.crypto.hawk | Lightweight implementation of Hawk, an NTRU-lattice-based signature scheme in the NIST PQC additional-digital-signatures round.
org.bouncycastle.pqc.crypto.hqc | Lightweight implementation of HQC (Hamming Quasi-Cyclic), a code-based KEM that NIST selected for standardisation as a backup to ML-KEM.
org.bouncycastle.pqc.crypto.lms | Lightweight implementation of LMS and the HSS multi-tree variant per RFC 8554 (hash-based stateful signatures).
org.bouncycastle.pqc.crypto.mayo | Lightweight implementation of MAYO, a UOV-based signature scheme in the NIST PQC additional-digital-signatures round.
org.bouncycastle.pqc.crypto.mldsa | Lightweight implementation of ML-DSA (Module-Lattice-Based Digital Signature Algorithm) as standardised by NIST FIPS 204.
org.bouncycastle.pqc.crypto.mlkem | Lightweight implementation of ML-KEM (Module-Lattice-Based Key-Encapsulation Mechanism) as standardised by NIST FIPS 203.
org.bouncycastle.pqc.crypto.mqom | Lightweight implementation of MQOM ("MQ on my Mind"), an MPC-in-the-Head signature scheme in the NIST PQC additional-digital-signatures round.
org.bouncycastle.pqc.crypto.newhope | Low level implementation of the NewHope key exchange algorithm.
org.bouncycastle.pqc.crypto.ntru | The NTRU algorithm based on the round 3 submission of the NIST post-quantum cryptography.
org.bouncycastle.pqc.crypto.ntruplus | Lightweight implementation of NTRU+ (Korean post-quantum KEM submission).
org.bouncycastle.pqc.crypto.ntruprime | Lightweight implementation of NTRU Prime — the streamlined-NTRU and NTRU LPRime KEM variants from the NIST PQC Round 3 alternates.
org.bouncycastle.pqc.crypto.qruov | Lightweight implementation of QR-UOV, a quotient-ring variant of the UOV multivariate signature scheme in the NIST PQC additional-digital-signatures round.
org.bouncycastle.pqc.crypto.saber | Lightweight implementation of SABER, a module-lattice KEM from the NIST PQC Round 3 finalists.
org.bouncycastle.pqc.crypto.sdith | Lightweight implementation of SDitH ("Syndrome Decoding in the Head"), a code-based MPC-in-the-Head signature scheme in the NIST PQC additional-digital-signatures round.
org.bouncycastle.pqc.crypto.slhdsa | Lightweight implementation of SLH-DSA (Stateless Hash-Based Digital Signature Algorithm) as standardised by NIST FIPS 205, succeeding the SPHINCS+ submission in `org.bouncycastle.pqc.legacy.sphincsplus`.
org.bouncycastle.pqc.crypto.snova | Lightweight implementation of SNOVA, a UOV-variant signature scheme in the NIST PQC additional-digital-signatures round.
org.bouncycastle.pqc.crypto.sphincs | Low level implementation of the SPHINCS-256 signature algorithm.
org.bouncycastle.pqc.crypto.sqisign | Lightweight implementation of SQIsign (Short Quaternion and Isogeny Signature), an isogeny-based signature scheme in the NIST PQC additional-digital-signatures round.
org.bouncycastle.pqc.crypto.uov | Lightweight implementation of UOV (Unbalanced Oil and Vinegar), a multivariate-quadratic signature scheme in the NIST PQC additional-digital-signatures round.
org.bouncycastle.pqc.crypto.util | Shared PQC factory utilities — `PublicKeyFactory`, `PrivateKeyFactory`, `SubjectPublicKeyInfoFactory`, `PrivateKeyInfoFactory` and the OID lookup helpers that route PQC parameter sets between the wire-format ASN.1 layer and the lightweight `Parameters` types.
org.bouncycastle.pqc.crypto.xmss | Low level implementation of the XMSS and XMSS^MT signature algorithms.
org.bouncycastle.pqc.crypto.xwing | Lightweight implementation of X-Wing, the hybrid KEM combining X25519 and ML-KEM-768 (draft-connolly-cfrg-xwing-kem).

Post-Quantum Lightweight Math Packages
Package | Description
--- | ---
org.bouncycastle.pqc.math.ntru | Contains the polynomial classes used in the NTRU round 3 algorithm.
org.bouncycastle.pqc.math.ntru.parameters | Parameter sets and supporting polynomial arithmetic for the NTRU-family KEM implementations.
org.bouncycastle.pqc.math.ntru.test |

Post-Quantum ASN.1 Packages
Package | Description
--- | ---
org.bouncycastle.pqc.asn1 | ASN.1 Support classes for PQC algorithms.

Post-Quantum Test Packages
Package | Description
--- | ---
org.bouncycastle.pqc.crypto.test |