An OpenPGP certificate store abstraction and implementation. This crates provides a unified, high-level API for different certificate stores via the `Store` and `StoreUpdate` traits. It also provides a number of helper functions and data structures, like `UserIDIndex` to help implement this functionality. Finally, the `CertStore` data structure combines multiple certificate backends in a transparent way to users. This crate supports multiple backends: `CertD` uses an [OpenPGP Certificate Directory]. `Certs` manages a bunch of certificates in-memory. It can be loaded with certificates from a keyring, a keybox, a database, etc. It can also be used as the basis for a new backend, which actually writes changes back to the underlying store. `Pep` provides access to a [pEp] certificate store. Finally, there is a key server backend, which can fetch certificates via HKPS and WKD. [OpenPGP Certificate Directory]: https://crates.io/crates/openpgp-cert-d [pEp]: https://gitea.pep.foundation/pEp.foundation/pEpEngine ## Usage To use `sequoia-cert-store` from your project, you should add the following to your crate's `Cargo.toml`: ```toml [dependencies] sequoia-cert-store = "0.3" sequoia-openpgp = { version = "1.0.0", default-features = false } ``` To compile your crate you would then run: ``` $ cargo build --release --features sequoia-openpgp/crypto-default $ cargo test --features sequoia-openpgp/crypto-default $ cargo doc --no-deps --features sequoia-openpgp/crypto-default ``` If you do not disable the use of `sequoia-openpgp`'s default features, then `sequoia-openpgp` will select the default cryptographic backend, and your users won't be able to easily compile your crate with a different cryptographic backend. `sequoia-openpgp` currently uses Nettle as its default cryptographic backend. `sequoia-openpgp` also supports OpenSSL (`sequoia-openpgp/crypto-openssl`), Botan (`sequoia-openpgp/crypto-botan`), Windows CNG (`sequoia-openpgp/crypto-cng`), Rust Crypto (`sequoia-openpgp/crypto-rust`). For more information about building `sequoia-openpgp`, please refer to [`sequoia-openpgp`'s README]. This also includes information about the different backends' [build requirements]. [`sequoia-openpgp`'s README]: https://gitlab.com/sequoia-pgp/sequoia#features [build requirements]: https://gitlab.com/sequoia-pgp/sequoia#building-sequoia # License sequoia-cert-store is distributed under the terms of LGPL 2.0 or later. See [LICENSE.txt](LICENSE.txt) and [CONTRIBUTING.md](CONTRIBUTING.md) for details.