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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline LONG11  
#1 Оставлено : 8 марта 2021 г. 2:12:07(UTC)
LONG11

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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 ?
Offline Андрей *  
#2 Оставлено : 8 марта 2021 г. 11:42:51(UTC)
Андрей *

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

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

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

Поиском по тексту сообщения из отладчика - искали в сети...?
Windows 10?
Не работает только с этим CSP?
Если на другом ПК\ОС - проверить?
Вывод в консоли и приложение на C# - одинаковой битности?


Snimok ehkrana ot 2021-03-08 12-41-31.png (75kb) загружен 5 раз(а).

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#3 Оставлено : 8 марта 2021 г. 11:51:44(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
В реестре по: 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


Техническую поддержку оказываем тут
Наша база знаний
Offline LONG11  
#4 Оставлено : 8 марта 2021 г. 11:58:53(UTC)
LONG11

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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)  | Причина: Не указана

Offline Андрей *  
#5 Оставлено : 8 марта 2021 г. 12:16:55(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
CryptGetProvParam(hProv, PP_ENUMALGS_EX
не предлагать?
Техническую поддержку оказываем тут
Наша база знаний
Offline LONG11  
#6 Оставлено : 8 марта 2021 г. 12:22:26(UTC)
LONG11

Статус: Активный участник

Группы: Участники
Зарегистрирован: 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

Offline Андрей *  
#7 Оставлено : 8 марта 2021 г. 12:31:53(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах

dwFlags CRYPT_NEXT почему не используется?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#8 Оставлено : 8 марта 2021 г. 12:36:46(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
Предлагаю зарегистрировать ветки с OID-ами и посмотреть на результат...

oids.zip (2kb) загружен 3 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
LONG11 оставлено 08.03.2021(UTC)
Offline LONG11  
#9 Оставлено : 8 марта 2021 г. 12:40:37(UTC)
LONG11

Статус: Активный участник

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

Сказал(а) «Спасибо»: 24 раз
Автор: Андрей * Перейти к цитате
Предлагаю зарегистрировать ветки с OID-ами и посмотреть на результат...

oids.zip (2kb) загружен 3 раз(а).


Сработало. Спасибо!!!
А чем определяется, что регистрация OID производится при инсталляции операционной системы Windows?
Offline Андрей *  
#10 Оставлено : 8 марта 2021 г. 13:09:06(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
Для хеширования - sha OIDS 24.zip (2kb) загружен 3 раз(а).
для 32х приложений изменить:
Цитата:
\SOFTWARE\Microsoft\

на
Цитата:
\SOFTWARE\Wow6432Node\Microsoft\
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
LONG11 оставлено 08.03.2021(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.