/** * @group certificate * @test * * @dataProvider invalidConfigurationProvider * @expectedException SAML2_Exception_InvalidArgumentException */ public function it_correctly_parses_arrays_and_traversables($configurationValue) { $this->configurationMock->shouldReceive('getCertificateFingerprints')->once()->andReturn($configurationValue); $result = $this->fingerprintLoader->loadFingerprints($this->configurationMock); $this->assertInstanceOf('SAML2_Certificate_FingerprintCollection', $result); $this->assertCount(count($configurationValue), $result); }
/** * @param SAML2_SignedElement $signedElement * @param SAML2_Configuration_CertificateProvider $configuration * * @return bool */ public function hasValidSignature(SAML2_SignedElement $signedElement, SAML2_Configuration_CertificateProvider $configuration) { $this->certificates = array_map(function ($certificate) { return SAML2_Certificate_X509::createFromCertificateData($certificate); }, $this->certificates); $fingerprintCollection = $this->fingerprintLoader->loadFromConfiguration($configuration); $pemCandidates = array(); foreach ($this->certificates as $certificate) { /** @var SAML2_Certificate_X509 $certificate */ $certificateFingerprint = $certificate->getFingerprint(); if ($fingerprintCollection->contains($certificateFingerprint)) { $pemCandidates[] = $certificate; } } if (empty($pemCandidates)) { $this->logger->debug('Unable to match a certificate of the SignedElement matching a configured fingerprint'); return FALSE; } return $this->validateElementWithKeys($signedElement, $pemCandidates); }