A Rust implementation of the Coinkite Tap Protocol (cktap) for use with SATSCARD, TAPSIGNER, and SATSCHIP products.
This project provides PC/SC APDU message encoding and decoding, cvc authentication, certificate chain verification, and card response verification.
It is up to the crate user to send and receive the raw cktap APDU messages via NFC to the card by implementing the CkTransport
trait. An example implementation is provided using the optional rust pcsc
crate. Mobile users are expected to implement CkTransport
using the iOS or Android provided libraries.
- status
- read (messages)
- response verification
- derive (messages)
- response verification
- certs
- new
- nfc
- sign (messages)
- response verification
- wait
- Install dependencies for cktap emulator
- run tests with emulator:
just test
- USB PCSC NFC card reader, for example:
- Coinkite SATSCARD, TAPSIGNER, or SATSCHIP cards Install vendor PCSC driver
- Connect NFC reader to desktop system
- Place SATSCARD, TAPSIGNER, or SATSCHIP on reader
cargo run -p cktap-cli -- --help
cargo run -p cktap-cli -- certs
cargo run -p cktap-cli -- read
This library should always compile with any valid combination of features on Rust 1.85.0.
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.