Syndicate content

Kompilasi OCFPCSC di Ubuntu

OCFPCSC? Singkat aja, OCF atau OpenCard Framework adalah sebuah framework di Java untuk mengakses smartcard. Sedangkan PC/SC adalah (dari wikipedia aja ya :P)..

PC/SC is a specification for SmartCard integration in computing environment.

OCF ini bisa mengakses smartcard reader melalui 2 cara. Melalui PC/SC ini dan langsung via serial port. Kalau mau menggunakan PC/SC, perlu ada sebuah perantara yang bernama OCFPCSC ini. OCFPCSC ini diimplementasikan menjadi sebuah JNI (Java Native Interface) yang dapat diakses oleh Java dan OCFPCSC ini sendiri akan mengakses library PC/SC pada sistem.

Kompilasi OCFPCSC ini ternyata membutuhkan beberapa modifikasi pada Makefile sehingga akhirnya OCFPCSC ini dapat terkompilasi dengan benar dan terhubung dengan library PC/SC maupun Java.

Berikut ini adalah tahapan kompilasinya.

  1. Download OCFPCSC dari http://www.linuxnet.com/middleware/files/OCFPCSC1-0.0.1.tar.gz

    $ wget http://www.linuxnet.com/middleware/files/OCFPCSC1-0.0.1.tar.gz
    
  2. Extract file tersebut

    $ tar xzf OCFPCSC1-0.0.1.tar.gz
    
  3. Masuk ke direktori OCFPCSC1-0.0.1 dan ubah file Makefile

    $ cd OCFPCSC1-0.0.1
    $ vi Makefile
    
  4. Ubah bagian atas file Makefile tersebut.

    SEBELUM

    CC        = g++
    LD        = ld -export-dynamic
    OBJS     := $(patsubst %.cpp,%.o,$(wildcard *.cpp))
    JDK_HOME  = /home/corcoran/jdk117_v3
    PCSC_HDRS = -I/usr/local/pcsc/include
    PCSC_LIBS = -L/usr/local/pcsc/lib -lpcsclite
    INCLUDE   = -I$(JDK_HOME)/include -I$(JDK_HOME)/include/genunix $(PCSC_HDRS)
    LIBNAME   = libOCFPCSC1.so
    

    SESUDAH

    CC        = g++
    LD        = ld -export-dynamic
    OBJS     := $(patsubst %.cpp,%.o,$(wildcard *.cpp))
    JDK_HOME  = /usr/lib/jvm/java-1.5.0-sun
    PCSC_HDRS = -I/usr/include/PCSC
    PCSC_LIBS = -L/usr/lib -lpcsclite -lstdc++ -L/usr/lib/gcc/i486-linux-gnu/4.1.2
    INCLUDE   = -I$(JDK_HOME)/include -I$(JDK_HOME)/include/linux $(PCSC_HDRS)
    LIBNAME   = libOCFPCSC1.so
    

    Satu perubahan yang (sepertinya) tidak-semua-orang-tahu (termasuk saya) ada pada bagian PCSC_LIBS. Perlu ada penambahan opsi -lstdc++ -L/usr/lib/gcc/i486-linux-gnu/4.1.2. Saya mendapatkan informasi ini dari sebuah milis *lupa milisnya*

  5. Compile

    $ make
    g++  -c fieldIO.cpp -I/usr/lib/jvm/java-1.5.0-sun/include -I/usr/lib/jvm/java-1.5.0-sun/include/linux -I/usr/include/PCSC
    g++  -c OCFPCSC1.cpp -I/usr/lib/jvm/java-1.5.0-sun/include -I/usr/lib/jvm/java-1.5.0-sun/include/linux -I/usr/include/PCSC
    g++  -c PcscContexts.cpp -I/usr/lib/jvm/java-1.5.0-sun/include -I/usr/lib/jvm/java-1.5.0-sun/include/linux -I/usr/include/PCSC
    g++  -c PcscExceptions.cpp -I/usr/lib/jvm/java-1.5.0-sun/include -I/usr/lib/jvm/java-1.5.0-sun/include/linux -I/usr/include/PCSC
    g++  -c Tracer.cpp -I/usr/lib/jvm/java-1.5.0-sun/include -I/usr/lib/jvm/java-1.5.0-sun/include/linux -I/usr/include/PCSC
    ld -export-dynamic -Bsymbolic -shared fieldIO.o OCFPCSC1.o PcscContexts.o PcscExceptions.o Tracer.o -L/usr/lib -lpcsclite -lstdc++ -L/usr/lib/gcc/i486-linux-gnu/4.1.2 -lc -o libOCFPCSC1.so
    
  6. Pindahkan JNI library ke direktori library milik Java

    $ sudo cp libOCFPCSC1.so /usr/lib/jvm/java-1.5.0-sun/jre/lib/i386/
    

Yap.. sekian saja tutorial kali ini.. mudah2an membantu (sekaligus menjadi catatan pribadi sih.. hehehe)

*mark as starred*

kasih tutorial yang JPCSC dong :D

*eh kok gw mesti login dolo sih kalo mo komen di sini :( *

@joolean: login apaan? emang lu bisa login?

waku gw mo masukin komentar dengan data2 sbb:

nama: joolean
e-mail: email-default-gw-di-gmail
homepage: julian.web.id

ada error message: The name you used belongs to a registered user.

jadinya gw masukin input yang laen deh :D

oh mungkin lo pernah daptar di sini :P user2nya gw apus2in ahh :D

maaf sebelumnya ....
saya ingin minta source code aplikasi java smartcard .....
jika boleh ..... thx sebelumnya

wah saya ngga punya. Yang sebelumnya saya buat kan menjadi hak milik UI bukan saya :)

pernah dapet kartu yg smart card yg memory card ga kaya sle 4418/28, bisa ga sih nulis pake ocf ???? klo bisa tolong kasih petunjuk gmn, soalnya gw selalu gagal.