Sq, Sequoia PGP's CLI, Released
sequoia-pgp.org
sequoia-pgp.org
I ask because the CLI looks fairly understandable (to a crypto-dunce like me), but the high level API in readme says:
> Please note that as of this writing the high-level API is very incomplete.
I'm also not sure what crate they refer to, because there is no `sequoia` crate on docs.rs, and their link points to the root of the repo which is a workspace without a crate. Perhaps they mean sequoia-openpgp[1], but so far that interface does not look similarly high level to that of the CLI.
Anyway, just asking because i often write apps that use signing/encryption/etc for data at rest, and Sq looks neat.
[1]: https://docs.rs/sequoia-openpgp/1.0.0/sequoia_openpgp/index....
Just because we plan to write a high-level tool, doesn't mean the low-level crate is hard to use. On the contrary, our experience is that it is pretty easy to use and actually does a good job hiding a lot of the low level details that don't need to be tweaked. For instance, I ported the pep engine from gpgme (GnuPG's high-level interface) to Sequoia's low-level interface. The initial port required about half as many lines of code.
An advantage of a open and well documented offline cryptography standard. You can do stuff like that.
I mean any implementation can handle the signing etc, as the operations are an open standard. But running the actual pgp implementation on a system you have no access to sources, can't really see the advantage of just using an old laptop to have truly airgapped system (plugging your proprietary device on a connected computer doesn't look that airgapped to me)
Edit: I was wrong - if you read below, this is clarified.
$ sq key generate -u '<alice@example.org>' --export /tmp/alice.pgp; sq inspect /tmp/alice.pgp
/tmp/alice.pgp: Transferable Secret Key.
Fingerprint: 99E2 68B5 F5A2 45E9 4A9F A1FB F10A BDD2 C1BC 2478
Public-key algo: EdDSA Edwards-curve Digital Signature Algorithm
Public-key size: 256 bits
Secret key: Unencrypted
Creation time: 2021-02-15 21:34:45 UTC
Expiration time: 2024-02-16 15:01:06 UTC (creation time + P1095DT62781S)
Key flags: certification
Subkey: E54F CB2B 4619 FDB9 680A 974C 94D7 9D77 395B 8A7C
Public-key algo: EdDSA Edwards-curve Digital Signature Algorithm
Public-key size: 256 bits
Secret key: Unencrypted
Creation time: 2021-02-15 21:34:45 UTC
Expiration time: 2024-02-16 15:01:06 UTC (creation time + P1095DT62781S)
Key flags: signing
Subkey: 62BF 9E6B C022 D3FB 681F 5279 2B09 341C EDFE 0AF9
Public-key algo: ECDH public key algorithm
Public-key size: 256 bits
Secret key: Unencrypted
Creation time: 2021-02-15 21:34:45 UTC
Expiration time: 2024-02-16 15:01:06 UTC (creation time + P1095DT62781S)
Key flags: transport encryption, data-at-rest encryption
UserID: <alice@example.org>This functionality will, of course, be added to sq (it is possible to do this using the library). We just haven't gotten to it yet. It's not that the functionality is hard to implement. But, we want to have a clean CLI, and there are many possible options. We want to expose them in a sensible way that does not overwhelm the user.
Several important components are missing including a public key store. In GnuPG, the public key store is mandatory. In our discussions with application developers, in particular, developers working on server software, this requirement was more of a hindrance than a help. Thus, in Sequoia we decided it needs to be as easy to bring your own key store (e.g., an existing database) as to use ours.
That said, on the desktop, it is quite useful to have a shared key store--you don't want to import keys into each of your OpenPGP-using applications. We hope to finish our [public key store](https://docs.sequoia-pgp.org/sequoia_store/index.html) this year along with other features that end users need and expect.