LINUX.ORG.RU

Криптография::Win::С++: Добавление открытого ключа ЭЦП в локальное хранилище

 ,


0

1

Всем привет, как ваши дела? Давно тут не был.

Вопрос такого плана: взялся было автоматизировать подпись для работы в приложении, но столкнулся с непониманием и загадочностью wincrypt api. Использую ЭЦП SDK КриптоПро. Хочу, имея контейнер на флешке, добавлять только открытый ключ в список сертификатов «Личное» на локальном компе, чтобы подписывать документы только тогда, когда вставлена флешка (возможно, могу ошибаться, что в таком случае добавляется только открытый ключ). Во всех описаниях доки винды делают, как мне показалось, все с нуля, и до меня не доходит, какой порядок действий нужен в моем случае, когда у меня уже есть токен.

Вот пример, который, как мне кажется должен мне подойти: https://docs.microsoft.com/en-us/windows/win32/seccrypto/example-c-program-getting-and-setting-certificate-properties

Но где нужно указать путь до папки с контейнером…

Нашел еще один пример на форуме у КриптоПро https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=14724

Но тот же вопрос, плюс - зачем копировать или создавать новый контейнер.

Я вижу такой порядок действий:

  1. Проверить, что сертификат на флешке мне подходит, и получить его «хендл» для дальнейшей работы с ним (это не знаю как)
  2. Открыть хранилище CertOpenSystemStore(0, _T(«MY»));
  3. Создать контекст сертификата, в который потом будет положено что-то вроде ссылки на то, что на флешке CertCreateCertificateContext
  4. Откопать его имя и сделать ассоциацию его свойств с контекстом, который был в предыдущем шаге 3. CertSetCertificateContextProperty
  5. Скопировать содержимое контекста в локальное хранилище CertAddCertificateContextToStore

С какими параметрами это нужно делать - не совсем понятно.

Если у кого-то в этом есть опыт, подскажите, пожалуйста, что нужно делать, и, желательно названия этих виндовских функций., лучше всего, конечно, какой-то пример по мою тему…


Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.