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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Игорь Р.  
#1 Оставлено : 11 ноября 2021 г. 12:01:25(UTC)
Игорь Р.

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Добрый день!

В десктопном приложении пытаюсь получить Hash по ГОСТ алгоритму с помощью функций Cryptoapi.

На 4-ом шаге получаю ошибку 87 - Параметр задан неверно.

Схематичный порядок действий, основные функции (все проверки пропущены для наглядности):

self.ProviderType = PROV_GOST_2012_256 ! 80
Algid = CALG_GR3411_2012_256 ! 32801

1. CryptAcquireContext(SELF.hCryptProv,,, SELF.ProviderType,CRYPT_VERIFYCONTEXT)

! Create an empty Hash
2. CryptCreateHash(SELF.hCryptProv,AlgId,0,0,hHash)

! Hash the supplied Password
3. CryptHashData(hHash,ADDRESS(Password),PasswordLen,0)

4. hashlen = GR3411LEN !64
ParamBLOB.ParamData &= NEW(STRING(hashlen))

CryptGetHashParam(hHash,HP_HASHVAL,ADDRESS(ParamBLOB.ParamData),hashlen,0)

!!! Здесь получаю ошибку 87 - Параметр задан неверно

А с такими параметрами прекрасно работает:
self.ProviderType = PROV_RSA_AES ! 24
Algid = CALG_SHA_256 ! 32780

И пример на С CreatingHash из пакета Cryptopro SDK тоже нормально работает с ГОСТ алгоритмом.

Программа написана на языке Clarion и все работало с алгоритмом CALG_SHA_256

О чем может говорить полученная ошибка? Что не нравится функции CryptGetHashParam именно для PROV_GOST_2012_256 ?
Offline Игорь Р.  
#2 Оставлено : 13 ноября 2021 г. 11:45:35(UTC)
Игорь Р.

Статус: Участник

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

Сказал(а) «Спасибо»: 1 раз
Сделал простейший пример на VBS

Цитата:
Dim HashedData

Set HashedData= CreateObject("CADESCOM.HashedData")

HashedData.Algorithm = 101
HashedData.Hash("Hello word!")
Wscript.Stdout.Writeline HashedData.Value


Дает ошибку: Указан неправильный алгоритм

Со значениями Algorithm от 0 до 6 нормально работает, а с ГОСТ не хочет.
Насколько я понимаю, CADESCOM поддерживает ГОСТ алгоритмы

Цитата:
CADESCOM_HASH_ALGORITHM_CP_GOST_3411 = 100,
CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256 = 101,
CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512 = 102,
CADESCOM_HASH_ALGORITHM_CP_GOST_3411_HMAC = 110,
CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_256_HMAC = 111,
CADESCOM_HASH_ALGORITHM_CP_GOST_3411_2012_512_HMAC = 112


Установлен КриптоПро CSP 5.0.11319 KC1

В чем может быть проблема?

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