On a Solaris 10 sparc machine, using pcsc and opensc both from svn, there appears to be a mismatch of handing the length field within the message for using a pin pad reader.
pcscd trace shows: 00000126 ../../src/src/ifdhandler.c:1307:IFDHControl() ControlCode: 0x42330006, usb:076b/3821:libusb:/dev/usb:76b. 3821/0 (lun: 0) 00000068 Control TxBuffer: 1E 1E 02 08 00 04 08 02 FF 00 00 00 00 00 00 00 00 00 0D 00 20 00 80 08 FF FF FF FF FF FF FF FF 00000636 ../../src/src/commands.c:312:SecurePINVerify() Wrong lengths: 218103827 32 00000055 Control RxBuffer: 00000049 ../../src/src/ifdwrapper.c:644:IFDControl() Card not transacted: 614 This comes down to: 218103827 = 0x0D000013 as the test in ccid commands.c is testing: if (dw2i(TxBuffer, 15) + 19 != TxLength) which if it was stored as 0D 00 00 00, dw2i would have converted it to 13+19=32, and the length would have been correct. OpenSC internal-winscard.h appears to be where the problem is: #define HOST_TO_CCID_16(x) (x) #define HOST_TO_CCID_32(x) (x) Where as PCSC/reader.h has: #define HOST_TO_CCID_16(x) ((((x) >> 8) & 0xFF) + ((x & 0xFF) << 8)) #define HOST_TO_CCID_32(x) ((((x) >> 24) & 0xFF) + (((x) >> 8) & 0xFF00) + ((x & 0xFF00) << 8) + (((x) & 0xFF) << 24)) and PCSC has in "configure.in" tests for bigendian using: # HOST_TO_CCID if test "x$ac_cv_c_bigendian" = "xyes"; then AC_SUBST(host_to_ccid_16, ['((((x) >> 8) & 0xFF) + ((x & 0xFF) << 8))']) AC_SUBST(host_to_ccid_32, ['((((x) >> 24) & 0xFF) + (((x) >> 8) & 0xFF00 ) + ((x & 0xFF00) << 8) + (((x ) & 0xFF) << 24))']) AC_MSG_RESULT([plateform endianess : big endian]) else AC_SUBST(host_to_ccid_16, ['(x)']) AC_SUBST(host_to_ccid_32, ['(x)']) AC_MSG_RESULT([plateform endianess : little endian]) fi It looks like OpenSC need to test for bigendian. (On the Muscle list there is a discussion of size of DWORD, and since the SecurePINVerify is using dw2i() assuming 32 bit number, this might also cause an error on a 64 bit machine trying to use a pin pad reader.) -- 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