Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро CSP 5.0
»
Как определить алгоритм вычисления хэша для подписи по открытому крипто контейнеру?
Статус: Активный участник
Группы: Участники
Зарегистрирован: 19.10.2022(UTC) Сообщений: 30  Сказал(а) «Спасибо»: 4 раз Поблагодарили: 2 раз в 2 постах
|
Подскажите как определить алгоритм вычисления хэша для подписи по открытому крипто контейнеру? Не совсем понимаю куда смотреть. Есть открытый крипто контейнер (CryptAcquireContextW). Теперь мне надо в функции CryptCreateHash() указать алгоритм хэширования. Как его правильно определить? Я раньше пытался взять алгоритм подписи сертификата из крипто-контейнера, алгоритмы были следующие: - szOID_CP_GOST_R3411_12_256_R3410
- szOID_CP_GOST_R3411_12_512_R3410
- szOID_RSA_SHA256RSA
- szOID_RSA_SHA384RSA
... По этим алгоритмам я выбирал соответствующий алгоритм хэширования: CALG_GR3411_2012_256, CALG_GR3411_2012_512, CALG_SHA_256 ... Сейчас словил ошибку с одним из свежевыданных ключей: Код:CryptSignHash: Указан неправильный алгоритм
В новом ключевом контейнере вот так: Код:SHA1 отпечаток : 728546732952234722f7e7a73112060eb22e3968
Идентификатор ключа : 3c363a14f43e2b299ef125ab2f8940e3190f4c2a
Алгоритм подписи : ГОСТ Р 34.11-2012/34.10-2012 256 бит
Алгоритм откр. кл. : ГОСТ Р 34.10-2012 512 бит (1024 бит)
Видно, что алгоритм подписи сертификата 256 бит, а алгоритм публичного ключа 512 бит. Я так понял, что неправильно получать алгоритм из подписи сертификата. Пытаюсь его взять из публичного ключа: Код:// Получаем информацию об открытом ключе
DWORD keyInfoSize = 0;
if (!CryptExportPublicKeyInfo(*prov, keySpec, Encoding, nullptr, &keyInfoSize))
throw CPCSPException("<10de94fd> CryptExportPublicKeyInfo");
auto keyInfo = static_cast<PCERT_PUBLIC_KEY_INFO>(malloc(keyInfoSize));
finalize { free(keyInfo); };
if (!CryptExportPublicKeyInfo(*prov, keySpec, Encoding, keyInfo, &keyInfoSize))
throw CPCSPException("<f476a203> CryptExportPublicKeyInfo");
// Получаем алгоритм открытого ключа
auto keyAlgId = keyInfo->Algorithm.pszObjId;
И теперь я получаю немного другие идентификаторы алгоритмов: - szOID_CP_GOST_R3410_12_256
- szOID_CP_GOST_R3410_12_512
- szOID_RSA_RSA
И если для гостовых алгоритмов я могу сопоставить битность гостового хэша. То для szOID_RSA_RSA я даже и не знаю какой алгоритм хэширования использовать. В общем я немного в этом всем путаюсь. Может есть какой-то более правильный способ получить алгоритм хэширования по открытому крипто-контексту?
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро CSP 5.0
»
Как определить алгоритм вычисления хэша для подписи по открытому крипто контейнеру?
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close