微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JCOP J3A系列卡是否支持int数据类型?

如何解决JCOP J3A系列卡是否支持int数据类型?

Jcop / J3A081是否支持int数据类型?

我正在使用最新的Eclipse Jcop工具进行Java卡小程序开发。我需要在卡中存储大整数值,因此我在Applet中使用了INTEGER数据类型(int)来保持平衡。它正在编译,没有任何错误,但是在将CAP文件上传到Jcop J3A081卡时出现错误6A80。我已经尝试了GP 2.1.1,GP 2.2.1,JDK 2.2.2,JDK 3.0.4库的所有组合,但遇到相同的错误

J3A / J2A系列卡是否支持int数据类型变量和JCint库?如果是,该如何解决

Applet源代码

JCOP Tools

注意:如果我删除int数据类型变量和JCint引用,则不会出现错误

-  version
current version is 5.32.0.4 [1]
build timestamp is 27-01-2020 12:10:53
-  /terminal
--opening terminal
Session ID: 6527B91D44DD89CDE6AB60FCA590DF06
>  /list-readers
----------------------
Name ( Type )
----------------------
>  /card -v
Warning: Usage of /atr with no preceding of /reset is deprecated. /reset is invoked.
 IOCTL().
ATR: 3B89800150565F4A334130383150
ATR: 
      Hist = PV_J3A081           
         T = 0                   
         T = 1                   
 => 00 A4 04 00 00                                     .....
 (12493 usec [SYS])
 <= 6F 65 84 08 A0 00 00 00 03 00 00 00 A5 59 9F 65    oe...........Y.e
    01 FF 9F 6E 06 47 91 00 78 34 00 73 4A 06 07 2A    ...n.G..x4.sJ..*
    86 48 86 FC 6B 01 60 0C 06 0A 2A 86 48 86 FC 6B    .H..k.`...*.H..k
    02 02 01 01 63 09 06 07 2A 86 48 86 FC 6B 03 64    ....c...*.H..k.d
    0B 06 09 2A 86 48 86 FC 6B 04 02 15 65 0B 06 09    ...*.H..k...e...
    2B 85 10 86 48 64 02 01 03 66 0C 06 0A 2B 06 01    +...Hd...f...+..
    04 01 2A 02 6E 01 02 90 00                         ..*.n....
Status: No Error
FCI Data:
 Max. Block Length: 255
 CPLC Data: 
  Operating System ID                : 4791
  Operating System release date      : 0078 (18.3.20X0)
  Operating System release level     : 3400
 Security Domain Management Data: 
  Global Platform Version: 2.1.1
  Secure Channel Protocol: 02 (option 15)
cm>  /identify
FABKEY ID:   0x02
PATCH ID:    0x21
TARGET ID:   0x00 (null)
MASK ID:     0x34 (52)
CUSTOM MASK: 00000000
MASK NAME:   NX011D
FUSE STATE:  fused
ROM INFO:    58E957
COMBO NAME:  null-m34.02.21-NX011D
cm>  get-cplc -v
 => 80 CA 9F 7F 00                                     .....
 (8475 usec [SYS])
 <= 9F 7F 2A 47 90 51 68 47 91 00 78 34 00 31 30 04    ..*G.QhG..x4.10.
    81 33 96 75 18 48 12 31 37 00 00 00 00 0F 20 38    .3.u.H.17..... 8
    34 38 31 33 33 00 00 00 00 00 00 00 00 90 00       48133..........
Status: No Error
  IC Fabricator                      : 4790
  IC Type                            : 5168
  Operating System ID                : 4791
  Operating System release date      : 0078 (18.3.20X0)
  Operating System release level     : 3400
  IC Fabrication Date                : 3130 (10.5.2003)
  IC Serial Number                   : 04813396
  IC Batch Identifier                : 7518
  IC Module Fabricator               : 4812
  IC Module Packaging Date           : 3137 (17.5.2003)
  ICC Manufacturer                   : 0000
  IC Embedding Date                  : 0000
  IC Pre-Personalizer                : 0F20
  IC Pre-Perso. Equipment Date       : 3834
  IC Pre-Perso. Equipment ID         : 38313333
  IC Personalizer                    : 0000
  IC Personalization Date            : 0000
  IC Perso. Equipment ID             : 00000000
cm>  /cap-info "C:\Users\pp\eclipse-workspace\testJcop\bin\com\pryogika\jc\javacard\jc.cap"
CAP file name       :     C:\Users\pp\eclipse-workspace\testJcop\bin\com\pryogika\jc\javacard\jc.cap
CAP file version    :     2.2
Java package name   :     com.pryogika.jc
Internal pkg. name  :     com/pryogika/jc
CAP file components :
    Header.cap (38 Bytes)
    Directory.cap (36 Bytes)
    Import.cap (36 Bytes)
    Applet.cap (22 Bytes)
    Class.cap (17 Bytes)
    Method.cap (82 Bytes)
    StaticField.cap (13 Bytes)
    ConstantPool.cap (41 Bytes)
    RefLocation.cap (16 Bytes)
    Descriptor.cap (90 Bytes)
    Debug.cap (500 Bytes)
Integer support     :     yes
Package version     :     1.0
Package AID         :     "HelloJcop"
Import AIDs         :
    A0000000620101 (javacard.framework) version 1.3
    A00000006202080101 version 1.0
    A0000000620001 (java.lang) version 1.0
Applet AIDs         :
    "HelloJCOpapplet"
Code size to load   :     301  bytes
Code size on card   :
    pkgAID          :     9
    applet AIDs     :     22
    classes         :     17
    methods         :     82
    statics         :     0
    exports         :     0
    -------------------------------------
    overall         :     130  bytes
SHA-256 (Load File data):  FD9E6BDB25A9C863B83C1ECE829F66DBEAA64B38BF5CD4EA953651B110AAD209
SHA-256 (Load File dbg) :  07F25D2E0A470C0AFECCADEF1387986D70C71606E33DD339ED89F4CE1CA84467
SHA-256 (Load File)     :  CE72441BF5B56BB36A4AEBE3F3A96725D0A36926697B9187C3873C3437CBEAA4
SHA-1 (Load File data):     C5EFC5FAAE4FB711E327F5563C48888EA56F81D5
SHA-1 (Load File dbg) :     41264E6C8F21F1C46F2BE7EBCF70CAE00624A277
SHA-1 (Load File)     :     EB826D7E56AFF5AAF4C4CD3FC4FB5850DD81D91F
DAP block(s)        :     none
Load Token(s)       :     none
Install Token(s)    :     none
Delete Token(s)    :     none

cm>  set-key 1/1/DES-ECB/404142434445464748494a4b4c4d4e4f 1/2/DES-ECB/404142434445464748494a4b4c4d4e4f 1/3/DES-ECB/404142434445464748494a4b4c4d4e4f
cm>  init-update
 => 80 50 00 00 08 11 A9 0F 67 2B 22 B6 E1 00          .P......g+"...
 (37691 usec [SYS])
 <= 00 00 31 30 04 81 33 96 75 18 01 02 00 3E 60 17    ..10..3.u....>`.
    08 B3 12 20 F1 76 A5 F1 D0 6D 12 BD 90 00          ... .v...m....
