Skip to content

Latest commit

 

History

History
60 lines (40 loc) · 1.32 KB

README.md

File metadata and controls

60 lines (40 loc) · 1.32 KB

Go Smart Card API

High level API for smart card integration written in pure Go. On Linx and other Unix-like systems, this package talks directly to the PCSC-Lite daemon, and on Windows it accesses the smart card service via winscard.dll.

Note: macOS isn't and won't be supported, because its modified PCSC-Lite variant can't be accessed without cgo. PCSC-Lite will most likely be (already is?) deprecated in favour of CryptoTokenKit.

Prerequisites

Linux

Install the PCSC-Lite daemon and CCID driver.

Ubuntu:

sudo apt-get install pcscd libccid

Arch Linux:

sudo pacman -S pcsclite ccid
sudo systemctl enable pcscd

Windows

None

Installation

go get github.com/deeper-x/gopcsc/smartcard

Usage

ctx, err := smartcard.EstablishContext()
// handle error, if any
defer ctx.Release()

reader, err := ctx.WaitForCardPresent()
// handle error, if any

card, err := reader.Connect()
// handle error, if any
defer card.Disconnect()

fmt.Printf("Card ATR: %s\n", card.ATR()) 
command := SelectCommand(0xa0, 0x00, 0x00, 0x00, 0x62, 0x03, 0x01, 0xc, 0x01, 0x01)
response, err := card.TransmitAPDU(command)
// handle error, if any
fmt.Printf("Response: %s\n", response)

License

MIT. See LICENSE