Skip navigation links
Bouncy Castle Cryptography Library 1.85
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.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.
JCA/JCE Provider 
Package Description
org.bouncycastle.jcajce.provider.asymmetric  
org.bouncycastle.jcajce.provider.asymmetric.cmce
JCA/JCE provider classes for the standardised Classic McEliece (ISO/IEC 18033-2:2006/Amd 2:2026, Clause 13), registered in the BouncyCastle provider: the base, "f", "pc" and "pcf" variants at each of the four security parameter sets (460896, 6688128, 6960119 and 8192128).
org.bouncycastle.jcajce.provider.asymmetric.compositekem  
org.bouncycastle.jcajce.provider.asymmetric.compositesignatures  
org.bouncycastle.jcajce.provider.asymmetric.dh  
org.bouncycastle.jcajce.provider.asymmetric.dsa  
org.bouncycastle.jcajce.provider.asymmetric.dstu  
org.bouncycastle.jcajce.provider.asymmetric.ec  
org.bouncycastle.jcajce.provider.asymmetric.ecgost  
org.bouncycastle.jcajce.provider.asymmetric.ecgost12  
org.bouncycastle.jcajce.provider.asymmetric.edec  
org.bouncycastle.jcajce.provider.asymmetric.elgamal  
org.bouncycastle.jcajce.provider.asymmetric.frodokem
JCA/JCE provider classes for the standardised FrodoKEM (ISO/IEC 18033-2:2006/Amd 2:2026), registered in the BouncyCastle provider: the salted "FrodoKEM" and ephemeral "eFrodoKEM" SHAKE parameter sets at security levels 976 and 1344.
org.bouncycastle.jcajce.provider.asymmetric.gost  
org.bouncycastle.jcajce.provider.asymmetric.ies  
org.bouncycastle.jcajce.provider.asymmetric.mldsa  
org.bouncycastle.jcajce.provider.asymmetric.mlkem  
org.bouncycastle.jcajce.provider.asymmetric.rsa  
org.bouncycastle.jcajce.provider.asymmetric.slhdsa  
org.bouncycastle.jcajce.provider.asymmetric.util  
org.bouncycastle.jcajce.provider.asymmetric.x509  
org.bouncycastle.jcajce.provider.config  
org.bouncycastle.jcajce.provider.digest  
org.bouncycastle.jcajce.provider.drbg  
org.bouncycastle.jcajce.provider.kdf  
org.bouncycastle.jcajce.provider.kdf.hkdf  
org.bouncycastle.jcajce.provider.kdf.pbkdf2  
org.bouncycastle.jcajce.provider.kdf.scrypt  
org.bouncycastle.jcajce.provider.keystore  
org.bouncycastle.jcajce.provider.keystore.bc  
org.bouncycastle.jcajce.provider.keystore.bcfks  
org.bouncycastle.jcajce.provider.keystore.pkcs12  
org.bouncycastle.jcajce.provider.keystore.util  
org.bouncycastle.jcajce.provider.symmetric  
org.bouncycastle.jcajce.provider.symmetric.util  
org.bouncycastle.jcajce.provider.util  
org.bouncycastle.jce.provider  
JCA/JCE Utility and Extension Packages 
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.
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.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.
Math and 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.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.
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 ASN.1 Packages 
Package Description
org.bouncycastle.pqc.asn1
ASN.1 Support classes for PQC algorithms.
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.
Post-Quantum Provider 
Package Description
org.bouncycastle.pqc.jcajce.interfaces
JCA-style key interfaces for the BCPQC-provider PQC algorithms, parallel to org.bouncycastle.jcajce.interfaces — letting callers downcast a Key into its algorithm-specific accessor shape without depending on the concrete provider implementation classes.
org.bouncycastle.pqc.jcajce.provider  
org.bouncycastle.pqc.jcajce.provider.aimer  
org.bouncycastle.pqc.jcajce.provider.bike  
org.bouncycastle.pqc.jcajce.provider.cmce  
org.bouncycastle.pqc.jcajce.provider.dilithium  
org.bouncycastle.pqc.jcajce.provider.faest  
org.bouncycastle.pqc.jcajce.provider.falcon  
org.bouncycastle.pqc.jcajce.provider.frodo  
org.bouncycastle.pqc.jcajce.provider.haetae  
org.bouncycastle.pqc.jcajce.provider.hawk  
org.bouncycastle.pqc.jcajce.provider.hqc  
org.bouncycastle.pqc.jcajce.provider.kyber  
org.bouncycastle.pqc.jcajce.provider.lms  
org.bouncycastle.pqc.jcajce.provider.mayo  
org.bouncycastle.pqc.jcajce.provider.mqom  
org.bouncycastle.pqc.jcajce.provider.newhope  
org.bouncycastle.pqc.jcajce.provider.ntru  
org.bouncycastle.pqc.jcajce.provider.ntruplus  
org.bouncycastle.pqc.jcajce.provider.ntruprime  
org.bouncycastle.pqc.jcajce.provider.picnic  
org.bouncycastle.pqc.jcajce.provider.qruov  
org.bouncycastle.pqc.jcajce.provider.saber  
org.bouncycastle.pqc.jcajce.provider.sdith  
org.bouncycastle.pqc.jcajce.provider.snova  
org.bouncycastle.pqc.jcajce.provider.sphincs  
org.bouncycastle.pqc.jcajce.provider.sphincsplus  
org.bouncycastle.pqc.jcajce.provider.sqisign  
org.bouncycastle.pqc.jcajce.provider.uov  
org.bouncycastle.pqc.jcajce.provider.util  
org.bouncycastle.pqc.jcajce.provider.xmss  
org.bouncycastle.pqc.jcajce.spec
AlgorithmParameterSpec implementations for the BCPQC-provider algorithms — per-parameter-set constants and fromName(String) lookups for Falcon, Hawk, MAYO, MQOM, SNOVA, UOV, the legacy SPHINCS+ variants, the legacy Rainbow / Picnic submissions, and the supporting hash-based schemes.
Other Packages 
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).
Skip navigation links
Bouncy Castle Cryptography Library 1.85