Status: No Error
cm>  ext-auth plain
 => 84 82 00 00 10 3F BE FC 67 E2 96 5E DF A7 85 B1    .....?..g..^....
    9C CF C3 A4 F2                                     .....
 (42458 usec [SYS])
 <= 90 00                                              ..
Status: No Error
cm>  card-info
 => 80 F2 80 00 02 4F 00 00                            .....O..
 (8862 usec [SYS])
 <= 08 A0 00 00 00 03 00 00 00 07 9E 90 00             .............
Status: No Error
 => 80 F2 40 00 02 4F 00 00                            ..@..O..
 (7220 usec [SYS])
 <= 6A 88                                              j.
Status: Reference data not found
 => 80 F2 10 00 02 4F 00 00                            .....O..
 (8838 usec [SYS])
 <= 6A 88                                              j.
Status: Reference data not found

Card Manager AID   :  A000000003000000
Card Manager state :  INITIALIZED

cm>  upload -b 250 "C:\Users\pp\eclipse-workspace\testJcop\bin\com\pryogika\jc\javacard\jc.cap"
 => 80 E6 02 00 16 09 48 65 6C 6C 6F 4A 43 4F 50 08    ......HelloJcop.
    A0 00 00 00 03 00 00 00 00 00 00 00                ............
 (13758 usec [SYS])
 <= 00 90 00                                           ...
