SignedContent

message SignedContent {
    optional bytes Content = 1;
    optional bytes Signature = 2;
    optional bool SignByAttorney = 3 [default = false];
    optional string NameOnShelf = 4;
    optional bool SignWithTestSignature = 5 [default = false];
    optional string SignatureNameOnShelf = 6;
}

Структура данных SignedContent служит для представления подписанных ЭП данных в отправляемом сообщении:

  • Content - подписываемые данные (бинарное представление документа). Должно оставаться пустым (не заполняться), если заполнено поле NameOnShelf.
  • NameOnShelf - имя файла с подписываемыми данными на «полке документов». Должно оставаться пустым (не заполняться), если содержимое подписанного документа размещено в поле Content.
  • Signature - ЭП (в некоторых случаях может отсутствовать). Если ЭП присутствует, то она должна быть представлена в формате CMS SignedData в DER-кодировке.
  • SignByAttorney - флаг, который позволяет запросить формирование ЭП под пересылаемыми данными «по доверенности».
  • SignWithTestSignature - флаг, который позволяет запросить формирование тестовой ЭП под пересылаемыми данными.
  • SignatureNameOnShelf - имя подписи на «полке документов».

Значения полей в данной структуре обязаны быть согласованы следующим образом:

  • SignWithTestSignature = false, SignByAttorney = false: типовая ситуация формирования структуры SignedContent для подписываемого документа; в этом случае ЭП обязана присутствовать в поле Signature;
  • SignWithTestSignature = true, SignByAttorney = false: для документа запрашивается формирование тестовой подписи; в этом случае поле Signature должно оставаться пустым.
  • SignWithTestSignature = false, SignByAttorney = true: для документа запрашивается формирование ЭП «по доверенности» (подпись будет добавлена позже); в этом случае поле Signature должно оставаться пустым.
  • SignWithTestSignature = true, SignByAttorney = true: недопустимая комбинация флагов; не должна использоваться.

Следует придерживаться следующей схемы использования структуры SignedContent. Если подписываемый документ имеет небольшой размер (не превышает 500Кб), его бинарное представление можно разместить непосредственно в структуре SignedContent в поле Content.

Если же размер документа не укладывается в эти ограничения, следует предварительно загрузить этот документ на «полку документов» при помощи серии вызовов ShelfUpload, а затем указать имя документа на «полке» в поле NameOnShelf структуры SignedContent.

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

Ограничения на размер передаваемых документов действуют не только на уровне отдельного документа, но и на уровне запроса к серверу.

А именно, если запрос к серверу содержит несколько документов (несколько структур SignedContent), то суммарный размер передаваемых в рамках запроса данных не должен превышать 5Мб (с учетом передаваемой служебной информации).

Поэтому для повышения устойчивости интеграционного решения использование загрузки документов через сервис «полки документов» является рекомендуемым.