Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.09.2012(UTC) Сообщений: 31 Откуда: Москва Сказал «Спасибо»: 4 раз
|
Сначала перебираю (инумерую) провайдеры CryptEnumProviders, потом для каждого выбранного провайдера перебираю его контейнеры CryptGetProvParam с параметром PP_ENUMCONTAINERS, так вод контейнеры перебираются ото всех провайдеров (с типами PROV_GOST_2001_DH, PROV_GOST_2012_256 и PROV_GOST_2012_512). В итоге беру контейнер с ключом ГОСТ 2012 для провайдера, к примеру PROV_GOST_2001_DH, и подписание не работает, возникает ошибка 0x80090008, "Указан неправильный алгоритм". У вас почему-то отсутствует привязка типа провайдера с типом контейнера. Мне кажется это ошибка, с Microsoft RSA типами провайдеров такого не происходит, и в противном случае эту привязку придётся обеспечивать где-то в пользовательской программе, что тоже, на мой взгляд, не корректно.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 10.04.2013(UTC) Сообщений: 186 Сказал(а) «Спасибо»: 1 раз Поблагодарили: 81 раз в 62 постах
|
Добрый день!
Не могли бы Вы более подробно описать производимые Вами действия? В частности, каким образом Вы формируете подпись - какой объект функции хэширования Вы подаете на вход? |
С уважением, Станислав Смышляев, к.ф.-м.н., Заместитель генерального директора ООО "КРИПТО-ПРО" Техническую поддержку оказываем здесь. Наша база знаний.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.09.2012(UTC) Сообщений: 31 Откуда: Москва Сказал «Спасибо»: 4 раз
|
В том-то и дело, что функции хеширования я подаю хеш не того алгоритма, которому соответствуют найденный контейнер ключей. Т.е., в вышеописанном примере, перебирая провайдеры и контейнеры, я выбираю (определённым образом) контейнер с ключом ГОСТ 2010, а провайдер при этом у меня PROV_GOST_2012_512 (т.е. тип провайдера соответствует алгоритму ГОСТ 2012-512 бит). Далее, исходя из типа провайдера, я предполагаю что у меня ключ ГОСТ 2012-512, и соответсвенно вычисляю хеш значение по алгоритму CALG_GR3411_2012_512 (а должен с CALG_GR3411) и соответственно получаю ошибку при формировании подписи. Просто нет никакой возможности (в MS Crypto API) по имени контейнера ключей определить какому ГОСТ алгоритму они соответствуют (тип провайдера вернётся тот, с каторым был выполнен перебор контейнеров). Можно только, предварительно выбрав провайдер, перебрать контейнеры. А здесь, все првайдеры (PROV_GOST_2001_DH, PROV_GOST_2012_256 и PROV_GOST_2012_512) перебирают одни и те же контейнеры независимо от версии алгоритмов, с которыми они были созданы.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 10.04.2013(UTC) Сообщений: 186 Сказал(а) «Спасибо»: 1 раз Поблагодарили: 81 раз в 62 постах
|
Перечисляются все контейнеры, которые Вы можете успешно открыть с помощью используемого Вами типа провайдера.
Задача, о которой Вы говорите, наиболее естественно решается исходя из свойств ключа (ведь именно ключу приписываются правила работы с алгоритмами хэширования). Таким образом, следует получить дескриптор ключа (GetUserKey) и запросить его KP_ALGID, после чего определить порядок дальнейшей работы с ним (в частности, выбрать уместный алгоритм хэширования).
Без ввода пин-кода на ключ Вы можете не только запросить алгоритм открываемого ключа (KP_ALGID), но и, например, приписанный ключу оид хэша (KP_HASHOID), если Вам кажется это более логичным. |
С уважением, Станислав Смышляев, к.ф.-м.н., Заместитель генерального директора ООО "КРИПТО-ПРО" Техническую поддержку оказываем здесь. Наша база знаний.
|
1 пользователь поблагодарил Станислав Смышляев за этот пост.
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 17.09.2012(UTC) Сообщений: 31 Откуда: Москва Сказал «Спасибо»: 4 раз
|
Да, это поможет, спасибо большое
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 10.04.2013(UTC) Сообщений: 186 Сказал(а) «Спасибо»: 1 раз Поблагодарили: 81 раз в 62 постах
|
Пожалуйста, всегда рады помочь. |
С уважением, Станислав Смышляев, к.ф.-м.н., Заместитель генерального директора ООО "КРИПТО-ПРО" Техническую поддержку оказываем здесь. Наша база знаний.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close