diff --git a/lib/SimpleSAML/Metadata/SAMLBuilder.php b/lib/SimpleSAML/Metadata/SAMLBuilder.php index c963f5498e189e1169a6b4c2fc351010c4789e86..acd5a3bf812f4c8f1a1dcc0aaf37d1169d42a747 100644 --- a/lib/SimpleSAML/Metadata/SAMLBuilder.php +++ b/lib/SimpleSAML/Metadata/SAMLBuilder.php @@ -360,21 +360,13 @@ class SimpleSAML_Metadata_SAMLBuilder { private function addCertificate(DOMElement $ssoDesc, $metadata) { assert('is_array($metadata)'); - if (!array_key_exists('certificate', $metadata)) { + $certInfo = SimpleSAML_Utilities::loadPublicKey($metadata); + if ($certInfo === NULL || !array_key_exists('certData', $certInfo)) { /* No certificate to add. */ return; } - $globalConfig = SimpleSAML_Configuration::getInstance(); - - $certFile = $globalConfig->getPathValue('certdir') . $metadata['certificate']; - if (!file_exists($certFile)) { - throw new Exception('Could not find certificate file: ' . $certFile); - } - - $certData = file_get_contents($certFile); - $certData = XMLSecurityDSig::get509XCert($certData, TRUE); - + $certData = $certInfo['certData']; $keyDescriptor = $this->createElement('KeyDescriptor'); $ssoDesc->appendChild($keyDescriptor);