Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро CSP 3.6
»
Проверка подписи не по данным а по хешу данных
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671 Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 93 раз в 67 постах
|
Автор: dmishin Юрий, подскажите каким методом добраться до нужного узла после выполнения CryptDecodeObject? Вызвав ещё раз CryptDecodeObject :) И так до победного конца. |
С уважением, Юрий Строжевский |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057 Хотя под виндой все ок... Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM) Отредактировано пользователем 25 ноября 2013 г. 12:31:34(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671 Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 93 раз в 67 постах
|
Автор: dmishin Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057 Хотя под виндой все ок...
Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM) Смотря что декодировать. Там тоже реализован ограниченный набор декодируемых структур. Проще декодировать примитивные ASN.1 типы и обрабатывать уже их. |
С уважением, Юрий Строжевский |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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. Что означает что скорее всего под линуксом не реализовано...
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
Автор: Юрий Автор: dmishin Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057 Хотя под виндой все ок...
Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM) Смотря что декодировать. Там тоже реализован ограниченный набор декодируемых структур. Проще декодировать примитивные ASN.1 типы и обрабатывать уже их. Просто исходное сообщение не декодируется. Т.е. корневой элемент.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
Автор: Юрий Проще декодировать примитивные ASN.1 типы и обрабатывать уже их.
Остался еще вариант с реализацией ASN.1 парсера для получения нужного узла. У меня варианты кончились. Отредактировано пользователем 26 ноября 2013 г. 7:05:47(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671 Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 93 раз в 67 постах
|
Автор: dmishin Автор: Юрий Автор: dmishin Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057 Хотя под виндой все ок...
Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM) Смотря что декодировать. Там тоже реализован ограниченный набор декодируемых структур. Проще декодировать примитивные ASN.1 типы и обрабатывать уже их. Просто исходное сообщение не декодируется. Т.е. корневой элемент. Да нет, простейшие типы ASN.1 прекрасно декодируются/кодируются в Linux. Так что-то ошибочно у вас в коде. |
С уважением, Юрий Строжевский |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
Автор: Юрий Автор: dmishin Автор: Юрий Автор: dmishin Под линуксом и CryptDecodeObject выдает ошибку: 0x00000057 Хотя под виндой все ок...
Остается только попробовать собрать массив из того что выдает CryptMsgGetParam(CMSG_SIGNER_AUTH_ATTR_PARAM) Смотря что декодировать. Там тоже реализован ограниченный набор декодируемых структур. Проще декодировать примитивные ASN.1 типы и обрабатывать уже их. Просто исходное сообщение не декодируется. Т.е. корневой элемент. Да нет, простейшие типы ASN.1 прекрасно декодируются/кодируются в Linux. Так что-то ошибочно у вас в коде. Как вариант - в сообщении возможно есть ошибка, которую win реализация прощает. Но на всякий случай проверю код.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
Заголовки добавил через CryptEncodeObject(X509_OCTET_STRING)
|
|
|
|
Форум КриптоПро
»
Устаревшие продукты
»
КриптоПро CSP 3.6
»
Проверка подписи не по данным а по хешу данных
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close