[SmartcardServices-Changes] [90] trunk/SmartCardServices

source_changes at macosforge.org source_changes at macosforge.org
Thu Jan 7 04:38:36 PST 2010


Revision: 90
          http://trac.macosforge.org/projects/smartcardservices/changeset/90
Author:   ludovic.rousseau at gmail.com
Date:     2010-01-07 04:38:32 -0800 (Thu, 07 Jan 2010)
Log Message:
-----------
manual merge changes from releases/Apple/OSX-10.6.0

Modified Paths:
--------------
    trunk/SmartCardServices/Makefile.installPhase
    trunk/SmartCardServices/SmartCardServices.xcodeproj/project.pbxproj
    trunk/SmartCardServices/src/PCSC/hotplug.h
    trunk/SmartCardServices/src/PCSC/hotplug_macosx.cpp
    trunk/SmartCardServices/src/PCSC/ifdwrapper.c
    trunk/SmartCardServices/src/PCSC/pcscdaemon.c
    trunk/SmartCardServices/src/PCSC/pcscdmonitor.cpp
    trunk/SmartCardServices/src/PCSC/readerfactory.c
    trunk/SmartCardServices/src/PCSC/thread_macosx.c
    trunk/SmartCardServices/src/PCSC/winscard.c
    trunk/SmartCardServices/src/PCSC/winscard_clnt.c
    trunk/SmartCardServices/src/PCSC/winscard_msg.cpp
    trunk/SmartCardServices/src/PCSC/winscard_msg.h
    trunk/SmartCardServices/src/PCSC/winscard_msg_srv.c
    trunk/SmartCardServices/src/PCSC/winscard_svc.c

Added Paths:
-----------
    trunk/SmartCardServices/Info-PCSC.plist

Added: trunk/SmartCardServices/Info-PCSC.plist
===================================================================
--- trunk/SmartCardServices/Info-PCSC.plist	                        (rev 0)
+++ trunk/SmartCardServices/Info-PCSC.plist	2010-01-07 12:38:32 UTC (rev 90)
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>PCSC</string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string>com.apple.pcsc</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>7.0</string>
+	<key>CFBundleName</key>
+	<string>PCSC</string>
+	<key>CFBundlePackageType</key>
+	<string>FMWK</string>
+	<key>CFBundleShortVersionString</key>
+	<string>7.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>36160</string>
+</dict>
+</plist>

Modified: trunk/SmartCardServices/Makefile.installPhase
===================================================================
--- trunk/SmartCardServices/Makefile.installPhase	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/Makefile.installPhase	2010-01-07 12:38:32 UTC (rev 90)
@@ -30,6 +30,7 @@
 	chmod 644 $(PCSCDIR)/drivers/*.bundle/Contents/*.*
 	chmod 644 $(PCSCDIR)/drivers/*.bundle/Contents/MacOS/*
 	/usr/bin/strip -S $(PCSCDIR)/drivers/*.bundle/Contents/MacOS/*
+ifdef haveExtensions
 	mkdir -p $(EXTENSIONS_DIR)
 	chmod 755 $(DSTROOT)/System
 	chmod 755 $(DSTROOT)/System/Library
@@ -49,11 +50,12 @@
 	chmod 644 $(EXTENSIONS_DIR)/*.kext/Contents/MacOS/*
 	-chmod 644 $(EXTENSIONS_DIR)/*.kext/Contents/Resources/*.lproj/*.*
 	/usr/bin/strip -S $(EXTENSIONS_DIR)/*.kext/Contents/MacOS/*
+endif
 
 	mkdir -p $(SCRIPTS_LOCATION)
 
 	cp installPhase/scripts/sc_auth $(SCRIPTS_LOCATION)
-	chown root:admin $(SCRIPTS_LOCATION)/sc_auth
+	chown root:wheel $(SCRIPTS_LOCATION)/sc_auth
 	chmod 755 $(SCRIPTS_LOCATION)/sc_auth
 
 # Copy over man pages
@@ -69,10 +71,6 @@
 
 	rm -rf `find $(PCSCDIR)/drivers -name CVS`
 
-	mkdir -p $(PKCS11_DIR)
-	cp installPhase/PKCS11/pkcs11.shlb $(PKCS11_DIR)
-	chmod 755 $(PKCS11_DIR)/pkcs11.shlb
-
 installhdrs:
 	@echo null installhdrs.
 

Modified: trunk/SmartCardServices/SmartCardServices.xcodeproj/project.pbxproj
===================================================================
--- trunk/SmartCardServices/SmartCardServices.xcodeproj/project.pbxproj	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/SmartCardServices.xcodeproj/project.pbxproj	2010-01-07 12:38:32 UTC (rev 90)
@@ -7,22 +7,17 @@
 	objects = {
 
 /* Begin PBXAggregateTarget section */
-		F5294A510090C54E01CD285A /* World */ = {
+		5234B66B0E78286000F02D95 /* World */ = {
 			isa = PBXAggregateTarget;
-			buildConfigurationList = C27AD1F80987FCDC001272E0 /* Build configuration list for PBXAggregateTarget "World" */;
+			buildConfigurationList = 5234B6780E78286000F02D95 /* Build configuration list for PBXAggregateTarget "World" */;
 			buildPhases = (
 			);
 			dependencies = (
-				F520A5F60257B49C01D97E8A /* PBXTargetDependency */,
-				F520E3A001F6204201B94B28 /* PBXTargetDependency */,
-				F520E3A301F6204201B94B28 /* PBXTargetDependency */,
-				F511213B0272FA1C017BB957 /* PBXTargetDependency */,
-				F5448E810379FE0101B94948 /* PBXTargetDependency */,
-				F5448E820379FE0501B94948 /* PBXTargetDependency */,
-				2CBB607506CA6DDE006AA7C8 /* PBXTargetDependency */,
-				F5448E830379FE0801B94948 /* PBXTargetDependency */,
-				F5448E840379FE0C01B94948 /* PBXTargetDependency */,
-				F54DC28B0397F35F01115D8D /* PBXTargetDependency */,
+				5234B72F0E78286000F02D95 /* PBXTargetDependency */,
+				5234B7310E78286000F02D95 /* PBXTargetDependency */,
+				5234B7330E78286000F02D95 /* PBXTargetDependency */,
+				5234B7350E78286000F02D95 /* PBXTargetDependency */,
+				5234B7390E78286000F02D95 /* PBXTargetDependency */,
 			);
 			name = World;
 			productName = World;
@@ -30,467 +25,140 @@
 /* End PBXAggregateTarget section */
 
 /* Begin PBXBuildFile section */
-		1F1EAA6410230EAA008E5842 /* reader.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FBFA9591021DF2B001ACCE5 /* reader.h */; };
-		1FBFA8BE1021A563001ACCE5 /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 1FBFA8BD1021A563001ACCE5 /* error.c */; };
-		1FBFA95A1021DF2B001ACCE5 /* reader.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FBFA9591021DF2B001ACCE5 /* reader.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		2CBB606506CA69F9006AA7C8 /* GSCISPlugin.c in Sources */ = {isa = PBXBuildFile; fileRef = 2CBB606306CA69F9006AA7C8 /* GSCISPlugin.c */; };
-		2CBB606606CA69F9006AA7C8 /* GSCISPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CBB606406CA69F9006AA7C8 /* GSCISPlugin.h */; };
-		2CC9AB8406CC02F30048A811 /* PCSC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5448E630379F08001B94948 /* PCSC.framework */; };
-		5236DD1F0B9DDBD7007CEF56 /* readerstate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5236DD1D0B9DDBD7007CEF56 /* readerstate.h */; };
-		527CF60E0AA5192B007589FF /* pcscdmonitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 527CF60A0AA5192B007589FF /* pcscdmonitor.cpp */; };
-		527CF60F0AA5192B007589FF /* pcscdmonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 527CF60B0AA5192B007589FF /* pcscdmonitor.h */; };
-		527CF6100AA5192B007589FF /* pcscdserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 527CF60C0AA5192B007589FF /* pcscdserver.cpp */; };
-		527CF6110AA5192B007589FF /* pcscdserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 527CF60D0AA5192B007589FF /* pcscdserver.h */; };
-		528629490A87EA8E004FE8DC /* hotplug_macosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5286293C0A87EA8E004FE8DC /* hotplug_macosx.cpp */; };
-		5286294A0A87EA8E004FE8DC /* PCSCDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5286293D0A87EA8E004FE8DC /* PCSCDevice.cpp */; };
-		5286294B0A87EA8E004FE8DC /* PCSCDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 5286293E0A87EA8E004FE8DC /* PCSCDevice.h */; };
-		5286294C0A87EA8E004FE8DC /* PCSCDriverBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5286293F0A87EA8E004FE8DC /* PCSCDriverBundle.cpp */; };
-		5286294D0A87EA8E004FE8DC /* PCSCDriverBundle.h in Headers */ = {isa = PBXBuildFile; fileRef = 528629400A87EA8E004FE8DC /* PCSCDriverBundle.h */; };
-		5286294E0A87EA8E004FE8DC /* PCSCDriverBundles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 528629410A87EA8E004FE8DC /* PCSCDriverBundles.cpp */; };
-		5286294F0A87EA8E004FE8DC /* PCSCDriverBundles.h in Headers */ = {isa = PBXBuildFile; fileRef = 528629420A87EA8E004FE8DC /* PCSCDriverBundles.h */; };
-		52C3C1480BA5D46900436862 /* readerstate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5236DD1C0B9DDBD7007CEF56 /* readerstate.cpp */; };
-		52C3C14D0BA5D54100436862 /* readerstate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5236DD1C0B9DDBD7007CEF56 /* readerstate.cpp */; };
-		52C85D900B9FA79F002DA856 /* security_utilities.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D58C080A87FEA000DC3F19 /* security_utilities.framework */; };
-		52D00D1C0A9252350093277A /* pcscd_reader.cpp in Headers */ = {isa = PBXBuildFile; fileRef = 52D00D1A0A9252350093277A /* pcscd_reader.cpp */; };
-		52D00D1D0A9252350093277A /* pcscd_reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52D00D1B0A9252350093277A /* pcscd_reader.cpp */; };
-		52D2492D0BA07E1100F9827A /* winscard_msg_srv.c in Sources */ = {isa = PBXBuildFile; fileRef = 52D2492C0BA07E1100F9827A /* winscard_msg_srv.c */; };
-		52D58C090A87FEA000DC3F19 /* security_utilities.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D58C080A87FEA000DC3F19 /* security_utilities.framework */; };
-		52D58C560A8803A800DC3F19 /* thread_macosx.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94A60254242101B94B21 /* thread_macosx.c */; };
-		52DBCAAF0BB851C8007D06A5 /* PCSC.exp in Sources */ = {isa = PBXBuildFile; fileRef = 52DBCAAE0BB851C8007D06A5 /* PCSC.exp */; };
-		52E0D59E0BA7006D008DFDDF /* winscard.c in Sources */ = {isa = PBXBuildFile; fileRef = 52E0D59D0BA7006D008DFDDF /* winscard.c */; };
-		C2F2094B0662B851001DFD06 /* sys_macosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C2F2094A0662B851001DFD06 /* sys_macosx.cpp */; };
-		F503CACF025425E601B94B21 /* testpcsc.c in Sources */ = {isa = PBXBuildFile; fileRef = F503CACD025425E601B94B21 /* testpcsc.c */; };
-		F503CADD025428F601B94B21 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F503CADB025428F601B94B21 /* CoreFoundation.framework */; };
-		F503CADE025428F601B94B21 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F503CADC025428F601B94B21 /* IOKit.framework */; };
-		F503CAE00254294101B94B21 /* libl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F503CADF0254294101B94B21 /* libl.a */; };
-		F503CAE402542A9201B94B21 /* wintypes.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94AD0254242101B94B21 /* wintypes.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		F503CAE502542A9201B94B21 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F503CADB025428F601B94B21 /* CoreFoundation.framework */; };
-		F511212D0272F8D9017BB957 /* bundleTool.c in Sources */ = {isa = PBXBuildFile; fileRef = F511212C0272F8D9017BB957 /* bundleTool.c */; };
-		F52A94520254232701B94B21 /* atrhandler.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94510254232701B94B21 /* atrhandler.c */; };
-		F52A94AE0254242101B94B21 /* atrhandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A948F0254242101B94B21 /* atrhandler.h */; };
-		F52A94AF0254242101B94B21 /* configfile.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94910254242101B94B21 /* configfile.h */; };
-		F52A94B00254242101B94B21 /* debuglog.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94930254242101B94B21 /* debuglog.h */; };
-		F52A94B10254242101B94B21 /* dyn_generic.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94940254242101B94B21 /* dyn_generic.h */; };
-		F52A94B20254242101B94B21 /* eventhandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94970254242101B94B21 /* eventhandler.h */; };
-		F52A94B30254242101B94B21 /* hotplug.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94990254242101B94B21 /* hotplug.h */; };
-		F52A94B40254242101B94B21 /* ifdhandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A949A0254242101B94B21 /* ifdhandler.h */; };
-		F52A94B50254242101B94B21 /* ifdwrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A949C0254242101B94B21 /* ifdwrapper.h */; };
-		F52A94B60254242101B94B21 /* pcsclite.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A949E0254242101B94B21 /* pcsclite.h */; };
-		F52A94B70254242101B94B21 /* prothandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94A00254242101B94B21 /* prothandler.h */; };
-		F52A94B80254242101B94B21 /* readerfactory.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94A20254242101B94B21 /* readerfactory.h */; };
-		F52A94B90254242101B94B21 /* sys_generic.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94A30254242101B94B21 /* sys_generic.h */; };
-		F52A94BA0254242101B94B21 /* thread_generic.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94A50254242101B94B21 /* thread_generic.h */; };
-		F52A94BB0254242101B94B21 /* winscard_msg.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94A80254242101B94B21 /* winscard_msg.h */; };
-		F52A94BC0254242101B94B21 /* winscard_svc.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94AA0254242101B94B21 /* winscard_svc.h */; };
-		F52A94BD0254242101B94B21 /* winscard.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94AC0254242101B94B21 /* winscard.h */; };
-		F52A94BE0254242101B94B21 /* wintypes.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94AD0254242101B94B21 /* wintypes.h */; };
-		F52A94BF0254242101B94B21 /* configfile.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94900254242101B94B21 /* configfile.c */; settings = {COMPILER_FLAGS = "-DYY_NO_UNPUT"; }; };
-		F52A94C00254242101B94B21 /* debuglog.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94920254242101B94B21 /* debuglog.c */; };
-		F52A94C10254242101B94B21 /* dyn_macosx.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94950254242101B94B21 /* dyn_macosx.c */; };
-		F52A94C20254242101B94B21 /* eventhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F52A94960254242101B94B21 /* eventhandler.cpp */; };
-		F52A94C40254242101B94B21 /* ifdwrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A949B0254242101B94B21 /* ifdwrapper.c */; };
-		F52A94C50254242101B94B21 /* pcscdaemon.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A949D0254242101B94B21 /* pcscdaemon.c */; };
-		F52A94C60254242101B94B21 /* prothandler.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A949F0254242101B94B21 /* prothandler.c */; };
-		F52A94C70254242101B94B21 /* readerfactory.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94A10254242101B94B21 /* readerfactory.c */; };
-		F52A94C90254242101B94B21 /* thread_macosx.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94A60254242101B94B21 /* thread_macosx.c */; };
-		F52A94CA0254242101B94B21 /* winscard_msg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F52A94A70254242101B94B21 /* winscard_msg.cpp */; };
-		F52A94CB0254242101B94B21 /* winscard_svc.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94A90254242101B94B21 /* winscard_svc.c */; };
-		F52A94D5025424AC01B94B21 /* thread_generic.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94A50254242101B94B21 /* thread_generic.h */; };
-		F52A94D6025424AC01B94B21 /* pcsclite.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A949E0254242101B94B21 /* pcsclite.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		F52A94D7025424AC01B94B21 /* mscdefines.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94CD025424AC01B94B21 /* mscdefines.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		F52A94D8025424AC01B94B21 /* musclecard.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94CF025424AC01B94B21 /* musclecard.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		F52A94D9025424AC01B94B21 /* winscard_msg.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94A80254242101B94B21 /* winscard_msg.h */; };
-		F52A94DA025424AC01B94B21 /* tokenfactory.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94D1025424AC01B94B21 /* tokenfactory.h */; };
-		F52A94DB025424AC01B94B21 /* winscard.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94AC0254242101B94B21 /* winscard.h */; settings = {ATTRIBUTES = (Public, ); }; };
-		F52A94DC025424AC01B94B21 /* dyn_generic.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94940254242101B94B21 /* dyn_generic.h */; };
-		F52A94DD025424AC01B94B21 /* debuglog.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94930254242101B94B21 /* debuglog.h */; settings = {ATTRIBUTES = (); }; };
-		F52A94DE025424AC01B94B21 /* musclecard.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94CE025424AC01B94B21 /* musclecard.c */; };
-		F52A94DF025424AC01B94B21 /* dyn_macosx.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94950254242101B94B21 /* dyn_macosx.c */; };
-		F52A94E0025424AC01B94B21 /* tokenfactory.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94D0025424AC01B94B21 /* tokenfactory.c */; };
-		F52A94E1025424AC01B94B21 /* tokenparser.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94D2025424AC01B94B21 /* tokenparser.c */; settings = {COMPILER_FLAGS = "-DYY_NO_UNPUT"; }; };
-		F52A94E3025424AC01B94B21 /* debuglog.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94920254242101B94B21 /* debuglog.c */; };
-		F52A94E4025424AC01B94B21 /* winscard_clnt.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94D4025424AC01B94B21 /* winscard_clnt.c */; };
-		F52A94E5025424F101B94B21 /* winscard_msg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F52A94A70254242101B94B21 /* winscard_msg.cpp */; };
-		F52A94E7025424F101B94B21 /* sys_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94A40254242101B94B21 /* sys_unix.c */; };
-		F537A7B40379EB7B01B94948 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = F537A7B30379EB7B01B94948 /* config.h */; };
-		F5448E140379EEA101B94948 /* musclecardApplet.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E120379EEA101B94948 /* musclecardApplet.c */; };
-		F5448E150379EEA101B94948 /* musclecardApplet.h in Headers */ = {isa = PBXBuildFile; fileRef = F5448E130379EEA101B94948 /* musclecardApplet.h */; };
-		F5448E180379EEC301B94948 /* cryptoflex.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E160379EEC301B94948 /* cryptoflex.c */; };
-		F5448E190379EEC301B94948 /* cryptoflex.h in Headers */ = {isa = PBXBuildFile; fileRef = F5448E170379EEC301B94948 /* cryptoflex.h */; };
-		F5448E1C0379EEDD01B94948 /* commonAccessCard.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E1A0379EEDD01B94948 /* commonAccessCard.c */; };
-		F5448E1D0379EEDD01B94948 /* commonAccessCard.h in Headers */ = {isa = PBXBuildFile; fileRef = F5448E1B0379EEDD01B94948 /* commonAccessCard.h */; };
-		F5448E3F0379EF2501B94948 /* cryptoki_unix.h in Headers */ = {isa = PBXBuildFile; fileRef = F5448E1E0379EF2501B94948 /* cryptoki_unix.h */; };
-		F5448E400379EF2501B94948 /* cryptoki.h in Headers */ = {isa = PBXBuildFile; fileRef = F5448E1F0379EF2501B94948 /* cryptoki.h */; };
-		F5448E410379EF2501B94948 /* p11_crypt.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E200379EF2501B94948 /* p11_crypt.c */; };
-		F5448E420379EF2501B94948 /* p11_digest.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E210379EF2501B94948 /* p11_digest.c */; };
-		F5448E430379EF2501B94948 /* p11_dual.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E220379EF2501B94948 /* p11_dual.c */; };
-		F5448E440379EF2501B94948 /* p11_ext.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E230379EF2501B94948 /* p11_ext.c */; };
-		F5448E450379EF2501B94948 /* p11_general.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E240379EF2501B94948 /* p11_general.c */; };
-		F5448E460379EF2501B94948 /* p11_key.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E250379EF2501B94948 /* p11_key.c */; };
-		F5448E470379EF2501B94948 /* p11_object.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E260379EF2501B94948 /* p11_object.c */; };
-		F5448E480379EF2501B94948 /* p11_parallel.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E270379EF2501B94948 /* p11_parallel.c */; };
-		F5448E490379EF2501B94948 /* p11_random.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E280379EF2501B94948 /* p11_random.c */; };
-		F5448E4A0379EF2501B94948 /* p11_session.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E290379EF2501B94948 /* p11_session.c */; };
-		F5448E4B0379EF2501B94948 /* p11_sign.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E2A0379EF2501B94948 /* p11_sign.c */; };
-		F5448E4C0379EF2501B94948 /* p11_token.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E2B0379EF2501B94948 /* p11_token.c */; };
-		F5448E4D0379EF2501B94948 /* p11_verify.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E2C0379EF2501B94948 /* p11_verify.c */; };
-		F5448E4E0379EF2501B94948 /* p11x_async.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E2D0379EF2501B94948 /* p11x_async.c */; };
-		F5448E4F0379EF2501B94948 /* p11x_bio.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E2E0379EF2501B94948 /* p11x_bio.c */; };
-		F5448E500379EF2501B94948 /* p11x_error.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E2F0379EF2501B94948 /* p11x_error.c */; };
-		F5448E510379EF2501B94948 /* p11x_log.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E300379EF2501B94948 /* p11x_log.c */; };
-		F5448E520379EF2501B94948 /* p11x_msc.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E310379EF2501B94948 /* p11x_msc.c */; };
-		F5448E530379EF2501B94948 /* p11x_msc.h in Headers */ = {isa = PBXBuildFile; fileRef = F5448E320379EF2501B94948 /* p11x_msc.h */; };
-		F5448E540379EF2501B94948 /* p11x_object.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E330379EF2501B94948 /* p11x_object.c */; };
-		F5448E550379EF2501B94948 /* p11x_prefs.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E340379EF2501B94948 /* p11x_prefs.c */; };
-		F5448E560379EF2501B94948 /* p11x_session.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E350379EF2501B94948 /* p11x_session.c */; };
-		F5448E570379EF2501B94948 /* p11x_slot.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E360379EF2501B94948 /* p11x_slot.c */; };
-		F5448E580379EF2501B94948 /* p11x_state.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E370379EF2501B94948 /* p11x_state.c */; };
-		F5448E590379EF2501B94948 /* p11x_thread.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E380379EF2501B94948 /* p11x_thread.c */; };
-		F5448E5B0379EF2501B94948 /* p11x_util.c in Sources */ = {isa = PBXBuildFile; fileRef = F5448E3A0379EF2501B94948 /* p11x_util.c */; };
-		F5448E5C0379EF2501B94948 /* pkcs11.h in Headers */ = {isa = PBXBuildFile; fileRef = F5448E3B0379EF2501B94948 /* pkcs11.h */; };
-		F5448E5D0379EF2501B94948 /* pkcs11f.h in Headers */ = {isa = PBXBuildFile; fileRef = F5448E3C0379EF2501B94948 /* pkcs11f.h */; };
-		F5448E5E0379EF2501B94948 /* pkcs11t.h in Headers */ = {isa = PBXBuildFile; fileRef = F5448E3D0379EF2501B94948 /* pkcs11t.h */; };
-		F5448E5F0379EF2501B94948 /* thread_generic.h in Headers */ = {isa = PBXBuildFile; fileRef = F5448E3E0379EF2501B94948 /* thread_generic.h */; };
-		F5448E6A0379F08001B94948 /* PCSC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5448E630379F08001B94948 /* PCSC.framework */; };
-		F5448E6B0379F08001B94948 /* PCSC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5448E630379F08001B94948 /* PCSC.framework */; };
-		F5448E6C0379F08001B94948 /* PCSC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5448E630379F08001B94948 /* PCSC.framework */; };
-		F5448E6D0379F08001B94948 /* PCSC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5448E630379F08001B94948 /* PCSC.framework */; };
-		F5448E6E0379F08001B94948 /* PCSC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5448E630379F08001B94948 /* PCSC.framework */; };
-		F5448E6F0379F08001B94948 /* PCSC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5448E630379F08001B94948 /* PCSC.framework */; };
-		F5448E760379F15F01B94948 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = F5448E750379F15F01B94948 /* libz.dylib */; };
-		F555DF360274962801D2E99F /* powermgt_macosx.c in Sources */ = {isa = PBXBuildFile; fileRef = F555DF350274962801D2E99F /* powermgt_macosx.c */; };
-		F555DF380274968F01D2E99F /* powermgt_generic.h in Headers */ = {isa = PBXBuildFile; fileRef = F555DF370274968F01D2E99F /* powermgt_generic.h */; };
+		1F0A56E410F5EBE7005641B9 /* pcscd_reader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1F0A56E210F5EBE7005641B9 /* pcscd_reader.cpp */; };
+		1F0A56E510F5EBE7005641B9 /* pcscd_reader.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F0A56E310F5EBE7005641B9 /* pcscd_reader.h */; };
+		1F0A572610F5EDE3005641B9 /* error.c in Sources */ = {isa = PBXBuildFile; fileRef = 1F0A56F710F5EC4E005641B9 /* error.c */; };
+		5234B67F0E78286000F02D95 /* atrhandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A948F0254242101B94B21 /* atrhandler.h */; };
+		5234B6800E78286000F02D95 /* configfile.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94910254242101B94B21 /* configfile.h */; };
+		5234B6810E78286000F02D95 /* debuglog.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94930254242101B94B21 /* debuglog.h */; };
+		5234B6820E78286000F02D95 /* dyn_generic.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94940254242101B94B21 /* dyn_generic.h */; };
+		5234B6830E78286000F02D95 /* eventhandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94970254242101B94B21 /* eventhandler.h */; };
+		5234B6840E78286000F02D95 /* hotplug.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94990254242101B94B21 /* hotplug.h */; };
+		5234B6850E78286000F02D95 /* ifdhandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A949A0254242101B94B21 /* ifdhandler.h */; };
+		5234B6860E78286000F02D95 /* ifdwrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A949C0254242101B94B21 /* ifdwrapper.h */; };
+		5234B6870E78286000F02D95 /* pcsclite.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A949E0254242101B94B21 /* pcsclite.h */; };
+		5234B6880E78286000F02D95 /* prothandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94A00254242101B94B21 /* prothandler.h */; };
+		5234B6890E78286000F02D95 /* readerfactory.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94A20254242101B94B21 /* readerfactory.h */; };
+		5234B68A0E78286000F02D95 /* sys_generic.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94A30254242101B94B21 /* sys_generic.h */; };
+		5234B68B0E78286000F02D95 /* thread_generic.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94A50254242101B94B21 /* thread_generic.h */; };
+		5234B68C0E78286000F02D95 /* winscard_msg.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94A80254242101B94B21 /* winscard_msg.h */; };
+		5234B68D0E78286000F02D95 /* winscard_svc.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94AA0254242101B94B21 /* winscard_svc.h */; };
+		5234B68E0E78286000F02D95 /* winscard.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94AC0254242101B94B21 /* winscard.h */; };
+		5234B68F0E78286000F02D95 /* wintypes.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94AD0254242101B94B21 /* wintypes.h */; };
+		5234B6900E78286000F02D95 /* powermgt_generic.h in Headers */ = {isa = PBXBuildFile; fileRef = F555DF370274968F01D2E99F /* powermgt_generic.h */; };
+		5234B6910E78286000F02D95 /* PCSCDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 5286293E0A87EA8E004FE8DC /* PCSCDevice.h */; };
+		5234B6920E78286000F02D95 /* PCSCDriverBundle.h in Headers */ = {isa = PBXBuildFile; fileRef = 528629400A87EA8E004FE8DC /* PCSCDriverBundle.h */; };
+		5234B6930E78286000F02D95 /* PCSCDriverBundles.h in Headers */ = {isa = PBXBuildFile; fileRef = 528629420A87EA8E004FE8DC /* PCSCDriverBundles.h */; };
+		5234B6940E78286000F02D95 /* reader.h in Headers */ = {isa = PBXBuildFile; fileRef = 52D00D1A0A9252350093277A /* reader.h */; };
+		5234B6950E78286000F02D95 /* pcscdmonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 527CF60B0AA5192B007589FF /* pcscdmonitor.h */; };
+		5234B6960E78286000F02D95 /* pcscdserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 527CF60D0AA5192B007589FF /* pcscdserver.h */; };
+		5234B6970E78286000F02D95 /* readerstate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5236DD1D0B9DDBD7007CEF56 /* readerstate.h */; };
+		5234B6990E78286000F02D95 /* atrhandler.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94510254232701B94B21 /* atrhandler.c */; };
+		5234B69A0E78286000F02D95 /* readerstate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5236DD1C0B9DDBD7007CEF56 /* readerstate.cpp */; };
+		5234B69B0E78286000F02D95 /* configfile.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94900254242101B94B21 /* configfile.c */; settings = {COMPILER_FLAGS = "-DYY_NO_UNPUT"; }; };
+		5234B69C0E78286000F02D95 /* debuglog.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94920254242101B94B21 /* debuglog.c */; };
+		5234B69D0E78286000F02D95 /* dyn_macosx.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94950254242101B94B21 /* dyn_macosx.c */; };
+		5234B69E0E78286000F02D95 /* eventhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F52A94960254242101B94B21 /* eventhandler.cpp */; };
+		5234B69F0E78286000F02D95 /* ifdwrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A949B0254242101B94B21 /* ifdwrapper.c */; };
+		5234B6A00E78286000F02D95 /* pcscdaemon.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A949D0254242101B94B21 /* pcscdaemon.c */; };
+		5234B6A10E78286000F02D95 /* prothandler.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A949F0254242101B94B21 /* prothandler.c */; };
+		5234B6A20E78286000F02D95 /* readerfactory.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94A10254242101B94B21 /* readerfactory.c */; };
+		5234B6A30E78286000F02D95 /* thread_macosx.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94A60254242101B94B21 /* thread_macosx.c */; };
+		5234B6A40E78286000F02D95 /* winscard_msg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F52A94A70254242101B94B21 /* winscard_msg.cpp */; };
+		5234B6A50E78286000F02D95 /* winscard_svc.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94A90254242101B94B21 /* winscard_svc.c */; };
+		5234B6A60E78286000F02D95 /* powermgt_macosx.c in Sources */ = {isa = PBXBuildFile; fileRef = F555DF350274962801D2E99F /* powermgt_macosx.c */; };
+		5234B6A70E78286000F02D95 /* sys_macosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C2F2094A0662B851001DFD06 /* sys_macosx.cpp */; };
+		5234B6A80E78286000F02D95 /* hotplug_macosx.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5286293C0A87EA8E004FE8DC /* hotplug_macosx.cpp */; };
+		5234B6A90E78286000F02D95 /* PCSCDevice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5286293D0A87EA8E004FE8DC /* PCSCDevice.cpp */; };
+		5234B6AA0E78286000F02D95 /* PCSCDriverBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5286293F0A87EA8E004FE8DC /* PCSCDriverBundle.cpp */; };
+		5234B6AB0E78286000F02D95 /* PCSCDriverBundles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 528629410A87EA8E004FE8DC /* PCSCDriverBundles.cpp */; };
+		5234B6AD0E78286000F02D95 /* pcscdmonitor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 527CF60A0AA5192B007589FF /* pcscdmonitor.cpp */; };
+		5234B6AE0E78286000F02D95 /* pcscdserver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 527CF60C0AA5192B007589FF /* pcscdserver.cpp */; };
+		5234B6AF0E78286000F02D95 /* winscard_msg_srv.c in Sources */ = {isa = PBXBuildFile; fileRef = 52D2492C0BA07E1100F9827A /* winscard_msg_srv.c */; };
+		5234B6B00E78286000F02D95 /* winscard.c in Sources */ = {isa = PBXBuildFile; fileRef = 52E0D59D0BA7006D008DFDDF /* winscard.c */; };
+		5234B6B20E78286000F02D95 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F503CADB025428F601B94B21 /* CoreFoundation.framework */; };
+		5234B6B30E78286000F02D95 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F503CADC025428F601B94B21 /* IOKit.framework */; };
+		5234B6B40E78286000F02D95 /* libl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F503CADF0254294101B94B21 /* libl.a */; };
+		5234B6B50E78286000F02D95 /* security_utilities.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D58C080A87FEA000DC3F19 /* security_utilities.framework */; };
+		5234B6BF0E78286000F02D95 /* thread_generic.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94A50254242101B94B21 /* thread_generic.h */; };
+		5234B6C00E78286000F02D95 /* pcsclite.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A949E0254242101B94B21 /* pcsclite.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		5234B6C10E78286000F02D95 /* mscdefines.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94CD025424AC01B94B21 /* mscdefines.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		5234B6C20E78286000F02D95 /* musclecard.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94CF025424AC01B94B21 /* musclecard.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		5234B6C30E78286000F02D95 /* winscard_msg.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94A80254242101B94B21 /* winscard_msg.h */; };
+		5234B6C40E78286000F02D95 /* tokenfactory.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94D1025424AC01B94B21 /* tokenfactory.h */; };
+		5234B6C50E78286000F02D95 /* winscard.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94AC0254242101B94B21 /* winscard.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		5234B6C60E78286000F02D95 /* dyn_generic.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94940254242101B94B21 /* dyn_generic.h */; };
+		5234B6C70E78286000F02D95 /* wintypes.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94AD0254242101B94B21 /* wintypes.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		5234B6C80E78286000F02D95 /* debuglog.h in Headers */ = {isa = PBXBuildFile; fileRef = F52A94930254242101B94B21 /* debuglog.h */; settings = {ATTRIBUTES = (); }; };
+		5234B6C90E78286000F02D95 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = F537A7B30379EB7B01B94948 /* config.h */; };
+		5234B6CC0E78286000F02D95 /* readerstate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5236DD1C0B9DDBD7007CEF56 /* readerstate.cpp */; };
+		5234B6CD0E78286000F02D95 /* thread_macosx.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94A60254242101B94B21 /* thread_macosx.c */; };
+		5234B6CE0E78286000F02D95 /* musclecard.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94CE025424AC01B94B21 /* musclecard.c */; };
+		5234B6CF0E78286000F02D95 /* dyn_macosx.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94950254242101B94B21 /* dyn_macosx.c */; };
+		5234B6D00E78286000F02D95 /* winscard_msg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F52A94A70254242101B94B21 /* winscard_msg.cpp */; };
+		5234B6D10E78286000F02D95 /* tokenfactory.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94D0025424AC01B94B21 /* tokenfactory.c */; };
+		5234B6D20E78286000F02D95 /* sys_unix.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94A40254242101B94B21 /* sys_unix.c */; };
+		5234B6D30E78286000F02D95 /* tokenparser.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94D2025424AC01B94B21 /* tokenparser.c */; settings = {COMPILER_FLAGS = "-DYY_NO_UNPUT"; }; };
+		5234B6D40E78286000F02D95 /* debuglog.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94920254242101B94B21 /* debuglog.c */; };
+		5234B6D50E78286000F02D95 /* winscard_clnt.c in Sources */ = {isa = PBXBuildFile; fileRef = F52A94D4025424AC01B94B21 /* winscard_clnt.c */; };
+		5234B6D80E78286000F02D95 /* security_utilities.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D58C080A87FEA000DC3F19 /* security_utilities.framework */; };
+		5234B6D90E78286000F02D95 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F503CADB025428F601B94B21 /* CoreFoundation.framework */; };
+		5234B6E40E78286000F02D95 /* testpcsc.c in Sources */ = {isa = PBXBuildFile; fileRef = F503CACD025425E601B94B21 /* testpcsc.c */; };
+		5234B6E60E78286000F02D95 /* PCSC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5448E630379F08001B94948 /* PCSC.framework */; };
+		5234B6F10E78286000F02D95 /* bundleTool.c in Sources */ = {isa = PBXBuildFile; fileRef = F511212C0272F8D9017BB957 /* bundleTool.c */; };
+		5234B6F30E78286000F02D95 /* PCSC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5448E630379F08001B94948 /* PCSC.framework */; };
 /* End PBXBuildFile section */
 
