Hi everyone,
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:
https://crates.io/crates/sequoia-cert-store
You can also fetch version 0.1.0 using the v0.1.0 tag:
https://gitlab.com/sequoia-pgp/sequoia-cert-store/-/tags/v0.1.0
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 neal@walfield.org" [ultimate] gpg: "Neal H. Walfield neal@gnupg.org" gpg: "Neal H. Walfield neal@pep-project.org" gpg: "Neal H. Walfield neal@pep.foundation" gpg: "Neal H. Walfield neal@sequoia-pgp.org"
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 [1], a backend for certificates, e.g., as read from a keyring or other database, and a key server backend.
[1] https://datatracker.ietf.org/doc/draft-nwjw-openpgp-cert-d/
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
announce@lists.sequoia-pgp.org