README

scard

GoDoc

Go bindings to the PC/SC API.

Installation

go get -u github.com/ebfe/scard

Bugs

- Memory layouts/GC/cgo rules needs a thorough review.

Documentation

Overview

    Package scard provides bindings to the PC/SC API.

    Example
    Output:
    
    

    Index

    Examples

    Constants

    This section is empty.

    Variables

    This section is empty.

    Functions

    func Version

    func Version() string

      Version returns the libpcsclite version string

      Types

      type Attrib

      type Attrib uint32
      const (
      	AttrVendorName           Attrib = 0x10100
      	AttrVendorIfdType        Attrib = 0x10101
      	AttrVendorIfdVersion     Attrib = 0x10102
      	AttrVendorIfdSerialNo    Attrib = 0x10103
      	AttrChannelId            Attrib = 0x20110
      	AttrAsyncProtocolTypes   Attrib = 0x30120
      	AttrDefaultClk           Attrib = 0x30121
      	AttrMaxClk               Attrib = 0x30122
      	AttrDefaultDataRate      Attrib = 0x30123
      	AttrMaxDataRate          Attrib = 0x30124
      	AttrMaxIfsd              Attrib = 0x30125
      	AttrSyncProtocolTypes    Attrib = 0x30126
      	AttrPowerMgmtSupport     Attrib = 0x40131
      	AttrUserToCardAuthDevice Attrib = 0x50140
      	AttrUserAuthInputDevice  Attrib = 0x50142
      	AttrCharacteristics      Attrib = 0x60150
      	AttrCurrentProtocolType  Attrib = 0x80201
      	AttrCurrentClk           Attrib = 0x80202
      	AttrCurrentF             Attrib = 0x80203
      	AttrCurrentD             Attrib = 0x80204
      	AttrCurrentN             Attrib = 0x80205
      	AttrCurrentW             Attrib = 0x80206
      	AttrCurrentIfsc          Attrib = 0x80207
      	AttrCurrentIfsd          Attrib = 0x80208
      	AttrCurrentBwt           Attrib = 0x80209
      	AttrCurrentCwt           Attrib = 0x8020a
      	AttrCurrentEbcEncoding   Attrib = 0x8020b
      	AttrExtendedBwt          Attrib = 0x8020c
      	AttrIccPresence          Attrib = 0x90300
      	AttrIccInterfaceStatus   Attrib = 0x90301
      	AttrCurrentIoState       Attrib = 0x90302
      	AttrAtrString            Attrib = 0x90303
      	AttrIccTypePerAtr        Attrib = 0x90304
      	AttrEscReset             Attrib = 0x7a000
      	AttrEscCancel            Attrib = 0x7a003
      	AttrEscAuthrequest       Attrib = 0x7a005
      	AttrMaxinput             Attrib = 0x7a007
      	AttrDeviceUnit           Attrib = 0x7fff0001
      	AttrDeviceInUse          Attrib = 0x7fff0002
      	AttrDeviceFriendlyName   Attrib = 0x7fff0003
      	AttrDeviceSystemName     Attrib = 0x7fff0004
      	AttrSupressT1IfsRequest  Attrib = 0x7fff0007
      )

      type Card

      type Card struct {
      	// contains filtered or unexported fields
      }

      func (*Card) ActiveProtocol

      func (card *Card) ActiveProtocol() Protocol

        the protocol being used

        func (*Card) BeginTransaction

        func (card *Card) BeginTransaction() error

          wraps SCardBeginTransaction

          func (*Card) Control

          func (card *Card) Control(ioctl uint32, in []byte) ([]byte, error)

            wraps SCardControl

            func (*Card) Disconnect

            func (card *Card) Disconnect(d Disposition) error

              wraps SCardDisconnect

              func (*Card) EndTransaction

              func (card *Card) EndTransaction(disp Disposition) error

                wraps SCardEndTransaction

                func (*Card) GetAttrib

                func (card *Card) GetAttrib(id Attrib) ([]byte, error)

                  wraps SCardGetAttrib

                  func (*Card) Reconnect

                  func (card *Card) Reconnect(mode ShareMode, proto Protocol, disp Disposition) error

                    wraps SCardReconnect

                    func (*Card) SetAttrib

                    func (card *Card) SetAttrib(id Attrib, data []byte) error

                      wraps SCardSetAttrib

                      func (*Card) Status

                      func (card *Card) Status() (*CardStatus, error)

                        wraps SCardStatus

                        func (*Card) Transmit

                        func (card *Card) Transmit(cmd []byte) ([]byte, error)

                          wraps SCardTransmit

                          type CardStatus

                          type CardStatus struct {
                          	Reader         string
                          	State          State
                          	ActiveProtocol Protocol
                          	Atr            []byte
                          }

                          type Context

                          type Context struct {
                          	// contains filtered or unexported fields
                          }

                          func EstablishContext

                          func EstablishContext() (*Context, error)

                            wraps SCardEstablishContext

                            func (*Context) Cancel

                            func (ctx *Context) Cancel() error

                              wraps SCardCancel

                              func (*Context) Connect

                              func (ctx *Context) Connect(reader string, mode ShareMode, proto Protocol) (*Card, error)

                                wraps SCardConnect

                                func (*Context) GetStatusChange

                                func (ctx *Context) GetStatusChange(readerStates []ReaderState, timeout time.Duration) error

                                  wraps SCardGetStatusChange

                                  func (*Context) IsValid

                                  func (ctx *Context) IsValid() (bool, error)

                                    wraps SCardIsValidContext

                                    func (*Context) ListReaderGroups

                                    func (ctx *Context) ListReaderGroups() ([]string, error)

                                      wraps SCardListReaderGroups

                                      func (*Context) ListReaders

                                      func (ctx *Context) ListReaders() ([]string, error)

                                        wraps SCardListReaders

                                        func (*Context) Release

                                        func (ctx *Context) Release() error

                                          wraps SCardReleaseContext

                                          type Disposition

                                          type Disposition uint32
                                          const (
                                          	LeaveCard   Disposition = 0x0
                                          	ResetCard   Disposition = 0x1
                                          	UnpowerCard Disposition = 0x2
                                          	EjectCard   Disposition = 0x3
                                          )

                                          type Error

                                          type Error uint32
                                          const (
                                          	ErrSuccess                Error = 0x0
                                          	ErrInternalError          Error = 0x80100001
                                          	ErrCancelled              Error = 0x80100002
                                          	ErrInvalidHandle          Error = 0x80100003
                                          	ErrInvalidParameter       Error = 0x80100004
                                          	ErrInvalidTarget          Error = 0x80100005
                                          	ErrNoMemory               Error = 0x80100006
                                          	ErrWaitedTooLong          Error = 0x80100007
                                          	ErrInsufficientBuffer     Error = 0x80100008
                                          	ErrUnknownReader          Error = 0x80100009
                                          	ErrTimeout                Error = 0x8010000a
                                          	ErrSharingViolation       Error = 0x8010000b
                                          	ErrNoSmartcard            Error = 0x8010000c
                                          	ErrUnknownCard            Error = 0x8010000d
                                          	ErrCantDispose            Error = 0x8010000e
                                          	ErrProtoMismatch          Error = 0x8010000f
                                          	ErrNotReady               Error = 0x80100010
                                          	ErrInvalidValue           Error = 0x80100011
                                          	ErrSystemCancelled        Error = 0x80100012
                                          	ErrCommError              Error = 0x80100013
                                          	ErrUnknownError           Error = 0x80100014
                                          	ErrInvalidAtr             Error = 0x80100015
                                          	ErrNotTransacted          Error = 0x80100016
                                          	ErrReaderUnavailable      Error = 0x80100017
                                          	ErrShutdown               Error = 0x80100018
                                          	ErrPciTooSmall            Error = 0x80100019
                                          	ErrReaderUnsupported      Error = 0x8010001a
                                          	ErrDuplicateReader        Error = 0x8010001b
                                          	ErrCardUnsupported        Error = 0x8010001c
                                          	ErrNoService              Error = 0x8010001d
                                          	ErrServiceStopped         Error = 0x8010001e
                                          	ErrUnexpected             Error = 0x8010001f
                                          	ErrUnsupportedFeature     Error = 0x8010001f
                                          	ErrIccInstallation        Error = 0x80100020
                                          	ErrIccCreateorder         Error = 0x80100021
                                          	ErrFileNotFound           Error = 0x80100024
                                          	ErrNoDir                  Error = 0x80100025
                                          	ErrNoFile                 Error = 0x80100026
                                          	ErrNoAccess               Error = 0x80100027
                                          	ErrWriteTooMany           Error = 0x80100028
                                          	ErrBadSeek                Error = 0x80100029
                                          	ErrInvalidChv             Error = 0x8010002a
                                          	ErrUnknownResMng          Error = 0x8010002b
                                          	ErrNoSuchCertificate      Error = 0x8010002c
                                          	ErrCertificateUnavailable Error = 0x8010002d
                                          	ErrNoReadersAvailable     Error = 0x8010002e
                                          	ErrCommDataLost           Error = 0x8010002f
                                          	ErrNoKeyContainer         Error = 0x80100030
                                          	ErrServerTooBusy          Error = 0x80100031
                                          	ErrUnsupportedCard        Error = 0x80100065
                                          	ErrUnresponsiveCard       Error = 0x80100066
                                          	ErrUnpoweredCard          Error = 0x80100067
                                          	ErrResetCard              Error = 0x80100068
                                          	ErrRemovedCard            Error = 0x80100069
                                          	ErrSecurityViolation      Error = 0x8010006a
                                          	ErrWrongChv               Error = 0x8010006b
                                          	ErrChvBlocked             Error = 0x8010006c
                                          	ErrEof                    Error = 0x8010006d
                                          	ErrCancelledByUser        Error = 0x8010006e
                                          	ErrCardNotAuthenticated   Error = 0x8010006f
                                          )

                                          func (Error) Error

                                          func (e Error) Error() string

                                          type Protocol

                                          type Protocol uint32
                                          const (
                                          	ProtocolUndefined Protocol = 0x0
                                          	ProtocolT0        Protocol = 0x1
                                          	ProtocolT1        Protocol = 0x2
                                          	ProtocolAny       Protocol = ProtocolT0 | ProtocolT1
                                          )

                                          type ReaderState

                                          type ReaderState struct {
                                          	Reader       string
                                          	UserData     interface{}
                                          	CurrentState StateFlag
                                          	EventState   StateFlag
                                          	Atr          []byte
                                          }

                                          type Scope

                                          type Scope uint32
                                          const (
                                          	ScopeUser     Scope = 0x0
                                          	ScopeTerminal Scope = 0x1
                                          	ScopeSystem   Scope = 0x2
                                          )

                                          type ShareMode

                                          type ShareMode uint32
                                          const (
                                          	ShareExclusive ShareMode = 0x1
                                          	ShareShared    ShareMode = 0x2
                                          	ShareDirect    ShareMode = 0x3
                                          )

                                          type State

                                          type State uint32
                                          const (
                                          	Unknown    State = 0x1
                                          	Absent     State = 0x2
                                          	Present    State = 0x4
                                          	Swallowed  State = 0x8
                                          	Powered    State = 0x10
                                          	Negotiable State = 0x20
                                          	Specific   State = 0x40
                                          )

                                          type StateFlag

                                          type StateFlag uint32
                                          const (
                                          	StateUnaware     StateFlag = 0x0
                                          	StateIgnore      StateFlag = 0x1
                                          	StateChanged     StateFlag = 0x2
                                          	StateUnknown     StateFlag = 0x4
                                          	StateUnavailable StateFlag = 0x8
                                          	StateEmpty       StateFlag = 0x10
                                          	StatePresent     StateFlag = 0x20
                                          	StateAtrmatch    StateFlag = 0x40
                                          	StateExclusive   StateFlag = 0x80
                                          	StateInuse       StateFlag = 0x100
                                          	StateMute        StateFlag = 0x200
                                          	StateUnpowered   StateFlag = 0x400
                                          )