Поддерживают ли карты серии JCOP J3A тип данных int?

Поддерживает ли JCOP/J3A081 тип данных int?

Я использую последние инструменты eclipse JCOP для разработки апплета java-карты. Мне нужно хранить большие целочисленные значения на карте, поэтому я использовал тип данных INTEGER (int) для баланса в своем апплете. он компилируется без каких-либо ошибок, но получает ошибку 6A80 при загрузке файла CAP на карты JCOP J3A081. Я пробовал все комбинации библиотеки GP 2.1.1, GP 2.2.1, JDK 2.2.2, JDK 3.0.4, но получаю ту же ошибку.

Поддерживаются ли переменные типа данных int и библиотека JCint картами серии J3A/J2A? если да как решить вопрос?

Исходный код апплета:

Инструменты JCOP

Примечание: если я удалю переменную типа данных 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                            [email protected]..
 (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                            [email protected]..
 (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


person PPS    schedule 11.09.2020    source источник


Ответы (1)


Нет, эти карты не поддерживают тип int. Для полной уверенности просто попросите техпаспорт или руководство пользователя у NXP, а если его там нет, спросите у них напрямую.

Если вы хотите поддерживать большие типы данных, то это, конечно, возможно, но вам придется программировать это самостоятельно. В этом случае тот факт, что объекты хранятся в постоянной памяти, конечно, не поможет, но это можно сделать .

В противном случае: это зависит от того, какая целочисленная поддержка вам требуется. Просто сложение или вычитание очень легко реализовать самостоятельно на побайтовой основе. Для криптографических целей вам, возможно, придется заглянуть намного глубже. Иногда вы также можете использовать существующие API, такие как соглашение о ключе DH, для выполнения, например. модульное возведение в степень. Существуют, например, библиотеки для выполнения расчетов эллиптических кривых (для которых требуется большое целое число).

person Maarten Bodewes    schedule 16.09.2020
comment
Спасибо Maarten Bodewes, я попробую ваши предложения. - person PPS; 21.09.2020