mirror of
https://github.com/pgpainless/pgpainless.git
synced 2024-09-28 18:49:56 +02:00
Add subpages
This commit is contained in:
parent
dd0dcc176d
commit
d40bd6b6d5
12
sop-java-picocli.md
Normal file
12
sop-java-picocli.md
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# SOP-Java-Picocli
|
||||||
|
|
||||||
|
`sop-java-picocli` implements a command line interface for SOP implementations.
|
||||||
|
|
||||||
|
## Backend Installation
|
||||||
|
In order to enable OpenPGP operations, you need to set an implementation of [`sop-java`](sop-java.html):
|
||||||
|
```java
|
||||||
|
// static method call prior to execution of the main method
|
||||||
|
SopCLI.setSopInstance(yourSopImpl);
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
54
sop-java.md
Normal file
54
sop-java.md
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
# SOP-Java
|
||||||
|
The [Stateless OpenPGP Protocol (SOP)](https://datatracker.ietf.org/doc/draft-dkg-openpgp-stateless-cli/) specification defines a straightforward interface for common OpenPGP operations.
|
||||||
|
The Java library `sop-java` contains abstract interfaces reproducing the SOP API. This enables tight integration of OpenPGP functionality.
|
||||||
|
|
||||||
|
The point of defining the SOP protocol as an abstract Java library is to enable consumers to decouple their application from the used OpenPGP backend.
|
||||||
|
|
||||||
|
In the example below, replacing the backend would accomplished simply by swapping out the first line.
|
||||||
|
|
||||||
|
## Usage Examples
|
||||||
|
```java
|
||||||
|
SOP sop = new FooSOP();
|
||||||
|
|
||||||
|
// Generate an OpenPGP key
|
||||||
|
// This needs to be kept secret
|
||||||
|
byte[] key = sop.generateKey()
|
||||||
|
.userId("Alice <alice@example.org>")
|
||||||
|
.generate()
|
||||||
|
.getBytes();
|
||||||
|
|
||||||
|
// Extract the certificate (public key)
|
||||||
|
// This can be published and shared with others
|
||||||
|
byte[] cert = sop.extractCert()
|
||||||
|
.key(key)
|
||||||
|
.getBytes();
|
||||||
|
|
||||||
|
// Encrypt a message
|
||||||
|
byte[] bobsCert = ...
|
||||||
|
byte[] message = ...
|
||||||
|
byte[] encrypted = sop.encrypt()
|
||||||
|
.withCert(cert)
|
||||||
|
.withCert(bobsCert)
|
||||||
|
.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();
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Known Implementations
|
||||||
|
`PGPainless` provides an implementation of the `sop-java` library, named `pgpainless-sop`. Unsurprisingly, this library makes use of `pgpainless-core` to implement `sop-java`.
|
||||||
|
|
||||||
|
## CLI
|
||||||
|
If you need a command line interface for your `sop-java` implementation, see [sop-java-picocli](sop-java-picocli.html).
|
10
sop.md
Normal file
10
sop.md
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
# Stateless OpenPGP Protocol
|
||||||
|
The [Stateless OpenPGP Protocol (SOP)](https://datatracker.ietf.org/doc/draft-dkg-openpgp-stateless-cli/) specification defines a straightforward interface for commonly used OpenPGP operations.
|
||||||
|
|
||||||
|
## Java API
|
||||||
|
While the aforementioned document specifies a command line interface, shelling out to a CLI is not an ideal way of incorporating functionality into an application.
|
||||||
|
A dedicated Java API is easier to consume and less error prone.
|
||||||
|
|
||||||
|
For that reason, `sop-java` was created as a general definition of such API. `sop-java` itself does not have any dependencies on cryptographic libraries, so it is possible to
|
||||||
|
|
||||||
|
## Command Line Application
|
Loading…
Reference in a new issue