From 02f08646f46b28188748aa2cf675ff60fb805928 Mon Sep 17 00:00:00 2001 From: psytester Date: Fri, 9 May 2014 21:02:43 +0200 Subject: [PATCH] Readme.txt.in added hints for vpcd on Windows some details how to get build vpcd on Windows 64 bit --- virtualsmartcard/doc/README.txt.in | 38 ++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/virtualsmartcard/doc/README.txt.in b/virtualsmartcard/doc/README.txt.in index aa316da..975ed90 100644 --- a/virtualsmartcard/doc/README.txt.in +++ b/virtualsmartcard/doc/README.txt.in @@ -135,13 +135,38 @@ For the Windows integration we extended `Fabio Ottavi's UMDF Driver for a Virtual Smart Card Reader`_ with a |vpcd| interface. To build the |vpcd| we use `Windows Driver Kit 8.1 and Visual Studio 2013`_: +Hint 1: +With VS2013 and WDK 8.1 no WinXP driver can be build. +To do this for WinXP, an older VS with WDK 7.1.0 is required. + +Hint 2: +That UMDF Driver for a Virtual Smart Card Reader is written as Win 32 bit code. +The Win7 source can be compiled as Win7 64 Bit, but C/C++ builder option needs to be changed! +For that go to project properties of "BixVReader" (not for "BixVReader-package"), move to C/C++ settings +and switch off the option "/WX (Treat Linker Warnings as Errors)". +Otherwise some warnings gets escalated to errors and build will fail on 64 bit. + +Hint 3: +In configuration manager ensure, that both projects are set to same platform = x64 or Win32, no mix with the other !!! +Any mix will result into device manager error code 31 for that driver +and this error code is NOT related to wrong or missing code signing as given standard answer in internet. + +Hint 4: +The Win7 (64 Bit) build does not need to be signed, during installation Windows will prompt a warning, just allow its installation. +In case WDK test signing should be used, simply use VS build-in Driver Signing settings. Context menu for "BixVReader-package" -> properties -> Driver Signing -> Sign Mode = "Test Sign". +Import the WDKTestCert into your windows keystore. +Please read Microsoft "Kernel-Mode Code Signing Walkthrough". It is a very good document for better understanding. + 1. In Visual Studio select :menuselection:`File --> Open --> Convert Sources/Dirs...` and choose the vpcd's :file:`sources` either in the :file:`WinXP` or :file:`Win7` folder. + 2. If you can successfully :guilabel:`Build the solution`, you can find the install package in :file:`BixVReader-package`. It contains `BixVReader.inf` and the required libraries, especially `BixVReader.dll`. + For 32 bit driver the WudfUpdate_01009.dll will be 1795 KB + For 64 bit driver the WudfUpdate_01009.dll will be 2102 KB. 3. Copy :file:`win32\\BixVReader\\BixVReader.ini` into the :envvar:`%SystemRoot%` directory. @@ -149,7 +174,10 @@ Virtual Smart Card Reader`_ with a |vpcd| interface. To build the |vpcd| we use 4. In a console with administrator rights go to :file:`BixVReader-package` and execute:: +on 32 bit system with 32 bit driver: "C:\Program Files\Windows Kits\8.1\Tools\x86\devcon.exe" install BixVReader.inf root\BixVirtualReader +on 64 bit system with 64 bit driver: + "C:\Program Files\Windows Kits\8.1\Tools\x64\devcon.exe" install BixVReader.inf root\BixVirtualReader You can adjust the path to ``devcon.exe`` with your version of the WDK and your target architecture. @@ -193,10 +221,9 @@ needs to be started with :option:`--reversed` in this case. Configuring |vpcd| on Windows ================================================================================ -The configuration file from |vpcd| is usually placed into -:file:`C:\\Windows`. The PC/SC daemon should read it and load the -|vpcd| on startup. The Windows Device Manager should list the :guilabel:`Bix -Virtual Smart Card Reader`. +The configuration file `BixVReader.ini` from |vpcd| is usually placed into +:file:`C:\\Windows` (:envvar:`%SystemRoot%`). The PC/SC daemon should read it and load the +|vpcd| on startup. The Windows Device Manager should list the :guilabel:`Bix Virtual Smart Card Reader`. |vpcd| opens a socket for |vpicc| and waits for incoming connections. The port to open should be specified in ``TCP_PORT``: @@ -219,6 +246,9 @@ options of |vpicc|. On Windows you can start |vpicc| with :command:`python.exe src/vpicc/vicc.in` or :command:`python.exe vicc`. +Notice! actually on Windows |vpicc| can not run in mode `-t nPA` due to some missing python binding, refer to |openPACE|. + + When |vpcd| and |vpicc| are connected you should be able to access the card through the PC/SC API. You can use the :command:`opensc-explorer` or :command:`pcsc_scan` for testing. In @PACKAGE_NAME@'s root directory we also