Status: No Error
 => 80 E8 00 00 FA C4 82 01 2D 01 00 23 DE CA FF ED    ........-..#....
    02 02 05 00 01 09 48 65 6C 6C 6F 4A 43 4F 50 0F    ......HelloJcop.
    63 6F 6D 2F 70 72 79 6F 67 69 6B 61 2F 6A 63 02    com/pryogika/jc.
    00 21 00 23 00 21 00 13 00 21 00 26 00 0E 00 4F    .!.#.!...!.&...O
    00 0A 00 0D 00 00 00 57 00 00 00 00 00 00 00 00    .......W........
    03 01 00 04 00 21 03 03 01 07 A0 00 00 00 62 01    .....!........b.
    01 00 01 09 A0 00 00 00 62 02 08 01 01 00 01 07    ........b.......
    A0 00 00 00 62 00 01 03 00 13 01 0F 48 65 6C 6C    ....b.......Hell
    6F 4A 43 4F 50 41 70 70 6C 65 74 00 08 06 00 0E    oJCOpapplet.....
    00 00 00 80 03 00 FF 00 07 01 00 00 00 1C 07 00    ................
    4F 00 01 10 18 8C 00 00 7A 05 30 8F 00 01 3D 8C    O.......z.0...=.
    00 02 18 1D 04 41 18 1D 25 8B 00 03 7A 04 23 18    .....A..%...z.#.
    8B 00 04 60 03 7A 19 8B 00 05 2D 1A 04 25 73 00    ...`.z....-..%s.
    1B 00 00 00 00 00 09 12 0A 36 1A 08 23 8D 00 06    .........6..#...
    3B 19 08 07 8B 00 07 70 08 11 6D 00 8D 00 08 7A    ;......p..m....z
    08 00 0A 00 00 00 00 00 00 00 00 00 00 05 00 00    ................
 (25820 usec [SYS])
 <= 6A 80                                              j.
Status: Wrong data
jcshell: Error code: 6a80 (Wrong data)
jcshell: Wrong response APDU: 6A80
cm>  /list-v
Global:____________________________________________
   SESSION.ID=0FA5DF09FC02F2276D5A113D1591EE7C
   cap.applet.aids=48656C6C6F4A434F504170706C6574
   cap.package.aid=48656C6C6F4A434F50
   exec.dir=C:\Users\pp\Desktop
   jcop.v242=false
   last.apdu.executiontime=25.717
   last.apdu.executiontime.unit=msec
   last.executiontime=52.0
   last.executiontime.unit=msec
   last.response.status=6a80
   logfile.list=
cm>  card-info
 => 80 F2 80 00 02 4F 00 00                            .....O..
 (17196 usec [SYS])
 <= 08 A0 00 00 00 03 00 00 00 07 9E 90 00             .............
Status: No Error
 => 80 F2 40 00 02 4F 00 00                            ..@..O..
 (20679 usec [SYS])
 <= 6A 88                                              j.
Status: Reference data not found
 => 80 F2 10 00 02 4F 00 00                            .....O..
 (8299 usec [SYS])
 <= 6A 88                                              j.
Status: Reference data not found

Card Manager AID   :  A000000003000000
Card Manager state :  INITIALIZED

解决方法

否,这些卡不支持int类型。要完全确定,只需向NXP索取数据表或用户手册,如果没有,请直接问他们。

如果您想支持更大的数据类型,那么这当然是可能的,但是您必须自己对其进行编程。在那种情况下,将对象存储在持久性内存中的事实当然不会有任何帮助,而是it can be done

否则,这取决于您需要哪种整数支持。仅加法或减法就很容易在逐个字节的基础上实现。出于加密目的,您可能需要更深入地研究。有时,您还可以使用现有的API(例如DH密钥协议)来执行例如模幂。例如,有一些库可以执行椭圆曲线计算(需要大整数)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。