I'm pleased to announce the first release of the Sequoia Certificate Store crate, sequoia-cert-store.
I have published sequoia-cert-store on crates.io:
You can also fetch version 0.1.0 using the v0.1.0 tag:
which I signed:
$ git verify-tag v0.1.0 gpg: Signature made Thu Mar 02 12:01:21 2023 +01:00 gpg: using RSA key C03FA6411B03AE12576461187223B56678E02528 gpg: Good signature from "Neal H. Walfield email@example.com" [ultimate] gpg: "Neal H. Walfield firstname.lastname@example.org" gpg: "Neal H. Walfield email@example.com" gpg: "Neal H. Walfield firstname.lastname@example.org" gpg: "Neal H. Walfield email@example.com"
sequoia-cert-store provides a unified, high-level API for different certificate stores via its Store and StoreUpdate traits. To lookup a certificate by fingerprint given a certificate store backend, one would do:
let cert = backend.lookup_by_cert_fpr(fingerprint)?;
Or to lookup the certificates that have a User ID where the domain is `sequoia-pgp.org`, one would do:
let certs = backend.lookup_by_email_domain("sequoia-pgp.org")?;
The crate provides a number of helper functions and data structures like UserIDIndex to help a backend implement this functionality.
This release includes three backends: a backend for OpenPGP certificate directories , a backend for certificates, e.g., as read from a keyring or other database, and a key server backend.
Finally, the crate provides the CertStore data structure, which combines multiple backends in a transparent way to its users.
Neal on behalf of the whole Sequoia PGP team