No description
Find a file
Heiko Schaefer 6583c160eb Edit comment
2021-08-28 11:58:42 +02:00
.reuse Fix reuse license information 2021-07-17 02:27:51 +02:00
card-functionality Add a CI job to run 'cargo test' with rustc/cargo from debian stable. 2021-08-27 15:15:31 +02:00
example Initial commit 2021-06-30 22:29:23 +02:00
LICENSES Initial commit 2021-06-30 22:29:23 +02:00
openpgp-card Edit comment 2021-08-28 11:58:42 +02:00
openpgp-card-sequoia Add a CI job to run 'cargo test' with rustc/cargo from debian stable. 2021-08-27 15:15:31 +02:00
pcsc Release pcsc, scdc. 2021-08-26 15:05:40 +02:00
scdc Document known limitations of scdc 2021-08-27 23:05:58 +02:00
.gitignore Move the configuration of cards for card-functionality test suite into the file config/test-cards.toml. 2021-08-04 19:15:45 +02:00
.gitlab-ci.yml Add a CI job to run 'cargo test' with rustc/cargo from debian stable. 2021-08-27 15:15:31 +02:00
.rustfmt.toml rustfmt 2021-07-01 23:46:12 +02:00
Cargo.toml Refactor: 2021-08-18 14:03:54 +02:00
README.md markdown fix 2021-08-27 22:33:19 +02:00

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/> (pcsclite backend)"] --> OC
    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 -.-> 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: