Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline seevve  
#1 Оставлено : 16 ноября 2021 г. 14:33:30(UTC)
seevve

Статус: Участник

Группы: Участники
Зарегистрирован: 08.11.2021(UTC)
Сообщений: 10
Российская Федерация
Откуда: Москва

Добрый день. Может плохо ищу, а есть ли пример работы с Rutoken/esmart пример работы? Или статейка какая-то?
Есть задача получать электронную подпись на ключе с токена.

Куда хотя бы смотреть? какие библитеки заголовки?

Про pkcs11 немного в курсе. Дополню вопрос. Писать на либах pkcs11 от производителя, или от криптвс есть каакя-то обёртка надстройка для работы с ключевыми носителями?

С уважением.

Отредактировано пользователем 16 ноября 2021 г. 14:41:32(UTC)  | Причина: Не указана

Offline Андрей Русев  
#2 Оставлено : 25 ноября 2021 г. 18:01:12(UTC)
Андрей Русев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 931

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 254 раз в 195 постах
Здравствуйте.
КриптоПро CSP предоставляет единый интерфейс (CryptoAPI) для работы с ключами на любых носителях. Выбор конкретных устройств обычно происходит в диалогах, которые провайдер показывает при необходимости. По сути это выбор имён в некотором формате: https://cpdn.cryptopro.r...LPSZ_CONTAINER_NAME.html
Лучше начинать знакомство с помощью прикладных программ. Для Linux есть хорошие описания у партнёров:
https://wiki.astralinux....e.action?pageId=32833902
https://www.altlinux.org...%D0%BE%D0%9F%D1%80%D0%BE
К написанию кода лучше и не переходить, а воспользоваться приложениями из состава: либо графическим (cptools/Инструменты КриптоПро), либо консольными (cryptcp, csptest).
Официальная техподдержка. Официальная база знаний.
Offline seevve  
#3 Оставлено : 25 ноября 2021 г. 19:09:29(UTC)
seevve

Статус: Участник

Группы: Участники
Зарегистрирован: 08.11.2021(UTC)
Сообщений: 10
Российская Федерация
Откуда: Москва

спасибо за ссылки, но боюсь это не то. Мне всё таки про встраивание задача. И если бы задача не касалась росийских алгоритмов и генерации CMS с подписью мне бы исходников pkcs11-tool хватил вполне, для "творческого" осмысления и надёргать код. Плюс на машине где этот код будет выпоняться, вот нет уверенности что будет стоять полноценный крипто про, хватило бы и pkcs11 библиотек от вендоров м/или крипто про для выполнения задачи: "генерации подписанного CMS на неизвлекаемом ключе".

Такой вопрос для работы через библиотеку крипто про с rutoken/esmart через pkcs11 на машине не обязательно должны быть установлены библиотеки pkcs11 от вендоров? Тут прельщает, что будет один код для работы с разными токенами, ибо работа с CMS у рутокена и esmart сделана по разному, хоть и в рамках pkcs11.
А что с точки зрения лицензии такое использование только pkcs11 библиотек от крипто про?

Вероятно задача может быть решена скриптом на базе утилит (как вы написали cryptcp, csptest) и взовом оного через popen() я о таком как-то не подумал сразу, но это явно требует установки крипто про и полноценной лицензии. но и тут я бы предпочёл обойтись более стандартизованным (если бы его хватало)
pkcs11-tool --module /opt/cprocsp/lib/amd64/libcppkcs11...
Offline Андрей Русев  
#4 Оставлено : 26 ноября 2021 г. 12:48:17(UTC)
Андрей Русев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 931

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 254 раз в 195 постах
Обычно там, где нужен ГОСТ, нужны сертифицированные решения, так что зачастую pkcs11-интерфейсом и pkcs11-tool не обойтись. По тем же причинам при встраивании лучше использовать наши приложения - можно сэкономить на проверке корректности встраивания.

