Interoperability


The following provides an overview of Bouncy Castle's capabilities and support, with relevant links to external standards and documentation. 

Packages and Standards

Bouncy Castle Java supports the following formats and standards.

Certifications

The following lists certifications with relevant links to certificates and documentation.


For more information about the Bouncy Castle FIPS Java API and how it presents cryptography, refer to The Bouncy Castle FIPS Java API in 100 Examples and sample code at https://www.bouncycastle.org/fips-java/code/bc-fips-100-java.tar.gz and https://www.bouncycastle.org/fips-java/code/bc-fips-100-java.zip.

Algorithms and Key Types

Bouncy Castle supports the following public key algorithm types and key size/curves.

Algorithm

External Reference

Java

C#

FIPS Java

FIPS C#

Diffie-Hellman

SP 800-56A

check mark

check mark

check mark

check mark

DSA

FIPS PUB 186-4, RFC 6979

check mark

check mark

check mark

check mark

DSTU

DSTU 4145-2002

check mark

check mark

check mark


ECDSA/ECDH

X9.62, FIPS PUB 186-4, RFC 5639, RFC 6979, SP 800-56A

check mark

check mark

check mark

check mark

EdDSA/XDH

RFC 7748, RFC 8032, RFC 8410

check mark

check mark

check mark

check mark





ElGamal

RFC 4880

check mark

check mark

check mark

check mark

GOST

RFC 4490, RFC 7836

check mark

check mark

check mark


LMS/HSS

RFC 8554, RFC 8708

check mark

check mark

check mark


SM2

RFC 8998

check mark

check mark

check mark


RSA

RFC 8017, FIPS PUB 186-4, SP 800-56B

check mark

check mark

check mark

check mark

XMSS

RFC 8391

check mark

check mark



Symmetric Key Algorithms

Bouncy Castle supports the following symmetric key block based algorithms.

Algorithm

External Reference

Key Sizes (bits)

Block Size (bits)

Java

C#

FIPS Java

FIPS C#

Notes

AES

FIPS PUB 197, RFC 3394, RFC 5649

128, 192, 256

128

check mark

check mark

check mark

check mark


ARIA

RFC 5794, RFC 5649

128, 192, 256

128

check mark

check mark

check mark



Camellia

RFC 3713, RFC 3657

128, 192, 256

128

check mark

check mark

check mark

check mark


CAST 5

RFC 2144

0...128

64

check mark

check mark

check mark



CAST 6

RFC 2612

0...256

128

check mark

check mark




DSTU 7624

DSTU 7624:2014

128, 256, 512

128, 256, 512

check mark

check mark

check mark



GOST 28147

RFC 5830

256

64

check mark

check mark

check mark



GOST 3412-2015

RFC 7801

256

128

check mark

check mark




LEA

ISO/IEC 29192-2:2019

128

128, 192, 256

check mark





RC2

RFC 2268, RFC 3217

0...1024

64

check mark

check mark

check mark



RC5

RFC 2040

128

64, 128

check mark

check mark




SEED

RFC 4269

128

128

check mark

check mark

check mark

check mark


SM4

RFC 8998

128

128

check mark

check mark




TripleDES

FIPS PUB 46-3, RFC 3217

112, 168

64

check mark

check mark

check mark



Bouncy Castle supports the following symmetric key stream based algorithms.

Algorithm

External Reference

Key Sizes (bits)

Java

C#

FIPS Java

FIPS C#

Notes

Ascon

CAESAR, NIST Lightweight Competition Finalist

128, 160

check mark

check mark




CHACHA-7359

RFC 7359

128, 256

check mark

check mark


check mark


GRAIN

eSTREAM Project

128

check mark

check mark




HC

eSTREAM Project

128, 256

check mark

check mark




RC4

RFC 4345

40...2048

check mark

check mark

check mark

check mark

Unsafe - legacy use only.

Salsa20

eSTREAM Project

128, 256

check mark

check mark




