Протоколы безопасного сетевого взаимодействия

       

Wrap-up процедура


Для завершения обработки сертификата конечного участника выполнить следующие шаги для сертификата n:

  1. Если сертификат n не является самовыпущенным, и значение explicit_policy не 0, уменьшить explicit_policy на 1.
  2. Если расширение ограничений политики включено в сертификат и requireExplicitPolicy присутствует и имеет значение 0, установить переменную состояния explicit_policy в 0.
  3. Присвоить subjectPublicKey сертификата для working_public_key.
  4. Если поле subjectPublicKeyInfo сертификата содержит поле алгоритма с ненулевыми параметрами, определить параметры как переменную working_public_key_parameters.

    Если поле subjectPublicKeyInfo сертификата содержит поле алгоритма с нулевыми параметрами или параметры опущены, сравнить алгоритм subjectPublicKeyInfo сертификата с working_public_key_algorithm. Если subjectPublicKeyInfo и working_public_key_algorithm различны, установить working_public_key_parameters в null.

  5. Присвоить значение алгоритма из расширения subjectPublicKey сертификата переменной working_public_key_algorithm.
  6. Определить и обработать все другие критичные расширения, представленные в сертификате n. Обработать все другие распознанные некритичные расширения, представленные в сертификате n.
  7. Вычислить пересечение valid_policy_tree и user-initial-policy-set следующим образом:
    1. Если valid_policy_tree есть NULL, пересечение есть NULL.
    2. Если valid_policy_tree есть не NULL и user-initial-policy-set есть any-policy, пересечение есть valid_policy_tree.
    3. Если valid_policy_tree есть не NULL и user-initial-policy-set есть не any-policy, вычислить пересечение valid_policy_tree и user-initial-policy-set следующим образом:
      1. Определить множество узлов политики, у которых родительские узлы имеют valid_policy для anyPolicy. Это есть valid_policy_node_set.
      2. Если valid_policy любого узла в valid_policy_node_set установлено не в user-initial-policy-set и не в anyPolicy, удалить данный узел и все подчиненные узлы.
      3. Если valid_policy_tree включает узел глубины n с valid_policy anyPolicy и user-initial-policy-set есть не any-policy, выполнить следующие шаги:
        1. Установить P-Q в qualifier_set в узле глубины n с valid_policy anyPolicy.
        2. Для каждого P-OID в user-initial-policy-set, который не содержит значение valid_policy узла, создать подчиненный узел, чьим родителем является узел глубины n-1 с valid_policy anyPolicy. Установить значения в подчиненном узле следующим образом: установить valid_policy в P-OID; установить qualifier_set в P-Q; копировать criticality_indicator из узла глубины n с valid_policy anyPolicy; установить expected_policy_set в {P-oid}.
        3. Удалить узел глубины n с valid_policy anyPolicy.
      4. Если существует узел с valid_policy_tree глубины n-1 или менее без подчиненных узлов, удалить этот узел. Повторять данный шаг до тех пор, пока не останется узлов глубины n-1 без подчиненных узлов.

Если либо (1) значение переменной explicit_policy больше нуля, либо (2) valid_policy_tree не есть NULL, то обработка пути выполнена.



Содержание раздела