Следующий идентификатор определяет тип содержимого SignedData:
id-signedData OBJECT IDENTIFIER ::=
{
iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2
}
Содержимое типа "подписанные данные" представлено в виде структуры SignedData. Структура SignedData в формате АСН.1 приведена следующим образом:
SignedData ::= SEQUENCE
{
version CMSVersion,
digestAlgorithms DigestAlgorithmldentifiers,
encapContentlnfо EncapsulatedContentInfo,
certificates [0] IMPLICIT CertificateSet
OPTIONAL,
crls[1] IMPLICIT RevocationlnfoChoices
OPTIONAL,
signerlnfos Signerlnfos
}
DigestAlgorithmldentifiers ::= SET OF
DigestAlgorithmldentifier
DigestAlgorithmldentifier := Algorithmldentifier
Signerlnfos ::= SET OF Signerlnfo
Типы CMSVersion, Algorithmldentifier, CertificateSet, RevocationlnfoChoices определены в разделе 14; тип EncapsulatedContentlnfo - в 7.2, тип Signerlnfo - в 7.3.
Поля структуры SignedData имеют следующий смысл:
- version - версия синтаксиса. Точное значение зависит от полей CertificateSet, eContentType и Signerlnfo. Версия синтаксиса должна быть определена согласно [1], 5.1;
- digestAlgorithms - набор идентификаторов алгоритмов хэширования. Набор может состоять из любого числа элементов, не может быть пустым. Каждый элемент определяет алгоритм хэширования со своими параметрами, используемыми одним или несколькими отправителями. Набор идентификаторов предназначен для указания алгоритмов хэширования, используемых всеми получателями, в любом порядке для облегчения проверки подписи за один проход. Подписи, использующие алгоритм хэширования, который не входит в данный набор, можно не проверять. Процесс вычисления значения хэш-функции описан в 7.4;
- encapContentlnfo - подписываемое содержимое; которое состоит из идентификатора типа содержимого и самого содержимого. Подробнее структура EncapsulatedContentlnfo описана в 7.2;
- certificates - набор сертификатов. Предполагается, что множество сертификатов достаточно, для того чтобы построить цепочки сертификатов от корня или от центра сертификации верхнего уровня до всех субъектов в Signerlnfo. Сертификатов может быть больше, чем это необходимо для построения цепочки сертификатов от двух или более центров сертификации верхнего уровня. Сертификатов может быть меньше, чем это необходимо, если получатели имеют альтернативные способы получения необходимых сертификатов (например, из предыдущего набора сертификатов). Сертификат отправителя, подписавшего сообщение, также может быть включен в сообщение;
- crls - списки аннулированных сертификатов. Предполагается, что САС достаточно, для того чтобы проверить корректность сертификата на отзыв, но эта проверка не обязательна;