Здравствуйте.
Собираю библиотеку mskey.so из исходников.
Это та, что находится внутри cprocsp-rdr-mskey-* в составе поставки КриптоПро (CryptoPro CSP ver. 4.0.0.0.9708).
Если я собираю mskey.so в rdk-дереве (/opt/cprocsp/src/rdk/mskey) внутри CryptoPro CSP ver. 3.6.1.0.7777 то всё собирается, устанавливается, и работает.
Причем работает как с CSP 3, так и с CSP 4 (и это понятно, т.к. библиотеку носителя используют для утилитарных функций: "считать из файла", "записать в файл", и от (новых) алгоритмов криптопровайдера она не зависит; важно только одно - хватит ли места для размещения контейнера на носителе, но с этим проблем нет).
Если я собираю mskey.so в rdk-дереве (/opt/cprocsp/src/rdk/mskey) внутри CryptoPro CSP ver. 4.0.0.0.9708 то всё собирается, устанавливается (библиотека успешно загружается в память), но не работает:
Сразу после установки mskey.so пытаюсь скорректировать конфигурацию, cpconfig вываливается:
Цитата:
cpconfig -hardware media -add MSKEY -name 'MSkey'
Ошибка сегментирования
И (наверное, как следствие):
Цитата:
lanin@debian1:~$ csptest -enum -info -type PP_ENUMREADERS -flags 32
CSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX.
CryptAcquireContext succeeded.HCRYPTPROV: 22048179
GetProvParam(...PP_ENUMREADERS...) until it returns false
Flags: 0x20
Len Byte NickName/Name/Media
___________________________________
Цитата:
lanin@debian1:~$ csptest -keyset -enum_containers -unique -cont "\\\\.\\OMNIKEY AG CardMan 3121 00 00"
CSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX.
Если mskey.so собрана в rdk-дереве CryptoPro CSP ver. 3.6.1.0.7777, то всё работает:
Цитата:
cpconfig -hardware media -add MSKEY -name 'MSkey'
Adding new media:
Nick name: MSKEY
Name device: MSkey
Succeeded, code:0x0
Цитата:
lanin@debian1:~$ csptest -enum -info -type PP_ENUMREADERS -flags 32
CSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX.
CryptAcquireContext succeeded.HCRYPTPROV: 34315699
GetProvParam(...PP_ENUMREADERS...) until it returns false
Flags: 0x20
Len Byte NickName/Name/Media
___________________________________
0x012a 0x72 OMNIKEY AG CardMan 3121 00 00
All PC/SC readers
MSkey_DE8E8D29
0x012a 0x58 FLASH
FLASH
NO_MEDIA
0x012a 0x18 HDIMAGE
��������� ������� �� ������� �����
NO_UNIQUE
Cycle exit when getting data. 3 items found. Level completed without problems.
Total: SYS: 0,010 sec USR: 0,100 sec UTC: 0,480 sec
[ErrorCode: 0x00000000]
Цитата:
lanin@debian1:~$ csptest -keyset -enum_containers -unique -cont "\\\\.\\OMNIKEY AG CardMan 3121 00 00"
CSP (Type:80) v4.0.9006 KC1 Release Ver:4.0.9708 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 34938291
tc_mskey_111 |SCARD\MSkey_DE8E8D29\A\1C41
tc_mskey_001 |SCARD\MSkey_DE8E8D29\B\4C11
tc_mskey_f22_001 |SCARD\MSkey_DE8E8D29\C\F2BD
OK.
Total: SYS: 0,000 sec USR: 0,110 sec UTC: 0,960 sec
[ErrorCode: 0x00000000]
Библиотеки mskey.so, собранные в разных rdk-деревьях, отличаются тем, что в той, что не работает, отсутствуют символы catopen ( тот, что в nl_types.h ) и csp_get_paths ( тот, что в /opt/cprocsp/include/common.h: extern const TSupCSPPaths * csp_get_paths(void); ).
Опции компилятора и линкера в Makefile-ах rdk CSP 3 и CSP 4 не отличаются (практически).
Помогите разобраться, пожалуйста.
--
С уважением,
программист ООО "Мультисофт".
Отредактировано пользователем 7 декабря 2016 г. 15:16:05(UTC)
| Причина: расподробил отличия сошников