Особенности представления данных для подписи при работе с объектом 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,
Особенности работы с документами 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, подпись в котором должна успешно проверяться сторонними приложениями. |