Viewing file: KeyDescriptor.php (1.89 KB) -rwxrwxr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/** * Class representing a KeyDescriptor element. * * @package simpleSAMLphp * @version $Id$ */ class SAML2_XML_md_KeyDescriptor {
/** * What this key can be used for. * * 'encryption', 'signing' or NULL. * * @var string|NULL */ public $use;
/** * The KeyInfo for this key. * * @var SAML2_XML_ds_KeyInfo */ public $KeyInfo;
/** * Supported EncryptionMethods. * * Array of SAML2_XML_Chunk objects. * * @var array */ public $EncryptionMethod = array();
/** * Initialize an KeyDescriptor. * * @param DOMElement|NULL $xml The XML element we should load. */ public function __construct(DOMElement $xml = NULL) {
if ($xml === NULL) { return; }
if ($xml->hasAttribute('use')) { $this->use = $xml->getAttribute('use'); }
$keyInfo = SAML2_Utils::xpQuery($xml, './ds:KeyInfo'); if (count($keyInfo) > 1) { throw new Exception('More than one ds:KeyInfo in the KeyDescriptor.'); } elseif (empty($keyInfo)) { throw new Exception('No ds:KeyInfo in the KeyDescriptor.'); } $this->KeyInfo = new SAML2_XML_ds_KeyInfo($keyInfo[0]);
foreach (SAML2_Utils::xpQuery($xml, './saml_metadata:EncryptionMethod') as $em) { $this->EncryptionMethod[] = new SAML2_XML_Chunk($em); }
}
/** * Convert this KeyDescriptor to XML. * * @param DOMElement $parent The element we should append this KeyDescriptor to. */ public function toXML(DOMElement $parent) { assert('is_null($this->use) || is_string($this->use)'); assert('$this->KeyInfo instanceof SAML2_XML_ds_KeyInfo'); assert('is_array($this->EncryptionMethod)');
$doc = $parent->ownerDocument;
$e = $doc->createElementNS(SAML2_Const::NS_MD, 'md:KeyDescriptor'); $parent->appendChild($e);
if (isset($this->use)) { $e->setAttribute('use', $this->use); }
$this->KeyInfo->toXML($e);
foreach ($this->EncryptionMethod as $em) { $em->toXML($e); }
return $e; }
}
|