Наличие pkcs11-модулей от вендоров для работы не требуется: нужны только pcsc+ccid-драйвер (обычно все устройства поддерживаются из коробки) + наш модуль поддержки типа cprocsp-rdr-rutoken и cprocsp-rdr-esmart + пакет cprocsp-rdr-pcsc - они в комплекте с дистрибутивом КриптоПро CSP. Для Рутокен в режиме ФКН также нужен cprocsp-rdr-cpfkc.

Лицензия не потребуется для создания контейнера с ключом и запроса на сертификат. Но потребуется в дальнейшем, чтобы делать подпись.

Если-таки будете программировать: https://support.cryptopr...7/0/sbork-primerov-n-nix
Но CryptoAPI - большой и сложный интерфейс, с наскоку корректно решать в нём задачи будет тяжело.
Официальная техподдержка. Официальная база знаний.
Offline seevve  
#5 Оставлено : 26 ноября 2021 г. 13:39:26(UTC)
seevve

Статус: Участник

Группы: Участники
Зарегистрирован: 08.11.2021(UTC)
Сообщений: 10
Российская Федерация
Откуда: Москва

Примеры я конечно уже посмотрел и функционал связанный с шифрованием и проверкой подписи на CSP там нашёл и реализовал у себя, а вот примеров работы через pkcs11 там нет.
Ну по крайней мере по C_Login, C_Init, pkcs11 ничего не grep-ается.
Offline Андрей Русев  
#6 Оставлено : 26 ноября 2021 г. 15:00:33(UTC)
Андрей Русев

Статус: Сотрудник

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 931

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 254 раз в 195 постах
Примеров для pkcs11 у нас нет, но если вы уже используете CryptoAPI из примеров, то вам это и не нужно.
Официальная техподдержка. Официальная база знаний.
Offline seevve  
#7 Оставлено : 21 декабря 2021 г. 15:32:01(UTC)
seevve

Статус: Участник

Группы: Участники
Зарегистрирован: 08.11.2021(UTC)
Сообщений: 10
Российская Федерация
Откуда: Москва

.
Удалил старую версию сообщения, перегенерировал ключи, через pkcs11, появились на токене.

Как то процесс пошёл, удивительно не понимаю, как получаю список ключей и объектов на токене без ввода pin-а (в терминах pkcs11). при оспользовании крипто про.

Отредактировано пользователем 21 декабря 2021 г. 20:13:19(UTC)  | Причина: Не указана

Offline seevve  
#8 Оставлено : 22 декабря 2021 г. 20:54:49(UTC)
seevve

Статус: Участник

Группы: Участники
Зарегистрирован: 08.11.2021(UTC)
Сообщений: 10
Российская Федерация
Откуда: Москва

Андрей Русев. Реализовал вроде бы весь необходимый функционал через CryptoAPI, спасибо за указание в нужном направлении.
По результатам есть несколько вопросов.

1. При обращении (выполнении подписи на контейнере, который находится на rutoken), вываливается окно для ввода PIN-а на GTK от крипто про. Ну не критично, но нет ли возможности передать pin скажем внутрь CryptoAPI сделав ввод параметра в своём софте?
2. В сгенерированная DetachedCms

Цитата:

> dumpasn1 <sign.bin>
Warning: Further data follows ASN.1 data at position 1426.
#и выглядит как-то так
> xxd sign.bin
00000570: dc3e 301c 06d8 cb97 0b8f 3f9d e3de ea87 .>0.......?.....
00000580: 03ff 5759 384a 91e3 9d76 1861 2bbc 8a42 ..WY8J...v.a+..B
00000590: 129b 0000 0000 0000 0000 0000 0000 0000 ................
000005a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
000005b0: 0000 0000 0000 0000 0000 0000 0000 00 ...............

реальный размер подписи меньше, чем выделилось памяти и добилось нулями.

Подпись сделана по мотивам DoSign() из CSP/SignUtility/SignUtility.c.
теже параметры, только данные извне ну и свой серт с рутокена.
Offline two_oceans  
#9 Оставлено : 24 декабря 2021 г. 4:34:22(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,536
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 105 раз
Поблагодарили: 375 раз в 354 постах
Попробую ответить. 1) Конечно возможно, правда способ не очевиден. После получения hProv можно задать его параметры, в том числе пин-код. Немного неудобно что нужно знать ключ подписи или ключ обмена - для них разные константы указания пин-кода. В некоторых случаях (сертификат из хранилища + определенный носитель) бывает "побочный эффект" - пин-код неявно запоминается в хранилище сертификатов (мимо системы сохранения пин-кодов КриптоПро).

