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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline astarukhin  
#1 Оставлено : 7 ноября 2024 г. 13:45:08(UTC)
astarukhin

Статус: Активный участник

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

Сказал(а) «Спасибо»: 5 раз
Здравствуйте!
Ситуация следующая
В рамках проекта работы с Цифровым Рублём необходимо реализовать сервис подписания используя язык СИ (такие требования поставили)
Ключ всегда находится в контейнере(например, на флешке)

Здесь нужно реализовать возможность подписывания и проверки без включения сертификата в подпись (SigParams.cMsgCert = 0;)

ПОдписывание не проходит

В параметры для проверки подписи была добавлена функция получения сертификата

Цитата:
CRYPT_VERIFY_MESSAGE_PARA CspVerifier::PrepareStVerifyMessagePara() {
CRYPT_VERIFY_MESSAGE_PARA stVerifyMessagePara;
stVerifyMessagePara.cbSize = sizeof(CRYPT_VERIFY_MESSAGE_PARA);
stVerifyMessagePara.dwMsgAndCertEncodingType = SUPPORTED_ENCODINGS;
stVerifyMessagePara.pfnGetSignerCertificate = PfnCryptGetSignerCertificate;
stVerifyMessagePara.pvGetArg = nullptr;
return stVerifyMessagePara;


Реализована она так
Цитата:

PCCERT_CONTEXT PfnCryptGetSignerCertificate(
void *pvGetArg,
DWORD dwCertEncodingType,
PCERT_INFO pSignerId,
HCERTSTORE hMsgCertStore
)
{
PCCERT_CONTEXT pDesiredCert = NULL;
pDesiredCert = CertFindCertificateInStore(hMsgCertStore, SUPPORTED_ENCODINGS, 0, CERT_FIND_SUBJECT_CERT, pSignerId, NULL);
return pDesiredCert;
;
}


Это сделано на основе справичной информации отсюда - https://learn.microsoft....rtfindcertificateinstore
(исходя из описания константы CERT_FIND_SUBJECT_CERT)

Подскажите, пожалуйста, как, используя поля SerialNumber и Issuer из pSignerId, а также hMsgCertStore, которые доступны мне (остальные поля пусты) получить сертификат из контейнера?

Номер ошибки при этом - 80092004 то есть нет доступа к секретному ключу
По логике мне нужно найти контейнер и из него получить серт, но как это сделать для меня пока не понятно...

Отредактировано пользователем 8 ноября 2024 г. 8:39:11(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.