Не удалось сгенерировать криптограмму приложения

Я пытаюсь смоделировать бесконтактную транзакцию mastercard, используя Raspberry Pi с чипом PN532 и умными часами. Ответ от SFI2 R2 содержит следующие данные CDOL1:

9F02069F03069F1A0295055F2A029A039C019F37049F35019F45029F4C089F34039F1D089F15029F4E14

что переводится как:

TAG  LENGTH
9F02 06 
9F03 06
9F1A 02 
95   05 
5F2A 02 
9A   03 
9C   01 
9F37 04
9F35 01 
9F45 02 
9F4C 08
9F34 03 
9F1D 08 
9F15 02 
9F4E 14

Я создал команду Get Application Cryptogram, следуя этим спецификациям:

  byte_t get_app_crypto[] = {
    0x80, 0xAE, // CLA INS
    0x80, 0x00, // P1 P2
    0x43, // length
    0x00, 0x00, 0x00, 0x00, 0x01, 0x00, // amount
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // other amount
    0x06, 0x42, // terminal country 
    0x00, 0x00, 0x00, 0x00, 0x00, // tvr terminal
    0x09, 0x46, // currency code
    0x20, 0x08, 0x23, // transaction date
    0x00, // transaction type
    0x11, 0x22, 0x33, 0x44, // UN
    0x22, // terminal type
    0x00, 0x00,// data auth code
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // icc dynamic
    0x00, 0x00, 0x00, // cvm results
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  // 8
    0x54, 0x11, // 2 merchant category
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 14 merchant name or location
    0x00, // LE
    };

но ответ от часов всегда 6700 (неправильная длина).

Любая помощь будет оценена по достоинству.


person Madalina Streche    schedule 23.08.2020    source источник


Ответы (1)


AFAIR, ваш вопрос выглядит как проблема, которая уже была решена на SO. В общем, хорошо поискать.

Возвращаясь к вашей проблеме, вы интерпретировали длину 9F4E как 14 десятичных знаков, но это просто 0x14. Вам не хватает шести байтов.

person Michal Gluchowski    schedule 23.08.2020
comment
Я искал проблему, но как-то упустил тот факт, что неверно истолковал длину. Большое спасибо за ответ, теперь все работает. - person Madalina Streche; 24.08.2020