private function _verifyIssuer(): Certificate
    {
        $path = $this->_config->issuerPath();
        $config = PathValidationConfig::defaultConfig()->withMaxLength(
            count($path))->withDateTime($this->_config->evaluationTime());
        try {
            $issuer = $path->validate($config, $this->_crypto)->certificate();
        } catch (PathValidationException $e) {
            throw new ACValidationException(
                "Failed to validate issuer PKC's certification path.", 0, $e);
        }
        if (!$this->_ac->isIssuedBy($issuer)) {
            throw new ACValidationException("Name mismatch of AC's issuer PKC.");
        }
        $pubkey_info = $issuer->tbsCertificate()->subjectPublicKeyInfo();
        if (!$this->_ac->verify($pubkey_info, $this->_crypto)) {
            throw new ACValidationException("Failed to verify signature.");
        }
        return $issuer;
    }
private function _verifyIssuer(): Certificate
    {
        $path = $this->_config->issuerPath();
        $config = PathValidationConfig::defaultConfig()->withMaxLength(
            count($path))->withDateTime($this->_config->evaluationTime());
        try {
            $issuer = $path->validate($config, $this->_crypto)->certificate();
        } catch (PathValidationException $e) {
            throw new ACValidationException(
                "Failed to validate issuer PKC's certification path.", 0, $e);
        }
        if (!$this->_ac->isIssuedBy($issuer)) {
            throw new ACValidationException("Name mismatch of AC's issuer PKC.");
        }
        $pubkey_info = $issuer->tbsCertificate()->subjectPublicKeyInfo();
        if (!$this->_ac->verify($pubkey_info, $this->_crypto)) {
            throw new ACValidationException("Failed to verify signature.");
        }
        return $issuer;
    }
private function _verifyIssuer ( ) : Certificate { $ path = $ this -> _config -> issuerPath ( ) ; $ config = PathValidationConfig :: defaultConfig ( ) -> withMaxLength ( count ( $ path ) ) -> withDateTime ( $ this -> _config -> evaluationTime ( ) ) ; try { $ issuer = $ path -> validate ( $ config , $ this -> _crypto ) -> certificate ( ) ; } catch ( PathValidationException $ e ) { throw new ACValidationException ( "Failed to validate issuer PKC's certification path." , 0 , $ e ) ; } if ( ! $ this -> _ac -> isIssuedBy ( $ issuer ) ) { throw new ACValidationException ( "Name mismatch of AC's issuer PKC." ) ; } $ pubkey_info = $ issuer -> tbsCertificate ( ) -> subjectPublicKeyInfo ( ) ; if ( ! $ this -> _ac -> verify ( $ pubkey_info , $ this -> _crypto ) ) { throw new ACValidationException ( "Failed to verify signature." ) ; } return $ issuer ; }
Verify AC's signature and issuer's certification.

@throws ACValidationException
@return Certificate Certificate of the AC's issuer
Verify AC s signature and issuer s certification .