Crates.io | rsop |
lib.rs | rsop |
version | 0.5.0 |
source | src |
created_at | 2024-02-26 13:08:48.75168 |
updated_at | 2024-12-23 21:28:13.689489 |
description | SOP CLI tool based on rPGP and rpgpie |
homepage | |
repository | https://codeberg.org/heiko/rsop |
max_upload_size | |
id | 1153634 |
size | 55,425 |
rsop
is a "Stateless OpenPGP" CLI tool. It exposes a simple, standardized CLI interface to perform a set of common OpenPGP operations.
rsop is based on a stack of rpgp and rpgpie 🦀️🔐🥧 (and the rpgpie-sop adapter library).
The sibling project rsop-oct natively supports operations using OpenPGP card devices.
The stateless OpenPGP command line interface (SOP) is an implementation-agnostic standard for handling OpenPGP messages and key material.
Stateless OpenPGP tools - such as rsop
- are well suited for use in scripting use cases.
For more background and details about SOP, see https://datatracker.ietf.org/doc/draft-dkg-openpgp-stateless-cli/.
rsop
can be built and installed from the Rust source code with cargo:
$ cargo install rsop
[..]
Alternatively, you can check for rsop in your system's packages. It is available for Arch Linux.
Once installed, you can use the rsop
binary, for example to generate a new key and issue a signature with it:
$ rsop generate-key "<alice@example.org>" > alice.pgp
$ echo "hello world" | rsop inline-sign alice.pgp
-----BEGIN PGP MESSAGE-----
xA0DAAoWRkwnBKe7uWYByxJiAGXLjm9oZWxsbyB3b3JsZArCdQQAFgoAHRYhBGdn
Wt8kdsJqcSYzsUZMJwSnu7lmBQJly45vAAoJEEZMJwSnu7lmrxYBAIlPPn7R2ScC
Qo9s06ebeI/zilJ9vNB7hi4t3Yw6oxbIAP0ddnO5tP2SJRDx+5eWd0slp3G6+AEz
FhrH5HCHKSvQAg==
=bnER
-----END PGP MESSAGE-----
Alternatively, you can run rsop
directly from this repository:
$ cargo run -- generate-key "<alice@example.org>"
[..]
As a smaller alternative to rsop
, it is possible to build the rsopv
binary. rsopv
implements the sopv Subset, which only supports OpenPGP signature verification.
The rsopv
binary can be built like this:
$ cargo build --release --no-default-features --features="cliv" --bin rsopv
rsop
is included in the OpenPGP interoperability test suite, which tests the features of implementations, adherence to expectations, as well as interoperation between a large set of implementations.
The rsop
CLI tool is built using the excellent https://crates.io/crates/sop framework. The rsop
binary is trivially derived from rpgpie-sop.
flowchart TD
RSOP["rsop <br/> (SOP CLI tool)"] --> RPIESOP
RPIESOP["rpgpie-sop <br/> (SOP interface wrapper for rpgpie)"] --> RPIE
RPIE["rpgpie <br/> (Experimental high level OpenPGP API)"] --> RPGP
RPGP["rPGP <br/> (OpenPGP implementation)"]
The (trivial) code of rsop
is CC0 licensed.
Note, however, that when building a binary package from it, the binary's license is (of course) dictated by the licenses of its dependencies.
rsop and rpgpie are currently in an experimental, early development stage and are NOT yet intended for production use.