Exemple #1
0
 /**
  * Update working_public_key, working_public_key_parameters and
  * working_public_key_algorithm state variables from certificate.
  *
  * @param ValidatorState $state
  * @param Certificate $cert
  * @return ValidatorState
  */
 private function _setPublicKeyState(ValidatorState $state, Certificate $cert)
 {
     $pk_info = $cert->tbsCertificate()->subjectPublicKeyInfo();
     // assign working_public_key
     $state = $state->withWorkingPublicKey($pk_info);
     // assign working_public_key_parameters
     $params = ValidatorState::getAlgorithmParameters($pk_info->algorithmIdentifier());
     if (null !== $params) {
         $state = $state->withWorkingPublicKeyParameters($params);
     } else {
         // if algorithms differ, set parameters to null
         if ($pk_info->algorithmIdentifier()->oid() !== $state->workingPublicKeyAlgorithm()->oid()) {
             $state = $state->withWorkingPublicKeyParameters(null);
         }
     }
     // assign working_public_key_algorithm
     $state = $state->withWorkingPublicKeyAlgorithm($pk_info->algorithmIdentifier());
     return $state;
 }