Что такое CAN и как его обеспечить? - PullRequest
1 голос
/ 16 октября 2019

Я работаю над польской электронной идентификационной карточкой, которая защищена кодом CAN. Этот код необходим для разблокировки карты и возможности перечисления токенов.

Я не могу найти информацию об этом.

При использовании официального приложения https://www.gov.pl/web/e-dowod после ввода карты вам будет предложено ввести этот номер.

Согласно журналам, вызывается загадочная функция C_SetCAN из e-dowod-pkcs11-64.so. Это не задокументировано в http://docs.oasis -open.org / pkcs11 / pkcs11-base / v2.40 / pkcs11-base-v2.40.html , а также отсутствует в https://github.com/OpenSC/OpenSC/blob/master/src/pkcs11/pkcs11-global.c#L320, гдеэто должно быть в соответствии с журналами

0x7f9bca95c700 23:18:32.251 [opensc-pkcs11] pkcs11-global.c:320:C_SetCAN: C_SetCAN(0x5)
0x7f9bca95c700 23:18:32.251 [opensc-pkcs11] pkcs11-global.c:329:C_SetCAN: C_SetCAN() get slot rv 0

Это заставляет меня думать, что это может быть какое-то пользовательское расширение, но поскольку opensc находится на LGPL, его источники также должны быть предоставлены, верно?

Когда я пытался разбить его на gdb, но я попал в:

#0  0x00007fffeadd5b70 in C_SetCAN () from /opt/e-dowod/e-dowod-pkcs11-64.so
#1  0x000000000041d49c in ?? ()
#2  0x0000000000418907 in ?? ()
#3  0x00000000004199bc in ?? ()
#4  0x000000000041ed58 in ?? ()
#5  0x00007ffff686e0e1 in QObject::event(QEvent*) () from /opt/e-dowod/./libQt5Core.so.5
#6  0x00007ffff7691e2c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /opt/e-dowod/./libQt5Widgets.so.5

Почему нет информации о вызывающем абоненте и аргументах?

Я также пытался использовать https://github.com/OpenSC/OpenSC/blob/master/src/tools/npa-tool.c, который, кажется, обладает желаемой функциональностью, но вполне вероятно, но безуспешно.

P:91478; T:0x140627504822080 17:59:48.916 [npa-tool] sm-eac.c:643:eac_gen_auth_1_encrypted_nonce: 
General authenticate (Encrypted Nonce) response data (20 bytes):
00 02 7C 12 80 10 D1 0A 98 E5 3B DC 7C F5 DC FA ..|.......;.|...
58 60 24 BA                                     X`$.
P:91478; T:0x140627504822080 17:59:48.917 [npa-tool] sm-eac.c:647:eac_gen_auth_1_encrypted_nonce: Could not parse general authenticate response data.
P:91478; T:0x140627504822080 17:59:48.917 [npa-tool] sm-eac.c:648:eac_gen_auth_1_encrypted_nonce: error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag
P:91478; T:0x140627504822080 17:59:48.917 [npa-tool] sm-eac.c:648:eac_gen_auth_1_encrypted_nonce: error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error
P:91478; T:0x140627504822080 17:59:48.917 [npa-tool] sm-eac.c:648:eac_gen_auth_1_encrypted_nonce: error:0D08303A:asn1 encoding routines:asn1_template_noexp_d2i:nested asn1 error
P:91478; T:0x140627504822080 17:59:48.917 [npa-tool] sm-eac.c:1176:perform_pace: Could not get encrypted nonce from card (General Authenticate step 1 failed).
P:91478; T:0x140627504822080 17:59:48.917 [npa-tool] sm-eac.c:1364:perform_pace: returning with: -1400 (Internal error)

1 Ответ

0 голосов
/ 21 октября 2019

Мне кажется, что это может быть какое-то нестандартное расширение, но поскольку opensc находится на LGPL, его источники также должны быть предоставлены, верно?

Да, вы правы, чтоC_SetCAN похоже на метод расширения, определяемый поставщиком. Если распространяемая вашим правительством библиотека PKCS # 11 основана на лицензионном коде OpenSC LGPL 2.1 , то они должны предоставить исходный код со всеми изменениями. ИМО все, что вам нужно сделать, это попросить об этом. А ты?

...