You are not logged in.

#1 2010-12-03 17:50:57

Stroumph
Member
Registered: 2010-09-05
Posts: 2

[SOLVED] PCSC + Java 64-bits

Hi,

I used Archlinux for 2-3 years. For my work, I participate to a Java 6 library that implements Global Platform 2.x specification. It is able to upload and manage applet lifecyle on Javacard. It is also able to manage different implementations of the specification via a pluggable interface, OPAL.

I would like use my Archlinux to develop but, the JVM can't communicate the smart card.

To communicate with a smart card, I installed pcsclite, pcsc_tools and CCID on AUR  and OpenJDK6 for the JVM:

~ >>> yaourt -Qs pcsc
local/pcsc-perl 1.4.11-1 [0.15 M]
    Perl interface to the PC/SC smart card library
local/pcsc-tools 1.4.17-1 [0.21 M]
    Some tools to be used with smart cards and PC/SC
local/pcsclite 1.6.4-2 [0.40 M]
    Middleware to access a smart card using the SCard API (PC/SC)

~ >>> yaourt -Qs ccid
local/ccid 1.4.0-4 [0.32 M]
    A generic USB CCID (Chip/Smart Card Interface Devices) driver

~ >>> yaourt -Qs java
extra/beanshell 2.0b4-1 [0.28 M]
    Small, free, embeddable, source level Java interpreter with object based scripting language features written in Java
extra/ca-certificates-java 20090629-2 [0.21 M]
    Common CA certificates (JKS keystore)
extra/doxygen 1.7.2-1 [5.87 M]
    A documentation system for C++, C, Java, IDL and PHP
extra/hsqldb-java 1.8.0.10-1 [0.73 M]
    HSQLDB Java libraries
local/intellij-idea-community-edition 9.0.4-1 [156.66 M]
    Java IDE
local/jsmin 2008.08.03-3 [0.04 M]
    A filter which removes comments and unnecessary whitespace from JavaScript  files.
community/maven 3.0.1-1 [3.37 M]
    A Java project management and project comprehension tool
extra/openjdk6 6.b20_1.9.3-1 [118.87 M]
    Free Java environment based on OpenJDK 6.0 with IcedTea6 replacing binary plugs.
community/perl-json 2.27-1 [0.23 M]
    JSON (JavaScript Object Notation) encoder/decoder
~ >>> uname -a
Linux Flat 2.6.36-ARCH #1 SMP PREEMPT Wed Nov 24 00:39:57 CET 2010 x86_64 Intel(R) Core(TM) DUO CPU T5800 @ 2.00GHz GenuineIntel GNU/Linux

I run pcscd and I run a simple Java program which list smart card readers connected and its cards.

