Статус: Участник
Группы: Участники
Зарегистрирован: 10.04.2017(UTC) Сообщений: 15 Откуда: Россия
Сказал(а) «Спасибо»: 1 раз
|
Здравствуйте! Есть вебинтерфейс с установленным плагином, в нём создаётся подпись по примеру отсюда http://cpdn.cryptopro.ru/?url=/content/cades/reference.html На выходе получаем строку base64. Задача следующая, сравнить содержимое с оригиналом, сама подпись проверку проходит, но примера, как сравнить содержимое с оригиналом, я не нашёл. Подскажите, можно ли это сделать, и как, если можно?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.04.2017(UTC) Сообщений: 15 Откуда: Россия
Сказал(а) «Спасибо»: 1 раз
|
Полученный base64 конвертирую в массив byte[] imageBytes = Convert.FromBase64String(signedData); Потом выполняю следующие действия SignedCms signedCms = new SignedCms(); // Декодируем сообщение signedCms.Decode(imageBytes); var content = signedCms.ContentInfo.Content; // тут пустой массив байт, хотя в SignerInfos информация о подписанте присутствует
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
Здравствуйте. Автор: RomanK Полученный base64 конвертирую в массив byte[] imageBytes = Convert.FromBase64String(signedData); Потом выполняю следующие действия SignedCms signedCms = new SignedCms(); // Декодируем сообщение signedCms.Decode(imageBytes); var content = signedCms.ContentInfo.Content; // тут пустой массив байт, хотя в SignerInfos информация о подписанте присутствует
Отсоединенная подпись? |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
Автор: RomanK Задача следующая, сравнить содержимое с оригиналом, сама подпись проверку проходит, но примера, как сравнить содержимое с оригиналом, я не нашёл. Тип подписи какой? Присоединенная? Тогда внутри то, что было подписано. Как проверяете? Если подпись отсоединенная и проходит проверку - то нет "еще одного файла-оригинала". Если присоединенная - то внутри то, что было подписано. Можно извлечь и... сверить с тем, что подавали на подписание (оригинал) - сверить хеши, например, если подразумеваете, что "подписали" не те байты, что в оригинале (неправильно считали файл, закодировали лишний раз и прочие ошибки "на старте") |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
Автор: RomanK Полученный base64 конвертирую в массив byte[] imageBytes = Convert.FromBase64String(signedData); Потом выполняю следующие действия SignedCms signedCms = new SignedCms(); // Декодируем сообщение signedCms.Decode(imageBytes); var content = signedCms.ContentInfo.Content; // тут пустой массив байт, хотя в SignerInfos информация о подписанте присутствует
а проверка где? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.04.2017(UTC) Сообщений: 15 Откуда: Россия
Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей * Здравствуйте. Автор: RomanK Полученный base64 конвертирую в массив byte[] imageBytes = Convert.FromBase64String(signedData); Потом выполняю следующие действия SignedCms signedCms = new SignedCms(); // Декодируем сообщение signedCms.Decode(imageBytes); var content = signedCms.ContentInfo.Content; // тут пустой массив байт, хотя в SignerInfos информация о подписанте присутствует
Отсоединенная подпись? Подпись присоединённая. При этом если подписать средствами КриптоПро .NET и проделать ту же самую процедуру, signedCms.ContentInfo.Content содержит нужную информацию, а подпись с плагина увы.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.04.2017(UTC) Сообщений: 15 Откуда: Россия
Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей * Автор: RomanK Полученный base64 конвертирую в массив byte[] imageBytes = Convert.FromBase64String(signedData); Потом выполняю следующие действия SignedCms signedCms = new SignedCms(); // Декодируем сообщение signedCms.Decode(imageBytes); var content = signedCms.ContentInfo.Content; // тут пустой массив байт, хотя в SignerInfos информация о подписанте присутствует
а проверка где? Есть некоторая строка, которую нужно подписать. Преобразую в base64 отправляю плагину, который её подписывает Код:var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
yield oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
oSignedData.propset_Content(dataToSign);
var sSignedMessage = '';
try {
sSignedMessage = yield oSignedData.SignCades(oSigner, cadesplugin.CADESCOM_CADES_BES, true);
args[2](sSignedMessage);
} catch (err) {
args[3]('Failed to create signature. Error: ' + Org25SR.getErrorMessage(err));
}
Возвращается подпись в виде base64 Вопрос как извлечь содержимое. Никаких действий с подписью не происходит кроме того, что приведено в примерах. Полагаю, что содержимое должно находиться в signedCms.ContentInfo.Content, но там пустой массив без данных
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
Автор: RomanK Автор: Андрей * Автор: RomanK Полученный base64 конвертирую в массив byte[] imageBytes = Convert.FromBase64String(signedData); Потом выполняю следующие действия SignedCms signedCms = new SignedCms(); // Декодируем сообщение signedCms.Decode(imageBytes); var content = signedCms.ContentInfo.Content; // тут пустой массив байт, хотя в SignerInfos информация о подписанте присутствует
а проверка где? Есть некоторая строка, которую нужно подписать. Преобразую в base64 отправляю плагину, который её подписывает Код:var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
yield oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
oSignedData.propset_Content(dataToSign);
var sSignedMessage = '';
try {
[h] sSignedMessage = yield oSignedData.SignCades(oSigner, cadesplugin.CADESCOM_CADES_BES, true);[/h]
args[2](sSignedMessage);
} catch (err) {
args[3]('Failed to create signature. Error: ' + Org25SR.getErrorMessage(err));
}
Возвращается подпись в виде base64 Вопрос как извлечь содержимое. Никаких действий с подписью не происходит кроме того, что приведено в примерах. Полагаю, что содержимое должно находиться в signedCms.ContentInfo.Content, но там пустой массив без данных Читайте документацию для .SignCadesУ Вас отсоединенная подпись. |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 12,691 Сказал «Спасибо»: 500 раз Поблагодарили: 2046 раз в 1586 постах
|
На тестовой странице - подпишите файл и убедитесь, что подписанные данные доступны из .NET, т.к. в примере создаётся присоединенная подпись. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.04.2017(UTC) Сообщений: 15 Откуда: Россия
Сказал(а) «Спасибо»: 1 раз
|
Автор: Андрей * На тестовой странице - подпишите файл и убедитесь, что подписанные данные доступны из .NET, т.к. в примере создаётся присоединенная подпись. Проверил, данные доступны. Где можно посмотреть код тестовой страницы работы с плагином?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close