-/* Begin PBXBundleTarget section */
-		2CBB605A06CA6944006AA7C8 /* GSCISPlugin */ = {
-			isa = PBXBundleTarget;
-			buildConfigurationList = C27AD1DF0987FCDC001272E0 /* Build configuration list for PBXBundleTarget "GSCISPlugin" */;
-			buildPhases = (
-				2CBB605506CA6944006AA7C8 /* Headers */,
-				2CBB605606CA6944006AA7C8 /* Resources */,
-				2CBB605706CA6944006AA7C8 /* Sources */,
-				2CBB605806CA6944006AA7C8 /* Frameworks */,
-			);
-			dependencies = (
-			);
-			name = GSCISPlugin;
-			productInstallPath = /usr/libexec/SmartCardServices/services;
-			productName = GSCISPlugin;
-			productReference = 2CBB605B06CA6944006AA7C8 /* GSCISPlugin.bundle */;
-			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>gscisPlugin</string>
-	<key>CFBundleIconFile</key>
-	<string></string>
-	<key>CFBundleIdentifier</key>
-	<string>com.apple.gscisplugin</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>GSCISPLUGIN</string>
-	<key>CFBundlePackageType</key>
-	<string>BNDL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>2.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-</dict>
-</plist>
-";
-		};
-		F537A7D10379ED7501B94948 /* PKCS11 */ = {
-			isa = PBXBundleTarget;
-			buildConfigurationList = C27AD1D50987FCDC001272E0 /* Build configuration list for PBXBundleTarget "PKCS11" */;
-			buildPhases = (
-				F537A7CC0379ED7501B94948 /* Headers */,
-				F537A7CD0379ED7501B94948 /* Resources */,
-				F537A7CE0379ED7501B94948 /* Sources */,
-				F537A7CF0379ED7501B94948 /* Frameworks */,
-			);
-			dependencies = (
-			);
-			name = PKCS11;
-			productInstallPath = /usr/libexec/SmartCardServices/pkcs11;
-			productName = pkcs11;
-			productReference = F537A7D20379ED7501B94948 /* pkcs11.bundle */;
-			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string></string>
-	<key>CFBundleIconFile</key>
-	<string></string>
-	<key>CFBundleIdentifier</key>
-	<string>com.apple.pkcs11</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>PKCS11</string>
-	<key>CFBundlePackageType</key>
-	<string>BNDL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>6.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-</dict>
-</plist>
-";
-		};
-		F5448E020379EE2A01B94948 /* MCardPlugin */ = {
-			isa = PBXBundleTarget;
-			buildConfigurationList = C27AD1DA0987FCDC001272E0 /* Build configuration list for PBXBundleTarget "MCardPlugin" */;
-			buildPhases = (
-				F5448DFD0379EE2A01B94948 /* Headers */,
-				F5448DFE0379EE2A01B94948 /* Resources */,
-				F5448DFF0379EE2A01B94948 /* Sources */,
-				F5448E000379EE2A01B94948 /* Frameworks */,
-			);
-			dependencies = (
-			);
-			name = MCardPlugin;
-			productInstallPath = /usr/libexec/SmartCardServices/services;
-			productName = MCardPlugin;
-			productReference = F5448E030379EE2A01B94948 /* mscMuscleCard.bundle */;
-			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>mscMuscleCard</string>
-	<key>CFBundleIconFile</key>
-	<string></string>
-	<key>CFBundleIdentifier</key>
-	<string>com.apple.mcardplugin</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>MCARDPLUGIN</string>
-	<key>CFBundlePackageType</key>
-	<string>BNDL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>6.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-	<key>spAtrValue</key>
-	<string>3B751300009C02020102</string>
-	<key>spDefaultApplication</key>
-	<string>A00000000101</string>
-	<key>spProductName</key>
-	<string>MuscleCard Applet</string>
-	<key>spVendorName</key>
-	<string>MUSCLE</string>
-</dict>
-</plist>
-";
-		};
-		F5448E090379EE3601B94948 /* CACPlugin */ = {
-			isa = PBXBundleTarget;
-			buildConfigurationList = C27AD1E40987FCDC001272E0 /* Build configuration list for PBXBundleTarget "CACPlugin" */;
-			buildPhases = (
-				F5448E040379EE3601B94948 /* Headers */,
-				F5448E050379EE3601B94948 /* Resources */,
-				F5448E060379EE3601B94948 /* Sources */,
-				F5448E070379EE3601B94948 /* Frameworks */,
-			);
-			dependencies = (
-			);
-			name = CACPlugin;
-			productInstallPath = /usr/libexec/SmartCardServices/services;
-			productName = CACPlugin;
-			productReference = F5448E0A0379EE3601B94948 /* commonAccessCard.bundle */;
-			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>commonAccessCard</string>
-	<key>CFBundleIconFile</key>
-	<string></string>
-	<key>CFBundleIdentifier</key>
-	<string>com.apple.cacplugin</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>CACPLUGIN</string>
-	<key>CFBundlePackageType</key>
-	<string>BNDL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>6.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-	<key>spAtrValue</key>
-	<array>
-		<string>3B6500009C02020102</string>
-		<string>3B7D110000003180718E6486D60100819000</string>
-		<string>3B7F1100000031C053CAC4016452D90400829000</string>
-		<string>3B6500009C02020702</string>
-	</array>
-	<key>spDefaultApplication</key>
-	<string>A0000000790101</string>
-	<key>spProductName</key>
-	<string>Common Access Card</string>
-	<key>spVendorName</key>
-	<string>Department of Defense</string>
-</dict>
-</plist>
-";
-		};
-		F5448E100379EE6401B94948 /* CFlexPlugin */ = {
-			isa = PBXBundleTarget;
-			buildConfigurationList = C27AD1E90987FCDC001272E0 /* Build configuration list for PBXBundleTarget "CFlexPlugin" */;
-			buildPhases = (
-				F5448E0B0379EE6401B94948 /* Headers */,
-				F5448E0C0379EE6401B94948 /* Resources */,
-				F5448E0D0379EE6401B94948 /* Sources */,
-				F5448E0E0379EE6401B94948 /* Frameworks */,
-			);
-			dependencies = (
-			);
-			name = CFlexPlugin;
-			productInstallPath = /usr/libexec/SmartCardServices/services;
-			productName = CFlexPlugin;
-			productReference = F5448E110379EE6401B94948 /* slbCryptoflex.bundle */;
-			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>slbCryptoflex</string>
-	<key>CFBundleIconFile</key>
-	<string></string>
-	<key>CFBundleIdentifier</key>
-	<string>com.apple.cflexplugin</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>6.0</string>
-	<key>CFBundleName</key>
-	<string>CFLEXPLUGIN</string>
-	<key>CFBundlePackageType</key>
-	<string>BNDL</string>
-	<key>CFBundleShortVersionString</key>
-	<string>6.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-	<key>spAtrValue</key>
-	<string>3B959440FF6301010201</string>
-	<key>spDefaultApplication</key>
-	<string>A00000000101</string>
-	<key>spProductName</key>
-	<string>Cryptoflex 16K</string>
-	<key>spVendorName</key>
-	<string>SchlumbergerSema</string>
-</dict>
-</plist>
-";
-		};
-/* End PBXBundleTarget section */
-
 /* Begin PBXContainerItemProxy section */
-		2CBB607406CA6DDE006AA7C8 /* PBXContainerItemProxy */ = {
+		5234B72E0E78286000F02D95 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = F5294A4F0090C4CA01CD285A /* Project object */;
 			proxyType = 1;
-			remoteGlobalIDString = 2CBB605A06CA6944006AA7C8;
-			remoteInfo = GSCISPlugin;
+			remoteGlobalIDString = 5234B6BD0E78286000F02D95;
+			remoteInfo = "PCSC (Upgraded)";
 		};
-		4CFE9C05059254C8007119DE /* PBXContainerItemProxy */ = {
+		5234B7300E78286000F02D95 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = F5294A4F0090C4CA01CD285A /* Project object */;
 			proxyType = 1;
-			remoteGlobalIDString = F5448E020379EE2A01B94948;
-			remoteInfo = MCardPlugin;
+			remoteGlobalIDString = 5234B67D0E78286000F02D95;
+			remoteInfo = "pcscd (Upgraded)";
 		};
-		4CFE9C06059254C9007119DE /* PBXContainerItemProxy */ = {
+		5234B7320E78286000F02D95 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = F5294A4F0090C4CA01CD285A /* Project object */;
 			proxyType = 1;
-			remoteGlobalIDString = F5294A800090C73501CD285A;
-			remoteInfo = pcscd;
+			remoteGlobalIDString = 5234B6E10E78286000F02D95;
+			remoteInfo = "pcsctest (Upgraded)";
 		};
-		4CFE9C07059254C9007119DE /* PBXContainerItemProxy */ = {
+		5234B7340E78286000F02D95 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = F5294A4F0090C4CA01CD285A /* Project object */;
 			proxyType = 1;
-			remoteGlobalIDString = F5448E100379EE6401B94948;
-			remoteInfo = CFlexPlugin;
+			remoteGlobalIDString = 5234B6EE0E78286000F02D95;
+			remoteInfo = "pcsctool (Upgraded)";
 		};
-		4CFE9C09059254C9007119DE /* PBXContainerItemProxy */ = {
+		5234B7380E78286000F02D95 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = F5294A4F0090C4CA01CD285A /* Project object */;
 			proxyType = 1;
-			remoteGlobalIDString = F538896903953B79012F6BBF;
-			remoteInfo = InstallPhase;
+			remoteGlobalIDString = 5234B7280E78286000F02D95;
+			remoteInfo = "InstallPhase (Copied)";
 		};
-		4CFE9C0A059254C9007119DE /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = F5294A4F0090C4CA01CD285A /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = F5448E090379EE3601B94948;
-			remoteInfo = CACPlugin;
-		};
-		4CFE9C0B059254C9007119DE /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = F5294A4F0090C4CA01CD285A /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = F537A7D10379ED7501B94948;
-			remoteInfo = PKCS11;
-		};
-		4CFE9C0C059254C9007119DE /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = F5294A4F0090C4CA01CD285A /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = F51121270272F895017BB957;
-			remoteInfo = pcsctool;
-		};
-		4CFE9C0D059254C9007119DE /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = F5294A4F0090C4CA01CD285A /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = F5294AD40090CAE601CD285A;
-			remoteInfo = pcsctest;
-		};
-		4CFE9C0E059254C9007119DE /* PBXContainerItemProxy */ = {
-			isa = PBXContainerItemProxy;
-			containerPortal = F5294A4F0090C4CA01CD285A /* Project object */;
-			proxyType = 1;
-			remoteGlobalIDString = F52A93D402541D8C01B94B21;
-			remoteInfo = PCSC;
-		};
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXFileReference section */
-		1FBFA8BD1021A563001ACCE5 /* error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = error.c; path = src/PCSC/error.c; sourceTree = "<group>"; };
-		1FBFA9591021DF2B001ACCE5 /* reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = reader.h; path = src/PCSC/reader.h; sourceTree = "<group>"; };
-		2CBB605B06CA6944006AA7C8 /* GSCISPlugin.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = GSCISPlugin.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
-		2CBB606306CA69F9006AA7C8 /* GSCISPlugin.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = GSCISPlugin.c; path = src/GSCISPlugin/GSCISPlugin.c; sourceTree = SOURCE_ROOT; };
-		2CBB606406CA69F9006AA7C8 /* GSCISPlugin.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = GSCISPlugin.h; path = src/GSCISPlugin/GSCISPlugin.h; sourceTree = SOURCE_ROOT; };
+		1F0A56E210F5EBE7005641B9 /* pcscd_reader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = pcscd_reader.cpp; path = src/PCSC/pcscd_reader.cpp; sourceTree = "<group>"; };
+		1F0A56E310F5EBE7005641B9 /* pcscd_reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = pcscd_reader.h; path = src/PCSC/pcscd_reader.h; sourceTree = "<group>"; };
+		1F0A56F710F5EC4E005641B9 /* error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = error.c; path = src/PCSC/error.c; sourceTree = "<group>"; };
 		2CC9AB9A06CC036D0048A811 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
 		2CC9ABC806CC03A10048A811 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
 		4CB55A760592598500B25B27 /* Makefile.installPhase */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = Makefile.installPhase; sourceTree = "<group>"; };
+		5234B6BB0E78286000F02D95 /* pcscd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = pcscd; sourceTree = BUILT_PRODUCTS_DIR; };
+		5234B6DF0E78286000F02D95 /* Info-PCSC.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Info-PCSC.plist"; sourceTree = "<group>"; };
+		5234B6E00E78286000F02D95 /* PCSC.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = PCSC.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		5234B6EC0E78286000F02D95 /* pcsctest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = pcsctest; sourceTree = BUILT_PRODUCTS_DIR; };
+		5234B6F90E78286000F02D95 /* pcsctool */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = pcsctool; sourceTree = BUILT_PRODUCTS_DIR; };
 		5236DD1C0B9DDBD7007CEF56 /* readerstate.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = readerstate.cpp; path = src/PCSC/readerstate.cpp; sourceTree = "<group>"; };
 		5236DD1D0B9DDBD7007CEF56 /* readerstate.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = readerstate.h; path = src/PCSC/readerstate.h; sourceTree = "<group>"; };
 		527CF60A0AA5192B007589FF /* pcscdmonitor.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = pcscdmonitor.cpp; path = src/PCSC/pcscdmonitor.cpp; sourceTree = "<group>"; };
@@ -504,8 +172,7 @@
 		528629400A87EA8E004FE8DC /* PCSCDriverBundle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PCSCDriverBundle.h; path = src/PCSC/PCSCDriverBundle.h; sourceTree = "<group>"; };
 		528629410A87EA8E004FE8DC /* PCSCDriverBundles.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = PCSCDriverBundles.cpp; path = src/PCSC/PCSCDriverBundles.cpp; sourceTree = "<group>"; };
 		528629420A87EA8E004FE8DC /* PCSCDriverBundles.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PCSCDriverBundles.h; path = src/PCSC/PCSCDriverBundles.h; sourceTree = "<group>"; };
-		52D00D1A0A9252350093277A /* pcscd_reader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = pcscd_reader.cpp; path = src/PCSC/pcscd_reader.cpp; sourceTree = "<group>"; };
-		52D00D1B0A9252350093277A /* pcscd_reader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = pcscd_reader.cpp; path = src/PCSC/pcscd_reader.cpp; sourceTree = "<group>"; };
+		52D00D1A0A9252350093277A /* reader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = reader.h; path = src/PCSC/reader.h; sourceTree = "<group>"; };
 		52D2492C0BA07E1100F9827A /* winscard_msg_srv.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = winscard_msg_srv.c; path = src/PCSC/winscard_msg_srv.c; sourceTree = "<group>"; };
 		52D58C080A87FEA000DC3F19 /* security_utilities.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = security_utilities.framework; path = /usr/local/SecurityPieces/Frameworks/security_utilities.framework; sourceTree = "<absolute>"; };
 		52DBCAAE0BB851C8007D06A5 /* PCSC.exp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.exports; name = PCSC.exp; path = src/PCSC/PCSC.exp; sourceTree = "<group>"; };
@@ -516,11 +183,7 @@
 		F503CADB025428F601B94B21 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
 		F503CADC025428F601B94B21 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
 		F503CADF0254294101B94B21 /* libl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libl.a; path = /usr/lib/libl.a; sourceTree = "<absolute>"; };
-		F51121260272F895017BB957 /* pcsctool */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; path = pcsctool; sourceTree = BUILT_PRODUCTS_DIR; };
 		F511212C0272F8D9017BB957 /* bundleTool.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = bundleTool.c; path = src/PCSC/utils/bundleTool.c; sourceTree = "<group>"; };
-		F5294A7E0090C73501CD285A /* pcscd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; path = pcscd; sourceTree = BUILT_PRODUCTS_DIR; };
-		F5294AD30090CAE601CD285A /* pcsctest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; path = pcsctest; sourceTree = BUILT_PRODUCTS_DIR; };
-		F52A93D102541D8C01B94B21 /* PCSC.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PCSC.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		F52A94510254232701B94B21 /* atrhandler.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = atrhandler.c; path = src/PCSC/atrhandler.c; sourceTree = SOURCE_ROOT; };
 		F52A948F0254242101B94B21 /* atrhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = atrhandler.h; path = src/PCSC/atrhandler.h; sourceTree = SOURCE_ROOT; };
 		F52A94900254242101B94B21 /* configfile.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = configfile.c; path = src/PCSC/configfile.c; sourceTree = SOURCE_ROOT; };
@@ -559,193 +222,67 @@
 		F52A94D2025424AC01B94B21 /* tokenparser.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = tokenparser.c; path = src/PCSC/tokenparser.c; sourceTree = SOURCE_ROOT; };
 		F52A94D4025424AC01B94B21 /* winscard_clnt.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = winscard_clnt.c; path = src/PCSC/winscard_clnt.c; sourceTree = SOURCE_ROOT; };
 		F537A7B30379EB7B01B94948 /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = config.h; path = src/PCSC/config.h; sourceTree = SOURCE_ROOT; };
-		F537A7D20379ED7501B94948 /* pkcs11.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = pkcs11.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
-		F5448E030379EE2A01B94948 /* mscMuscleCard.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = mscMuscleCard.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
-		F5448E0A0379EE3601B94948 /* commonAccessCard.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = commonAccessCard.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
-		F5448E110379EE6401B94948 /* slbCryptoflex.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; path = slbCryptoflex.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
-		F5448E120379EEA101B94948 /* musclecardApplet.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = musclecardApplet.c; path = src/MCardPlugin/musclecardApplet.c; sourceTree = SOURCE_ROOT; };
-		F5448E130379EEA101B94948 /* musclecardApplet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = musclecardApplet.h; path = src/MCardPlugin/musclecardApplet.h; sourceTree = SOURCE_ROOT; };
-		F5448E160379EEC301B94948 /* cryptoflex.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = cryptoflex.c; path = src/CFlexPlugin/cryptoflex.c; sourceTree = SOURCE_ROOT; };
-		F5448E170379EEC301B94948 /* cryptoflex.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cryptoflex.h; path = src/CFlexPlugin/cryptoflex.h; sourceTree = SOURCE_ROOT; };
-		F5448E1A0379EEDD01B94948 /* commonAccessCard.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = commonAccessCard.c; path = src/CACPlugin/commonAccessCard.c; sourceTree = SOURCE_ROOT; };
-		F5448E1B0379EEDD01B94948 /* commonAccessCard.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = commonAccessCard.h; path = src/CACPlugin/commonAccessCard.h; sourceTree = SOURCE_ROOT; };
-		F5448E1E0379EF2501B94948 /* cryptoki_unix.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cryptoki_unix.h; path = src/PKCS11/cryptoki_unix.h; sourceTree = SOURCE_ROOT; };
-		F5448E1F0379EF2501B94948 /* cryptoki.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = cryptoki.h; path = src/PKCS11/cryptoki.h; sourceTree = SOURCE_ROOT; };
-		F5448E200379EF2501B94948 /* p11_crypt.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11_crypt.c; path = src/PKCS11/p11_crypt.c; sourceTree = SOURCE_ROOT; };
-		F5448E210379EF2501B94948 /* p11_digest.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11_digest.c; path = src/PKCS11/p11_digest.c; sourceTree = SOURCE_ROOT; };
-		F5448E220379EF2501B94948 /* p11_dual.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11_dual.c; path = src/PKCS11/p11_dual.c; sourceTree = SOURCE_ROOT; };
-		F5448E230379EF2501B94948 /* p11_ext.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11_ext.c; path = src/PKCS11/p11_ext.c; sourceTree = SOURCE_ROOT; };
-		F5448E240379EF2501B94948 /* p11_general.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11_general.c; path = src/PKCS11/p11_general.c; sourceTree = SOURCE_ROOT; };
-		F5448E250379EF2501B94948 /* p11_key.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11_key.c; path = src/PKCS11/p11_key.c; sourceTree = SOURCE_ROOT; };
-		F5448E260379EF2501B94948 /* p11_object.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11_object.c; path = src/PKCS11/p11_object.c; sourceTree = SOURCE_ROOT; };
-		F5448E270379EF2501B94948 /* p11_parallel.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11_parallel.c; path = src/PKCS11/p11_parallel.c; sourceTree = SOURCE_ROOT; };
-		F5448E280379EF2501B94948 /* p11_random.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11_random.c; path = src/PKCS11/p11_random.c; sourceTree = SOURCE_ROOT; };
-		F5448E290379EF2501B94948 /* p11_session.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11_session.c; path = src/PKCS11/p11_session.c; sourceTree = SOURCE_ROOT; };
-		F5448E2A0379EF2501B94948 /* p11_sign.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11_sign.c; path = src/PKCS11/p11_sign.c; sourceTree = SOURCE_ROOT; };
-		F5448E2B0379EF2501B94948 /* p11_token.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11_token.c; path = src/PKCS11/p11_token.c; sourceTree = SOURCE_ROOT; };
-		F5448E2C0379EF2501B94948 /* p11_verify.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11_verify.c; path = src/PKCS11/p11_verify.c; sourceTree = SOURCE_ROOT; };
-		F5448E2D0379EF2501B94948 /* p11x_async.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11x_async.c; path = src/PKCS11/p11x_async.c; sourceTree = SOURCE_ROOT; };
-		F5448E2E0379EF2501B94948 /* p11x_bio.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11x_bio.c; path = src/PKCS11/p11x_bio.c; sourceTree = SOURCE_ROOT; };
-		F5448E2F0379EF2501B94948 /* p11x_error.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11x_error.c; path = src/PKCS11/p11x_error.c; sourceTree = SOURCE_ROOT; };
-		F5448E300379EF2501B94948 /* p11x_log.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11x_log.c; path = src/PKCS11/p11x_log.c; sourceTree = SOURCE_ROOT; };
-		F5448E310379EF2501B94948 /* p11x_msc.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11x_msc.c; path = src/PKCS11/p11x_msc.c; sourceTree = SOURCE_ROOT; };
-		F5448E320379EF2501B94948 /* p11x_msc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = p11x_msc.h; path = src/PKCS11/p11x_msc.h; sourceTree = SOURCE_ROOT; };
-		F5448E330379EF2501B94948 /* p11x_object.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11x_object.c; path = src/PKCS11/p11x_object.c; sourceTree = SOURCE_ROOT; };
-		F5448E340379EF2501B94948 /* p11x_prefs.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11x_prefs.c; path = src/PKCS11/p11x_prefs.c; sourceTree = SOURCE_ROOT; };
-		F5448E350379EF2501B94948 /* p11x_session.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11x_session.c; path = src/PKCS11/p11x_session.c; sourceTree = SOURCE_ROOT; };
-		F5448E360379EF2501B94948 /* p11x_slot.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11x_slot.c; path = src/PKCS11/p11x_slot.c; sourceTree = SOURCE_ROOT; };
-		F5448E370379EF2501B94948 /* p11x_state.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11x_state.c; path = src/PKCS11/p11x_state.c; sourceTree = SOURCE_ROOT; };
-		F5448E380379EF2501B94948 /* p11x_thread.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11x_thread.c; path = src/PKCS11/p11x_thread.c; sourceTree = SOURCE_ROOT; };
-		F5448E3A0379EF2501B94948 /* p11x_util.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = p11x_util.c; path = src/PKCS11/p11x_util.c; sourceTree = SOURCE_ROOT; };
-		F5448E3B0379EF2501B94948 /* pkcs11.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pkcs11.h; path = src/PKCS11/pkcs11.h; sourceTree = SOURCE_ROOT; };
-		F5448E3C0379EF2501B94948 /* pkcs11f.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pkcs11f.h; path = src/PKCS11/pkcs11f.h; sourceTree = SOURCE_ROOT; };
-		F5448E3D0379EF2501B94948 /* pkcs11t.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = pkcs11t.h; path = src/PKCS11/pkcs11t.h; sourceTree = SOURCE_ROOT; };
-		F5448E3E0379EF2501B94948 /* thread_generic.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = thread_generic.h; path = src/PKCS11/thread_generic.h; sourceTree = SOURCE_ROOT; };
 		F5448E630379F08001B94948 /* PCSC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PCSC.framework; path = /System/Library/Frameworks/PCSC.framework; sourceTree = "<absolute>"; };
-		F5448E750379F15F01B94948 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.1.1.3.dylib; sourceTree = "<absolute>"; };
 		F555DF350274962801D2E99F /* powermgt_macosx.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = powermgt_macosx.c; path = src/PCSC/powermgt_macosx.c; sourceTree = SOURCE_ROOT; };
 		F555DF370274968F01D2E99F /* powermgt_generic.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = powermgt_generic.h; path = src/PCSC/powermgt_generic.h; sourceTree = SOURCE_ROOT; };
 /* End PBXFileReference section */
 
-/* Begin PBXFrameworkTarget section */
-		F52A93D402541D8C01B94B21 /* PCSC */ = {
-			isa = PBXFrameworkTarget;
-			buildConfigurationList = C27AD1C10987FCDB001272E0 /* Build configuration list for PBXFrameworkTarget "PCSC" */;
-			buildPhases = (
-				F52A93D502541D8C01B94B21 /* Headers */,
-				F52A93D602541D8C01B94B21 /* Resources */,
-				F52A93D702541D8C01B94B21 /* Sources */,
-				F52A93D802541D8C01B94B21 /* Frameworks */,
-			);
-			dependencies = (
-			);
-			name = PCSC;
-			productInstallPath = /System/Library/Frameworks;
-			productName = PCSC;
-			productReference = F52A93D102541D8C01B94B21 /* PCSC.framework */;
-			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
-<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
-<plist version=\"1.0\">
-<dict>
-	<key>CFBundleDevelopmentRegion</key>
-	<string>English</string>
-	<key>CFBundleExecutable</key>
-	<string>PCSC</string>
-	<key>CFBundleIconFile</key>
-	<string></string>
-	<key>CFBundleIdentifier</key>
-	<string>com.apple.pcsc</string>
-	<key>CFBundleInfoDictionaryVersion</key>
-	<string>7.0</string>
-	<key>CFBundleName</key>
-	<string>PCSC</string>
-	<key>CFBundlePackageType</key>
-	<string>FMWK</string>
-	<key>CFBundleShortVersionString</key>
-	<string>6.0</string>
-	<key>CFBundleSignature</key>
-	<string>????</string>
-	<key>CFBundleVersion</key>
-	<string>1</string>
-</dict>
-</plist>
-";
-		};
-/* End PBXFrameworkTarget section */
-
 /* Begin PBXFrameworksBuildPhase section */
