diff --git a/README.md b/README.md index 1b5d3ae..c0ab32e 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,8 @@ standard, in Rust. ## Architecture -The project consists of the following crates: +This project consists of the following library crates: + - [openpgp-card](https://crates.io/crates/openpgp-card), which offers a relatively low level OpenPGP card client API. It is PGP implementation agnostic. @@ -23,21 +24,32 @@ The project consists of the following crates: - [openpgp-card-sequoia](https://crates.io/crates/openpgp-card-sequoia), a higher level API for conveniently using openpgp-card with [Sequoia PGP](https://sequoia-pgp.org/). -- [openpgp-card-tests](https://gitlab.com/hkos/openpgp-card/-/tree/main/card-functionality), - a testsuite to run OpenPGP card operations on smartcards. + +This is how the libraries relate to each other (and to applications): ```mermaid graph BT OP["openpgp-card-pcsc
(pcsclite backend)"] --> OC OS["openpgp-card-scdc
(scdaemon backend)"] --> OC["openpgp-card
(low level API)"] OC --> OCS["openpgp-card-sequoia
(high level Sequoia PGP-based API)"] - OC -.-> U2[applications using low level API] - OCS -.-> U3[Sequoia PGP-based applications] + OC -.-> U1[Applications based on low level API] + OCS -.-> U2[Sequoia PGP-based applications] classDef userApp fill:#f8f8f8,stroke-dasharray: 5 5; -class U1,U2,U3 userApp; +class U1,U2 userApp; ``` +Additionally, there are the following non-library crates that are built on +top of the libraries described above: + +- [openpgp-card-tools](https://crates.io/crates/openpgp-card-sequoia), + two CLI tools aimed at end users, to manage and use OpenPGP cards. +- [openpgp-card-tests](https://gitlab.com/hkos/openpgp-card/-/tree/main/card-functionality), + a test-suite that runs OpenPGP card operations on smartcards. +- [openpgp-card-examples](https://gitlab.com/hkos/openpgp-card/-/tree/main/card-examples), + small example applications that demonstrate how you can use these + libraries in your own projects to access OpenPGP card functionality. + ### The openpgp-card crate Implements the functionality described in the OpenPGP card specification,