From e5497693666e9aad30004d8b27e8da0a6f71d443 Mon Sep 17 00:00:00 2001
From: Jaime Perez <jaime.perez@uninett.no>
Date: Tue, 30 Sep 2014 18:02:18 +0200
Subject: [PATCH] Migrate hosted IdP metadata to use the new getContact()
 helper function. Include also the contact information in SSP generated
 configuration. Honour contact configuration in hosted metadata, the same way
 as in hosted SP metadata. Solve #101.

---
 www/saml2/idp/metadata.php | 25 +++++++++++++++++--------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/www/saml2/idp/metadata.php b/www/saml2/idp/metadata.php
index 0b5f943df..de515e806 100644
--- a/www/saml2/idp/metadata.php
+++ b/www/saml2/idp/metadata.php
@@ -158,20 +158,29 @@ try {
 		$metaArray['redirect.sign'] = $idpmeta->getBoolean('redirect.validate');
 	}
 
-	$metaflat = '$metadata[' . var_export($idpentityid, TRUE) . '] = ' . var_export($metaArray, TRUE) . ';';
+	if ($idpmeta->hasValue('contacts')) {
+		$contacts = $idpmeta->getArray('contacts');
+		foreach ($contacts as $contact) {
+			$metaArray['contacts'][] = SimpleSAML_Utils_Config_Metadata::getContact($contact);
+		}
+	}
+
+	$technicalContactEmail = $config->getString('technicalcontact_email', FALSE);
+	if ($technicalContactEmail && $technicalContactEmail !== 'na@example.org') {
+		$techcontact['emailAddress'] = $technicalContactEmail;
+		$techcontact['name'] = $config->getString('technicalcontact_name', NULL);
+		$techcontact['contactType'] = 'technical';
+		$metaArray['contacts'][] = SimpleSAML_Utils_Config_Metadata::getContact($techcontact);
+	}
 
 	$metaBuilder = new SimpleSAML_Metadata_SAMLBuilder($idpentityid);
 	$metaBuilder->addMetadataIdP20($metaArray);
 	$metaBuilder->addOrganizationInfo($metaArray);
-	$technicalContactEmail = $config->getString('technicalcontact_email', NULL);
-	if ($technicalContactEmail && $technicalContactEmail !== 'na@example.org') {
-		$metaBuilder->addContact('technical', array(
-			'emailAddress' => $technicalContactEmail,
-			'name' => $config->getString('technicalcontact_name', NULL),
-		));
-	}
+
 	$metaxml = $metaBuilder->getEntityDescriptorText();
 
+	$metaflat = '$metadata[' . var_export($idpentityid, TRUE) . '] = ' . var_export($metaArray, TRUE) . ';';
+
 	/* Sign the metadata if enabled. */
 	$metaxml = SimpleSAML_Metadata_Signer::sign($metaxml, $idpmeta->toArray(), 'SAML 2 IdP');
 
-- 
GitLab