程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> javacard-使用JDKit 3.0.5u1 生成的cap包 在下載到卡片過程出現錯誤 6438

javacard-使用JDKit 3.0.5u1 生成的cap包 在下載到卡片過程出現錯誤 6438

編輯:編程綜合問答
使用JDKit 3.0.5u1 生成的cap包 在下載到卡片過程出現錯誤 6438

如題, 在使用官方給的 eclipse 插件 生成cap包後, 將cap包下載到 卡片過程 出現錯誤,
包的結構和之前用jcop工具生成的包不同
下載過程使用自己編寫的工具, 將cap包中Header.cap 等字段分別提取 並發送給卡片
具體位置是 Header.cap 和 Directory.cap 發送成功後, 發送 Import.cap 時
返回 狀態碼 6438
命令流如下:

APDUSend:
80E602000A05010203040600000000
APDU Recv:
SW: 6101

APDUSend:
00C0000001
APDU Recv:
00
SW: 9000

APDUSend:
80E8000018C416010013DECAFFED020204000105010203040603706179
APDU Recv:
SW: 9000

APDUSend:
80E800012402002100130021000A001500220018005A0018000D0000007203AF000400020008020100
APDU Recv:
SW: 9000

APDUSend:
80E800021804001502060107A0000000620101000107A0000000620001
APDU Recv:
SW: 6438

望高手 指點迷津

最佳回答:


問題已解決.

現將問題原因和解決過程與大家分享

問題原因: 版本號不支持. 
    此處版本號包括 
    1. java card版本號  這裡的java card 版本號 與 JCK(java card kit)版本號對應, 
        同時 JCK版本與JDK版本也項對應 (對應關系 查看JCK用戶手冊) 
            如果不對應在converter時會報錯 class 版本 xxx 不支持
    2.卡內API版本號與 API庫版本號 比如GP
    以上兩處 版本號不對應均會在 cap包下載到卡片的時候 報錯

解決過程:

1.查看卡片版本號(以下操作均在JCOP Shell下)
    cm>  get-data 0066
    => 80 CA 00 66 00                                     ...f.
    (119608 usec)
    <= 66 4C 73 4A 06 07 2A 86 48 86 FC 6B 01 60 0C 06    fLsJ..*.H..k.`..
    0A 2A 86 48 86 FC 6B 02 02 01 01 63 09 06 07 2A    .*.H..k....c...*
    86 48 86 FC 6B 03 64 0B 06 09 2A 86 48 86 FC 6B    .H..k.d...*.H..k
    04 02 15 65 0B 06 09 2B 85 10 86 48 64 02 01 03    ...e...+...Hd...
    66 0C 06 0A 2B 06 01 04 01 2A 02 6E 01 02 90 00    f...+....*.n....
    Status: No Error
    Global Platform version                : 2.1.1
    Global Platform Secure Channel Protocol: 02 option 15
    Java Card version                      : 2.2
    **此時 Java Card 版本為2.2 / GP 為 2.1.1**
2.查看自己的 jdk&&jck 或者 jcdk
  現在官方能夠下載到的 jck 包括以下幾個版本
    Java Card Classic Development Kit 3.0.5
    Java Card Classic Development Kit 3.0.4
    Java Card Classic Development Kit 3.0.3
    Java Card Classic Development Kit 3.0.2
    Java Card Development Kit 2.2.2 (See also Java Card 2.2.2 RMI Client API White Paper)
    Java Card 2.2.1 Development Kit (See also Java Card 2.2.1 RMI Client API White Paper)
    Java Card 2.2 Development Kit (See also Java Card 2.2.2 RMI Client API White Paper)
    Java Card 2.1.2 Development Kit
    Java Card 2.1.1 Development Kit
    Java Card 2.1 Development Kit
    其中 最新3.05是自帶eclipse 插件的 可以自動生成cap包 此版本的對應的 jdk 是1.7
    如果使用此版本所帶的插件進行開發其他版本java card 需要進行如下操作
        1.下載 java card 對應版本的 jck 和jdk
            2.新建目錄A(比如jcdk221)
            3.將jck中的 bin+lib+api_export_file 復制到 A\
            4.將jdk中的 lib\tools.jar 復制到 A\lib\ 
            5.eclipse->window->prefernces->java card platforms: new->java card SDK path-> 
              ID: JavaCard;
                Java Card SDK path: A 的路徑; 
                OK.
            6.java card platforms->java card devices: new -> OK;
            7.選擇當前項目 project->java card runtime -> JavaCard (剛才設置的平台ID); OK!
        此時 轉換出來的 cap 包就是可以下載到卡片的 cap包了
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved