Beispiel #1
0
 /**
  * Process single policy information.
  *
  * @param PolicyInformation $policy
  * @param ValidatorState $state
  */
 protected function _processPolicy(PolicyInformation $policy, ValidatorState $state)
 {
     $p_oid = $policy->oid();
     $i = $state->index();
     $match_count = 0;
     // (d.1.i) for each node of depth i-1 in the valid_policy_tree...
     foreach ($this->_nodesAtDepth($i - 1) as $node) {
         // ...where P-OID is in the expected_policy_set
         if ($node->hasExpectedPolicy($p_oid)) {
             $node->addChild(new PolicyNode($p_oid, $policy->qualifiers(), array($p_oid)));
             ++$match_count;
         }
     }
     // (d.1.ii) if there was no match in step (i)...
     if (!$match_count) {
         // ...and the valid_policy_tree includes a node of depth i-1 with
         // the valid_policy anyPolicy
         foreach ($this->_nodesAtDepth($i - 1) as $node) {
             if ($node->isAnyPolicy()) {
                 $node->addChild(new PolicyNode($p_oid, $policy->qualifiers(), array($p_oid)));
             }
         }
     }
 }