Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро CSP 5.0
»
Не получается программно загрузить PFX с приватным ключом для дальнейшего подписания
Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.10.2022(UTC) Сообщений: 54  Сказал(а) «Спасибо»: 10 раз Поблагодарили: 2 раз в 2 постах
|
Добрый день. У меня самописный сервис подписания, который использует КриптоПро CSP5. Пытаюсь загрузить блоб с pfx файлом, который был до этого экспортирован в файл при помощи certmgr, функцией PFXImportCertStore с флагом PKCS12_NO_PERSIST_KEY (не хочу чтобы ключ импортировался в постоянное хранилище). До этого я провалидировал блоб функциями PFXIsPFXBlob и PFXVerifyPassword, всё с ним ок. PFX блоб импортируется и я получаю валидный HCERTSTORE. Я перечисляю сертификаты в хранилище функцией CertEnumCertificatesInStore, получаю один PCCERT_CONTEXT в котором правильная информация о сертификате. Далее мне надо как-то убедиться что в хранилище присутствует приватный ключ ассоциированный с сертификатом и я не пойму как это сделать. Я пытался вызвать функцию CertGetCertificateContextProperty(cert, CERT_KEY_PROV_INFO_PROP_ID, &provInfo, &provInfoSize), но она выдаёт ошибку: Объект или свойство не найдено. (2148081668)Как правильно импортировать PFX, чтобы можно было понять что там есть приватный ключ и работало подписание данных? Какие использовать для этого функции и флаги? На постоянку я сохранять ключ в хранилище не хочу, так как начинает интерактивно запрашиваться пароль на новый контейнер. А у меня это серверная история. Отредактировано пользователем 25 марта 2026 г. 15:25:31(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 24.02.2026(UTC) Сообщений: 11  Откуда: Москва Сказал(а) «Спасибо»: 1 раз Поблагодарили: 5 раз в 5 постах
|
Добрый день. В документации PFXImportCertStore описано поведение флага PKCS12_NO_PERSIST_KEY: https://learn.microsoft....crypt-pfximportcertstoreCERT_KEY_PROV_INFO_PROP_ID с ним не задаётся. Проверить наличие закрытого ключа можно, например, проверив наличие свойства CERT_KEY_CONTEXT_PROP_ID. Или просто попытаться получить его: Код:BOOL hasPrivateKey = CryptAcquireCertificatePrivateKey(pCert, CRYPT_ACQUIRE_USE_PROV_INFO_FLAG | CRYPT_ACQUIRE_SILENT_FLAG, ...);
|
 1 пользователь поблагодарил Илья К.А. за этот пост.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.10.2022(UTC) Сообщений: 54  Сказал(а) «Спасибо»: 10 раз Поблагодарили: 2 раз в 2 постах
|
Ага, спасибо, CryptAcquireCertificatePrivateKey мне подходит
|
|
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро CSP 5.0
»
Не получается программно загрузить PFX с приватным ключом для дальнейшего подписания
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close