Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php include_once "\125\x74\151\154\x69\164\151\145\163\56\x70\x68\x70"; class SAML..
Decoded Output download
<?php
include_once "Utilities.php";
class SAML2_Assertion
{
private $id;
private $issueInstant;
private $issuer;
private $nameId;
private $encryptedNameId;
private $encryptedAttribute;
private $encryptionKey;
private $notBefore;
private $notOnOrAfter;
private $validAudiences;
private $sessionNotOnOrAfter;
private $sessionIndex;
private $authnInstant;
private $authnContextClassRef;
private $authnContextDecl;
private $authnContextDeclRef;
private $AuthenticatingAuthority;
private $attributes;
private $nameFormat;
private $signatureKey;
private $certificates;
private $signatureData;
private $requiredEncAttributes;
private $SubjectConfirmation;
protected $wasSignedAtConstruction = FALSE;
public function __construct(DOMElement $Zu = NULL)
{
$this->id = Utilities::generateId();
$this->issueInstant = Utilities::generateTimestamp();
$this->issuer = '';
$this->authnInstant = Utilities::generateTimestamp();
$this->attributes = array();
$this->nameFormat = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified";
$this->certificates = array();
$this->AuthenticatingAuthority = array();
$this->SubjectConfirmation = array();
if (!($Zu === NULL)) {
goto Tv;
}
return;
Tv:
if (!($Zu->localName === "EncryptedAssertion")) {
goto w3;
}
$oK = Utilities::xpQuery($Zu, "./xenc:EncryptedData");
$YG = Utilities::xpQuery($Zu, "./xenc:EncryptedData/ds:KeyInfo");
$X5 = $YG[0]->firstChild->firstChild->getAttribute("Algorithm");
$YS = Utilities::getEncryptionAlgorithm($X5);
if (count($oK) === 0) {
goto t9;
}
if (count($oK) > 1) {
goto kk;
}
goto UI;
t9:
throw new Exception("Missing encrypted data in <saml:EncryptedAssertion>.");
goto UI;
kk:
throw new Exception("More than one encrypted data element in <saml:EncryptedAssertion>.");
UI:
$OE = new XMLSecurityKey($YS, array("type" => "private"));
$Pp = plugin_dir_path(__FILE__) . "resources" . DIRECTORY_SEPARATOR . "sp-key.key";
$OE->loadKey($Pp, TRUE);
$JM = new XMLSecurityKey($YS, array("type" => "private"));
$sP = plugin_dir_path(__FILE__) . "resources" . DIRECTORY_SEPARATOR . "miniorange_sp_priv_key.key";
$uu = array();
$Zu = Utilities::decryptElement($oK[0], $OE, $uu, $JM);
w3:
if ($Zu->hasAttribute("ID")) {
goto tO;
}
throw new Exception("Missing ID attribute on SAML assertion.");
tO:
$this->id = $Zu->getAttribute("ID");
if (!($Zu->getAttribute("Version") !== "2.0")) {
goto kf;
}
throw new Exception("Unsupported version: " . $Zu->getAttribute("Version"));
kf:
$this->issueInstant = Utilities::xsDateTimeToTimestamp($Zu->getAttribute("IssueInstant"));
$xJ = Utilities::xpQuery($Zu, "./saml_assertion:Issuer");
if (!empty($xJ)) {
goto f4;
}
throw new Exception("Missing <saml:Issuer> in assertion.");
f4:
$this->issuer = trim($xJ[0]->textContent);
$this->parseConditions($Zu);
$this->parseAuthnStatement($Zu);
$this->parseAttributes($Zu);
$this->parseEncryptedAttributes($Zu);
$this->parseSignature($Zu);
$this->parseSubject($Zu);
}
private function parseSubject(DOMElement $Zu)
{
$mR = Utilities::xpQuery($Zu, "./saml_assertion:Subject");
if (empty($mR)) {
goto OV;
}
if (count($mR) > 1) {
goto aV;
}
goto pY;
OV:
return;
goto pY;
aV:
throw new Exception("More than one <saml:Subject> in <saml:Assertion>.");
pY:
$mR = $mR[0];
$jj = Utilities::xpQuery($mR, "./saml_assertion:NameID | ./saml_assertion:EncryptedID/xenc:EncryptedData");
if (empty($jj)) {
goto M4;
}
if (count($jj) > 1) {
goto Qw;
}
goto Gb;
M4:
throw new Exception("Missing <saml:NameID> or <saml:EncryptedID> in <saml:Subject>.");
goto Gb;
Qw:
throw new Exception("More than one <saml:NameID> or <saml:EncryptedD> in <saml:Subject>.");
Gb:
$jj = $jj[0];
if ($jj->localName === "EncryptedData") {
goto uy;
}
$this->nameId = Utilities::parseNameId($jj);
goto bl;
uy:
$this->encryptedNameId = $jj;
bl:
}
private function parseConditions(DOMElement $Zu)
{
$Cs = Utilities::xpQuery($Zu, "./saml_assertion:Conditions");
if (empty($Cs)) {
goto YO;
}
if (count($Cs) > 1) {
goto w_;
}
goto TX;
YO:
return;
goto TX;
w_:
throw new Exception("More than one <saml:Conditions> in <saml:Assertion>.");
TX:
$Cs = $Cs[0];
if (!$Cs->hasAttribute("NotBefore")) {
goto ze;
}
$HP = Utilities::xsDateTimeToTimestamp($Cs->getAttribute("NotBefore"));
if (!($this->notBefore === NULL || $this->notBefore < $HP)) {
goto TT;
}
$this->notBefore = $HP;
TT:
ze:
if (!$Cs->hasAttribute("NotOnOrAfter")) {
goto Mi;
}
$k7 = Utilities::xsDateTimeToTimestamp($Cs->getAttribute("NotOnOrAfter"));
if (!($this->notOnOrAfter === NULL || $this->notOnOrAfter > $k7)) {
goto Ww;
}
$this->notOnOrAfter = $k7;
Ww:
Mi:
$Js = $Cs->firstChild;
SZ:
if (!($Js !== NULL)) {
goto fO;
}
if (!$Js instanceof DOMText) {
goto P6;
}
goto l1;
P6:
if (!($Js->namespaceURI !== "urn:oasis:names:tc:SAML:2.0:assertion")) {
goto B0;
}
throw new Exception("Unknown namespace of condition: " . var_export($Js->namespaceURI, TRUE));
B0:
switch ($Js->localName) {
case "AudienceRestriction":
$g0 = Utilities::extractStrings($Js, "urn:oasis:names:tc:SAML:2.0:assertion", "Audience");
if ($this->validAudiences === NULL) {
goto iz;
}
$this->validAudiences = array_intersect($this->validAudiences, $g0);
goto UB;
iz:
$this->validAudiences = $g0;
UB:
goto UD;
case "OneTimeUse":
goto UD;
case "ProxyRestriction":
goto UD;
default:
throw new Exception("Unknown condition: " . var_export($Js->localName, TRUE));
}
PG:
UD:
l1:
$Js = $Js->nextSibling;
goto SZ;
fO:
}
private function parseAuthnStatement(DOMElement $Zu)
{
$yG = Utilities::xpQuery($Zu, "./saml_assertion:AuthnStatement");
if (empty($yG)) {
goto I9;
}
if (count($yG) > 1) {
goto GY;
}
goto I2;
I9:
$this->authnInstant = NULL;
return;
goto I2;
GY:
throw new Exception("More that one <saml:AuthnStatement> in <saml:Assertion> not supported.");
I2:
$cB = $yG[0];
if ($cB->hasAttribute("AuthnInstant")) {
goto Ue;
}
throw new Exception("Missing required AuthnInstant attribute on <saml:AuthnStatement>.");
Ue:
$this->authnInstant = Utilities::xsDateTimeToTimestamp($cB->getAttribute("AuthnInstant"));
if (!$cB->hasAttribute("SessionNotOnOrAfter")) {
goto mE;
}
$this->sessionNotOnOrAfter = Utilities::xsDateTimeToTimestamp($cB->getAttribute("SessionNotOnOrAfter"));
mE:
if (!$cB->hasAttribute("SessionIndex")) {
goto iA;
}
$this->sessionIndex = $cB->getAttribute("SessionIndex");
iA:
$this->parseAuthnContext($cB);
}
private function parseAuthnContext(DOMElement $bE)
{
$vE = Utilities::xpQuery($bE, "./saml_assertion:AuthnContext");
if (count($vE) > 1) {
goto lK;
}
if (empty($vE)) {
goto Cw;
}
goto bI;
lK:
throw new Exception("More than one <saml:AuthnContext> in <saml:AuthnStatement>.");
goto bI;
Cw:
throw new Exception("Missing required <saml:AuthnContext> in <saml:AuthnStatement>.");
bI:
$iC = $vE[0];
$dj = Utilities::xpQuery($iC, "./saml_assertion:AuthnContextDeclRef");
if (count($dj) > 1) {
goto rz;
}
if (count($dj) === 1) {
goto PH;
}
goto BX;
rz:
throw new Exception("More than one <saml:AuthnContextDeclRef> found?");
goto BX;
PH:
$this->setAuthnContextDeclRef(trim($dj[0]->textContent));
BX:
$z7 = Utilities::xpQuery($iC, "./saml_assertion:AuthnContextDecl");
if (count($z7) > 1) {
goto qd;
}
if (count($z7) === 1) {
goto QQ;
}
goto wz;
qd:
throw new Exception("More than one <saml:AuthnContextDecl> found?");
goto wz;
QQ:
$this->setAuthnContextDecl(new SAML2_XML_Chunk($z7[0]));
wz:
$AV = Utilities::xpQuery($iC, "./saml_assertion:AuthnContextClassRef");
if (count($AV) > 1) {
goto Fz;
}
if (count($AV) === 1) {
goto hU;
}
goto Tw;
Fz:
throw new Exception("More than one <saml:AuthnContextClassRef> in <saml:AuthnContext>.");
goto Tw;
hU:
$this->setAuthnContextClassRef(trim($AV[0]->textContent));
Tw:
if (!(empty($this->authnContextClassRef) && empty($this->authnContextDecl) && empty($this->authnContextDeclRef))) {
goto Kx;
}
throw new Exception("Missing either <saml:AuthnContextClassRef> or <saml:AuthnContextDeclRef> or <saml:AuthnContextDecl>");
Kx:
$this->AuthenticatingAuthority = Utilities::extractStrings($iC, "urn:oasis:names:tc:SAML:2.0:assertion", "AuthenticatingAuthority");
}
private function parseAttributes(DOMElement $Zu)
{
$nL = TRUE;
$ws = Utilities::xpQuery($Zu, "./saml_assertion:AttributeStatement/saml_assertion:Attribute");
foreach ($ws as $kj) {
if ($kj->hasAttribute("Name")) {
goto jk;
}
throw new Exception("Missing name on <saml:Attribute> element.");
jk:
$Pj = $kj->getAttribute("Name");
if ($kj->hasAttribute("NameFormat")) {
goto YV;
}
$KI = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified";
goto L0;
YV:
$KI = $kj->getAttribute("NameFormat");
L0:
if ($nL) {
goto SN;
}
if (!($this->nameFormat !== $KI)) {
goto Jl;
}
$this->nameFormat = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified";
Jl:
goto LB;
SN:
$this->nameFormat = $KI;
$nL = FALSE;
LB:
if (array_key_exists($Pj, $this->attributes)) {
goto qc;
}
$this->attributes[$Pj] = array();
qc:
$Of = Utilities::xpQuery($kj, "./saml_assertion:AttributeValue");
foreach ($Of as $D7) {
$this->attributes[$Pj][] = trim($D7->textContent);
o0:
}
rN:
vb:
}
uw:
}
private function parseEncryptedAttributes(DOMElement $Zu)
{
$this->encryptedAttribute = Utilities::xpQuery($Zu, "./saml_assertion:AttributeStatement/saml_assertion:EncryptedAttribute");
}
private function parseSignature(DOMElement $Zu)
{
$Cm = Utilities::validateElement($Zu);
if (!($Cm !== FALSE)) {
goto eM;
}
$this->wasSignedAtConstruction = TRUE;
$this->certificates = $Cm["Certificates"];
$this->signatureData = $Cm;
eM:
}
public function validate(XMLSecurityKey $OE)
{
if (!($this->signatureData === NULL)) {
goto Mv;
}
return FALSE;
Mv:
Utilities::validateSignature($this->signatureData, $OE);
return TRUE;
}
public function getId()
{
return $this->id;
}
public function setId($L8)
{
$this->id = $L8;
}
public function getIssueInstant()
{
return $this->issueInstant;
}
public function setIssueInstant($rz)
{
$this->issueInstant = $rz;
}
public function getIssuer()
{
return $this->issuer;
}
public function setIssuer($xJ)
{
$this->issuer = $xJ;
}
public function getNameId()
{
if (!($this->encryptedNameId !== NULL)) {
goto DY;
}
throw new Exception("Attempted to retrieve encrypted NameID without decrypting it first.");
DY:
return $this->nameId;
}
public function setNameId($jj)
{
$this->nameId = $jj;
}
public function isNameIdEncrypted()
{
if (!($this->encryptedNameId !== NULL)) {
goto oo;
}
return TRUE;
oo:
return FALSE;
}
public function encryptNameId(XMLSecurityKey $OE)
{
$CI = new DOMDocument();
$ai = $CI->createElement("root");
$CI->appendChild($ai);
Utilities::addNameId($ai, $this->nameId);
$jj = $ai->firstChild;
Utilities::getContainer()->debugMessage($jj, "encrypt");
$GN = new XMLSecEnc();
$GN->setNode($jj);
$GN->type = XMLSecEnc::Element;
$o4 = new XMLSecurityKey(XMLSecurityKey::AES128_CBC);
$o4->generateSessionKey();
$GN->encryptKey($OE, $o4);
$this->encryptedNameId = $GN->encryptNode($o4);
$this->nameId = NULL;
}
public function decryptNameId(XMLSecurityKey $OE, array $uu = array())
{
if (!($this->encryptedNameId === NULL)) {
goto vn;
}
return;
vn:
$jj = Utilities::decryptElement($this->encryptedNameId, $OE, $uu);
Utilities::getContainer()->debugMessage($jj, "decrypt");
$this->nameId = Utilities::parseNameId($jj);
$this->encryptedNameId = NULL;
}
public function decryptAttributes(XMLSecurityKey $OE, array $uu = array())
{
if (!($this->encryptedAttribute === NULL)) {
goto I4;
}
return;
I4:
$nL = TRUE;
$ws = $this->encryptedAttribute;
foreach ($ws as $QY) {
$kj = Utilities::decryptElement($QY->getElementsByTagName("EncryptedData")->item(0), $OE, $uu);
if ($kj->hasAttribute("Name")) {
goto X3;
}
throw new Exception("Missing name on <saml:Attribute> element.");
X3:
$Pj = $kj->getAttribute("Name");
if ($kj->hasAttribute("NameFormat")) {
goto oZ;
}
$KI = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified";
goto fb;
oZ:
$KI = $kj->getAttribute("NameFormat");
fb:
if ($nL) {
goto mc;
}
if (!($this->nameFormat !== $KI)) {
goto Nr;
}
$this->nameFormat = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified";
Nr:
goto WP;
mc:
$this->nameFormat = $KI;
$nL = FALSE;
WP:
if (array_key_exists($Pj, $this->attributes)) {
goto Z0;
}
$this->attributes[$Pj] = array();
Z0:
$Of = Utilities::xpQuery($kj, "./saml_assertion:AttributeValue");
foreach ($Of as $D7) {
$this->attributes[$Pj][] = trim($D7->textContent);
gl:
}
qN:
kr:
}
hi:
}
public function getNotBefore()
{
return $this->notBefore;
}
public function setNotBefore($HP)
{
$this->notBefore = $HP;
}
public function getNotOnOrAfter()
{
return $this->notOnOrAfter;
}
public function setNotOnOrAfter($k7)
{
$this->notOnOrAfter = $k7;
}
public function setEncryptedAttributes($eh)
{
$this->requiredEncAttributes = $eh;
}
public function getValidAudiences()
{
return $this->validAudiences;
}
public function setValidAudiences(array $eD = NULL)
{
$this->validAudiences = $eD;
}
public function getAuthnInstant()
{
return $this->authnInstant;
}
public function setAuthnInstant($HD)
{
$this->authnInstant = $HD;
}
public function getSessionNotOnOrAfter()
{
return $this->sessionNotOnOrAfter;
}
public function setSessionNotOnOrAfter($MI)
{
$this->sessionNotOnOrAfter = $MI;
}
public function getSessionIndex()
{
return $this->sessionIndex;
}
public function setSessionIndex($FZ)
{
$this->sessionIndex = $FZ;
}
public function getAuthnContext()
{
if (empty($this->authnContextClassRef)) {
goto G6;
}
return $this->authnContextClassRef;
G6:
if (empty($this->authnContextDeclRef)) {
goto rd;
}
return $this->authnContextDeclRef;
rd:
return NULL;
}
public function setAuthnContext($Sw)
{
$this->setAuthnContextClassRef($Sw);
}
public function getAuthnContextClassRef()
{
return $this->authnContextClassRef;
}
public function setAuthnContextClassRef($uG)
{
$this->authnContextClassRef = $uG;
}
public function setAuthnContextDecl(SAML2_XML_Chunk $i1)
{
if (empty($this->authnContextDeclRef)) {
goto de;
}
throw new Exception("AuthnContextDeclRef is already registered! May only have either a Decl or a DeclRef, not both!");
de:
$this->authnContextDecl = $i1;
}
public function getAuthnContextDecl()
{
return $this->authnContextDecl;
}
public function setAuthnContextDeclRef($LK)
{
if (empty($this->authnContextDecl)) {
goto n1;
}
throw new Exception("AuthnContextDecl is already registered! May only have either a Decl or a DeclRef, not both!");
n1:
$this->authnContextDeclRef = $LK;
}
public function getAuthnContextDeclRef()
{
return $this->authnContextDeclRef;
}
public function getAuthenticatingAuthority()
{
return $this->AuthenticatingAuthority;
}
public function setAuthenticatingAuthority($L0)
{
$this->AuthenticatingAuthority = $L0;
}
public function getAttributes()
{
return $this->attributes;
}
public function setAttributes(array $ws)
{
$this->attributes = $ws;
}
public function getAttributeNameFormat()
{
return $this->nameFormat;
}
public function setAttributeNameFormat($KI)
{
$this->nameFormat = $KI;
}
public function getSubjectConfirmation()
{
return $this->SubjectConfirmation;
}
public function setSubjectConfirmation(array $Lq)
{
$this->SubjectConfirmation = $Lq;
}
public function getSignatureKey()
{
return $this->signatureKey;
}
public function setSignatureKey(XMLsecurityKey $mo = NULL)
{
$this->signatureKey = $mo;
}
public function getEncryptionKey()
{
return $this->encryptionKey;
}
public function setEncryptionKey(XMLSecurityKey $ez = NULL)
{
$this->encryptionKey = $ez;
}
public function setCertificates(array $Mg)
{
$this->certificates = $Mg;
}
public function getCertificates()
{
return $this->certificates;
}
public function getSignatureData()
{
return $this->signatureData;
}
public function getWasSignedAtConstruction()
{
return $this->wasSignedAtConstruction;
}
public function toXML(DOMNode $wg = NULL)
{
if ($wg === NULL) {
goto ub;
}
$vs = $wg->ownerDocument;
goto CE;
ub:
$vs = new DOMDocument();
$wg = $vs;
CE:
$ai = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:" . "Assertion");
$wg->appendChild($ai);
$ai->setAttributeNS("urn:oasis:names:tc:SAML:2.0:protocol", "samlp:tmp", "tmp");
$ai->removeAttributeNS("urn:oasis:names:tc:SAML:2.0:protocol", "tmp");
$ai->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:tmp", "tmp");
$ai->removeAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "tmp");
$ai->setAttributeNS("http://www.w3.org/2001/XMLSchema", "xs:tmp", "tmp");
$ai->removeAttributeNS("http://www.w3.org/2001/XMLSchema", "tmp");
$ai->setAttribute("ID", $this->id);
$ai->setAttribute("Version", "2.0");
$ai->setAttribute("IssueInstant", gmdate("Y-m-d\TH:i:s\Z", $this->issueInstant));
$xJ = Utilities::addString($ai, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:Issuer", $this->issuer);
$this->addSubject($ai);
$this->addConditions($ai);
$this->addAuthnStatement($ai);
if ($this->requiredEncAttributes == FALSE) {
goto cl;
}
$this->addEncryptedAttributeStatement($ai);
goto N6;
cl:
$this->addAttributeStatement($ai);
N6:
if (!($this->signatureKey !== NULL)) {
goto yU;
}
Utilities::insertSignature($this->signatureKey, $this->certificates, $ai, $xJ->nextSibling);
yU:
return $ai;
}
private function addSubject(DOMElement $ai)
{
if (!($this->nameId === NULL && $this->encryptedNameId === NULL)) {
goto s8;
}
return;
s8:
$mR = $ai->ownerDocument->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Subject");
$ai->appendChild($mR);
if ($this->encryptedNameId === NULL) {
goto vS;
}
$ra = $mR->ownerDocument->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:" . "EncryptedID");
$mR->appendChild($ra);
$ra->appendChild($mR->ownerDocument->importNode($this->encryptedNameId, TRUE));
goto f8;
vS:
Utilities::addNameId($mR, $this->nameId);
f8:
foreach ($this->SubjectConfirmation as $ct) {
$ct->toXML($mR);
LD:
}
rX:
}
private function addConditions(DOMElement $ai)
{
$vs = $ai->ownerDocument;
$Cs = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Conditions");
$ai->appendChild($Cs);
if (!($this->notBefore !== NULL)) {
goto EE;
}
$Cs->setAttribute("NotBefore", gmdate("Y-m-d\TH:i:s\Z", $this->notBefore));
EE:
if (!($this->notOnOrAfter !== NULL)) {
goto R6;
}
$Cs->setAttribute("NotOnOrAfter", gmdate("Y-m-d\TH:i:s\Z", $this->notOnOrAfter));
R6:
if (!($this->validAudiences !== NULL)) {
goto eS;
}
$bm = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AudienceRestriction");
$Cs->appendChild($bm);
Utilities::addStrings($bm, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:Audience", FALSE, $this->validAudiences);
eS:
}
private function addAuthnStatement(DOMElement $ai)
{
if (!($this->authnInstant === NULL || $this->authnContextClassRef === NULL && $this->authnContextDecl === NULL && $this->authnContextDeclRef === NULL)) {
goto Ob;
}
return;
Ob:
$vs = $ai->ownerDocument;
$bE = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnStatement");
$ai->appendChild($bE);
$bE->setAttribute("AuthnInstant", gmdate("Y-m-d\TH:i:s\Z", $this->authnInstant));
if (!($this->sessionNotOnOrAfter !== NULL)) {
goto lW;
}
$bE->setAttribute("SessionNotOnOrAfter", gmdate("Y-m-d\TH:i:s\Z", $this->sessionNotOnOrAfter));
lW:
if (!($this->sessionIndex !== NULL)) {
goto wY;
}
$bE->setAttribute("SessionIndex", $this->sessionIndex);
wY:
$iC = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContext");
$bE->appendChild($iC);
if (empty($this->authnContextClassRef)) {
goto hd;
}
Utilities::addString($iC, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContextClassRef", $this->authnContextClassRef);
hd:
if (empty($this->authnContextDecl)) {
goto zF;
}
$this->authnContextDecl->toXML($iC);
zF:
if (empty($this->authnContextDeclRef)) {
goto Sc;
}
Utilities::addString($iC, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContextDeclRef", $this->authnContextDeclRef);
Sc:
Utilities::addStrings($iC, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthenticatingAuthority", FALSE, $this->AuthenticatingAuthority);
}
private function addAttributeStatement(DOMElement $ai)
{
if (!empty($this->attributes)) {
goto ym;
}
return;
ym:
$vs = $ai->ownerDocument;
$Ni = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeStatement");
$ai->appendChild($Ni);
foreach ($this->attributes as $Pj => $Of) {
$kj = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Attribute");
$Ni->appendChild($kj);
$kj->setAttribute("Name", $Pj);
if (!($this->nameFormat !== "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified")) {
goto x2;
}
$kj->setAttribute("NameFormat", $this->nameFormat);
x2:
foreach ($Of as $D7) {
if (is_string($D7)) {
goto Fp;
}
if (is_int($D7)) {
goto FQ;
}
$DF = NULL;
goto tb;
Fp:
$DF = "xs:string";
goto tb;
FQ:
$DF = "xs:integer";
tb:
$PU = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeValue");
$kj->appendChild($PU);
if (!($DF !== NULL)) {
goto QB;
}
$PU->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:type", $DF);
QB:
if (!is_null($D7)) {
goto jz;
}
$PU->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:nil", "true");
jz:
if ($D7 instanceof DOMNodeList) {
goto c2;
}
$PU->appendChild($vs->createTextNode($D7));
goto O2;
c2:
$n2 = 0;
A_:
if (!($n2 < $D7->length)) {
goto IV;
}
$Js = $vs->importNode($D7->item($n2), TRUE);
$PU->appendChild($Js);
x3:
$n2++;
goto A_;
IV:
O2:
bM:
}
bF:
yZ:
}
cZ:
}
private function addEncryptedAttributeStatement(DOMElement $ai)
{
if (!($this->requiredEncAttributes == FALSE)) {
goto gz;
}
return;
gz:
$vs = $ai->ownerDocument;
$Ni = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeStatement");
$ai->appendChild($Ni);
foreach ($this->attributes as $Pj => $Of) {
$Hg = new DOMDocument();
$kj = $Hg->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Attribute");
$kj->setAttribute("Name", $Pj);
$Hg->appendChild($kj);
if (!($this->nameFormat !== "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified")) {
goto ui;
}
$kj->setAttribute("NameFormat", $this->nameFormat);
ui:
foreach ($Of as $D7) {
if (is_string($D7)) {
goto Ch;
}
if (is_int($D7)) {
goto CX;
}
$DF = NULL;
goto Qy;
Ch:
$DF = "xs:string";
goto Qy;
CX:
$DF = "xs:integer";
Qy:
$PU = $Hg->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeValue");
$kj->appendChild($PU);
if (!($DF !== NULL)) {
goto Oc;
}
$PU->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:type", $DF);
Oc:
if ($D7 instanceof DOMNodeList) {
goto v5;
}
$PU->appendChild($Hg->createTextNode($D7));
goto ZT;
v5:
$n2 = 0;
aN:
if (!($n2 < $D7->length)) {
goto TM;
}
$Js = $Hg->importNode($D7->item($n2), TRUE);
$PU->appendChild($Js);
gD:
$n2++;
goto aN;
TM:
ZT:
FE:
}
k5:
$xO = new XMLSecEnc();
$xO->setNode($Hg->documentElement);
$xO->type = "http://www.w3.org/2001/04/xmlenc#Element";
$o4 = new XMLSecurityKey(XMLSecurityKey::AES256_CBC);
$o4->generateSessionKey();
$xO->encryptKey($this->encryptionKey, $o4);
$JH = $xO->encryptNode($o4);
$wR = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:EncryptedAttribute");
$Ni->appendChild($wR);
$Nn = $vs->importNode($JH, TRUE);
$wR->appendChild($Nn);
AC:
}
cy:
}
}
?>
Did this file decode correctly?
Original Code
<?php
include_once "\125\x74\151\154\x69\164\151\145\163\56\x70\x68\x70";
class SAML2_Assertion
{
private $id;
private $issueInstant;
private $issuer;
private $nameId;
private $encryptedNameId;
private $encryptedAttribute;
private $encryptionKey;
private $notBefore;
private $notOnOrAfter;
private $validAudiences;
private $sessionNotOnOrAfter;
private $sessionIndex;
private $authnInstant;
private $authnContextClassRef;
private $authnContextDecl;
private $authnContextDeclRef;
private $AuthenticatingAuthority;
private $attributes;
private $nameFormat;
private $signatureKey;
private $certificates;
private $signatureData;
private $requiredEncAttributes;
private $SubjectConfirmation;
protected $wasSignedAtConstruction = FALSE;
public function __construct(DOMElement $Zu = NULL)
{
$this->id = Utilities::generateId();
$this->issueInstant = Utilities::generateTimestamp();
$this->issuer = '';
$this->authnInstant = Utilities::generateTimestamp();
$this->attributes = array();
$this->nameFormat = "\x75\162\156\x3a\157\141\x73\151\163\72\156\x61\155\145\x73\72\x74\143\72\x53\x41\x4d\x4c\72\x31\56\x31\72\x6e\141\x6d\145\151\144\55\x66\x6f\162\x6d\141\x74\x3a\x75\156\163\160\145\143\x69\x66\151\x65\144";
$this->certificates = array();
$this->AuthenticatingAuthority = array();
$this->SubjectConfirmation = array();
if (!($Zu === NULL)) {
goto Tv;
}
return;
Tv:
if (!($Zu->localName === "\105\156\x63\162\171\160\x74\x65\144\x41\x73\163\x65\162\x74\x69\157\156")) {
goto w3;
}
$oK = Utilities::xpQuery($Zu, "\x2e\57\x78\x65\x6e\x63\x3a\105\x6e\x63\162\171\x70\x74\145\144\104\x61\x74\141");
$YG = Utilities::xpQuery($Zu, "\56\x2f\x78\145\156\x63\72\105\x6e\143\162\x79\x70\x74\145\144\x44\141\x74\141\57\x64\x73\72\113\x65\171\111\156\146\x6f");
$X5 = $YG[0]->firstChild->firstChild->getAttribute("\x41\154\147\x6f\x72\151\164\150\155");
$YS = Utilities::getEncryptionAlgorithm($X5);
if (count($oK) === 0) {
goto t9;
}
if (count($oK) > 1) {
goto kk;
}
goto UI;
t9:
throw new Exception("\x4d\x69\x73\x73\151\156\147\40\x65\156\x63\x72\x79\x70\x74\145\144\x20\144\x61\164\x61\x20\151\x6e\40\74\x73\x61\155\154\x3a\x45\156\x63\162\171\160\164\x65\x64\101\x73\163\145\162\x74\x69\x6f\x6e\x3e\56");
goto UI;
kk:
throw new Exception("\x4d\157\x72\x65\40\164\x68\x61\x6e\40\157\x6e\x65\40\x65\x6e\143\x72\x79\x70\x74\x65\x64\x20\x64\141\164\141\x20\x65\x6c\145\x6d\x65\156\x74\x20\x69\x6e\40\x3c\x73\x61\155\x6c\x3a\x45\x6e\x63\162\x79\160\164\145\144\101\x73\163\145\162\164\151\157\156\76\56");
UI:
$OE = new XMLSecurityKey($YS, array("\x74\171\160\145" => "\160\162\151\x76\141\x74\145"));
$Pp = plugin_dir_path(__FILE__) . "\x72\x65\x73\157\x75\x72\143\x65\x73" . DIRECTORY_SEPARATOR . "\x73\160\55\153\x65\x79\56\x6b\x65\x79";
$OE->loadKey($Pp, TRUE);
$JM = new XMLSecurityKey($YS, array("\x74\x79\x70\x65" => "\160\x72\x69\x76\141\x74\x65"));
$sP = plugin_dir_path(__FILE__) . "\x72\x65\163\x6f\165\x72\x63\145\163" . DIRECTORY_SEPARATOR . "\155\151\x6e\x69\x6f\162\x61\x6e\x67\145\137\x73\x70\137\160\162\151\x76\x5f\153\145\171\x2e\153\145\x79";
$uu = array();
$Zu = Utilities::decryptElement($oK[0], $OE, $uu, $JM);
w3:
if ($Zu->hasAttribute("\x49\x44")) {
goto tO;
}
throw new Exception("\x4d\x69\163\x73\151\156\x67\40\111\x44\x20\x61\164\164\x72\x69\x62\165\x74\x65\40\x6f\156\x20\123\101\115\x4c\x20\141\163\163\x65\x72\x74\151\x6f\156\x2e");
tO:
$this->id = $Zu->getAttribute("\x49\104");
if (!($Zu->getAttribute("\x56\145\162\163\151\157\x6e") !== "\62\56\x30")) {
goto kf;
}
throw new Exception("\125\156\x73\165\160\160\157\162\x74\145\144\40\166\145\162\163\x69\157\x6e\72\40" . $Zu->getAttribute("\x56\145\x72\x73\151\x6f\x6e"));
kf:
$this->issueInstant = Utilities::xsDateTimeToTimestamp($Zu->getAttribute("\x49\163\163\x75\145\111\x6e\163\x74\x61\x6e\x74"));
$xJ = Utilities::xpQuery($Zu, "\56\57\x73\x61\x6d\154\137\x61\x73\x73\x65\x72\x74\151\157\x6e\x3a\111\163\163\x75\x65\162");
if (!empty($xJ)) {
goto f4;
}
throw new Exception("\115\x69\x73\x73\151\156\147\x20\74\163\x61\x6d\154\72\x49\163\x73\x75\x65\162\76\40\151\x6e\x20\141\x73\163\145\x72\x74\x69\157\156\56");
f4:
$this->issuer = trim($xJ[0]->textContent);
$this->parseConditions($Zu);
$this->parseAuthnStatement($Zu);
$this->parseAttributes($Zu);
$this->parseEncryptedAttributes($Zu);
$this->parseSignature($Zu);
$this->parseSubject($Zu);
}
private function parseSubject(DOMElement $Zu)
{
$mR = Utilities::xpQuery($Zu, "\56\x2f\x73\x61\x6d\x6c\x5f\x61\x73\x73\x65\162\x74\x69\157\x6e\x3a\123\x75\142\x6a\x65\x63\x74");
if (empty($mR)) {
goto OV;
}
if (count($mR) > 1) {
goto aV;
}
goto pY;
OV:
return;
goto pY;
aV:
throw new Exception("\115\x6f\x72\145\40\164\150\141\x6e\x20\x6f\x6e\x65\x20\74\x73\x61\x6d\x6c\x3a\123\x75\142\x6a\145\x63\x74\76\40\151\x6e\40\x3c\x73\141\155\x6c\72\101\x73\x73\x65\x72\164\151\x6f\x6e\76\56");
pY:
$mR = $mR[0];
$jj = Utilities::xpQuery($mR, "\x2e\57\163\141\x6d\x6c\137\x61\163\163\x65\162\x74\x69\157\156\x3a\116\x61\155\145\111\104\x20\x7c\x20\56\x2f\163\x61\x6d\154\137\141\x73\163\145\162\x74\151\157\156\72\105\x6e\x63\x72\x79\160\164\145\x64\x49\104\57\x78\x65\x6e\x63\72\105\156\x63\162\x79\x70\164\145\x64\x44\141\x74\x61");
if (empty($jj)) {
goto M4;
}
if (count($jj) > 1) {
goto Qw;
}
goto Gb;
M4:
throw new Exception("\x4d\x69\x73\163\151\156\147\x20\x3c\163\x61\x6d\x6c\72\x4e\x61\155\145\x49\x44\x3e\x20\157\162\40\74\163\x61\155\154\72\105\x6e\x63\162\171\160\164\145\144\111\104\76\40\151\x6e\40\x3c\x73\141\155\x6c\x3a\x53\x75\x62\x6a\x65\x63\164\76\x2e");
goto Gb;
Qw:
throw new Exception("\x4d\x6f\x72\145\40\x74\x68\x61\x6e\x20\x6f\156\x65\x20\x3c\x73\141\155\x6c\x3a\x4e\141\155\x65\x49\104\76\40\157\x72\x20\74\163\x61\x6d\x6c\72\105\156\x63\162\x79\x70\164\145\144\x44\76\x20\151\156\x20\74\163\141\x6d\x6c\x3a\x53\x75\142\152\x65\x63\x74\x3e\x2e");
Gb:
$jj = $jj[0];
if ($jj->localName === "\105\x6e\143\162\171\x70\x74\x65\144\104\x61\x74\141") {
goto uy;
}
$this->nameId = Utilities::parseNameId($jj);
goto bl;
uy:
$this->encryptedNameId = $jj;
bl:
}
private function parseConditions(DOMElement $Zu)
{
$Cs = Utilities::xpQuery($Zu, "\56\57\163\x61\155\x6c\x5f\x61\x73\x73\x65\x72\x74\151\157\156\72\x43\157\156\144\151\164\151\x6f\x6e\163");
if (empty($Cs)) {
goto YO;
}
if (count($Cs) > 1) {
goto w_;
}
goto TX;
YO:
return;
goto TX;
w_:
throw new Exception("\x4d\157\162\x65\40\164\150\x61\x6e\x20\x6f\156\x65\x20\74\x73\x61\x6d\154\72\103\x6f\x6e\x64\151\164\x69\x6f\x6e\163\76\x20\x69\156\40\74\163\141\x6d\x6c\72\101\163\x73\x65\x72\164\151\157\x6e\76\56");
TX:
$Cs = $Cs[0];
if (!$Cs->hasAttribute("\x4e\157\x74\102\x65\x66\157\x72\x65")) {
goto ze;
}
$HP = Utilities::xsDateTimeToTimestamp($Cs->getAttribute("\116\157\164\102\x65\x66\157\x72\x65"));
if (!($this->notBefore === NULL || $this->notBefore < $HP)) {
goto TT;
}
$this->notBefore = $HP;
TT:
ze:
if (!$Cs->hasAttribute("\x4e\x6f\x74\x4f\156\x4f\162\101\x66\164\x65\x72")) {
goto Mi;
}
$k7 = Utilities::xsDateTimeToTimestamp($Cs->getAttribute("\x4e\x6f\x74\117\x6e\117\x72\101\x66\164\x65\x72"));
if (!($this->notOnOrAfter === NULL || $this->notOnOrAfter > $k7)) {
goto Ww;
}
$this->notOnOrAfter = $k7;
Ww:
Mi:
$Js = $Cs->firstChild;
SZ:
if (!($Js !== NULL)) {
goto fO;
}
if (!$Js instanceof DOMText) {
goto P6;
}
goto l1;
P6:
if (!($Js->namespaceURI !== "\x75\x72\x6e\72\157\x61\x73\151\x73\72\x6e\x61\x6d\x65\163\x3a\164\x63\72\123\x41\115\114\x3a\x32\56\x30\x3a\141\163\x73\x65\x72\164\151\157\156")) {
goto B0;
}
throw new Exception("\x55\x6e\153\156\x6f\167\156\40\x6e\141\x6d\145\x73\160\141\143\x65\40\157\x66\x20\143\x6f\x6e\144\151\x74\151\157\156\x3a\x20" . var_export($Js->namespaceURI, TRUE));
B0:
switch ($Js->localName) {
case "\101\x75\144\151\x65\156\143\145\122\x65\x73\x74\x72\151\143\x74\151\x6f\x6e":
$g0 = Utilities::extractStrings($Js, "\x75\x72\x6e\x3a\x6f\141\163\x69\x73\x3a\156\x61\155\145\163\x3a\164\x63\72\123\x41\115\114\x3a\x32\x2e\x30\x3a\141\163\x73\145\162\x74\x69\157\156", "\101\x75\x64\x69\145\x6e\x63\145");
if ($this->validAudiences === NULL) {
goto iz;
}
$this->validAudiences = array_intersect($this->validAudiences, $g0);
goto UB;
iz:
$this->validAudiences = $g0;
UB:
goto UD;
case "\x4f\x6e\145\x54\x69\x6d\x65\125\163\x65":
goto UD;
case "\120\x72\x6f\170\x79\x52\145\163\x74\x72\x69\x63\164\x69\157\156":
goto UD;
default:
throw new Exception("\x55\x6e\x6b\156\157\x77\x6e\x20\143\157\x6e\144\x69\x74\151\x6f\156\72\40" . var_export($Js->localName, TRUE));
}
PG:
UD:
l1:
$Js = $Js->nextSibling;
goto SZ;
fO:
}
private function parseAuthnStatement(DOMElement $Zu)
{
$yG = Utilities::xpQuery($Zu, "\56\x2f\x73\x61\155\154\x5f\141\x73\x73\x65\162\164\151\x6f\x6e\x3a\x41\x75\x74\x68\156\x53\164\141\164\x65\x6d\145\156\164");
if (empty($yG)) {
goto I9;
}
if (count($yG) > 1) {
goto GY;
}
goto I2;
I9:
$this->authnInstant = NULL;
return;
goto I2;
GY:
throw new Exception("\x4d\x6f\x72\x65\40\164\150\x61\164\x20\157\x6e\145\40\x3c\163\x61\x6d\154\72\101\x75\164\150\156\x53\x74\x61\x74\145\155\x65\x6e\164\x3e\40\151\156\40\x3c\163\141\x6d\154\72\x41\x73\x73\x65\162\164\151\157\156\76\x20\x6e\x6f\x74\40\163\165\160\x70\x6f\162\164\x65\144\56");
I2:
$cB = $yG[0];
if ($cB->hasAttribute("\x41\x75\164\150\156\x49\x6e\x73\x74\x61\x6e\164")) {
goto Ue;
}
throw new Exception("\115\x69\x73\x73\x69\156\x67\x20\162\x65\161\x75\x69\162\145\144\40\101\165\164\150\x6e\111\x6e\x73\x74\141\x6e\x74\x20\141\164\x74\162\x69\142\165\x74\145\40\x6f\x6e\x20\74\163\141\155\x6c\x3a\x41\165\x74\150\x6e\123\164\x61\x74\x65\155\145\x6e\164\76\56");
Ue:
$this->authnInstant = Utilities::xsDateTimeToTimestamp($cB->getAttribute("\101\165\x74\x68\x6e\x49\x6e\163\164\141\156\164"));
if (!$cB->hasAttribute("\x53\x65\x73\163\151\x6f\x6e\x4e\x6f\164\x4f\x6e\117\162\x41\x66\x74\145\162")) {
goto mE;
}
$this->sessionNotOnOrAfter = Utilities::xsDateTimeToTimestamp($cB->getAttribute("\123\x65\163\x73\x69\157\x6e\116\157\164\117\x6e\x4f\162\101\146\164\145\x72"));
mE:
if (!$cB->hasAttribute("\x53\x65\163\x73\x69\157\x6e\x49\156\x64\145\170")) {
goto iA;
}
$this->sessionIndex = $cB->getAttribute("\x53\145\x73\163\151\x6f\156\111\156\144\145\x78");
iA:
$this->parseAuthnContext($cB);
}
private function parseAuthnContext(DOMElement $bE)
{
$vE = Utilities::xpQuery($bE, "\56\x2f\163\x61\155\154\x5f\x61\x73\x73\x65\x72\x74\x69\157\x6e\72\x41\165\164\x68\x6e\x43\x6f\x6e\164\145\170\164");
if (count($vE) > 1) {
goto lK;
}
if (empty($vE)) {
goto Cw;
}
goto bI;
lK:
throw new Exception("\115\157\x72\145\x20\x74\x68\x61\x6e\40\x6f\156\x65\40\74\163\141\x6d\154\x3a\101\165\x74\150\x6e\x43\x6f\156\x74\145\x78\x74\76\x20\151\x6e\x20\74\163\141\155\154\x3a\101\165\164\x68\x6e\x53\164\141\x74\x65\x6d\145\156\x74\x3e\x2e");
goto bI;
Cw:
throw new Exception("\115\x69\x73\x73\x69\156\147\x20\162\x65\x71\165\151\162\x65\x64\x20\x3c\163\x61\x6d\154\x3a\x41\165\x74\x68\156\x43\x6f\156\x74\x65\170\164\x3e\x20\x69\156\x20\74\163\x61\x6d\x6c\x3a\101\165\x74\x68\x6e\x53\164\141\164\145\155\x65\x6e\x74\76\x2e");
bI:
$iC = $vE[0];
$dj = Utilities::xpQuery($iC, "\56\x2f\x73\x61\155\x6c\x5f\141\163\163\x65\162\x74\x69\157\x6e\x3a\x41\x75\x74\150\156\103\157\156\x74\145\170\x74\x44\145\143\154\122\145\146");
if (count($dj) > 1) {
goto rz;
}
if (count($dj) === 1) {
goto PH;
}
goto BX;
rz:
throw new Exception("\115\x6f\162\x65\x20\x74\x68\x61\x6e\x20\157\x6e\145\x20\74\x73\x61\155\154\72\101\x75\164\x68\x6e\x43\157\x6e\x74\145\x78\x74\104\145\x63\x6c\x52\145\146\x3e\x20\x66\157\165\156\x64\77");
goto BX;
PH:
$this->setAuthnContextDeclRef(trim($dj[0]->textContent));
BX:
$z7 = Utilities::xpQuery($iC, "\x2e\x2f\x73\x61\155\x6c\137\141\163\163\x65\162\x74\151\157\156\72\x41\x75\164\150\156\103\x6f\156\164\x65\x78\x74\104\145\x63\154");
if (count($z7) > 1) {
goto qd;
}
if (count($z7) === 1) {
goto QQ;
}
goto wz;
qd:
throw new Exception("\x4d\157\x72\x65\40\164\x68\141\x6e\40\x6f\156\145\x20\74\163\x61\x6d\154\72\101\x75\x74\150\156\103\157\156\x74\x65\x78\x74\x44\145\143\154\x3e\40\146\x6f\x75\x6e\144\x3f");
goto wz;
QQ:
$this->setAuthnContextDecl(new SAML2_XML_Chunk($z7[0]));
wz:
$AV = Utilities::xpQuery($iC, "\56\x2f\163\x61\x6d\x6c\137\141\163\x73\145\x72\x74\151\157\x6e\x3a\101\165\x74\150\x6e\x43\x6f\156\164\145\170\164\x43\x6c\141\163\x73\x52\x65\x66");
if (count($AV) > 1) {
goto Fz;
}
if (count($AV) === 1) {
goto hU;
}
goto Tw;
Fz:
throw new Exception("\115\157\x72\145\x20\164\x68\141\156\x20\x6f\156\145\40\74\x73\141\155\x6c\72\101\165\x74\x68\156\x43\x6f\156\164\x65\x78\x74\x43\x6c\x61\x73\x73\x52\145\146\x3e\40\x69\x6e\x20\74\163\x61\x6d\154\72\101\165\x74\x68\156\x43\x6f\x6e\x74\145\170\x74\76\x2e");
goto Tw;
hU:
$this->setAuthnContextClassRef(trim($AV[0]->textContent));
Tw:
if (!(empty($this->authnContextClassRef) && empty($this->authnContextDecl) && empty($this->authnContextDeclRef))) {
goto Kx;
}
throw new Exception("\x4d\151\163\163\x69\156\x67\40\145\151\x74\150\x65\162\40\x3c\x73\141\155\x6c\72\x41\165\164\x68\x6e\103\157\x6e\164\x65\x78\x74\103\154\141\163\163\122\x65\x66\x3e\40\157\x72\x20\74\163\x61\x6d\x6c\x3a\x41\x75\164\x68\156\x43\157\x6e\164\x65\x78\x74\104\x65\x63\x6c\x52\x65\146\x3e\x20\157\x72\x20\74\163\x61\155\154\72\101\x75\x74\150\x6e\x43\x6f\x6e\164\x65\x78\x74\x44\x65\x63\154\x3e");
Kx:
$this->AuthenticatingAuthority = Utilities::extractStrings($iC, "\x75\162\x6e\72\157\141\163\x69\163\72\x6e\x61\x6d\x65\163\x3a\164\143\72\x53\101\115\x4c\x3a\x32\56\x30\x3a\x61\163\163\145\x72\x74\x69\x6f\x6e", "\x41\x75\164\x68\145\156\164\151\x63\141\x74\151\x6e\x67\101\x75\164\x68\x6f\x72\x69\164\x79");
}
private function parseAttributes(DOMElement $Zu)
{
$nL = TRUE;
$ws = Utilities::xpQuery($Zu, "\56\57\x73\x61\x6d\x6c\x5f\141\x73\163\145\162\x74\151\157\156\72\x41\x74\x74\162\x69\142\165\x74\x65\123\164\x61\164\145\x6d\145\x6e\x74\57\163\141\x6d\154\x5f\141\x73\x73\145\x72\x74\151\x6f\156\72\101\164\164\162\x69\142\x75\164\x65");
foreach ($ws as $kj) {
if ($kj->hasAttribute("\116\141\155\x65")) {
goto jk;
}
throw new Exception("\115\x69\163\x73\151\156\147\40\x6e\141\155\x65\x20\157\156\40\x3c\163\141\155\x6c\72\101\x74\164\162\151\x62\165\x74\145\76\x20\x65\x6c\145\x6d\145\x6e\x74\x2e");
jk:
$Pj = $kj->getAttribute("\x4e\141\155\145");
if ($kj->hasAttribute("\116\x61\155\x65\106\x6f\x72\155\x61\x74")) {
goto YV;
}
$KI = "\165\x72\156\72\157\x61\x73\151\163\x3a\156\x61\155\x65\163\72\x74\143\x3a\x53\101\x4d\x4c\72\61\x2e\61\x3a\x6e\x61\155\x65\151\x64\x2d\x66\157\x72\x6d\141\164\72\165\156\x73\x70\145\143\x69\x66\x69\145\x64";
goto L0;
YV:
$KI = $kj->getAttribute("\x4e\x61\155\x65\x46\157\162\155\x61\164");
L0:
if ($nL) {
goto SN;
}
if (!($this->nameFormat !== $KI)) {
goto Jl;
}
$this->nameFormat = "\165\x72\156\x3a\157\141\x73\x69\x73\72\156\x61\x6d\x65\163\x3a\x74\x63\72\x53\101\x4d\x4c\72\x31\56\x31\x3a\156\x61\155\x65\x69\x64\55\146\157\162\x6d\141\164\72\165\156\163\x70\145\x63\151\x66\x69\145\x64";
Jl:
goto LB;
SN:
$this->nameFormat = $KI;
$nL = FALSE;
LB:
if (array_key_exists($Pj, $this->attributes)) {
goto qc;
}
$this->attributes[$Pj] = array();
qc:
$Of = Utilities::xpQuery($kj, "\x2e\57\163\x61\155\154\x5f\x61\x73\163\145\x72\164\151\x6f\x6e\x3a\x41\x74\164\162\x69\142\x75\164\x65\x56\141\x6c\x75\x65");
foreach ($Of as $D7) {
$this->attributes[$Pj][] = trim($D7->textContent);
o0:
}
rN:
vb:
}
uw:
}
private function parseEncryptedAttributes(DOMElement $Zu)
{
$this->encryptedAttribute = Utilities::xpQuery($Zu, "\x2e\x2f\163\x61\155\154\x5f\141\x73\163\145\162\164\x69\x6f\156\x3a\x41\x74\164\162\x69\x62\165\164\x65\x53\x74\141\164\145\x6d\x65\156\164\57\163\141\155\154\137\x61\x73\x73\x65\x72\164\x69\x6f\x6e\72\105\x6e\x63\162\x79\160\164\x65\144\101\x74\x74\162\151\142\165\164\x65");
}
private function parseSignature(DOMElement $Zu)
{
$Cm = Utilities::validateElement($Zu);
if (!($Cm !== FALSE)) {
goto eM;
}
$this->wasSignedAtConstruction = TRUE;
$this->certificates = $Cm["\103\145\x72\x74\151\146\151\143\x61\x74\x65\163"];
$this->signatureData = $Cm;
eM:
}
public function validate(XMLSecurityKey $OE)
{
if (!($this->signatureData === NULL)) {
goto Mv;
}
return FALSE;
Mv:
Utilities::validateSignature($this->signatureData, $OE);
return TRUE;
}
public function getId()
{
return $this->id;
}
public function setId($L8)
{
$this->id = $L8;
}
public function getIssueInstant()
{
return $this->issueInstant;
}
public function setIssueInstant($rz)
{
$this->issueInstant = $rz;
}
public function getIssuer()
{
return $this->issuer;
}
public function setIssuer($xJ)
{
$this->issuer = $xJ;
}
public function getNameId()
{
if (!($this->encryptedNameId !== NULL)) {
goto DY;
}
throw new Exception("\101\164\164\x65\155\x70\164\x65\144\40\x74\157\40\162\x65\164\162\x69\145\x76\x65\40\145\x6e\x63\162\x79\x70\x74\x65\144\x20\x4e\141\155\145\x49\x44\40\167\x69\164\x68\157\165\164\x20\144\145\143\162\171\x70\x74\151\156\x67\x20\151\164\40\146\x69\162\x73\164\x2e");
DY:
return $this->nameId;
}
public function setNameId($jj)
{
$this->nameId = $jj;
}
public function isNameIdEncrypted()
{
if (!($this->encryptedNameId !== NULL)) {
goto oo;
}
return TRUE;
oo:
return FALSE;
}
public function encryptNameId(XMLSecurityKey $OE)
{
$CI = new DOMDocument();
$ai = $CI->createElement("\162\157\x6f\164");
$CI->appendChild($ai);
Utilities::addNameId($ai, $this->nameId);
$jj = $ai->firstChild;
Utilities::getContainer()->debugMessage($jj, "\145\156\143\162\171\x70\164");
$GN = new XMLSecEnc();
$GN->setNode($jj);
$GN->type = XMLSecEnc::Element;
$o4 = new XMLSecurityKey(XMLSecurityKey::AES128_CBC);
$o4->generateSessionKey();
$GN->encryptKey($OE, $o4);
$this->encryptedNameId = $GN->encryptNode($o4);
$this->nameId = NULL;
}
public function decryptNameId(XMLSecurityKey $OE, array $uu = array())
{
if (!($this->encryptedNameId === NULL)) {
goto vn;
}
return;
vn:
$jj = Utilities::decryptElement($this->encryptedNameId, $OE, $uu);
Utilities::getContainer()->debugMessage($jj, "\144\145\143\162\x79\x70\x74");
$this->nameId = Utilities::parseNameId($jj);
$this->encryptedNameId = NULL;
}
public function decryptAttributes(XMLSecurityKey $OE, array $uu = array())
{
if (!($this->encryptedAttribute === NULL)) {
goto I4;
}
return;
I4:
$nL = TRUE;
$ws = $this->encryptedAttribute;
foreach ($ws as $QY) {
$kj = Utilities::decryptElement($QY->getElementsByTagName("\x45\x6e\143\x72\171\x70\164\x65\144\x44\141\164\141")->item(0), $OE, $uu);
if ($kj->hasAttribute("\x4e\x61\x6d\145")) {
goto X3;
}
throw new Exception("\x4d\x69\163\163\x69\156\x67\40\156\141\x6d\145\x20\x6f\x6e\x20\74\x73\141\155\x6c\x3a\x41\x74\x74\162\151\142\x75\164\x65\76\40\145\154\145\155\145\x6e\x74\x2e");
X3:
$Pj = $kj->getAttribute("\116\141\x6d\x65");
if ($kj->hasAttribute("\116\x61\155\145\x46\157\162\x6d\x61\x74")) {
goto oZ;
}
$KI = "\x75\162\x6e\72\x6f\x61\163\x69\x73\72\156\141\155\x65\163\x3a\x74\143\x3a\123\x41\x4d\114\72\x32\56\x30\72\x61\x74\x74\162\156\x61\x6d\x65\55\x66\x6f\162\x6d\141\164\72\x75\x6e\163\x70\x65\x63\151\x66\151\145\144";
goto fb;
oZ:
$KI = $kj->getAttribute("\x4e\x61\155\145\106\157\162\155\x61\x74");
fb:
if ($nL) {
goto mc;
}
if (!($this->nameFormat !== $KI)) {
goto Nr;
}
$this->nameFormat = "\x75\x72\x6e\72\157\x61\x73\x69\x73\x3a\156\x61\155\x65\x73\72\164\x63\72\x53\x41\115\114\72\x32\x2e\x30\72\x61\x74\x74\x72\x6e\141\x6d\145\55\x66\157\162\155\x61\x74\72\165\156\163\x70\145\x63\151\146\x69\145\x64";
Nr:
goto WP;
mc:
$this->nameFormat = $KI;
$nL = FALSE;
WP:
if (array_key_exists($Pj, $this->attributes)) {
goto Z0;
}
$this->attributes[$Pj] = array();
Z0:
$Of = Utilities::xpQuery($kj, "\56\57\163\141\x6d\x6c\x5f\x61\x73\163\x65\162\x74\151\157\x6e\x3a\101\x74\164\x72\151\142\x75\164\145\126\141\154\165\x65");
foreach ($Of as $D7) {
$this->attributes[$Pj][] = trim($D7->textContent);
gl:
}
qN:
kr:
}
hi:
}
public function getNotBefore()
{
return $this->notBefore;
}
public function setNotBefore($HP)
{
$this->notBefore = $HP;
}
public function getNotOnOrAfter()
{
return $this->notOnOrAfter;
}
public function setNotOnOrAfter($k7)
{
$this->notOnOrAfter = $k7;
}
public function setEncryptedAttributes($eh)
{
$this->requiredEncAttributes = $eh;
}
public function getValidAudiences()
{
return $this->validAudiences;
}
public function setValidAudiences(array $eD = NULL)
{
$this->validAudiences = $eD;
}
public function getAuthnInstant()
{
return $this->authnInstant;
}
public function setAuthnInstant($HD)
{
$this->authnInstant = $HD;
}
public function getSessionNotOnOrAfter()
{
return $this->sessionNotOnOrAfter;
}
public function setSessionNotOnOrAfter($MI)
{
$this->sessionNotOnOrAfter = $MI;
}
public function getSessionIndex()
{
return $this->sessionIndex;
}
public function setSessionIndex($FZ)
{
$this->sessionIndex = $FZ;
}
public function getAuthnContext()
{
if (empty($this->authnContextClassRef)) {
goto G6;
}
return $this->authnContextClassRef;
G6:
if (empty($this->authnContextDeclRef)) {
goto rd;
}
return $this->authnContextDeclRef;
rd:
return NULL;
}
public function setAuthnContext($Sw)
{
$this->setAuthnContextClassRef($Sw);
}
public function getAuthnContextClassRef()
{
return $this->authnContextClassRef;
}
public function setAuthnContextClassRef($uG)
{
$this->authnContextClassRef = $uG;
}
public function setAuthnContextDecl(SAML2_XML_Chunk $i1)
{
if (empty($this->authnContextDeclRef)) {
goto de;
}
throw new Exception("\x41\x75\x74\150\156\103\x6f\156\x74\145\x78\x74\x44\x65\x63\154\x52\x65\x66\x20\151\163\x20\141\x6c\x72\145\141\x64\171\40\x72\145\147\x69\163\x74\x65\162\x65\144\41\40\x4d\141\171\x20\x6f\x6e\154\171\40\150\141\x76\x65\x20\145\x69\164\x68\145\162\x20\x61\x20\104\x65\x63\x6c\x20\157\162\x20\x61\x20\x44\x65\x63\x6c\122\145\x66\x2c\40\x6e\157\x74\40\x62\x6f\164\x68\41");
de:
$this->authnContextDecl = $i1;
}
public function getAuthnContextDecl()
{
return $this->authnContextDecl;
}
public function setAuthnContextDeclRef($LK)
{
if (empty($this->authnContextDecl)) {
goto n1;
}
throw new Exception("\x41\165\x74\x68\156\x43\x6f\x6e\164\145\x78\x74\x44\145\x63\x6c\40\x69\x73\x20\141\x6c\x72\145\x61\x64\171\x20\x72\145\x67\151\x73\x74\145\x72\x65\x64\x21\40\x4d\141\x79\40\x6f\x6e\154\171\x20\x68\x61\x76\145\x20\145\151\x74\150\x65\162\x20\141\40\104\145\x63\x6c\x20\x6f\x72\x20\x61\40\104\145\143\x6c\x52\x65\x66\x2c\40\x6e\x6f\164\x20\x62\157\x74\x68\41");
n1:
$this->authnContextDeclRef = $LK;
}
public function getAuthnContextDeclRef()
{
return $this->authnContextDeclRef;
}
public function getAuthenticatingAuthority()
{
return $this->AuthenticatingAuthority;
}
public function setAuthenticatingAuthority($L0)
{
$this->AuthenticatingAuthority = $L0;
}
public function getAttributes()
{
return $this->attributes;
}
public function setAttributes(array $ws)
{
$this->attributes = $ws;
}
public function getAttributeNameFormat()
{
return $this->nameFormat;
}
public function setAttributeNameFormat($KI)
{
$this->nameFormat = $KI;
}
public function getSubjectConfirmation()
{
return $this->SubjectConfirmation;
}
public function setSubjectConfirmation(array $Lq)
{
$this->SubjectConfirmation = $Lq;
}
public function getSignatureKey()
{
return $this->signatureKey;
}
public function setSignatureKey(XMLsecurityKey $mo = NULL)
{
$this->signatureKey = $mo;
}
public function getEncryptionKey()
{
return $this->encryptionKey;
}
public function setEncryptionKey(XMLSecurityKey $ez = NULL)
{
$this->encryptionKey = $ez;
}
public function setCertificates(array $Mg)
{
$this->certificates = $Mg;
}
public function getCertificates()
{
return $this->certificates;
}
public function getSignatureData()
{
return $this->signatureData;
}
public function getWasSignedAtConstruction()
{
return $this->wasSignedAtConstruction;
}
public function toXML(DOMNode $wg = NULL)
{
if ($wg === NULL) {
goto ub;
}
$vs = $wg->ownerDocument;
goto CE;
ub:
$vs = new DOMDocument();
$wg = $vs;
CE:
$ai = $vs->createElementNS("\x75\162\156\72\157\x61\163\151\163\x3a\x6e\x61\x6d\145\x73\72\164\143\72\x53\x41\x4d\114\x3a\x32\56\60\72\x61\x73\163\145\162\x74\x69\x6f\x6e", "\x73\141\155\x6c\x3a" . "\x41\x73\x73\145\x72\x74\151\x6f\x6e");
$wg->appendChild($ai);
$ai->setAttributeNS("\165\x72\x6e\x3a\x6f\x61\x73\x69\163\72\156\x61\155\145\163\72\x74\x63\72\x53\x41\x4d\114\72\x32\x2e\60\x3a\x70\162\157\x74\x6f\143\157\154", "\x73\x61\155\x6c\x70\72\x74\x6d\160", "\x74\155\x70");
$ai->removeAttributeNS("\165\x72\156\72\157\x61\x73\x69\x73\72\x6e\141\x6d\145\x73\x3a\x74\x63\72\x53\101\115\114\72\62\x2e\x30\x3a\160\162\157\x74\157\143\x6f\x6c", "\164\x6d\x70");
$ai->setAttributeNS("\x68\x74\x74\x70\72\57\57\x77\x77\167\x2e\x77\x33\56\x6f\162\147\x2f\x32\x30\60\61\57\130\x4d\114\123\x63\x68\145\155\x61\x2d\x69\156\x73\x74\x61\x6e\143\x65", "\170\163\151\72\x74\155\160", "\x74\155\160");
$ai->removeAttributeNS("\x68\164\164\x70\72\57\x2f\167\x77\167\x2e\167\x33\x2e\x6f\162\147\x2f\62\60\x30\x31\57\x58\115\114\123\143\150\x65\155\141\55\151\156\163\164\141\x6e\143\145", "\x74\155\x70");
$ai->setAttributeNS("\x68\164\164\x70\72\57\57\167\x77\167\56\167\x33\56\157\162\147\57\x32\x30\60\61\x2f\130\115\114\x53\x63\150\x65\x6d\x61", "\x78\x73\x3a\x74\x6d\x70", "\164\155\x70");
$ai->removeAttributeNS("\x68\164\164\160\x3a\x2f\57\167\167\167\56\x77\x33\56\157\162\147\x2f\62\x30\x30\61\57\130\115\114\123\143\150\145\x6d\x61", "\x74\x6d\160");
$ai->setAttribute("\x49\104", $this->id);
$ai->setAttribute("\x56\x65\162\163\151\157\156", "\62\x2e\x30");
$ai->setAttribute("\111\x73\163\165\x65\111\156\x73\164\x61\156\x74", gmdate("\x59\x2d\155\55\x64\x5c\x54\110\x3a\x69\72\163\x5c\132", $this->issueInstant));
$xJ = Utilities::addString($ai, "\x75\162\156\72\x6f\141\x73\x69\x73\x3a\156\x61\155\145\163\72\x74\x63\x3a\x53\101\x4d\x4c\x3a\x32\x2e\60\72\141\x73\163\145\162\x74\151\157\x6e", "\163\141\155\154\x3a\111\x73\163\x75\x65\162", $this->issuer);
$this->addSubject($ai);
$this->addConditions($ai);
$this->addAuthnStatement($ai);
if ($this->requiredEncAttributes == FALSE) {
goto cl;
}
$this->addEncryptedAttributeStatement($ai);
goto N6;
cl:
$this->addAttributeStatement($ai);
N6:
if (!($this->signatureKey !== NULL)) {
goto yU;
}
Utilities::insertSignature($this->signatureKey, $this->certificates, $ai, $xJ->nextSibling);
yU:
return $ai;
}
private function addSubject(DOMElement $ai)
{
if (!($this->nameId === NULL && $this->encryptedNameId === NULL)) {
goto s8;
}
return;
s8:
$mR = $ai->ownerDocument->createElementNS("\165\162\x6e\72\157\141\163\x69\163\72\156\x61\155\x65\x73\x3a\x74\x63\72\123\101\x4d\114\x3a\62\x2e\60\x3a\x61\x73\163\145\162\x74\x69\157\156", "\x73\x61\x6d\x6c\72\x53\x75\x62\152\145\143\164");
$ai->appendChild($mR);
if ($this->encryptedNameId === NULL) {
goto vS;
}
$ra = $mR->ownerDocument->createElementNS("\x75\162\156\x3a\157\x61\x73\151\163\72\156\x61\x6d\145\163\72\x74\x63\72\123\x41\115\114\72\62\x2e\60\x3a\141\163\x73\145\162\164\x69\x6f\156", "\x73\x61\155\x6c\x3a" . "\x45\x6e\143\162\x79\x70\x74\145\144\111\x44");
$mR->appendChild($ra);
$ra->appendChild($mR->ownerDocument->importNode($this->encryptedNameId, TRUE));
goto f8;
vS:
Utilities::addNameId($mR, $this->nameId);
f8:
foreach ($this->SubjectConfirmation as $ct) {
$ct->toXML($mR);
LD:
}
rX:
}
private function addConditions(DOMElement $ai)
{
$vs = $ai->ownerDocument;
$Cs = $vs->createElementNS("\x75\162\156\x3a\157\141\163\151\163\x3a\x6e\141\x6d\x65\163\72\x74\x63\x3a\x53\101\115\x4c\72\x32\56\x30\72\141\x73\x73\145\x72\x74\151\x6f\x6e", "\163\x61\x6d\154\x3a\103\157\156\x64\151\164\x69\x6f\x6e\x73");
$ai->appendChild($Cs);
if (!($this->notBefore !== NULL)) {
goto EE;
}
$Cs->setAttribute("\116\157\164\102\x65\x66\157\x72\x65", gmdate("\131\x2d\155\55\144\134\124\x48\72\x69\x3a\x73\x5c\132", $this->notBefore));
EE:
if (!($this->notOnOrAfter !== NULL)) {
goto R6;
}
$Cs->setAttribute("\116\x6f\164\117\156\x4f\162\101\x66\x74\x65\x72", gmdate("\131\55\x6d\x2d\x64\134\x54\x48\72\x69\72\x73\x5c\x5a", $this->notOnOrAfter));
R6:
if (!($this->validAudiences !== NULL)) {
goto eS;
}
$bm = $vs->createElementNS("\165\162\x6e\x3a\157\x61\163\x69\x73\72\156\141\x6d\x65\x73\x3a\164\143\72\123\101\115\114\72\x32\56\x30\72\141\163\163\x65\162\x74\151\157\x6e", "\163\x61\x6d\154\72\x41\165\144\151\x65\156\x63\x65\122\145\x73\x74\162\151\x63\x74\x69\157\156");
$Cs->appendChild($bm);
Utilities::addStrings($bm, "\165\162\x6e\x3a\157\x61\163\x69\163\72\156\141\155\x65\x73\x3a\x74\143\x3a\123\101\115\x4c\x3a\x32\x2e\x30\72\141\163\x73\145\162\164\151\157\156", "\163\141\x6d\154\72\x41\x75\x64\x69\x65\156\143\x65", FALSE, $this->validAudiences);
eS:
}
private function addAuthnStatement(DOMElement $ai)
{
if (!($this->authnInstant === NULL || $this->authnContextClassRef === NULL && $this->authnContextDecl === NULL && $this->authnContextDeclRef === NULL)) {
goto Ob;
}
return;
Ob:
$vs = $ai->ownerDocument;
$bE = $vs->createElementNS("\165\x72\x6e\x3a\x6f\x61\163\151\163\x3a\x6e\141\155\x65\x73\72\x74\x63\72\x53\x41\x4d\x4c\72\62\x2e\60\72\141\163\x73\x65\162\164\151\157\x6e", "\x73\141\x6d\154\x3a\x41\x75\x74\x68\x6e\123\x74\141\x74\x65\x6d\145\156\164");
$ai->appendChild($bE);
$bE->setAttribute("\x41\165\164\x68\156\111\156\163\164\141\156\164", gmdate("\131\55\x6d\x2d\x64\x5c\x54\x48\72\151\72\x73\x5c\x5a", $this->authnInstant));
if (!($this->sessionNotOnOrAfter !== NULL)) {
goto lW;
}
$bE->setAttribute("\x53\x65\163\x73\x69\x6f\156\116\x6f\x74\117\156\117\162\x41\146\x74\145\162", gmdate("\131\x2d\155\x2d\144\x5c\x54\x48\x3a\x69\72\x73\x5c\x5a", $this->sessionNotOnOrAfter));
lW:
if (!($this->sessionIndex !== NULL)) {
goto wY;
}
$bE->setAttribute("\123\x65\x73\163\151\157\x6e\111\x6e\144\145\x78", $this->sessionIndex);
wY:
$iC = $vs->createElementNS("\x75\x72\156\72\x6f\x61\163\151\x73\x3a\x6e\141\155\x65\x73\x3a\164\x63\72\x53\x41\x4d\x4c\72\62\x2e\60\72\141\163\163\145\162\164\151\157\x6e", "\163\x61\155\154\x3a\101\x75\x74\x68\156\x43\157\x6e\x74\x65\170\164");
$bE->appendChild($iC);
if (empty($this->authnContextClassRef)) {
goto hd;
}
Utilities::addString($iC, "\165\x72\156\x3a\x6f\141\x73\x69\163\72\156\x61\x6d\x65\x73\72\164\143\72\123\101\x4d\114\72\x32\56\x30\72\141\x73\163\145\x72\164\151\x6f\x6e", "\163\141\155\x6c\x3a\101\165\164\x68\156\x43\x6f\156\164\145\x78\164\103\x6c\141\163\163\122\145\x66", $this->authnContextClassRef);
hd:
if (empty($this->authnContextDecl)) {
goto zF;
}
$this->authnContextDecl->toXML($iC);
zF:
if (empty($this->authnContextDeclRef)) {
goto Sc;
}
Utilities::addString($iC, "\x75\162\x6e\72\157\141\x73\151\x73\72\x6e\x61\x6d\145\x73\72\164\x63\x3a\x53\x41\115\x4c\72\62\x2e\x30\x3a\x61\163\x73\x65\x72\164\x69\x6f\x6e", "\163\141\155\154\72\x41\x75\x74\x68\156\x43\157\x6e\x74\145\x78\x74\x44\x65\143\x6c\x52\145\x66", $this->authnContextDeclRef);
Sc:
Utilities::addStrings($iC, "\165\162\x6e\72\x6f\141\163\x69\163\72\x6e\x61\x6d\145\x73\x3a\164\x63\72\x53\101\115\x4c\72\62\x2e\x30\x3a\x61\163\163\x65\162\x74\151\x6f\156", "\163\141\155\x6c\72\x41\x75\164\150\x65\x6e\164\x69\143\141\164\x69\156\147\101\165\x74\150\157\x72\x69\x74\x79", FALSE, $this->AuthenticatingAuthority);
}
private function addAttributeStatement(DOMElement $ai)
{
if (!empty($this->attributes)) {
goto ym;
}
return;
ym:
$vs = $ai->ownerDocument;
$Ni = $vs->createElementNS("\165\162\x6e\72\157\141\x73\x69\163\72\x6e\141\x6d\145\x73\72\164\143\72\x53\x41\115\x4c\72\62\x2e\x30\72\x61\x73\163\x65\x72\x74\151\x6f\x6e", "\163\141\155\x6c\x3a\x41\164\x74\x72\x69\x62\x75\x74\x65\123\164\x61\x74\x65\x6d\145\156\x74");
$ai->appendChild($Ni);
foreach ($this->attributes as $Pj => $Of) {
$kj = $vs->createElementNS("\x75\162\x6e\72\x6f\x61\x73\151\x73\x3a\156\141\x6d\145\163\x3a\164\x63\x3a\x53\x41\115\x4c\x3a\x32\x2e\x30\x3a\141\x73\163\x65\162\x74\151\x6f\x6e", "\163\x61\155\154\x3a\101\164\x74\162\x69\x62\165\164\x65");
$Ni->appendChild($kj);
$kj->setAttribute("\x4e\x61\x6d\145", $Pj);
if (!($this->nameFormat !== "\x75\x72\156\72\157\x61\x73\151\163\x3a\x6e\141\x6d\145\163\72\x74\x63\x3a\x53\x41\115\x4c\72\62\56\60\x3a\x61\x74\164\162\156\x61\155\x65\x2d\146\x6f\x72\155\141\164\x3a\x75\156\x73\160\x65\x63\x69\146\151\x65\144")) {
goto x2;
}
$kj->setAttribute("\x4e\141\x6d\145\x46\x6f\x72\x6d\141\164", $this->nameFormat);
x2:
foreach ($Of as $D7) {
if (is_string($D7)) {
goto Fp;
}
if (is_int($D7)) {
goto FQ;
}
$DF = NULL;
goto tb;
Fp:
$DF = "\170\x73\x3a\163\164\162\x69\156\147";
goto tb;
FQ:
$DF = "\170\163\x3a\151\x6e\164\145\147\145\x72";
tb:
$PU = $vs->createElementNS("\165\x72\156\72\x6f\x61\163\x69\163\72\156\x61\155\145\163\x3a\164\x63\x3a\123\x41\115\114\72\x32\56\60\72\141\163\x73\x65\162\164\x69\157\x6e", "\x73\141\x6d\154\72\101\x74\x74\x72\151\x62\165\164\x65\x56\x61\x6c\x75\145");
$kj->appendChild($PU);
if (!($DF !== NULL)) {
goto QB;
}
$PU->setAttributeNS("\x68\x74\164\x70\x3a\57\57\167\167\x77\56\x77\x33\56\157\x72\147\x2f\62\60\x30\x31\x2f\130\115\114\x53\x63\x68\145\155\x61\55\x69\156\x73\x74\141\x6e\143\x65", "\x78\x73\x69\72\164\x79\160\x65", $DF);
QB:
if (!is_null($D7)) {
goto jz;
}
$PU->setAttributeNS("\150\x74\x74\x70\72\57\x2f\x77\x77\x77\x2e\x77\63\x2e\x6f\x72\x67\x2f\x32\60\x30\61\x2f\130\x4d\114\123\x63\150\x65\155\141\55\151\156\x73\164\x61\156\143\x65", "\x78\x73\151\72\156\x69\154", "\x74\x72\x75\x65");
jz:
if ($D7 instanceof DOMNodeList) {
goto c2;
}
$PU->appendChild($vs->createTextNode($D7));
goto O2;
c2:
$n2 = 0;
A_:
if (!($n2 < $D7->length)) {
goto IV;
}
$Js = $vs->importNode($D7->item($n2), TRUE);
$PU->appendChild($Js);
x3:
$n2++;
goto A_;
IV:
O2:
bM:
}
bF:
yZ:
}
cZ:
}
private function addEncryptedAttributeStatement(DOMElement $ai)
{
if (!($this->requiredEncAttributes == FALSE)) {
goto gz;
}
return;
gz:
$vs = $ai->ownerDocument;
$Ni = $vs->createElementNS("\x75\x72\156\x3a\157\x61\163\151\x73\72\x6e\141\x6d\145\x73\72\x74\143\72\x53\101\115\x4c\72\62\x2e\60\x3a\141\163\x73\x65\162\164\x69\157\x6e", "\163\141\x6d\154\x3a\x41\164\164\162\x69\142\x75\164\145\123\164\x61\x74\x65\155\x65\156\164");
$ai->appendChild($Ni);
foreach ($this->attributes as $Pj => $Of) {
$Hg = new DOMDocument();
$kj = $Hg->createElementNS("\x75\x72\156\x3a\157\x61\x73\x69\163\x3a\156\141\155\x65\x73\x3a\x74\x63\72\x53\101\x4d\x4c\72\62\x2e\x30\72\x61\163\x73\145\162\164\151\157\156", "\x73\x61\155\154\72\x41\x74\164\x72\x69\x62\x75\164\145");
$kj->setAttribute("\116\x61\x6d\145", $Pj);
$Hg->appendChild($kj);
if (!($this->nameFormat !== "\x75\162\156\72\x6f\x61\x73\151\x73\x3a\x6e\141\x6d\145\x73\72\164\x63\x3a\123\x41\x4d\x4c\72\x32\x2e\x30\x3a\141\x74\164\162\x6e\x61\x6d\x65\x2d\x66\x6f\162\x6d\141\x74\72\x75\x6e\163\x70\145\143\x69\x66\x69\145\x64")) {
goto ui;
}
$kj->setAttribute("\116\141\x6d\x65\x46\157\162\155\141\x74", $this->nameFormat);
ui:
foreach ($Of as $D7) {
if (is_string($D7)) {
goto Ch;
}
if (is_int($D7)) {
goto CX;
}
$DF = NULL;
goto Qy;
Ch:
$DF = "\170\163\x3a\163\x74\162\151\x6e\147";
goto Qy;
CX:
$DF = "\x78\x73\72\151\156\164\145\x67\x65\x72";
Qy:
$PU = $Hg->createElementNS("\165\x72\x6e\x3a\157\141\163\x69\163\72\x6e\x61\x6d\x65\163\x3a\x74\143\x3a\123\x41\x4d\x4c\x3a\x32\x2e\x30\x3a\141\x73\x73\x65\x72\x74\x69\x6f\x6e", "\163\x61\155\x6c\72\x41\x74\x74\162\151\x62\165\164\145\126\141\154\x75\x65");
$kj->appendChild($PU);
if (!($DF !== NULL)) {
goto Oc;
}
$PU->setAttributeNS("\x68\x74\164\x70\72\x2f\57\x77\x77\x77\56\167\63\56\157\162\x67\57\62\x30\x30\61\57\x58\115\114\123\x63\150\x65\155\x61\x2d\x69\x6e\x73\x74\x61\156\x63\145", "\170\163\x69\x3a\x74\x79\160\145", $DF);
Oc:
if ($D7 instanceof DOMNodeList) {
goto v5;
}
$PU->appendChild($Hg->createTextNode($D7));
goto ZT;
v5:
$n2 = 0;
aN:
if (!($n2 < $D7->length)) {
goto TM;
}
$Js = $Hg->importNode($D7->item($n2), TRUE);
$PU->appendChild($Js);
gD:
$n2++;
goto aN;
TM:
ZT:
FE:
}
k5:
$xO = new XMLSecEnc();
$xO->setNode($Hg->documentElement);
$xO->type = "\x68\x74\x74\160\72\57\57\x77\x77\x77\56\167\63\56\x6f\x72\x67\57\62\x30\x30\x31\57\x30\x34\57\x78\x6d\154\145\x6e\143\x23\x45\154\145\155\x65\156\x74";
$o4 = new XMLSecurityKey(XMLSecurityKey::AES256_CBC);
$o4->generateSessionKey();
$xO->encryptKey($this->encryptionKey, $o4);
$JH = $xO->encryptNode($o4);
$wR = $vs->createElementNS("\x75\x72\x6e\72\157\141\163\x69\x73\72\156\141\155\145\x73\x3a\x74\143\72\x53\x41\115\x4c\x3a\x32\x2e\60\x3a\141\163\x73\145\162\x74\151\157\156", "\x73\141\155\154\72\105\156\x63\162\x79\160\164\x65\144\x41\164\x74\x72\151\142\165\x74\145");
$Ni->appendChild($wR);
$Nn = $vs->importNode($JH, TRUE);
$wR->appendChild($Nn);
AC:
}
cy:
}
}
Function Calls
| None |
Stats
| MD5 | dd0f53ad12b3a9c5f04c5086cc350f07 |
| Eval Count | 0 |
| Decode Time | 125 ms |