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

Особенности представления данных в интерфейсе COM

Ниже рассматриваются особенности представления данных при работе с объектом CAPICOM.SignedData . Аналогичное поведение характерно для объекта CadesSignedData.

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

Подаваемые на подпись данные рассматриваются исключительно как последовательность байт, независимо от кодировки, в которой данная последовательность байт представлена. Так, в ряде языков строка представляет собой массив символов, каждый из которых закодирован двумя байтами. Подобная строка из 5 символов будет проинтерпретирована при создании подписи как массив из 10 байт. Строка, закодированная в BASE64 Unicode также будет рассматриваться как последовательность байт, никакого перекодирования в DER при создании подписи не производится.

Данный факт следует учитывать при проверке отделенной подписи - данные, подаваемые в свойство Content при проверке, должны быть (представленные в виде последовательности байт) полностью идентичны данным, которые были поданы в свойство Content при создании подписи.

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

При создании электронной цифровой подписи подписанное сообщение может быть получено в одной из двух кодировок:
  • Кодировка DER. Бинарное представление данных, данной кодировке соответствует параметр CAPICOM_ENCODE_BINARY перечисления CAPICOM.CAPICOM_ENCODING_TYPE .

  • Кодировка BASE64 Unicode. Данной кодировке соответствует параметр CAPICOM_ENCODE_BASE64 перечисления CAPICOM.CAPICOM_ENCODING_TYPE .

При проверке подписи подписанное сообщение можно подавать в метод Verify как в кодировке BASE64 Unicode (с заголовками и без заголовков), так и в кодировке DER. Единственное исключение - нельзя подавать подписанное сообщение в кодировке BASE64 ANSI (ни с заголовками, ни без них), так как данный формат представления подписанного сообщения не поддерживается в CAPICOM.

Замечание

Обратите внимание, что если при создании подписи указан параметр CAPICOM_ENCODE_BASE64, возвращаемое подписанное сообщение не будет содержать заголовков. В то время, как при проверке подписи, в проверяемом сообщении заголовки могут как отсутствовать, так и присутствовать, в последнем случае они будут проигнорированы.


Замечание

В КриптоПро ЭЦП Browser plug-in кодировка DER (параметр CAPICOM_ENCODE_BINARY) не поддерживается.