2) При получении результата как правло функция вызывается 2 раза (первый с пустым параметром выходного буфера, потом выделяется буфер, потом второй вызов функции с новым буфером). Так вот, первый раз некоторые функции возвращают максимальный теоретически возможный размер, а во второй раз - реальный для конкретных данных. Память нужно выделять по первому числу (получается с припуском), а записывать в файл по второму числу (сколько реально вышло). Если же записать весь выделенный буфер, то в конце буфера/файла возможно появление "лишних данных".

Отредактировано пользователем 24 декабря 2021 г. 5:06:56(UTC)  | Причина: Не указана

Offline seevve  
#10 Оставлено : 24 декабря 2021 г. 13:51:28(UTC)
seevve

Статус: Участник

Группы: Участники
Зарегистрирован: 08.11.2021(UTC)
Сообщений: 10
Российская Федерация
Откуда: Москва

two_oceans, спасибо огромное с пунктом 2 помогло. (давно не писал, на C, но в тех API с которыми сталкивался обычно первый вызов возвращал везде нужный размер, даже не подумл смотреть на размер во втором вызове).

А во по пункту 1 вопрос,
я так понимаю речь о CryptSetProvParam с параметром PP_SIGNATURE_PIN, однако в том месте где я делаю подпись у меня hProv нет, ка нет его ни в примерах кирпто про (SignUtility) и нет в этом примере от MS. Фактически есть только PCCERT_CONTEXT pCertCtx. Можете подсказать как увязать результат CryptAcquireContext, с сертификатом? Или достаточно посто существования контекста с в момент вызова CryptSignMessage (тут я тоже не увидел как HCRYPTPROV можно было бы передать).
Offline two_oceans  
#11 Оставлено : 27 декабря 2021 г. 6:39:54(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,536
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 105 раз
Поблагодарили: 375 раз в 354 постах
Автор: seevve Перейти к цитате
обычно первый вызов возвращал везде нужный размер
Действительно, чаще бывает так, но с функциями криптографии есть местами разночтения. Причем такие примечания к функциям указаны самой Майкрософт, то есть сложно грешить на автора криптопровайдера. Добавлю, что вышесказанное справедливо, когда возвращаются двоичные данные (например, хэш или двоичное значение параметра).

Если та же функция возвращает текстовое значение параметра, то второй раз значение может быть не измениться, что означает "не установлено". Подробнее: записали на входе туда размер всего буфера, на выходе функции ничего не поменялось, но где-то в середине буфера функция записала символ 0, который символизирует конец строки.

Если потом нужна длина значащих данных, этот 0 приходится выискивать. Конечно есть соответствующая функция нахождения длины в VC рантаймах или можно просто склеивать строки, не зная размера. Однако это все равно риск - как бы за буфер не вылететь в процессе склейки/установления длины, если 0 в буфере все-таки нет. Просто для профилактики полезно записывание 0 в начало текстового буфера перед вызовом и 0 в конец текстового буфера после возврата из функции.
Автор: seevve Перейти к цитате
речь о CryptSetProvParam с параметром PP_SIGNATURE_PIN
Да
Автор: seevve Перейти к цитате
Фактически есть только PCCERT_CONTEXT pCertCtx. Можете подсказать как увязать результат CryptAcquireContext, с сертификатом? Или достаточно просто существования контекста с в момент вызова CryptSignMessage (тут я тоже не увидел как HCRYPTPROV можно было бы передать).
Действительно, тогда проблемка - функции разного уровня, между ними будет сложно увязать передачу параметра. Навскидку мне приходит в голову либо использование как раз того эффекта запоминания в хранилище сертификатов. Либо даже хранилище не нужно: просто установка ссылки на контейнер на токене в контекст сертификата каждый раз, раз уж идет речь о работе с токенами. Там кажется были настройки кэширования (вот только я не помню кэширования пин-кода или хэндла HCRYPTPROV).

