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

Уведомление

Icon
Error

8 Страницы«<5678>
Опции
К последнему сообщению К первому непрочитанному
Offline Юрий  
#61 Оставлено : 22 ноября 2013 г. 11:32:02(UTC)
Юрий

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

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 671
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Автор: dmishin Перейти к цитате
Юрий, подскажите каким методом добраться до нужного узла после выполнения CryptDecodeObject?

Вызвав ещё раз CryptDecodeObject :) И так до победного конца.
С уважением,
Юрий Строжевский
Offline dmishin  
#62 Оставлено : 25 ноября 2013 г. 12:25:30(UTC)
dmishin

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

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057
Хотя под виндой все ок...

Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM)

Отредактировано пользователем 25 ноября 2013 г. 12:31:34(UTC)  | Причина: Не указана

Offline Юрий  
#63 Оставлено : 25 ноября 2013 г. 12:37:16(UTC)
Юрий

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

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 671
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Автор: dmishin Перейти к цитате
Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057
Хотя под виндой все ок...

Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM)

Смотря что декодировать. Там тоже реализован ограниченный набор декодируемых структур.
Проще декодировать примитивные ASN.1 типы и обрабатывать уже их.
С уважением,
Юрий Строжевский
Offline dmishin  
#64 Оставлено : 25 ноября 2013 г. 12:54:21(UTC)
dmishin

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

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
И так получил третью реализацию, которая не работает под линуксом:

1. Получаю подписанные атрибуты:
CryptMsgGetParam(msgObject, CMSG_SIGNER_AUTH_ATTR_PARAM, 0, msgAuthAttr, &msgParamLen)
2. Пытаюсь запаковать в ASN.1:
CryptEncodeObject(MY_ENCODING_TYPE, PKCS_ATTRIBUTES, msgAuthAttr, msgAuthAttrData, &msgAuthAttrLen)


Получаю 0x80092002. Что означает что скорее всего под линуксом не реализовано...
Offline dmishin  
#65 Оставлено : 25 ноября 2013 г. 12:55:38(UTC)
dmishin

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

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Автор: Юрий Перейти к цитате
Автор: dmishin Перейти к цитате
Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057
Хотя под виндой все ок...

Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM)

Смотря что декодировать. Там тоже реализован ограниченный набор декодируемых структур.
Проще декодировать примитивные ASN.1 типы и обрабатывать уже их.


Просто исходное сообщение не декодируется. Т.е. корневой элемент.
Offline dmishin  
#66 Оставлено : 25 ноября 2013 г. 13:02:58(UTC)
dmishin

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

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Автор: Юрий Перейти к цитате

Проще декодировать примитивные ASN.1 типы и обрабатывать уже их.


Остался еще вариант с реализацией ASN.1 парсера для получения нужного узла.
У меня варианты кончились.

Отредактировано пользователем 26 ноября 2013 г. 7:05:47(UTC)  | Причина: Не указана

Offline Юрий  
#67 Оставлено : 25 ноября 2013 г. 13:06:38(UTC)
Юрий

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

Группы: Участники
Зарегистрирован: 22.01.2008(UTC)
Сообщений: 671
Мужчина
Российская Федерация
Откуда: Йошкар-Ола

Сказал «Спасибо»: 3 раз
Поблагодарили: 93 раз в 67 постах
Автор: dmishin Перейти к цитате
Автор: Юрий Перейти к цитате
Автор: dmishin Перейти к цитате
Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057
Хотя под виндой все ок...

Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM)

Смотря что декодировать. Там тоже реализован ограниченный набор декодируемых структур.
Проще декодировать примитивные ASN.1 типы и обрабатывать уже их.


Просто исходное сообщение не декодируется. Т.е. корневой элемент.

Да нет, простейшие типы ASN.1 прекрасно декодируются/кодируются в Linux. Так что-то ошибочно у вас в коде.
С уважением,
Юрий Строжевский
Offline dmishin  
#68 Оставлено : 25 ноября 2013 г. 13:28:16(UTC)
dmishin

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

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Автор: Юрий Перейти к цитате
Автор: dmishin Перейти к цитате
Автор: Юрий Перейти к цитате
Автор: dmishin Перейти к цитате
Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057
Хотя под виндой все ок...

Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM)

Смотря что декодировать. Там тоже реализован ограниченный набор декодируемых структур.
Проще декодировать примитивные ASN.1 типы и обрабатывать уже их.


Просто исходное сообщение не декодируется. Т.е. корневой элемент.

Да нет, простейшие типы ASN.1 прекрасно декодируются/кодируются в Linux. Так что-то ошибочно у вас в коде.



Как вариант - в сообщении возможно есть ошибка, которую win реализация прощает. Но на всякий случай проверю код.
Offline dmishin  
#69 Оставлено : 25 ноября 2013 г. 15:42:55(UTC)
dmishin

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

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Удалось поэлементно запаковать атрибуты:
for (DWORD i = 0; i < msgAuthAttr->cAttr; i++) {
if(!CryptEncodeObject(MY_ENCODING_TYPE, PKCS_ATTRIBUTE, &(msgAuthAttr->rgAttr[i]), NULL, &encodedAttrLen)) {
HandleError("1");
}
if(!(encodedAttr = (BYTE *)malloc(encodedAttrLen))){
HandleError("Memory Allocation error");
}
if(!CryptEncodeObject(MY_ENCODING_TYPE, PKCS_ATTRIBUTE, &(msgAuthAttr->rgAttr[i]), encodedAttr,&encodedAttrLen)) {
HandleError("2");
}

if(!(encodedAttributes = (BYTE *)realloc(encodedAttributes, encodedAttributesLen + encodedAttrLen))){
HandleError("Memory Allocation error");
}

memmove(encodedAttributes+encodedAttributesLen, encodedAttr, encodedAttrLen);
encodedAttributesLen += encodedAttrLen;
}
Не нашел функцию для генерации заголовка с длиной данных для ASN.1, поэтому подставил пока вручную для проверки.

Получил искомое значение для хеша и валидация прошла успешно.


П.С.
Остается найти или написать генерацию заголовка элемента.

Отредактировано пользователем 25 ноября 2013 г. 15:47:56(UTC)  | Причина: Не указана

Offline dmishin  
#70 Оставлено : 26 ноября 2013 г. 7:48:46(UTC)
dmishin

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

Группы: Участники
Зарегистрирован: 07.08.2012(UTC)
Сообщений: 123

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 6 раз в 6 постах
Заголовки добавил через CryptEncodeObject(X509_OCTET_STRING)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
8 Страницы«<5678>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.