/** * 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; }