Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2013(UTC) Сообщений: 18
|
Да, проверил. Но при этом попытка расшифровать его с помощью CryptDecryptMessage заканчивается ошибкой "Набор ключей не определен. (0x80090019)" При этом если использовать CryptEncryptMessage на тех же входящих данных, то расшифровка проходит успешно. Пример файла зашифрованного CryptEncryptMessageUpd: Нашел различия в параметрах алгоритма Алгоритм шифрования содержимого: В стриме 0000 30 13 04 08 b6 66 38 fa 69 c9 97 35 06 07 2a 85 0010 03 02 02 1f 01 04 08 c4 6e 63 71 e1 6e e1 2bв блоке из CryptEncryptMessage 0000 30 13 04 08 c4 6e 63 71 e1 6e e1 2b 06 07 2a 85 0010 03 02 02 1f 01 04 08 b6 66 38 fa 69 c9 97 35Отсюда вытекает вопрос какие параметры алгоритма выставляются в CryptEncryptMessage? Отредактировано пользователем 20 сентября 2013 г. 17:40:29(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
|
Причем тут CryptEncryptMessage? Код приведен для работы с другой функции. |
С уважением, Юрий Строжевский |
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2013(UTC) Сообщений: 18
|
При том, что требуется обеспечение совместимости данных зашифрованных через поток (CryptMsgOpenToEncode) и данных полученных полученных через CryptEncryptMessage.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
|
Автор: olin  Это нормальное CMS-сообщение. Можете проверить себя с помощью Код:
certutil encrypted_enveloped_stream.dat
На самом деле это утверждение ложно. В конце представленного сообщения записан "мусор". Предупреждение от dumpasn1: Warning: Further data follows ASN.1 data at position 2958. Поэтому и ошибки с CryptDecryptMessage. В общем ищите что там у вас делается с записью в поток, особенно на завершающем этапе. |
С уважением, Юрий Строжевский |
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,519
Сказал(а) «Спасибо»: 42 раз Поблагодарили: 617 раз в 427 постах
|
Автор: Юрий  Автор: olin  Это нормальное CMS-сообщение. Можете проверить себя с помощью Код:
certutil encrypted_enveloped_stream.dat
На самом деле это утверждение ложно. В конце представленного сообщения записан "мусор". Предупреждение от dumpasn1: Warning: Further data follows ASN.1 data at position 2958. Я бы не был столь уверенным в правильности работы dumpasn1: в поточно-созданных сообщениях с неопределённой длинной блока (NDEF) она вообще находит ошибки... 2 burning-dragon: а можете прислать в личку контейнер с сертификатом? Можно как файлы, можно как экспортированную ветку реестра... |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
|
Автор: olin  Автор: Юрий  Автор: olin  Это нормальное CMS-сообщение. Можете проверить себя с помощью Код:
certutil encrypted_enveloped_stream.dat
На самом деле это утверждение ложно. В конце представленного сообщения записан "мусор". Предупреждение от dumpasn1: Warning: Further data follows ASN.1 data at position 2958. Я бы не был столь уверенным в правильности работы dumpasn1: в поточно-созданных сообщениях с неопределённой длинной блока (NDEF) она вообще находит ошибки... Если есть сомнения то посчитайте "руками": вот первые четыре байта из проверяемого файла Цитата:0x30 0x82 0x0B 0x8A По этим байтам можно видеть, что верхняя объемлющая структура имеет тип SEQUENCE и длину в 2954 байт. Добавляя эти первые 4 байта получаем, что весь файл должен быть не длиннее 2958 байт, что совпадает с данными dumpasn1. Длина же проверяемого файла составляет 3041 байт, что позволяет утверждать, что в конце записан "мусор". Отредактировано пользователем 21 сентября 2013 г. 7:12:36(UTC)
| Причина: Не указана |
С уважением, Юрий Строжевский |
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,785   Сказал «Спасибо»: 582 раз Поблагодарили: 2311 раз в 1810 постах
|
Автор: olin  Автор: Юрий  Автор: olin  Это нормальное CMS-сообщение. Можете проверить себя с помощью Код:
certutil encrypted_enveloped_stream.dat
На самом деле это утверждение ложно. В конце представленного сообщения записан "мусор". Предупреждение от dumpasn1: Warning: Further data follows ASN.1 data at position 2958. Я бы не был столь уверенным в правильности работы dumpasn1: в поточно-созданных сообщениях с неопределённой длинной блока (NDEF) она вообще находит ошибки... . Да, есть другие программы, которые игнорируют мусор (ASN.1 Dump Utility, использует код из ASN dump). Прикрепляю свой пример файла: поточно-созданного сообщения (зашифрованного) - не выдает сообщения о проблемах с ASN1. Смотрел в ASN.1 Dump Utility и guiDumpASN-ng ( использует код из ASN dump) Вложение(я):  27D9F561.zip (86kb) загружен 4 раз(а).У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
|
Автор: Андрей *  Автор: olin  Автор: Юрий  Автор: olin  Это нормальное CMS-сообщение. Можете проверить себя с помощью Код:
certutil encrypted_enveloped_stream.dat
На самом деле это утверждение ложно. В конце представленного сообщения записан "мусор". Предупреждение от dumpasn1: Warning: Further data follows ASN.1 data at position 2958. Я бы не был столь уверенным в правильности работы dumpasn1: в поточно-созданных сообщениях с неопределённой длинной блока (NDEF) она вообще находит ошибки... . Да, есть другие программы, которые игнорируют мусор (ASN.1 Dump Utility, использует код из ASN dump). Прикрепляю свой пример файла: поточно-созданного сообщения (зашифрованного) - не выдает сообщения о проблемах с ASN1. Смотрел в ASN.1 Dump Utility и guiDumpASN-ng ( использует код из ASN dump) Собственно дело не в том, что в поточно-созданном сообщении всегда есть мусор. Наоборот - обычно его там нет. Мой вариант работы с сообщениями, созданными с использованием "потоков" был успешно создан и работает в КриптоАрм уже 10 лет (кстати в октябре-ноябре КриптоАрму будет ровно 10 лет! Та-дам!). |
С уважением, Юрий Строжевский |
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 19.09.2013(UTC) Сообщений: 18
|
Для исключения возможности попадания в поток лишних данных ввел дополнительный контроль в callback-е. Ситуацию это не изменило. Еще хочу отметить, что на содержимое потока существенное влияние оказывает значение CMSG_STREAM_INFO::cbContent. Например при значении 1024 (как и при -1) данные становятся не валидными в смысле ASN1. Пороговое значение не определял, но при значениях от 1 до 512 данные успешно извлекаются той же certutil. При этом при попытке расшифровать возникает та же ошибка отсутствия ключей. Так же указанная величина существенно влияет на содержимое данных.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 671   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
|
Автор: burning-dragon  Для исключения возможности попадания в поток лишних данных ввел дополнительный контроль в callback-е. Ситуацию это не изменило. Еще хочу отметить, что на содержимое потока существенное влияние оказывает значение CMSG_STREAM_INFO::cbContent. Например при значении 1024 (как и при -1) данные становятся не валидными в смысле ASN1. Пороговое значение не определял, но при значениях от 1 до 512 данные успешно извлекаются той же certutil. При этом при попытке расшифровать возникает та же ошибка отсутствия ключей. Так же указанная величина существенно влияет на содержимое данных. Поймите что очень у многих людей до вас получалось использовать потоковые функции. И результат этих функций потом упешно читался функцией CryptDecryptMessage. С кодом, относящимся к CryptoAPI, вроде все нормально, но тем не менее "мусор" в вашем выходном сообщении есть. Так что просто ищите что же ошибочно в коде, не относящемся к CryptoAPI. Поменяйте цикл чтения из потока, перепишите все без использования "умных" объектов. Возможно что-то у себя и найдёте. То есть ещё раз - скорее всего ошибка где-то в вашей программе в части не относящейся к CryptoAPI. Экспериментируйте. |
С уважением, Юрий Строжевский |
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close