#openpgp #pgp #sop #stateless-openpgp

bin+lib sequoia-sop

An implementation of the Stateless OpenPGP Interface using Sequoia

21 releases (breaking)

0.31.0 Oct 27, 2023
0.29.0 Aug 14, 2023
0.28.0 Apr 17, 2023
0.27.3 Jan 18, 2023
0.18.0 Jul 31, 2020

#1851 in Cryptography

Download history 31/week @ 2023-10-31 9/week @ 2023-11-07 3/week @ 2023-11-14 33/week @ 2023-11-21 100/week @ 2023-11-28 24/week @ 2023-12-05 25/week @ 2023-12-12 2/week @ 2023-12-19 65/week @ 2023-12-26 1/week @ 2024-01-02 35/week @ 2024-01-16 7/week @ 2024-01-23 42/week @ 2024-01-30 2/week @ 2024-02-06 145/week @ 2024-02-13

201 downloads per month

GPL-2.0-or-later

77KB
2K SLoC

An implementation of the Stateless OpenPGP Interface using Sequoia.

This implements the Stateless OpenPGP Command Line Interface (SOP) using the Sequoia OpenPGP implementation. This crate implements the Rust SOP interface, as well as providing a command line frontend.

SOP implementations enjoy broad compatibility, see the OpenPGP interoperability test suite.

SOP cli primer

To build the cli frontend, enable the "cli" feature, e.g. using cargo build --features=cli or cargo install sequoia-sop --features=cli.

To demonstrate SOP, let's generate a key, and encrypt and decrypt a message:

$ sqop generate-key julia@example.org > julia.secret.pgp
$ sqop extract-cert < julia.secret.pgp > julia.public.pgp

First, we generate a key for julia@example.org. Next, we extract the certificate, i.e. the key without the secret key material.

$ echo "a message" | sqop encrypt julia.public.pgp > message.pgp
$ sqop decrypt julia.secret.pgp < message.pgp
a message

Here, we encrypt a message with Julia's certificate, and decrypt it with her key.

Dependencies

~10–26MB
~366K SLoC