Skip to content
forked from sf1/go-card

PC/SC client written in Go. Currently not maintained

License

Notifications You must be signed in to change notification settings

spilikin/go-card

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This repository is currently not maintained

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

Usage

import (
    "fmt"
    "github.com/sf1/go-card/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)

License

MIT. See LICENSE

About

PC/SC client written in Go. Currently not maintained

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 100.0%