RFC: 5280
Оригинал: Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile
Предыдущие версии: RFC 2459, RFC 3280, RFC 4325, RFC 4630
Категория: Предложенный стандарт
Дата публикации: (с дополнениями из RFC 6818, Январь 2013)
Авторы: , , , , , ,
Перевод: Мельников Дмитрий Анатольевич

6.1.5. Завершающая фаза

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

  1. Если переменная «explicit_policy» ≠ 0, то уменьшаем переменную «explicit_policy» на единицу.

  2. Если сертификат включает субполе «policyConstraints» и представлена последовательность «requireExplicitPolicy», имеющая нулевое значение, то устанавливаем переменную состояния «explicit_policy» в нулевое значение.

  3. Присваиваем значение «subjectPublicKey» из сертификата переменной «working_public_key».

  4. Если поле «subjectPublicKeyInfo» сертификата включает субполе «algorithm» с не нулевыми параметрами, то присваиваем эти параметры переменной «working_public_key_parameters».

    Если же поле «subjectPublicKeyInfo» сертификата включает субполе «algorithm» с нулевыми параметрами или эти параметры просто отсутствуют, то сравниваем алгоритм для «subjectPublicKey» из сертификата с переменной «working_public_key_algorithm». Если алгоритм для «subjectPublicKey» из сертификата и переменная «working_public_key_algorithm» не совпадают, то устанавливаем переменную «working_public_key_algorithm» в нулевое значение.

  5. Присваиваем значение алгоритма для «subjectPublicKey» из сертификата переменной «working_public_key_algorithm».

  6. Распознаём и обрабатываем любое другое критичное субполе в поле «Расширения», представленное в n-ом сертификате. Обрабатываем любое другое распознаваемое не критичное субполе в поле «Расширения», представленное в n-ом сертификате, и которое затрагивает обработку маршрута.

  7. Рассчитываем точку пересечения дерева «valid_policy_tree» и параметра «user-initial-policy-set» следующим образом:

    1. Если дерево «valid_policy_tree» = 0, то точка пересечения = 0;

    2. Если дерево «valid_policy_tree» ≠ 0 и параметр «user-initial-policy-set» имеет значение «any-policy», то точка пересечения является всё дерево «valid_policy_tree»;

    3. Если дерево «valid_policy_tree» ≠ 0 и параметр «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» не содержит значения «anyPolicy», то выполняем следующие операции:

        1. Установим компонент «qualifier_set» узла глубиной n с компонентом «valid_policy», имеющим значение «anyPolicy», в значение P-Q.

        2. Для каждого идентификатора P-OID в параметре «user-initialpolicy-set», который не является приемлемой политикой «valid_policy» узла в совокупности «valid_policy_node_set», формируем дочерний узел, у которого существует родительский узел глубиной n-1 с приемлемой политикой «valid_policy», содержащей значение «anyPolicy». Устанавливаем значения в дочернем узле следующем образом: установим «valid_policy» в P-OID, «qualifier_set» в P-Q, а «expected_policy_set» в {P-OID}.

        3. Удаляем узел глубиной n с приемлемой политикой «valid_policy», содержащей значение «anyPolicy».

      4. Если в дереве «valid_policy_tree» существует узел глубиной n-1 или меньше и без каких-либо дочерних узлов, то удаляем этот узел. Повторяем эту операцию до тех пор, пока не останется узлов глубиной n-1 или меньше и без каких-либо дочерних узлов.

Если, либо (1) значение переменной «explicit_policy» > 0, либо (2) дерево «valid_policy_tree» не нулевое (не пустое), то обработка маршрута завершилась успешно.

6.1.6. Выходные данные

Если обработка МС завершилась успешно, ПрПП завершается и отображается её результат, а также заключительные значения переменных величин «valid_policy_tree», «working_public_key», «working_public_key_algorithm» и «working_public_key_parameters».

2007 - 2017 © Русские переводы RFC, IETF, ISOC.