Simple to use OpenPGP API based on Bouncy Castle


View the Project on GitHub


Spec Revision: 10 Maven Central javadoc

Implementation of the Stateless OpenPGP Protocol using PGPainless.

This module implements sop-java using pgpainless-core. If your code depends on sop-java, this module can be used as a realization of those interfaces.

Get started

To start using pgpainless-sop in your code, include the following lines in your build script:

// If you use Gradle
dependencies {
    implementation "org.pgpainless:pgpainless-sop:1.6.6"

// If you use Maven

pgpainless-sop will transitively pull in its dependencies, such as sop-java and pgpainless-core.

Usage Examples

SOP sop = new SOPImpl();
// Generate an OpenPGP key
byte[] key = sop.generateKey()
        .userId("Alice <alice@example.org>")

// Extract the certificate (public key)
byte[] cert = sop.extractCert()

// Encrypt a message
byte[] message = ...
byte[] encrypted = sop.encrypt()

// Decrypt a message
ByteArrayAndResult<DecryptionResult> messageAndVerifications = sop.decrypt()
byte[] decrypted = messageAndVerifications.getBytes();
// Signature Verifications
DecryptionResult messageInfo = messageAndVerifications.getResult();
List<Verification> signatureVerifications = messageInfo.getVerifications();