Статус: Участник
Группы: Участники
Зарегистрирован: 16.09.2021(UTC) Сообщений: 24
|
Добрый день! Использую библиотеку CoreFx для проверки подписи. Проверка происходит кодом: Код:ContentInfo contentInfo = new ContentInfo(msg);
// Создаем SignedCms для декодирования и проверки.
SignedCms signedCms = new SignedCms(contentInfo, true);
// Декодируем подпись
signedCms.Decode(encodedSignature);
signedCms.CheckSignature(true);
У меня есть два файла для проверки. Первый был подписан при помощи кода Diadoc, второй при помощи утилиты CryptCp. Код Диадок создаёт подпись и проверяет её через Crypt32.dll (если я правильно понял). CoreFx подключен через nuget package, согласно его инструкции на гитхабе. CryptCp подписывает при помощи команды -signf Первый файл декодируется и проверяется успешно. Второй файл выдаёт ошибку на этапе Decode: Код:System.Security.Cryptography.CryptographicException: 'ASN1 corrupted data.'
Как такое может быть и куда смотреть? Файлы могу приложить в принципе.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.07.2018(UTC) Сообщений: 467
Сказал(а) «Спасибо»: 43 раз Поблагодарили: 69 раз в 61 постах
|
Проблема может быть в том, что одна подпись в "формате" DER, a вторая - в Base64. Отредактировано пользователем 12 января 2022 г. 10:06:17(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Автор: ZiCold Второй файл выдаёт ошибку на этапе Decode: Код:System.Security.Cryptography.CryptographicException: 'ASN1 corrupted data.'
Как такое может быть и куда смотреть? Файлы могу приложить в принципе. Когда нет информации, что получается от утилит\сервисов в файле, такое может быть почти с каждым, но не всеми... Кто-то идёт немного дальше, сравнивает размеры или осмеливается открывать в каких-то редакторах и видит... или asn.1 или base64... делает выводы и сам декодирует, получая нужный вид (asn1), прежде чем отправлять в Decode поток байт... |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.09.2021(UTC) Сообщений: 24
|
Автор: TolikTipaTut1 Проблема может быть в том, что одна подпись в "формате" DER, a вторая - в Base64. Хорошо, а как можно это проверить программно? Например, запустить метод с другими параметрами?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.09.2021(UTC) Сообщений: 24
|
Автор: Андрей * или asn.1 или base64... делает выводы и сам декодирует, получая нужный вид (asn1), прежде чем отправлять в Decode поток байт... Есть какой-то способ это делать программно?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.07.2018(UTC) Сообщений: 467
Сказал(а) «Спасибо»: 43 раз Поблагодарили: 69 раз в 61 постах
|
Автор: ZiCold Автор: TolikTipaTut1 Проблема может быть в том, что одна подпись в "формате" DER, a вторая - в Base64. Хорошо, а как можно это проверить программно? Например, запустить метод с другими параметрами? Ну вы exception отловили и попробовали иначе сделать |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 16.09.2021(UTC) Сообщений: 24
|
Автор: TolikTipaTut1 Автор: ZiCold Автор: TolikTipaTut1 Проблема может быть в том, что одна подпись в "формате" DER, a вторая - в Base64. Хорошо, а как можно это проверить программно? Например, запустить метод с другими параметрами? Ну вы exception отловили и попробовали иначе сделать Я пытаюсь поменять кодирование var docBytes = System.IO.File.ReadAllBytes(Path.Combine(dir, docName)); var docStr64 = Convert.ToBase64String(docBytes); var docBytes64 = Encoding.ASCII.GetBytes(docStr64); Но ошибка та же самая: ASN1 corrupted data Что еще можно сделать? Меня удивляет, что проблема именно с файлом, который подписала утилита КриптоПро CryptCp, а не сторонняя программа.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.07.2018(UTC) Сообщений: 467
Сказал(а) «Спасибо»: 43 раз Поблагодарили: 69 раз в 61 постах
|
Автор: ZiCold Автор: TolikTipaTut1 Автор: ZiCold Автор: TolikTipaTut1 Проблема может быть в том, что одна подпись в "формате" DER, a вторая - в Base64. Хорошо, а как можно это проверить программно? Например, запустить метод с другими параметрами? Ну вы exception отловили и попробовали иначе сделать Я пытаюсь поменять кодирование var docBytes = System.IO.File.ReadAllBytes(Path.Combine(dir, docName)); var docStr64 = Convert.ToBase64String(docBytes); var docBytes64 = Encoding.ASCII.GetBytes(docStr64); Но ошибка та же самая: ASN1 corrupted data Что еще можно сделать? Меня удивляет, что проблема именно с файлом, который подписала утилита КриптоПро CryptCp, а не сторонняя программа. Файл пришлите |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Автор: ZiCold Автор: TolikTipaTut1 Автор: ZiCold Автор: TolikTipaTut1 Проблема может быть в том, что одна подпись в "формате" DER, a вторая - в Base64. Хорошо, а как можно это проверить программно? Например, запустить метод с другими параметрами? Ну вы exception отловили и попробовали иначе сделать Я пытаюсь поменять кодирование var docBytes = System.IO.File.ReadAllBytes(Path.Combine(dir, docName)); var docStr64 = Convert.ToBase64String(docBytes); var docBytes64 = Encoding.ASCII.GetBytes(docStr64); Но ошибка та же самая: ASN1 corrupted data Что еще можно сделать? Меня удивляет, что проблема именно с файлом, который подписала утилита КриптоПро CryptCp, а не сторонняя программа. И что же делает написанное? |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.07.2018(UTC) Сообщений: 467
Сказал(а) «Спасибо»: 43 раз Поблагодарили: 69 раз в 61 постах
|
Автор: Андрей * Автор: ZiCold Автор: TolikTipaTut1 Автор: ZiCold Автор: TolikTipaTut1 Проблема может быть в том, что одна подпись в "формате" DER, a вторая - в Base64. Хорошо, а как можно это проверить программно? Например, запустить метод с другими параметрами? Ну вы exception отловили и попробовали иначе сделать Я пытаюсь поменять кодирование var docBytes = System.IO.File.ReadAllBytes(Path.Combine(dir, docName)); var docStr64 = Convert.ToBase64String(docBytes); var docBytes64 = Encoding.ASCII.GetBytes(docStr64); Но ошибка та же самая: ASN1 corrupted data Что еще можно сделать? Меня удивляет, что проблема именно с файлом, который подписала утилита КриптоПро CryptCp, а не сторонняя программа. И что же делает написанное? А, лол, я только внимание обратил на encoding.getbytes |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close