Message Digests and Expandable Output Functions

Bouncy Castle supports the following Message Digests and Expandable Output Functions (XOFs).

Algorithm

External Reference

Java

C#

FIPS

Java

FIPS

C#

Ascon (Hash, XOF)

NIST Lightweight Competition Finalist

check mark

check mark



Blake2

RFC 7693

check mark

check mark



Blake3


check mark

check mark



cSHAKE-128, cSHAKE-256

SP 800-185

check mark

check mark

check mark

check mark

Kangaroo


check mark




KMAC-128, KMAC-256

SP 800-185

check mark

check mark

check mark

check mark

MD5

RFC 1321

check mark

check mark

check mark

check mark

ParallelHash-128, ParallelHash-256

SP 800-185

check mark

check mark

check mark

check mark

RIPEMD-128, RIPEMD-160, RIPEMD-256, RIPEMD-320


check mark

check mark

check mark


SHA-1

FIPS PUB 180-4

check mark

check mark

check mark

check mark

SHA224, SHA256, SHA384, SHA512, SHA512/224, SHA512/256

FIPS PUB 180-4

check mark

check mark

check mark

check mark

SHA3-224, SHA3-256, SHA3-384, SHA3-512

FIPS PUB 202

check mark

check mark

check mark

check mark

SHAKE-128, SHAKE-256

FIPS PUB 202, RFC 8702

check mark

check mark

check mark

check mark

SM3

RFC 8998

check mark

check mark



Tiger

Project NESSIE

check mark

check mark

check mark


TupleHash-128, TupleHash-256

SP 800-185

check mark

check mark

check mark

check mark

Whirlpool

Project NESSIE, ISO/IEC 10118-3

check mark

check mark

check mark


Post Quantum Algorithm Support

The following algorithms are standardized and implemented.

Key Encapsulation Algorithm (KEM)

Key Encapsulation Algorithm

External Reference

ML-KEM

FIPS PUB 203


Signature Algorithms

Signature Algorithm

External Reference

ML-DSA

FIPS PUB 204

SLH-DSA

FIPS PUB 205

LMS

SP 800-208, RFC 8554, RFC 8708

XMSS

SP 800-208, RFC 8391

NIST PQC Competition Algorithms

For further details on these algorithms, refer to NIST Post-Quantum Cryptography.

The Post-Quantum Cryptography (PQC) algorithms below have been part of the NIST PQC competition, but have not been standardized. These are available for experimenting and hybrid cryptography but are unsuitable for long-term use. 

Key Encapsulation Algorithms (KEMs)

Key Encapsulation Algorithm

Status

BIKE

Round 4 Candidate

HQC

Round 4 Candidate

Classic McEliece

Round 4 Candidate, used by BIS

SABER

Round 3 Candidate

FrodoKEM

Round 3 Alternate Candidate, used by BIS

NTRU

Round 3 Candidate

NTRU Prime

Round 3 Alternate Candidate

Signature Algorithms

Signature Algorithm

Status

Falcon

Finalist, will be standardized as FN-DSA

Picnic

Round 3 Candidate

Rainbow

Round 3 Candidate (cat III and cat V submission only)

GeMSS

Round 3 Candidate

CRL, OCSP and Certificate Distribution

Bouncy Castle supports the following CRL formats and standards.

Supported Standard

External Reference

CRL creation and URL based CRL Distribution Points.

RFC 5280

Online Certificate Status Protocol (OCSP), including AIA-extension and must-staple extension.

RFC 2560, RFC 6960RFC 5019 and RFC 8964

The German Common PKI SigG CertHash OCSP extension.


Certificate Enrollment Protocols

The following lists Certificate Enrollment Protocols and/or interfaces.

Protocol / Interface

External Reference

Documentation

Simple Certificate Enrollment Protocol (SCEP).

SCEP draft 23

SCEP

Certificate Management Protocol (CMP).

RFC 4210

CMP

Enrollment over Secure Transport (EST).

RFC 7030

EST