Adjust graph details, add some more detail to the backends section.
This commit is contained in:
parent
0cdf5ce2a4
commit
4ba7a4707f
1 changed files with 20 additions and 12 deletions
32
README.md
32
README.md
|
@ -30,12 +30,12 @@ The project consists of the following crates:
|
||||||
graph BT
|
graph BT
|
||||||
OP["openpgp-card-pcsc <br/> (pcsclite backend)"] --> OC
|
OP["openpgp-card-pcsc <br/> (pcsclite backend)"] --> OC
|
||||||
OS["openpgp-card-scdc <br/> (scdaemon backend)"] --> OC["openpgp-card <br/> (low level API)"]
|
OS["openpgp-card-scdc <br/> (scdaemon backend)"] --> OC["openpgp-card <br/> (low level API)"]
|
||||||
OC --> OCS["openpgp-card-sequoia <br/> (high level, sequoia based API)"]
|
OC --> OCS["openpgp-card-sequoia <br/> (high level Sequoia PGP-based API)"]
|
||||||
OC -.-> U1[non-sequoia/low level user application]
|
OC -.-> U2[applications using low level API]
|
||||||
OCS -.-> U2[sequoia-based user application]
|
OCS -.-> U3[Sequoia PGP-based applications]
|
||||||
|
|
||||||
classDef userApp stroke-dasharray: 5 5;
|
classDef userApp fill:#f8f8f8,stroke-dasharray: 5 5;
|
||||||
class U1,U2 userApp;
|
class U1,U2,U3 userApp;
|
||||||
```
|
```
|
||||||
|
|
||||||
### The openpgp-card crate
|
### The openpgp-card crate
|
||||||
|
@ -45,18 +45,26 @@ offering an API at roughly the level of abstraction of that specification,
|
||||||
using Rust data structures.
|
using Rust data structures.
|
||||||
(However, this crate may work around some minor quirks of specific card
|
(However, this crate may work around some minor quirks of specific card
|
||||||
models, in order to offer clients a somewhat uniform view)
|
models, in order to offer clients a somewhat uniform view)
|
||||||
This crate and its API do not depend or rely on an OpenPGP implementation.
|
|
||||||
|
This crate and its API do not depend or rely on any particular OpenPGP
|
||||||
|
implementation.
|
||||||
|
|
||||||
### Backends
|
### Backends
|
||||||
|
|
||||||
Implement:
|
Typically, `openpgp-card` will be used with the `openpgp-card-pcsc` backend,
|
||||||
|
which uses the standard pcsclite library to communicate with cards.
|
||||||
|
However, alternative backends can be used and may be useful.
|
||||||
|
The experimental, alternative `openpgp-card-scdc` backend uses scdaemon from
|
||||||
|
the GnuPG project as a low-level transport layer to interact with OpenPGP
|
||||||
|
cards.
|
||||||
|
|
||||||
- functionality to find and connect to a card (these
|
Backends implement:
|
||||||
operations may vary significantly between different backends), and
|
|
||||||
|
|
||||||
- a very simple communication primitive, by implementing the
|
1) functionality to find and connect to a card (these operations may vary
|
||||||
`CardClient` trait:
|
significantly between different backends), and
|
||||||
sending individual APDU commands and receiving responses.
|
|
||||||
|
2) a very simple communication primitive, by implementing the `CardClient`
|
||||||
|
trait, to send individual APDU commands and receive responses.
|
||||||
|
|
||||||
All higher level and/or OpenPGP card-specific logic (including command
|
All higher level and/or OpenPGP card-specific logic (including command
|
||||||
chaining) is handled in the `openpgp-card` layer.
|
chaining) is handled in the `openpgp-card` layer.
|
||||||
|
|
Loading…
Reference in a new issue