--TEST--
Test node order of EncryptedData children.
--DESCRIPTION--
Makes sure that the child elements of EncryptedData appear in
the correct order.
--FILE--
<?php
require(dirname(__FILE__) . '/../xmlseclibs.php');
$dom = new DOMDocument();
$dom->load(dirname(__FILE__) . '/basic-doc.xml');
$objKey = new XMLSecurityKey(XMLSecurityKey::AES256_CBC);
$objKey->generateSessionKey();
$siteKey = new XMLSecurityKey(XMLSecurityKey::RSA_OAEP_MGF1P, array('type'=>'public'));
$siteKey->loadKey(dirname(__FILE__) . '/mycert.pem', TRUE, TRUE);
$enc = new XMLSecEnc();
$enc->setNode($dom->documentElement);
$enc->encryptKey($siteKey, $objKey);
$enc->type = XMLSecEnc::Content;
$encNode = $enc->encryptNode($objKey);
$nodeOrder = array(
'EncryptionMethod',
'KeyInfo',
'CipherData',
'EncryptionProperties',
);
$prevNode = 0;
for ($node = $encNode->firstChild; $node !== NULL; $node = $node->nextSibling) {
if (! ($node instanceof DOMElement)) {
/* Skip comment and text nodes. */
continue;
}
$name = $node->localName;
$cIndex = array_search($name, $nodeOrder, TRUE);
if ($cIndex === FALSE) {
die("Unknown node: $name");
}
if ($cIndex >= $prevNode) {
/* In correct order. */
$prevNode = $cIndex;
continue;
}
$prevName = $nodeOrder[$prevNode];
die("Incorrect order: $name must appear before $prevName");
}
echo("OK\n");
?>
--EXPECTF--
OK
|