diff --git a/lib/SimpleSAML/Metadata/SAMLBuilder.php b/lib/SimpleSAML/Metadata/SAMLBuilder.php index 05d9d7a93cd6b693a81cf1826625287640fa137d..a41031764c3bc7f971f9b418abb796506b56776d 100644 --- a/lib/SimpleSAML/Metadata/SAMLBuilder.php +++ b/lib/SimpleSAML/Metadata/SAMLBuilder.php @@ -91,8 +91,11 @@ class SimpleSAML_Metadata_SAMLBuilder { return $this->document->saveXML(); } - - private function addExtensions($metadata) { + /** + * @param $metadata Metadata array + * @param $e Reference to the element where the Extensions element should be included. + */ + private function addExtensions($metadata, &$e = NULL) { $extensions = $this->createElement('Extensions'); $includeExtensions = FALSE; @@ -127,7 +130,13 @@ class SimpleSAML_Metadata_SAMLBuilder { $extensions->appendChild($scope); } } - if ($includeExtensions) $this->entityDescriptor->appendChild($extensions); + if ($includeExtensions) { + if (isset($e)) { + $e->appendChild($extensions); + } else { + $this->entityDescriptor->appendChild($extensions); + } + } } public static function arrayize($data) { @@ -230,7 +239,7 @@ class SimpleSAML_Metadata_SAMLBuilder { $e->setAttribute('protocolSupportEnumeration', 'urn:oasis:names:tc:SAML:2.0:protocol'); - $this->addExtensions($metadata); + $this->addExtensions($metadata, $e); $this->addCertificate($e, $metadata); @@ -352,7 +361,7 @@ class SimpleSAML_Metadata_SAMLBuilder { $e->setAttribute('WantAuthnRequestSigned', 'true'); } - $this->addExtensions($metadata); + $this->addExtensions($metadata, $e); $this->addCertificate($e, $metadata);