Рис. 4.6.2.5. SignedData
Тип подписанного содержимого косвенно защищается включением в текст атрибута contentType (PKCS #9). Дайджест данных, который подписывается, также включает атрибут messageDigest. SignedData всегда содержит два аутентифицированных атрибута contentType и messageDigest.
Тип EnvelopedData из PKCS #7 проиллюстрирован на рис. 4.6.2.6.
Рис. 4.6.2.6. EnvelopedData
В пределах EnvelopedData допускается наличие нескольких EnvelopedData и только одно RecepientInfo.
Тип EncryptedData из PKCS #7 проиллюстрирован на рис. 4.6.2.7.
Рис. 4.6.2.7. EncryptedData
Тип DigestedData из PKCS #7 проиллюстрирован на рис. 4.6.2.8.
Рис. 4.6.2.8. DigestedData
Обработка сообщений
Базовыми процедурами протокола SET является посылка и прием сообщений. Процесс отправки сообщения представлен в таблице 4.6.2.4.
Таблица 4.6.2.4. Отправление сообщения
Шаг | Действие |
1 | Генерация сообщения SET |
2 | Вложение кода текущей версии в MessageWrapper (цифровой конверт, сейчас 1 или 0) |
3 | Вложить код даты, включая время. |
4 | Заполнить MessageID из полей TransID в Message. Если MessageID в Message отсутствует, поле опускается. |
5 | Вводится RRPID. Если это запрос, генерируется RRPID и запоминается для последующего сравнения с соответствующим кодом отклика. Если посылается отклик, то RRPID копируется из запроса. |
6 | Вводится SWIdent. Это строка, которая идентифицирует разработчика и версию программного продукта |
7 | Вкладывается Message |
8 | Производится DER-кодирование вложенного сообщения |
9 | Сообщение передается на транспортный уровень |
Процедура обработки входящего сообщения рассмотрена в таблице 4.6.2.5.
Таблица 4.6.2.5. Прием и обработка входного сообщения
Шаг | Действие |
1 | Извлекается цифровой конверт сообщения |
2 | Проверяется формат и содержимое полей цифрового конверта сообщения: версия, субверсия, дата/время, тип сообщения. Если обнаружена ошибка, возвращается отклик Error с ErrorCode. |
3 | Используя RRPID, производится сравнение и актуализация контрольного журнала на предмет выявления повторных сообщений |
4 | Произвести DER-декодирование сообщения |
5 | Если сообщение содержит SignedData, произвести следующее:
|
6 | Если сообщение содержит инкапсулированные данные, выполняется извлечение вложенных данных согласно типу вложенного содержимого, включая шаг 5, если вложенные данные содержат SignedData |
7 | Извлечь идентификаторы BrandCRLIdentifier, включенные в сообщение и актуализовать системный кэш, проверить, что все CRL, идентифицированные BCI, находятся в системном кэше. В противном случае обработка сообщения прерывается. |
8 | Обработать сообщение |
9 | Актуализовать системный журнал с учетом состояния транзакции |