Информация для каждого подписавшего представлена в виде структуры Signerlnfo:
Signerlnfo ::= SEQUENCE
{
version CMSVersion,
sid Signerldentifier,
digestAlgorithm DigestAlgorithmldentifier,
signedAttrs[0] IMPLICIT SignedAttributes OPTIONAL,
signatureAlgorithm SignatureAlgorithmldentifier,
signature SignatureValue,
unsignedAttrs[1] IMPLICIT UnsignedAttributes OPTIONAL
}
Signerldentifier ::= CHOICE
{
issuerAndSerialNumber IssuerAndSerialNumber,
subjectKeyldentifier [0] SubjectKeyldentifier
}
SubjectKeyldentifier ::= OCTET STRING
DigestAlgorithmldentifier := Algorithmldentifier
SignatureAlgorithmldentifier := Algorithmldentifier
SignedAttributes ::= SET SIZE (1..MAX) OF Attribute
UnsignedAttributes ::= SET SIZE (1..MAX) OF Attribute
SignatureValue ::= OCTET STRING
Типы CMSVersion, Algorithmldentifier, CertificateSet, RevocationlnfoChoices, IssuerAndSerialNumber, Attribute определены в разделе 14.
Поля структуры Signerlnfo имеют следующий смысл:
- version - версия синтаксиса; значение данного параметра зависит от варианта указания ключа проверки ЭП отправителя (более подробно см. поле sid, определенное ниже). Версия синтаксиса должна быть определена согласно [1], 5.3;
- sid - поле, определяющее сертификат отправителя (и соответственно его ключ проверки ЭП). Ключ проверки ЭП отправителя необходим получателю для проверки подписи. Signerldentifier предоставляет два варианта указания ключа проверки ЭП отправителя. Первый вариант issuerAndSerialNumber идентифицирует отправителя по выделенному имени издателя (см. ГОСТ Р ИСО/МЭК 9594-2) и порядковому номеру. Второй вариант subjectKeyldentifier идентифицирует ключ проверки ЭП отправителя. При ссылке на Х.509 сертификат идентификатор ключа должен совпадать с расширением subjectKeyldentifier сертификата. При использовании других ссылок на сертификат документы, которые определяют формат сертификата и его использование с CMS, должны включать сведения о соответствии идентификатора ключа и поля сертификата. Реализации должны поддерживать оба варианта: subjectKeyldentifier и issuerAndSerialNumber. При создании sid реализации могут поддерживать одну из форм (либо subjectKeyldentifier, либо issuerAndSerialNumber) и всегда использовать ее, или реализации могут смешивать две формы. Тем не менее subjectKeyldentifier должен быть использован для идентификации ключа проверки ЭП, который не соответствует формату сертификатов Х.509;
- digestAlgorithm - определение алгоритма вычисления хэш-функции. Значение хэш-функции вычисляется либо от содержимого, либо от содержимого вместе с подписанными атрибутами; этот процесс описан в 7.4. Идентификатор алгоритма хэширования должен присутствовать в числе тех, которые перечислены в поле digestAlgorithms структуры SignedData;
- signedAttrs - набор подписанных атрибутов для подписи. Поле не является обязательным, но оно должно присутствовать, если тип содержимого структуры EncapsulatedContentlnfo представляет собой не "простые данные".