François,

Please try the cardmod code that is now in SVN. It now works with login to AD,
can detect changes of a card in the reader as well as the other changes
as outlined in the commit comments.

If the CARDMOD_LOW_LEVEL_DEBUG  is defined, see line #97
it will try and write out the the file "c:\tmp\cardmod.log.txt" even before
sc_create_context has been called. This has shown a lot more detail
about what is really going on within the code, including when DllMain
is called, and by what modules. The file must be modifiable be everyone.

I built this using the mingw build package in the SVN on Ubuntu, and had
to copy SCardErr.h, WinSCard.h, WinSmCrd.h, bcrypt.h and cardmod.h files
from the Microsoft SDK and CNG SDK, with lowercase names to the build\include.

I have not tried building using Visual studio.

There are still a lot of changes that could be made. The reader-pcsc.c
code could be merged to have a cardmod mode. the ctx->app_name could be used
to detect cardmod mode.

I think there is a possible race condition in the code as it stand now,
if two threads try and create contexts at the same time. This might
occur if there are two reader with two cards at the same time when a login
is attempted.  sc_get_cardmod_driver copies the pcsc_drv->ops over its
own cardmod_ops. These structures are static...

For example, looking at cardmod_ops.lock.

   thread 1  calls sc_get_cardmod_driver             cardmod_ops.lock == 
undetermined.
   thread 1  #1901  cardmod_ops = *(pcsc_drv->ops);  cardmod_ops.lock == 
pcsc_lock
   thread 1  #1907  cardmod_ops.lock = NULL;         cardmod_ops.lock = NULL

   thread 2  calls sc_get_cardmod_driver             cardmod_ops.lock = NULL
   thread 2  #1901  cardmod_ops = *(pcsc_drv->ops);  cardmod_ops.lock == 
pcsc_lock

   thread 1 does a lock operation and ends up using pcsc_lock !!!

   thread 2  #1907  cardmod_ops.lock = NULL;         cardmod_ops.lock = NULL


-- 


  Douglas E. Engert  <deeng...@anl.gov>
  Argonne National Laboratory
  9700 South Cass Avenue
  Argonne, Illinois  60439
  (630) 252-5444
_______________________________________________
opensc-devel mailing list
opensc-devel@lists.opensc-project.org
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to