|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.08.2011, 18:21 | #1 |
Пользователь
Регистрация: 08.08.2011
Сообщений: 12
|
Реализация шифрования по ГОСТ на уровне драйвера
Здравствуйте. посоветуйте. пожалуйста как легче реализовать шифрование по ГОСТ на уровне драйвера.
реализации гост найти не проблема, но как их прикрутить к драйверу? уровень драйвера не позволяет использовать cryptoapi (wincrypt.h), что существенно все осложняет. может быть подключить dll, это возможно на низком уровне? задача сводится к простой. есть буфер, который нужно зашифровать. нужна функция типа Encrypt(byte * buffer,int length) на C. реализация госта есть на высоком уровне(c++) |
10.08.2011, 11:39 | #3 |
Пользователь
Регистрация: 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. |
10.08.2011, 11:48 | #4 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
(это к тому вопросу, а как без UMDF) перевести реализацию госта с С++ на С. Добавить к драйверу новый IOCTL и в обработчик этого IOCTL вставить гост.
на счет ошибок: надо #include <Windows.h> сделать Последний раз редактировалось f.hump; 10.08.2011 в 11:51. |
10.08.2011, 13:21 | #5 |
Пользователь
Регистрация: 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. |
10.08.2011, 22:59 | #6 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
обычно, в девайсе создается очередь (http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx), перед созданием заполнятся конфигурация очереди, ну, и там указывается, какая функция (и в каком контексте если нужно) будет вызыватся при наличии запроса в очереди. Запрос в очереди характеризуется некоторым уникальным для устроства именем - IOCTL кодом, ну и связанным с особенностями запроса контекстом. Обо всем этом можно прочитать в мануалах к WDK. в целом рекомендую просто взять какой-нибудь пример из WDK и подогнать его под свои нужды.
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
возможна ли реализация ГОСТ 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 |