| 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.cryptopro |
Support classes for CRYPTO-PRO related objects - such as GOST identifiers.
|
| org.bouncycastle.asn1.gm |
Support classes for Chinese Standard (GM) standard curves and algorithms.
|
| 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.mod | |
| org.bouncycastle.asn1.nist |
Support classes for NIST related objects.
|
| org.bouncycastle.asn1.ocsp |
Support classes useful for encoding and supporting OCSP objects.
|
| 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.sec |
Classes for support of the SEC standard for Elliptic Curve.
|
| org.bouncycastle.asn1.teletrust |
Support classes for TeleTrust related objects.
|
| org.bouncycastle.asn1.ua |
Support classes for the Ukrainian DSTU standard.
|
| org.bouncycastle.asn1.util |
An ASN.1 dump utility.
|
| 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.
|
| Package | Description |
|---|---|
| org.bouncycastle.jcajce |
Root of the JCA/JCE plumbing for BC: provider-overridable
SecretKey
implementations, PBE-key wrappers, and the CertStore bridge
types that the BC provider's algorithms register against. |
| org.bouncycastle.jcajce.interfaces |
JCA-style key interfaces specific to BC's provider — e.g.
|
| org.bouncycastle.jcajce.io |
I/O streams that drive JCE primitives —
MessageDigest,
Mac, Signature,
Cipher — as input or output streams, removing the boilerplate
around feeding data into them by hand. |
| org.bouncycastle.jcajce.spec |
AlgorithmParameterSpec / KeySpec
implementations specific to BC's provider — covering PBKDF2 with extended digests,
HKDF, ML-KEM / ML-DSA / SLH-DSA parameter sets, GOST key agreement, ZUC, SM2, EC
implicit-CA, and other JDK-not-shipped algorithms. |
| org.bouncycastle.jcajce.util |
The
JcaJceHelper abstraction (default / named-provider / pinned-provider
variants) used pervasively in .jcajce packages to make the underlying JCE
provider selection a constructor argument rather than a global Security state lookup. |
| org.bouncycastle.jce |
Utility classes for use with the JCE.
|
| org.bouncycastle.jce.exception |
JCE-side exception types — including
ExtException, which provides a uniform
place to attach an underlying-cause Throwable to the JCE checked-exception hierarchy
for code that needs to propagate richer error context across the java.security
surface. |
| org.bouncycastle.jce.interfaces |
Interfaces for supporting Elliptic Curve Keys, El Gamal, and PKCS12 attributes.
|
| org.bouncycastle.jce.netscape |
Netscape Certificate Sequence (NetscapeCertRequest) — the historical browser-side
SPKAC enrolment format.
|
| org.bouncycastle.jce.spec |
Parameter specifications for supporting El Gamal, and Elliptic Curve.
|
| 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.srp |
Support classes for Secure Remote Password (SRP) protocol.
|
| 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.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.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.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.threshold |
Threshold-cryptography helpers — Shamir secret sharing over GF(28) and
supporting polynomial arithmetic.
|
| 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.
|
| 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.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.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.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.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.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.test |
Light weight test API.
|
| 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).
|
| Package | Description |
|---|---|
| org.bouncycastle.pqc.asn1 |
ASN.1 Support classes for PQC algorithms.
|
| 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.
|
| Package | Description |
|---|---|
| org.bouncycastle.pqc.legacy.bike |
Lightweight implementation of BIKE (Bit-Flipping Key Encapsulation), a code-based
KEM from the NIST PQC Round 4 alternates.
|
| org.bouncycastle.pqc.legacy.picnic |
Lightweight implementation of Picnic, a zero-knowledge-proof-based signature scheme
from the NIST PQC Round 3 alternates.
|
| org.bouncycastle.pqc.legacy.rainbow |
Lightweight implementation of Rainbow, a multivariate-quadratic signature scheme that
was a NIST PQC Round 3 finalist before being broken.
|
| org.bouncycastle.pqc.legacy.sphincsplus |
Lightweight implementation of SPHINCS+ (the NIST PQC Round 3 submission that was
subsequently standardised as SLH-DSA / FIPS 205).
|