README
This commit is contained in:
parent
0e89c4baa6
commit
fac3ac6468
1 changed files with 20 additions and 16 deletions
36
README.md
36
README.md
|
@ -1,5 +1,5 @@
|
||||||
<!--
|
<!--
|
||||||
SPDX-FileCopyrightText: 2021 Heiko Schaefer <heiko@schaefer.name>
|
SPDX-FileCopyrightText: 2021-2023 Heiko Schaefer <heiko@schaefer.name>
|
||||||
SPDX-License-Identifier: MIT OR Apache-2.0
|
SPDX-License-Identifier: MIT OR Apache-2.0
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
@ -12,13 +12,15 @@ standard, in Rust.
|
||||||
This project consists of the following library crates:
|
This project consists of the following library crates:
|
||||||
|
|
||||||
- [openpgp-card](https://crates.io/crates/openpgp-card), which offers a
|
- [openpgp-card](https://crates.io/crates/openpgp-card), which offers a
|
||||||
relatively low level OpenPGP card client API.
|
relatively low-level OpenPGP card client API.
|
||||||
It is PGP implementation agnostic.
|
It is PGP implementation agnostic.
|
||||||
- [openpgp-card-pcsc](https://crates.io/crates/openpgp-card-pcsc),
|
- [card-backend](https://crates.io/crates/card-backend),
|
||||||
a backend to communicate with smartcards via
|
a shared trait for Smart Card backends
|
||||||
|
- [card-backend-pcsc](https://crates.io/crates/card-backend-pcsc),
|
||||||
|
a backend implementation to communicate with smartcards via
|
||||||
[pcsc](https://pcsclite.apdu.fr/).
|
[pcsc](https://pcsclite.apdu.fr/).
|
||||||
- [openpgp-card-scdc](https://crates.io/crates/openpgp-card-scdc),
|
- [card-backend-scdc](https://crates.io/crates/card-backend-scdc),
|
||||||
a backend to communicate with smartcards via an
|
a backend implementation to communicate with smartcards via an
|
||||||
[scdaemon](https://www.gnupg.org/documentation/manuals/gnupg/Invoking-SCDAEMON.html#Invoking-SCDAEMON)
|
[scdaemon](https://www.gnupg.org/documentation/manuals/gnupg/Invoking-SCDAEMON.html#Invoking-SCDAEMON)
|
||||||
instance.
|
instance.
|
||||||
- [openpgp-card-sequoia](https://crates.io/crates/openpgp-card-sequoia),
|
- [openpgp-card-sequoia](https://crates.io/crates/openpgp-card-sequoia),
|
||||||
|
@ -29,8 +31,10 @@ This is how the libraries relate to each other (and to applications):
|
||||||
|
|
||||||
```mermaid
|
```mermaid
|
||||||
graph BT
|
graph BT
|
||||||
OP["openpgp-card-pcsc <br/> (pcsclite backend)"] --> OC
|
CB["card-backend <br/> (shared trait)"] --> OP
|
||||||
OS["openpgp-card-scdc <br/> (scdaemon backend)"] --> OC["openpgp-card <br/> (low level API)"]
|
CB --> OS
|
||||||
|
OP["card-backend-pcsc <br/> (pcsclite backend)"] --> OC
|
||||||
|
OS["card-backend-scdc <br/> (scdaemon backend)"] --> OC["openpgp-card <br/> (low level API)"]
|
||||||
OC --> OCS["openpgp-card-sequoia <br/> (high level Sequoia PGP-based API)"]
|
OC --> OCS["openpgp-card-sequoia <br/> (high level Sequoia PGP-based API)"]
|
||||||
OC -.-> U1[Applications based on low level API]
|
OC -.-> U1[Applications based on low level API]
|
||||||
OCS -.-> U2[Sequoia PGP-based applications]
|
OCS -.-> U2[Sequoia PGP-based applications]
|
||||||
|
@ -43,9 +47,9 @@ Additionally, there are the following non-library crates that are built on
|
||||||
top of the libraries described above:
|
top of the libraries described above:
|
||||||
|
|
||||||
- [openpgp-card-tools](https://crates.io/crates/openpgp-card-sequoia),
|
- [openpgp-card-tools](https://crates.io/crates/openpgp-card-sequoia),
|
||||||
a CLI tool to inspect, manage and use OpenPGP cards, aimed at end users.
|
the `opgpcard` CLI tool to inspect, manage and use OpenPGP cards, aimed at end users.
|
||||||
- [openpgp-card-tests](https://gitlab.com/openpgp-card/openpgp-card/-/tree/main/card-functionality),
|
- [openpgp-card-tests](https://gitlab.com/openpgp-card/openpgp-card/-/tree/main/card-functionality),
|
||||||
a test-suite that runs OpenPGP card operations on smartcards.
|
a test-suite that runs OpenPGP card operations on Smart Cards.
|
||||||
- [openpgp-card-examples](https://gitlab.com/openpgp-card/openpgp-card/-/tree/main/card-examples),
|
- [openpgp-card-examples](https://gitlab.com/openpgp-card/openpgp-card/-/tree/main/card-examples),
|
||||||
small example applications that demonstrate how you can use these
|
small example applications that demonstrate how you can use these
|
||||||
libraries in your own projects to access OpenPGP card functionality.
|
libraries in your own projects to access OpenPGP card functionality.
|
||||||
|
@ -63,11 +67,11 @@ implementation.
|
||||||
|
|
||||||
### Backends
|
### Backends
|
||||||
|
|
||||||
Typically, `openpgp-card` will be used with the `openpgp-card-pcsc` backend,
|
Typically, `openpgp-card` will be used with the `card-backend-pcsc` backend,
|
||||||
which uses the standard pcsclite library to communicate with cards.
|
which uses the standard pcsc-lite library to communicate with cards.
|
||||||
|
|
||||||
However, alternative backends can be used and may be useful.
|
However, alternative backends can be used and may be useful.
|
||||||
The experimental, alternative `openpgp-card-scdc` backend uses scdaemon from
|
The experimental, alternative `card-backend-scdc` backend uses scdaemon from
|
||||||
the GnuPG project as a low-level transport layer to interact with OpenPGP
|
the GnuPG project as a low-level transport layer to interact with OpenPGP
|
||||||
cards.
|
cards.
|
||||||
|
|
||||||
|
@ -84,7 +88,7 @@ Backends implement:
|
||||||
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.
|
||||||
|
|
||||||
### The **openpgp-card-sequoia** crate
|
### The openpgp-card-sequoia crate
|
||||||
|
|
||||||
Offers a higher level interface, based around Sequoia PGP datastructures.
|
Offers a higher level interface, based around Sequoia PGP datastructures.
|
||||||
|
|
||||||
|
@ -100,8 +104,8 @@ library against OpenPGP cards.
|
||||||
However, OpenPGP cards are, usually, physical devices that you plug into your
|
However, OpenPGP cards are, usually, physical devices that you plug into your
|
||||||
computer, e.g. as USB sticks, or Smart cards (this is, of course, the usual
|
computer, e.g. as USB sticks, or Smart cards (this is, of course, the usual
|
||||||
point of these cards: they are independent devices, which are only loosely
|
point of these cards: they are independent devices, which are only loosely
|
||||||
coupled with your regular computing environment. However, for automated
|
coupled with your regular computing environment).
|
||||||
testing, such as CI, this can be a complication.)
|
For automated testing, such as CI, this is a complication.
|
||||||
|
|
||||||
There are at least two approaches for running tests against software-based
|
There are at least two approaches for running tests against software-based
|
||||||
OpenPGP cards:
|
OpenPGP cards:
|
||||||
|
|
Loading…
Reference in a new issue