Инициализация
Данная фаза инициализации устанавливает одиннадцать переменных состояния на основании семи входов:
-
Valid_policy_tree: дерево политик сертификации с соответствующими необязательными квалификаторами; каждый из листьев дерева является действительной политикой на данной стадии в проверке действительности сертификационного пути. Если действительная политика существует на данной стадии в проверке действительности сертификационного пути, глубина дерева равна числу сертификатов в цепочке, которые обработаны. Если действительная политика не существует на данной стадии в проверке действительности сертификационного пути, дерево устанавливается в NULL. После того как дерево установлено в NULL, обработка политики прекращается.
Каждый узел в valid_policy_tree включает четыре объекта данных: действительную политику, множество соответствующих квалификаторов политики, множество из одного или более ожидаемых значений политики и индикатор критичности. Если узел имеет глубину х, компоненты узла имеют следующую семантику:
- Valid_policy есть единственный OID политики, представляющий действительную политику для пути длиной х.
- Qualifier_set является множеством квалификаторов политики, связанных с действительной политикой в сертификате х.
- Criticality_indicator определяет, было ли расширение политики в сертификате х маркировано как критичное.
-
Expected_policy_set содержит один или более OIDs политик, которые должны соответствовать данной политике в сертификате х+1.
Начальным значением valid_policy_tree является единственный узел с valid_policy anyPolicy, пустым qualifier_set, expected_policy_set с единственным значением anyPolicy и criticality_indicator FALSE. Считается, что данный узел имеет глубину ноль.
Рис. 17.2 графически представляет начальное состояние valid_policy_tree. Дополнительные рисунки будут использовать данный формат для описания изменений в valid_policy_tree при обработке пути.
- Permitted_subtrees: множество корневых имен для каждого типа имени (например, Х.500 уникальные имена, e-mail адреса или IP-адреса), определяющее множество поддеревьев, в которых все имена субъектов в последующих сертификатах в сертификационном пути должны считаться действительными.
Данная переменная включает множество для каждого типа имени: начальное значение для множества Distinguished Names является множеством всех уникальных имен; начальное значение множества имен RFC822 является множеством всех RFC822 имен и т.д. - Excluded_subtrees: множество корневых имен для каждого типа имени (например, Х.500 уникальное имя, email адреса или IP-адреса), определяющее множество поддеревьев, в которых имя субъекта в последующих сертификатах в сертификационном пути не может считаться действительным. Данная переменная включает множество для каждого типа имени, и начальное значение для каждого множества является пустым.
- Explicit_policy: целое, которое определяет требуемое ненулевое valid_policy_tree. Данное число определяет число несамовыпущенных сертификатов, которые будут обработаны до того, как данное требование должно быть выполнено. Однажды установленная, данная переменная может только уменьшаться, возрастать не может. Это означает, что если сертификат в пути требует ненулевого valid_policy_tree, следующие сертификаты данное требование удалить не могут. Если initial-explicit-policy установлено, то начальное значение есть 0, в противном случае начальное значение есть n+1.
Рис. 17.2. Начальное значение переменной состояния valid_policy_tree
- Inhibit_any-policy: целое, которое определяет, можно ли считать идентификатор политики anyPolicy принимаемым. Целое определяет число игнорируемых несамовыпущенных сертификатов, обрабатываемых до OID anyPolicy, если он присутствует в сертификате. Однажды установленная, данная переменная может уменьшаться, но не может возрастать. Это означает, что если сертификат в пути не допускает обработку anyPolicy, последующие сертификаты не могут разрешить принимать данную политику. Если initial-any-policy-inhibit установлено, то начальное значение есть 0, в противном случае начальное значение есть n+1.
- Policy_mapping: целое, которое определяет, допустимо ли отображение политики. Целое определяет число несамовыпущенных сертификатов, которые могут быть обработаны до запрещения отображения политики.
Однажды установленная, данная переменная может уменьшаться, но не может возрастать. Таким образом, если сертификат в пути указывает, что отображение политики недопустимо, это не может быть перекрыто следующим сертификатом. Если initial-policy-mapping-inhibit установлено, то начальное значение есть 0, в противном случае начальное значение есть n+1. - Working_public_key_algorithm: алгоритм цифровой подписи, используемый для проверки подписи сертификата. Working_public_key_algorithm инициализируется из алгоритма доверенного открытого ключа, указанного в информации доверенного начального сертификата.
- Working_public_key: открытый ключ, используемый для проверки подписи сертификата. Working_public_key инициализируется из доверенного открытого ключа, указанного в информации доверенного начального сертификата.
- Working_public_key_parameters: параметры, связанные с текущим открытым ключом, который может требоваться для проверки подписи (в зависимости от алгоритма). Переменная working_public_key_parameters инициализируется из параметров доверенного открытого ключа, указанных в информации доверенного начального сертификата.
- Working_issuer_name: уникальное имя выпускающего, ожидаемое в следующем сертификате в цепочке. Working_issuer_name инициализируется доверенным выпускающим, указанным в информации доверенного начального сертификата.
- Max_path_length: данное целое инициализируется в n, уменьшается для каждого несамовыпущенного сертификата в пути и может быть уменьшено до значения в поле ограничения длины пути с расширением базовых ограничений сертификата СА.
После завершения шагов инициализации выполняются основные шаги обработки, описываемые ниже.