Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Клим Никитский  
#1 Оставлено : 11 июня 2021 г. 10:32:13(UTC)
Клим

Статус: Участник

Группы: Участники
Зарегистрирован: 11.06.2021(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Добрый день!
Подскажите, пожалуйста, можно ли с помощью интерфейса КриптоПро ЭЦП Browser plug-in на JavaScript реализовать отделение файла от присоединённой подписи, чтобы можно было просмотреть файл в исходном формате.
Если можно, то подскажите, какие функции или компоненты CAdESCOM для этого нужно использовать?
Offline Андрей *  
#2 Оставлено : 11 июня 2021 г. 10:55:16(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,447
Мужчина
Российская Федерация

Сказал «Спасибо»: 385 раз
Поблагодарили: 1562 раз в 1202 постах
Здравствуйте.

После выполнения проверки подписи, запросите Content
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Клим оставлено 11.06.2021(UTC)
Offline Клим Никитский  
#3 Оставлено : 11 июня 2021 г. 17:20:37(UTC)
Клим

Статус: Участник

Группы: Участники
Зарегистрирован: 11.06.2021(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Запросил Content, но он состоит из иероглифов.
Нужно использовать ещё что-то чтобы его расшифровать?
Offline Андрей *  
#4 Оставлено : 11 июня 2021 г. 18:39:10(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,447
Мужчина
Российская Федерация

Сказал «Спасибо»: 385 раз
Поблагодарили: 1562 раз в 1202 постах
Автор: Клим Никитский Перейти к цитате
Запросил Content, но он состоит из иероглифов.
Нужно использовать ещё что-то чтобы его расшифровать?


А что было подписано?
Техническую поддержку оказываем тут
Наша база знаний
Offline Клим Никитский  
#5 Оставлено : 11 июня 2021 г. 19:15:34(UTC)
Клим

Статус: Участник

Группы: Участники
Зарегистрирован: 11.06.2021(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате
Автор: Клим Никитский Перейти к цитате
Запросил Content, но он состоит из иероглифов.
Нужно использовать ещё что-то чтобы его расшифровать?


А что было подписано?


Я подписал файлы txt, jpg и doc.

Для txt получился вот такой Content:
瑨灴⼺氯捯污潨瑳眯扥灟条獥振摡獥搯歶挮浯眯污⵬㤲㘴㠶㘷ㅟㄹ
Для jpg:
�က䙊䙉Āā怀怀
Для doc:
䭐Ѓ

Проверил подписи с помощью КриптоАРМ, используя операцию "Снять и проверить ЭП", подписи были проверены успешно и файлы отсоединены корректно.
Offline Андрей *  
#6 Оставлено : 11 июня 2021 г. 19:38:28(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,447
Мужчина
Российская Федерация

Сказал «Спасибо»: 385 раз
Поблагодарили: 1562 раз в 1202 постах
Покажите, как смотрите...
Техническую поддержку оказываем тут
Наша база знаний
Offline Клим Никитский  
#7 Оставлено : 12 июня 2021 г. 11:28:57(UTC)
Клим

Статус: Участник

Группы: Участники
Зарегистрирован: 11.06.2021(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Автор: Андрей * Перейти к цитате
Покажите, как смотрите...


Сначала проверяю подпись, потом получаю содержимое подписи и создаю файл с этим содержимым.
Но если initialData сразу после получения вывести в консоль или посмотреть с помощью alert, то там уже будут иероглифы.
fileSignName - это имя файла присоединённой подписи, у которого было убрано расширение sig.

Код:
...
var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");
yield oSignedData.VerifyCades(signature, signType, signDetached);
var initialData = yield oSignedData.Content;
CreateFile(initialData, fileSignName);
...


Код:
function CreateFile(data, filename)
{
    var file = new Blob([data], {type: ""});
	
    var a = document.createElement("a"), url = URL.createObjectURL(file);
    a.href = url;
    a.download = filename;
    document.body.appendChild(a);
    a.click();
    setTimeout(function() {
        document.body.removeChild(a);
        window.URL.revokeObjectURL(url);  
    }, 0);    
}


Может нужно до или после получения содержимого, преобразовать его из бинарного массива в base64?
При создании подписи я использовал:

Код:
yield oSignedData.propset_ContentEncoding(cadesplugin.CADESCOM_BASE64_TO_BINARY);
Offline Андрей *  
#8 Оставлено : 12 июня 2021 г. 13:04:00(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,447
Мужчина
Российская Федерация

Сказал «Спасибо»: 385 раз
Поблагодарили: 1562 раз в 1202 постах
Да, установить ContentEncoding, проверить, получить и декодировать из base64.

Код:
 
var oSignedData2 = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");

yield oSignedData2.propset_ContentEncoding(1); //CADESCOM_BASE64_TO_BINARY

yield oSignedData2.VerifyCades(Signature, CADES_BES, detached);

var initialData = yield oSignedData2.Content;  

var oMyBlob = new Blob([Base64Binary.decode(initialData)], {type:'application/octet-stream'});    

window.open(URL.createObjectURL(oMyBlob));  



Base64Binary.zip (2kb) загружен 2 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#9 Оставлено : 12 июня 2021 г. 13:07:02(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,447
Мужчина
Российская Федерация

Сказал «Спасибо»: 385 раз
Поблагодарили: 1562 раз в 1202 постах
Об этом написано в документации

Цитата:
Особенности работы с бинарными данными
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#10 Оставлено : 12 июня 2021 г. 13:12:14(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 10,447
Мужчина
Российская Федерация

Сказал «Спасибо»: 385 раз
Поблагодарили: 1562 раз в 1202 постах
т.е. в исходном - подключить Base64Binary.js и внести 2 правки:
Код:


var oSignedData = yield cadesplugin.CreateObjectAsync("CAdESCOM.CadesSignedData");

yield oSignedData.propset_ContentEncoding(1); //CADESCOM_BASE64_TO_BINARY

yield oSignedData.VerifyCades(signature, signType, signDetached);
var initialData = yield oSignedData.Content;

CreateFile(Base64Binary.decode(initialData), fileSignName);
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Клим оставлено 15.06.2021(UTC)
Offline Клим Никитский  
#11 Оставлено : 15 июня 2021 г. 11:02:43(UTC)
Клим

Статус: Участник

Группы: Участники
Зарегистрирован: 11.06.2021(UTC)
Сообщений: 12
Российская Федерация

Сказал(а) «Спасибо»: 6 раз
Поблагодарили: 1 раз в 1 постах
Заработало, большое спасибо за помощь!
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.