-		2CBB605806CA6944006AA7C8 /* Frameworks */ = {
+		5234B6B10E78286000F02D95 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				2CC9AB8406CC02F30048A811 /* PCSC.framework in Frameworks */,
+				5234B6B20E78286000F02D95 /* CoreFoundation.framework in Frameworks */,
+				5234B6B30E78286000F02D95 /* IOKit.framework in Frameworks */,
+				5234B6B40E78286000F02D95 /* libl.a in Frameworks */,
+				5234B6B50E78286000F02D95 /* security_utilities.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		F511212A0272F895017BB957 /* Frameworks */ = {
+		5234B6D70E78286000F02D95 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				F5448E6E0379F08001B94948 /* PCSC.framework in Frameworks */,
+				5234B6D80E78286000F02D95 /* security_utilities.framework in Frameworks */,
+				5234B6D90E78286000F02D95 /* CoreFoundation.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		F5294A830090C73501CD285A /* Frameworks */ = {
+		5234B6E50E78286000F02D95 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				F503CADD025428F601B94B21 /* CoreFoundation.framework in Frameworks */,
-				F503CADE025428F601B94B21 /* IOKit.framework in Frameworks */,
-				F503CAE00254294101B94B21 /* libl.a in Frameworks */,
-				52D58C090A87FEA000DC3F19 /* security_utilities.framework in Frameworks */,
+				5234B6E60E78286000F02D95 /* PCSC.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		F5294AD70090CAE601CD285A /* Frameworks */ = {
+		5234B6F20E78286000F02D95 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				F5448E6A0379F08001B94948 /* PCSC.framework in Frameworks */,
+				5234B6F30E78286000F02D95 /* PCSC.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		F52A93D802541D8C01B94B21 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				52C85D900B9FA79F002DA856 /* security_utilities.framework in Frameworks */,
-				F503CAE502542A9201B94B21 /* CoreFoundation.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F537A7CF0379ED7501B94948 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				F5448E6D0379F08001B94948 /* PCSC.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F5448E000379EE2A01B94948 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				F5448E6C0379F08001B94948 /* PCSC.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F5448E070379EE3601B94948 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				F5448E6B0379F08001B94948 /* PCSC.framework in Frameworks */,
-				F5448E760379F15F01B94948 /* libz.dylib in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F5448E0E0379EE6401B94948 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				F5448E6F0379F08001B94948 /* PCSC.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
-		2CBB605406CA680F006AA7C8 /* GSCISPlugin */ = {
+		5234B4EF0E7826E200F02D95 /* Linked Frameworks */ = {
 			isa = PBXGroup;
 			children = (
-				2CBB606306CA69F9006AA7C8 /* GSCISPlugin.c */,
-				2CBB606406CA69F9006AA7C8 /* GSCISPlugin.h */,
+				52D58C080A87FEA000DC3F19 /* security_utilities.framework */,
+				F5448E630379F08001B94948 /* PCSC.framework */,
+				2CC9AB9A06CC036D0048A811 /* CoreFoundation.framework */,
+				2CC9ABC806CC03A10048A811 /* IOKit.framework */,
 			);
-			name = GSCISPlugin;
+			name = "Linked Frameworks";
 			sourceTree = "<group>";
 		};
 		527CF6040AA51879007589FF /* pcscd */ = {
 			isa = PBXGroup;
 			children = (
+				1F0A56E210F5EBE7005641B9 /* pcscd_reader.cpp */,
+				1F0A56E310F5EBE7005641B9 /* pcscd_reader.h */,
 				5236DD1C0B9DDBD7007CEF56 /* readerstate.cpp */,
 				5236DD1D0B9DDBD7007CEF56 /* readerstate.h */,
 				F52A949D0254242101B94B21 /* pcscdaemon.c */,
@@ -762,8 +299,7 @@
 				528629420A87EA8E004FE8DC /* PCSCDriverBundles.h */,
 				F52A94A10254242101B94B21 /* readerfactory.c */,
 				F52A94A20254242101B94B21 /* readerfactory.h */,
-				52D00D1A0A9252350093277A /* pcscd_reader.cpp */,
-				52D00D1B0A9252350093277A /* pcscd_reader.cpp */,
+				52D00D1A0A9252350093277A /* reader.h */,
 			);
 			name = pcscd;
 			sourceTree = "<group>";
@@ -789,33 +325,23 @@
 		F5294A500090C4CA01CD285A = {
 			isa = PBXGroup;
 			children = (
-				52D58C080A87FEA000DC3F19 /* security_utilities.framework */,
 				F538896A0397E93B012F6BBF /* InstallPhase */,
-				F537A7CB0379ECEB01B94948 /* MCardPlugin */,
-				2CBB605406CA680F006AA7C8 /* GSCISPlugin */,
-				F537A7CA0379ECE301B94948 /* CFlexPlugin */,
-				F537A7C90379ECDC01B94948 /* CACPlugin */,
-				F537A7C80379ECD501B94948 /* PKCS11 */,
+				527CF6040AA51879007589FF /* pcscd */,
+				527CF6240AA51B07007589FF /* tools */,
 				F537A7B50379EB8B01B94948 /* PCSC */,
+				5234B4EF0E7826E200F02D95 /* Linked Frameworks */,
 				F5294A520090C5DF01CD285A /* Products */,
-				F5448E630379F08001B94948 /* PCSC.framework */,
-				2CC9AB9A06CC036D0048A811 /* CoreFoundation.framework */,
-				2CC9ABC806CC03A10048A811 /* IOKit.framework */,
+				5234B6DF0E78286000F02D95 /* Info-PCSC.plist */,
 			);
 			sourceTree = "<group>";
 		};
 		F5294A520090C5DF01CD285A /* Products */ = {
 			isa = PBXGroup;
 			children = (
-				F5294A7E0090C73501CD285A /* pcscd */,
-				F5294AD30090CAE601CD285A /* pcsctest */,
-				F52A93D102541D8C01B94B21 /* PCSC.framework */,
-				F51121260272F895017BB957 /* pcsctool */,
-				F537A7D20379ED7501B94948 /* pkcs11.bundle */,
-				F5448E030379EE2A01B94948 /* mscMuscleCard.bundle */,
-				F5448E0A0379EE3601B94948 /* commonAccessCard.bundle */,
-				F5448E110379EE6401B94948 /* slbCryptoflex.bundle */,
-				2CBB605B06CA6944006AA7C8 /* GSCISPlugin.bundle */,
+				5234B6BB0E78286000F02D95 /* pcscd */,
+				5234B6E00E78286000F02D95 /* PCSC.framework */,
+				5234B6EC0E78286000F02D95 /* pcsctest */,
+				5234B6F90E78286000F02D95 /* pcsctool */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -823,11 +349,7 @@
 		F537A7B50379EB8B01B94948 /* PCSC */ = {
 			isa = PBXGroup;
 			children = (
-				1FBFA9591021DF2B001ACCE5 /* reader.h */,
-				1FBFA8BD1021A563001ACCE5 /* error.c */,
-				527CF6240AA51B07007589FF /* tools */,
 				527CF6070AA51881007589FF /* framework */,
-				527CF6040AA51879007589FF /* pcscd */,
 				F52A94510254232701B94B21 /* atrhandler.c */,
 				F52A948F0254242101B94B21 /* atrhandler.h */,
 				F52A94900254242101B94B21 /* configfile.c */,
@@ -836,6 +358,7 @@
 				F52A94930254242101B94B21 /* debuglog.h */,
 				F52A94940254242101B94B21 /* dyn_generic.h */,
 				F52A94950254242101B94B21 /* dyn_macosx.c */,
+				1F0A56F710F5EC4E005641B9 /* error.c */,
 				F52A94960254242101B94B21 /* eventhandler.cpp */,
 				F52A94970254242101B94B21 /* eventhandler.h */,
 				F52A94990254242101B94B21 /* hotplug.h */,
@@ -875,73 +398,6 @@
 			name = PCSC;
 			sourceTree = "<group>";
 		};
-		F537A7C80379ECD501B94948 /* PKCS11 */ = {
-			isa = PBXGroup;
-			children = (
-				F5448E1E0379EF2501B94948 /* cryptoki_unix.h */,
-				F5448E1F0379EF2501B94948 /* cryptoki.h */,
-				F5448E200379EF2501B94948 /* p11_crypt.c */,
-				F5448E210379EF2501B94948 /* p11_digest.c */,
-				F5448E220379EF2501B94948 /* p11_dual.c */,
-				F5448E230379EF2501B94948 /* p11_ext.c */,
-				F5448E240379EF2501B94948 /* p11_general.c */,
-				F5448E250379EF2501B94948 /* p11_key.c */,
-				F5448E260379EF2501B94948 /* p11_object.c */,
-				F5448E270379EF2501B94948 /* p11_parallel.c */,
-				F5448E280379EF2501B94948 /* p11_random.c */,
-				F5448E290379EF2501B94948 /* p11_session.c */,
-				F5448E2A0379EF2501B94948 /* p11_sign.c */,
-				F5448E2B0379EF2501B94948 /* p11_token.c */,
-				F5448E2C0379EF2501B94948 /* p11_verify.c */,
-				F5448E2D0379EF2501B94948 /* p11x_async.c */,
-				F5448E2E0379EF2501B94948 /* p11x_bio.c */,
-				F5448E2F0379EF2501B94948 /* p11x_error.c */,
-				F5448E300379EF2501B94948 /* p11x_log.c */,
-				F5448E310379EF2501B94948 /* p11x_msc.c */,
-				F5448E320379EF2501B94948 /* p11x_msc.h */,
-				F5448E330379EF2501B94948 /* p11x_object.c */,
-				F5448E340379EF2501B94948 /* p11x_prefs.c */,
-				F5448E350379EF2501B94948 /* p11x_session.c */,
-				F5448E360379EF2501B94948 /* p11x_slot.c */,
-				F5448E370379EF2501B94948 /* p11x_state.c */,
-				F5448E380379EF2501B94948 /* p11x_thread.c */,
-				F5448E3A0379EF2501B94948 /* p11x_util.c */,
-				F5448E3B0379EF2501B94948 /* pkcs11.h */,
-				F5448E3C0379EF2501B94948 /* pkcs11f.h */,
-				F5448E3D0379EF2501B94948 /* pkcs11t.h */,
-				F5448E3E0379EF2501B94948 /* thread_generic.h */,
-			);
-			name = PKCS11;
-			sourceTree = "<group>";
-		};
-		F537A7C90379ECDC01B94948 /* CACPlugin */ = {
-			isa = PBXGroup;
-			children = (
-				F5448E1A0379EEDD01B94948 /* commonAccessCard.c */,
-				F5448E1B0379EEDD01B94948 /* commonAccessCard.h */,
-				F5448E750379F15F01B94948 /* libz.dylib */,
-			);
-			name = CACPlugin;
-			sourceTree = "<group>";
-		};
-		F537A7CA0379ECE301B94948 /* CFlexPlugin */ = {
-			isa = PBXGroup;
-			children = (
-				F5448E160379EEC301B94948 /* cryptoflex.c */,
-				F5448E170379EEC301B94948 /* cryptoflex.h */,
-			);
-			name = CFlexPlugin;
-			sourceTree = "<group>";
-		};
-		F537A7CB0379ECEB01B94948 /* MCardPlugin */ = {
-			isa = PBXGroup;
-			children = (
-				F5448E120379EEA101B94948 /* musclecardApplet.c */,
-				F5448E130379EEA101B94948 /* musclecardApplet.h */,
-			);
-			name = MCardPlugin;
-			sourceTree = "<group>";
-		};
 		F538896A0397E93B012F6BBF /* InstallPhase */ = {
 			isa = PBXGroup;
 			children = (
@@ -953,125 +409,78 @@
 /* End PBXGroup section */
 
 /* Begin PBXHeadersBuildPhase section */
-		2CBB605506CA6944006AA7C8 /* Headers */ = {
+		5234B67E0E78286000F02D95 /* Headers */ = {
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				2CBB606606CA69F9006AA7C8 /* GSCISPlugin.h in Headers */,
+				5234B67F0E78286000F02D95 /* atrhandler.h in Headers */,
+				5234B6800E78286000F02D95 /* configfile.h in Headers */,
+				5234B6810E78286000F02D95 /* debuglog.h in Headers */,
+				5234B6820E78286000F02D95 /* dyn_generic.h in Headers */,
+				5234B6830E78286000F02D95 /* eventhandler.h in Headers */,
+				5234B6840E78286000F02D95 /* hotplug.h in Headers */,
+				5234B6850E78286000F02D95 /* ifdhandler.h in Headers */,
+				5234B6860E78286000F02D95 /* ifdwrapper.h in Headers */,
+				5234B6870E78286000F02D95 /* pcsclite.h in Headers */,
+				5234B6880E78286000F02D95 /* prothandler.h in Headers */,
+				5234B6890E78286000F02D95 /* readerfactory.h in Headers */,
+				5234B68A0E78286000F02D95 /* sys_generic.h in Headers */,
+				5234B68B0E78286000F02D95 /* thread_generic.h in Headers */,
+				5234B68C0E78286000F02D95 /* winscard_msg.h in Headers */,
+				5234B68D0E78286000F02D95 /* winscard_svc.h in Headers */,
+				5234B68E0E78286000F02D95 /* winscard.h in Headers */,
+				5234B68F0E78286000F02D95 /* wintypes.h in Headers */,
+				5234B6900E78286000F02D95 /* powermgt_generic.h in Headers */,
+				5234B6910E78286000F02D95 /* PCSCDevice.h in Headers */,
+				5234B6920E78286000F02D95 /* PCSCDriverBundle.h in Headers */,
+				5234B6930E78286000F02D95 /* PCSCDriverBundles.h in Headers */,
+				5234B6940E78286000F02D95 /* reader.h in Headers */,
+				5234B6950E78286000F02D95 /* pcscdmonitor.h in Headers */,
+				5234B6960E78286000F02D95 /* pcscdserver.h in Headers */,
+				5234B6970E78286000F02D95 /* readerstate.h in Headers */,
+				1F0A56E510F5EBE7005641B9 /* pcscd_reader.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		F51121280272F895017BB957 /* Headers */ = {
+		5234B6BE0E78286000F02D95 /* Headers */ = {
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				5234B6BF0E78286000F02D95 /* thread_generic.h in Headers */,
+				5234B6C00E78286000F02D95 /* pcsclite.h in Headers */,
+				5234B6C10E78286000F02D95 /* mscdefines.h in Headers */,
+				5234B6C20E78286000F02D95 /* musclecard.h in Headers */,
+				5234B6C30E78286000F02D95 /* winscard_msg.h in Headers */,
+				5234B6C40E78286000F02D95 /* tokenfactory.h in Headers */,
+				5234B6C50E78286000F02D95 /* winscard.h in Headers */,
+				5234B6C60E78286000F02D95 /* dyn_generic.h in Headers */,
+				5234B6C70E78286000F02D95 /* wintypes.h in Headers */,
+				5234B6C80E78286000F02D95 /* debuglog.h in Headers */,
+				5234B6C90E78286000F02D95 /* config.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		F5294A810090C73501CD285A /* Headers */ = {
+		5234B6E20E78286000F02D95 /* Headers */ = {
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				F52A94AE0254242101B94B21 /* atrhandler.h in Headers */,
-				F52A94AF0254242101B94B21 /* configfile.h in Headers */,
-				F52A94B00254242101B94B21 /* debuglog.h in Headers */,
-				F52A94B10254242101B94B21 /* dyn_generic.h in Headers */,
-				F52A94B20254242101B94B21 /* eventhandler.h in Headers */,
-				F52A94B30254242101B94B21 /* hotplug.h in Headers */,
-				F52A94B40254242101B94B21 /* ifdhandler.h in Headers */,
-				F52A94B50254242101B94B21 /* ifdwrapper.h in Headers */,
-				F52A94B60254242101B94B21 /* pcsclite.h in Headers */,
-				F52A94B70254242101B94B21 /* prothandler.h in Headers */,
-				F52A94B80254242101B94B21 /* readerfactory.h in Headers */,
-				F52A94B90254242101B94B21 /* sys_generic.h in Headers */,
-				F52A94BA0254242101B94B21 /* thread_generic.h in Headers */,
-				F52A94BB0254242101B94B21 /* winscard_msg.h in Headers */,
-				F52A94BC0254242101B94B21 /* winscard_svc.h in Headers */,
-				F52A94BD0254242101B94B21 /* winscard.h in Headers */,
-				F52A94BE0254242101B94B21 /* wintypes.h in Headers */,
-				F555DF380274968F01D2E99F /* powermgt_generic.h in Headers */,
-				5286294B0A87EA8E004FE8DC /* PCSCDevice.h in Headers */,
-				5286294D0A87EA8E004FE8DC /* PCSCDriverBundle.h in Headers */,
-				5286294F0A87EA8E004FE8DC /* PCSCDriverBundles.h in Headers */,
-				52D00D1C0A9252350093277A /* pcscd_reader.cpp in Headers */,
-				527CF60F0AA5192B007589FF /* pcscdmonitor.h in Headers */,
-				527CF6110AA5192B007589FF /* pcscdserver.h in Headers */,
-				5236DD1F0B9DDBD7007CEF56 /* readerstate.h in Headers */,
-				1F1EAA6410230EAA008E5842 /* reader.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		F5294AD50090CAE601CD285A /* Headers */ = {
+		5234B6EF0E78286000F02D95 /* Headers */ = {
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		F52A93D502541D8C01B94B21 /* Headers */ = {
-			isa = PBXHeadersBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				F52A94D5025424AC01B94B21 /* thread_generic.h in Headers */,
-				F52A94D6025424AC01B94B21 /* pcsclite.h in Headers */,
-				F52A94D7025424AC01B94B21 /* mscdefines.h in Headers */,
-				F52A94D8025424AC01B94B21 /* musclecard.h in Headers */,
-				F52A94D9025424AC01B94B21 /* winscard_msg.h in Headers */,
-				F52A94DA025424AC01B94B21 /* tokenfactory.h in Headers */,
-				F52A94DB025424AC01B94B21 /* winscard.h in Headers */,
-				F52A94DC025424AC01B94B21 /* dyn_generic.h in Headers */,
-				F503CAE402542A9201B94B21 /* wintypes.h in Headers */,
-				F52A94DD025424AC01B94B21 /* debuglog.h in Headers */,
-				F537A7B40379EB7B01B94948 /* config.h in Headers */,
-				1FBFA95A1021DF2B001ACCE5 /* reader.h in Headers */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F537A7CC0379ED7501B94948 /* Headers */ = {
-			isa = PBXHeadersBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				F5448E3F0379EF2501B94948 /* cryptoki_unix.h in Headers */,
-				F5448E400379EF2501B94948 /* cryptoki.h in Headers */,
-				F5448E530379EF2501B94948 /* p11x_msc.h in Headers */,
-				F5448E5C0379EF2501B94948 /* pkcs11.h in Headers */,
-				F5448E5D0379EF2501B94948 /* pkcs11f.h in Headers */,
-				F5448E5E0379EF2501B94948 /* pkcs11t.h in Headers */,
-				F5448E5F0379EF2501B94948 /* thread_generic.h in Headers */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F5448DFD0379EE2A01B94948 /* Headers */ = {
-			isa = PBXHeadersBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				F5448E150379EEA101B94948 /* musclecardApplet.h in Headers */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F5448E040379EE3601B94948 /* Headers */ = {
-			isa = PBXHeadersBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				F5448E1D0379EEDD01B94948 /* commonAccessCard.h in Headers */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F5448E0B0379EE6401B94948 /* Headers */ = {
-			isa = PBXHeadersBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				F5448E190379EEC301B94948 /* cryptoflex.h in Headers */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 /* End PBXHeadersBuildPhase section */
 
 /* Begin PBXLegacyTarget section */
-		F538896903953B79012F6BBF /* InstallPhase */ = {
+		5234B7280E78286000F02D95 /* InstallPhase */ = {
 			isa = PBXLegacyTarget;
 			buildArgumentsString = "-f Makefile.installPhase $ALL_SETTINGS $ACTION";
-			buildConfigurationList = C27AD1EE0987FCDC001272E0 /* Build configuration list for PBXLegacyTarget "InstallPhase" */;
+			buildConfigurationList = 5234B7290E78286000F02D95 /* Build configuration list for PBXLegacyTarget "InstallPhase" */;
 			buildPhases = (
 			);
 			buildToolPath = /usr/bin/gnumake;
@@ -1084,6 +493,82 @@
 		};
 /* End PBXLegacyTarget section */
 
+/* Begin PBXNativeTarget section */
+		5234B67D0E78286000F02D95 /* pcscd */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 5234B6B60E78286000F02D95 /* Build configuration list for PBXNativeTarget "pcscd" */;
+			buildPhases = (
+				5234B67E0E78286000F02D95 /* Headers */,
+				5234B6980E78286000F02D95 /* Sources */,
+				5234B6B10E78286000F02D95 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = pcscd;
+			productInstallPath = /usr/sbin;
+			productName = pcscd;
+			productReference = 5234B6BB0E78286000F02D95 /* pcscd */;
+			productType = "com.apple.product-type.tool";
+		};
+		5234B6BD0E78286000F02D95 /* PCSC */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 5234B6DA0E78286000F02D95 /* Build configuration list for PBXNativeTarget "PCSC" */;
+			buildPhases = (
+				5234B6BE0E78286000F02D95 /* Headers */,
+				5234B6CA0E78286000F02D95 /* Resources */,
+				5234B6CB0E78286000F02D95 /* Sources */,
+				5234B6D70E78286000F02D95 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = PCSC;
+			productInstallPath = /System/Library/Frameworks;
+			productName = PCSC;
+			productReference = 5234B6E00E78286000F02D95 /* PCSC.framework */;
+			productType = "com.apple.product-type.framework";
+		};
+		5234B6E10E78286000F02D95 /* pcsctest */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 5234B6E70E78286000F02D95 /* Build configuration list for PBXNativeTarget "pcsctest" */;
+			buildPhases = (
+				5234B6E20E78286000F02D95 /* Headers */,
+				5234B6E30E78286000F02D95 /* Sources */,
+				5234B6E50E78286000F02D95 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = pcsctest;
+			productInstallPath = /usr/bin;
+			productName = testpcsc;
+			productReference = 5234B6EC0E78286000F02D95 /* pcsctest */;
+			productType = "com.apple.product-type.tool";
+		};
+		5234B6EE0E78286000F02D95 /* pcsctool */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 5234B6F40E78286000F02D95 /* Build configuration list for PBXNativeTarget "pcsctool" */;
+			buildPhases = (
+				5234B6EF0E78286000F02D95 /* Headers */,
+				5234B6F00E78286000F02D95 /* Sources */,
+				5234B6F20E78286000F02D95 /* Frameworks */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = pcsctool;
+			productInstallPath = /usr/bin/;
+			productName = pcsctool;
+			productReference = 5234B6F90E78286000F02D95 /* pcsctool */;
+			productType = "com.apple.product-type.tool";
+		};
+/* End PBXNativeTarget section */
+
 /* Begin PBXProject section */
 		F5294A4F0090C4CA01CD285A /* Project object */ = {
 			isa = PBXProject;
@@ -1095,539 +580,240 @@
 			projectDirPath = "";
 			projectRoot = "";
 			targets = (
-				F5294A510090C54E01CD285A /* World */,
-				F5294A800090C73501CD285A /* pcscd */,
-				F52A93D402541D8C01B94B21 /* PCSC */,
-				F5294AD40090CAE601CD285A /* pcsctest */,
-				F51121270272F895017BB957 /* pcsctool */,
-				F537A7D10379ED7501B94948 /* PKCS11 */,
-				F5448E020379EE2A01B94948 /* MCardPlugin */,
-				F5448E090379EE3601B94948 /* CACPlugin */,
-				F5448E100379EE6401B94948 /* CFlexPlugin */,
-				F538896903953B79012F6BBF /* InstallPhase */,
-				2CBB605A06CA6944006AA7C8 /* GSCISPlugin */,
+				5234B66B0E78286000F02D95 /* World */,
+				5234B67D0E78286000F02D95 /* pcscd */,
+				5234B6BD0E78286000F02D95 /* PCSC */,
+				5234B6E10E78286000F02D95 /* pcsctest */,
+				5234B6EE0E78286000F02D95 /* pcsctool */,
+				5234B7280E78286000F02D95 /* InstallPhase */,
 			);
 		};
 /* End PBXProject section */
 
 /* Begin PBXResourcesBuildPhase section */
-		2CBB605606CA6944006AA7C8 /* Resources */ = {
+		5234B6CA0E78286000F02D95 /* Resources */ = {
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		F52A93D602541D8C01B94B21 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F537A7CD0379ED7501B94948 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F5448DFE0379EE2A01B94948 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F5448E050379EE3601B94948 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F5448E0C0379EE6401B94948 /* Resources */ = {
-			isa = PBXResourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
-		2CBB605706CA6944006AA7C8 /* Sources */ = {
+		5234B6980E78286000F02D95 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				2CBB606506CA69F9006AA7C8 /* GSCISPlugin.c in Sources */,
+				5234B6990E78286000F02D95 /* atrhandler.c in Sources */,
+				5234B69A0E78286000F02D95 /* readerstate.cpp in Sources */,
+				5234B69B0E78286000F02D95 /* configfile.c in Sources */,
+				5234B69C0E78286000F02D95 /* debuglog.c in Sources */,
+				5234B69D0E78286000F02D95 /* dyn_macosx.c in Sources */,
+				5234B69E0E78286000F02D95 /* eventhandler.cpp in Sources */,
+				5234B69F0E78286000F02D95 /* ifdwrapper.c in Sources */,
+				5234B6A00E78286000F02D95 /* pcscdaemon.c in Sources */,
+				5234B6A10E78286000F02D95 /* prothandler.c in Sources */,
+				5234B6A20E78286000F02D95 /* readerfactory.c in Sources */,
+				5234B6A30E78286000F02D95 /* thread_macosx.c in Sources */,
+				5234B6A40E78286000F02D95 /* winscard_msg.cpp in Sources */,
+				5234B6A50E78286000F02D95 /* winscard_svc.c in Sources */,
+				5234B6A60E78286000F02D95 /* powermgt_macosx.c in Sources */,
+				5234B6A70E78286000F02D95 /* sys_macosx.cpp in Sources */,
+				5234B6A80E78286000F02D95 /* hotplug_macosx.cpp in Sources */,
+				5234B6A90E78286000F02D95 /* PCSCDevice.cpp in Sources */,
+				5234B6AA0E78286000F02D95 /* PCSCDriverBundle.cpp in Sources */,
+				5234B6AB0E78286000F02D95 /* PCSCDriverBundles.cpp in Sources */,
+				5234B6AD0E78286000F02D95 /* pcscdmonitor.cpp in Sources */,
+				5234B6AE0E78286000F02D95 /* pcscdserver.cpp in Sources */,
+				5234B6AF0E78286000F02D95 /* winscard_msg_srv.c in Sources */,
+				5234B6B00E78286000F02D95 /* winscard.c in Sources */,
+				1F0A56E410F5EBE7005641B9 /* pcscd_reader.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		F51121290272F895017BB957 /* Sources */ = {
+		5234B6CB0E78286000F02D95 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				F511212D0272F8D9017BB957 /* bundleTool.c in Sources */,
+				5234B6CC0E78286000F02D95 /* readerstate.cpp in Sources */,
+				5234B6CD0E78286000F02D95 /* thread_macosx.c in Sources */,
+				5234B6CE0E78286000F02D95 /* musclecard.c in Sources */,
+				5234B6CF0E78286000F02D95 /* dyn_macosx.c in Sources */,
+				5234B6D00E78286000F02D95 /* winscard_msg.cpp in Sources */,
+				5234B6D10E78286000F02D95 /* tokenfactory.c in Sources */,
+				5234B6D20E78286000F02D95 /* sys_unix.c in Sources */,
+				5234B6D30E78286000F02D95 /* tokenparser.c in Sources */,
+				5234B6D40E78286000F02D95 /* debuglog.c in Sources */,
+				5234B6D50E78286000F02D95 /* winscard_clnt.c in Sources */,
+				1F0A572610F5EDE3005641B9 /* error.c in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		F5294A820090C73501CD285A /* Sources */ = {
+		5234B6E30E78286000F02D95 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				F52A94520254232701B94B21 /* atrhandler.c in Sources */,
-				52C3C14D0BA5D54100436862 /* readerstate.cpp in Sources */,
-				F52A94BF0254242101B94B21 /* configfile.c in Sources */,
-				F52A94C00254242101B94B21 /* debuglog.c in Sources */,
-				F52A94C10254242101B94B21 /* dyn_macosx.c in Sources */,
-				F52A94C20254242101B94B21 /* eventhandler.cpp in Sources */,
-				F52A94C40254242101B94B21 /* ifdwrapper.c in Sources */,
-				F52A94C50254242101B94B21 /* pcscdaemon.c in Sources */,
-				F52A94C60254242101B94B21 /* prothandler.c in Sources */,
-				F52A94C70254242101B94B21 /* readerfactory.c in Sources */,
-				F52A94C90254242101B94B21 /* thread_macosx.c in Sources */,
-				F52A94CA0254242101B94B21 /* winscard_msg.cpp in Sources */,
-				F52A94CB0254242101B94B21 /* winscard_svc.c in Sources */,
-				F555DF360274962801D2E99F /* powermgt_macosx.c in Sources */,
-				C2F2094B0662B851001DFD06 /* sys_macosx.cpp in Sources */,
-				528629490A87EA8E004FE8DC /* hotplug_macosx.cpp in Sources */,
-				5286294A0A87EA8E004FE8DC /* PCSCDevice.cpp in Sources */,
-				5286294C0A87EA8E004FE8DC /* PCSCDriverBundle.cpp in Sources */,
-				5286294E0A87EA8E004FE8DC /* PCSCDriverBundles.cpp in Sources */,
-				52D00D1D0A9252350093277A /* pcscd_reader.cpp in Sources */,
-				527CF60E0AA5192B007589FF /* pcscdmonitor.cpp in Sources */,
-				527CF6100AA5192B007589FF /* pcscdserver.cpp in Sources */,
-				52D2492D0BA07E1100F9827A /* winscard_msg_srv.c in Sources */,
-				52E0D59E0BA7006D008DFDDF /* winscard.c in Sources */,
+				5234B6E40E78286000F02D95 /* testpcsc.c in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		F5294AD60090CAE601CD285A /* Sources */ = {
+		5234B6F00E78286000F02D95 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				F503CACF025425E601B94B21 /* testpcsc.c in Sources */,
+				5234B6F10E78286000F02D95 /* bundleTool.c in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
-		F52A93D702541D8C01B94B21 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				52C3C1480BA5D46900436862 /* readerstate.cpp in Sources */,
-				52D58C560A8803A800DC3F19 /* thread_macosx.c in Sources */,
-				F52A94DE025424AC01B94B21 /* musclecard.c in Sources */,
-				F52A94DF025424AC01B94B21 /* dyn_macosx.c in Sources */,
-				F52A94E5025424F101B94B21 /* winscard_msg.cpp in Sources */,
-				F52A94E0025424AC01B94B21 /* tokenfactory.c in Sources */,
-				F52A94E7025424F101B94B21 /* sys_unix.c in Sources */,
-				F52A94E1025424AC01B94B21 /* tokenparser.c in Sources */,
-				F52A94E3025424AC01B94B21 /* debuglog.c in Sources */,
-				F52A94E4025424AC01B94B21 /* winscard_clnt.c in Sources */,
-				52DBCAAF0BB851C8007D06A5 /* PCSC.exp in Sources */,
-				1FBFA8BE1021A563001ACCE5 /* error.c in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F537A7CE0379ED7501B94948 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				F5448E410379EF2501B94948 /* p11_crypt.c in Sources */,
-				F5448E420379EF2501B94948 /* p11_digest.c in Sources */,
-				F5448E430379EF2501B94948 /* p11_dual.c in Sources */,
-				F5448E440379EF2501B94948 /* p11_ext.c in Sources */,
-				F5448E450379EF2501B94948 /* p11_general.c in Sources */,
-				F5448E460379EF2501B94948 /* p11_key.c in Sources */,
-				F5448E470379EF2501B94948 /* p11_object.c in Sources */,
-				F5448E480379EF2501B94948 /* p11_parallel.c in Sources */,
-				F5448E490379EF2501B94948 /* p11_random.c in Sources */,
-				F5448E4A0379EF2501B94948 /* p11_session.c in Sources */,
-				F5448E4B0379EF2501B94948 /* p11_sign.c in Sources */,
-				F5448E4C0379EF2501B94948 /* p11_token.c in Sources */,
-				F5448E4D0379EF2501B94948 /* p11_verify.c in Sources */,
-				F5448E4E0379EF2501B94948 /* p11x_async.c in Sources */,
-				F5448E4F0379EF2501B94948 /* p11x_bio.c in Sources */,
-				F5448E500379EF2501B94948 /* p11x_error.c in Sources */,
-				F5448E510379EF2501B94948 /* p11x_log.c in Sources */,
-				F5448E520379EF2501B94948 /* p11x_msc.c in Sources */,
-				F5448E540379EF2501B94948 /* p11x_object.c in Sources */,
-				F5448E550379EF2501B94948 /* p11x_prefs.c in Sources */,
-				F5448E560379EF2501B94948 /* p11x_session.c in Sources */,
-				F5448E570379EF2501B94948 /* p11x_slot.c in Sources */,
-				F5448E580379EF2501B94948 /* p11x_state.c in Sources */,
-				F5448E590379EF2501B94948 /* p11x_thread.c in Sources */,
-				F5448E5B0379EF2501B94948 /* p11x_util.c in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F5448DFF0379EE2A01B94948 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				F5448E140379EEA101B94948 /* musclecardApplet.c in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F5448E060379EE3601B94948 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				F5448E1C0379EEDD01B94948 /* commonAccessCard.c in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		F5448E0D0379EE6401B94948 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				F5448E180379EEC301B94948 /* cryptoflex.c in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
-		2CBB607506CA6DDE006AA7C8 /* PBXTargetDependency */ = {
+		5234B72F0E78286000F02D95 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
-			target = 2CBB605A06CA6944006AA7C8 /* GSCISPlugin */;
-			targetProxy = 2CBB607406CA6DDE006AA7C8 /* PBXContainerItemProxy */;
+			target = 5234B6BD0E78286000F02D95 /* PCSC */;
+			targetProxy = 5234B72E0E78286000F02D95 /* PBXContainerItemProxy */;
 		};
-		F511213B0272FA1C017BB957 /* PBXTargetDependency */ = {
+		5234B7310E78286000F02D95 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
-			target = F51121270272F895017BB957 /* pcsctool */;
-			targetProxy = 4CFE9C0C059254C9007119DE /* PBXContainerItemProxy */;
+			target = 5234B67D0E78286000F02D95 /* pcscd */;
+			targetProxy = 5234B7300E78286000F02D95 /* PBXContainerItemProxy */;
 		};
-		F520A5F60257B49C01D97E8A /* PBXTargetDependency */ = {
+		5234B7330E78286000F02D95 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
-			target = F52A93D402541D8C01B94B21 /* PCSC */;
-			targetProxy = 4CFE9C0E059254C9007119DE /* PBXContainerItemProxy */;
+			target = 5234B6E10E78286000F02D95 /* pcsctest */;
+			targetProxy = 5234B7320E78286000F02D95 /* PBXContainerItemProxy */;
 		};
-		F520E3A001F6204201B94B28 /* PBXTargetDependency */ = {
+		5234B7350E78286000F02D95 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
-			target = F5294A800090C73501CD285A /* pcscd */;
-			targetProxy = 4CFE9C06059254C9007119DE /* PBXContainerItemProxy */;
+			target = 5234B6EE0E78286000F02D95 /* pcsctool */;
+			targetProxy = 5234B7340E78286000F02D95 /* PBXContainerItemProxy */;
 		};
-		F520E3A301F6204201B94B28 /* PBXTargetDependency */ = {
+		5234B7390E78286000F02D95 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
-			target = F5294AD40090CAE601CD285A /* pcsctest */;
-			targetProxy = 4CFE9C0D059254C9007119DE /* PBXContainerItemProxy */;
+			target = 5234B7280E78286000F02D95 /* InstallPhase */;
+			targetProxy = 5234B7380E78286000F02D95 /* PBXContainerItemProxy */;
 		};
-		F5448E810379FE0101B94948 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = F537A7D10379ED7501B94948 /* PKCS11 */;
-			targetProxy = 4CFE9C0B059254C9007119DE /* PBXContainerItemProxy */;
-		};
-		F5448E820379FE0501B94948 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = F5448E020379EE2A01B94948 /* MCardPlugin */;
-			targetProxy = 4CFE9C05059254C8007119DE /* PBXContainerItemProxy */;
-		};
-		F5448E830379FE0801B94948 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = F5448E090379EE3601B94948 /* CACPlugin */;
-			targetProxy = 4CFE9C0A059254C9007119DE /* PBXContainerItemProxy */;
-		};
-		F5448E840379FE0C01B94948 /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = F5448E100379EE6401B94948 /* CFlexPlugin */;
-			targetProxy = 4CFE9C07059254C9007119DE /* PBXContainerItemProxy */;
-		};
-		F54DC28B0397F35F01115D8D /* PBXTargetDependency */ = {
-			isa = PBXTargetDependency;
-			target = F538896903953B79012F6BBF /* InstallPhase */;
-			targetProxy = 4CFE9C09059254C9007119DE /* PBXContainerItemProxy */;
-		};
 /* End PBXTargetDependency section */
 
-/* Begin PBXToolTarget section */
-		F51121270272F895017BB957 /* pcsctool */ = {
-			isa = PBXToolTarget;
-			buildConfigurationList = C27AD1D00987FCDC001272E0 /* Build configuration list for PBXToolTarget "pcsctool" */;
-			buildPhases = (
-				F51121280272F895017BB957 /* Headers */,
-				F51121290272F895017BB957 /* Sources */,
-				F511212A0272F895017BB957 /* Frameworks */,
-			);
-			dependencies = (
-			);
-			name = pcsctool;
-			productInstallPath = /usr/bin/;
-			productName = pcsctool;
-			productReference = F51121260272F895017BB957 /* pcsctool */;
-		};
-		F5294A800090C73501CD285A /* pcscd */ = {
-			isa = PBXToolTarget;
-			buildConfigurationList = C27AD1C60987FCDB001272E0 /* Build configuration list for PBXToolTarget "pcscd" */;
-			buildPhases = (
-				F5294A810090C73501CD285A /* Headers */,
-				F5294A820090C73501CD285A /* Sources */,
-				F5294A830090C73501CD285A /* Frameworks */,
-			);
-			dependencies = (
-			);
-			name = pcscd;
-			productInstallPath = /usr/sbin;
-			productName = pcscd;
-			productReference = F5294A7E0090C73501CD285A /* pcscd */;
-		};
-		F5294AD40090CAE601CD285A /* pcsctest */ = {
-			isa = PBXToolTarget;
-			buildConfigurationList = C27AD1CB0987FCDB001272E0 /* Build configuration list for PBXToolTarget "pcsctest" */;
-			buildPhases = (
-				F5294AD50090CAE601CD285A /* Headers */,
-				F5294AD60090CAE601CD285A /* Sources */,
-				F5294AD70090CAE601CD285A /* Frameworks */,
-			);
-			dependencies = (
-			);
-			name = pcsctest;
-			productInstallPath = /usr/bin;
-			productName = testpcsc;
-			productReference = F5294AD30090CAE601CD285A /* pcsctest */;
-		};
-/* End PBXToolTarget section */
-
 /* Begin XCBuildConfiguration section */
-		C27AD1C20987FCDB001272E0 /* Development */ = {
+		5234B6790E78286000F02D95 /* Development */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				BUILD_VARIANTS = debug;
-				CURRENT_PROJECT_VERSION = 1;
-				DYLIB_COMPATIBILITY_VERSION = 1;
-				DYLIB_CURRENT_VERSION = 1;
-				EXPORTED_SYMBOLS_FILE = "\"$(SRCROOT)/src/PCSC/PCSC.exp\"";
-				FRAMEWORK_SEARCH_PATHS = (
-					"$(inherited)",
-					/usr/local/SecurityPieces/Frameworks,
-				);
-				FRAMEWORK_VERSION = A;
 				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
-				INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
-				OPT_CFLAGS = "-DNDEBUG -Os $(OPT_INLINEFLAGS)";
-				OPT_CPPFLAGS = "$(OPT_CFLAGS)";
-				OPT_INLINEFLAGS = "-finline-functions";
-				OPT_LDFLAGS = "-dead_strip";
-				OTHER_ASFLAGS_debug = "$(OTHER_CFLAGS)";
-				OTHER_ASFLAGS_normal = "-DNDEBUG $(OTHER_CFLAGS)";
-				OTHER_ASFLAGS_profile = "-DNDEBUG $(OTHER_CFLAGS) -pg";
-				OTHER_CFLAGS = (
-					"-DPCSC_DEBUG=1",
-					"-DUSE_SYSLOG=1",
-					"-DUSE_DAEMON=1",
-				);
-				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS) -O0 -fno-inline";
-				OTHER_CFLAGS_normal = "$(OPT_CFLAGS)  $(OTHER_CFLAGS)";
-				OTHER_CFLAGS_profile = "$(OPT_CFLAGS)  $(OTHER_CFLAGS) -pg";
-				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CFLAGS) -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_normal = "$(OPT_CPPFLAGS) $(OTHER_CFLAGS)";
-				OTHER_CPLUSPLUSFLAGS_profile = "$(OPT_CPPFLAGS) $(OTHER_CFLAGS) -pg";
-				OTHER_LDFLAGS_debug = "$(OTHER_LDFLAGS)";
-				OTHER_LDFLAGS_normal = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS)";
-				OTHER_LDFLAGS_profile = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS) -pg";
-				PRODUCT_NAME = PCSC;
-				VERSIONING_SYSTEM = "apple-generic";
+				OTHER_CFLAGS = "";
+				OTHER_LDFLAGS = "";
+				OTHER_REZFLAGS = "";
+				PRODUCT_NAME = World;
+				SECTORDER_FLAGS = "";
 				WARNING_CFLAGS = (
 					"-Wmost",
 					"-Wno-four-char-constants",
 					"-Wno-unknown-pragmas",
 				);
-				WRAPPER_EXTENSION = framework;
 				ZERO_LINK = YES;
 			};
 			name = Development;
 		};
-		C27AD1C30987FCDB001272E0 /* Deployment */ = {
+		5234B67A0E78286000F02D95 /* Deployment */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				BUILD_VARIANTS = (
-					normal,
-					debug,
-				);
-				CURRENT_PROJECT_VERSION = 1;
-				DYLIB_COMPATIBILITY_VERSION = 1;
-				DYLIB_CURRENT_VERSION = 1;
-				EXPORTED_SYMBOLS_FILE = "\"$(SRCROOT)/src/PCSC/PCSC.exp\"";
-				FRAMEWORK_SEARCH_PATHS = (
-					"$(inherited)",
-					/usr/local/SecurityPieces/Frameworks,
-				);
-				FRAMEWORK_VERSION = A;
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
-				OPT_CFLAGS = "-DNDEBUG -Os $(OPT_INLINEFLAGS)";
-				OPT_CPPFLAGS = "$(OPT_CFLAGS)";
-				OPT_INLINEFLAGS = "-finline-functions";
-				OPT_LDFLAGS = "-dead_strip";
-				OTHER_ASFLAGS_debug = "$(OTHER_CFLAGS)";
-				OTHER_ASFLAGS_normal = "-DNDEBUG $(OTHER_CFLAGS)";
-				OTHER_ASFLAGS_profile = "-DNDEBUG $(OTHER_CFLAGS) -pg";
-				OTHER_CFLAGS = (
-					"-DPCSC_DEBUG=1",
-					"-DUSE_SYSLOG=1",
-					"-DUSE_DAEMON=1",
-				);
-				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS) -O0 -fno-inline";
-				OTHER_CFLAGS_normal = "$(OPT_CFLAGS)  $(OTHER_CFLAGS)";
-				OTHER_CFLAGS_profile = "$(OPT_CFLAGS)  $(OTHER_CFLAGS) -pg";
-				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CFLAGS) -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_normal = "$(OPT_CPPFLAGS) $(OTHER_CFLAGS)";
-				OTHER_CPLUSPLUSFLAGS_profile = "$(OPT_CPPFLAGS) $(OTHER_CFLAGS) -pg";
-				OTHER_LDFLAGS_debug = "$(OTHER_LDFLAGS)";
-				OTHER_LDFLAGS_normal = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS)";
-				OTHER_LDFLAGS_profile = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS) -pg";
-				PRODUCT_NAME = PCSC;
-				VERSIONING_SYSTEM = "apple-generic";
+				OTHER_CFLAGS = "";
+				OTHER_LDFLAGS = "";
+				OTHER_REZFLAGS = "";
+				PRODUCT_NAME = World;
+				SECTORDER_FLAGS = "";
 				WARNING_CFLAGS = (
 					"-Wmost",
 					"-Wno-four-char-constants",
 					"-Wno-unknown-pragmas",
 				);
-				WRAPPER_EXTENSION = framework;
 				ZERO_LINK = NO;
 			};
 			name = Deployment;
 		};
-		C27AD1C40987FCDB001272E0 /* normal with debug */ = {
+		5234B67B0E78286000F02D95 /* normal with debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				BUILD_VARIANTS = normal;
-				CURRENT_PROJECT_VERSION = 1;
-				DYLIB_COMPATIBILITY_VERSION = 1;
-				DYLIB_CURRENT_VERSION = 1;
-				EXPORTED_SYMBOLS_FILE = "\"$(SRCROOT)/src/PCSC/PCSC.exp\"";
-				FRAMEWORK_SEARCH_PATHS = (
-					"$(inherited)",
-					/usr/local/SecurityPieces/Frameworks,
-				);
-				FRAMEWORK_VERSION = A;
-				INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
-				OPT_CFLAGS = "-DNDEBUG -Os $(OPT_INLINEFLAGS)";
-				OPT_CPPFLAGS = "$(OPT_CFLAGS)";
-				OPT_INLINEFLAGS = "-finline-functions";
 				OPT_LDFLAGS = "";
 				OPT_LDXFLAGS = "";
 				OPT_LDXNOPIC = "";
-				OTHER_ASFLAGS_debug = "$(OTHER_CFLAGS)";
 				OTHER_ASFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG";
-				OTHER_ASFLAGS_profile = "-DNDEBUG $(OTHER_CFLAGS) -pg";
-				OTHER_CFLAGS = (
-					"-DPCSC_DEBUG=1",
-					"-DUSE_SYSLOG=1",
-					"-DUSE_DAEMON=1",
-				);
-				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS) -O0 -fno-inline";
-				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_CFLAGS_profile = "$(OPT_CFLAGS)  $(OTHER_CFLAGS) -pg";
-				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CFLAGS) -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_profile = "$(OPT_CPPFLAGS) $(OTHER_CFLAGS) -pg";
-				OTHER_LDFLAGS_debug = "$(OTHER_LDFLAGS)";
-				OTHER_LDFLAGS_normal = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS)";
-				OTHER_LDFLAGS_profile = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS) -pg";
+				OTHER_CFLAGS = "";
+				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG  -fno-inline";
+				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG  -fno-inline";
+				OTHER_LDFLAGS = "";
+				OTHER_REZFLAGS = "";
 				PREBINDING = NO;
-				PRODUCT_NAME = PCSC;
+				PRODUCT_NAME = World;
 				SECTORDER_FLAGS = "";
-				VERSIONING_SYSTEM = "apple-generic";
 				WARNING_CFLAGS = (
 					"-Wmost",
 					"-Wno-four-char-constants",
 					"-Wno-unknown-pragmas",
 				);
-				WRAPPER_EXTENSION = framework;
 			};
 			name = "normal with debug";
 		};
-		C27AD1C50987FCDB001272E0 /* Default */ = {
+		5234B67C0E78286000F02D95 /* Default */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				BUILD_VARIANTS = (
-					normal,
-					debug,
-				);
-				CURRENT_PROJECT_VERSION = 1;
-				DYLIB_COMPATIBILITY_VERSION = 1;
-				DYLIB_CURRENT_VERSION = 1;
-				EXPORTED_SYMBOLS_FILE = "\"$(SRCROOT)/src/PCSC/PCSC.exp\"";
-				FRAMEWORK_SEARCH_PATHS = (
-					"$(inherited)",
-					/usr/local/SecurityPieces/Frameworks,
-				);
-				FRAMEWORK_VERSION = A;
-				INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
-				OPT_CFLAGS = "-DNDEBUG -Os $(OPT_INLINEFLAGS)";
-				OPT_CPPFLAGS = "$(OPT_CFLAGS)";
-				OPT_INLINEFLAGS = "-finline-functions";
-				OPT_LDFLAGS = "-dead_strip";
-				OTHER_ASFLAGS_debug = "$(OTHER_CFLAGS)";
-				OTHER_ASFLAGS_normal = "-DNDEBUG $(OTHER_CFLAGS)";
-				OTHER_ASFLAGS_profile = "-DNDEBUG $(OTHER_CFLAGS) -pg";
-				OTHER_CFLAGS = (
-					"-DPCSC_DEBUG=1",
-					"-DUSE_SYSLOG=1",
-					"-DUSE_DAEMON=1",
-				);
-				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS) -O0 -fno-inline";
-				OTHER_CFLAGS_normal = "$(OPT_CFLAGS)  $(OTHER_CFLAGS)";
-				OTHER_CFLAGS_profile = "$(OPT_CFLAGS)  $(OTHER_CFLAGS) -pg";
-				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CFLAGS) -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_normal = "$(OPT_CPPFLAGS) $(OTHER_CFLAGS)";
-				OTHER_CPLUSPLUSFLAGS_profile = "$(OPT_CPPFLAGS) $(OTHER_CFLAGS) -pg";
-				OTHER_LDFLAGS_debug = "$(OTHER_LDFLAGS)";
-				OTHER_LDFLAGS_normal = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS)";
-				OTHER_LDFLAGS_profile = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS) -pg";
-				PRODUCT_NAME = PCSC;
-				VERSIONING_SYSTEM = "apple-generic";
+				OTHER_CFLAGS = "";
+				OTHER_LDFLAGS = "";
+				OTHER_REZFLAGS = "";
+				PRODUCT_NAME = World;
+				SECTORDER_FLAGS = "";
 				WARNING_CFLAGS = (
 					"-Wmost",
 					"-Wno-four-char-constants",
 					"-Wno-unknown-pragmas",
 				);
-				WRAPPER_EXTENSION = framework;
 			};
 			name = Default;
 		};
-		C27AD1C70987FCDB001272E0 /* Development */ = {
+		5234B6B70E78286000F02D95 /* Development */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				ARCHS = "$(NATIVE_ARCH)";
 				BUILD_VARIANTS = debug;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 36160;
 				FRAMEWORK_SEARCH_PATHS = (
 					"${BUILT_PRODUCTS_DIR}",
 					/usr/local/SecurityPieces/Components/Security,
 					/usr/local/SecurityPieces/Frameworks,
 				);
 				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"PCSC_DEBUG=1",
+					"USE_SYSLOG=1",
+					"USE_DAEMON=1",
+				);
 				HEADER_SEARCH_PATHS = (
 					/System/Library/Frameworks/CoreFoundation.framework/Headers,
 					/System/Library/Frameworks/IOKit.framework/Headers/usb,
 					/System/Library/Frameworks/IOKit.framework/Headers,
 				);
 				INSTALL_PATH = /usr/sbin;
+				ONLY_ACTIVE_ARCH = NO;
 				OPT_CPPXFLAGS = "$(OPT_CXFLAGS)";
-				OPT_CXFLAGS = "-DNDEBUG -Os $(OPT_INLINEXFLAGS)";
+				OPT_CXFLAGS = "-DNDEBUG  $(OPT_INLINEXFLAGS)";
 				OPT_INLINEXFLAGS = "-finline-functions";
 				OPT_LDXFLAGS = "-dead_strip";
 				OPT_LDXNOPIC = ",_nopic";
 				OTHER_ASFLAGS_debug = "$(OTHER_CFLAGS)";
 				OTHER_ASFLAGS_normal = "-DNDEBUG $(OTHER_CFLAGS)";
 				OTHER_ASFLAGS_profile = "-DNDEBUG $(OTHER_CFLAGS) -pg";
-				OTHER_CFLAGS = (
-					"-DPCSC_DEBUG=1",
-					"-DUSE_SYSLOG=1",
-					"-DUSE_DAEMON=1",
-				);
-				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS) -O0 -fno-inline";
+				OTHER_CFLAGS = "";
+				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS)  -fno-inline";
 				OTHER_CFLAGS_normal = "$(OPT_CXFLAGS) $(OTHER_CFLAGS)";
 				OTHER_CFLAGS_profile = "$(OPT_CXFLAGS) $(OTHER_CFLAGS) -pg";
-				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CPLUSPLUSFLAGS) -O0 -fno-inline";
+				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CPLUSPLUSFLAGS) -fno-inline";
 				OTHER_CPLUSPLUSFLAGS_normal = "$(OPT_CPPXFLAGS) $(OTHER_CPLUSPLUSFLAGS)";
 				OTHER_CPLUSPLUSFLAGS_profile = "$(OPT_CPPXFLAGS) $(OTHER_CPLUSPLUSFLAGS) -pg";
 				OTHER_LDFLAGS_debug = "$(OTHER_LDFLAGS) -framework Security,_debug -framework securityd_client,_debug -framework security_cdsa_client,_debug -framework security_cdsa_utilities,_debug -framework security_utilities,_debug";
@@ -1635,6 +821,7 @@
 				OTHER_LDFLAGS_profile = "$(OPT_LDXFLAGS) $(OTHER_LDFLAGS) -pg -framework Security,_profile -framework securityd_client,_profile -framework security_cdsa_client,_profile -framework security_cdsa_utilities,_profile -framework security_utilities,_profile";
 				PRODUCT_NAME = pcscd;
 				SECTORDER_FLAGS = "";
+				VALID_ARCHS = "i386 ppc ppc64 ppc7400 ppc970 x86_64";
 				VERSIONING_SYSTEM = "apple-generic";
 				WARNING_CFLAGS = (
 					"-Wmost",
@@ -1645,43 +832,45 @@
 			};
 			name = Development;
 		};
-		C27AD1C80987FCDB001272E0 /* Deployment */ = {
+		5234B6B80E78286000F02D95 /* Deployment */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				ARCHS = "$(NATIVE_ARCH)";
 				BUILD_VARIANTS = (
 					normal,
 					debug,
 				);
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 36160;
 				FRAMEWORK_SEARCH_PATHS = (
 					"${BUILT_PRODUCTS_DIR}",
 					/usr/local/SecurityPieces/Components/Security,
 					/usr/local/SecurityPieces/Frameworks,
 				);
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"PCSC_DEBUG=1",
+					"USE_SYSLOG=1",
+					"USE_DAEMON=1",
+				);
 				HEADER_SEARCH_PATHS = (
 					/System/Library/Frameworks/CoreFoundation.framework/Headers,
 					/System/Library/Frameworks/IOKit.framework/Headers/usb,
 					/System/Library/Frameworks/IOKit.framework/Headers,
 				);
 				INSTALL_PATH = /usr/sbin;
+				ONLY_ACTIVE_ARCH = NO;
 				OPT_CPPXFLAGS = "$(OPT_CXFLAGS)";
-				OPT_CXFLAGS = "-DNDEBUG -Os $(OPT_INLINEXFLAGS)";
+				OPT_CXFLAGS = "-DNDEBUG  $(OPT_INLINEXFLAGS)";
 				OPT_INLINEXFLAGS = "-finline-functions";
 				OPT_LDXFLAGS = "-dead_strip";
 				OPT_LDXNOPIC = ",_nopic";
 				OTHER_ASFLAGS_debug = "$(OTHER_CFLAGS)";
 				OTHER_ASFLAGS_normal = "-DNDEBUG $(OTHER_CFLAGS)";
 				OTHER_ASFLAGS_profile = "-DNDEBUG $(OTHER_CFLAGS) -pg";
-				OTHER_CFLAGS = (
-					"-DPCSC_DEBUG=1",
-					"-DUSE_SYSLOG=1",
-					"-DUSE_DAEMON=1",
-				);
-				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS) -O0 -fno-inline";
+				OTHER_CFLAGS = "";
+				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS) -fno-inline";
 				OTHER_CFLAGS_normal = "$(OPT_CXFLAGS) $(OTHER_CFLAGS)";
 				OTHER_CFLAGS_profile = "$(OPT_CXFLAGS) $(OTHER_CFLAGS) -pg";
-				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CPLUSPLUSFLAGS) -O0 -fno-inline";
+				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CPLUSPLUSFLAGS) -fno-inline";
 				OTHER_CPLUSPLUSFLAGS_normal = "$(OPT_CPPXFLAGS) $(OTHER_CPLUSPLUSFLAGS)";
 				OTHER_CPLUSPLUSFLAGS_profile = "$(OPT_CPPXFLAGS) $(OTHER_CPLUSPLUSFLAGS) -pg";
 				OTHER_LDFLAGS_debug = "$(OTHER_LDFLAGS) -framework Security,_debug -framework securityd_client,_debug -framework security_cdsa_client,_debug -framework security_cdsa_utilities,_debug -framework security_utilities,_debug";
@@ -1689,6 +878,7 @@
 				OTHER_LDFLAGS_profile = "$(OPT_LDXFLAGS) $(OTHER_LDFLAGS) -pg -framework Security,_profile -framework securityd_client,_profile -framework security_cdsa_client,_profile -framework security_cdsa_utilities,_profile -framework security_utilities,_profile";
 				PRODUCT_NAME = pcscd;
 				SECTORDER_FLAGS = "";
+				VALID_ARCHS = "i386 ppc ppc64 ppc7400 ppc970 x86_64";
 				VERSIONING_SYSTEM = "apple-generic";
 				WARNING_CFLAGS = (
 					"-Wmost",
@@ -1699,24 +889,31 @@
 			};
 			name = Deployment;
 		};
-		C27AD1C90987FCDB001272E0 /* normal with debug */ = {
+		5234B6B90E78286000F02D95 /* normal with debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				ARCHS = "$(NATIVE_ARCH)";
 				BUILD_VARIANTS = normal;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 36160;
 				FRAMEWORK_SEARCH_PATHS = (
 					"${BUILT_PRODUCTS_DIR}",
 					/usr/local/SecurityPieces/Components/Security,
 					/usr/local/SecurityPieces/Frameworks,
 				);
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"PCSC_DEBUG=1",
+					"USE_SYSLOG=1",
+					"USE_DAEMON=1",
+				);
 				HEADER_SEARCH_PATHS = (
 					/System/Library/Frameworks/CoreFoundation.framework/Headers,
 					/System/Library/Frameworks/IOKit.framework/Headers/usb,
 					/System/Library/Frameworks/IOKit.framework/Headers,
 				);
 				INSTALL_PATH = /usr/sbin;
+				ONLY_ACTIVE_ARCH = NO;
 				OPT_CPPXFLAGS = "$(OPT_CXFLAGS)";
-				OPT_CXFLAGS = "-DNDEBUG -Os $(OPT_INLINEXFLAGS)";
+				OPT_CXFLAGS = "-DNDEBUG  $(OPT_INLINEXFLAGS)";
 				OPT_INLINEXFLAGS = "-finline-functions";
 				OPT_LDFLAGS = "";
 				OPT_LDXFLAGS = "";
@@ -1724,16 +921,12 @@
 				OTHER_ASFLAGS_debug = "$(OTHER_CFLAGS)";
 				OTHER_ASFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG";
 				OTHER_ASFLAGS_profile = "-DNDEBUG $(OTHER_CFLAGS) -pg";
-				OTHER_CFLAGS = (
-					"-DPCSC_DEBUG=1",
-					"-DUSE_SYSLOG=1",
-					"-DUSE_DAEMON=1",
-				);
-				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS) -O0 -fno-inline";
-				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
+				OTHER_CFLAGS = "";
+				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS)  -fno-inline";
+				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG  -fno-inline";
 				OTHER_CFLAGS_profile = "$(OPT_CXFLAGS) $(OTHER_CFLAGS) -pg";
-				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CPLUSPLUSFLAGS) -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
+				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CPLUSPLUSFLAGS)  -fno-inline";
+				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG  -fno-inline";
 				OTHER_CPLUSPLUSFLAGS_profile = "$(OPT_CPPXFLAGS) $(OTHER_CPLUSPLUSFLAGS) -pg";
 				OTHER_LDFLAGS_debug = "$(OTHER_LDFLAGS) -framework Security,_debug -framework securityd_client,_debug -framework security_cdsa_client,_debug -framework security_cdsa_utilities,_debug -framework security_utilities,_debug";
 				OTHER_LDFLAGS_normal = "$(OPT_LDXFLAGS) $(OTHER_LDFLAGS) -framework Security -framework securityd_client$(OPT_LDXNOPIC) -framework security_cdsa_client$(OPT_LDXNOPIC) -framework security_cdsa_utilities$(OPT_LDXNOPIC) -framework security_utilities$(OPT_LDXNOPIC)";
@@ -1741,6 +934,7 @@
 				PREBINDING = NO;
 				PRODUCT_NAME = pcscd;
 				SECTORDER_FLAGS = "";
+				VALID_ARCHS = "i386 ppc ppc64 ppc7400 ppc970 x86_64";
 				VERSIONING_SYSTEM = "apple-generic";
 				WARNING_CFLAGS = (
 					"-Wmost",
@@ -1750,42 +944,45 @@
 			};
 			name = "normal with debug";
 		};
-		C27AD1CA0987FCDB001272E0 /* Default */ = {
+		5234B6BA0E78286000F02D95 /* Default */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
+				ARCHS = "$(NATIVE_ARCH)";
 				BUILD_VARIANTS = (
 					normal,
 					debug,
 				);
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 36160;
 				FRAMEWORK_SEARCH_PATHS = (
 					"${BUILT_PRODUCTS_DIR}",
 					/usr/local/SecurityPieces/Components/Security,
 					/usr/local/SecurityPieces/Frameworks,
 				);
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"PCSC_DEBUG=1",
+					"USE_SYSLOG=1",
+					"USE_DAEMON=1",
+				);
 				HEADER_SEARCH_PATHS = (
 					/System/Library/Frameworks/CoreFoundation.framework/Headers,
 					/System/Library/Frameworks/IOKit.framework/Headers/usb,
 					/System/Library/Frameworks/IOKit.framework/Headers,
 				);
 				INSTALL_PATH = /usr/sbin;
+				ONLY_ACTIVE_ARCH = NO;
 				OPT_CPPXFLAGS = "$(OPT_CXFLAGS)";
-				OPT_CXFLAGS = "-DNDEBUG -Os $(OPT_INLINEXFLAGS)";
+				OPT_CXFLAGS = "-DNDEBUG  $(OPT_INLINEXFLAGS)";
 				OPT_INLINEXFLAGS = "-finline-functions";
 				OPT_LDXFLAGS = "-dead_strip";
 				OPT_LDXNOPIC = ",_nopic";
 				OTHER_ASFLAGS_debug = "$(OTHER_CFLAGS)";
 				OTHER_ASFLAGS_normal = "-DNDEBUG $(OTHER_CFLAGS)";
 				OTHER_ASFLAGS_profile = "-DNDEBUG $(OTHER_CFLAGS) -pg";
-				OTHER_CFLAGS = (
-					"-DPCSC_DEBUG=1",
-					"-DUSE_SYSLOG=1",
-					"-DUSE_DAEMON=1",
-				);
-				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS) -O0 -fno-inline";
+				OTHER_CFLAGS = "";
+				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS)  -fno-inline";
 				OTHER_CFLAGS_normal = "$(OPT_CXFLAGS) $(OTHER_CFLAGS)";
 				OTHER_CFLAGS_profile = "$(OPT_CXFLAGS) $(OTHER_CFLAGS) -pg";
-				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CPLUSPLUSFLAGS) -O0 -fno-inline";
+				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CPLUSPLUSFLAGS)  -fno-inline";
 				OTHER_CPLUSPLUSFLAGS_normal = "$(OPT_CPPXFLAGS) $(OTHER_CPLUSPLUSFLAGS)";
 				OTHER_CPLUSPLUSFLAGS_profile = "$(OPT_CPPXFLAGS) $(OTHER_CPLUSPLUSFLAGS) -pg";
 				OTHER_LDFLAGS_debug = "$(OTHER_LDFLAGS) -framework Security,_debug -framework securityd_client,_debug -framework security_cdsa_client,_debug -framework security_cdsa_utilities,_debug -framework security_utilities,_debug";
@@ -1793,6 +990,7 @@
 				OTHER_LDFLAGS_profile = "$(OPT_LDXFLAGS) $(OTHER_LDFLAGS) -pg -framework Security,_profile -framework securityd_client,_profile -framework security_cdsa_client,_profile -framework security_cdsa_utilities,_profile -framework security_utilities,_profile";
 				PRODUCT_NAME = pcscd;
 				SECTORDER_FLAGS = "";
+				VALID_ARCHS = "i386 ppc ppc64 ppc7400 ppc970 x86_64";
 				VERSIONING_SYSTEM = "apple-generic";
 				WARNING_CFLAGS = (
 					"-Wmost",
@@ -1802,75 +1000,154 @@
 			};
 			name = Default;
 		};
