Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2011, 18:21   #1
roman1991
Пользователь
 
Регистрация: 08.08.2011
Сообщений: 12
Восклицание Реализация шифрования по ГОСТ на уровне драйвера

Здравствуйте. посоветуйте. пожалуйста как легче реализовать шифрование по ГОСТ на уровне драйвера.
реализации гост найти не проблема, но как их прикрутить к драйверу?

уровень драйвера не позволяет использовать cryptoapi (wincrypt.h), что существенно все осложняет.
может быть подключить dll, это возможно на низком уровне?

задача сводится к простой. есть буфер, который нужно зашифровать. нужна функция типа Encrypt(byte * buffer,int length) на C.
реализация госта есть на высоком уровне(c++)
roman1991 вне форума Ответить с цитированием
Старый 10.08.2011, 10:06   #2
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Есть такая вещь как UMDF. UMDF драйвер может использовать WinAPI за исключением функций относящихся к UI.
f.hump вне форума Ответить с цитированием
Старый 10.08.2011, 11:39   #3
roman1991
Пользователь
 
Регистрация: 08.08.2011
Сообщений: 12
По умолчанию

UMDF входит в состав WinDDK, которое уже используется. но тем не менее при подключении Wincrypt.h, который входит в состав этого же WinDDK выскакивает много ошибок.

14>crypto.c
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(833) : error C2016: C requires that a struct or union has at least one member
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(833) : error C2061: syntax error : identifier 'DWORD'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(835) : error C2143: syntax error : missing '{' before '*'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(835) : warning C4218: nonstandard extension used : must specify at least a storage class or a type
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(836) : error C2061: syntax error : identifier 'cbOID'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(836) : error C2059: syntax error : ';'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(837) : error C2059: syntax error : '}'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(842) : error C2061: syntax error : identifier 'BYTE'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(843) : error C2061: syntax error : identifier 'cbInnerString'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(843) : error C2059: syntax error : ';'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(844) : error C2143: syntax error : missing '{' before '*'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(844) : warning C4218: nonstandard extension used : must specify at least a storage class or a type
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(845) : error C2061: syntax error : identifier 'cbOuterString'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(845) : error C2059: syntax error : ';'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(846) : error C2059: syntax error : '}'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(850) : error C2016: C requires that a struct or union has at least one member
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(850) : error C2061: syntax error : identifier 'DWORD'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(852) : error C2061: syntax error : identifier 'cBits'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(852) : error C2059: syntax error : ';'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(853) : error C2061: syntax error : identifier 'dwFlags'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(853) : error C2059: syntax error : ';'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(854) : error C2061: syntax error : identifier 'dwReserved'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(854) : error C2059: syntax error : ';'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(855) : error C2059: syntax error : '}'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(866) : error C2061: syntax error : identifier 'DWORD'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(867) : error C2061: syntax error : identifier 'dwNameLen'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(867) : error C2059: syntax error : ';'
14>c:\winddk\7600.16385.1\inc\api\w incrypt.h(869) : error C2059: syntax error : '}'

и т.д.

Последний раз редактировалось roman1991; 10.08.2011 в 11:44.
roman1991 вне форума Ответить с цитированием
Старый 10.08.2011, 11:48   #4
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

(это к тому вопросу, а как без UMDF) перевести реализацию госта с С++ на С. Добавить к драйверу новый IOCTL и в обработчик этого IOCTL вставить гост.

на счет ошибок: надо #include <Windows.h> сделать

Последний раз редактировалось f.hump; 10.08.2011 в 11:51.
f.hump вне форума Ответить с цитированием
Старый 10.08.2011, 13:21   #5
roman1991
Пользователь
 
Регистрация: 08.08.2011
Сообщений: 12
Вопрос

А можно немного поподробнее про IOCTL. как его добавить и сделать обработчик

подключил windows.h появились другие ошибки>


4>crypto.c
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(318) : error C2061: syntax error : identifier 'CRITICAL_SECTION'
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(318) : error C2059: syntax error : ';'
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(319) : error C2061: syntax error : identifier 'PCRITICAL_SECTION'
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(319) : error C2059: syntax error : ';'
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(320) : error C2061: syntax error : identifier 'LPCRITICAL_SECTION'
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(320) : error C2059: syntax error : ';'
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(322) : error C2061: syntax error : identifier 'CRITICAL_SECTION_DEBUG'
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(322) : error C2059: syntax error : ';'
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(323) : error C2061: syntax error : identifier 'PCRITICAL_SECTION_DEBUG'
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(323) : error C2059: syntax error : ';'
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(324) : error C2061: syntax error : identifier 'LPCRITICAL_SECTION_DEBUG'
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(324) : error C2059: syntax error : ';'
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(410) : error C2061: syntax error : identifier 'SRWLOCK'
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(410) : error C2059: syntax error : ';'
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(410) : error C2059: syntax error : ','
14>c:\winddk\7600.16385.1\inc\api\w inbase.h(418) : error C2146: syntax error : missing ')' before identifier 'SRWLock'
и т.д.

Последний раз редактировалось roman1991; 10.08.2011 в 14:05.
roman1991 вне форума Ответить с цитированием
Старый 10.08.2011, 22:59   #6
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

обычно, в девайсе создается очередь (http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx), перед созданием заполнятся конфигурация очереди, ну, и там указывается, какая функция (и в каком контексте если нужно) будет вызыватся при наличии запроса в очереди. Запрос в очереди характеризуется некоторым уникальным для устроства именем - IOCTL кодом, ну и связанным с особенностями запроса контекстом. Обо всем этом можно прочитать в мануалах к WDK. в целом рекомендую просто взять какой-нибудь пример из WDK и подогнать его под свои нужды.
f.hump вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
возможна ли реализация ГОСТ 28147-89 на языке java? werder Общие вопросы по Java, Java SE, Kotlin 2 25.11.2010 13:03
Реализация ГОСТ Р 34.10-2001 Alex2012 Фриланс 9 17.10.2010 13:24
Эмуляция нажатия клавиш в свернутом окне на уровне драйвера Razlo Win Api 3 26.08.2010 20:08
Реализация ГОСТ Р 34.10-94 Stefaniya Свободное общение 4 13.05.2010 22:21
реализация шифрования. шифр Цезаря + Хэш-функция BlackThornGreed Помощь студентам 0 07.06.2009 10:21