我尝试了大约 100 种不同的
converter
命令、不同的 AID,仅使用小程序 AID,删除了“1.0”。它总是导致“无效的 AID”。
我使用不同的 Java 版本和 XML 成功创建了一次 cap,但 cap 文件几乎有 400kB,而且显然创建不正确。
我正在使用并且更喜欢 Java 7。
命令如下:
./converter.sh \
-classdir /Users/X/Desktop/javacard/emvcoapplet/bin \
-d /Users/X/Desktop/javacard/emvcoapplet/cap \
-exportpath /Users/X/Desktop/javacard/jc320v24.0_kit/lib/api_classic-3.0.5.jar \
-applet A000000333010101 emvcoapplet.EMVCoApplet \
emvcoapplet 1.0 A0000003330102
产生的错误消息:
Error Message:error: invalid AID A000000333010101.
Usage for compact CAP files:
converter <options> package_name package_aid major_version.minor_version
OR
converter -config <filename>
...
小程序片段:
package emvcoapplet;
import javacard.framework.*;
import javacard.security.*;
import javacardx.crypto.*;
import javacard.framework.ISO7816;
import javacard.framework.ISOException;
import javacard.framework.*;
import javacard.security.*;
import javacardx.crypto.*;
public class EMVCoApplet extends Applet {
private static final byte[] AID = { (byte) 0xA0, 0x00, 0x00, 0x03, 0x33, 0x01, 0x01, 0x01 };
public static void install(byte[] bArray, short bOffset, byte bLength) {
new EMVCoApplet().register(AID, (short) 0, (byte) AID.length);
}
private EMVCoApplet() {
cipherAESCBC = Cipher.getInstance(Cipher.ALG_AES_BLOCK_128_CBC_NOPAD, false);
initializePreStoredTLVStructure();
initializeKeys();
initializeOwnerPin();
}
public void process(APDU apdu) throws ISOException {
byte[] buffer = apdu.getBuffer();
byte cla = buffer[ISO7816.OFFSET_CLA];
byte ins = buffer[ISO7816.OFFSET_INS];
try {
if (selectingApplet()) {
return;
}
if (buffer[ISO7816.OFFSET_CLA] != CLA_EMV_APPLET) {
ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
}....
项目结构:
emvcoapplet
├── bin
│ └── emvcoapplet
│ ├── EMVCoApplet$TLV.class
│ └── EMVCoApplet.class
├── build.xml
├── cap
├── lib
└── src
└── emvcoapplet
└── EMVCoApplet.java
Java 卡套件:
jc320v24.0_kit
├── bin
│ ├── capdump.bat
│ ├── capdump.sh
│ ├── capgen.bat
│ ├── capgen.sh
│ ├── converter.bat
│ ├── converter.sh
│ ├── exp2text.bat
│ ├── exp2text.sh
│ ├── verifycap.bat
│ ├── verifycap.sh
│ ├── verifyexp.bat
│ ├── verifyexp.sh
│ └── verifyrev.sh
├── legal
│ └── THIRDPARTYREADME.txt
└── lib
├── api_classic-3.0.4.jar
├── api_classic-3.0.5.jar
├── api_classic-3.1.0.jar
├── api_classic-3.2.0.jar
├── api_classic_annotations-3.0.4.jar
├── api_classic_annotations-3.0.5.jar
├── api_classic_annotations-3.1.0.jar
├── api_classic_annotations-3.2.0.jar
├── asm-9.4.jar
├── commons-cli-1.6.0.jar
├── commons-logging-1.3.0.jar
├── jctasks_tools.jar
├── json.jar
├── logging.properties
└── tools.jar
如果这就是答案,那么可能值得一巴掌,但这里是......
从错误信息来看:
major_version.minor_version package_aid major_version.minor_version
根据您的命令:
emvcoapplet 1.0 A0000003330102
版本号和AID已互换。