Simple to use OpenPGP API based on Bouncycastle


View the Project on GitHub

PGPainless is a wrapper around Bouncycastle, which provides an easy to use, intuitive, but also powerful API for OpenPGP. Its main functionality is encrypting, signing, decrypting and verifying data, as well as generating encryption keys.

Note, that the project is still in alpha phase.


PGPainless was created during a Google Summer of Code project, for which an easy to use OpenPGP API for Java and Android was needed. Originally the author looked into forking bouncy-gpg, but since support for lower Android versions was a requirement, PGPainless was born as an independent project. The library is however heavily influenced by bouncy-gpg written by Jens Neuhalje.

Easy to use API

One main focus of the project is ease of use. Using Bouncycastle can be a hassle, since simple tasks require a substantial amount of boilerplate code and small mistakes are easily made. PGPainless aims at providing a simple interface to get the job done quickly, while not trading away functionality.

For examples about how to use the API, see the projects readme.

Android Support

PGPainless is designed to work on Android versions down to API level 9 (Gingerbread). This makes PGPainless a good choice for implementing OpenPGP encryption in your Android app.

Compatibility with certain Android APIs is ensured through Animalsniffer.


PGPainless is released on the maven central repository. Including it in your project is simple:




repositories {

dependencies {
	compile 'org.pgpainless:pgpainless-core:0.0.1-alpha7'

There are also snapshot releases available.


PGPainless is currently developed by @vanitasvitae.


Contributions are always welcome :) The project is developed in the following places:

Pull requests are accepted on either of them.

Bug Reports

PGPainless is in a very early state of development and the likelihood of bugs is quite high. If you encounter a bug, please make sure to check, whether the bug has already been reported either here, or here, in order to avoid duplicate bug reports.