Spongy Castle - a repackage of Bouncy Castle for Android (which ships a crippled version of BC)
Java Other
#20 Compare This branch is 8 commits ahead, 384 commits behind bcgit:master.
Latest commit b899f49 Aug 20, 2016 @rtyley Gradle: Set project version
This is usually a version number quite similar to the BouncyCastle
Failed to load latest commit information.
ant compatibility updates Dec 29, 2015
core Become spongy with become-spongy.sh Aug 20, 2016
docs updates Aug 18, 2016
jce/src/main/java/javax/crypto Become spongy with become-spongy.sh Aug 20, 2016
kmip/src Become spongy with become-spongy.sh Aug 20, 2016
mail Become spongy with become-spongy.sh Aug 20, 2016
misc/src/main/java/org/spongycastle/jcajce/examples Become spongy with become-spongy.sh Aug 20, 2016
pg Become spongy with become-spongy.sh Aug 20, 2016
pkix Become spongy with become-spongy.sh Aug 20, 2016
prov Disable test that attempts to deserialise org.bouncycastle class Aug 20, 2016
scripts update Aug 17, 2016
.gitattributes Add *.tmpl as text Mar 8, 2015
.gitignore Git-ignore files generated during Gradle build Aug 20, 2016
.travis.yml Add travis-ci, hopefully without spamming the BC folks Aug 20, 2016
CONTRIBUTORS.html BJA-615 added up to millisecond precision to time-stamps. Aug 17, 2016
LICENSE.html Update LICENSE for 2015 Feb 8, 2015
README.md Initial README.md Nov 8, 2015
bc-build.properties updated version Aug 17, 2016
build.gradle Gradle: Set project version Aug 20, 2016
build1-1 compatibility changes Dec 29, 2015
build1-2 BJA-615 added up to millisecond precision to time-stamps. Aug 17, 2016
build1-3 compatibility updates Jul 21, 2014
build1-4 updates Dec 3, 2013
build15+ update May 25, 2014
buildj2me j2me updates Dec 29, 2015
index.html fixed class cast issue in CertPathValidatorUtilities. Mar 1, 2015
settings.gradle Gradle: Remove mail the easiest way... Aug 20, 2016


The Bouncy Castle Crypto Package For Java

The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms, it was developed by the Legion of the Bouncy Castle, a registered Australian Charity, with a little help! The Legion, and the latest goings on with this package, can be found at http://www.bouncycastle.org.

The Legion also gratefully acknowledges the contributions made to this package by others (see here for the current list). If you would like to contribute to our efforts please feel free to get in touch with us or visit our donations page, sponsor some specific work, or purchase a support contract through Crypto Workshop.

The package is organised so that it contains a light-weight API suitable for use in any environment (including the newly released J2ME) with the additional infrastructure to conform the algorithms to the JCE framework.

Except where otherwise stated, this software is distributed under a license based on the MIT X Consortium license. To view the license, see here. The OpenPGP library also includes a modified BZIP2 library which is licensed under the Apache Software License, Version 2.0.

Note: this source tree is not the FIPS version of the APIs - if you are interested in our FIPS version please contact us directly at office@bouncycastle.org.

Code Organisation

The clean room JCE, for use with JDK 1.1 to JDK 1.3 is in the jce/src/main/java directory.

The core module provides all the functionality in the ligthweight APIs.

The prov module provides all the JCA/JCE provider functionality.

The pkix module is the home for code for X.509 certificate generation and the APIs for standards that rely on ASN.1 such as CMS, TSP, PKCS#12, OCSP, CRMF, and CMP.

The mail module provides an S/MIME API built on top of CMS.

The pg module is the home for code used to support OpenPGP.

The build scripts that come with the full distribution allow creation of the different releases by using the different source trees while excluding classes that are not appropriate and copying in the required compatibility classes from the directories containing compatibility classes appropriate for the distribution.

If you want to try create a build for yourself, using your own environment, the best way to do it is to start with the build for the distribution you are interested in, make sure that builds, and then modify your build scripts to do the required exclusions and file copies for your setup, otherwise you are likely to get class not found exceptions. The final caveat to this is that as the j2me distribution includes some compatibility classes starting in the java package, you need to use an obfuscator to change the package names before attempting to import a midlet using the BC API.

Examples and Tests

To view some examples, look at the test programs in the packages:

  • org.bouncycastle.crypto.test

  • org.bouncycastle.jce.provider.test

  • org.bouncycastle.cms.test

  • org.bouncycastle.mail.smime.test

  • org.bouncycastle.openpgp.test

  • org.bouncycastle.tsp.test

There are also some specific example programs for dealing with SMIME and OpenPGP. They can be found in:

  • org.bouncycastle.mail.smime.examples

  • org.bouncycastle.openpgp.examples

Mailing Lists

For those who are interested, there are 2 mailing lists for participation in this project. To subscribe use the links below and include the word subscribe in the message body. (To unsubscribe, replace subscribe with unsubscribe in the message body)

NOTE:You need to be subscribed to send mail to the above mailing list.


If you want to provide feedback directly to the members of The Legion then please use feedback-crypto@bouncycastle.org, if you want to help this project survive please consider donating.

For bug reporting/requests you can report issues here on github, via feedback-crypto if required, and we also have a Jira issue tracker. We will accept pull requests based on this repository as well.