Offline Grey  
#12 Оставлено : 27 декабря 2021 г. 10:29:33(UTC)
Grey

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 12.08.2013(UTC)
Сообщений: 777
Мужчина
Российская Федерация
Откуда: Москва

Сказал «Спасибо»: 5 раз
Поблагодарили: 182 раз в 149 постах
Автор: two_oceans Перейти к цитате
Действительно, тогда проблемка - функции разного уровня, между ними будет сложно увязать передачу параметра. Навскидку мне приходит в голову либо использование как раз того эффекта запоминания в хранилище сертификатов. Либо даже хранилище не нужно: просто установка ссылки на контейнер на токене в контекст сертификата каждый раз, раз уж идет речь о работе с токенами. Там кажется были настройки кэширования (вот только я не помню кэширования пин-кода или хэндла HCRYPTPROV).

Добрый день.
Можно сначала вызвать CryptAcquireCertificatePrivateKey (с флагами CRYPT_ACQUIRE_SILENT_FLAG | CRYPT_ACQUIRE_CACHE_FLAG) - он по PCCERT_CONTEXT вернет HCRYPTPROV, а в этот хэндл установить ПИН через PP_SIGNATURE_PIN.
Установка CRYPT_ACQUIRE_CACHE_FLAG упрощает работу с функцией: не нужно освобождать полученный хэндл - он сам закроется при освобождении PCCERT_CONTEXT.

После этого вызовы CryptSignMessage должны подхватывать пароль из кэша.
С уважением,
Сергей Агафьин,
Начальник отдела разработки ФКН.
Техническую поддержку оказываем здесь.
Наша база знаний.
thanks 2 пользователей поблагодарили Grey за этот пост.
Андрей * оставлено 27.12.2021(UTC), two_oceans оставлено 27.12.2021(UTC)
Offline seevve  
#13 Оставлено : 20 января 2022 г. 18:22:30(UTC)
seevve

Статус: Участник

Группы: Участники
Зарегистрирован: 08.11.2021(UTC)
Сообщений: 10
Российская Федерация
Откуда: Москва

Ещё один вопрос. А есть способ список контейнеров (ключей) только с USB токенов (rutoken/esmart/jacarta), в идеале ГОСТ2012 связанные с сертификатами подписи.
Есть ощущение, что можно это сделать параметрами функции CryptAcquireContext, но не очень понятно как именно.
С полученным криптопровайдеролм я потом вызываю CryptGetProvParam(hCryptProv, PP_ENUMCONTAINERS,...) для перебора всех ключей. (получения списка всех ключей с сертификатами).
В предположении что изначально неизвестно какой токен воткнут (если не воткнут), список должен быть пустым.
Offline two_oceans  
#14 Оставлено : 21 января 2022 г. 6:23:47(UTC)
two_oceans

Статус: Эксперт

Группы: Участники
Зарегистрирован: 05.03.2015(UTC)
Сообщений: 1,536
Российская Федерация
Откуда: Иркутская область

Сказал(а) «Спасибо»: 105 раз
Поблагодарили: 375 раз в 354 постах
Добрый день.
Всем будет проще если создавать новые темы под новые вопросы.
Не понял в чем затруднение, если Вы уже получаете экземпляр криптопровайдера и перечисляете контейнеры. Через один вызов CryptAcquireContext я тоже не знаю как такого добиться. Для перечисления контейнеров можно взять экземпляр криптопровайдера без ключей (не указывать конкретное имя контейнера и использовать флаг VERIFY_CONTEXT). Далее по перечисленным именам сориентироваться какие из них токены.

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

Отредактировано пользователем 21 января 2022 г. 6:25:50(UTC)  | Причина: Не указана

Offline Grey  
#15 Оставлено : 21 января 2022 г. 10:25:26(UTC)
Grey

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 12.08.2013(UTC)
Сообщений: 777
Мужчина
Российская Федерация
Откуда: Москва

