libwinpr-smartcard: update PCSC-WinPR instructions (WIP)
This commit is contained in:
parent
103b7d4151
commit
5db851a154
@ -341,7 +341,9 @@ else()
|
|||||||
set(X11_FEATURE_TYPE "DISABLED")
|
set(X11_FEATURE_TYPE "DISABLED")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_package(PCSCWinPR)
|
if(WITH_PCSC_WINPR)
|
||||||
|
find_package(PCSCWinPR)
|
||||||
|
endif()
|
||||||
|
|
||||||
set(X11_FEATURE_PURPOSE "X11")
|
set(X11_FEATURE_PURPOSE "X11")
|
||||||
set(X11_FEATURE_DESCRIPTION "X11 client and server")
|
set(X11_FEATURE_DESCRIPTION "X11 client and server")
|
||||||
|
@ -27,14 +27,40 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#define DISABLE_PCSC_WINPR
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PCSC-WinPR (only required for Mac OS X):
|
* PCSC-WinPR (optional for Mac OS X):
|
||||||
*
|
*
|
||||||
* PCSC-WinPR is a static build of libpcsclite with
|
* PCSC-WinPR is a static build of libpcsclite with
|
||||||
* minor modifications meant to avoid an ABI conflict.
|
* minor modifications meant to avoid an ABI conflict.
|
||||||
*
|
*
|
||||||
|
* At this point, it is only a work in progress, as I was not
|
||||||
|
* yet able to make it work properly. However, if we could make it
|
||||||
|
* work, we might be able to build against a version of pcsc-lite
|
||||||
|
* that doesn't have issues present in Apple's SmartCard Services.
|
||||||
|
*
|
||||||
|
* Patch pcsc-lite/src/PCSC/wintypes.h:
|
||||||
|
* Change "unsigned long" to "unsigned int" for
|
||||||
|
*
|
||||||
|
* typedef unsigned int ULONG;
|
||||||
|
* typedef unsigned int DWORD;
|
||||||
|
*
|
||||||
|
* This is important as ULONG and DWORD are supposed to be 32-bit,
|
||||||
|
* but unsigned long on 64-bit OS X is 64-bit, not 32-bit.
|
||||||
|
* More importantly, Apple's SmartCard Services uses unsigned int,
|
||||||
|
* while vanilla pcsc-lite still uses unsigned long.
|
||||||
|
*
|
||||||
|
* Patch pcsc-lite/src/PCSC/pcsclite.h.in:
|
||||||
|
*
|
||||||
* Add the WinPR_PCSC_* definitions that follow "#define WinPR_PCSC"
|
* Add the WinPR_PCSC_* definitions that follow "#define WinPR_PCSC"
|
||||||
* in this file to pcsc-lite/src/PCSC/winscard.h
|
* in this source file at the beginning of the pcsclite.h.in.
|
||||||
|
*
|
||||||
|
* Change "unsigned long" to "unsigned int" in the definition
|
||||||
|
* of the SCARD_IO_REQUEST structure:
|
||||||
|
*
|
||||||
|
* unsigned int dwProtocol;
|
||||||
|
* unsigned int cbPciLength;
|
||||||
*
|
*
|
||||||
* Configure pcsc-lite with the following options (Mac OS X):
|
* Configure pcsc-lite with the following options (Mac OS X):
|
||||||
*
|
*
|
||||||
@ -67,6 +93,7 @@
|
|||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
#define WinPR_PCSC
|
#define WinPR_PCSC
|
||||||
|
|
||||||
#define SCardEstablishContext WinPR_PCSC_SCardEstablishContext
|
#define SCardEstablishContext WinPR_PCSC_SCardEstablishContext
|
||||||
#define SCardReleaseContext WinPR_PCSC_SCardReleaseContext
|
#define SCardReleaseContext WinPR_PCSC_SCardReleaseContext
|
||||||
#define SCardIsValidContext WinPR_PCSC_SCardIsValidContext
|
#define SCardIsValidContext WinPR_PCSC_SCardIsValidContext
|
||||||
@ -85,7 +112,10 @@
|
|||||||
#define SCardCancel WinPR_PCSC_SCardCancel
|
#define SCardCancel WinPR_PCSC_SCardCancel
|
||||||
#define SCardGetAttrib WinPR_PCSC_SCardGetAttrib
|
#define SCardGetAttrib WinPR_PCSC_SCardGetAttrib
|
||||||
#define SCardSetAttrib WinPR_PCSC_SCardSetAttrib
|
#define SCardSetAttrib WinPR_PCSC_SCardSetAttrib
|
||||||
#define list_size WinPR_PCSC_list_size /* put this line in src/simclist.h */
|
|
||||||
|
#define g_rgSCardT0Pci WinPR_PCSC_g_rgSCardT0Pci
|
||||||
|
#define g_rgSCardT1Pci WinPR_PCSC_g_rgSCardT1Pci
|
||||||
|
#define g_rgSCardRawPci WinPR_PCSC_g_rgSCardRawPci
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef WITH_WINPR_PCSC
|
#ifdef WITH_WINPR_PCSC
|
||||||
@ -138,6 +168,10 @@ int PCSC_InitializeSCardApi_Link(void)
|
|||||||
{
|
{
|
||||||
int status = -1;
|
int status = -1;
|
||||||
|
|
||||||
|
#ifdef DISABLE_PCSC_WINPR
|
||||||
|
return -1;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef WITH_WINPR_PCSC
|
#ifdef WITH_WINPR_PCSC
|
||||||
g_PCSC_Link.pfnSCardEstablishContext = (void*) WinPR_PCSC_SCardEstablishContext;
|
g_PCSC_Link.pfnSCardEstablishContext = (void*) WinPR_PCSC_SCardEstablishContext;
|
||||||
g_PCSC_Link.pfnSCardReleaseContext = (void*) WinPR_PCSC_SCardReleaseContext;
|
g_PCSC_Link.pfnSCardReleaseContext = (void*) WinPR_PCSC_SCardReleaseContext;
|
||||||
|
@ -2157,7 +2157,7 @@ extern int PCSC_InitializeSCardApi_Link(void);
|
|||||||
|
|
||||||
int PCSC_InitializeSCardApi(void)
|
int PCSC_InitializeSCardApi(void)
|
||||||
{
|
{
|
||||||
#if 0
|
#ifndef DISABLE_PCSC_LINK
|
||||||
if (PCSC_InitializeSCardApi_Link() >= 0)
|
if (PCSC_InitializeSCardApi_Link() >= 0)
|
||||||
{
|
{
|
||||||
g_PCSC.pfnSCardEstablishContext = g_PCSC_Link.pfnSCardEstablishContext;
|
g_PCSC.pfnSCardEstablishContext = g_PCSC_Link.pfnSCardEstablishContext;
|
||||||
|
Loading…
Reference in New Issue
Block a user