-		C27AD1CC0987FCDB001272E0 /* Development */ = {
+		5234B6DB0E78286000F02D95 /* Development */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				BUILD_VARIANTS = debug;
-				CURRENT_PROJECT_VERSION = 1;
-				FRAMEWORK_SEARCH_PATHS = "";
+				CURRENT_PROJECT_VERSION = 36160;
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 36160;
+				EXPORTED_SYMBOLS_FILE = "$(SRCROOT)/src/PCSC/PCSC.exp";
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					/usr/local/SecurityPieces/Frameworks,
+				);
+				FRAMEWORK_VERSION = A;
 				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
-				INSTALL_PATH = /usr/bin;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"PCSC_DEBUG=1",
+					"USE_SYSLOG=1",
+					"USE_DAEMON=1",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				INFOPLIST_FILE = "Info-PCSC.plist";
+				INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
+				OPT_CFLAGS = "-DNDEBUG  $(OPT_INLINEFLAGS)";
+				OPT_CPPFLAGS = "$(OPT_CFLAGS)";
+				OPT_INLINEFLAGS = "-finline-functions";
+				OPT_LDFLAGS = "-dead_strip";
+				OTHER_ASFLAGS_debug = "$(OTHER_CFLAGS)";
+				OTHER_ASFLAGS_normal = "-DNDEBUG $(OTHER_CFLAGS)";
+				OTHER_ASFLAGS_profile = "-DNDEBUG $(OTHER_CFLAGS) -pg";
 				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = pcsctest;