Сказал «Спасибо»: 5 раз
Поблагодарили: 182 раз в 149 постах
Автор: seevve Перейти к цитате
Ещё один вопрос. А есть способ список контейнеров (ключей) только с USB токенов (rutoken/esmart/jacarta), в идеале ГОСТ2012 связанные с сертификатами подписи.
Есть ощущение, что можно это сделать параметрами функции CryptAcquireContext, но не очень понятно как именно.
С полученным криптопровайдеролм я потом вызываю CryptGetProvParam(hCryptProv, PP_ENUMCONTAINERS,...) для перебора всех ключей. (получения списка всех ключей с сертификатами).
В предположении что изначально неизвестно какой токен воткнут (если не воткнут), список должен быть пустым.


Добрый день.
Есть два варианта. У каждого свои недостатки:
1) Перечислить сертификаты в хранилище и выбрать те, у которых есть ссылка на закрытый ключ. Ссылка включает в себя имя контейнера и имя провайдера, которым контейнер можно открыть.
Плюсы: вы сможете получить список контейнеров, даже если токен не вставлен.
Минусы: сертификаты в хранилище обычного никто не чистит, так что на пользовательской машине может быть много мусора.

2) Перечислить контейнеры (PP_ENUMCONTAINERS) с флагом CRYPT_UNIQUE, выбрать те, у которых есть подстрока SCARD, последовательно их открывать и проверять сертификат (GetKeyParam(KP_CERTIFICATE)). В Windows есть специальная служба, которая автоматически ставит сертификат в Личное хранилище при подключении токена, так что с высокой вероятностью, если вы смогли перечислить токен с сертификатом, этот серт есть в хранилище. Ну а если нет, можете тут же сами кодом и установить.
Плюсы: никакого мусора
Минусы: медленнее; перечислятся только контейнеры с подключенных токенов
С уважением,
Сергей Агафьин,
Начальник отдела разработки ФКН.
Техническую поддержку оказываем здесь.
Наша база знаний.
Offline seevve  
#16 Оставлено : 24 января 2022 г. 15:36:34(UTC)
seevve

Статус: Участник

Группы: Участники
Зарегистрирован: 08.11.2021(UTC)
Сообщений: 10
Российская Федерация
Откуда: Москва

two_oceans, Grey - спасибо за ответы, просматривая примеры просто видел передачу в одну из функций что-то вроде регекспа, но вероятно это было где-то в другом месте, если вообще в CryptoAPI. (Мне отчего то подумалось, что можно передать что-то типа "*SCARD*" равно как и имя ключа контейнера, из документации это ниоткуда не следовало, так что мои фантазии). Целевая платформа предполагается вроде бы сертифицированый линукс (Astra?), так что про установку сертификатов интересно, команду использую, но она предполагает, что сертификат есть на файловой системе. Впринципе и через popen ожно дёрнуть.

Цитата:
/opt/cprocsp/bin/amd64/certmgr -inst -cont '\\.\PKCS11 Aktiv Rutoken ECP - CP 00 00 0\ID_63727970746f76735f696e76697369626c655f74657374' -file test.cer

А можете подсказать, при вот таком вот выводе pkcs11tool


есть программная возможность поставить сертификат с токена к контейнеру?
Нет уверенности, что крипто про вообще видит этот сертификат.
Так же интересна установка сертификата с носителя на который записывался ключ (и вероятно) сертификат средствами криптопро. Полагаю это может быть полезно. У меня пока такого токена нет под рукой, но если можно програмно доустановить сертификат я бы это реализовал.
На первый взгляд пример /opt/cprocsp/src/samples/CSP/InstallCert предполагает установку не с ключевого носителя.

Отредактировано пользователем 24 января 2022 г. 15:38:49(UTC)  | Причина: Не указана

Offline Grey  
#17 Оставлено : 24 января 2022 г. 17:33:11(UTC)
Grey

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 12.08.2013(UTC)
Сообщений: 777
Мужчина
Российская Федерация
Откуда: Москва

