Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.04.2020(UTC) Сообщений: 45  Откуда: Москва Сказал(а) «Спасибо»: 24 раз
|
Добрый день. Кто может, подскажите, при перечислении алгоритмов криптопровайдеров дохожу до: CryptAcquireContext(out prov, null, " Microsoft Enhanced RSA and AES Cryptographic Provider", 24, CRYPT_VERIFYCONTEXT); Запрашиваю OID реализуемых алгоритмов и получаю ошибку:  Oshibka.jpg (233kb) загружен 28 раз(а).При перечислении же OID функцией CryptEnumOIDInfo получаю OID, но Algid за пределами значений (Algid 4294967295 uint):  AlgID.jpg (52kb) загружен 15 раз(а).Хотя Algid передаваемый в CryptFindOIDInfo uint всего = 26126 - 26128  ID.jpg (93kb) загружен 16 раз(а).Подскажите, что не так с получением OID для AES 128, 192, 256 ?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,664   Сказал «Спасибо»: 571 раз Поблагодарили: 2297 раз в 1798 постах
|
Здравствуйте. Поиском по тексту сообщения из отладчика - искали в сети...? Windows 10? Не работает только с этим CSP? Если на другом ПК\ОС - проверить? Вывод в консоли и приложение на C# - одинаковой битности?  Snimok ehkrana ot 2021-03-08 12-41-31.png (75kb) загружен 5 раз(а). |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,664   Сказал «Спасибо»: 571 раз Поблагодарили: 2297 раз в 1798 постах
|
В реестре по: 2.16.840.1.101.3.4.1.42 - есть информация? 64х Цитата: Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\OID\EncodingType 0\CryptDllFindOIDInfo\2.16.840.1.101.3.4.1.42!2] "Name"="aes256" "Algid"=dword:00006610 "CNGAlgid"="AES256" "CNGExtraAlgid"="AES256" "ExtraInfo"=hex:00,10,00,00 "Flags"=dword:00000001
32: Цитата:Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Cryptography\OID\EncodingType 0\CryptDllFindOIDInfo\2.16.840.1.101.3.4.1.42!2] "Name"="aes256" "Algid"=dword:00006610 "CNGAlgid"="AES256" "CNGExtraAlgid"="AES256" "ExtraInfo"=hex:00,10,00,00 "Flags"=dword:00000001
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.04.2020(UTC) Сообщений: 45  Откуда: Москва Сказал(а) «Спасибо»: 24 раз
|
Автор: Андрей *  В реестре по: 2.16.840.1.101.3.4.1.42 - есть информация? Нет, записей нет и в ветке x64 ни в ветке x32. + Пробовал на машинах WIN7 x64 и WIN SERVER 2012 x64. Для Код:CryptAcquireContext(out prov, null, "Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider", 80, CRYPT_VERIFYCONTEXT);
 GOST2012.jpg (59kb) загружен 5 раз(а).Отредактировано пользователем 8 марта 2021 г. 12:05:42(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,664   Сказал «Спасибо»: 571 раз Поблагодарили: 2297 раз в 1798 постах
|
CryptGetProvParam(hProv, PP_ENUMALGS_EX не предлагать?
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.04.2020(UTC) Сообщений: 45  Откуда: Москва Сказал(а) «Спасибо»: 24 раз
|
Автор: Андрей *  CryptGetProvParam(hProv, PP_ENUMALGS_EX не предлагать?
Так ведь с него и начинаю... Код:dwFlags = 1;
if (!CryptGetProvParam(prov, PP_ENUMALGS_EX, IntPtr.Zero, ref len, dwFlags))
{
}
data = Marshal.AllocHGlobal(len);
do
{
if (!CryptGetProvParam(prov, PP_ENUMALGS_EX, data, ref len, dwFlags))
{
break;
}
PROV_ENUMALGS_EX pInfo = (PROV_ENUMALGS_EX)Marshal.PtrToStructure(data, typeof(PROV_ENUMALGS_EX));
Console.WriteLine("aiAlgid: " + pInfo.aiAlgid + " - " + pInfo.szLongName);
byte[] arDataAlg = BitConverter.GetBytes(pInfo.aiAlgid);
IntPtr hDataAlg = Marshal.AllocHGlobal(arDataAlg.Length);
Marshal.Copy(arDataAlg, 0, hDataAlg, arDataAlg.Length);
hHashAlgInfo = CryptFindOIDInfo(OidKeyType.AlgoritmID, hDataAlg, OidGroup.AllGroups);
if (hHashAlgInfo == IntPtr.Zero)
{
var a = new Win32Exception(Marshal.GetLastWin32Error());
}
try
{
CRYPT_OID_INFO pHashAlgInfo = (CRYPT_OID_INFO)Marshal.PtrToStructure(hHashAlgInfo, typeof(CRYPT_OID_INFO));
string _sOID = pHashAlgInfo.pszOID;
string _pwszName = pHashAlgInfo.pwszName;
Console.WriteLine(" " + _sOID + ", - " + _pwszName + ", dwGroupId: " + (OidGroup)pHashAlgInfo.dwGroupId);
}
1. Перечисляю алгоритмы провайдера. 2. Из структуры PROV_ENUMALGS_EX беруp Info.aiAlgid 3. Копирую в неуправляемую память 4. Передаю указатель в CryptFindOIDInfo
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,664   Сказал «Спасибо»: 571 раз Поблагодарили: 2297 раз в 1798 постах
|
dwFlags CRYPT_NEXT почему не используется? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,664   Сказал «Спасибо»: 571 раз Поблагодарили: 2297 раз в 1798 постах
|
Предлагаю зарегистрировать ветки с OID-ами и посмотреть на результат...  oids.zip (2kb) загружен 3 раз(а). |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
LONG11 оставлено 08.03.2021(UTC)
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.04.2020(UTC) Сообщений: 45  Откуда: Москва Сказал(а) «Спасибо»: 24 раз
|
Автор: Андрей *  Предлагаю зарегистрировать ветки с OID-ами и посмотреть на результат...  oids.zip (2kb) загружен 3 раз(а). Сработало. Спасибо!!! А чем определяется, что регистрация OID производится при инсталляции операционной системы Windows?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,664   Сказал «Спасибо»: 571 раз Поблагодарили: 2297 раз в 1798 постах
|
Для хеширования -  sha OIDS 24.zip (2kb) загружен 3 раз(а).для 32х приложений изменить: Цитата:\SOFTWARE\Microsoft\ на Цитата:\SOFTWARE\Wow6432Node\Microsoft\ |
|
 1 пользователь поблагодарил Андрей * за этот пост.
|
LONG11 оставлено 08.03.2021(UTC)
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close