summaryrefslogtreecommitdiffstats
path: root/lib/SAML2/XML
diff options
context:
space:
mode:
authorJaime Pérez Crespo <jaime.perez@uninett.no>2012-10-05 11:57:30 +0000
committerJaime Pérez Crespo <jaime.perez@uninett.no>2012-10-05 11:57:30 +0000
commit5e5f0a2b22b4e5017379c591b797c1a31c5bdc3d (patch)
treea3496e18298ba6185400cee1165bfbec648504fe /lib/SAML2/XML
parent49df5abdf6976f82c1f40272272b6881531a173d (diff)
downloadsimplesamlphp-5e5f0a2b22b4e5017379c591b797c1a31c5bdc3d.zip
simplesamlphp-5e5f0a2b22b4e5017379c591b797c1a31c5bdc3d.tar.gz
simplesamlphp-5e5f0a2b22b4e5017379c591b797c1a31c5bdc3d.tar.bz2
Added support for RegistrationInfo element in SAML 2.0 metadata.
git-svn-id: https://simplesamlphp.googlecode.com/svn/trunk@3185 44740490-163a-0410-bde0-09ae8108e29a
Diffstat (limited to 'lib/SAML2/XML')
-rw-r--r--lib/SAML2/XML/md/Extensions.php2
-rw-r--r--lib/SAML2/XML/mdrpi/RegistrationInfo.php86
2 files changed, 88 insertions, 0 deletions
diff --git a/lib/SAML2/XML/md/Extensions.php b/lib/SAML2/XML/md/Extensions.php
index d3d237a..797bdaf 100644
--- a/lib/SAML2/XML/md/Extensions.php
+++ b/lib/SAML2/XML/md/Extensions.php
@@ -22,6 +22,8 @@ class SAML2_XML_md_Extensions {
$ret[] = new SAML2_XML_shibmd_Scope($node);
} elseif ($node->namespaceURI === SAML2_XML_mdattr_EntityAttributes::NS && $node->localName === 'EntityAttributes') {
$ret[] = new SAML2_XML_mdattr_EntityAttributes($node);
+ } elseif ($node->namespaceURI === SAML2_XML_mdrpi_Common::NS_MDRPI && $node->localName === 'RegistrationInfo') {
+ $ret[] = new SAML2_XML_mdrpi_RegistrationInfo($node);
} elseif ($node->namespaceURI === SAML2_XML_mdrpi_Common::NS_MDRPI && $node->localName === 'PublicationInfo') {
$ret[] = new SAML2_XML_mdrpi_PublicationInfo($node);
} elseif ($node->namespaceURI === SAML2_XML_mdui_UIInfo::NS && $node->localName === 'UIInfo') {
diff --git a/lib/SAML2/XML/mdrpi/RegistrationInfo.php b/lib/SAML2/XML/mdrpi/RegistrationInfo.php
new file mode 100644
index 0000000..4bb334a
--- /dev/null
+++ b/lib/SAML2/XML/mdrpi/RegistrationInfo.php
@@ -0,0 +1,86 @@
+<?php
+
+/**
+ * Class for handling the mdrpi:RegistrationInfo element.
+ *
+ * @link: http://docs.oasis-open.org/security/saml/Post2.0/saml-metadata-rpi/v1.0/saml-metadata-rpi-v1.0.pdf
+ * @package simpleSAMLphp
+ * @version $Id$
+ */
+class SAML2_XML_mdrpi_RegistrationInfo {
+
+ /**
+ * The identifier of the metadata registration authority.
+ *
+ * @var string
+ */
+ public $registrationAuthority;
+
+ /**
+ * The registration timestamp for the metadata, as a UNIX timestamp.
+ *
+ * @var int|NULL
+ */
+ public $registrationInstant;
+
+ /**
+ * Link to registration policy for this metadata.
+ *
+ * This is an associative array with language=>URL.
+ *
+ * @var array
+ */
+ public $RegistrationPolicy = array();
+
+
+ /**
+ * Create/parse a mdrpi:RegistrationInfo element.
+ *
+ * @param DOMElement|NULL $xml The XML element we should load.
+ */
+ public function __construct(DOMElement $xml = NULL) {
+
+ if ($xml === NULL) {
+ return;
+ }
+
+ if (!$xml->hasAttribute('registrationAuthority')) {
+ throw new Exception('Missing required attribute "registrationAuthority" in mdrpi:RegistrationInfo element.');
+ }
+ $this->registrationAuthority = $xml->getAttribute('registrationAuthority');
+
+ if ($xml->hasAttribute('registrationInstant')) {
+ $this->registrationInstant = SimpleSAML_Utilities::parseSAML2Time($xml->getAttribute('registrationInstant'));
+ }
+
+ $this->RegistrationPolicy = SAML2_Utils::extractLocalizedStrings($xml, SAML2_XML_mdrpi_Common::NS_MDRPI, 'RegistrationPolicy');
+ }
+
+
+ /**
+ * Convert this element to XML.
+ *
+ * @param DOMElement $parent The element we should append to.
+ */
+ public function toXML(DOMElement $parent) {
+ assert('is_string($this->registrationAuthority)');
+ assert('is_int($this->registrationInstant) || is_null($this->registrationInstant)');
+ assert('is_array($this->RegistrationPolicy)');
+
+ $doc = $parent->ownerDocument;
+
+ $e = $doc->createElementNS(SAML2_XML_mdrpi_Common::NS_MDRPI, 'mdrpi:RegistrationInfo');
+ $parent->appendChild($e);
+
+ $e->setAttribute('registrationAuthority', $this->registrationAuthority);
+
+ if ($this->registrationInstant !== NULL) {
+ $e->setAttribute('registrationInstant', gmdate('Y-m-d\TH:i:s\Z', $this->registrationInstant));
+ }
+
+ SAML2_Utils::addStrings($e, SAML2_XML_mdrpi_Common::NS_MDRPI, 'mdrpi:RegistrationPolicy', TRUE, $this->RegistrationPolicy);
+
+ return $e;
+ }
+
+}