-				REZ_EXECUTABLE = YES;
-				SECTORDER_FLAGS = "";
+				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS) -fno-inline";
+				OTHER_CFLAGS_normal = "$(OPT_CFLAGS)  $(OTHER_CFLAGS)";
+				OTHER_CFLAGS_profile = "$(OPT_CFLAGS)  $(OTHER_CFLAGS) -pg";
+				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CFLAGS)  -fno-inline";
+				OTHER_CPLUSPLUSFLAGS_normal = "$(OPT_CPPFLAGS) $(OTHER_CFLAGS)";
+				OTHER_CPLUSPLUSFLAGS_profile = "$(OPT_CPPFLAGS) $(OTHER_CFLAGS) -pg";
+				OTHER_LDFLAGS_debug = "$(OTHER_LDFLAGS)";
+				OTHER_LDFLAGS_normal = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS)";
+				OTHER_LDFLAGS_profile = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS) -pg";
+				PRODUCT_NAME = PCSC;
 				VERSIONING_SYSTEM = "apple-generic";
 				WARNING_CFLAGS = (
 					"-Wmost",
 					"-Wno-four-char-constants",
 					"-Wno-unknown-pragmas",
 				);
+				WRAPPER_EXTENSION = framework;
 				ZERO_LINK = YES;
 			};
 			name = Development;
 		};
-		C27AD1CD0987FCDB001272E0 /* Deployment */ = {
+		5234B6DC0E78286000F02D95 /* Deployment */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				CURRENT_PROJECT_VERSION = 1;
-				FRAMEWORK_SEARCH_PATHS = "";
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				INSTALL_PATH = /usr/bin;
+				BUILD_VARIANTS = (
+					normal,
+					debug,
+				);
+				CURRENT_PROJECT_VERSION = 36160;
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 36160;
+				EXPORTED_SYMBOLS_FILE = "$(SRCROOT)/src/PCSC/PCSC.exp";
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					/usr/local/SecurityPieces/Frameworks,
+				);
+				FRAMEWORK_VERSION = A;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"PCSC_DEBUG=1",
+					"USE_SYSLOG=1",
+					"USE_DAEMON=1",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				INFOPLIST_FILE = "Info-PCSC.plist";
+				INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
+				OPT_CFLAGS = "-DNDEBUG  $(OPT_INLINEFLAGS)";
+				OPT_CPPFLAGS = "$(OPT_CFLAGS)";
+				OPT_INLINEFLAGS = "-finline-functions";
+				OPT_LDFLAGS = "-dead_strip";
+				OTHER_ASFLAGS_debug = "$(OTHER_CFLAGS)";
+				OTHER_ASFLAGS_normal = "-DNDEBUG $(OTHER_CFLAGS)";
+				OTHER_ASFLAGS_profile = "-DNDEBUG $(OTHER_CFLAGS) -pg";
 				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = pcsctest;
-				REZ_EXECUTABLE = YES;
-				SECTORDER_FLAGS = "";
+				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS)  -fno-inline";
+				OTHER_CFLAGS_normal = "$(OPT_CFLAGS)  $(OTHER_CFLAGS)";
+				OTHER_CFLAGS_profile = "$(OPT_CFLAGS)  $(OTHER_CFLAGS) -pg";
+				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CFLAGS)  -fno-inline";
+				OTHER_CPLUSPLUSFLAGS_normal = "$(OPT_CPPFLAGS) $(OTHER_CFLAGS)";
+				OTHER_CPLUSPLUSFLAGS_profile = "$(OPT_CPPFLAGS) $(OTHER_CFLAGS) -pg";
+				OTHER_LDFLAGS_debug = "$(OTHER_LDFLAGS)";
+				OTHER_LDFLAGS_normal = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS)";
+				OTHER_LDFLAGS_profile = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS) -pg";
+				PRODUCT_NAME = PCSC;
 				VERSIONING_SYSTEM = "apple-generic";
 				WARNING_CFLAGS = (
 					"-Wmost",
 					"-Wno-four-char-constants",
 					"-Wno-unknown-pragmas",
 				);
+				WRAPPER_EXTENSION = framework;
 				ZERO_LINK = NO;
 			};
 			name = Deployment;
 		};
-		C27AD1CE0987FCDB001272E0 /* normal with debug */ = {
+		5234B6DD0E78286000F02D95 /* normal with debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				BUILD_VARIANTS = normal;
-				CURRENT_PROJECT_VERSION = 1;
-				FRAMEWORK_SEARCH_PATHS = "";
-				INSTALL_PATH = /usr/bin;
+				CURRENT_PROJECT_VERSION = 36160;
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 36160;
+				EXPORTED_SYMBOLS_FILE = "$(SRCROOT)/src/PCSC/PCSC.exp";
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					/usr/local/SecurityPieces/Frameworks,
+				);
+				FRAMEWORK_VERSION = A;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"PCSC_DEBUG=1",
+					"USE_SYSLOG=1",
+					"USE_DAEMON=1",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				INFOPLIST_FILE = "Info-PCSC.plist";
+				INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
+				OPT_CFLAGS = "-DNDEBUG  $(OPT_INLINEFLAGS)";
+				OPT_CPPFLAGS = "$(OPT_CFLAGS)";
+				OPT_INLINEFLAGS = "-finline-functions";
 				OPT_LDFLAGS = "";
 				OPT_LDXFLAGS = "";
 				OPT_LDXNOPIC = "";
+				OTHER_ASFLAGS_debug = "$(OTHER_CFLAGS)";
 				OTHER_ASFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG";
+				OTHER_ASFLAGS_profile = "-DNDEBUG $(OTHER_CFLAGS) -pg";
 				OTHER_CFLAGS = "";
-				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
+				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS)  -fno-inline";
+				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG  -fno-inline";
+				OTHER_CFLAGS_profile = "$(OPT_CFLAGS)  $(OTHER_CFLAGS) -pg";
+				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CFLAGS) -fno-inline";
+				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG  -fno-inline";
+				OTHER_CPLUSPLUSFLAGS_profile = "$(OPT_CPPFLAGS) $(OTHER_CFLAGS) -pg";
+				OTHER_LDFLAGS_debug = "$(OTHER_LDFLAGS)";
+				OTHER_LDFLAGS_normal = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS)";
+				OTHER_LDFLAGS_profile = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS) -pg";
 				PREBINDING = NO;
-				PRODUCT_NAME = pcsctest;
-				REZ_EXECUTABLE = YES;
+				PRODUCT_NAME = PCSC;
 				SECTORDER_FLAGS = "";
 				VERSIONING_SYSTEM = "apple-generic";
 				WARNING_CFLAGS = (
@@ -1878,45 +1155,76 @@
 					"-Wno-four-char-constants",
 					"-Wno-unknown-pragmas",
 				);
+				WRAPPER_EXTENSION = framework;
 			};
 			name = "normal with debug";
 		};
-		C27AD1CF0987FCDC001272E0 /* Default */ = {
+		5234B6DE0E78286000F02D95 /* Default */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				CURRENT_PROJECT_VERSION = 1;
-				FRAMEWORK_SEARCH_PATHS = "";
-				INSTALL_PATH = /usr/bin;
+				BUILD_VARIANTS = (
+					normal,
+					debug,
+				);
+				CURRENT_PROJECT_VERSION = 36160;
+				DYLIB_COMPATIBILITY_VERSION = 1;
+				DYLIB_CURRENT_VERSION = 36160;
+				EXPORTED_SYMBOLS_FILE = "$(SRCROOT)/src/PCSC/PCSC.exp";
+				FRAMEWORK_SEARCH_PATHS = (
+					"$(inherited)",
+					/usr/local/SecurityPieces/Frameworks,
+				);
+				FRAMEWORK_VERSION = A;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"PCSC_DEBUG=1",
+					"USE_SYSLOG=1",
+					"USE_DAEMON=1",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				INFOPLIST_FILE = "Info-PCSC.plist";
+				INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks";
+				OPT_CFLAGS = "-DNDEBUG  $(OPT_INLINEFLAGS)";
+				OPT_CPPFLAGS = "$(OPT_CFLAGS)";
+				OPT_INLINEFLAGS = "-finline-functions";
+				OPT_LDFLAGS = "-dead_strip";
+				OTHER_ASFLAGS_debug = "$(OTHER_CFLAGS)";
+				OTHER_ASFLAGS_normal = "-DNDEBUG $(OTHER_CFLAGS)";
+				OTHER_ASFLAGS_profile = "-DNDEBUG $(OTHER_CFLAGS) -pg";
 				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = pcsctest;
-				REZ_EXECUTABLE = YES;
-				SECTORDER_FLAGS = "";
+				OTHER_CFLAGS_debug = "$(OTHER_CFLAGS)  -fno-inline";
+				OTHER_CFLAGS_normal = "$(OPT_CFLAGS)  $(OTHER_CFLAGS)";
+				OTHER_CFLAGS_profile = "$(OPT_CFLAGS)  $(OTHER_CFLAGS) -pg";
+				OTHER_CPLUSPLUSFLAGS_debug = "$(OTHER_CFLAGS)  -fno-inline";
+				OTHER_CPLUSPLUSFLAGS_normal = "$(OPT_CPPFLAGS) $(OTHER_CFLAGS)";
+				OTHER_CPLUSPLUSFLAGS_profile = "$(OPT_CPPFLAGS) $(OTHER_CFLAGS) -pg";
+				OTHER_LDFLAGS_debug = "$(OTHER_LDFLAGS)";
+				OTHER_LDFLAGS_normal = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS)";
+				OTHER_LDFLAGS_profile = "$(OPT_LDFLAGS) $(OTHER_LDFLAGS) -pg";
+				PRODUCT_NAME = PCSC;
 				VERSIONING_SYSTEM = "apple-generic";
 				WARNING_CFLAGS = (
 					"-Wmost",
 					"-Wno-four-char-constants",
 					"-Wno-unknown-pragmas",
 				);
+				WRAPPER_EXTENSION = framework;
 			};
 			name = Default;
 		};
-		C27AD1D10987FCDC001272E0 /* Development */ = {
+		5234B6E80E78286000F02D95 /* Development */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				BUILD_VARIANTS = debug;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 36160;
 				FRAMEWORK_SEARCH_PATHS = "";
 				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
 				INSTALL_PATH = /usr/bin;
 				OTHER_CFLAGS = "";
 				OTHER_LDFLAGS = "";
 				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = pcsctool;
+				PRODUCT_NAME = pcsctest;
 				REZ_EXECUTABLE = YES;
 				SECTORDER_FLAGS = "";
 				VERSIONING_SYSTEM = "apple-generic";
@@ -1929,17 +1237,16 @@
 			};
 			name = Development;
 		};
-		C27AD1D20987FCDC001272E0 /* Deployment */ = {
+		5234B6E90E78286000F02D95 /* Deployment */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 36160;
 				FRAMEWORK_SEARCH_PATHS = "";
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
 				INSTALL_PATH = /usr/bin;
 				OTHER_CFLAGS = "";
 				OTHER_LDFLAGS = "";
 				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = pcsctool;
+				PRODUCT_NAME = pcsctest;
 				REZ_EXECUTABLE = YES;
 				SECTORDER_FLAGS = "";
 				VERSIONING_SYSTEM = "apple-generic";
@@ -1952,11 +1259,11 @@
 			};
 			name = Deployment;
 		};
-		C27AD1D30987FCDC001272E0 /* normal with debug */ = {
+		5234B6EA0E78286000F02D95 /* normal with debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				BUILD_VARIANTS = normal;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 36160;
 				FRAMEWORK_SEARCH_PATHS = "";
 				INSTALL_PATH = /usr/bin;
 				OPT_LDFLAGS = "";
@@ -1964,12 +1271,12 @@
 				OPT_LDXNOPIC = "";
 				OTHER_ASFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG";
 				OTHER_CFLAGS = "";
-				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
+				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG  -fno-inline";
+				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -fno-inline";
 				OTHER_LDFLAGS = "";
 				OTHER_REZFLAGS = "";
 				PREBINDING = NO;
-				PRODUCT_NAME = pcsctool;
+				PRODUCT_NAME = pcsctest;
 				REZ_EXECUTABLE = YES;
 				SECTORDER_FLAGS = "";
 				VERSIONING_SYSTEM = "apple-generic";
@@ -1981,16 +1288,16 @@
 			};
 			name = "normal with debug";
 		};
-		C27AD1D40987FCDC001272E0 /* Default */ = {
+		5234B6EB0E78286000F02D95 /* Default */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 36160;
 				FRAMEWORK_SEARCH_PATHS = "";
 				INSTALL_PATH = /usr/bin;
 				OTHER_CFLAGS = "";
 				OTHER_LDFLAGS = "";
 				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = pcsctool;
+				PRODUCT_NAME = pcsctest;
 				REZ_EXECUTABLE = YES;
 				SECTORDER_FLAGS = "";
 				VERSIONING_SYSTEM = "apple-generic";
@@ -2002,20 +1309,21 @@
 			};
 			name = Default;
 		};
-		C27AD1D60987FCDC001272E0 /* Development */ = {
+		5234B6F50E78286000F02D95 /* Development */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				BUILD_VARIANTS = debug;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 36160;
+				FRAMEWORK_SEARCH_PATHS = "";
 				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/pkcs11;
+				INSTALL_PATH = /usr/bin;
 				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "-lcrypto";
+				OTHER_LDFLAGS = "";
 				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = pkcs11;
+				PRODUCT_NAME = pcsctool;
+				REZ_EXECUTABLE = YES;
 				SECTORDER_FLAGS = "";
 				VERSIONING_SYSTEM = "apple-generic";
 				WARNING_CFLAGS = (
@@ -2023,21 +1331,21 @@
 					"-Wno-four-char-constants",
 					"-Wno-unknown-pragmas",
 				);
-				WRAPPER_EXTENSION = bundle;
 				ZERO_LINK = YES;
 			};
 			name = Development;
 		};
-		C27AD1D70987FCDC001272E0 /* Deployment */ = {
+		5234B6F60E78286000F02D95 /* Deployment */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				CURRENT_PROJECT_VERSION = 1;
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/pkcs11;
+				CURRENT_PROJECT_VERSION = 36160;
+				FRAMEWORK_SEARCH_PATHS = "";
+				INSTALL_PATH = /usr/bin;
 				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "-lcrypto";
+				OTHER_LDFLAGS = "";
 				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = pkcs11;
+				PRODUCT_NAME = pcsctool;
+				REZ_EXECUTABLE = YES;
 				SECTORDER_FLAGS = "";
 				VERSIONING_SYSTEM = "apple-generic";
 				WARNING_CFLAGS = (
@@ -2045,28 +1353,29 @@
 					"-Wno-four-char-constants",
 					"-Wno-unknown-pragmas",
 				);
-				WRAPPER_EXTENSION = bundle;
 				ZERO_LINK = NO;
 			};
 			name = Deployment;
 		};
-		C27AD1D80987FCDC001272E0 /* normal with debug */ = {
+		5234B6F70E78286000F02D95 /* normal with debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				BUILD_VARIANTS = normal;
-				CURRENT_PROJECT_VERSION = 1;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/pkcs11;
+				CURRENT_PROJECT_VERSION = 36160;
+				FRAMEWORK_SEARCH_PATHS = "";
+				INSTALL_PATH = /usr/bin;
 				OPT_LDFLAGS = "";
 				OPT_LDXFLAGS = "";
 				OPT_LDXNOPIC = "";
 				OTHER_ASFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG";
 				OTHER_CFLAGS = "";
-				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_LDFLAGS = "-lcrypto";
+				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG  -fno-inline";
+				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG  -fno-inline";
+				OTHER_LDFLAGS = "";
 				OTHER_REZFLAGS = "";
 				PREBINDING = NO;
-				PRODUCT_NAME = pkcs11;
+				PRODUCT_NAME = pcsctool;
+				REZ_EXECUTABLE = YES;
 				SECTORDER_FLAGS = "";
 				VERSIONING_SYSTEM = "apple-generic";
 				WARNING_CFLAGS = (
@@ -2074,44 +1383,20 @@
 					"-Wno-four-char-constants",
 					"-Wno-unknown-pragmas",
 				);
-				WRAPPER_EXTENSION = bundle;
 			};
 			name = "normal with debug";
 		};
-		C27AD1D90987FCDC001272E0 /* Default */ = {
+		5234B6F80E78286000F02D95 /* Default */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				CURRENT_PROJECT_VERSION = 1;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/pkcs11;
+				CURRENT_PROJECT_VERSION = 36160;
+				FRAMEWORK_SEARCH_PATHS = "";
+				INSTALL_PATH = /usr/bin;
 				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "-lcrypto";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = pkcs11;
-				SECTORDER_FLAGS = "";
-				VERSIONING_SYSTEM = "apple-generic";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-			};
-			name = Default;
-		};
-		C27AD1DB0987FCDC001272E0 /* Development */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				BUILD_VARIANTS = debug;
-				CURRENT_PROJECT_VERSION = 1;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
 				OTHER_LDFLAGS = "";
 				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = mscMuscleCard;
+				PRODUCT_NAME = pcsctool;
+				REZ_EXECUTABLE = YES;
 				SECTORDER_FLAGS = "";
 				VERSIONING_SYSTEM = "apple-generic";
 				WARNING_CFLAGS = (
@@ -2119,373 +1404,30 @@
 					"-Wno-four-char-constants",
 					"-Wno-unknown-pragmas",
 				);
-				WRAPPER_EXTENSION = bundle;
-				ZERO_LINK = YES;
 			};
-			name = Development;
-		};
-		C27AD1DC0987FCDC001272E0 /* Deployment */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CURRENT_PROJECT_VERSION = 1;
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = mscMuscleCard;
-				SECTORDER_FLAGS = "";
-				VERSIONING_SYSTEM = "apple-generic";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-				ZERO_LINK = NO;
-			};
-			name = Deployment;
-		};
-		C27AD1DD0987FCDC001272E0 /* normal with debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				BUILD_VARIANTS = normal;
-				CURRENT_PROJECT_VERSION = 1;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OPT_LDFLAGS = "";
-				OPT_LDXFLAGS = "";
-				OPT_LDXNOPIC = "";
-				OTHER_ASFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG";
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PREBINDING = NO;
-				PRODUCT_NAME = mscMuscleCard;
-				SECTORDER_FLAGS = "";
-				VERSIONING_SYSTEM = "apple-generic";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-			};
-			name = "normal with debug";
-		};
-		C27AD1DE0987FCDC001272E0 /* Default */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CURRENT_PROJECT_VERSION = 1;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = mscMuscleCard;
-				SECTORDER_FLAGS = "";
-				VERSIONING_SYSTEM = "apple-generic";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-			};
 			name = Default;
 		};
-		C27AD1E00987FCDC001272E0 /* Development */ = {
+		5234B72A0E78286000F02D95 /* Development */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				BUILD_VARIANTS = debug;
 				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
 				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				PRODUCT_NAME = GSCISPlugin;
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-				ZERO_LINK = YES;
-			};
-			name = Development;
-		};
-		C27AD1E10987FCDC001272E0 /* Deployment */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				PRODUCT_NAME = GSCISPlugin;
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-				ZERO_LINK = NO;
-			};
-			name = Deployment;
-		};
-		C27AD1E20987FCDC001272E0 /* normal with debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				BUILD_VARIANTS = normal;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OPT_LDFLAGS = "";
-				OPT_LDXFLAGS = "";
-				OPT_LDXNOPIC = "";
-				OTHER_ASFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG";
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				PREBINDING = NO;
-				PRODUCT_NAME = GSCISPlugin;
-				SECTORDER_FLAGS = "";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-			};
-			name = "normal with debug";
-		};
-		C27AD1E30987FCDC001272E0 /* Default */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				PRODUCT_NAME = GSCISPlugin;
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-			};
-			name = Default;
-		};
-		C27AD1E50987FCDC001272E0 /* Development */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				BUILD_VARIANTS = debug;
-				CURRENT_PROJECT_VERSION = 1;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = commonAccessCard;
-				SECTORDER_FLAGS = "";
-				VERSIONING_SYSTEM = "apple-generic";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-				ZERO_LINK = YES;
-			};
-			name = Development;
-		};
-		C27AD1E60987FCDC001272E0 /* Deployment */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CURRENT_PROJECT_VERSION = 1;
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = commonAccessCard;
-				SECTORDER_FLAGS = "";
-				VERSIONING_SYSTEM = "apple-generic";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-				ZERO_LINK = NO;
-			};
-			name = Deployment;
-		};
-		C27AD1E70987FCDC001272E0 /* normal with debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				BUILD_VARIANTS = normal;
-				CURRENT_PROJECT_VERSION = 1;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OPT_LDFLAGS = "";
-				OPT_LDXFLAGS = "";
-				OPT_LDXNOPIC = "";
-				OTHER_ASFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG";
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PREBINDING = NO;
-				PRODUCT_NAME = commonAccessCard;
-				SECTORDER_FLAGS = "";
-				VERSIONING_SYSTEM = "apple-generic";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-			};
-			name = "normal with debug";
-		};
-		C27AD1E80987FCDC001272E0 /* Default */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CURRENT_PROJECT_VERSION = 1;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = commonAccessCard;
-				SECTORDER_FLAGS = "";
-				VERSIONING_SYSTEM = "apple-generic";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-			};
-			name = Default;
-		};
-		C27AD1EA0987FCDC001272E0 /* Development */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				BUILD_VARIANTS = debug;
-				CURRENT_PROJECT_VERSION = 1;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = slbCryptoflex;
-				SECTORDER_FLAGS = "";
-				VERSIONING_SYSTEM = "apple-generic";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-				ZERO_LINK = YES;
-			};
-			name = Development;
-		};
-		C27AD1EB0987FCDC001272E0 /* Deployment */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CURRENT_PROJECT_VERSION = 1;
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = slbCryptoflex;
-				SECTORDER_FLAGS = "";
-				VERSIONING_SYSTEM = "apple-generic";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-				ZERO_LINK = NO;
-			};
-			name = Deployment;
-		};
-		C27AD1EC0987FCDC001272E0 /* normal with debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				BUILD_VARIANTS = normal;
-				CURRENT_PROJECT_VERSION = 1;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OPT_LDFLAGS = "";
-				OPT_LDXFLAGS = "";
-				OPT_LDXNOPIC = "";
-				OTHER_ASFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG";
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PREBINDING = NO;
-				PRODUCT_NAME = slbCryptoflex;
-				SECTORDER_FLAGS = "";
-				VERSIONING_SYSTEM = "apple-generic";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-			};
-			name = "normal with debug";
-		};
-		C27AD1ED0987FCDC001272E0 /* Default */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				CURRENT_PROJECT_VERSION = 1;
-				INSTALL_PATH = /usr/libexec/SmartCardServices/services;
-				OTHER_CFLAGS = "-DMSC_TARGET_OSX=1";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = slbCryptoflex;
-				SECTORDER_FLAGS = "";
-				VERSIONING_SYSTEM = "apple-generic";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				WRAPPER_EXTENSION = bundle;
-			};
-			name = Default;
-		};
-		C27AD1EF0987FCDC001272E0 /* Development */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				BUILD_VARIANTS = debug;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
 				PRODUCT_NAME = InstallPhase;
 				ZERO_LINK = YES;
 			};
 			name = Development;
 		};
-		C27AD1F00987FCDC001272E0 /* Deployment */ = {
+		5234B72B0E78286000F02D95 /* Deployment */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
 				PRODUCT_NAME = InstallPhase;
 				ZERO_LINK = NO;
 			};
 			name = Deployment;
 		};
-		C27AD1F10987FCDC001272E0 /* normal with debug */ = {
+		5234B72C0E78286000F02D95 /* normal with debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				BUILD_VARIANTS = normal;
@@ -2493,101 +1435,21 @@
 				OPT_LDXFLAGS = "";
 				OPT_LDXNOPIC = "";
 				OTHER_ASFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG";
-				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
+				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -fno-inline";
+				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -fno-inline";
 				PREBINDING = NO;
 				PRODUCT_NAME = InstallPhase;
 				SECTORDER_FLAGS = "";
 			};
 			name = "normal with debug";
 		};
-		C27AD1F20987FCDC001272E0 /* Default */ = {
+		5234B72D0E78286000F02D95 /* Default */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
 				PRODUCT_NAME = InstallPhase;
 			};
 			name = Default;
 		};
-		C27AD1F90987FCDC001272E0 /* Development */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				BUILD_VARIANTS = debug;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_FIX_AND_CONTINUE = YES;
-				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = World;
-				SECTORDER_FLAGS = "";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				ZERO_LINK = YES;
-			};
-			name = Development;
-		};
-		C27AD1FA0987FCDC001272E0 /* Deployment */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				GCC_ENABLE_FIX_AND_CONTINUE = NO;
-				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = World;
-				SECTORDER_FLAGS = "";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-				ZERO_LINK = NO;
-			};
-			name = Deployment;
-		};
-		C27AD1FB0987FCDC001272E0 /* normal with debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				BUILD_VARIANTS = normal;
-				OPT_LDFLAGS = "";
-				OPT_LDXFLAGS = "";
-				OPT_LDXNOPIC = "";
-				OTHER_ASFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG";
-				OTHER_CFLAGS = "";
-				OTHER_CFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_CPLUSPLUSFLAGS_normal = "$(OTHER_CFLAGS) -UNDEBUG -O0 -fno-inline";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PREBINDING = NO;
-				PRODUCT_NAME = World;
-				SECTORDER_FLAGS = "";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-			};
-			name = "normal with debug";
-		};
-		C27AD1FC0987FCDC001272E0 /* Default */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "";
-				OTHER_REZFLAGS = "";
-				PRODUCT_NAME = World;
-				SECTORDER_FLAGS = "";
-				WARNING_CFLAGS = (
-					"-Wmost",
-					"-Wno-four-char-constants",
-					"-Wno-unknown-pragmas",
-				);
-			};
-			name = Default;
-		};
 		C27AD1FE0987FCDC001272E0 /* Development */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -2623,127 +1485,72 @@
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
-		C27AD1C10987FCDB001272E0 /* Build configuration list for PBXFrameworkTarget "PCSC" */ = {
+		5234B6780E78286000F02D95 /* Build configuration list for PBXAggregateTarget "World" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				C27AD1C20987FCDB001272E0 /* Development */,
-				C27AD1C30987FCDB001272E0 /* Deployment */,
-				C27AD1C40987FCDB001272E0 /* normal with debug */,
-				C27AD1C50987FCDB001272E0 /* Default */,
+				5234B6790E78286000F02D95 /* Development */,
+				5234B67A0E78286000F02D95 /* Deployment */,
+				5234B67B0E78286000F02D95 /* normal with debug */,
+				5234B67C0E78286000F02D95 /* Default */,
 			);
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Default;
 		};
-		C27AD1C60987FCDB001272E0 /* Build configuration list for PBXToolTarget "pcscd" */ = {
+		5234B6B60E78286000F02D95 /* Build configuration list for PBXNativeTarget "pcscd" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				C27AD1C70987FCDB001272E0 /* Development */,
-				C27AD1C80987FCDB001272E0 /* Deployment */,
-				C27AD1C90987FCDB001272E0 /* normal with debug */,
-				C27AD1CA0987FCDB001272E0 /* Default */,
+				5234B6B70E78286000F02D95 /* Development */,
+				5234B6B80E78286000F02D95 /* Deployment */,
+				5234B6B90E78286000F02D95 /* normal with debug */,
+				5234B6BA0E78286000F02D95 /* Default */,
 			);
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Default;
 		};
-		C27AD1CB0987FCDB001272E0 /* Build configuration list for PBXToolTarget "pcsctest" */ = {
+		5234B6DA0E78286000F02D95 /* Build configuration list for PBXNativeTarget "PCSC" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				C27AD1CC0987FCDB001272E0 /* Development */,
-				C27AD1CD0987FCDB001272E0 /* Deployment */,
-				C27AD1CE0987FCDB001272E0 /* normal with debug */,
-				C27AD1CF0987FCDC001272E0 /* Default */,
+				5234B6DB0E78286000F02D95 /* Development */,
+				5234B6DC0E78286000F02D95 /* Deployment */,
+				5234B6DD0E78286000F02D95 /* normal with debug */,
+				5234B6DE0E78286000F02D95 /* Default */,
 			);
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Default;
 		};
-		C27AD1D00987FCDC001272E0 /* Build configuration list for PBXToolTarget "pcsctool" */ = {
+		5234B6E70E78286000F02D95 /* Build configuration list for PBXNativeTarget "pcsctest" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				C27AD1D10987FCDC001272E0 /* Development */,
-				C27AD1D20987FCDC001272E0 /* Deployment */,
-				C27AD1D30987FCDC001272E0 /* normal with debug */,
-				C27AD1D40987FCDC001272E0 /* Default */,
+				5234B6E80E78286000F02D95 /* Development */,
+				5234B6E90E78286000F02D95 /* Deployment */,
+				5234B6EA0E78286000F02D95 /* normal with debug */,
+				5234B6EB0E78286000F02D95 /* Default */,
 			);
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Default;
 		};
