OwnerPin карты Java - команда APDU - PullRequest
0 голосов
/ 22 сентября 2019

Я начинаю изучать Java-карту, и я читаю пример кода кошелька и в нем OwnerPin.

Вот часть кода, связанная с пин-кодом и егопроверка:

OwnerPIN pin;

private myApplet(byte[] bArray, short bOffset, byte bLength) {

    // It is good programming practice to allocate
    // all the memory that an applet needs during
    // its lifetime inside the constructor
    pin = new OwnerPIN(PIN_TRY_LIMIT, MAX_PIN_SIZE);

    byte iLen = bArray[bOffset]; // aid length
    bOffset = (short) (bOffset + iLen + 1);
    byte cLen = bArray[bOffset]; // info length
    bOffset = (short) (bOffset + cLen + 1);
    byte aLen = bArray[bOffset]; // applet data length

    // The installation parameters contain the PIN
    // initialization value
    pin.update(bArray, (short) (bOffset + 1), aLen);
    register();

}

У меня возникли небольшие проблемы с пониманием этого кода.Я знаю, что это та часть, когда пин-код установлен в соответствии со сценарием установки:

0x80 0xB8 0x00 0x00 0xd 0xb 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x00 0x00 0x00 0x7F;

Я не могу понять, какое значение будет иметь пин-код после установки апплета.

1 Ответ

0 голосов
/ 23 сентября 2019

Показанного кода недостаточно, чтобы фактически что-то сказать о данном APDU.

Этот пример кода, хотя:

byte iLen = bArray[bOffset]; // aid length
bOffset = (short) (bOffset + iLen + 1);
byte cLen = bArray[bOffset]; // info length
bOffset = (short) (bOffset + cLen + 1);
byte aLen = bArray[bOffset]; // applet data length

- это код по умолчанию для метода installation апплета,поэтому может быть вызвано командой INSTALL Глобальной платформы.Однако данный APDU вообще не является действительной глобальной платформой.

Из вашего кода мы не можем увидеть точку входа APDU в методе process, но, вероятно, он работает следующим образом: данные являютсяLV-закодированный список (длина / значение), поэтому сначала вы анализируете байт длины для помощи, сохраняете длину iLen и увеличиваете bOffset до следующей пары LV.в конце значение и длина данных апплета берутся и передаются в pin.update.

В данном APDU PIN-код отсутствует, попробуйте проанализировать содержимое и длину для помощи и информации ивы увидите, что байты данных апплета отсутствуют.

...