Статус: Участник
Группы: Участники
Зарегистрирован: 31.07.2013(UTC) Сообщений: 10 Откуда: Москва Сказал(а) «Спасибо»: 1 раз
|
Здравствуйте! Помогите пожалуйста решить проблему с получаемыми данными после снятия подписи. Стоит задача: автоматически проверять и снимать ЭЦП, т.е. у пользователя есть файл, например, test.txt с текстом "hello" внутри. Он подписывает этот файл (совмещенная подпись), получается файл с подписью test.txt.sig и отправляет его на мой сервер. Мне необходимо написать утилиту, которая работает на сервере и на входе получает путь к файлу test.txt.sig и в тот же каталог, где расположен файл с подписью рядом кладет файл test.txt со снятой подписью. Вот мой код для снятия подписи (на C#): Код:
private static void VerifyCombined(string fileName)
{
CAdESCOM.CadesSignedData signedData = new CAdESCOM.CadesSignedData();
try
{
string fileData = LoadFile(fileName);
if (!string.IsNullOrEmpty(fileData))
{
signedData.VerifyCades(fileData, CAdESCOM.CADESCOM_CADES_TYPE.CADESCOM_CADES_BES, false);
string result = signedData.Content;
string resultFileName = fileName.Substring(0, fileName.LastIndexOf(".sig"));
using (StreamWriter writer = new StreamWriter(resultFileName))
{
writer.Write(result);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
private static string LoadFile(string fileName)
{
string result = null;
if (File.Exists(fileName))
{
using (StreamReader reader = new StreamReader(fileName))
{
result = reader.ReadToEnd();
}
}
return result;
}
В результате выполнения метода VerifyCombined проверка проходит успешно, но в signedData.Content я получаю вместо "hello" абракадабру. Пробовал играться с кодировками - не помогает. Пробовал также перед вызовом метода VerifyCades добавлять Код:signedData.ContentEncoding = CAdESCOM.CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
И полученный результат писать с помощью BinaryWriter в файл, но это тоже ни к чему не приводит. Я попробовал сам написать метод, который будет подписывать файл. Вот файл с подписью, получаемый после работы моего метода отлично проверяется, подпись снимается и я получаю корректный результат, но если я снимаю подпись, которая сделана с помощью клиента КриптоАРМ, настроенного по умолчанию, получается вот такая вот проблема, описанная выше. Вопрос: может кто-то подсказать, как получить все-таки затерявшийся в процессе подписывания/снятие текст исходного файла test.txt?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Цитата:Пробовал также перед вызовом метода VerifyCades добавлять Код:signedData.ContentEncoding = CAdESCOM.CADESCOM_CONTENT_ENCODING_TYPE.CADESCOM_BASE64_TO_BINARY;
И полученный результат писать с помощью BinaryWriter в файл, но это тоже ни к чему не приводит. Полученный результат нужно декодировать из BASE64.
|
1 пользователь поблагодарил Новожилова Елена за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 31.07.2013(UTC) Сообщений: 10 Откуда: Москва Сказал(а) «Спасибо»: 1 раз
|
Спасибо за ваш ответ. Я делал декодирование, но делал в UTF8 и получал ерунду, при декодировании в кодировку по умолчанию данные стали корректно возвращаться после снятия ЭЦП.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Нет-нет. Никакой кодировки по умолчанию не надо - декодируйте из BASE64 как бинарные данные и в файл пишите как бинарные данные. Или у вас подписаны могут быть только строки и только в кодировке по умолчанию?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 31.07.2013(UTC) Сообщений: 10 Откуда: Москва Сказал(а) «Спасибо»: 1 раз
|
Да, понял, спасибо. Просто тренировался на текстовых файлах. А так в общем случае да, декодирование из BASE64 и полученный массив байт пишу в файл.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close