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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline yvatest  
#1 Оставлено : 9 января 2020 г. 9:48:49(UTC)
yvatest

Статус: Новичок

Группы: Участники
Зарегистрирован: 12.02.2018(UTC)
Сообщений: 7
Откуда: Ivanovo

Сказал(а) «Спасибо»: 5 раз
Поблагодарили: 2 раз в 1 постах
Добрый день!

Подскажите, пожалуйста, возможно ли определить ALG_ID и OID по short name алгоритма, или наоборот, по OID определить ALG_ID и имя алгоритма, кроме как через вызовы CryptGetProvParam() c параметром PP_ENUMALGS и CertAlgIdToOID()/CertOIDToAlgId()?

Если использовать CryptGetProvParam(), то выдается какой-то короткий список алгоритмов,
так для криптопровайдера: "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider":
"GOST 28147-89"
"GR 34.10-2012 256"
"DH 34.10-2012 256"
"GR34.11-12 256 HMAC"
но в нем нет, например, "GR 34.11-2012 256" или CALG_DH_GR3410_12_256_SF

Получить OID через CertAlgIdToOID() можно лишь для "GOST 28147-89" и "GR 34.10-2012 256", но не для алгоритмов хэша и обмена ("GR34.11-12 256 HMAC", "DH 34.10-2012 256")

Есть какой-то иной способ получения этих параметров алгоритмов или необходимо самому определять соответсвие между ALG_ID, OID и short name ?
Offline two_oceans  
#2 Оставлено : 9 января 2020 г. 10:48:09(UTC)
two_oceans

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

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

Сказал(а) «Спасибо»: 110 раз
Поблагодарили: 394 раз в 366 постах
Добрый день.
Полагаю что самому. Обычно это касается выбора верного хэша для подписи имеющимся сертификатом, тогда примерно так:
https://www.cryptopro.ru...&m=111058#post111058
thanks 1 пользователь поблагодарил two_oceans за этот пост.
yvatest оставлено 09.01.2020(UTC)
Offline Андрей Писарев  
#3 Оставлено : 9 января 2020 г. 14:25:46(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Здравствуйте.

Автор: yvatest Перейти к цитате

Если использовать CryptGetProvParam(), то выдается какой-то короткий список алгоритмов,
так для криптопровайдера: "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider":
"GOST 28147-89"
"GR 34.10-2012 256"
"DH 34.10-2012 256"
"GR34.11-12 256 HMAC"
но в нем нет, например, "GR 34.11-2012 256" или CALG_DH_GR3410_12_256_SF

Получить OID через CertAlgIdToOID() можно лишь для "GOST 28147-89" и "GR 34.10-2012 256", но не для алгоритмов хэша и обмена ("GR34.11-12 256 HMAC", "DH 34.10-2012 256")



А как используете вызов?


Snimok ehkrana ot 2020-01-09 15-23-59.png (35kb) загружен 27 раз(а).

Такой вариант ожидается получить?




Техническую поддержку оказываем тут
Наша база знаний
Offline yvatest  
#4 Оставлено : 9 января 2020 г. 18:25:29(UTC)
yvatest

Статус: Новичок

Группы: Участники
Зарегистрирован: 12.02.2018(UTC)
Сообщений: 7
Откуда: Ivanovo

Сказал(а) «Спасибо»: 5 раз
Поблагодарили: 2 раз в 1 постах
Цитата:

А как используете вызов?


Вызываю примерно так:
CryptAcquireContext(&prov, NULL, "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider", PROV_GOST_2012_256, CRYPT_VERIFYCONTEXT)
...
DWORD dwFlags = CRYPT_FIRST;
CryptGetProvParam(prov, PP_ENUMALGS, (BYTE*)pbData.Begin(), &cbData, dwFlags)
...
Offline Андрей Писарев  
#5 Оставлено : 9 января 2020 г. 20:46:38(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#6 Оставлено : 9 января 2020 г. 20:53:53(UTC)
Андрей *

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

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

Сказал «Спасибо»: 500 раз
Поблагодарили: 2046 раз в 1586 постах
Автор: yvatest Перейти к цитате
Цитата:

А как используете вызов?


Вызываю примерно так:
CryptAcquireContext(&prov, NULL, "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider", PROV_GOST_2012_256, CRYPT_VERIFYCONTEXT)
...
DWORD dwFlags = CRYPT_FIRST;
CryptGetProvParam(prov, PP_ENUMALGS, (BYTE*)pbData.Begin(), &cbData, dwFlags)
...


1 раз?
А как же цикл c CRYPT_NEXT?
Техническую поддержку оказываем тут
Наша база знаний
Offline yvatest  
#7 Оставлено : 10 января 2020 г. 10:00:45(UTC)
yvatest

Статус: Новичок

Группы: Участники
Зарегистрирован: 12.02.2018(UTC)
Сообщений: 7
Откуда: Ivanovo

Сказал(а) «Спасибо»: 5 раз
Поблагодарили: 2 раз в 1 постах
Автор: Андрей Писарев Перейти к цитате


1 раз?
А как же цикл c CRYPT_NEXT?


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