Перезапись RSA сертификата

Появилась задача
На носителе ЭЦП находится сам ЭЦП и RSA сертификат, необходимо написать скрипт или программу, которая бы могла перезаписать перезаписать RSA сертификат, без затрагивания ЭЦП ключа

Я в этой теме вообще профан, только начал включаться в эту тему, не могли бы вы подсказать в какую сторону капать или может есть готовые решения

Re: Перезапись RSA сертификата

Добрый вечер, GeoIrb.

На сколько мне известно, готовых решений для Вашей задачи нет. Вы можете написать программу для перезаписи RSA сертификата. Для этого смотрите в сторону нашего SDK (https://www.rutoken.ru/developers/sdk/). Там есть примеры по работе с устройством для разных языков программирования.

(2018-08-03 14:46:57 отредактировано GeoIrb)

Re: Перезапись RSA сертификата

Здравствуйте, Владимир Салыкин!
Спасибо за совет, скачал SDK но при попытке запустить хотя бы одну из функций написанных на языке С++ вылезает куча ошибок

"DeleteCert.exe" (Win32). Загружено "D:\Geo\sdk\pkicore\cpp\samples\out\windows-x86-debug\DeleteCert.exe". Символы загружены.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\ntdll.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\kernel32.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\KernelBase.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "D:\Geo\sdk\pkicore\cpp\samples\out\windows-x86-debug\pki-core.dll". Сборка модуля выполнена без символов.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\crypt32.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\msvcrt.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\msasn1.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\user32.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\gdi32.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\lpk.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\usp10.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\advapi32.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\sechost.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\rpcrt4.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\sspicli.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\cryptbase.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\ws2_32.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\nsi.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\imm32.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\msctf.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\api-ms-win-core-synch-l1-2-0.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Program Files (x86)\Common Files\Crypto Pro\AppCompat\cpcrypt.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\psapi.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Program Files (x86)\Common Files\Crypto Pro\AppCompat\detoured.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "D:\Geo\sdk\pkicore\cpp\samples\out\windows-x86-debug\rtpkcs11ecp.dll". Сборка модуля выполнена без символов.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\WinSCard.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\hid.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\setupapi.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\cfgmgr32.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\oleaut32.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\ole32.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\devobj.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\shell32.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\shlwapi.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\winsta.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\wtsapi32.dll". Невозможно найти или открыть PDB-файл.
"DeleteCert.exe" (Win32). Загружено "C:\Windows\SysWOW64\wintrust.dll". Невозможно найти или открыть PDB-файл.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: unsigned long по адресу памяти 0x0033F55C.
Вызвано исключение по адресу 0x7607C54F в DeleteCert.exe: исключение Microsoft C++: std::runtime_error по адресу памяти 0x0033FB64.
Вызвано исключение по адресу 0x7607C54F (KernelBase.dll) в DeleteCert.exe: 0x0000071A: The remote procedure call was canceled, or if a call time-out was specified, the call timed out.
"DeleteCert.exe" (Win32). Выгружено "D:\Geo\sdk\pkicore\cpp\samples\out\windows-x86-debug\rtpkcs11ecp.dll"
"DeleteCert.exe" (Win32). Выгружено "C:\Windows\SysWOW64\shell32.dll"
"DeleteCert.exe" (Win32). Выгружено "C:\Windows\SysWOW64\shlwapi.dll"
"DeleteCert.exe" (Win32). Выгружено "C:\Windows\SysWOW64\setupapi.dll"
"DeleteCert.exe" (Win32). Выгружено "C:\Windows\SysWOW64\devobj.dll"
"DeleteCert.exe" (Win32). Выгружено "C:\Windows\SysWOW64\oleaut32.dll"
"DeleteCert.exe" (Win32). Выгружено "C:\Windows\SysWOW64\ole32.dll"
"DeleteCert.exe" (Win32). Выгружено "C:\Windows\SysWOW64\cfgmgr32.dll"
"DeleteCert.exe" (Win32). Выгружено "C:\Windows\SysWOW64\hid.dll"
"DeleteCert.exe" (Win32). Выгружено "C:\Windows\SysWOW64\WinSCard.dll"
Поток 0x2844 завершился с кодом 1 (0x1).
Поток 0x2848 завершился с кодом 1 (0x1).
Программа "[10172] DeleteCert.exe" завершилась с кодом 1 (0x1).

При попытки уйти с VS на QtCreator, но у части функций в файле pki-core-cpp.h не нашел определения, например у функции

int rt_pc_free_memory(void* pointer);

Можете, пожалуйста, помочь с этим

Re: Перезапись RSA сертификата

Добрый день, GeoIrb.

Давайте для начала с Visaul Studio разберемся.

  • Какая у Вас версия?

  • Вы взяли последнюю версию SDK с нашего сайта?

  • Какое устройство Вы используете для тестирования?

Re: Перезапись RSA сертификата

Добрый день!

1. VS2017

2. Скачал ту что лежит по https://www.rutoken.ru/developers/sdk/

3. До тестирования не дошло, так как ( возможно ошибаюсь ) не собирается проект

Re: Перезапись RSA сертификата

Владимир Салыкин, попробовал библиотеку написанную на си, там все собралось, но не подгружается библиотека


module = LoadLibrary(PKCS11_LIBRARY_NAME);  // или PKCS11ECP_LIBRARY_NAME
CHECK(" LoadLibrary", module != NULL, exit);

пробовал и PKCS11ECP_LIBRARY_NAME, ответ приходит

LoadLibrary -> Failed

Re: Перезапись RSA сертификата

Добрый день, GeoIrb.

Странная ситуация. А сама библиотека по нужному пути у Вас лежит?
Только что проверили DeleteCert и примеры из PKCS#11 и они отрабатывают без ошибок.

Re: Перезапись RSA сертификата

GeoIrb, помощь еще требуется? Или удалось разобраться?

Re: Перезапись RSA сертификата

Владимир Салыкин, Хмм, буду разбираться, мб что то не так подключил, спасибо за помощь