openpgp-card/README.md

2.6 KiB

OpenPGP card client library

This project implements a client library for the OpenPGP card specification, in Rust.

The project consists of a number of crates:

Architecture

graph BT
    OP["openpgp-card-pcsc <br/> (backend)"] --> OC
    OS["openpgp-card-scdc <br/> (backend)"] --> OC["openpgp-card </br> (low level API)"]
    OC --> OCS["openpgp-card-sequoia <br/> (high level, sequoia based API)"]
    OC -.-> U1[non-sequoia/low level user application]
    OCS -.-> U2[sequoia-based user application]

classDef userApp stroke-dasharray: 5 5;
class U1,U2 userApp;

The backends implement very simple transport functionality. They can send APDU commands and receive responses. All OpenPGP card-specific logic, as well as command chaining are handled in openpgp-card.

Acknowledgements

This project is based on the OpenPGP Card spec, version 3.4.1.

Other helpful resources included: