Am Sonntag, 23. März 2008 21:36:57 schrieb Bruno Harbulot:
> Perhaps the following question should be on the users list...
> I was intending to try OpenCT on OSX to see if it could handle an eToken
> in the same way as it makes it work on Linux. I can't get it to work on
> OSX, but I'm not sure if it's because I haven't configured it properly
> or if it's because it's not currently supported. By the looks of
> src/ifd/sys-osx.c, it looks like none of the usb functions are doing much.

openct usb code was written on linux with the nice linux usb semantics:
open a device file, use ioctl for the usb functions, but also use standard
mechanism like poll() / select() to see if the file descriptor is ok (i.e. 
find out when the device was removed). BSD also works with this - nice.

but mac os X has - to my knowledge - only a strange library that doesn't
offer equivalent functionality. AFAIK we can't implement the same 
functionality we use on linux and BSD with mac os X usb library api,
without redesigning openct. but I might be wrong. if you know mac os X
well, maybe you can have a look at that usb library API it offers, and see
if you can implement the same functions we have on linux?

if the linux code doesn't make sence, I can help with explaining what it does,
so you can port the functionality.

the ifdhandler main loop will need some changes too: currently it assumes
to have an array of file descriptor and find out if a device was removed via
select/poll with errors. on mac os X there is no file descriptor, thus this 
needs some change.

finally: linux has hot plugging -> we don't need to monitor the usb or scan it 
all the time. instead the kernel knows when a new device is attached, and
using a chain of userspace tools the openct map file with vendor/product or 
usb device class info is consulted. if it matches the openct-control tool is 
run with information about the device and its identification.

I have no clue if some tool on mac os X can tell openct: hey, here is this new 
device and it has that vendor and product id. on linux "this new device" is 
the filename of the usb device file - such as /proc/bus/usb/005/010 
or /dev/bus/usb/005/010. on linux the information about the files openct
can handle is for hotplug: the map file, for udev the rule file or for hald 
the fdi file. if you have a similar mechanism for mac os X, I guess you need
to implement a similar file for that mechanism, a script that gets information
from that mechanism and runs openct-control with the right parameters,
and in sys-osx.c implement something that looks at the device string
and uses the api to connect to the right device.

I have no clue if implementing this is hard or not, but I have no mac os X 
knowledge, no machine, and I'm not interested in it myself. so this waits
for someone to have a look.

if you look for a working solution without any work, checkout pcsc-lite and
ccid driver by ludovic rousseau. mac os X includes both, but you might want
to use the latest version from the author instead because of some bugs in
the version apple put into mac os X - ludovic can tell you more about it.

good luck. Regards, Andreas
_______________________________________________
opensc-devel mailing list
[email protected]
http://www.opensc-project.org/mailman/listinfo/opensc-devel

Reply via email to