aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/ebfe/scard/scard_darwin.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/ebfe/scard/scard_darwin.go')
-rw-r--r--vendor/github.com/ebfe/scard/scard_darwin.go219
1 files changed, 0 insertions, 219 deletions
diff --git a/vendor/github.com/ebfe/scard/scard_darwin.go b/vendor/github.com/ebfe/scard/scard_darwin.go
deleted file mode 100644
index 83a1597b3..000000000
--- a/vendor/github.com/ebfe/scard/scard_darwin.go
+++ /dev/null
@@ -1,219 +0,0 @@
-// +build darwin
-
-package scard
-
-// #cgo LDFLAGS: -framework PCSC
-// #cgo CFLAGS: -I /usr/include
-// #include <stdlib.h>
-// #include <PCSC/winscard.h>
-// #include <PCSC/wintypes.h>
-import "C"
-
-import (
- "unsafe"
-)
-
-func (e Error) Error() string {
- return "scard: " + C.GoString(C.pcsc_stringify_error(C.int32_t(e)))
-}
-
-// Version returns the libpcsclite version string
-func Version() string {
- return C.PCSCLITE_VERSION_NUMBER
-}
-
-func scardEstablishContext(scope Scope, reserved1, reserved2 uintptr) (uintptr, Error) {
- var ctx C.SCARDCONTEXT
- r := C.SCardEstablishContext(C.uint32_t(scope), unsafe.Pointer(reserved1), unsafe.Pointer(reserved2), &ctx)
- return uintptr(ctx), Error(r)
-}
-
-func scardIsValidContext(ctx uintptr) Error {
- r := C.SCardIsValidContext(C.SCARDCONTEXT(ctx))
- return Error(r)
-}
-
-func scardCancel(ctx uintptr) Error {
- r := C.SCardCancel(C.SCARDCONTEXT(ctx))
- return Error(r)
-}
-
-func scardReleaseContext(ctx uintptr) Error {
- r := C.SCardReleaseContext(C.SCARDCONTEXT(ctx))
- return Error(r)
-}
-
-func scardListReaders(ctx uintptr, groups, buf unsafe.Pointer, bufLen uint32) (uint32, Error) {
- dwBufLen := C.uint32_t(bufLen)
- r := C.SCardListReaders(C.SCARDCONTEXT(ctx), (C.LPCSTR)(groups), (C.LPSTR)(buf), &dwBufLen)
- return uint32(dwBufLen), Error(r)
-}
-
-func scardListReaderGroups(ctx uintptr, buf unsafe.Pointer, bufLen uint32) (uint32, Error) {
- dwBufLen := C.uint32_t(bufLen)
- r := C.SCardListReaderGroups(C.SCARDCONTEXT(ctx), (C.LPSTR)(buf), &dwBufLen)
- return uint32(dwBufLen), Error(r)
-}
-
-func scardGetStatusChange(ctx uintptr, timeout uint32, states []scardReaderState) Error {
- // In darwin, the LPSCARD_READERSTATE_A has 1 byte alignment and hence
- // has no trailing padding. Go does add 3 bytes of padding (on both 32
- // and 64 bits), so we pack an array manually instead.
- const size = int(unsafe.Sizeof(states[0])) - 3
- buf := make([]byte, size*len(states))
- for i, _ := range states {
- copy(buf[i*size:(i+1)*size], (*(*[size]byte)(unsafe.Pointer(&states[i])))[:])
- }
- r := C.SCardGetStatusChange(C.SCARDCONTEXT(ctx), C.uint32_t(timeout), (C.LPSCARD_READERSTATE_A)(unsafe.Pointer(&buf[0])), C.uint32_t(len(states)))
- for i, _ := range states {
- copy((*(*[size]byte)(unsafe.Pointer(&states[i])))[:], buf[i*size:(i+1)*size])
- }
- return Error(r)
-}
-
-func scardConnect(ctx uintptr, reader unsafe.Pointer, shareMode ShareMode, proto Protocol) (uintptr, Protocol, Error) {
- var handle C.SCARDHANDLE
- var activeProto C.uint32_t
-
- r := C.SCardConnect(C.SCARDCONTEXT(ctx), C.LPCSTR(reader), C.uint32_t(shareMode), C.uint32_t(proto), &handle, &activeProto)
-
- return uintptr(handle), Protocol(activeProto), Error(r)
-}
-
-func scardDisconnect(card uintptr, d Disposition) Error {
- r := C.SCardDisconnect(C.SCARDHANDLE(card), C.uint32_t(d))
- return Error(r)
-}
-
-func scardReconnect(card uintptr, mode ShareMode, proto Protocol, disp Disposition) (Protocol, Error) {
- var activeProtocol C.uint32_t
- r := C.SCardReconnect(C.SCARDHANDLE(card), C.uint32_t(mode), C.uint32_t(proto), C.uint32_t(disp), &activeProtocol)
- return Protocol(activeProtocol), Error(r)
-}
-
-func scardBeginTransaction(card uintptr) Error {
- r := C.SCardBeginTransaction(C.SCARDHANDLE(card))
- return Error(r)
-}
-
-func scardEndTransaction(card uintptr, disp Disposition) Error {
- r := C.SCardEndTransaction(C.SCARDHANDLE(card), C.uint32_t(disp))
- return Error(r)
-}
-
-func scardCardStatus(card uintptr) (string, State, Protocol, []byte, Error) {
- var readerBuf [C.MAX_READERNAME + 1]byte
- var readerLen = C.uint32_t(len(readerBuf))
- var state, proto C.uint32_t
- var atr [maxAtrSize]byte
- var atrLen = C.uint32_t(len(atr))
-
- r := C.SCardStatus(C.SCARDHANDLE(card), (C.LPSTR)(unsafe.Pointer(&readerBuf[0])), &readerLen, &state, &proto, (*C.uchar)(&atr[0]), &atrLen)
-
- return decodestr(readerBuf[:readerLen]), State(state), Protocol(proto), atr[:atrLen], Error(r)
-}
-
-func scardTransmit(card uintptr, proto Protocol, cmd []byte, rsp []byte) (uint32, Error) {
- var sendpci C.SCARD_IO_REQUEST
- var recvpci C.SCARD_IO_REQUEST
- var rspLen = C.uint32_t(len(rsp))
-
- switch proto {
- case ProtocolT0, ProtocolT1:
- sendpci.dwProtocol = C.uint32_t(proto)
- default:
- panic("unknown protocol")
- }
- sendpci.cbPciLength = C.sizeof_SCARD_IO_REQUEST
-
- r := C.SCardTransmit(C.SCARDHANDLE(card), &sendpci, (*C.uchar)(&cmd[0]), C.uint32_t(len(cmd)), &recvpci, (*C.uchar)(&rsp[0]), &rspLen)
-
- return uint32(rspLen), Error(r)
-}
-
-func scardControl(card uintptr, ioctl uint32, in, out []byte) (uint32, Error) {
- var ptrIn unsafe.Pointer
- var outLen = C.uint32_t(len(out))
-
- if len(in) != 0 {
- ptrIn = unsafe.Pointer(&in[0])
- }
-
- r := C.SCardControl(C.SCARDHANDLE(card), C.uint32_t(ioctl), ptrIn, C.uint32_t(len(in)), unsafe.Pointer(&out[0]), C.uint32_t(len(out)), &outLen)
- return uint32(outLen), Error(r)
-}
-
-func scardGetAttrib(card uintptr, id Attrib, buf []byte) (uint32, Error) {
- var ptr *C.uint8_t
-
- if len(buf) != 0 {
- ptr = (*C.uint8_t)(&buf[0])
- }
-
- bufLen := C.uint32_t(len(buf))
- r := C.SCardGetAttrib(C.SCARDHANDLE(card), C.uint32_t(id), ptr, &bufLen)
-
- return uint32(bufLen), Error(r)
-}
-
-func scardSetAttrib(card uintptr, id Attrib, buf []byte) Error {
- r := C.SCardSetAttrib(C.SCARDHANDLE(card), C.uint32_t(id), ((*C.uint8_t)(&buf[0])), C.uint32_t(len(buf)))
- return Error(r)
-}
-
-type strbuf []byte
-
-func encodestr(s string) (strbuf, error) {
- buf := strbuf(s + "\x00")
- return buf, nil
-}
-
-func decodestr(buf strbuf) string {
- if len(buf) == 0 {
- return ""
- }
-
- if buf[len(buf)-1] == 0 {
- buf = buf[:len(buf)-1]
- }
-
- return string(buf)
-}
-
-type scardReaderState struct {
- szReader uintptr
- pvUserData uintptr
- dwCurrentState uint32
- dwEventState uint32
- cbAtr uint32
- rgbAtr [33]byte
-}
-
-var pinned = map[string]*strbuf{}
-
-func (rs *ReaderState) toSys() (scardReaderState, error) {
- var sys scardReaderState
-
- creader, err := encodestr(rs.Reader)
- if err != nil {
- return scardReaderState{}, err
- }
- pinned[rs.Reader] = &creader
- sys.szReader = uintptr(creader.ptr())
- sys.dwCurrentState = uint32(rs.CurrentState)
- sys.cbAtr = uint32(len(rs.Atr))
- for i, v := range rs.Atr {
- sys.rgbAtr[i] = byte(v)
- }
- return sys, nil
-}
-
-func (rs *ReaderState) update(sys *scardReaderState) {
- rs.EventState = StateFlag(sys.dwEventState)
- if sys.cbAtr > 0 {
- rs.Atr = make([]byte, int(sys.cbAtr))
- for i := 0; i < int(sys.cbAtr); i++ {
- rs.Atr[i] = byte(sys.rgbAtr[i])
- }
- }
-}