-		C27AD1D50987FCDC001272E0 /* Build configuration list for PBXBundleTarget "PKCS11" */ = {
+		5234B6F40E78286000F02D95 /* Build configuration list for PBXNativeTarget "pcsctool" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				C27AD1D60987FCDC001272E0 /* Development */,
-				C27AD1D70987FCDC001272E0 /* Deployment */,
-				C27AD1D80987FCDC001272E0 /* normal with debug */,
-				C27AD1D90987FCDC001272E0 /* Default */,
+				5234B6F50E78286000F02D95 /* Development */,
+				5234B6F60E78286000F02D95 /* Deployment */,
+				5234B6F70E78286000F02D95 /* normal with debug */,
+				5234B6F80E78286000F02D95 /* Default */,
 			);
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Default;
 		};
-		C27AD1DA0987FCDC001272E0 /* Build configuration list for PBXBundleTarget "MCardPlugin" */ = {
+		5234B7290E78286000F02D95 /* Build configuration list for PBXLegacyTarget "InstallPhase" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
-				C27AD1DB0987FCDC001272E0 /* Development */,
-				C27AD1DC0987FCDC001272E0 /* Deployment */,
-				C27AD1DD0987FCDC001272E0 /* normal with debug */,
-				C27AD1DE0987FCDC001272E0 /* Default */,
+				5234B72A0E78286000F02D95 /* Development */,
+				5234B72B0E78286000F02D95 /* Deployment */,
+				5234B72C0E78286000F02D95 /* normal with debug */,
+				5234B72D0E78286000F02D95 /* Default */,
 			);
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Default;
 		};
-		C27AD1DF0987FCDC001272E0 /* Build configuration list for PBXBundleTarget "GSCISPlugin" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C27AD1E00987FCDC001272E0 /* Development */,
-				C27AD1E10987FCDC001272E0 /* Deployment */,
-				C27AD1E20987FCDC001272E0 /* normal with debug */,
-				C27AD1E30987FCDC001272E0 /* Default */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Default;
-		};
-		C27AD1E40987FCDC001272E0 /* Build configuration list for PBXBundleTarget "CACPlugin" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C27AD1E50987FCDC001272E0 /* Development */,
-				C27AD1E60987FCDC001272E0 /* Deployment */,
-				C27AD1E70987FCDC001272E0 /* normal with debug */,
-				C27AD1E80987FCDC001272E0 /* Default */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Default;
-		};
-		C27AD1E90987FCDC001272E0 /* Build configuration list for PBXBundleTarget "CFlexPlugin" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C27AD1EA0987FCDC001272E0 /* Development */,
-				C27AD1EB0987FCDC001272E0 /* Deployment */,
-				C27AD1EC0987FCDC001272E0 /* normal with debug */,
-				C27AD1ED0987FCDC001272E0 /* Default */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Default;
-		};
-		C27AD1EE0987FCDC001272E0 /* Build configuration list for PBXLegacyTarget "InstallPhase" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C27AD1EF0987FCDC001272E0 /* Development */,
-				C27AD1F00987FCDC001272E0 /* Deployment */,
-				C27AD1F10987FCDC001272E0 /* normal with debug */,
-				C27AD1F20987FCDC001272E0 /* Default */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Default;
-		};
-		C27AD1F80987FCDC001272E0 /* Build configuration list for PBXAggregateTarget "World" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				C27AD1F90987FCDC001272E0 /* Development */,
-				C27AD1FA0987FCDC001272E0 /* Deployment */,
-				C27AD1FB0987FCDC001272E0 /* normal with debug */,
-				C27AD1FC0987FCDC001272E0 /* Default */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Default;
-		};
 		C27AD1FD0987FCDC001272E0 /* Build configuration list for PBXProject "SmartCardServices" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (

Modified: trunk/SmartCardServices/src/PCSC/hotplug.h
===================================================================
--- trunk/SmartCardServices/src/PCSC/hotplug.h	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/src/PCSC/hotplug.h	2010-01-07 12:38:32 UTC (rev 90)
@@ -57,7 +57,9 @@
 	LONG HPStopHotPluggables(void);
 	void HPReCheckSerialReaders(void);
 	int SendHotplugSignal(void);
-        
+	LONG HPCancelHotPluggables(void);
+	LONG HPJoinHotPluggables(void);
+
 	LONG HPRegisterForHotplugEventsT(pthread_t *wthread);
 
 	void systemAwakeAndReadyCheck();

Modified: trunk/SmartCardServices/src/PCSC/hotplug_macosx.cpp
===================================================================
--- trunk/SmartCardServices/src/PCSC/hotplug_macosx.cpp	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/src/PCSC/hotplug_macosx.cpp	2010-01-07 12:38:32 UTC (rev 90)
@@ -41,6 +41,7 @@
 
 const uint32_t kPCSCLITE_HP_BASE_PORT = 0x200000;
 PCSCDMonitor *gPCSCDMonitor = NULL;
+static Security::MachPlusPlus::Port gMainServerPort;
 
 #ifndef HOTPLUGTEST
 	#include "readerfactory.h"
@@ -93,6 +94,7 @@
 		PCSCD::Server myserv("hotplug");
 		PCSCDMonitor xmon(myserv,bdls);
 		gPCSCDMonitor = &xmon;
+		gMainServerPort = myserv.primaryServicePort();
 		xmon.setCallbacks(WrapRFAddReader, WrapRFRemoveReader, WrapRFSuspendAllReaders, WrapRFAwakeAllReaders);
 		bdls.update();
 		myserv.run();
@@ -143,10 +145,23 @@
 
 LONG HPStopHotPluggables(void)
 {
-	return 0;
+	int rx = pthread_detach(sHotplugWatcherThread);
+	return rx;
 }
 
 void HPReCheckSerialReaders(void)
 {
 }
 
+LONG HPCancelHotPluggables(void)
+{
+	int rx = pthread_cancel(sHotplugWatcherThread);
+	return rx;
+}
+
+LONG HPJoinHotPluggables(void)
+{
+	char *value_ptr;
+	int rx = pthread_join(sHotplugWatcherThread, (void **)&value_ptr);
+	return rx;
+}

Modified: trunk/SmartCardServices/src/PCSC/ifdwrapper.c
===================================================================
--- trunk/SmartCardServices/src/PCSC/ifdwrapper.c	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/src/PCSC/ifdwrapper.c	2010-01-07 12:38:32 UTC (rev 90)
@@ -92,8 +92,12 @@
 	}
 #endif
 
-	/* LOCK THIS CODE REGION */
-	(void)SYS_MutexLock(rContext->mMutex);
+	/*
+	 * Locking is done in winscard.c SCardConnect() and SCardReconnect()
+	 *
+	 * This avoids renegotiating the protocol and confusing the card
+	 * Error returned by CCID driver is: CCID_Receive Procedure byte conflict
+	 */
 
 	ucValue[0] = rContext->dwSlot;
 
@@ -127,9 +131,6 @@
 	}
 #endif
 
-	/* END OF LOCKED REGION */
-	(void)SYS_MutexUnLock(rContext->mMutex);
-
 	return rv;
 }
 
@@ -376,7 +377,7 @@
 	else
 	{
 		rv = (*IFDH_power_icc) (rContext->dwSlot, dwAction,
-			pucAtr, pdwAtrLen);
+			(unsigned char *)pucAtr, pdwAtrLen);
 
 		ret = ATRDecodeAtr(&sSmartCard, pucAtr, *pdwAtrLen);
 	}
@@ -517,7 +518,7 @@
 			(void)IFDSetCapabilities(rContext, TAG_IFD_SLOTNUM, 1, ucValue);
 
 #ifndef PCSCLITE_STATIC_DRIVER
-			rv = (*IFD_get_capabilities) (dwTag, pucAtr);
+			rv = (*IFD_get_capabilities) (dwTag, (unsigned char *)pucAtr);
 #else
 			rv = IFD_Get_Capabilities(dwTag, pucAtr);
 #endif

Modified: trunk/SmartCardServices/src/PCSC/pcscdaemon.c
===================================================================
--- trunk/SmartCardServices/src/PCSC/pcscdaemon.c	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/src/PCSC/pcscdaemon.c	2010-01-07 12:38:32 UTC (rev 90)
@@ -75,9 +75,12 @@
 #include <security_utilities/debugging.h>
 
 char AraKiri = 0;
+int respawn = 0;
 static char Init = 1;
 int HPForceReaderPolling = 0;
 
+char **globalArgv;
+
 /*
  * Some internal functions
  */
@@ -86,10 +89,12 @@
 void at_exit(void);
 void clean_temp_files(void);
 void signal_reload(int sig);
+void signal_respawn(int sig);
 void signal_trap(int);
 void print_version (void);
 void print_usage (char const * const);
 int ProcessHotplugRequest();
+void tryRespawn();
 
 PCSCLITE_MUTEX usbNotifierMutex;
 
@@ -286,12 +291,21 @@
 		if (AraKiri)
 		{
 			/* stop the hotpug thread and waits its exit */
-//			HPStopHotPluggables();
+			Log1(PCSC_LOG_ERROR, "Preparing to exit...");
+			HPStopHotPluggables();
 			SYS_Sleep(1);
 
 			/* now stop all the drivers */
-			RFCleanupReaders(1);
+			int shouldExit = !respawn;
+			RFCleanupReaders(shouldExit);
 		}
+		if (respawn)
+		{
+			HPCancelHotPluggables();
+			HPJoinHotPluggables();
+			clean_temp_files();
+			tryRespawn();
+		}
 	}
 }
 
@@ -326,7 +340,8 @@
 	newReaderConfig = NULL;
 	setToForeground = 0;
 	HotPlug = 0;
-
+	globalArgv = argv;
+	
 	/*
 	 * test the version
 	 */
@@ -531,35 +546,33 @@
 	RFAllocateReaderSpace();
 
 	/*
-	 * Grab the information from the reader.conf
-	 */
-	if (newReaderConfig)
+		Grab the information from the reader.conf. If a file has been specified
+		and there is any error, consider it fatal. If no file was explicitly
+		specified, ignore if file not present.
+
+		 DBUpdateReaders returns:
+		 
+		 1	if config file can't be opened
+		 -1	if config file is broken
+		 0	if all good
+	 
+		We skip this step if running in 64 bit mode, as serial readers are considered
+		legacy code.
+	*/
+
+	rv = RFStartSerialReaders(newReaderConfig?newReaderConfig:PCSCLITE_READER_CONFIG);
+	if (rv == -1)
 	{
-		rv = RFStartSerialReaders(newReaderConfig);
-		if (rv != 0)
-		{
-			Log3(PCSC_LOG_CRITICAL, "invalid file %s: %s", newReaderConfig,
+		Log3(PCSC_LOG_CRITICAL, "invalid file %s: %s", newReaderConfig,
 				strerror(errno));
-			at_exit();
-		}
+		at_exit();
 	}
 	else
+	if ((rv == 1) && newReaderConfig)
 	{
-		rv = RFStartSerialReaders(PCSCLITE_READER_CONFIG);
-
-#if 0
-		if (rv == 1)
-		{
-			Log1(PCSC_LOG_INFO,
-				"warning: no " PCSCLITE_READER_CONFIG " found");
-			/*
-			 * Token error in file
-			 */
-		}
-		else
-#endif
-			if (rv == -1)
-				at_exit();
+		Log3(PCSC_LOG_CRITICAL, "file %s can't be opened: %s", 
+				 newReaderConfig, strerror(errno));
+		at_exit();
 	}
 
 	/*
@@ -585,6 +598,7 @@
 	signal(SIGHUP, signal_trap);
 
 	signal(SIGUSR1, signal_reload);
+	signal(SIGUSR2, signal_respawn);
 
 	SVCServiceRunLoop();
 
@@ -659,6 +673,54 @@
 	}
 }
 
+void signal_respawn(int sig)
+{
+	Log1(PCSC_LOG_INFO, "Got signal to respawn in 32 bit mode");
+	AraKiri = 1;
+	respawn = 1;
+}
+
+#if MAX_OS_X_VERSION_MIN_REQUIRED <= MAX_OS_X_VERSION_10_5
+	#include <spawn.h>
+	#include <err.h>
+	#include <CoreFoundation/CFBundle.h>
+	#include <CoreFoundation/CFNumber.h>
+#endif
+	
+extern char **environ;
+
+void tryRespawn()
+{
+#if MAX_OS_X_VERSION_MIN_REQUIRED <= MAX_OS_X_VERSION_10_5
+	/* now try respawn */
+	static cpu_type_t only32cpu[] = { CPU_TYPE_I386 };
+	const size_t only32cpuSize = (sizeof(only32cpu) / sizeof(cpu_type_t));
+	
+	int rx;
+	posix_spawnattr_t attr;
+	if ((rx = posix_spawnattr_init(&attr)) != 0) 
+		errc(1, rx, "posix_spawnattr_init");
+	
+	if ((rx = posix_spawnattr_setflags(&attr, POSIX_SPAWN_SETEXEC)) != 0) 
+		errc(1, rx, "posix_spawnattr_setflags");
+	
+	size_t copied = 0;
+	if ((rx = posix_spawnattr_setbinpref_np(&attr, only32cpuSize, only32cpu, &copied)) != 0) 
+		errc(1, rx, "posix_spawnattr_setbinpref_np");
+	
+	if (copied != only32cpuSize)
+		errx(1, "posix_spawnattr_setbinpref_np only copied %d of %d", (int)copied, only32cpuSize);
+	
+	pid_t pid = 0;
+    rx = posix_spawn(&pid, globalArgv[0], NULL, &attr, globalArgv, environ);
+	errc(1, rx, "posix_spawn: %s", globalArgv[0]);
+#else
+	/* we shouldn't get here, but if we do, we are in no state to continue */
+	Log1(PCSC_LOG_INFO, "Unexpected call to tryRespawn");
+	at_exit();
+#endif
+}	
+	
 void print_version (void)
 {
 	printf("%s version %s.\n",  PACKAGE, VERSION);

Modified: trunk/SmartCardServices/src/PCSC/pcscdmonitor.cpp
===================================================================
--- trunk/SmartCardServices/src/PCSC/pcscdmonitor.cpp	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/src/PCSC/pcscdmonitor.cpp	2010-01-07 12:38:32 UTC (rev 90)
@@ -40,6 +40,7 @@
 #include <security_utilities/refcount.h>
 #include <IOKit/usb/IOUSBLib.h>
 #include <IOKit/IOMessage.h>
+#include <asl.h>
 //#include <Kernel/IOKit/pccard/IOPCCardBridge.h>
 //#include <Kernel/IOKit/pccard/cs.h>
 
@@ -79,6 +80,8 @@
 
 #define kzIOPCCard16DeviceClassName			"IOPCCard16Device"
 
+#define PTRPARAMCAST(X)				(static_cast<unsigned int>(reinterpret_cast<uintptr_t>(X)))
+
 //
 // Fixed configuration parameters
 //
@@ -90,8 +93,24 @@
 static const uint32_t kVendorIDApple = 0x05AC;
 static const uint16_t kProductIDBuiltInISight = 0x8501;
 
-static void dumpdictentry(const void *key, const void *value, void *context);
+/*
+	Copied from USBVideoClass-230.2.3/Digitizers/USBVDC/Camera/USBClient/APW_VDO_USBVDC_USBClient.h
+*/
 
+enum {
+	kBuiltIniSightProductID = 0x8501,
+	kBuiltIniSightWave2ProductID = 0x8502,
+	kBuiltIniSightWave3ProductID = 0x8505,
+	kUSBWave4ProductID        = 0x8507,
+	kUSBWave2InK29ProductID        = 0x8508,
+	kUSBWaveReserved1ProductID        = 0x8509,
+	kUSBWaveReserved2ProductID        = 0x850a,
+	kExternaliSightProductID = 0x1111,
+	kLogitechVendorID = 0x046d
+};
+
+//static void dumpdictentry(const void *key, const void *value, void *context);
+
 #pragma mark -------------------- Class Methods --------------------
 
 //
@@ -377,8 +396,9 @@
 void PCSCDMonitor::ioServiceChange(void *refCon, io_service_t service,
 	natural_t messageType, void *messageArgument)
 {
-	secdebug("pcsc", "Processing ioServiceChange notice: 0x%08X [refCon=0x%08X, service=0x%08X, arg=0x%08X]", 
-		messageType, (uint32_t)refCon, service, (uint32_t)messageArgument);
+	uintptr_t messageArg = uintptr_t(messageArgument);
+	secdebug("pcsc", "Processing ioServiceChange notice: 0x%08X [refCon=0x%08lX, service=0x%08X, arg=0x%08lX]", 
+		messageType, (uintptr_t)refCon, service, messageArg);
 
 	if (mGoingToSleep && isSleepWakePeriod())	// waking up but still drowsy
 	{
@@ -414,9 +434,9 @@
 		break;
 	case kIOPCCardCSEventMessage:	// 0xE0054001 - not handled by mach_error_string
 		secdebug("pcsc", "  pccard event message: service: 0x%04X, type: 0x%08X", 
-			service, (unsigned int)messageArgument);
+			service, (unsigned int)messageArg);
 		// Card Services Events are defined in IOKit/pccard/cs.h
-		switch ((unsigned int)messageArgument)
+		switch (messageArg)
 		{
 			case CS_EVENT_EJECTION_REQUEST:
 				secdebug("pcsc", "  pccard event message: ejection request"); 
@@ -479,7 +499,24 @@
 				secdebug("pcsc", "     added to device map, address:  0x%08X, service: 0x%04X, [class @:%p]", address, service, newDevice.get());
 			}
 			else
+			{
 				secdebug("driver", "  no matching driver found for %s: %s", newDevice->name().c_str(), newDevice->path().c_str());
+				// Add MessageTracer logging as per <rdar://problem/6432650>. If we get here, pcscd was launched
+				// for a device insertion, but the device is not a smartcard reader (or doesn't have a
+				// matching driver.
+				char buf[256];
+				aslmsg msg = asl_new(ASL_TYPE_MSG);
+				asl_set(msg, "com.apple.message.domain", "com.apple.security.smartcardservices.unknowndevice" );
+				asl_set(msg, "com.apple.message.signature", "Non-smartcard device launched pcscd");
+				snprintf(buf, sizeof(buf), "%u", newDevice->vendorid());
+				asl_set(msg, "com.apple.message.signature2", buf);	// vendor ID
+				snprintf(buf, sizeof(buf), "%u", newDevice->productid());
+				asl_set(msg, "com.apple.message.signature3", buf);	// product ID
+				snprintf(buf, sizeof(buf), "Non-smartcard device launched pcscd [Vendor: %#X, Product: %#X]", 
+					newDevice->vendorid(), newDevice->productid());
+				asl_log(NULL, msg, ASL_LEVEL_NOTICE, buf);
+				asl_free(msg);
+			}
 		}
 		else
 			secdebug("pcsc", "  device added notice, but failed to find address for service: 0x%04X", service);
@@ -637,7 +674,13 @@
 	
 	getVendorAndProductID(dev, vendorID, productID, isPCCard);
 	
-	return ((vendorID & kVendorProductMask) == kVendorIDApple && (productID & kVendorProductMask) == kProductIDBuiltInISight);
+	if ((vendorID & kVendorProductMask) != kVendorIDApple)
+		return false;	// i.e. it is not an excluded device
+	
+	// Since Apple does not manufacture smartcard readers, just exclude
+	// If we even start making them, we should make it a CCID reader anyway
+	
+	return true;
 }
 
 void PCSCDMonitor::setDebugPropertiesForDevice(const IOKit::Device &dev, PCSCD::Device * newDevice)
@@ -970,8 +1013,9 @@
 void TerminationNoticeReceiver::ioServiceChange(void *refCon, io_service_t service,
 	natural_t messageType, void *messageArgument)
 {
-	secdebug("pcsc", "  [TerminationNoticeReceiver] processing ioServiceChange notice: 0x%08X [refCon=0x%08X, service=0x%08X, arg=0x%08X]", 
-		messageType, (uint32_t)refCon, service, (uint32_t)messageArgument);
+	uintptr_t messageArg = uintptr_t(messageArgument);
+	secdebug("pcsc", "  [TerminationNoticeReceiver] processing ioServiceChange notice: 0x%08X [refCon=0x%08lX, service=0x%08X, arg=0x%08lX]", 
+		messageType, (uintptr_t)refCon, service, messageArg);
 	parent().ioServiceChange(refCon, service, messageType, messageArgument);
 }
 
@@ -1124,8 +1168,10 @@
 	secdebug("pcsc", "------------------------------------------------");
 }
 
+#if 0
 static void dumpdictentry(const void *key, const void *value, void *context)
 {
 	secdebug("dumpd", "  dictionary key: %s, val: %p, CFGetTypeID: %d", cfString((CFStringRef)key).c_str(), value, (int)CFGetTypeID(value));
 }
+#endif
 

Modified: trunk/SmartCardServices/src/PCSC/readerfactory.c
===================================================================
--- trunk/SmartCardServices/src/PCSC/readerfactory.c	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/src/PCSC/readerfactory.c	2010-01-07 12:38:32 UTC (rev 90)
@@ -64,10 +64,18 @@
 #include "eventhandler.h"
 #include "ifdwrapper.h"
 #include "readerState.h"
-#include "configfile.h"
 
 #include <security_utilities/debugging.h>
 
+/*
+ 64 bit
+ */
+
+#include <mach/machine.h>
+#include <sys/sysctl.h>
+
+static cpu_type_t architectureForPid(pid_t pid);
+
 #ifndef PCSCLITE_HP_BASE_PORT
 #define PCSCLITE_HP_BASE_PORT       0x200000
 #endif /* PCSCLITE_HP_BASE_PORT */
@@ -96,7 +104,13 @@
 static int ReaderCheckForClone(PREADER_CONTEXT ctx, LPCSTR lpcReader, 
 	DWORD dwPort, LPCSTR lpcLibrary);
 
+static int ReaderCheckArchitecture(LPCSTR lpcLibrary);
+static cpu_type_t architectureForPid(pid_t pid);
+static int architectureMatch(const char *name);
 
+extern int DBUpdateReaders(char *readerconf);
+
+
 LONG RFAllocateReaderSpace()
 {
 	int i;
@@ -170,6 +184,10 @@
 	if (rv != SCARD_S_SUCCESS)
 		goto xit;
 
+	rv = ReaderCheckArchitecture(lpcLibrary);
+	if (rv != SCARD_S_SUCCESS)
+		goto xit;
+	
 	rv = RFInitializeReader(baseContext);
 	if (rv != SCARD_S_SUCCESS)
 		goto xit;
@@ -1063,7 +1081,7 @@
 
 int RFStartSerialReaders(const char *readerconf)
 {
-	return DBUpdateReaders(readerconf);
+	return DBUpdateReaders((char *)readerconf);
 }
 
 void RFReCheckReaderConf(void)
@@ -1468,3 +1486,121 @@
 		*ctxSlot->pdwMutex += 1;
 }
 
+#pragma mark ---------- 64 bit routines ----------
+
+/*
+ This section contains code needed to determine which architecture we are on.
+ */
+
+#include <spawn.h>
+#include <err.h>
+#include <CoreFoundation/CFBundle.h>
+#include <CoreFoundation/CFNumber.h>
+#include <signal.h>
+
+extern char **environ;
+extern char **globalArgv;
+
+static cpu_type_t architectureForPid(pid_t pid)
+{
+	// 	pid_t mypid = getpid();		// current process
+	
+	cpu_type_t cpuType = CPU_TYPE_ANY;
+	int mib[CTL_MAXNAME]={0,};
+	size_t len = CTL_MAXNAME;
+	if (sysctlnametomib("sysctl.proc_cputype", mib, &len) != -1) 
+	{
+		mib[len] = pid;
+		len++;
+		
+		size_t cputypelen = sizeof(cpuType);
+		if (sysctl(mib, len, &cpuType, &cputypelen, 0, 0) == -1) 
+		{
+			cpuType = CPU_TYPE_ANY;
+		}
+	}
+	return cpuType;
+}
+
+static int ReaderCheckArchitecture(LPCSTR lpcLibrary)
+{
+#if MAX_OS_X_VERSION_MIN_REQUIRED <= MAX_OS_X_VERSION_10_5
+	/*
+		Get architecture for current process. If we are already in 32-bit mode,
+		just keep going to avoid reswpaning ourselves over and over again.
+	*/
+	cpu_type_t cputype = architectureForPid(getpid());
+	if (! (cputype & CPU_ARCH_ABI64))
+		return SCARD_S_SUCCESS;
+	
+	/* 
+		Check to see if the driver has an architecture that matches how we are
+		running now. If it doesn't, we will try to relaunch in 32 bit mode.
+	*/
+	if (architectureMatch(lpcLibrary))
+		return SCARD_S_SUCCESS;
+	
+	pid_t pid = getpid();
+	
+	Log2(PCSC_LOG_INFO, "Send respawn signal to pcscd (pid=%d)", pid);
+	if (kill(pid, SIGUSR2) < 0)
+	{
+		Log3(PCSC_LOG_CRITICAL, "Can't signal pcscd (pid=%d): %s",
+			 pid, strerror(errno));
+	}
+	void *value_ptr;
+	pthread_exit(value_ptr);
+	return SCARD_E_SERVICE_STOPPED;
+#else
+	return SCARD_S_SUCCESS;
+#endif
+}
+
+static int architectureMatch(const char *name)
+{
+	int rx = false;
+	const Boolean isDirectory = true;
+	cpu_type_t cputype;
+	CFArrayRef pluginArchitectures = NULL;
+	
+	CFURLRef exurl = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, 
+												   CFStringCreateWithCString(kCFAllocatorDefault, name, kCFStringEncodingUTF8), kCFURLPOSIXPathStyle, isDirectory);
+	if (!exurl)
+		return false;
+	
+	CFBundleRef theBundle = CFBundleCreate(kCFAllocatorDefault, exurl);
+	if (theBundle == NULL)
+		goto xit;
+	
+	pluginArchitectures = CFBundleCopyExecutableArchitectures(theBundle);
+	if (pluginArchitectures == NULL)
+		goto xit;
+	
+	cputype = architectureForPid(getpid());
+	
+	int ix;
+	for (ix = CFArrayGetCount(pluginArchitectures); --ix >= 0; )
+	{
+		CFNumberRef cfarch = (CFNumberRef)CFArrayGetValueAtIndex(pluginArchitectures, ix);
+		UInt32 arch;
+		CFNumberGetValue(cfarch, kCFNumberSInt32Type, &arch);
+		if (cputype == arch)
+		{
+			rx = true;
+			break;
+		}
+	}
+	
+xit:
+	
+	if (exurl)
+		CFRelease(exurl);
+	if (theBundle)
+		CFRelease(theBundle);
+	if (pluginArchitectures)
+		CFRelease(pluginArchitectures);
+	
+	return rx;
+}
+
+

Modified: trunk/SmartCardServices/src/PCSC/thread_macosx.c
===================================================================
--- trunk/SmartCardServices/src/PCSC/thread_macosx.c	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/src/PCSC/thread_macosx.c	2010-01-07 12:38:32 UTC (rev 90)
@@ -68,18 +68,23 @@
 	PCSCLITE_THREAD_FUNCTION(pvFunction), LPVOID pvArg)
 {
 	pthread_attr_t attr;
+	int rx;
 
 	if (0 != pthread_attr_init(&attr))
 		return 0;
 
-	if (0 != pthread_attr_setdetachstate(&attr,
-		attributes & THREAD_ATTR_DETACHED ? PTHREAD_CREATE_DETACHED : PTHREAD_CREATE_JOINABLE))
-		return 0;
-
-	if (0 == pthread_create(pthThread, &attr, pvFunction, pvArg))
-		return 1;
-	else
-		return 0;
+	if (attributes & THREAD_ATTR_DETACHED)
+		if (0 != pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED))
+		{
+			pthread_attr_destroy(&attr);
+			return 0;
+		}
+	
+	rx = pthread_create(pthThread, &attr, pvFunction, pvArg);
+	
+	pthread_attr_destroy(&attr);
+	
+	return (0 == rx);	// return 1 if success, 0 otherwise
 }
 
 int SYS_ThreadCancel(PCSCLITE_THREAD_T * pthThread)

