Развернуть все
Свернуть все

Особенности работы с данными в КриптоПро ЭЦП Browser plug-in

Особенности представления данных для подписи при работе с объектом CadesSignedData и CPHashedData

При использовании КриптоПро ЭЦП Browser plug-in данные, переданные при создании подписи, будут перекодированы в UCS-2 little endian и именно в таком виде данные будут подписаны. Это сделано для совместимости с теми ЭП, которые были созданы в Internet Explorer с использованием CAPICOM.

Ограничения размера подписываемых данных

В зависимости от конфигурации компьютера (используемая оперативная память, количество открытых вкладок браузера и т.п.) размер файлов, которые возможно будет подписать вариируется от 10 МБ до 60 МБ. Если есть необходимость подписания файлов большего размера, то рекомендуется использовать Подпись файла с использованием FileAPI

Задание кодировки подписываемых данных

Для того чтобы плагин узнал о способе кодирования данных для подписи, введено новое свойство ContentEncoding(DataEncoding для CPHashedData). ContentEncoding(DataEncoding) имеет следующие значения:

Значение Описание
CADESCOM_STRING_TO_UCS2LE = 0x00 Данные будут перекодированы в UCS-2 little endian.
CADESCOM_BASE64_TO_BINARY = 0x01 Данные будут перекодированы из Base64 в бинарный массив.

По умолчанию свойство ContentEncoding(DataEncoding для CPHashedData) имеет значение CADESCOM_STRING_TO_UCS2LE.

Замечание

Так как данные кодируются при задании или получении значения свойства Content(или вызова метода Hash() для CPHashedData), то ContentEncoding должно быть задано до этого момента.

Особенности работы с бинарными данными

Поддерживаемые КриптоПро ЭЦП Browser plug-in браузеры (IE, Firefox, Opera, Chrome, Safari) не предоставляют простого и надежного способа обработки бинарных данных. Таким образом, невозможно обеспечить корректную передачу бинарных данных из браузера в плагин и обратно.

При подписании произвольных данных рекомендуется предварительно закодировать их в Base64 и использовать свойство ContentEncoding.

По этой же причине для возвращаемых из КриптоПро ЭЦП Browser plug-in строк, в которых могут содержаться бинарные данные, не поддерживается кодировка CAPICOM_ENCODING_BINARY.

Это касается следующих методов: CadesSignedData.Sign, CadesSignedData.CoSign, CadesSignedData.SignCades, CadesSignedData.CoSignCades, CadesSignedData.EnhanceCades, CPAttribute.ValueEncoding, EncodedData.Value , Certificate.Export, EnvelopedData.Encrypt.

Особенности работы с документами XML, кодировки которых отличны от UTF-8

Поддерживаемые КриптоПро ЭЦП Browser plug-in браузеры (IE, Firefox, Opera, Chrome, Safari) не предоставляют простого и надежного способа обеспечить корректную передачу документов XML, кодировки которых отличны от UTF-8, из браузера в плагин и обратно.

При создании подписи или проверке таких документов рекомендуется предварительно закодировать их в Base64 и в закодированном виде передавать в свойство Content или метод Verify объекта CAdESCOM.SignedXML.

Для возвращаемых из КриптоПро ЭЦП Browser plug-in строк, документы XML будут представлены в той же кодировке, в которой они были переданы в КриптоПро ЭЦП Browser plug-in.

Замечание

Например, исходный документ XML содержит данные в кодировке UTF-16. Если этот документ будет передан в свойство Content объекта CAdESCOM.SignedXML в кодировке BASE64, то данные внутри документа будут подписаны в кодировке UTF-16. При этом возвращенный из метода Sign объекта CAdESCOM.SignedXML подписанный документ будет закодирован в BASE64. Если декодировать такой подписанный документ из BASE64, будет получен подписанный XML-документ с кодировкой UTF-16, подпись в котором должна успешно проверяться сторонними приложениями.

Это касается следующих методов: SignedXML.Sign, SignedXML.Verify, SignedXML.Content,