Javacard converting to CAP file

I'm trying to generate a .cap file for some applet source provided externally, and capgen/converter are throwing an IllegalArgumentException when I attempt to generate a .cap (either straight from .opt or using capgen on a pre-generated .jca file).
The output I'm getting is pretty basic even in verbose mode:
java.lang.IllegalArgumentException
Cap file generation failed.
conversion completed with 1 errors and 0 warnings.
I've tried with or without the -noverify flag.
I'm using Java JDK Standard Edition (build 1.4.1_02) to run the converter, and compile the source files. And I've tried the converter in the Sun Java Card Development kit 2.2.1.
also I'm using GlobalPlatform 2.1.1.
When using JDK 1.3 version, success generate CAP File.. but 1.4 version is throw java.lang.IllegalArgumentException.
Help me.. Thanks,
Edited by: StrangeWorld on Jun 7, 2010 6:19 PM

Hi,
You need to target JDK 1.3 to compile classes to convert to a cap file. You can however do this with any newer JDK (I use Java 6). You need to specify the -source 1.3 and -target 1.1 arguments (this instructs the compiler to target and older JVM).
You should then be able to convert your class into a CAP file. If this doesn't work switch the values for source and target as this is off the top of my head and I usually get the back to front.
Cheers,
Shane

Similar Messages

  • Error converting to cap file

    Hello everyone,
    I tried to follow sample of java card kit, but I've got this error when I 'd like to convert class file to cap file with converter.
    Assertion (precondition) [member != null] failed at:
    What's wrong ????
    It's out only jca and exp file but not cap file.
    Could you please tell me how to generate cap file?
    Thank you very much,

    I' m sorry.
    I found this in another topic that I have to compile with jdk1.3.x.
    Thanx,

  • Any tools to reverse a cap file?

    Do any of you all know if there are tools (open source or commercial) that will reverse a cap file to a class file? Yeah, I know, without the export files there will be a loss of meaningful names for the packages, classes and methods, but it should still be possible (with some effort). I have not found one but thought that perhaps you all might know of one.
    Lacking that, does any one know if there are any open source tools to display the contents of a cap file (jca like output). I have heard that some of the commercial toolkits (like GEM) have tools that can do this. But I don't have one and they are not open source. I figure if I'm going to write a tool to deconvert (or decap) a cap file, starting with an open source tool would make things quicker...
    Ideally I would like to reverse a cap file all the way back to a Java source file and I'm guessing that if I can get a cap file back to a class file then a normal decompiler should do the rest.
    Dan

    Hi Dan,
    After 3 years I want to ask you, did you get any such decompilers etc or not ?
    I also want to convert the cap file to source code. If I can not do this, at least is there a way or tool that can parse the byte code for me.
    A reply would be highly appreciated.
    Thanks,
    AQ

  • Manually upload .cap file on a java card

    Hi
    I wonder how to manually upload a .cap file on a java card. I do know that it must be an or more APDUs that contain the file and so on.
    What I wonder is how to convert a .cap file into a byte array (byte array that on-card installer can read and understand) without using JCOP or any other tools? Does (must) this array have a special format or something?
    I am interested in the process of taking a.cap file and convert it to byte array (nothing else).
    Thanks in advance!
    /Lyudmila

    The .cap file uploading mechanism depends if you have a java card or a GlobalPlatform card.Java Card cards are GlobalPlatform based.
    If you have a java card you can use the same mechanism that it is used with Cref (see Java Card Kit - Development Kit - Chapter 11): .cap file is divided in n apdus, one or more (if a component not fit in one apdu, for example method component) for component (first:Header.cap, second:directory.cap, third:import.cap, etc).
    If you use a GlobalPlatform card, the mechanism is more complex:
    first you have to create a session using a specific protocol (SCP01, SCP02, etc) through INITIALIZE UPDATE and EXTERNAL AUTHENTICATE commands, then an INSTALL FOR LOAD command and n LOAD commads as they are necessary.
    To use GlobalPlatform mechanism, see GlobalPlatform Specification 2.1.1.The JCRE spec does not define the applet loader and CREF has a basic version of an applet loader that is not GP compliant, but this is not the Java Card standard. To load onto any physical Java Card you will need to follow the GlobalPlatform specification.
    - Shane

  • Converting CAP file to JCA using normalizer

    Hi, I'm trying to generate 2.2.1(or 2.2.2) JCA file from 2.2.1(or 2.2.2) CAP file using JCDK 3.0 normalizer. I generated class files successfully but when using converter from javacard-kit 2.2.2 i get following error messages
    unsupported class file format of version 50.0.
    Is there any way to solve the error? I also like to know if there exists any other tool other than normalizer to convert cap file to jca file,

    javac -g -source 1.2 -target 1.2 -classpath $JC_HOME/lib/api.jar:$JC_HOME/lib/installer.jar src/xu/test/*.java -d binYou can have a look at the man file for javac in the section source/target and try the different options. I'm using sun-java6-jdk with these compiler parameters and have no problem when it comes to converting the files.
    Hope this can help you.
    Cheers

  • Convert from java file to cap file

    Dear Pro,
    Please help me this problem,
    I'm building a applet in eclipse. Now, I want to convert from java file to cap file to load it into javacard.
    I need repair what tools and do what, please help me!
    Thanks & Best Regards,
    KeillyNguyen

    Run -> Run Configuration -> Double click Java Card Application -> Click Run
    After that, the CAP file will be generated in the bin directory.
    Are you come from VN? Im Vietnamese :) Nice to meet you

  • What is the wrong about converting the .class of api of jc to .cap files?

    hi everyone
    l tried to convert the .class filses of api to .cap files,there are some wrongs please help me!
    ___the .opt file:___
    -out JCA CAP EXP
    -exportpath D:\jCDK2_2_1\api_export_files
    -classdir D:\workspace\framework
    framework
    0x0a:0x0:0x0:0x0:0x62:0x1:0x01 1.2
    converter result:
    c:documents and settings\administrator>converter -config d:\workspace\framework\framework.opt
    java card 2.2.1 class files converter ,version 1.3
    copyright 2003 sun microsystems,inc.all rights reserved.use is subject to license terms
    error:javacard.framework.JCSystem:unsupported method modifier native in method isTransient.
    error:javacard.framework.JCSystem:unsupported method modifier native in method makeTransientBooleanArray.
    error:javacard.framework.JCSystem:unsupported method modifier native in method makeTransientByteArray
    error:javacard.framework.JCSystem:unsupported method modifier native in method makeTransientShortArray
    conversion completed with 13 errors and 0 warnings.
    thanks in advance

    Hi,
    I am not sure why you are trying to convert the API packages into CAP files. The JAR files that ship with the JCDK are only stub implementations for compiling against. They do not have an actual implementation. You will find methods returning a short always return 0 etc. You should only need to convert your code into CAP files. You will just need to reference the .exp files that are included in the JCDK for the API so your code can be converted.
    Cheers,
    Shane

  • JavaCard .cap file generation throws IllegalArgumentException

    Hi all,
    I'm trying to generate a .cap file for some applet source provided externally, and capgen/converter are throwing an IllegalArgumentException when I attempt to generate a .cap (either straight from .opt or using capgen on a pre-generated .jca file). I'm able to generate/run the .cap file from JCOP tools for eclipse, so I'm able to verify it's authenticity.
    The output I'm getting is pretty basic even in verbose mode:
    C:\projects\MWallet\src>converter -config .\com\schip_select\schip.opt
    Java Card 2.2.1 Class File Converter, Version 1.3
    Copyright 2003 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.
    parsing C:\projects\MWallet\src\com\mycard\schip_select\Constants.class
    parsing C:\projects\MWallet\src\com\mycard\schip_select\schip.class
    parsing C:\projects\MWallet\src\com\mycard\schip_select\schip_pin.class
    parsing C:\projects\MWallet\src\com\mycard\schip_select\protected_array.class
    converting com.mycard.schip_select.Constants
    converting com.mycard.schip_select.schip
    parsing C:\JavaCardDevelopment\api_export_files\javacard\framework\javacard\framework.exp
    parsing C:\JavaCardDevelopment\api_export_files\java\lang\javacard\lang.exp
    parsing C:\gp211\org\globalplatform\javacard\globalplatform.exp
    parsing C:\JavaCardDevelopment\api_export_files\javacard\security\javacard\security.exp
    converting com.mycard.schip_select.schip_pin
    converting com.mycard.schip_select.protected_array
    parsing C:\JavaCardDevelopment\api_export_files\javacardx\crypto\javacard\crypto.exp
    writing C:\projects\MWallet\src\com\mycard\schip_select\javacard\schip_select.jca
    java.lang.IllegalArgumentException
    Cap file generation failed.
    conversion completed with 1 errors and 0 warnings.
    The opt file I've got should be fairly un-offensive:
    -out CAP
    -exportpath "c:\JavaCardDevelopment\api_export_files;C:\gp211;.\"
    -debug
    -i
    -v
    -noverify
    -applet 0xA0:0x00:0x00:0x00:0x04:0x10:0x10 com.schip_select.schip
    com.schip_select
    0xA0:0x00:0x00:0x00:0x04:0x10 1.0
    I've tried with or without the -noverify flag.
    I'm using Java JDK Standard Edition (build 1.4.1_07-b02) to run the converter, and compile the source files. And I've tried the converter in the Sun Java Card Development kit 2.2.1 and 2.2.2. I've also tried attaching the jdb.exe to converter to see whats going on, I can see that it fails in a function:
    com.sun.javacard.jcasm.cap.ReferenceLocationComponent.addTwoByteOffset()
    But can't get anymore information than that. Any pointers to what could be causing this (I frankly don't know where to start) would be greatly appreciated.
    Thanks,
    James

    6A80 is the error which says that there is mismatch between jc version of card and java version.
    For Javacard 2.2.1 java version is jdk.1.4.1
    But lets not focus on that
    I tried to recreate the problem. You were using GP classes to create a cap file so I downloaded GP exp files from
    [http://www.globalplatform.org/specificationform2.asp|http://www.globalplatform.org/specificationform2.asp].
    Compiled files as
    javac -g -classpath .\classes;..\lib\api.jar;..\lib\installer.jar;libs/gp211.jar;libs/jc221.jar {PACKAGE_DIR}\*.javaMy opt file is as
    -out EXP JCA CAP
    -exportpath C:\java_card2.2.1\java_card_kit-2_2_1\api_export_files;C:\GP211\GP_exportA00000015100
    -applet <APPLET_AID> <Applet_DIR>
    <PACKAGE>
    <PACKAGE_AID> 1.0and called converter command as
    converter -config {PATH_TO_EXPORT_FILE}\HelloWorld.optI was able to create the CAP file successfully.

  • How do I convert Wallet.class to a CAP file?

    I was trying to convert one of the sample files( Wallet.class) to a CAP file but it didn't work.
    Please help!!!

    Please be more specific. Describe what you did in detail, provide outputs of your actions etc. Otherwise noone can help you.
    Somebody save the world..

  • IDES for writing Java card applets and converting the applets as CAP FILE.

    I have developed a JAVA CARD APPLET , FindMFValueJCA.java . It gets compiles in net beans 6.0 But while converting the applet to CAP file i am getting some errors. Is there any other IDES which take care of converting the CAP files

    What's the Java version you are using?
    As the java card tool kit has version dependencies. If you are using java_card _kit 2.2.2 then 1.5 is fine.                                                                                                                                                                                                                                                                                                   

  • How to debug byteCode? Can cap file convert to java source file?

    Are there tools can debug byteCode?
    Are there tools can convert cap file to java source file?
    Are there tools can convert jca file to java soure file?

    I think it's little bit difficult to give you a correct answer. Frankly speaking, cap file debugging is possible if you have sufficient devices and knowledge to do that. Converting cap file to java source code is also possible only if the cap file has descriptor component in it. Names of variables, functions will not be completely restored because cap file doesn't have the names in it. But I am not sure that there is a publicly opened tool to do that. JCVM chapter 6 may show you the way even it's not the direct one.

  • Convert ijc file to cap file

    Dear All,
    I want to create script to load and install a package into smartcard.
    I have a ijc file. I want to convert it to cap file so my tool only create script from cap file.
    Please support to help me!
    Kelvin Nguyen

    It's not only 'package/applet ASCII name would be lost'! IJC is a special format which is GSM-oriented format. Converting from CAP to IJC is not only removing some 'useless information'. The conversion involves the following modifications:
    - organisation component is removed
    - the component-oriented structure in CAP file will be 'spread' to be 'flat' in structure.
    Tthese modifications are irreversible from my point of view (the CAP-2-IJC conversion is destructive in terms of information and structure).
    By the way, if this question is in the context of (U)SIM applet, another reason that we should not carry out the conversion IJC-2-CAP (if it's possible) is that, this conversion will produce a file that is bigger in size, not in a (U)SIM applet logic.
    Best regards, JDL

  • Sent step by step apdu command to load cap file into javacard

    Dear All,
    I have log file about process loading cap file into card:
    Loading "E:\Sample.cap" ...
    T - 80F28000024F00
    C - 08A000000003000000019E9000
    ISD AID : A000000003000000
    T - 80E602001407A000000132000108A00000000300000000000000
    C - 009000
    T - 80E80000C8C48209B6010011DECAFFED010202010107A000000132000102001F0011001F00000015009A005D0772000A00C8001B03E400020000000002000004001502000107A0000000620001000107A000000062010106005D80810000C20000810200800000FF000100000000810500FF0003000000028000130008010D000002CA02DE02E202E702EE02F602FB0308032B036204AA04C804E8000009040308020705060C0D00010D040308020705060C0D090A0B010707720003201D046D06048D00141C7500120001000300
    C - 009000
    T - 80E80001C800098F00163D1D8C001A77068D001401770110188C001B7A0220181D8C001C7A03101C026B07017F001D7A7B001D670D8F001F3D1C8C00207F001D7B001D1C8B00127B001D93038903290803290903290A03290B03290D03290E707F1506160E251100FF53290C160C606D1B1604160E41251100FF53290D160D605C191E160E41251100FF531505160E251100FF53435B290F160F6308160F0245290F160F10096D075909017005590801160F10146D27160D160C432910161063081610024529101610100C6D0700
    C - 009000
    T - 80E80002C8590B01700B161010106F05590A01590E01160E1607A4FF7F1100961609411608430547290F160F630703290F700E160F1100FF6F071100FF290FAD0005160F5B38104B160B41160A43290F160F630703290F700E160F1100FF6F071100FF290FAD0007160F5B387A045603290503290603290704290803290916066008160610096F0F1B1607590701251100FF53290616056008160510096F0E191E590201251100FF532905160610096F2E160510096F281605160643290A160A6308160A0245290A160A10086D00
    C - 009000
    T - 80E80003C80C16091008160A434129095908017042160610096F0E590801160565355905FF7030160510096F0E590801160665235906FF701E160616056F0E16061605432906032905700C1605160643290503290616071604A4FF5D1609106445290916096307117FFF29091609160847290916091100FF6F071100FF2909AD000316095B387A0430191E0441251100FF5375002D00020081000D0082001B18068901191E0541251100FF537818078901191E054125191E0641258D001778191E0441251100FF53107F6E101800
    C - 009000
    T - 80E80004C8058901191E0441251100FF537803780320188C001B18110100900B870218110118900B870318110118900B870418110080900B87051808900C8706181D880718AE0788081804048D00138709181006048D00158700181006048D0015870A7A02201D046D06048D0014181D880718AE0788087A011006780110AE0B780210AD090325780310AD090303387A0110AE08780330191E1103008D00183B057805501D1604411100806F040378AE0B6106078D0014AD051D1A1F16048D00193B1604780540AD090303381800
    C - 009000
    T - 80E80005C803880B1803890C1803890D1803890E1803880F1F60081FAD05926F06058D0014191EAD05031F8D00193B1804880F7A0543032905AE0B046B06088D001419031E41257501300002FFC600110000000D058D00141819031E418C001E290618AF011E41890119AF0125066A06058D00141806881008AF01412904A800E2181916048C001E2905191604257300C800010004000F0031008600A71605AD02926F06058D0014191604AF0141AD020316058D00193B181605890CA8009AAD0603191604AF0141251100FF5300
    C - 009000
    T - 80E80006C839AD0604191604AF01410441251100FF5339AD0605191604AF01410541251100FF5339AD0606191604AF01410641251100FF5339AD0607191604AF01410741251100FF533970441605AD03926F06058D0014191604AF0141AD030316058D00193B181605890D70231605AD04926F06058D0014191604AF0141AD040316058D00193B181605890E700216041605AF014141290416041606A7FF1DAF0CAF0D41AF0E41610C058D00147006058D00147A0210AE0B046A0BAE0F6007AE10066A06088D00141804880B1800
    C - 009000
    T - 80E80007C8AE0788087A0440AD09030338AE0B6106078D0014180488111F650A18191E1F8B00217802780846032905032906032907032908AE116106088D0014AE0861040378AE107501DF00010003000918191E8C001E29091FAF011609416C6B04AF01412904705D181916041E418C001E29051916041E41257300400000000400110013004000220031702F1605652B1E160441AF0141290870201605651C1E160441AF0141290670111605650D1E160441AF01412907700216041605AF0141412904160416096FA1AD060700
    C - 009000
    T - 80E80008C8261100FF53290916091609452909AD0A0316098D00183B16069800B916079800B418191606191607AD03AD04AF0E8C0022AD0007251100FF53AD0606264510084F29091609AD0607266C14AD0903043818AE078808180388111140007816091609452909AD000716098D00183BAD0005251100FF53AD0605264510084F29091609AD0607266C14AD0903043818AE078808180388111140007816091609452909AD000516098D00183BAD0005AD0007AD0A058D0023AD0A05AD0A038D00246214AD0903043818AE0700
    C - 009000
    T - 80E80009C8880818038811114000781608604918191608AD02AF0C8C0025AD0003251100FF53AD0604264510084F29091609AD0607266C14AD0903043818AE078808180388111140007816091609452909AD000316098D00183BAD0003AD0A05AD0A078D0023AD0A07AD0A038D00246214AD0903043818AE0788081803881111400078AD09030338AE086511183D840804435B88087006058D0014037803430329047031181D160441251100FF5329051A1F160441251100FF532906160516066F040478160516066D0402781600
    C - 009000
    T - 80E8000AC80404415B29041604056CCE03780462032906042907703D181D160741251100FF531A1F160741251100FF534116064129061504160516074116065B3816061100FF6F070429067005032906160704435B2907160763C37A08000A000200010000000000000A001B0500000000000100000004000000130002002B003300090001000105009A002602001D0602001D0B02001D0002001D0102001D0202001D0302001D0402001D0D02001D0E02001D0502001D0702001D0F02001D0802001D0902001D0A02001D110200
    C - 009000
    T - 80E8000BC8001D0C02001D10038105020681080C060000330681080D01001D000681100506811006068110020600027A06800000068105000500000006000225010013000600002B03001D0D0600005906000728060006EB060001430900C8008BFF1726E2220E1F1A080808060403020809090F0302090507081D08100704040404060B0A082A04030C03260C030C050609060B060B060B060F0C030C060C030C080D02031205040B030205050A1D08061408330F0F0B0C111A020205080C060602040D09080C060602040D0900
    C - 009000
    T - 80E8800C5A03030603080602040E0205080C060602040D090303060308060204060506050039090D050508080B04050503030403FFFF06243509090D31180A2C091416081414200E690E130E270615190E19171B711B3B3C0D09233B0D092C00
    C - 009000
    Completed !
    However, I want to run step by step a command to load this cap file into card.
    When I sent "80F28000024F00", it is ok. It response: 08A000000003000000019E9000
    After that, I sent next command: 80E602001407A000000132000108A00000000300000000000000, it response as 6985.
    I don't understand why. Please help me this problem. I must do how to load this cap
    Thanks & Best Regards
    Kelvin Nguyen

    Hi,
    You need to delete the old CAP file before loading it again. The problem is that when you call INSTALL FOR LOAD it sees there is already a CAP file with that AID present.
    You can try sending a GET STATUS command listing load files to see what is on the card already. You need to delete what is present to be able to load/install again.
    Shane

  • ERROR while generating CAP file

    Hello,
    Iam trying to generate a cap file of JCRMI applet. Iam getting the following errors while generating a CAP file. Can anybody help me.
    Thanks in advance,
    With Regards,
    Abhishek Goud
    {color:#ff0000}{color:#008080}*C:\Documents and Settings\Administrator\Desktop\Demo>converter -classdir C:\jav*
    a_card_kit-2_2_2\lib -exportpath C:\java_card_kit-2_2_2\api_export_files;C:\java
    cardkit-2_2_2\lib -applet 0xa0:0x00:0x00:0x00:0x62:0x03:0x01:0x08:0x01 PurseAp*
    plet com.sun.javacard.samples.RMIDemo 0xa0:0x00:0x00:0x00:0x62:0x12:0x34 1.3
    {color}
    Java Card 2.2.2 Class File Converter, Version 1.3
    Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to lic
    ense terms.
    warning: You did not supply export file for the previous minor version of the pa
    ckage
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported type long of
    field serialVersionUID.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode ifnull in clinit method, try a different compiler.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode goto
    in clinit method, try a different compiler.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
    okestatic in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method class$(java.lang.String) of class com.sun.javacard.s
    amples.RMIDemo.PurseImpl_Stub.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode ane
    warray in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode aas
    tore in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
    okevirtual in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method getMethod(java.lang.String, java.lang.Class) of clas
    s java.lang.Class.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode ifnul
    l in clinit method, try a different compiler.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode goto
    in clinit method, try a different compiler.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
    okestatic in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method class$(java.lang.String) of class com.sun.javacard.s
    amples.RMIDemo.PurseImpl_Stub.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode ane
    warray in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode aas
    tore in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
    okevirtual in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method getMethod(java.lang.String, java.lang.Class) of clas
    s java.lang.Class.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode ifnul
    l in clinit method, try a different compiler.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode goto
    in clinit method, try a different compiler.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
    okestatic in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method class$(java.lang.String) of class com.sun.javacard.s
    amples.RMIDemo.PurseImpl_Stub.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode ane
    warray in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
    okevirtual in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method getMethod(java.lang.String, java.lang.Class) of clas
    s java.lang.Class.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode ifnul
    l in clinit method, try a different compiler.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode goto
    in clinit method, try a different compiler.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
    okestatic in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method class$(java.lang.String) of class com.sun.javacard.s
    amples.RMIDemo.PurseImpl_Stub.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode ane
    warray in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
    okevirtual in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method getMethod(java.lang.String, java.lang.Class) of clas
    s java.lang.Class.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode ifnul
    l in clinit method, try a different compiler.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode goto
    in clinit method, try a different compiler.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
    okestatic in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method class$(java.lang.String) of class com.sun.javacard.s
    amples.RMIDemo.PurseImpl_Stub.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode ane
    warray in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode ifnul
    l in clinit method, try a different compiler.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode goto
    in clinit method, try a different compiler.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
    okestatic in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method class$(java.lang.String) of class com.sun.javacard.s
    amples.RMIDemo.PurseImpl_Stub.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode aas
    tore in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
    okevirtual in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method getMethod(java.lang.String, java.lang.Class) of clas
    s java.lang.Class.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode goto
    in clinit method, try a different compiler.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unhandled bytecode pop i
    n clinit method, try a different compiler.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode new
    in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode inv
    okespecial in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method <init>(java.lang.String) of class java.lang.NoSuchMe
    thodError.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported bytecode ath
    row in clinit method.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of method class$.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method forName(java.lang.String) of class java.lang.Class.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported return type
    String of invoked method getMessage() of class java.lang.Throwable.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method <init>(java.lang.String) of class java.lang.NoClassD
    efFoundError.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported long type co
    nstant.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java
    *.lang.Object, long) of class java.rmi.server.RemoteRef.*
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported String type
    constant.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method <init>(java.lang.String, java.lang.Exception) of cla
    ss java.rmi.UnexpectedException.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported long type co
    nstant.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java
    *.lang.Object, long) of class java.rmi.server.RemoteRef.*
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported String type
    constant.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method <init>(java.lang.String, java.lang.Exception) of cla
    ss java.rmi.UnexpectedException.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported long type co
    nstant.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java
    *.lang.Object, long) of class java.rmi.server.RemoteRef.*
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported String type
    constant.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method <init>(java.lang.String, java.lang.Exception) of cla
    ss java.rmi.UnexpectedException.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported long type co
    nstant.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java
    *.lang.Object, long) of class java.rmi.server.RemoteRef.*
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported String type
    constant.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method <init>(java.lang.String, java.lang.Exception) of cla
    ss java.rmi.UnexpectedException.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported long type co
    nstant.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe long of invoked method invoke(java.rmi.Remote, java.lang.reflect.Method, java
    *.lang.Object, long) of class java.rmi.server.RemoteRef.*
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported String type
    constant.
    error: com.sun.javacard.samples.RMIDemo.PurseImpl_Stub: unsupported parameter ty
    pe String of invoked method <init>(java.lang.String, java.lang.Exception) of cla
    ss java.rmi.UnexpectedException.
    {color}
    conversion completed with 73 errors and 1 warnings.

    It seems there is a variable of type "long" in your applet. The "long" type is not supported by Java Card, so you should remove all variables with type "long".
    Otherwise, without the source code, it is difficult to help you find out what's wrong.

  • How to load the .cap file in a Smart Card?

    Dear All,
    Hello..!!
    I am using JCDK 2.2 and have used Eclipse JCDK.
    I have written a simple read/write applet and created a .cap file using Eclipse's Converter Java Card tool.
    What is the next step to be done?
    I have a smart card device and have installed its drivers.
    When do the APDU commands come into picture?
    Expecting help.
    Thanks a lot.
    Regards,
    Suril

    Suril Sarvaiya wrote:
    Hi Shane....
    Thnx a lot....
    I have downloaded GP-Shell 1.4.4
    When I open its application and write any command and press enter ; the app window closes immendiately.
    Can you please help me on this?
    One more thing Shane......
    I'm writig a java class using javax.smartcardio
    I have installed drivers of Omnikey 3021
    but the TerminalFactory is not detecting it?
    Any idea on that?
    Thanks again...
    Regards,
    SurilHi all,
    Is Mr. thread starter has solved his problem?
    I profit this thread to post my question. I'm working with new environment and I have problem loading cap file into my smartcard.
    specification come first :-)
    - My smartcard is said to be JC2.2.1 and GP2.1.1 compatible
    - My code (for testing) is written in Java under eclipse Helios service 2 with JavaCard plugin (for JC2.2.2)
    I compile my code with JDK 1.3 (for compatible version) and using the JC plugin to generate cap file (along with exp and jca).
    My problem is exactly the same as one that was posted in this forum about 2 years ago but is not answered :-)
    [Problem Loading Application to Card |http://forums.oracle.com/forums/thread.jspa?threadID=1749334&tstart=420]
    + I successfully authenticate with smartcard
    + APDU command Install for Load is executed successfully
    + BUT the APDU command LOAD file fails with returned status word is 6424
    For details, I post here my javacard applet code and APDU command executed with my tool:
    package mksAuthSys;
    import javacard.framework.APDU;
    import javacard.framework.Applet;
    import javacard.framework.ISO7816;
    import javacard.framework.ISOException;
    import javacard.framework.OwnerPIN;
    public class Jcardlet extends Applet {
         private final static byte[] myPIN = { (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04};
         final static byte Jcardlet_CLA =(byte)0xB0;
         final static byte VERIFY = (byte) 0x20;
         final static byte PIN_TRY_LIMIT =(byte)0x03;
         final static byte MAX_PIN_SIZE =(byte)0x08;
         final static short SW_VERIFICATION_FAILED = 0x6300;
         OwnerPIN pin;
         private Jcardlet() {
              pin = new OwnerPIN(PIN_TRY_LIMIT, MAX_PIN_SIZE);
              pin.update(myPIN, (byte) 0, (byte) 4 );
             register();
         public static void install(byte bArray[], short bOffset, byte bLength)
                   throws ISOException {
              new Jcardlet().register();
         public boolean select() {
              if ( pin.getTriesRemaining() == 0 ) return false;
             return true;     
         public void deselect(){
              pin.reset();
         //@Override
         public void process(APDU apdu) throws ISOException {
              // TODO Auto-generated method stub
              byte[] buffer = apdu.getBuffer();
              if ((buffer[ISO7816.OFFSET_CLA] == 0) &&
                      (buffer[ISO7816.OFFSET_INS] == (byte)(0xA4))) return;          
              if (buffer[ISO7816.OFFSET_CLA] != Jcardlet_CLA)
                    ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);          
              switch (buffer[ISO7816.OFFSET_INS]) {
               case VERIFY: verify(apdu);
                 return;
               default: ISOException.throwIt (ISO7816.SW_INS_NOT_SUPPORTED);
         private void verify(APDU apdu) {
              // TODO Auto-generated method stub
             byte[] buffer = apdu.getBuffer();
             // retrieve the PIN data for validation.
             byte byteRead = (byte)(apdu.setIncomingAndReceive());
             // check pin
             // the PIN data is read into the APDU buffer
             // at the offset ISO7816.OFFSET_CDATA
             // the PIN data length = byteRead
             if ( pin.check(buffer, ISO7816.OFFSET_CDATA,byteRead) == false )
               ISOException.throwIt(SW_VERIFICATION_FAILED);          
    }And my APDU command:
    Loading "D:\mksAuthSys.cap" ...
    T - 80F28000024F00
    C - 08A000000003000000079E9000
    ISD AID : A000000003000000
    T - 80E602001508F23412345610000008A00000000300000000000000
    C - 009000
    T - 80E80000C8C482018B010012DECAFFED010204000108F23412345610000002001F0012001F000C001500420012009D0011001C0000009F00020001000402010004001502030107A0000000620101000107A000000062000103000C0108F234123456100001002306001200800301000104040000003DFFFF0030004507009D000510188C0003188F00013D0610088C00028700AD007B000403078B0005188B00067A02308F00073D8C00088B00067A0110AD008B00096104037804780110AD008B000A7A0221198B000B2D1A0300
    C - 6424
    Stopped loading due to unexpected status words.Urgently look forward to hearing from you.
    Thanks a bunch in advance
    Best Regards,
    JDL

Maybe you are looking for