Modified: trunk/SmartCardServices/src/PCSC/winscard.c
===================================================================
--- trunk/SmartCardServices/src/PCSC/winscard.c	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/src/PCSC/winscard.c	2010-01-07 12:38:32 UTC (rev 90)
@@ -332,6 +332,10 @@
 	{
 		if (dwShareMode != SCARD_SHARE_DIRECT)
 		{
+			/* lock here instead in IFDSetPTS() to lock up to
+			 * setting rContext->readerState->cardProtocol */
+			SYS_MutexLock(rContext->mMutex);
+
 			/* the protocol is not yet set (no PPS yet) */
 			if (SCARD_PROTOCOL_UNSET == SharedReaderState_Protocol(rContext->readerState))
 			{
@@ -355,16 +359,26 @@
 
 				/* keep cardProtocol = SCARD_PROTOCOL_UNSET in case of error  */
 				if (SET_PROTOCOL_PPS_FAILED == ret)
+				{
+					SYS_MutexUnLock(rContext->mMutex);
 					return SCARD_W_UNRESPONSIVE_CARD;
+				}
 
 				if (SET_PROTOCOL_WRONG_ARGUMENT == ret)
+				{
+					SYS_MutexUnLock(rContext->mMutex);
 					return SCARD_E_PROTO_MISMATCH;
+				}
 
-				/* use negociated protocol */
+				/* use negotiated protocol */
 				SharedReaderState_SetProtocol(rContext->readerState, ret);
+
+				SYS_MutexUnLock(rContext->mMutex);
 			}
 			else
 			{
+				SYS_MutexUnLock(rContext->mMutex);
+
 				if (! (dwPreferredProtocols & SharedReaderState_Protocol(rContext->readerState)))
 					return SCARD_E_PROTO_MISMATCH;
 			}
@@ -544,6 +558,10 @@
 	{
 		if (dwShareMode != SCARD_SHARE_DIRECT)
 		{
+			/* lock here instead in IFDSetPTS() to lock up to
+			 * setting rContext->readerState->cardProtocol */
+			SYS_MutexLock(rContext->mMutex);
+
 			/* the protocol is not yet set (no PPS yet) */
 			if (SCARD_PROTOCOL_UNSET == SharedReaderState_Protocol(rContext->readerState))
 			{
@@ -565,16 +583,26 @@
 
 				/* keep cardProtocol = SCARD_PROTOCOL_UNSET in case of error  */
 				if (SET_PROTOCOL_PPS_FAILED == ret)
+				{
+					SYS_MutexUnLock(rContext->mMutex);
 					return SCARD_W_UNRESPONSIVE_CARD;
+				}
 
 				if (SET_PROTOCOL_WRONG_ARGUMENT == ret)
+				{
+					SYS_MutexUnLock(rContext->mMutex);
 					return SCARD_E_PROTO_MISMATCH;
+				}
 
-				/* use negociated protocol */
+				/* use negotiated protocol */
 				SharedReaderState_SetProtocol(rContext->readerState, ret);
+
+				SYS_MutexUnLock(rContext->mMutex);
 			}
 			else
 			{
+				SYS_MutexUnLock(rContext->mMutex);
+
 				if (! (dwPreferredProtocols & SharedReaderState_Protocol(rContext->readerState)))
 					return SCARD_E_PROTO_MISMATCH;
 			}

Modified: trunk/SmartCardServices/src/PCSC/winscard_clnt.c
===================================================================
--- trunk/SmartCardServices/src/PCSC/winscard_clnt.c	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/src/PCSC/winscard_clnt.c	2010-01-07 12:38:32 UTC (rev 90)
@@ -156,6 +156,8 @@
 static LONG SCardCheckDaemonAvailability(void);
 static int SCardInitializeOnce();
 
+static int SHMClientCommunicationTimeout();
+
 /*
  * Thread safety functions
  */
@@ -282,13 +284,13 @@
 		veStr->minor = PROTOCOL_VERSION_MINOR;
 		htonlVersionStruct(veStr);
 
-		if (-1 == WrapSHMWrite(CMD_VERSION, dwClientID, sizeof(version_struct), PCSCLITE_CLIENT_ATTEMPTS, veStr))
+		if (-1 == WrapSHMWrite(CMD_VERSION, dwClientID, sizeof(version_struct), SHMClientCommunicationTimeout(), veStr))
 			return SCARD_E_NO_SERVICE;
 
 		/*
 		 * Read a message from the server
 		 */
-		if (-1 == SHMClientReadMessage(&msgStruct, dwClientID, sizeof(version_struct), PCSCLITE_CLIENT_ATTEMPTS))
+		if (-1 == SHMClientReadMessage(&msgStruct, dwClientID, sizeof(version_struct), SHMClientCommunicationTimeout()))
 		{
 			Log1(PCSC_LOG_ERROR, "Your pcscd is too old and does not support CMD_VERSION");
 			return SCARD_F_COMM_ERROR;
@@ -326,7 +328,7 @@
 	/*
 	 * Read the response from the server
 	 */
-	rv = SHMClientReadMessage(&msgStruct, dwClientID, sizeof(establish_struct), PCSCLITE_CLIENT_ATTEMPTS);
+	rv = SHMClientReadMessage(&msgStruct, dwClientID, sizeof(establish_struct), SHMClientCommunicationTimeout());
 
 	if (rv == -1)
 		return SCARD_F_COMM_ERROR;
@@ -403,7 +405,7 @@
 	/*
 	 * Read a message from the server
 	 */
-	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(release_struct), PCSCLITE_CLIENT_ATTEMPTS);
+	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(release_struct), SHMClientCommunicationTimeout());
 	memcpy(&scReleaseStruct, &msgStruct.data, sizeof(scReleaseStruct));
 	ntohlReleaseStruct(&scReleaseStruct);
 
@@ -557,7 +559,7 @@
 	
 	rv = WrapSHMWrite(SCARD_CONNECT, psContextMap[dwContextIndex].dwClientID,
 		sizeof(scConnectStruct),
-		PCSCLITE_CLIENT_ATTEMPTS, (void *) &scConnectStruct);
+		SHMClientCommunicationTimeout(), (void *) &scConnectStruct);
 
 	if (rv == -1)
 	{
@@ -568,7 +570,7 @@
 	/*
 	 * Read a message from the server
 	 */
-	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(connect_struct), PCSCLITE_CLIENT_ATTEMPTS);
+	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(connect_struct), SHMClientCommunicationTimeout());
 
 	memcpy(&scConnectStruct, &msgStruct.data, sizeof(scConnectStruct));
 	ntohlConnectStruct(&scConnectStruct);
@@ -737,7 +739,7 @@
 
 	rv = WrapSHMWrite(SCARD_RECONNECT, psContextMap[dwContextIndex].dwClientID,
 		sizeof(scReconnectStruct),
-		PCSCLITE_CLIENT_ATTEMPTS, (void *) &scReconnectStruct);
+		SHMClientCommunicationTimeout(), (void *) &scReconnectStruct);
 
 	if (rv == -1)
 	{
@@ -748,7 +750,7 @@
 	/*
 	 * Read a message from the server
 	 */
-	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(reconnect_struct), PCSCLITE_CLIENT_ATTEMPTS);
+	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(reconnect_struct), SHMClientCommunicationTimeout());
 
 	memcpy(&scReconnectStruct, &msgStruct.data, sizeof(scReconnectStruct));
 	ntohlReconnectStruct(&scReconnectStruct);
@@ -834,7 +836,7 @@
 	
 	rv = WrapSHMWrite(SCARD_DISCONNECT, psContextMap[dwContextIndex].dwClientID,
 		sizeof(scDisconnectStruct),
-		PCSCLITE_CLIENT_ATTEMPTS, (void *) &scDisconnectStruct);
+		SHMClientCommunicationTimeout(), (void *) &scDisconnectStruct);
 
 	if (rv == -1)
 	{
@@ -845,7 +847,7 @@
 	/*
 	 * Read a message from the server
 	 */
-	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(disconnect_struct), PCSCLITE_CLIENT_ATTEMPTS);
+	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(disconnect_struct), SHMClientCommunicationTimeout());
 
 	memcpy(&scDisconnectStruct, &msgStruct.data, sizeof(scDisconnectStruct));
 	ntohlDisconnectStruct(&scDisconnectStruct);
@@ -950,7 +952,7 @@
 	{
 		rv = WrapSHMWrite(SCARD_BEGIN_TRANSACTION, psContextMap[dwContextIndex].dwClientID,
 			sizeof(txBeginStruct),
-			PCSCLITE_CLIENT_ATTEMPTS, (void *) &txBeginStruct);
+			SHMClientCommunicationTimeout(), (void *) &txBeginStruct);
 
 		if (rv == -1)
 		{
@@ -961,7 +963,7 @@
 		/*
 		 * Read a message from the server
 		 */
-		rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(begin_struct), PCSCLITE_CLIENT_ATTEMPTS);
+		rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(begin_struct), SHMClientCommunicationTimeout());
 		memcpy(&rxBeginStruct, &msgStruct.data, sizeof(rxBeginStruct));
 		ntohlBeginStruct(&rxBeginStruct);
 
@@ -1079,7 +1081,7 @@
 	
 	rv = WrapSHMWrite(SCARD_END_TRANSACTION, psContextMap[dwContextIndex].dwClientID,
 		sizeof(scEndStruct),
-		PCSCLITE_CLIENT_ATTEMPTS, (void *) &scEndStruct);
+		SHMClientCommunicationTimeout(), (void *) &scEndStruct);
 	secdebug("pcscd", "SCardEndTransaction: WrapSHMWrite result: 0x%08X", rv);
 
 	if (rv == -1)
@@ -1091,7 +1093,7 @@
 	/*
 	 * Read a message from the server
 	 */
-	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(end_struct), PCSCLITE_CLIENT_ATTEMPTS);
+	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(end_struct), SHMClientCommunicationTimeout());
 	secdebug("pcscd", "SCardEndTransaction: SHMClientRead result: 0x%08X", rv);
 
 	memcpy(&scEndStruct, &msgStruct.data, sizeof(scEndStruct));
@@ -1165,7 +1167,7 @@
 	
 	rv = WrapSHMWrite(SCARD_CANCEL_TRANSACTION, psContextMap[dwContextIndex].dwClientID,
 		sizeof(scCancelStruct),
-		PCSCLITE_CLIENT_ATTEMPTS, (void *) &scCancelStruct);
+		SHMClientCommunicationTimeout(), (void *) &scCancelStruct);
 
 	if (rv == -1)
 	{
@@ -1176,7 +1178,7 @@
 	/*
 	 * Read a message from the server
 	 */
-	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(cancel_struct), PCSCLITE_CLIENT_ATTEMPTS);
+	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(cancel_struct), SHMClientCommunicationTimeout());
 
 	memcpy(&scCancelStruct, &msgStruct.data, sizeof(scCancelStruct));
 	ntohlCancelStruct(&scCancelStruct);
@@ -1324,7 +1326,7 @@
 	
 	rv = WrapSHMWrite(SCARD_STATUS, psContextMap[dwContextIndex].dwClientID,
 		sizeof(scStatusStruct),
-		PCSCLITE_CLIENT_ATTEMPTS, (void *) &scStatusStruct);
+		SHMClientCommunicationTimeout(), (void *) &scStatusStruct);
 
 	if (rv == -1)
 	{
@@ -1335,7 +1337,7 @@
 	/*
 	 * Read a message from the server
 	 */
-	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(status_struct), PCSCLITE_CLIENT_ATTEMPTS);
+	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(status_struct), SHMClientCommunicationTimeout());
 
 	memcpy(&scStatusStruct, &msgStruct.data, sizeof(scStatusStruct));
 	ntohlStatusStruct(&scStatusStruct);
@@ -2110,7 +2112,7 @@
 		rv = WrapSHMWrite(SCARD_CONTROL_EXTENDED,
 			psContextMap[dwContextIndex].dwClientID,
 			csesize,
-			PCSCLITE_CLIENT_ATTEMPTS, buffer);
+			SHMClientCommunicationTimeout(), buffer);
 
 		if (rv == -1)
 		{
@@ -2122,7 +2124,7 @@
 		 * Read a message from the server
 		 */
 		/* read the first block */
-		rv = SHMClientReadMessage(pmsgStruct, psContextMap[dwContextIndex].dwClientID, 0, PCSCLITE_CLIENT_ATTEMPTS);
+		rv = SHMClientReadMessage(pmsgStruct, psContextMap[dwContextIndex].dwClientID, 0, SHMClientCommunicationTimeout());
 		if (rv == -1)
 		{
 			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
@@ -2139,7 +2141,7 @@
 			rv = SHMMessageReceive(buffer + sizeof(sharedSegmentMsg),
 				scControlStructExtended->size-PCSCLITE_MAX_MESSAGE_SIZE,
 				psContextMap[dwContextIndex].dwClientID,
-				PCSCLITE_CLIENT_ATTEMPTS);
+				SHMClientCommunicationTimeout());
 			if (rv == -1)
 			{
 				SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
@@ -2173,7 +2175,7 @@
 		htonlControlStruct(&scControlStruct);
 		
 		rv = WrapSHMWrite(SCARD_CONTROL, psContextMap[dwContextIndex].dwClientID,
-			sizeof(scControlStruct), PCSCLITE_CLIENT_ATTEMPTS, &scControlStruct);
+			sizeof(scControlStruct), SHMClientCommunicationTimeout(), &scControlStruct);
 
 		if (rv == -1)
 		{
@@ -2184,7 +2186,7 @@
 		/*
 		 * Read a message from the server
 		 */
-		rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(control_struct), PCSCLITE_CLIENT_ATTEMPTS);
+		rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(control_struct), SHMClientCommunicationTimeout());
 
 		if (rv == -1)
 		{
@@ -2419,7 +2421,7 @@
 	ntohlGetSetStruct(&scGetSetStruct);
 	rv = WrapSHMWrite(command,
 		psContextMap[dwContextIndex].dwClientID, sizeof(scGetSetStruct),
-		PCSCLITE_CLIENT_ATTEMPTS, &scGetSetStruct);
+		SHMClientCommunicationTimeout(), &scGetSetStruct);
 
 	if (rv == -1)
 	{
@@ -2430,7 +2432,7 @@
 	/*
 	 * Read a message from the server
 	 */
-	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(getset_struct), PCSCLITE_CLIENT_ATTEMPTS);
+	rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(getset_struct), SHMClientCommunicationTimeout());
 
 	if (rv == -1)
 	{
@@ -2585,8 +2587,8 @@
 		scTransmitStructExtended->cbSendLength = cbSendLength;
 		scTransmitStructExtended->pcbRecvLength = *pcbRecvLength;
 		scTransmitStructExtended->size = sizeof(*scTransmitStructExtended) + cbSendLength;
-		memcpy(&scTransmitStructExtended->pioSendPci, pioSendPci,
-			sizeof(SCARD_IO_REQUEST));
+		scTransmitStructExtended->pioSendPciProtocol = pioSendPci->dwProtocol;
+		scTransmitStructExtended->pioSendPciLength = pioSendPci->cbPciLength;
 		memcpy(scTransmitStructExtended->data, pbSendBuffer, cbSendLength);
 		secdebug("pcscd", "Extended APDU: initial request: hCard: 0x%08X, cbSendLength: %d", 
 			hCard, cbSendLength);
@@ -2594,11 +2596,11 @@
 
 		if (pioRecvPci)
 		{
-			memcpy(&scTransmitStructExtended->pioRecvPci, pioRecvPci,
-				sizeof(SCARD_IO_REQUEST));
+			scTransmitStructExtended->pioRecvPciProtocol = pioRecvPci->dwProtocol;
+			scTransmitStructExtended->pioRecvPciLength = pioRecvPci->cbPciLength;
 		}
 		else
-			scTransmitStructExtended->pioRecvPci.dwProtocol = SCARD_PROTOCOL_ANY;
+			scTransmitStructExtended->pioRecvPciProtocol = SCARD_PROTOCOL_ANY;
 
 		size_t tsesize = scTransmitStructExtended->size;		// remember it before we byte swap
 		LogXxd(PCSC_LOG_INFO, "Extended APDU: sending: ", pbSendBuffer, cbSendLength);
@@ -2606,7 +2608,7 @@
 		rv = WrapSHMWrite(SCARD_TRANSMIT_EXTENDED,
 			psContextMap[dwContextIndex].dwClientID,
 			tsesize,
-			PCSCLITE_CLIENT_ATTEMPTS, buffer);
+			SHMClientCommunicationTimeout(), buffer);
 		secdebug("pcscd", "Extended APDU: WrapSHMWrite result: %d [0x%08X]", rv, rv);
 
 		if (rv == -1)
@@ -2618,7 +2620,7 @@
 		/*
 		 * Read a message from the server
 		 */
-		rv = SHMClientReadMessage((psharedSegmentMsg)buffer, psContextMap[dwContextIndex].dwClientID, 0, PCSCLITE_CLIENT_ATTEMPTS);
+		rv = SHMClientReadMessage((psharedSegmentMsg)buffer, psContextMap[dwContextIndex].dwClientID, 0, SHMClientCommunicationTimeout());
 		if (rv == -1)
 		{
 			SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
@@ -2630,7 +2632,7 @@
 		ntohlTransmitStructExtended(scTransmitStructExtended);
 		secdebug("pcscd", "Extended APDU: reply received: hCard: 0x%08X, cbSendLength: %d", 
 			hCard, cbSendLength);
-		secdebug("pcscd", "               reply received: pcbRecvLength: %d, size: %d", 
+		secdebug("pcscd", "               reply received: pcbRecvLength: %d, size: %llu", 
 			scTransmitStructExtended->pcbRecvLength, scTransmitStructExtended->size);
 		secdebug("pcscd", "               reply received: rv %d [0x%08X]", 
 			scTransmitStructExtended -> rv, scTransmitStructExtended -> rv);
@@ -2642,7 +2644,7 @@
 			rv = SHMMessageReceive(buffer + sizeof(sharedSegmentMsg),
 				scTransmitStructExtended->size-PCSCLITE_MAX_MESSAGE_SIZE,
 				psContextMap[dwContextIndex].dwClientID,
-				PCSCLITE_CLIENT_ATTEMPTS);
+				SHMClientCommunicationTimeout());
 			if (rv == -1)
 			{
 				SYS_MutexUnLock(psContextMap[dwContextIndex].mMutex);
@@ -2662,8 +2664,10 @@
 				scTransmitStructExtended -> pcbRecvLength);
 
 			if (pioRecvPci)
-				memcpy(pioRecvPci, &scTransmitStructExtended -> pioRecvPci,
-					sizeof(SCARD_IO_REQUEST));
+			{
+				pioRecvPci->dwProtocol = scTransmitStructExtended->pioRecvPciProtocol;
+				pioRecvPci->cbPciLength = scTransmitStructExtended->pioRecvPciLength;
+			}
 		}
 
 		*pcbRecvLength = scTransmitStructExtended -> pcbRecvLength;
@@ -2680,22 +2684,22 @@
 		scTransmitStruct.hCard = hCard;
 		scTransmitStruct.cbSendLength = cbSendLength;
 		scTransmitStruct.pcbRecvLength = *pcbRecvLength;
-		memcpy(&scTransmitStruct.pioSendPci, pioSendPci,
-			sizeof(SCARD_IO_REQUEST));
+		scTransmitStruct.pioSendPciProtocol = pioSendPci->dwProtocol;
+		scTransmitStruct.pioSendPciLength = pioSendPci->cbPciLength;
 		memcpy(scTransmitStruct.pbSendBuffer, pbSendBuffer, cbSendLength);
 
 		if (pioRecvPci)
 		{
-			memcpy(&scTransmitStruct.pioRecvPci, pioRecvPci,
-				sizeof(SCARD_IO_REQUEST));
+			scTransmitStruct.pioRecvPciProtocol = pioRecvPci->dwProtocol;
+			scTransmitStruct.pioRecvPciLength = pioRecvPci->cbPciLength;
 		}
 		else
-			scTransmitStruct.pioRecvPci.dwProtocol = SCARD_PROTOCOL_ANY;
+			scTransmitStruct.pioRecvPciProtocol = SCARD_PROTOCOL_ANY;
 
 		htonlTransmitStruct(&scTransmitStruct);
 		rv = WrapSHMWrite(SCARD_TRANSMIT,
 			psContextMap[dwContextIndex].dwClientID, sizeof(scTransmitStruct),
-			PCSCLITE_CLIENT_ATTEMPTS, (void *) &scTransmitStruct);
+			SHMClientCommunicationTimeout(), (void *) &scTransmitStruct);
 
 		if (rv == -1)
 		{
@@ -2706,7 +2710,7 @@
 		/*
 		 * Read a message from the server
 		 */
-		rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(transmit_struct), PCSCLITE_CLIENT_ATTEMPTS);
+		rv = SHMClientReadMessage(&msgStruct, psContextMap[dwContextIndex].dwClientID, sizeof(transmit_struct), SHMClientCommunicationTimeout());
 
 		memcpy(&scTransmitStruct, &msgStruct.data, sizeof(scTransmitStruct));
 		ntohlTransmitStruct(&scTransmitStruct);
@@ -2733,8 +2737,10 @@
 				scTransmitStruct.pcbRecvLength);
 
 			if (pioRecvPci)
-				memcpy(pioRecvPci, &scTransmitStruct.pioRecvPci,
-					sizeof(SCARD_IO_REQUEST));
+			{
+				pioRecvPci->dwProtocol = scTransmitStruct.pioRecvPciProtocol;
+				pioRecvPci->cbPciLength = scTransmitStruct.pioRecvPciLength;
+			}
 		}
 
 		*pcbRecvLength = scTransmitStruct.pcbRecvLength;
@@ -3383,3 +3389,20 @@
 
 	return SCARD_S_SUCCESS;
 }
+
+static int SHMClientCommunicationTimeout()
+{
+	/*
+	 This is a param to e.g. SHMClientReadMessage, and is a timeout in milliseconds.
+	 The constant PCSCLITE_SERVER_ATTEMPTS is very poorly named; it is a time value
+	 in milliseconds, not the number of attempts. Some values to use:
+	 5		default if PCSCLITE_ENHANCED_MESSAGING not defined
+	 200		if PCSCLITE_ENHANCED_MESSAGING is defined
+	 12000	might be a good value to set while debugging
+	 */
+	
+	static int baseTimeout = 12000;//PCSCLITE_CLIENT_ATTEMPTS;
+	volatile int timeOut = baseTimeout;
+	
+	return timeOut;
+}

Modified: trunk/SmartCardServices/src/PCSC/winscard_msg.cpp
===================================================================
--- trunk/SmartCardServices/src/PCSC/winscard_msg.cpp	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/src/PCSC/winscard_msg.cpp	2010-01-07 12:38:32 UTC (rev 90)
@@ -51,7 +51,6 @@
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/stat.h>
-#include <sys/mman.h>
 #include <sys/socket.h>
 #include <sys/time.h>
 #include <sys/un.h>
@@ -72,6 +71,13 @@
 #include "winscard_msg.h"
 #include "sys_generic.h"
 
+#include <libkern/OSByteOrder.h>
+/*
+ #define bswap_16 OSSwapInt16
+#define bswap_32 OSSwapInt32
+#define bswap_64 OSSwapInt64
+*/
+
 #include <security_utilities/debugging.h>
 
 /**
@@ -85,7 +91,7 @@
  *
  * @return Same error codes as SHMMessageReceive().
  */
-INTERNAL int SHMClientRead(psharedSegmentMsg msgStruct, DWORD dwClientID, int blockamount)
+INTERNAL int32_t SHMClientRead(psharedSegmentMsg msgStruct, uint32_t dwClientID, int32_t blockamount)
 {
 	int rv = SHMMessageReceive(msgStruct, sizeof(*msgStruct), dwClientID, blockamount);
 	SHSharedSegmentMsgToHostOrder(msgStruct);
@@ -104,7 +110,7 @@
  *
  * @return Same error codes as SHMMessageReceive().
  */
-INTERNAL int SHMClientReadMessage(psharedSegmentMsg msgStruct, DWORD dwClientID, size_t dataSize, int blockamount)
+INTERNAL int32_t SHMClientReadMessage(psharedSegmentMsg msgStruct, uint32_t dwClientID, size_t dataSize, int32_t blockamount)
 {
 	// Read the basic header first so we know the size of the rest
 	// The special case of "dataSize == 0" means that we should deduce the size of the
@@ -118,6 +124,7 @@
 	if (rv)
 		return rv;
 	SHSharedSegmentMsgToHostOrder(msgStruct);
+
 	// Integrity check
 	if (msgStruct->headerTag != WINSCARD_MSG_HEADER_TAG)
 	{
@@ -127,6 +134,7 @@
 			msgStruct->headerTag, msgStruct->command);
 		return SCARD_F_INTERNAL_ERROR;
 	}
+	
 	if (dataSize == 0)
 		dataSize = msgStruct->msgSize - headerSize;		// message size includes header
 	else
@@ -136,6 +144,7 @@
 		secdebug("pcscd", "Error: create on client socket: %s", strerror(errno));
 		return SCARD_F_INTERNAL_ERROR;
 	}
+
 	Log2(PCSC_LOG_DEBUG, "SHMClientReadMessage: Issuing read for %d bytes", dataSize);
 	secdebug("pcscd", "SHMClientReadMessage: Issuing read for %ld bytes", dataSize);
 	if (blockamount == 0)
@@ -143,6 +152,7 @@
 	rv = SHMMessageReceive(msgStruct->data, dataSize, dwClientID, blockamount);
 	Log3(rv?PCSC_LOG_CRITICAL:PCSC_LOG_DEBUG, "SHMClientReadMessage: read message body error: 0x%08X [0x%08X]", rv, rv);
 	secdebug("pcscd", "SHMClientReadMessage: read message body error: 0x%08X [0x%08X]", rv, rv);
+
 	return rv;
 }
 
@@ -159,7 +169,7 @@
  * @retval -1 The socket can not open a connection.
  * @retval -1 Can not set the socket to non-blocking.
  */
-INTERNAL int SHMClientSetupSession(PDWORD pdwClientID)
+INTERNAL int SHMClientSetupSession(uint32_t *pdwClientID)
 {
 	struct sockaddr_un svc_addr;
 	int one;
@@ -181,8 +191,8 @@
 	if (connect(*pdwClientID, (struct sockaddr *) &svc_addr,
 			sizeof(svc_addr.sun_family) + strlen(svc_addr.sun_path) + 1) < 0)
 	{
-		Log2(PCSC_LOG_CRITICAL, "Error: connect to client socket: %s",
-			strerror(errno));
+		Log3(PCSC_LOG_CRITICAL, "Error: connect to client socket %s: %s",
+			PCSCLITE_CSOCK_NAME, strerror(errno));
 		SYS_CloseFile(*pdwClientID);
 		return -1;
 	}
@@ -190,8 +200,8 @@
 	one = 1;
 	if (ioctl(*pdwClientID, FIONBIO, &one) < 0)
 	{
-		Log2(PCSC_LOG_CRITICAL, "Error: cannot set socket nonblocking: %s",
-			strerror(errno));
+		Log3(PCSC_LOG_CRITICAL, "Error: cannot set socket %s nonblocking: %s",
+			PCSCLITE_CSOCK_NAME, strerror(errno));
 		SYS_CloseFile(*pdwClientID);
 		return -1;
 	}
@@ -206,7 +216,7 @@
  *
  * @retval 0 Success.
  */
-INTERNAL int SHMClientCloseSession(DWORD dwClientID)
+INTERNAL int SHMClientCloseSession(uint32_t dwClientID)
 {
 	SYS_CloseFile(dwClientID);
 	return 0;
@@ -241,8 +251,8 @@
  * @retval -1 Socket is closed.
  * @retval -1 A signal was received.
  */
-INTERNAL int SHMMessageSend(void *buffer_void, size_t buffer_size,
-	int filedes, int blockAmount)
+INTERNAL int SHMMessageSend(void *buffer_void, uint64_t buffer_size,
+	int32_t filedes, int32_t blockAmount)
 {
 	char *buffer = (char *)buffer_void;
 
@@ -375,8 +385,8 @@
  * @retval -1 Socket is closed.
  * @retval -1 A signal was received.
  */
-INTERNAL int SHMMessageReceive(void *buffer_void, size_t buffer_size,
-	int filedes, int blockAmount)
+INTERNAL int SHMMessageReceive(void *buffer_void, uint64_t buffer_size,
+	int32_t filedes, int32_t blockAmount)
 {
 	char *buffer = (char *)buffer_void;
 
@@ -508,8 +518,8 @@
  *
  * @return Same error codes as SHMMessageSend().
  */
-INTERNAL int WrapSHMWrite(unsigned int command, DWORD dwClientID,
-	unsigned int dataSize, unsigned int blockAmount, void *data_void)
+INTERNAL int32_t WrapSHMWrite(uint32_t command, uint32_t dwClientID,
+	uint64_t size, uint32_t blockAmount, void *data_void)
 {
 	char *data = (char *)data_void;
 
@@ -522,12 +532,13 @@
 
 	memset(&msgStruct, 0, sizeof(msgStruct));
 	msgStruct.headerTag = WINSCARD_MSG_HEADER_TAG;
-	msgStruct.msgSize = sizeof(sharedSegmentMsg) - sizeof(msgStruct.data) + dataSize;
+	msgStruct.msgSize = sizeof(sharedSegmentMsg) - sizeof(msgStruct.data) + size;
 	msgStruct.mtype = (command == CMD_VERSION)?CMD_VERSION:CMD_FUNCTION;
 	msgStruct.user_id = SYS_GetUID();
 	msgStruct.group_id = SYS_GetGID();
 	msgStruct.command = command;
 	msgStruct.date = time(NULL);
+	memset(msgStruct.key, 0, sizeof(msgStruct.key));
 
 	if ((SCARD_TRANSMIT_EXTENDED == command)
 		|| (SCARD_CONTROL_EXTENDED == command))
@@ -537,42 +548,41 @@
 		size_t sizeRemaining = (msgStruct.msgSize <= PCSCLITE_MAX_MESSAGE_SIZE)?0:
 			(msgStruct.msgSize - PCSCLITE_MAX_MESSAGE_SIZE);
 		memcpy(msgStruct.data, data, sizeToSend);
+		
 		SHSharedSegmentMsgToNetworkOrder(&msgStruct);
-		ret = SHMMessageSend(&msgStruct, sizeToSend, dwClientID,
-			blockAmount);
+		ret = SHMMessageSend(&msgStruct, sizeToSend, dwClientID, blockAmount);
 		if (ret)
 			return ret;
 
 		// Warning: this code only works for sizes of 2 blocks or less
-		if (sizeRemaining > PCSCLITE_MAX_MESSAGE_SIZE)
+		if (sizeRemaining > sizeof(msgStruct.data))
 		{
-			Log2(PCSC_LOG_ERROR, "WrapSHMWrite: cannot send message of size %d", msgStruct.msgSize);
+			Log2(PCSC_LOG_ERROR, "WrapSHMWrite: cannot send message of size %d", sizeRemaining);
 			return -1;
 		}
-		
+
+		// Message header already has the correct byte order
 		/* do not send an empty second block */
 		if (sizeRemaining > 0)
 		{
-			/* second block */
-			ret = SHMMessageSend(data+PCSCLITE_MAX_MESSAGE_SIZE,
-				sizeRemaining, dwClientID, blockAmount);
+			memcpy(msgStruct.data, data, sizeRemaining);
+			ret = SHMMessageSend(&msgStruct, sizeToSend, dwClientID, blockAmount);
 			if (ret)
 				return ret;
 		}
 	}
 	else
-	if (msgStruct.msgSize > PCSCLITE_MAX_MESSAGE_SIZE)
+	if (size > sizeof(msgStruct.data))
 	{
-		Log3(PCSC_LOG_ERROR, "WrapSHMWrite: cannot send message of size %d with this command: %d", msgStruct.msgSize, command);
+		Log3(PCSC_LOG_ERROR, "WrapSHMWrite: cannot send message of size %d with this command: %d", size, command);
 		return -1;
 	}
 	else
 	{
-		size_t savedSize = msgStruct.msgSize;
-		
-		memcpy(msgStruct.data, data, dataSize);
+		size_t sizeToSend = msgStruct.msgSize;
+		memcpy(msgStruct.data, data, size);
 		SHSharedSegmentMsgToNetworkOrder(&msgStruct);
-		ret = SHMMessageSend(&msgStruct, savedSize, dwClientID, blockAmount);
+		ret = SHMMessageSend(&msgStruct, sizeToSend, dwClientID, blockAmount);
 	}
 	return ret;
 }
@@ -613,7 +623,6 @@
 		msg->user_id = htonl(msg->user_id);
 		msg->group_id = htonl(msg->group_id);
 		msg->command = htonl(msg->command);
-		msg->dummy = htonl(msg->dummy);
 		msg->date = htonl(msg->date);
 	}
 }
@@ -637,7 +646,6 @@
 		msg->user_id = ntohl(msg->user_id);
 		msg->group_id = ntohl(msg->group_id);
 		msg->command = ntohl(msg->command);
-		msg->dummy = ntohl(msg->dummy);
 		msg->date = ntohl(msg->date);
 	}
 }
@@ -650,7 +658,7 @@
 		cs->dwControlCode = htonl(cs->dwControlCode);
 		cs->cbSendLength = htonl(cs->cbSendLength);
 		cs->cbRecvLength = htonl(cs->cbRecvLength);
-		cs->size = htonl(cs->size);
+		cs->size = OSSwapHostToBigInt64(cs->size);
 		cs->rv = htonl(cs->rv);			// so we don't forget about it
 	}
 }
@@ -663,7 +671,7 @@
 		cs->dwControlCode = ntohl(cs->dwControlCode);
 		cs->cbSendLength = ntohl(cs->cbSendLength);
 		cs->cbRecvLength = ntohl(cs->cbRecvLength);
-		cs->size = ntohl(cs->size);
+		cs->size = OSSwapBigToHostInt64(cs->size);
 		cs->rv = ntohl(cs->rv);
 	}
 }
@@ -673,9 +681,11 @@
 	if (ts)
 	{
 		ts->hCard = htonl(ts->hCard);
-		htonlSCARD_IO_REQUEST(&ts->pioSendPci);
+		ts->pioSendPciProtocol = htonl(ts->pioSendPciProtocol);
+		ts->pioSendPciLength = htonl(ts->pioSendPciLength);
 		ts->cbSendLength = htonl(ts->cbSendLength);
-		htonlSCARD_IO_REQUEST(&ts->pioRecvPci);
+		ts->pioRecvPciProtocol = htonl(ts->pioRecvPciProtocol);
+		ts->pioRecvPciLength = htonl(ts->pioRecvPciLength);
 		ts->pcbRecvLength = htonl(ts->pcbRecvLength);
 		ts->rv = htonl(ts->rv);			// so we don't forget about it
 	}