~ >>> pcscd -df --apdu
pcscdaemon.c:224:main() pcscd set to foreground with debug send to stderr
debuglog.c:306:DebugLogSetCategory() Debug options: APDU
configfile.l:242:DBGetReaderListDir() Parsing conf directory: /etc/reader.conf.d
configfile.l:284:DBGetReaderList() Parsing conf file: /etc/reader.conf.d/libccidtwin
pcscdaemon.c:533:main() pcsc-lite 1.6.4 daemon ready.
hotplug_libhal.c:320:get_driver() Looking a driver for VID: 0x08E6, PID: 0x3437
hotplug_libhal.c:368:HPAddDevice() Adding USB device: usb_device_8e6_3437_noserial_if0
readerfactory.c:959:RFInitializeReader() Attempting startup of Gemalto GemPC Twin 00 00 using /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Linux/libccid.so
readerfactory.c:849:RFBindFunctions() Loading IFD Handler 3.0
ifdhandler.c:1739:init_driver() Driver version: 1.4.0
ifdhandler.c:1752:init_driver() LogLevel: 0x0003
ifdhandler.c:1772:init_driver() DriverOptions: 0x0000
ifdhandler.c:83:IFDHCreateChannelByName() lun: 0, device: usb:08e6/3437:libhal:/org/freedesktop/Hal/devices/usb_device_8e6_3437_noserial_if0
ccid_usb.c:252:OpenUSBByName() Manufacturer: Ludovic Rousseau (ludovic.rousseau@free.fr)
ccid_usb.c:262:OpenUSBByName() ProductString: Generic CCID driver
ccid_usb.c:268:OpenUSBByName() Copyright: This driver is protected by terms of the GNU Lesser General Public License version 2.1, or (at your option) any later version.
ccid_usb.c:498:OpenUSBByName() Found Vendor/Product: 08E6/3437 (Gemalto GemPC Twin)
ccid_usb.c:500:OpenUSBByName() Using USB bus/device: 2/6
ccid_usb.c:953:get_data_rates() declared: 10753 bps
ccid_usb.c:953:get_data_rates() declared: 14337 bps
ccid_usb.c:953:get_data_rates() declared: 15625 bps
ccid_usb.c:953:get_data_rates() declared: 17204 bps
ccid_usb.c:953:get_data_rates() declared: 20833 bps
ccid_usb.c:953:get_data_rates() declared: 21505 bps
ccid_usb.c:953:get_data_rates() declared: 23438 bps
ccid_usb.c:953:get_data_rates() declared: 25806 bps
ccid_usb.c:953:get_data_rates() declared: 28674 bps
ccid_usb.c:953:get_data_rates() declared: 31250 bps
ccid_usb.c:953:get_data_rates() declared: 32258 bps
ccid_usb.c:953:get_data_rates() declared: 34409 bps
ccid_usb.c:953:get_data_rates() declared: 39063 bps
ccid_usb.c:953:get_data_rates() declared: 41667 bps
ccid_usb.c:953:get_data_rates() declared: 43011 bps
ccid_usb.c:953:get_data_rates() declared: 46875 bps
ccid_usb.c:953:get_data_rates() declared: 52083 bps
ccid_usb.c:953:get_data_rates() declared: 53763 bps
ccid_usb.c:953:get_data_rates() declared: 57348 bps
ccid_usb.c:953:get_data_rates() declared: 62500 bps
ccid_usb.c:953:get_data_rates() declared: 64516 bps
ccid_usb.c:953:get_data_rates() declared: 68817 bps
ccid_usb.c:953:get_data_rates() declared: 71685 bps
ccid_usb.c:953:get_data_rates() declared: 78125 bps
ccid_usb.c:953:get_data_rates() declared: 83333 bps
ccid_usb.c:953:get_data_rates() declared: 86022 bps
ccid_usb.c:953:get_data_rates() declared: 93750 bps
ccid_usb.c:953:get_data_rates() declared: 104167 bps
ccid_usb.c:953:get_data_rates() declared: 107527 bps
ccid_usb.c:953:get_data_rates() declared: 114695 bps
ccid_usb.c:953:get_data_rates() declared: 125000 bps
ccid_usb.c:953:get_data_rates() declared: 129032 bps
ccid_usb.c:953:get_data_rates() declared: 143369 bps
ccid_usb.c:953:get_data_rates() declared: 156250 bps
ccid_usb.c:953:get_data_rates() declared: 166667 bps
ccid_usb.c:953:get_data_rates() declared: 172043 bps
ccid_usb.c:953:get_data_rates() declared: 215054 bps
ccid_usb.c:953:get_data_rates() declared: 229391 bps
ccid_usb.c:953:get_data_rates() declared: 250000 bps
ccid_usb.c:953:get_data_rates() declared: 344086 bps
ifdhandler.c:409:IFDHGetCapabilities() tag: 0xFB0, usb:08e6/3437:libhal:/org/freedesktop/Hal/devices/usb_device_8e6_3437_noserial_if0 (lun: 0)
readerfactory.c:276:RFAddReader() Using the reader polling thread
ifdhandler.c:409:IFDHGetCapabilities() tag: 0xFAE, usb:08e6/3437:libhal:/org/freedesktop/Hal/devices/usb_device_8e6_3437_noserial_if0 (lun: 0)
ifdhandler.c:497:IFDHGetCapabilities() Reader supports 1 slot(s)
ifdhandler.c:1159:IFDHPowerICC() action: PowerUp, usb:08e6/3437:libhal:/org/freedesktop/Hal/devices/usb_device_8e6_3437_noserial_if0 (lun: 0)
hotplug_libhal.c:320:get_driver() Looking a driver for VID: 0x1D6B, PID: 0x0002
hotplug_libhal.c:320:get_driver() Looking a driver for VID: 0x046D, PID: 0xC041
hotplug_libhal.c:320:get_driver() Looking a driver for VID: 0x046D, PID: 0xC041
hotplug_libhal.c:320:get_driver() Looking a driver for VID: 0x046D, PID: 0xC223
hotplug_libhal.c:320:get_driver() Looking a driver for VID: 0x046D, PID: 0xC222
hotplug_libhal.c:320:get_driver() Looking a driver for VID: 0x046D, PID: 0xC221
hotplug_libhal.c:320:get_driver() Looking a driver for VID: 0x046D, PID: 0xC221
hotplug_libhal.c:320:get_driver() Looking a driver for VID: 0x1D6B, PID: 0x0001
Card ATR: 3B 6D 00 00 80 31 80 65 B0 07 02 02 89 83 00 90 00

and my java program return:

ERROR No card terminal found

unfortunately, if I used pcsc_scan to check the card connected, I have:

~ >>> pcsc_scan
PC/SC device scanner
V 1.4.17 (c) 2001-2009, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.6.4
Scanning present readers...
0: Gemalto GemPC Twin 00 00

Fri Dec  3 18:47:52 2010
 Reader 0: Gemalto GemPC Twin 00 00
  Card state: Card inserted, 
  ATR: 3B 6D 00 00 80 31 80 65 B0 07 02 02 89 83 00 90 00

ATR: 3B 6D 00 00 80 31 80 65 B0 07 02 02 89 83 00 90 00
+ TS = 3B --> Direct Convention
+ T0 = 6D, Y(1): 0110, K: 13 (historical bytes)
  TB(1) = 00 --> VPP is not electrically connected
  TC(1) = 00 --> Extra guard time: 0
+ Historical bytes: 80 31 80 65 B0 07 02 02 89 83 00 90 00
  Category indicator byte: 80 (compact TLV data object)
    Tag: 3, len: 1 (card service data byte)
      Card service data byte: 80
        - Application selection: by full DF name
        - EF.DIR and EF.ATR access services: by GET RECORD(s) command
        - Card with MF
    Tag: 6, len: 5 (pre-issuing data)
      Data: B0 07 02 02 89
    Tag: 8, len: 3 (status indicator)
      LCS (life card cycle): 00 (No information given)
      SW: 9000 (Normal processing.)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B 6D 00 00 80 31 80 65 B0 07 02 02 89 83 00 90 00
        JCOP30 contact interface

I googled a solution but I didn't found anything. Everyone can be help me please ?

Thanks.

Last edited by Stroumph (2010-12-05 13:36:31)

Offline

#2 2010-12-05 13:36:03

Stroumph
Member
Registered: 2010-09-05
Posts: 2

Re: [SOLVED] PCSC + Java 64-bits

I'm installed Archlinux 32-bit version, and I can use PCSC with Java. I think there is a problem with it in openjdk6 64-bit version. I will mark "solved" this thread.

Thanks for your help.

Offline

Board footer

Powered by FluxBB