From 7bbf9fc7b9b43d31b63c133b893e742767784e94 Mon Sep 17 00:00:00 2001
From: Tim van Dijen <tvdijen@gmail.com>
Date: Fri, 26 Jan 2018 23:00:47 +0100
Subject: [PATCH] Use utility-method to parse NameIDPolicy

---
 lib/SimpleSAML/Utils/Config/Metadata.php |  2 +-
 modules/saml/lib/Message.php             | 21 +--------------------
 2 files changed, 2 insertions(+), 21 deletions(-)

diff --git a/lib/SimpleSAML/Utils/Config/Metadata.php b/lib/SimpleSAML/Utils/Config/Metadata.php
index ad20c4c74..133d9ffe9 100644
--- a/lib/SimpleSAML/Utils/Config/Metadata.php
+++ b/lib/SimpleSAML/Utils/Config/Metadata.php
@@ -297,7 +297,7 @@ class Metadata
             $policy = array('Format' => $nameIdPolicy);
         } elseif (is_array($nameIdPolicy)) {
             // handle current configurations specifying an array in the NameIDPolicy config option
-            $nameIdPolicy_cf = SimpleSAML_Configuration::loadFromArray($nameIdPolicy);
+            $nameIdPolicy_cf = \SimpleSAML_Configuration::loadFromArray($nameIdPolicy);
             $policy = array(
                 'Format'      => $nameIdPolicy_cf->getString('Format', \SAML2\Constants::NAMEID_TRANSIENT),
                 'AllowCreate' => $nameIdPolicy_cf->getBoolean('AllowCreate', true),
diff --git a/modules/saml/lib/Message.php b/modules/saml/lib/Message.php
index 734a4067c..a42d3e34d 100644
--- a/modules/saml/lib/Message.php
+++ b/modules/saml/lib/Message.php
@@ -442,26 +442,7 @@ class sspmod_saml_Message
             $nameIdPolicy = $spMetadata->getValue('NameIDPolicy');
         }
 
-        $policy = null;
-        if (is_string($nameIdPolicy)) {
-            // handle old configurations where 'NameIDPolicy' was used to specify just the format
-            $policy = array('Format' => $nameIdPolicy);
-        } elseif (is_array($nameIdPolicy)) {
-            // handle current configurations specifying an array in the NameIDPolicy config option
-            $nameIdPolicy_cf = SimpleSAML_Configuration::loadFromArray($nameIdPolicy);
-            $policy = array(
-                'Format'      => $nameIdPolicy_cf->getString('Format', \SAML2\Constants::NAMEID_TRANSIENT),
-                'AllowCreate' => $nameIdPolicy_cf->getBoolean('AllowCreate', true),
-            );
-            $spNameQualifier = $nameIdPolicy_cf->getString('SPNameQualifier', false);
-            if ($spNameQualifier !== false) {
-                $policy['SPNameQualifier'] = $spNameQualifier;
-            }
-        } elseif ($nameIdPolicy === null) {
-            // when NameIDPolicy is unset or set to null, default to transient as before
-            $policy = array('Format' => \SAML2\Constants::NAMEID_TRANSIENT);
-        }
-
+        $policy = \SimpleSAML\Utils\Config\Metadata::parseNameIdPolicy($nameIdPolicy);
         if ($policy !== null) {
             // either we have a policy set, or we used the transient default
             $ar->setNameIdPolicy($policy);
-- 
GitLab