@@ -686,9 +696,11 @@
 	if (ts)
 	{
 		ts->hCard = ntohl(ts->hCard);
-		ntohlSCARD_IO_REQUEST(&ts->pioSendPci);
+		ts->pioSendPciProtocol = ntohl(ts->pioSendPciProtocol);
+		ts->pioSendPciLength = ntohl(ts->pioSendPciLength);
 		ts->cbSendLength = ntohl(ts->cbSendLength);
-		ntohlSCARD_IO_REQUEST(&ts->pioRecvPci);
+		ts->pioRecvPciProtocol = ntohl(ts->pioRecvPciProtocol);
+		ts->pioRecvPciLength = ntohl(ts->pioRecvPciLength);
 		ts->pcbRecvLength = ntohl(ts->pcbRecvLength);
 		ts->rv = ntohl(ts->rv);
 	}
@@ -699,11 +711,14 @@
 	if (ts)
 	{
 		ts->hCard = htonl(ts->hCard);
-		htonlSCARD_IO_REQUEST(&ts->pioSendPci);
+		ts->pioSendPciProtocol = htonl(ts->pioSendPciProtocol);
+		ts->pioSendPciLength = htonl(ts->pioSendPciLength);
 		ts->cbSendLength = htonl(ts->cbSendLength);
-		htonlSCARD_IO_REQUEST(&ts->pioRecvPci);
+		ts->pioRecvPciProtocol = htonl(ts->pioRecvPciProtocol);
+		ts->pioRecvPciLength = htonl(ts->pioRecvPciLength);
 		ts->pcbRecvLength = htonl(ts->pcbRecvLength);
-		ts->size = htonl(ts->size);
+		/* Networks generally use big-endian order, and thus it is called network order when sending information over a network in a common format. */
+		ts->size = OSSwapHostToBigInt64(ts->size);
 		ts->rv = htonl(ts->rv);			// so we don't forget about it
 	}
 }
@@ -713,33 +728,16 @@
 	if (ts)
 	{
 		ts->hCard = ntohl(ts->hCard);
-		ntohlSCARD_IO_REQUEST(&ts->pioSendPci);
+		ts->pioSendPciProtocol = ntohl(ts->pioSendPciProtocol);
+		ts->pioSendPciLength = ntohl(ts->pioSendPciLength);
 		ts->cbSendLength = ntohl(ts->cbSendLength);
-		ntohlSCARD_IO_REQUEST(&ts->pioRecvPci);
+		ts->pioRecvPciLength = ntohl(ts->pioRecvPciLength);
 		ts->pcbRecvLength = ntohl(ts->pcbRecvLength);
-		ts->size = ntohl(ts->size);
+		ts->size = OSSwapBigToHostInt64(ts->size);
 		ts->rv = ntohl(ts->rv);
 	}
 }
 
-INTERNAL void htonlSCARD_IO_REQUEST(SCARD_IO_REQUEST *req)
-{
-	if (req)
-	{
-		req->dwProtocol = htonl(req->dwProtocol);
-		req->cbPciLength = htonl(req->cbPciLength);
-	}
-}
-
-INTERNAL void ntohlSCARD_IO_REQUEST(SCARD_IO_REQUEST *req)
-{
-	if (req)
-	{
-		req->dwProtocol = ntohl(req->dwProtocol);
-		req->cbPciLength = ntohl(req->cbPciLength);
-	}
-}
-
 INTERNAL void htonlEstablishStruct(establish_struct *es)
 {
 	if (es)

Modified: trunk/SmartCardServices/src/PCSC/winscard_msg.h
===================================================================
--- trunk/SmartCardServices/src/PCSC/winscard_msg.h	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/src/PCSC/winscard_msg.h	2010-01-07 12:38:32 UTC (rev 90)
@@ -22,7 +22,7 @@
  */
 
 /*
- *  winscard_msg.c
+ *  winscard_msg.h
  *  SmartCardServices
  */
 
@@ -34,7 +34,7 @@
  *  Damien Sauveron <damien.sauveron at labri.fr>
  *  Ludovic Rousseau <ludovic.rousseau at free.fr>
  *
- * $Id: winscard_msg.h 2308 2007-01-06 20:26:57Z rousseau $
+ * $Id: winscard_msg.h 2900 2008-04-22 13:12:50Z rousseau $
  */
 
 /**
@@ -49,9 +49,9 @@
 #include "pcscexport.h"
 
 /** Major version of the current message protocol */
-#define PROTOCOL_VERSION_MAJOR 2
+#define PROTOCOL_VERSION_MAJOR 3
 /** Minor version of the current message protocol */
-#define PROTOCOL_VERSION_MINOR 2
+#define PROTOCOL_VERSION_MINOR 0
 
 #define WINSCARD_MSG_HEADER_TAG	0x12345678
 
@@ -79,8 +79,7 @@
 		uint32_t user_id;
 		uint32_t group_id;
 		uint32_t command;		/** one of the \c pcsc_msg_commands */
-		uint32_t dummy;			/* was request_id in pcsc-lite <= 1.2.0 */
-		time_t date;
+		uint64_t date;
 		unsigned char key[PCSCLITE_MSG_KEY_LEN];
 		unsigned char data[PCSCLITE_MAX_MESSAGE_SIZE];
 	}
@@ -98,7 +97,7 @@
 		CMD_READER_EVENT = 0xF5,
 		CMD_SYN = 0xF6,
 		CMD_ACK = 0xF7,
-		CMD_VERSION = 0xF8
+		CMD_VERSION = 0xF8	/**< version of the IPC */
 	};
 
 	/**
@@ -106,253 +105,257 @@
 	 */
 	enum pcsc_msg_commands
 	{
-		SCARD_ESTABLISH_CONTEXT = 0x01,
-		SCARD_RELEASE_CONTEXT = 0x02,
-		SCARD_LIST_READERS = 0x03,
-		SCARD_CONNECT = 0x04,
-		SCARD_RECONNECT = 0x05,
-		SCARD_DISCONNECT = 0x06,
-		SCARD_BEGIN_TRANSACTION = 0x07,
-		SCARD_END_TRANSACTION = 0x08,
-		SCARD_TRANSMIT = 0x09,
-		SCARD_CONTROL = 0x0A,
-		SCARD_STATUS = 0x0B,
-		SCARD_GET_STATUS_CHANGE = 0x0C,
-		SCARD_CANCEL = 0x0D,
+		SCARD_ESTABLISH_CONTEXT = 0x01,	/**< used by SCardEstablishContext() */
+		SCARD_RELEASE_CONTEXT = 0x02,	/**< used by SCardReleaseContext() */
+		SCARD_LIST_READERS = 0x03,		/**< used by SCardListReaders() */
+		SCARD_CONNECT = 0x04,			/**< used by SCardConnect() */
+		SCARD_RECONNECT = 0x05,			/**< used by SCardReconnect() */
+		SCARD_DISCONNECT = 0x06,		/**< used by SCardDisconnect() */
+		SCARD_BEGIN_TRANSACTION = 0x07,	/**< used by SCardBeginTransaction() */
+		SCARD_END_TRANSACTION = 0x08,	/**< used by SCardEndTransaction() */
+		SCARD_TRANSMIT = 0x09,			/**< used by SCardTransmit() */
+		SCARD_CONTROL = 0x0A,			/**< used by SCardControl() */
+		SCARD_STATUS = 0x0B,			/**< used by SCardStatus() */
+		SCARD_GET_STATUS_CHANGE = 0x0C,	/**< used by SCardGetStatusChange() */
+		SCARD_CANCEL = 0x0D,			/**< used by SCardCancel() */
 		SCARD_CANCEL_TRANSACTION = 0x0E,
-		SCARD_GET_ATTRIB = 0x0F,
-		SCARD_SET_ATTRIB = 0x10,
-		SCARD_TRANSMIT_EXTENDED = 0x11,
-		SCARD_CONTROL_EXTENDED = 0x12
+		SCARD_GET_ATTRIB = 0x0F,		/**< used by SCardGetAttrib() */
+		SCARD_SET_ATTRIB = 0x10,		/**< used by SCardSetAttrib() */
+		SCARD_TRANSMIT_EXTENDED = 0x11,	/**< used by SCardTransmit() */
+		SCARD_CONTROL_EXTENDED = 0x12	/**< used by SCardControl() */
 	};
 
 	/**
-	 * @brief Information transmitted in \c CMD_VERSION Messages.
+	 * @brief Information transmitted in \ref CMD_VERSION Messages.
 	 */
 	struct version_struct
 	{
-		int major;
-		int minor;
-		LONG rv;
+		int32_t major;	/**< IPC major \ref PROTOCOL_VERSION_MAJOR */
+		int32_t minor;	/**< IPC minor \ref PROTOCOL_VERSION_MINOR */
+		uint32_t rv;
 	};
 	typedef struct version_struct version_struct;
 
 	struct client_struct
 	{
-		SCARDCONTEXT hContext;
+		uint32_t hContext;
 	};
 	typedef struct client_struct client_struct;
 
 	/**
-	 * @brief Information contained in \c SCARD_ESTABLISH_CONTEXT Messages.
+	 * @brief Information contained in \ref SCARD_ESTABLISH_CONTEXT Messages.
 	 *
 	 * These data are passed throw the field \c sharedSegmentMsg.data.
 	 */
 	struct establish_struct
 	{
-		DWORD dwScope;
-		SCARDCONTEXT phContext;
-		LONG rv;
+		uint32_t dwScope;
+		uint32_t phContext;
+		uint32_t rv;
 	};
 	typedef struct establish_struct establish_struct;
 
 	/**
-	 * @brief Information contained in \c SCARD_RELEASE_CONTEXT Messages.
+	 * @brief Information contained in \ref SCARD_RELEASE_CONTEXT Messages.
 	 *
 	 * These data are passed throw the field \c sharedSegmentMsg.data.
 	 */
 	struct release_struct
 	{
-		SCARDCONTEXT hContext;
-		LONG rv;
+		uint32_t hContext;
+		uint32_t rv;
 	};
 	typedef struct release_struct release_struct;
 
 	/**
-	 * @brief contained in \c SCARD_CONNECT Messages.
+	 * @brief contained in \ref SCARD_CONNECT Messages.
 	 *
 	 * These data are passed throw the field \c sharedSegmentMsg.data.
 	 */
 	struct connect_struct
 	{
-		SCARDCONTEXT hContext;
+		uint32_t hContext;
 		char szReader[MAX_READERNAME];
-		DWORD dwShareMode;
-		DWORD dwPreferredProtocols;
-		SCARDHANDLE phCard;
-		DWORD pdwActiveProtocol;
-		LONG rv;
+		uint32_t dwShareMode;
+		uint32_t dwPreferredProtocols;
+		int32_t phCard;
+		uint32_t pdwActiveProtocol;
+		uint32_t rv;
 	};
 	typedef struct connect_struct connect_struct;
 
 	/**
-	 * @brief contained in \c SCARD_RECONNECT Messages.
+	 * @brief contained in \ref SCARD_RECONNECT Messages.
 	 *
 	 * These data are passed throw the field \c sharedSegmentMsg.data.
 	 */
 	struct reconnect_struct
 	{
-		SCARDHANDLE hCard;
-		DWORD dwShareMode;
-		DWORD dwPreferredProtocols;
-		DWORD dwInitialization;
-		DWORD pdwActiveProtocol;
-		LONG rv;
+		int32_t hCard;
+		uint32_t dwShareMode;
+		uint32_t dwPreferredProtocols;
+		uint32_t dwInitialization;
+		uint32_t pdwActiveProtocol;
+		uint32_t rv;
 	};
 	typedef struct reconnect_struct reconnect_struct;
 
 	/**
-	 * @brief contained in \c SCARD_DISCONNECT Messages.
+	 * @brief contained in \ref SCARD_DISCONNECT Messages.
 	 *
 	 * These data are passed throw the field \c sharedSegmentMsg.data.
 	 */
 	struct disconnect_struct
 	{
-		SCARDHANDLE hCard;
-		DWORD dwDisposition;
-		LONG rv;
+		int32_t hCard;
+		uint32_t dwDisposition;
+		uint32_t rv;
 	};
 	typedef struct disconnect_struct disconnect_struct;
 
 	/**
-	 * @brief contained in \c SCARD_BEGIN_TRANSACTION Messages.
+	 * @brief contained in \ref SCARD_BEGIN_TRANSACTION Messages.
 	 *
 	 * These data are passed throw the field \c sharedSegmentMsg.data.
 	 */
 	struct begin_struct
 	{
-		SCARDHANDLE hCard;
-		LONG rv;
+		int32_t hCard;
+		uint32_t rv;
 	};
 	typedef struct begin_struct begin_struct;
 
 	/**
-	 * @brief contained in \c SCARD_END_TRANSACTION Messages.
+	 * @brief contained in \ref SCARD_END_TRANSACTION Messages.
 	 *
 	 * These data are passed throw the field \c sharedSegmentMsg.data.
 	 */
 	struct end_struct
 	{
-		SCARDHANDLE hCard;
-		DWORD dwDisposition;
-		LONG rv;
+		int32_t hCard;
+		uint32_t dwDisposition;
+		uint32_t rv;
 	};
 	typedef struct end_struct end_struct;
 
 	/**
-	 * @brief contained in \c SCARD_CANCEL Messages.
+	 * @brief contained in \ref SCARD_CANCEL Messages.
 	 *
 	 * These data are passed throw the field \c sharedSegmentMsg.data.
 	 */
 	struct cancel_struct
 	{
-		SCARDHANDLE hCard;
-		LONG rv;
+		int32_t hCard;
+		uint32_t rv;
 	};
 	typedef struct cancel_struct cancel_struct;
 
 	/**
-	 * @brief contained in \c SCARD_STATUS Messages.
+	 * @brief contained in \ref SCARD_STATUS Messages.
 	 *
 	 * These data are passed throw the field \c sharedSegmentMsg.data.
 	 */
 	struct status_struct
 	{
-		SCARDHANDLE hCard;
+		int32_t hCard;
 		char mszReaderNames[MAX_READERNAME];
-		DWORD pcchReaderLen;
-		DWORD pdwState;
-		DWORD pdwProtocol;
-		UCHAR pbAtr[MAX_ATR_SIZE];
-		DWORD pcbAtrLen;
-		LONG rv;
+		uint32_t pcchReaderLen;
+		uint32_t pdwState;
+		uint32_t pdwProtocol;
+		uint8_t pbAtr[MAX_ATR_SIZE];
+		uint32_t pcbAtrLen;
+		uint32_t rv;
 	};
 	typedef struct status_struct status_struct;
 
 	/**
-	 * @brief contained in \c SCARD_TRANSMIT Messages.
+	 * @brief contained in \ref SCARD_TRANSMIT Messages.
 	 *
 	 * These data are passed throw the field \c sharedSegmentMsg.data.
 	 */
 	struct transmit_struct
 	{
-		SCARDHANDLE hCard;
-		SCARD_IO_REQUEST pioSendPci;
-		UCHAR pbSendBuffer[MAX_BUFFER_SIZE];
-		DWORD cbSendLength;
-		SCARD_IO_REQUEST pioRecvPci;
-		BYTE pbRecvBuffer[MAX_BUFFER_SIZE];
-		DWORD pcbRecvLength;
-		LONG rv;
+		int32_t hCard;
+		uint32_t pioSendPciProtocol;
+		uint32_t pioSendPciLength;
+		uint8_t pbSendBuffer[MAX_BUFFER_SIZE];
+		uint32_t cbSendLength;
+		uint32_t pioRecvPciProtocol;
+		uint32_t pioRecvPciLength;
+		uint8_t pbRecvBuffer[MAX_BUFFER_SIZE];
+		uint32_t pcbRecvLength;
+		uint32_t rv;
 	};
 	typedef struct transmit_struct transmit_struct;
 
 	/**
-	 * @brief contained in \c SCARD_TRANSMIT_EXTENDED Messages.
+	 * @brief contained in \ref SCARD_TRANSMIT_EXTENDED Messages.
 	 *
 	 * These data are passed throw the field \c sharedSegmentMsg.data.
 	 */
 	struct transmit_struct_extended
 	{
-		SCARDHANDLE hCard;
-		SCARD_IO_REQUEST pioSendPci;
-		DWORD cbSendLength;
-		SCARD_IO_REQUEST pioRecvPci;
-		DWORD pcbRecvLength;
-		LONG rv;
-		size_t size;
-		BYTE data[1];
+		int32_t hCard;
+		uint32_t pioSendPciProtocol;
+		uint32_t pioSendPciLength;
+		uint32_t cbSendLength;
+		uint32_t pioRecvPciProtocol;
+		uint32_t pioRecvPciLength;
+		uint32_t pcbRecvLength;
+		uint32_t rv;
+		uint64_t size;
+		uint8_t data[1];
 	};
 	typedef struct transmit_struct_extended transmit_struct_extended;
 
 	/**
-	 * @brief contained in \c SCARD_CONTROL Messages.
+	 * @brief contained in \ref SCARD_CONTROL Messages.
 	 *
 	 * These data are passed throw the field \c sharedSegmentMsg.data.
 	 */
 	struct control_struct
 	{
-		SCARDHANDLE hCard;
-		DWORD dwControlCode;
-		UCHAR pbSendBuffer[MAX_BUFFER_SIZE];
-		DWORD cbSendLength;
-		UCHAR pbRecvBuffer[MAX_BUFFER_SIZE];
-		DWORD cbRecvLength;
-		DWORD dwBytesReturned;
-		LONG rv;
+		int32_t hCard;
+		uint32_t dwControlCode;
+		uint8_t pbSendBuffer[MAX_BUFFER_SIZE];
+		uint32_t cbSendLength;
+		uint8_t pbRecvBuffer[MAX_BUFFER_SIZE];
+		uint32_t cbRecvLength;
+		uint32_t dwBytesReturned;
+		uint32_t rv;
 	};
 	typedef struct control_struct control_struct;
 
 	/**
-	 * @brief contained in \c SCARD_CONTROL_EXTENDED Messages.
+	 * @brief contained in \ref SCARD_CONTROL_EXTENDED Messages.
 	 *
 	 * These data are passed throw the field \c sharedSegmentMsg.data.
 	 */
 	struct control_struct_extended
 	{
-		SCARDHANDLE hCard;
-		DWORD dwControlCode;
-		DWORD cbSendLength;
-		DWORD cbRecvLength;
-		DWORD pdwBytesReturned;
-		LONG rv;
-		size_t size;
-		BYTE data[1];
+		int32_t hCard;
+		uint32_t dwControlCode;
+		uint32_t cbSendLength;
+		uint32_t cbRecvLength;
+		uint32_t pdwBytesReturned;
+		uint32_t rv;
+		uint64_t size;
+		uint8_t data[1];
 	};
 	typedef struct control_struct_extended control_struct_extended;
 
 	/**
-	 * @brief contained in \c SCARD_GET_ATTRIB and \c  Messages.
+	 * @brief contained in \ref SCARD_GET_ATTRIB and \c  Messages.
 	 *
 	 * These data are passed throw the field \c sharedSegmentMsg.data.
 	 */
 	struct getset_struct
 	{
-		SCARDHANDLE hCard;
-		DWORD dwAttrId;
-		UCHAR pbAttr[MAX_BUFFER_SIZE];
-		DWORD cbAttrLen;
-		LONG rv;
+		int32_t hCard;
+		uint32_t dwAttrId;
+		uint8_t pbAttr[MAX_BUFFER_SIZE];
+		uint32_t cbAttrLen;
+		uint32_t rv;
 	};
 	typedef struct getset_struct getset_struct;
 
@@ -360,33 +363,32 @@
 	 * Now some function definitions
 	 */
 
-	int SHMClientReadMessage(psharedSegmentMsg msgStruct, DWORD dwClientID, size_t dataSize, int blockamount);
-	int SHMClientRead(psharedSegmentMsg, DWORD, int);
-	int SHMClientSetupSession(PDWORD);
-	int SHMClientCloseSession(DWORD);
-	int SHMInitializeCommonSegment(void);
-	int SHMProcessEventsContext(PDWORD, psharedSegmentMsg, int);
-	int SHMProcessEventsServer(PDWORD, int);
-	int SHMMessageSend(void *buffer, size_t buffer_size, int filedes,
-		int blockAmount);
-	int SHMMessageReceive(void *buffer, size_t buffer_size,
-		int filedes, int blockAmount);
-	int WrapSHMWrite(unsigned int command, DWORD dwClientID, unsigned int dataSize,
-		unsigned int blockAmount, void *data);
-	void SHMCleanupSharedSegment(int, const char *);
+	int32_t SHMClientReadMessage(psharedSegmentMsg msgStruct, uint32_t dwClientID, size_t dataSize, int blockamount);
+	
+	int32_t SHMClientRead(psharedSegmentMsg, uint32_t, int32_t);
+	int32_t SHMClientSetupSession(uint32_t *);
+	int32_t SHMClientCloseSession(uint32_t);
+	int32_t SHMInitializeCommonSegment(void);
+	int32_t SHMProcessEventsContext(uint32_t, psharedSegmentMsg, int32_t);
+	int32_t SHMProcessEventsServer(uint32_t *, int32_t);
+	int32_t SHMMessageSend(void *buffer, uint64_t buffer_size, int32_t filedes,
+		int32_t blockAmount);
+	int32_t SHMMessageReceive(void *buffer, uint64_t buffer_size,
+		int32_t filedes, int32_t blockAmount);
+	int32_t WrapSHMWrite(uint32_t command, uint32_t dwClientID, uint64_t dataSize,
+		uint32_t blockAmount, void *data);
+	void SHMCleanupSharedSegment(int32_t, const char *);
 
 	void SHSharedSegmentMsgToNetworkOrder(psharedSegmentMsg msg);
 	void SHSharedSegmentMsgToHostOrder(psharedSegmentMsg msg);
 	size_t SHMCalculateMessageSize(size_t dataSize);
-	int SHMCommunicationTimeout();
+	int32_t SHMCommunicationTimeout();
 
 	// Fix up byte ordering
 	INTERNAL void htonlControlStructExtended(control_struct_extended *cs);
 	INTERNAL void ntohlControlStructExtended(control_struct_extended *cs);
 	INTERNAL void htonlTransmitStructExtended(transmit_struct_extended *ts);
 	INTERNAL void ntohlTransmitStructExtended(transmit_struct_extended *ts);
-	INTERNAL void htonlSCARD_IO_REQUEST(SCARD_IO_REQUEST *req);
-	INTERNAL void ntohlSCARD_IO_REQUEST(SCARD_IO_REQUEST *req);
 	INTERNAL void htonlEstablishStruct(establish_struct *es);
 	INTERNAL void ntohlEstablishStruct(establish_struct *es);
 	INTERNAL void htonlTransmitStruct(transmit_struct *ts);

Modified: trunk/SmartCardServices/src/PCSC/winscard_msg_srv.c
===================================================================
--- trunk/SmartCardServices/src/PCSC/winscard_msg_srv.c	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/src/PCSC/winscard_msg_srv.c	2010-01-07 12:38:32 UTC (rev 90)
@@ -6,7 +6,7 @@
  *  Damien Sauveron <damien.sauveron at labri.fr>
  *  Ludoic Rousseau <ludovic.rousseau at free.fr>
  *
- * $Id: winscard_msg_srv.c 2377 2007-02-05 13:13:56Z rousseau $
+ * $Id: winscard_msg_srv.c 2961 2008-05-16 09:12:53Z rousseau $
  */
 
 /**
@@ -61,7 +61,7 @@
  * @retval -1 Can not establish the connection.
  * @retval -1 Can not set the connection to non-blocking mode.
  */
-static int SHMProcessCommonChannelRequest(PDWORD pdwClientID)
+static int SHMProcessCommonChannelRequest(uint32_t *pdwClientID)
 {
 	socklen_t clnt_len;
 	int new_sock;
@@ -165,16 +165,16 @@
  * @retval -1 Can not set the connection to non-blocking mode.
  * @retval 2 Timeout.
  */
-#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
 #define DO_TIMEOUT
 #endif
-INTERNAL int SHMProcessEventsServer(PDWORD pdwClientID, int blocktime)
+INTERNAL int32_t SHMProcessEventsServer(uint32_t *pdwClientID, int32_t blocktime)
 {
 	fd_set read_fd;
 	int selret;
 #ifdef DO_TIMEOUT
 	struct timeval tv;
-	 	
+
 	tv.tv_sec = 1;
 	tv.tv_usec = 0;
 #endif
@@ -236,7 +236,8 @@
  *
  * Called by \c ContextThread().
  */
-INTERNAL int SHMProcessEventsContext(PDWORD pdwClientID, psharedSegmentMsg msgStruct, int blocktime)
+INTERNAL int32_t SHMProcessEventsContext(uint32_t dwClientID,
+	psharedSegmentMsg msgStruct, int32_t blocktime)
 {
 	fd_set read_fd;
 	int selret, rv;
@@ -246,9 +247,9 @@
 	tv.tv_usec = 0;
 
 	FD_ZERO(&read_fd);
-	FD_SET(*pdwClientID, &read_fd);
+	FD_SET(dwClientID, &read_fd);
 
-	selret = select(*pdwClientID + 1, &read_fd, (fd_set *) NULL,
+	selret = select(dwClientID + 1, &read_fd, (fd_set *) NULL,
 		(fd_set *) NULL, &tv);
 
 	if (selret < 0)
@@ -266,19 +267,22 @@
 		return 2;
 	}
 	
-	if (FD_ISSET(*pdwClientID, &read_fd))
+	if (FD_ISSET(dwClientID, &read_fd))
 	{
 		/*
 		 * Return the current handle
 		 */
-		rv = SHMClientReadMessage(msgStruct, *pdwClientID, 0, SHMCommunicationTimeout());
+		/* 
+			The 0 for size below means that SHMClientReadMessage should calculate the size from the
+			message header. The size is not sizeof(*msgStruct)
+		*/
+		rv = SHMClientReadMessage(msgStruct, dwClientID, 0, SHMCommunicationTimeout()); 
 		if (rv == -1)
 		{	/* The client has died */
-			Log2(PCSC_LOG_DEBUG, "Client has disappeared: %d",
-				*pdwClientID);
+			Log2(PCSC_LOG_DEBUG, "Client has disappeared: %d", dwClientID);
 			msgStruct->mtype = CMD_CLIENT_DIED;
 			msgStruct->command = 0;
-			SYS_CloseFile(*pdwClientID);
+			SYS_CloseFile(dwClientID);
 
 			return 0;
 		}
@@ -286,8 +290,7 @@
 		/*
 		 * Set the identifier handle
 		 */
-		Log2(PCSC_LOG_DEBUG, "correctly processed client: %d",
-			*pdwClientID);
+		Log2(PCSC_LOG_DEBUG, "correctly processed client: %d", dwClientID);
 		return 1;
 	}
 
@@ -296,10 +299,17 @@
 
 INTERNAL int SHMCommunicationTimeout()
 {
-	int timeOut = PCSCLITE_SERVER_ATTEMPTS;
-#if !defined(NDEBUG)
-//	timeOut = 120 * 1000L;		// 120000 mS == 2 minutes
-//	timeOut = 5 * 1000L;		// 120000 mS == 2 minutes
-#endif
+	/*
+		This is a param to e.g. SHMClientReadMessage, and is a timeout in milliseconds.
+		The constant PCSCLITE_SERVER_ATTEMPTS is very poorly named; it is a time value
+		in milliseconds, not the number of attempts. Some values to use:
+		5		default if PCSCLITE_ENHANCED_MESSAGING not defined
+		200		if PCSCLITE_ENHANCED_MESSAGING is defined
+		12000	might be a good value to set while debugging
+	*/
+	
+	static int baseTimeout = 12000;//PCSCLITE_SERVER_ATTEMPTS;
+	volatile int timeOut = baseTimeout;
+
 	return timeOut;
 }

Modified: trunk/SmartCardServices/src/PCSC/winscard_svc.c
===================================================================
--- trunk/SmartCardServices/src/PCSC/winscard_svc.c	2010-01-01 09:59:57 UTC (rev 89)
+++ trunk/SmartCardServices/src/PCSC/winscard_svc.c	2010-01-07 12:38:32 UTC (rev 90)
@@ -187,7 +187,7 @@
 			Note: SHSharedSegmentMsgToHostOrder(&msgStruct) was called in SHMProcessEventsContext
 			This means that msgStruct contains host-order fields
 		*/
-		switch (rv = SHMProcessEventsContext(&psContext[dwContextIndex].dwClientID, &msgStruct, 0))
+		switch (rv = SHMProcessEventsContext(psContext[dwContextIndex].dwClientID, &msgStruct, 0))
 		{
 		case 0:
 			if (msgStruct.mtype == CMD_CLIENT_DIED)
@@ -343,7 +343,7 @@
 		esStr = ((establish_struct *) msgStruct->data);
 		ntohlEstablishStruct(esStr);
 		esStr->rv = SCardEstablishContext(esStr->dwScope, 0, 0,
-			&esStr->phContext);
+			(int32_t *)&esStr->phContext);
 
 		if (esStr->rv == SCARD_S_SUCCESS)
 			esStr->rv =
@@ -468,10 +468,23 @@
 		Log2(PCSC_LOG_DEBUG, "SCardTransmit cbSendLength: %d", trStr->cbSendLength);
 		rv = MSGCheckHandleAssociation(trStr->hCard, dwContextIndex);
 		if (rv != 0) return rv;
-		trStr->rv = SCardTransmit(trStr->hCard, &trStr->pioSendPci,
+		
+		{
+			SCARD_IO_REQUEST ioSendPci;
+			SCARD_IO_REQUEST ioRecvPci;
+			// ioSendPci is only an input parameter
+			ioSendPci.dwProtocol = trStr->pioSendPciProtocol;
+			ioSendPci.cbPciLength = trStr->pioSendPciLength;
+
+			trStr->rv = SCardTransmit(trStr->hCard, &ioSendPci,
 			trStr->pbSendBuffer, trStr->cbSendLength,
-			&trStr->pioRecvPci, trStr->pbRecvBuffer,
+				&ioRecvPci, trStr->pbRecvBuffer,
 			&trStr->pcbRecvLength);
+			
+			// ioRecvPci is only an output parameter
+			trStr->pioRecvPciProtocol = ioRecvPci.dwProtocol;
+			trStr->pioRecvPciLength = ioRecvPci.cbPciLength;
+		}
 		Log2(PCSC_LOG_DEBUG, "SCardTransmit pcbRecvLength: %d", trStr->pcbRecvLength);
 		htonlTransmitStruct(trStr);
 		*replySize = sizeof(transmit_struct);
@@ -543,11 +556,23 @@
 			else
 				memcpy(pbSendBuffer, treStr->data, treStr->cbSendLength);
 
-			treStr->rv = SCardTransmit(treStr->hCard, &treStr->pioSendPci,
+			{
+				SCARD_IO_REQUEST ioSendPci;
+				SCARD_IO_REQUEST ioRecvPci;
+				// ioSendPci is only an input parameter
+				ioSendPci.dwProtocol = treStr->pioSendPciProtocol;
+				ioSendPci.cbPciLength = treStr->pioSendPciLength;
+
+				treStr->rv = SCardTransmit(treStr->hCard, &ioSendPci,
 				pbSendBuffer, treStr->cbSendLength,
-				&treStr->pioRecvPci, pbRecvBuffer,
+					&ioRecvPci, pbRecvBuffer,
 				&treStr->pcbRecvLength);
 
+				// ioRecvPci is only an output parameter
+				treStr->pioRecvPciProtocol = ioRecvPci.dwProtocol;
+				treStr->pioRecvPciLength = ioRecvPci.cbPciLength;
+			}
+			
 			treStr->size = sizeof(*treStr) + treStr->pcbRecvLength;
 			Log3(PCSC_LOG_DEBUG, "SCardTransmitExt pcbRecvLength: %d, size: %d", 
 				treStr->pcbRecvLength, treStr->size);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/smartcardservices-changes/attachments/20100107/d3394c4f/attachment-0001.html>


More information about the SmartcardServices-Changes mailing list