2012-04-22 3 views
3

오프 카드 바이트 코드 검증 프로그램을 사용하여 Java Card 프로그램 (캡 파일)을 검증해야합니다. 캡 파일의 정보를 수동으로 수정했으며 새 캡 파일이 올바른 유형인지 확인하고 싶습니다.바이트 코드 캡 코드 용 오프 코드 검증 코드

com.sun.javacard.scriptgen.CAP.verifyCAP() 메소드를 사용해보십시오. 유효하고 유효하지 않은 cap 파일을 보내지 만 결과는 항상 0입니다.

+0

Java Card 개발 도구의 CLI 도구를 사용해 보시지 않겠습니까? 만약 당신이 프로그램이 필요하다면, 직접 main 메소드를 호출 할 수도 있습니다 ... –

+0

예,하지만 Java 프로그램을 사용해 보았지만 그 결과는 같습니다. 'capFile.verifyCAP()'또는'com.sun.javacard.offcardverifier.Verifier'는 같은 결과를 반환합니다. – AAA

+0

그래서 오프 카드 검증기는 JAR 캡 파일을 요구하지만 no JAR 캡 파일을 보냈습니다. JAR 캡 파일을 생성하기 위해 프로그램을 수정합니다. 그렇다면'int com.sun.javacard.scriptgen.CAP.verifyCAP()'메소드를 사용할 수 없습니다. 그 결과는 항상 0입니다. 그렇다면'com.sun.javacard.offcardverifier.Verifier.verifyCap (FileInputStream arg0, String arg1, Vector arg2)'메소드를 사용하려고합니다. 그러나 내가 가진 인수가 무엇인지 모르겠습니다. 용도. – AAA

답변

1

솔루션을 게시하지 않습니다. 그 날이 드디어 도착했습니다.)

JavaCard SDK를 다운로드하십시오. 여기에는 검증 된 버전의 컴파일러가 포함되어 있습니다. 그 예제는 java_card_kit-2_2_1이 될 것입니다.

내 파일 :

./ 
./java_card_kit-2_2_1/ 
./java2CAP.sh 
./ValidApplet/ 
./ValidApplet/ValidApp.java 
./verifyCAP.sh 

java2CAP.sh :

#!/bin/bash 
export JC_HOME=./java_card_kit-2_2_1 
export CLASSPATH=$JC_HOME/lib/apduio.jar:$JC_HOME/lib/apdutool.jar:$JC_HOME/lib/jcwde.jar:$JC_HOME/lib/converter.jar:$JC_HOME/lib/scriptgen.jar:$JC_HOME/lib/offcardverifier.jar:$JC_HOME/lib/api.jar:$JC_HOME/lib/capdump.jar:$JC_HOME/lib/:$JC_HOME/samples/classes:$CLASSPATH 
PACKAGE=ValidApplet 
CLASS=ValidApp 
APPLET=$CLASS.java 
PACKAGE_AID=0x46:0x56:0x55:0x4c:0x4e:0x54:0x45:0x53:0x54:0x53 
APPLET_AID=0x46:0x56:0x55:0x4c:0x4e:0x54:0x45:0x53:0x54:0x53:0x41:0x70:0x70 
javac -g -source 1.3 -target 1.1 $PACKAGE/$APPLET 
java com.sun.javacard.converter.Converter -nobanner -out CAP -exportpath $JC_HOME/api_export_files -applet $APPLET_AID $CLASS $PACKAGE $PACKAGE_AID 1.0 -i 

verifyCAP.sh :

#!/bin/bash 
export JC_HOME=./java_card_kit-2_2_1 
export CLASSPATH=$JC_HOME/lib/apduio.jar:$JC_HOME/lib/apdutool.jar:$JC_HOME/lib/jcwde.jar:$JC_HOME/lib/converter.jar:$JC_HOME/lib/scriptgen.jar:$JC_HOME/lib/offcardverifier.jar:$JC_HOME/lib/api.jar:$JC_HOME/lib/capdump.jar:$JC_HOME/lib/:$JC_HOME/samples/classes:$CLASSPATH 

export CAPP_PATH=./ValidApplet/javacard 
export CAPP_NAME=ValidApplet.cap 

java -classpath $JC_HOME/lib/offcardverifier.jar com.sun.javacard.offcardverifier.Verifier $JC_HOME/api_export_files/javacard/framework/javacard/framework.exp $JC_HOME/api_export_files/java/lang/javacard/lang.exp $JC_HOME/api_export_files/javacard/security/javacard/security.exp $CAPP_PATH/$CAPP_NAME 

./ValidApplet/ValidApp.java :

package ValidApplet; 

import javacard.framework.Applet; 
import javacard.framework.APDU; 
import javacard.framework.ISO7816; 
import javacard.framework.ISOException; 

public class ValidApp extends Applet //implements PIN 
{ 
    final static byte TEST_CLA = (byte)0x77; 

    public static class TestClassStatic {}; 

    protected ValidApp() 
    { 
     register(); 
    } 

    public static void install(byte[] bArray, short bOffset, byte bLength) 
    { 
     new ValidApp(); 
    } 

    public void process(APDU apdu) 
    { 
     byte buffer[] = apdu.getBuffer(); 

     try { 
      if (buffer[ISO7816.OFFSET_CLA] == TEST_CLA) { 
       test((byte)4, (short)2); 
      } else { 
       ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED); 
      } 
     } catch (ISOException e) { 

     } 
    } 
}