|
Модераторы: bsa |
|
romych2004 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 12.9.2011 Репутация: нет Всего: нет |
Добрый день
Вопрос, возможно, глупый, но это же ветка для новичков Есть некая структура в Си Объявляется она вот так:
Далее пытаюсь установить поле rgAuthAttr для этой структуры. Объявляю его вот так:
И далее при передаче ¶m в функцию CryptSignMessage вываливается ошибка Access Violation. В дебаггере до этой функции все ок, а после вызова - поле rgAuthAttr сбрасывается. При чем как-то нестабильно все.. то сбросится сразу, то сбросится со второго вызова CryptSignMessage(первый получает размер, второй вызов получает сами данные) Если же ca объявить как указатель и выделить память malloc'ом, то все работает без ошибок Собственно, с ошибкой-то методом тыка разобрался, все работает, но не хватает теоретических знаний, почему если не выделить память динамически, то ссылка на объект теряется? Ну и второй вопрос в догонку, при использовании memset - память же не надо очищать? Она же просто уже выделенную заполняет? Заранее спасибо |
||||
|
|||||
xvr |
|
||||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Читаем описание параметра rgAuthAttr в MSDN:
Чтоу вас задано в cAuthAttr?
|
||||
|
|||||
romych2004 |
|
||||||||||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 12.9.2011 Репутация: нет Всего: нет |
Спасибо за ответ Два параметра, судя по описанию - для стандарта PKCS#9, мне нужен PKCS#7, по этому стандарту указание атрибута не обязательно. На саммо деле не суть важно, я пробовал выставлять вместо rgAuthAttr - rgUnauthAttr Вот так работает:
Вот так не работает:
*т.е. все работает, все назначается, но в функции CryptSignMessage вылетает исключение Access violation, и param.rgAuthAttr затирается(а перед вызовом там все ок) p.s. хм, залез сейчас на msdn и заметил что структура другая, в моей структуре CRYPT_SIGN_MESSAGE_PARA (wincrypt.h) нет параметров CRYPT_ALGORITHM_IDENTIFIER HashEncryptionAlgorithm; void pvHashEncryptionAuxInfo; Они только для CMS.. может ли быть в этом проблема? Это сообщение отредактировал(а) romych2004 - 24.8.2017, 13:31 |
||||||||||
|
|||||||||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
У вас явно пишется что то за границы структур. Поэтому с malloc и 'работает' - оно просто затирает не локалы в стеке, а кучу в программе. Все равно сломается
Добавлено через 8 минут и 11 секунд Может у вас выходной буфер для CryptSignMessage залез на ваши структуры? Покажите весь код. |
|||
|
||||
romych2004 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 12.9.2011 Репутация: нет Всего: нет |
Ну примерно вот такой:
Ну и сама подпись:
Это сообщение отредактировал(а) romych2004 - 25.8.2017, 13:16 |
||||
|
|||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Вроде криминала не видно.
В MSDN есть очень подозрительный кусок:
Попробуй не подавать время (оставь поля param.cAuthAttr и param.rgAuthAttr в 0). Если перестанет ломаться - то это где то в этом районе |
|||
|
||||
romych2004 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 12.9.2011 Репутация: нет Всего: нет |
Пробовал, без этого все нормально И если динамически выделить память - все ок.. странно что так не работает, хотел понять почему
|
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
А с параметром время в подпись правильно попадает? Может туда мусор заливается?
|
|||
|
||||
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |