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
.
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
None
go get github.com/deeper-x/gopcsc/smartcard
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)
MIT. See LICENSE