Simple to use OpenPGP API based on Bouncy Castle
HomeImplementation 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.
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.7.2"
...
}
// If you use Maven
...
<dependencies>
...
<dependency>
<groupId>org.pgpainless</groupId>
<artifactId>pgpainless-sop</artifactId>
<version>1.7.2</version>
</dependency>
...
</dependencies>
pgpainless-sop
will transitively pull in its dependencies, such as sop-java
and pgpainless-core
.
SOP sop = new SOPImpl();
// Generate an OpenPGP key
byte[] key = sop.generateKey()
.userId("Alice <alice@example.org>")
.generate()
.getBytes();
// Extract the certificate (public key)
byte[] cert = sop.extractCert()
.key(key)
.getBytes();
// Encrypt a message
byte[] message = ...
byte[] encrypted = sop.encrypt()
.withCert(cert)
.signWith(key)
.plaintext(message)
.getBytes();
// Decrypt a message
ByteArrayAndResult<DecryptionResult> messageAndVerifications = sop.decrypt()
.verifyWith(cert)
.withKey(key)
.ciphertext(encrypted)
.toByteArrayAndResult();
byte[] decrypted = messageAndVerifications.getBytes();
// Signature Verifications
DecryptionResult messageInfo = messageAndVerifications.getResult();
List<Verification> signatureVerifications = messageInfo.getVerifications();