Сказал «Спасибо»: 5 раз
Поблагодарили: 182 раз в 149 постах
Автор: seevve Перейти к цитате
про установку сертификатов интересно, команду использую, но она предполагает, что сертификат есть на файловой системе. Впринципе и через popen ожно дёрнуть.

Цитата:
/opt/cprocsp/bin/amd64/certmgr -inst -cont '\\.\PKCS11 Aktiv Rutoken ECP - CP 00 00 0\ID_63727970746f76735f696e76697369626c655f74657374' -file test.cer


есть программная возможность поставить сертификат с токена к контейнеру?
Нет уверенности, что крипто про вообще видит этот сертификат.
Так же интересна установка сертификата с носителя на который записывался ключ (и вероятно) сертификат средствами криптопро. Полагаю это может быть полезно. У меня пока такого токена нет под рукой, но если можно програмно доустановить сертификат я бы это реализовал.
На первый взгляд пример /opt/cprocsp/src/samples/CSP/InstallCert предполагает установку не с ключевого носителя.


Честно говоря, не уверен, что до конца вас понял. Если стоит задача: установить сертификаты с токена в хранилище с правильной привязкой, наиболее простой способ - вызвать
Код:
/opt/cprocsp/bin/amd64/csptest -absorb -certs -autoprov


В эту же команду при необходимости можно добавить фильтр по токенам и типам носителей. Например, чтобы ставить серты только с токенов и не трогать HDIMAGE, можно добавить
Код:
-pattern SCARD
С уважением,
Сергей Агафьин,
Начальник отдела разработки ФКН.
Техническую поддержку оказываем здесь.
Наша база знаний.
Offline seevve  
#18 Оставлено : 24 января 2022 г. 17:49:53(UTC)
seevve

Статус: Участник

Группы: Участники
Зарегистрирован: 08.11.2021(UTC)
Сообщений: 10
Российская Федерация
Откуда: Москва

Цитата:
/opt/cprocsp/bin/amd64/csptest -absorb -certs -autoprov

пробовал на моём токене к установке сертификата не приводило, а вот команада из моего сообщения работала, впрочем спишу на токен не записанный средставами криптопро.

Спасибо. Про программную реализацию я имел ввиду пример кода реализующий функционал команды из вашего сообщения, хотел поразбираться почему с моим токеном не работала и/или научить работать с токенами подобными моему.
Offline Grey  
#19 Оставлено : 24 января 2022 г. 18:27:00(UTC)
Grey

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 12.08.2013(UTC)
Сообщений: 777
Мужчина
Российская Федерация
Откуда: Москва

Сказал «Спасибо»: 5 раз
Поблагодарили: 182 раз в 149 постах
Автор: seevve Перейти к цитате
Цитата:
/opt/cprocsp/bin/amd64/csptest -absorb -certs -autoprov

пробовал на моём токене к установке сертификата не приводило, а вот команада из моего сообщения работала, впрочем спишу на токен не записанный средставами криптопро.

Спасибо. Про программную реализацию я имел ввиду пример кода реализующий функционал команды из вашего сообщения, хотел поразбираться почему с моим токеном не работала и/или научить работать с токенами подобными моему.


Пример кода я не дам, к сожалению.
Могу посоветовать посмотреть вот в какую сторону:
- получить сертификаты с правильными ссылками в сериализованном store: CryptGetProvParam(PP_USER_CERTSTORE, CP_CRYPT_SERIALIZED_STORE);
- открыть его с помощью CertOpenStore(CERT_STORE_PROV_SERIALIZED);
- пройтись в цикле с помощью CertEnumCertificatesInStore и ставить в хранилище CertAddCertificateContextToStore.

Если получать PP_USER_CERTSTORE в контексте, открытом по имени считывателя, то туда попадут только сертификаты с токена.

Обратите внимание, что для PKCS11-ключей в CSP 5.0.12000 нужно использовать другое имя считывателя! Не "Aktiv Rutoken ECP", а "PKCS11 Aktiv Rutoken ...". Это было исправлено в CSP 5.0 R3.
С уважением,
Сергей Агафьин,
Начальник отдела разработки ФКН.
Техническую поддержку оказываем здесь.
Наша база знаний.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.