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\x69\x6c\151\164\x69\x65\163\x2e\160\x68\160"; class SAM..
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 $gp = 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 (!($gp === NULL)) {
goto tw;
}
return;
tw:
if (!($gp->localName === "EncryptedAssertion")) {
goto F3;
}
$IX = Utilities::xpQuery($gp, "./xenc:EncryptedData");
$Qe = Utilities::xpQuery($gp, "./xenc:EncryptedData/ds:KeyInfo/xenc:EncryptedKey");
$GA = '';
if (empty($Qe)) {
goto ow;
}
$GA = $Qe[0]->firstChild->getAttribute("Algorithm");
goto Zp;
ow:
$Qe = Utilities::xpQuery($gp, "./xenc:EncryptedKey/xenc:EncryptionMethod");
$GA = $Qe[0]->getAttribute("Algorithm");
Zp:
$pq = Utilities::getEncryptionAlgorithm($GA);
if (count($IX) === 0) {
goto T8;
}
if (count($IX) > 1) {
goto ei;
}
goto sK;
T8:
throw new Exception("Missing encrypted data in <saml:EncryptedAssertion>.");
goto sK;
ei:
throw new Exception("More than one encrypted data element in <saml:EncryptedAssertion>.");
sK:
$gS = Utilities::getPrivateKey();
$mz = new XMLSecurityKey($pq, array("type" => "private"));
$mz->loadKey($gS, FALSE);
$uB = array();
$gp = Utilities::decryptElement($IX[0], $mz, $uB);
F3:
if ($gp->hasAttribute("ID")) {
goto l4;
}
throw new Exception("Missing ID attribute on SAML assertion.");
l4:
$this->id = $gp->getAttribute("ID");
if (!($gp->getAttribute("Version") !== "2.0")) {
goto LX;
}
throw new Exception("Unsupported version: " . $gp->getAttribute("Version"));
LX:
$this->issueInstant = Utilities::xsDateTimeToTimestamp($gp->getAttribute("IssueInstant"));
$u1 = Utilities::xpQuery($gp, "./saml_assertion:Issuer");
if (!empty($u1)) {
goto D7;
}
throw new Exception("Missing <saml:Issuer> in assertion.");
D7:
$this->issuer = trim($u1[0]->textContent);
$this->parseConditions($gp);
$this->parseAuthnStatement($gp);
$this->parseAttributes($gp);
$this->parseEncryptedAttributes($gp);
$this->parseSignature($gp);
$this->parseSubject($gp);
}
private function parseSubject(DOMElement $gp)
{
$sU = Utilities::xpQuery($gp, "./saml_assertion:Subject");
if (empty($sU)) {
goto Ge;
}
if (count($sU) > 1) {
goto xh;
}
goto mo;
Ge:
return;
goto mo;
xh:
throw new Exception("More than one <saml:Subject> in <saml:Assertion>.");
mo:
$sU = $sU[0];
$b3 = Utilities::xpQuery($sU, "./saml_assertion:NameID | ./saml_assertion:EncryptedID/xenc:EncryptedData");
if (empty($b3)) {
goto aR;
}
if (count($b3) > 1) {
goto KN;
}
goto MW;
aR:
throw new Exception("Missing <saml:NameID> or <saml:EncryptedID> in <saml:Subject>.");
goto MW;
KN:
throw new Exception("More than one <saml:NameID> or <saml:EncryptedD> in <saml:Subject>.");
MW:
$b3 = $b3[0];
if ($b3->localName === "EncryptedData") {
goto aC;
}
$this->nameId = Utilities::parseNameId($b3);
goto CQ;
aC:
$this->encryptedNameId = $b3;
CQ:
}
private function parseConditions(DOMElement $gp)
{
$Rh = Utilities::xpQuery($gp, "./saml_assertion:Conditions");
if (empty($Rh)) {
goto yM;
}
if (count($Rh) > 1) {
goto p_;
}
goto rn;
yM:
return;
goto rn;
p_:
throw new Exception("More than one <saml:Conditions> in <saml:Assertion>.");
rn:
$Rh = $Rh[0];
if (!$Rh->hasAttribute("NotBefore")) {
goto Iu;
}
$pa = Utilities::xsDateTimeToTimestamp($Rh->getAttribute("NotBefore"));
if (!($this->notBefore === NULL || $this->notBefore < $pa)) {
goto o7;
}
$this->notBefore = $pa;
o7:
Iu:
if (!$Rh->hasAttribute("NotOnOrAfter")) {
goto LT;
}
$DA = Utilities::xsDateTimeToTimestamp($Rh->getAttribute("NotOnOrAfter"));
if (!($this->notOnOrAfter === NULL || $this->notOnOrAfter > $DA)) {
goto rK;
}
$this->notOnOrAfter = $DA;
rK:
LT:
$HF = $Rh->firstChild;
Ph:
if (!($HF !== NULL)) {
goto tV;
}
if (!$HF instanceof DOMText) {
goto R9;
}
goto zX;
R9:
if (!($HF->namespaceURI !== "urn:oasis:names:tc:SAML:2.0:assertion")) {
goto ko;
}
throw new Exception("Unknown namespace of condition: " . var_export($HF->namespaceURI, TRUE));
ko:
switch ($HF->localName) {
case "AudienceRestriction":
$gg = Utilities::extractStrings($HF, "urn:oasis:names:tc:SAML:2.0:assertion", "Audience");
if ($this->validAudiences === NULL) {
goto OW;
}
$this->validAudiences = array_intersect($this->validAudiences, $gg);
goto w4;
OW:
$this->validAudiences = $gg;
w4:
goto N2;
case "OneTimeUse":
goto N2;
case "ProxyRestriction":
goto N2;
default:
throw new Exception("Unknown condition: " . var_export($HF->localName, TRUE));
}
d1:
N2:
zX:
$HF = $HF->nextSibling;
goto Ph;
tV:
}
private function parseAuthnStatement(DOMElement $gp)
{
$gj = Utilities::xpQuery($gp, "./saml_assertion:AuthnStatement");
if (empty($gj)) {
goto LA;
}
if (count($gj) > 1) {
goto Rk;
}
goto Kh;
LA:
$this->authnInstant = NULL;
return;
goto Kh;
Rk:
throw new Exception("More that one <saml:AuthnStatement> in <saml:Assertion> not supported.");
Kh:
$pB = $gj[0];
if ($pB->hasAttribute("AuthnInstant")) {
goto by;
}
throw new Exception("Missing required AuthnInstant attribute on <saml:AuthnStatement>.");
by:
$this->authnInstant = Utilities::xsDateTimeToTimestamp($pB->getAttribute("AuthnInstant"));
if (!$pB->hasAttribute("SessionNotOnOrAfter")) {
goto Hl;
}
$this->sessionNotOnOrAfter = Utilities::xsDateTimeToTimestamp($pB->getAttribute("SessionNotOnOrAfter"));
Hl:
if (!$pB->hasAttribute("SessionIndex")) {
goto fM;
}
$this->sessionIndex = $pB->getAttribute("SessionIndex");
fM:
$this->parseAuthnContext($pB);
}
private function parseAuthnContext(DOMElement $Yp)
{
$w5 = Utilities::xpQuery($Yp, "./saml_assertion:AuthnContext");
if (count($w5) > 1) {
goto vG;
}
if (empty($w5)) {
goto HE;
}
goto NV;
vG:
throw new Exception("More than one <saml:AuthnContext> in <saml:AuthnStatement>.");
goto NV;
HE:
throw new Exception("Missing required <saml:AuthnContext> in <saml:AuthnStatement>.");
NV:
$Ht = $w5[0];
$iG = Utilities::xpQuery($Ht, "./saml_assertion:AuthnContextDeclRef");
if (count($iG) > 1) {
goto it;
}
if (count($iG) === 1) {
goto LQ;
}
goto at;
it:
throw new Exception("More than one <saml:AuthnContextDeclRef> found?");
goto at;
LQ:
$this->setAuthnContextDeclRef(trim($iG[0]->textContent));
at:
$Xx = Utilities::xpQuery($Ht, "./saml_assertion:AuthnContextDecl");
if (count($Xx) > 1) {
goto pV;
}
if (count($Xx) === 1) {
goto ic;
}
goto k0;
pV:
throw new Exception("More than one <saml:AuthnContextDecl> found?");
goto k0;
ic:
$this->setAuthnContextDecl(new SAML2_XML_Chunk($Xx[0]));
k0:
$SO = Utilities::xpQuery($Ht, "./saml_assertion:AuthnContextClassRef");
if (count($SO) > 1) {
goto rb;
}
if (count($SO) === 1) {
goto hN;
}
goto jT;
rb:
throw new Exception("More than one <saml:AuthnContextClassRef> in <saml:AuthnContext>.");
goto jT;
hN:
$this->setAuthnContextClassRef(trim($SO[0]->textContent));
jT:
if (!(empty($this->authnContextClassRef) && empty($this->authnContextDecl) && empty($this->authnContextDeclRef))) {
goto ZB;
}
throw new Exception("Missing either <saml:AuthnContextClassRef> or <saml:AuthnContextDeclRef> or <saml:AuthnContextDecl>");
ZB:
$this->AuthenticatingAuthority = Utilities::extractStrings($Ht, "urn:oasis:names:tc:SAML:2.0:assertion", "AuthenticatingAuthority");
}
private function parseAttributes(DOMElement $gp)
{
$BC = TRUE;
$AZ = Utilities::xpQuery($gp, "./saml_assertion:AttributeStatement/saml_assertion:Attribute");
foreach ($AZ as $IB) {
if ($IB->hasAttribute("Name")) {
goto N8;
}
throw new Exception("Missing name on <saml:Attribute> element.");
N8:
$SS = $IB->getAttribute("Name");
if ($IB->hasAttribute("NameFormat")) {
goto zd;
}
$AB = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified";
goto vo;
zd:
$AB = $IB->getAttribute("NameFormat");
vo:
if ($BC) {
goto nD;
}
if (!($this->nameFormat !== $AB)) {
goto Nr;
}
$this->nameFormat = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified";
Nr:
goto EC;
nD:
$this->nameFormat = $AB;
$BC = FALSE;
EC:
if (array_key_exists($SS, $this->attributes)) {
goto GP;
}
$this->attributes[$SS] = array();
GP:
$Wj = Utilities::xpQuery($IB, "./saml_assertion:AttributeValue");
foreach ($Wj as $rE) {
$this->attributes[$SS][] = trim($rE->textContent);
BB:
}
Tc:
TK:
}
R8:
}
private function parseEncryptedAttributes(DOMElement $gp)
{
$this->encryptedAttribute = Utilities::xpQuery($gp, "./saml_assertion:AttributeStatement/saml_assertion:EncryptedAttribute");
}
private function parseSignature(DOMElement $gp)
{
$tw = Utilities::validateElement($gp);
if (!($tw !== FALSE)) {
goto S7;
}
$this->wasSignedAtConstruction = TRUE;
$this->certificates = $tw["Certificates"];
$this->signatureData = $tw;
S7:
}
public function validate(XMLSecurityKey $mz)
{
if (!($this->signatureData === NULL)) {
goto kp;
}
return FALSE;
kp:
Utilities::validateSignature($this->signatureData, $mz);
return TRUE;
}
public function getId()
{
return $this->id;
}
public function setId($BA)
{
$this->id = $BA;
}
public function getIssueInstant()
{
return $this->issueInstant;
}
public function setIssueInstant($xw)
{
$this->issueInstant = $xw;
}
public function getIssuer()
{
return $this->issuer;
}
public function setIssuer($u1)
{
$this->issuer = $u1;
}
public function getNameId()
{
if (!($this->encryptedNameId !== NULL)) {
goto nU;
}
throw new Exception("Attempted to retrieve encrypted NameID without decrypting it first.");
nU:
return $this->nameId;
}
public function setNameId($b3)
{
$this->nameId = $b3;
}
public function isNameIdEncrypted()
{
if (!($this->encryptedNameId !== NULL)) {
goto yb;
}
return TRUE;
yb:
return FALSE;
}
public function encryptNameId(XMLSecurityKey $mz)
{
$OZ = new DOMDocument();
$rZ = $OZ->createElement("root");
$OZ->appendChild($rZ);
Utilities::addNameId($rZ, $this->nameId);
$b3 = $rZ->firstChild;
Utilities::getContainer()->debugMessage($b3, "encrypt");
$kF = new XMLSecEnc();
$kF->setNode($b3);
$kF->type = XMLSecEnc::Element;
$Gg = new XMLSecurityKey(XMLSecurityKey::AES128_CBC);
$Gg->generateSessionKey();
$kF->encryptKey($mz, $Gg);
$this->encryptedNameId = $kF->encryptNode($Gg);
$this->nameId = NULL;
}
public function decryptNameId(XMLSecurityKey $mz, array $uB = array())
{
if (!($this->encryptedNameId === NULL)) {
goto o5;
}
return;
o5:
$b3 = Utilities::decryptElement($this->encryptedNameId, $mz, $uB);
Utilities::getContainer()->debugMessage($b3, "decrypt");
$this->nameId = Utilities::parseNameId($b3);
$this->encryptedNameId = NULL;
}
public function decryptAttributes(XMLSecurityKey $mz, array $uB = array())
{
if (!($this->encryptedAttribute === NULL)) {
goto NQ;
}
return;
NQ:
$BC = TRUE;
$AZ = $this->encryptedAttribute;
foreach ($AZ as $bx) {
$IB = Utilities::decryptElement($bx->getElementsByTagName("EncryptedData")->item(0), $mz, $uB);
if ($IB->hasAttribute("Name")) {
goto KD;
}
throw new Exception("Missing name on <saml:Attribute> element.");
KD:
$SS = $IB->getAttribute("Name");
if ($IB->hasAttribute("NameFormat")) {
goto qj;
}
$AB = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified";
goto ox;
qj:
$AB = $IB->getAttribute("NameFormat");
ox:
if ($BC) {
goto Us;
}
if (!($this->nameFormat !== $AB)) {
goto QR;
}
$this->nameFormat = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified";
QR:
goto sS;
Us:
$this->nameFormat = $AB;
$BC = FALSE;
sS:
if (array_key_exists($SS, $this->attributes)) {
goto OX;
}
$this->attributes[$SS] = array();
OX:
$Wj = Utilities::xpQuery($IB, "./saml_assertion:AttributeValue");
foreach ($Wj as $rE) {
$this->attributes[$SS][] = trim($rE->textContent);
W4:
}
UT:
BP:
}
Kt:
}
public function getNotBefore()
{
return $this->notBefore;
}
public function setNotBefore($pa)
{
$this->notBefore = $pa;
}
public function getNotOnOrAfter()
{
return $this->notOnOrAfter;
}
public function setNotOnOrAfter($DA)
{
$this->notOnOrAfter = $DA;
}
public function setEncryptedAttributes($Ga)
{
$this->requiredEncAttributes = $Ga;
}
public function getValidAudiences()
{
return $this->validAudiences;
}
public function setValidAudiences(array $ws = NULL)
{
$this->validAudiences = $ws;
}
public function getAuthnInstant()
{
return $this->authnInstant;
}
public function setAuthnInstant($yv)
{
$this->authnInstant = $yv;
}
public function getSessionNotOnOrAfter()
{
return $this->sessionNotOnOrAfter;
}
public function setSessionNotOnOrAfter($Cp)
{
$this->sessionNotOnOrAfter = $Cp;
}
public function getSessionIndex()
{
return $this->sessionIndex;
}
public function setSessionIndex($gF)
{
$this->sessionIndex = $gF;
}
public function getAuthnContext()
{
if (empty($this->authnContextClassRef)) {
goto h3;
}
return $this->authnContextClassRef;
h3:
if (empty($this->authnContextDeclRef)) {
goto m1;
}
return $this->authnContextDeclRef;
m1:
return NULL;
}
public function setAuthnContext($CJ)
{
$this->setAuthnContextClassRef($CJ);
}
public function getAuthnContextClassRef()
{
return $this->authnContextClassRef;
}
public function setAuthnContextClassRef($sg)
{
$this->authnContextClassRef = $sg;
}
public function setAuthnContextDecl(SAML2_XML_Chunk $yc)
{
if (empty($this->authnContextDeclRef)) {
goto xR;
}
throw new Exception("AuthnContextDeclRef is already registered! May only have either a Decl or a DeclRef, not both!");
xR:
$this->authnContextDecl = $yc;
}
public function getAuthnContextDecl()
{
return $this->authnContextDecl;
}
public function setAuthnContextDeclRef($zh)
{
if (empty($this->authnContextDecl)) {
goto mK;
}
throw new Exception("AuthnContextDecl is already registered! May only have either a Decl or a DeclRef, not both!");
mK:
$this->authnContextDeclRef = $zh;
}
public function getAuthnContextDeclRef()
{
return $this->authnContextDeclRef;
}
public function getAuthenticatingAuthority()
{
return $this->AuthenticatingAuthority;
}
public function setAuthenticatingAuthority($zG)
{
$this->AuthenticatingAuthority = $zG;
}
public function getAttributes()
{
return $this->attributes;
}
public function setAttributes(array $AZ)
{
$this->attributes = $AZ;
}
public function getAttributeNameFormat()
{
return $this->nameFormat;
}
public function setAttributeNameFormat($AB)
{
$this->nameFormat = $AB;
}
public function getSubjectConfirmation()
{
return $this->SubjectConfirmation;
}
public function setSubjectConfirmation(array $wB)
{
$this->SubjectConfirmation = $wB;
}
public function getSignatureKey()
{
return $this->signatureKey;
}
public function getSignatureData()
{
return $this->signatureData;
}
public function setSignatureKey(XMLsecurityKey $ew = NULL)
{
$this->signatureKey = $ew;
}
public function getEncryptionKey()
{
return $this->encryptionKey;
}
public function setEncryptionKey(XMLSecurityKey $Aq = NULL)
{
$this->encryptionKey = $Aq;
}
public function setCertificates(array $MI)
{
$this->certificates = $MI;
}
public function getCertificates()
{
return $this->certificates;
}
public function getWasSignedAtConstruction()
{
return $this->wasSignedAtConstruction;
}
public function toXML(DOMNode $Z1 = NULL)
{
if ($Z1 === NULL) {
goto JF;
}
$Ej = $Z1->ownerDocument;
goto lh;
JF:
$Ej = new DOMDocument();
$Z1 = $Ej;
lh:
$rZ = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:" . "Assertion");
$Z1->appendChild($rZ);
$rZ->setAttributeNS("urn:oasis:names:tc:SAML:2.0:protocol", "samlp:tmp", "tmp");
$rZ->removeAttributeNS("urn:oasis:names:tc:SAML:2.0:protocol", "tmp");
$rZ->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:tmp", "tmp");
$rZ->removeAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "tmp");
$rZ->setAttributeNS("http://www.w3.org/2001/XMLSchema", "xs:tmp", "tmp");
$rZ->removeAttributeNS("http://www.w3.org/2001/XMLSchema", "tmp");
$rZ->setAttribute("ID", $this->id);
$rZ->setAttribute("Version", "2.0");
$rZ->setAttribute("IssueInstant", gmdate("Y-m-d\TH:i:s\Z", $this->issueInstant));
$u1 = Utilities::addString($rZ, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:Issuer", $this->issuer);
$this->addSubject($rZ);
$this->addConditions($rZ);
$this->addAuthnStatement($rZ);
if ($this->requiredEncAttributes == FALSE) {
goto Gm;
}
$this->addEncryptedAttributeStatement($rZ);
goto O0;
Gm:
$this->addAttributeStatement($rZ);
O0:
if (!($this->signatureKey !== NULL)) {
goto bv;
}
Utilities::insertSignature($this->signatureKey, $this->certificates, $rZ, $u1->nextSibling);
bv:
return $rZ;
}
private function addSubject(DOMElement $rZ)
{
if (!($this->nameId === NULL && $this->encryptedNameId === NULL)) {
goto II;
}
return;
II:
$sU = $rZ->ownerDocument->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Subject");
$rZ->appendChild($sU);
if ($this->encryptedNameId === NULL) {
goto Ew;
}
$fm = $sU->ownerDocument->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:" . "EncryptedID");
$sU->appendChild($fm);
$fm->appendChild($sU->ownerDocument->importNode($this->encryptedNameId, TRUE));
goto zY;
Ew:
Utilities::addNameId($sU, $this->nameId);
zY:
foreach ($this->SubjectConfirmation as $z5) {
$z5->toXML($sU);
ov:
}
sG:
}
private function addConditions(DOMElement $rZ)
{
$Ej = $rZ->ownerDocument;
$Rh = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Conditions");
$rZ->appendChild($Rh);
if (!($this->notBefore !== NULL)) {
goto xj;
}
$Rh->setAttribute("NotBefore", gmdate("Y-m-d\TH:i:s\Z", $this->notBefore));
xj:
if (!($this->notOnOrAfter !== NULL)) {
goto Uv;
}
$Rh->setAttribute("NotOnOrAfter", gmdate("Y-m-d\TH:i:s\Z", $this->notOnOrAfter));
Uv:
if (!($this->validAudiences !== NULL)) {
goto sF;
}
$JQ = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AudienceRestriction");
$Rh->appendChild($JQ);
Utilities::addStrings($JQ, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:Audience", FALSE, $this->validAudiences);
sF:
}
private function addAuthnStatement(DOMElement $rZ)
{
if (!($this->authnInstant === NULL || $this->authnContextClassRef === NULL && $this->authnContextDecl === NULL && $this->authnContextDeclRef === NULL)) {
goto lK;
}
return;
lK:
$Ej = $rZ->ownerDocument;
$Yp = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnStatement");
$rZ->appendChild($Yp);
$Yp->setAttribute("AuthnInstant", gmdate("Y-m-d\TH:i:s\Z", $this->authnInstant));
if (!($this->sessionNotOnOrAfter !== NULL)) {
goto hX;
}
$Yp->setAttribute("SessionNotOnOrAfter", gmdate("Y-m-d\TH:i:s\Z", $this->sessionNotOnOrAfter));
hX:
if (!($this->sessionIndex !== NULL)) {
goto KW;
}
$Yp->setAttribute("SessionIndex", $this->sessionIndex);
KW:
$Ht = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContext");
$Yp->appendChild($Ht);
if (empty($this->authnContextClassRef)) {
goto FA;
}
Utilities::addString($Ht, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContextClassRef", $this->authnContextClassRef);
FA:
if (empty($this->authnContextDecl)) {
goto ED;
}
$this->authnContextDecl->toXML($Ht);
ED:
if (empty($this->authnContextDeclRef)) {
goto bj;
}
Utilities::addString($Ht, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContextDeclRef", $this->authnContextDeclRef);
bj:
Utilities::addStrings($Ht, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthenticatingAuthority", FALSE, $this->AuthenticatingAuthority);
}
private function addAttributeStatement(DOMElement $rZ)
{
if (!empty($this->attributes)) {
goto UI;
}
return;
UI:
$Ej = $rZ->ownerDocument;
$if = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeStatement");
$rZ->appendChild($if);
foreach ($this->attributes as $SS => $Wj) {
$IB = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Attribute");
$if->appendChild($IB);
$IB->setAttribute("Name", $SS);
if (!($this->nameFormat !== "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified")) {
goto ec;
}
$IB->setAttribute("NameFormat", $this->nameFormat);
ec:
foreach ($Wj as $rE) {
if (is_string($rE)) {
goto y4;
}
if (is_int($rE)) {
goto gc;
}
$Ak = NULL;
goto H9;
y4:
$Ak = "xs:string";
goto H9;
gc:
$Ak = "xs:integer";
H9:
$TQ = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeValue");
$IB->appendChild($TQ);
if (!($Ak !== NULL)) {
goto MD;
}
$TQ->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:type", $Ak);
MD:
if (!is_null($rE)) {
goto k3;
}
$TQ->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:nil", "true");
k3:
if ($rE instanceof DOMNodeList) {
goto Vj;
}
$TQ->appendChild($Ej->createTextNode($rE));
goto li;
Vj:
$Eo = 0;
ib:
if (!($Eo < $rE->length)) {
goto pp;
}
$HF = $Ej->importNode($rE->item($Eo), TRUE);
$TQ->appendChild($HF);
ZS:
$Eo++;
goto ib;
pp:
li:
rE:
}
DI:
ss:
}
p2:
}
private function addEncryptedAttributeStatement(DOMElement $rZ)
{
if (!($this->requiredEncAttributes == FALSE)) {
goto rW;
}
return;
rW:
$Ej = $rZ->ownerDocument;
$if = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeStatement");
$rZ->appendChild($if);
foreach ($this->attributes as $SS => $Wj) {
$e1 = new DOMDocument();
$IB = $e1->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Attribute");
$IB->setAttribute("Name", $SS);
$e1->appendChild($IB);
if (!($this->nameFormat !== "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified")) {
goto Xz;
}
$IB->setAttribute("NameFormat", $this->nameFormat);
Xz:
foreach ($Wj as $rE) {
if (is_string($rE)) {
goto bK;
}
if (is_int($rE)) {
goto jm;
}
$Ak = NULL;
goto Je;
bK:
$Ak = "xs:string";
goto Je;
jm:
$Ak = "xs:integer";
Je:
$TQ = $e1->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeValue");
$IB->appendChild($TQ);
if (!($Ak !== NULL)) {
goto av;
}
$TQ->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:type", $Ak);
av:
if ($rE instanceof DOMNodeList) {
goto RL;
}
$TQ->appendChild($e1->createTextNode($rE));
goto Aw;
RL:
$Eo = 0;
qy:
if (!($Eo < $rE->length)) {
goto r1;
}
$HF = $e1->importNode($rE->item($Eo), TRUE);
$TQ->appendChild($HF);
fF:
$Eo++;
goto qy;
r1:
Aw:
BU:
}
x1:
$ha = new XMLSecEnc();
$ha->setNode($e1->documentElement);
$ha->type = "http://www.w3.org/2001/04/xmlenc#Element";
$Gg = new XMLSecurityKey(XMLSecurityKey::AES256_CBC);
$Gg->generateSessionKey();
$ha->encryptKey($this->encryptionKey, $Gg);
$qM = $ha->encryptNode($Gg);
$kw = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:EncryptedAttribute");
$if->appendChild($kw);
$dN = $Ej->importNode($qM, TRUE);
$kw->appendChild($dN);
JJ:
}
yi:
}
}
?>
Did this file decode correctly?
Original Code
<?php
include_once "\125\x74\x69\x6c\151\164\x69\x65\163\x2e\160\x68\160";
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 $gp = NULL)
{
$this->id = Utilities::generateId();
$this->issueInstant = Utilities::generateTimestamp();
$this->issuer = '';
$this->authnInstant = Utilities::generateTimestamp();
$this->attributes = array();
$this->nameFormat = "\x75\x72\x6e\x3a\157\x61\163\x69\163\x3a\156\x61\155\x65\163\x3a\x74\143\x3a\123\x41\x4d\x4c\x3a\x31\x2e\x31\x3a\x6e\x61\155\x65\151\x64\x2d\x66\157\x72\155\141\x74\72\x75\156\163\x70\145\x63\151\x66\x69\x65\144";
$this->certificates = array();
$this->AuthenticatingAuthority = array();
$this->SubjectConfirmation = array();
if (!($gp === NULL)) {
goto tw;
}
return;
tw:
if (!($gp->localName === "\x45\156\143\162\x79\160\x74\145\144\101\163\163\145\162\164\x69\x6f\x6e")) {
goto F3;
}
$IX = Utilities::xpQuery($gp, "\x2e\57\x78\145\156\x63\x3a\x45\156\143\x72\171\160\x74\145\x64\x44\x61\164\x61");
$Qe = Utilities::xpQuery($gp, "\56\57\170\x65\x6e\143\x3a\x45\x6e\x63\162\x79\x70\164\x65\144\104\x61\164\x61\57\144\163\72\x4b\145\171\x49\x6e\x66\157\x2f\x78\x65\156\x63\72\105\156\x63\x72\x79\x70\x74\145\x64\113\x65\171");
$GA = '';
if (empty($Qe)) {
goto ow;
}
$GA = $Qe[0]->firstChild->getAttribute("\x41\x6c\x67\157\x72\x69\164\150\155");
goto Zp;
ow:
$Qe = Utilities::xpQuery($gp, "\x2e\x2f\x78\x65\x6e\143\72\x45\x6e\143\162\x79\160\164\x65\x64\x4b\145\x79\x2f\x78\x65\156\143\72\105\x6e\143\x72\171\160\164\x69\x6f\156\x4d\x65\164\x68\x6f\144");
$GA = $Qe[0]->getAttribute("\101\154\x67\157\x72\151\x74\x68\x6d");
Zp:
$pq = Utilities::getEncryptionAlgorithm($GA);
if (count($IX) === 0) {
goto T8;
}
if (count($IX) > 1) {
goto ei;
}
goto sK;
T8:
throw new Exception("\x4d\x69\163\x73\x69\x6e\x67\x20\145\x6e\x63\x72\171\x70\x74\145\x64\x20\144\141\x74\x61\40\151\156\40\x3c\x73\141\x6d\154\72\105\156\143\162\x79\x70\164\145\x64\101\163\x73\145\162\x74\151\157\156\76\56");
goto sK;
ei:
throw new Exception("\115\157\x72\145\40\164\150\x61\156\40\157\156\x65\x20\145\x6e\x63\x72\x79\160\164\x65\144\x20\144\141\164\x61\x20\x65\x6c\145\x6d\x65\156\164\40\151\x6e\x20\x3c\x73\x61\155\x6c\x3a\105\x6e\x63\162\x79\x70\164\145\x64\x41\163\x73\x65\x72\164\x69\157\156\76\x2e");
sK:
$gS = Utilities::getPrivateKey();
$mz = new XMLSecurityKey($pq, array("\x74\171\160\x65" => "\x70\x72\x69\x76\141\x74\x65"));
$mz->loadKey($gS, FALSE);
$uB = array();
$gp = Utilities::decryptElement($IX[0], $mz, $uB);
F3:
if ($gp->hasAttribute("\111\x44")) {
goto l4;
}
throw new Exception("\115\x69\x73\x73\x69\156\147\40\x49\104\40\141\x74\164\x72\151\142\x75\164\x65\x20\x6f\x6e\x20\123\x41\x4d\114\x20\x61\163\163\145\x72\x74\x69\x6f\156\56");
l4:
$this->id = $gp->getAttribute("\x49\x44");
if (!($gp->getAttribute("\126\145\162\x73\151\157\x6e") !== "\x32\56\x30")) {
goto LX;
}
throw new Exception("\x55\156\x73\165\x70\160\x6f\x72\164\x65\144\40\166\x65\162\x73\151\157\156\x3a\40" . $gp->getAttribute("\x56\145\x72\163\151\x6f\x6e"));
LX:
$this->issueInstant = Utilities::xsDateTimeToTimestamp($gp->getAttribute("\111\x73\x73\165\145\x49\156\x73\164\x61\156\x74"));
$u1 = Utilities::xpQuery($gp, "\56\57\x73\141\155\154\x5f\x61\163\x73\x65\x72\164\151\x6f\x6e\72\111\x73\163\x75\x65\x72");
if (!empty($u1)) {
goto D7;
}
throw new Exception("\x4d\x69\163\163\151\x6e\x67\x20\x3c\x73\x61\155\154\72\x49\163\163\165\145\x72\76\x20\151\156\x20\x61\x73\163\145\162\x74\x69\x6f\156\56");
D7:
$this->issuer = trim($u1[0]->textContent);
$this->parseConditions($gp);
$this->parseAuthnStatement($gp);
$this->parseAttributes($gp);
$this->parseEncryptedAttributes($gp);
$this->parseSignature($gp);
$this->parseSubject($gp);
}
private function parseSubject(DOMElement $gp)
{
$sU = Utilities::xpQuery($gp, "\56\57\x73\141\x6d\154\137\141\163\163\x65\x72\164\151\157\x6e\x3a\123\165\142\x6a\145\143\x74");
if (empty($sU)) {
goto Ge;
}
if (count($sU) > 1) {
goto xh;
}
goto mo;
Ge:
return;
goto mo;
xh:
throw new Exception("\x4d\x6f\x72\x65\40\164\x68\x61\156\x20\x6f\156\145\40\74\163\141\155\x6c\x3a\123\x75\x62\152\145\x63\164\x3e\40\151\x6e\x20\x3c\163\141\155\x6c\72\101\163\163\x65\x72\164\151\x6f\156\76\56");
mo:
$sU = $sU[0];
$b3 = Utilities::xpQuery($sU, "\56\x2f\x73\x61\x6d\x6c\x5f\141\x73\x73\145\162\164\x69\x6f\156\x3a\x4e\x61\x6d\145\111\104\x20\174\x20\56\x2f\163\x61\x6d\154\137\x61\163\x73\x65\162\x74\x69\x6f\156\72\105\156\x63\162\x79\x70\x74\145\x64\x49\x44\57\170\145\156\x63\72\x45\156\143\x72\171\x70\164\x65\144\x44\x61\164\141");
if (empty($b3)) {
goto aR;
}
if (count($b3) > 1) {
goto KN;
}
goto MW;
aR:
throw new Exception("\x4d\x69\163\163\x69\156\x67\40\x3c\x73\141\x6d\154\x3a\x4e\141\x6d\x65\x49\x44\x3e\40\x6f\162\40\74\163\x61\155\154\x3a\105\156\x63\162\x79\x70\x74\x65\x64\x49\104\76\x20\151\x6e\40\x3c\x73\x61\155\x6c\x3a\123\x75\x62\x6a\x65\x63\x74\x3e\x2e");
goto MW;
KN:
throw new Exception("\x4d\x6f\x72\x65\40\x74\150\141\x6e\40\x6f\156\145\x20\74\x73\141\x6d\x6c\x3a\116\141\155\x65\111\104\x3e\40\157\162\x20\x3c\163\141\155\x6c\72\105\156\143\162\x79\x70\x74\x65\x64\x44\x3e\x20\x69\x6e\40\74\x73\141\x6d\x6c\x3a\x53\165\142\152\145\x63\164\76\56");
MW:
$b3 = $b3[0];
if ($b3->localName === "\105\156\x63\x72\x79\160\164\x65\144\x44\x61\x74\x61") {
goto aC;
}
$this->nameId = Utilities::parseNameId($b3);
goto CQ;
aC:
$this->encryptedNameId = $b3;
CQ:
}
private function parseConditions(DOMElement $gp)
{
$Rh = Utilities::xpQuery($gp, "\x2e\57\x73\141\x6d\x6c\x5f\x61\163\x73\145\x72\164\151\x6f\156\x3a\103\157\x6e\144\x69\x74\151\157\156\x73");
if (empty($Rh)) {
goto yM;
}
if (count($Rh) > 1) {
goto p_;
}
goto rn;
yM:
return;
goto rn;
p_:
throw new Exception("\115\x6f\x72\145\x20\x74\x68\x61\x6e\40\x6f\x6e\x65\x20\x3c\163\x61\x6d\154\72\x43\157\x6e\x64\x69\164\151\x6f\156\163\76\x20\151\156\x20\x3c\163\141\155\154\x3a\101\163\x73\145\x72\x74\x69\x6f\156\x3e\x2e");
rn:
$Rh = $Rh[0];
if (!$Rh->hasAttribute("\116\157\164\102\145\x66\x6f\162\145")) {
goto Iu;
}
$pa = Utilities::xsDateTimeToTimestamp($Rh->getAttribute("\x4e\x6f\164\x42\145\x66\x6f\x72\x65"));
if (!($this->notBefore === NULL || $this->notBefore < $pa)) {
goto o7;
}
$this->notBefore = $pa;
o7:
Iu:
if (!$Rh->hasAttribute("\116\x6f\x74\117\156\117\x72\101\x66\164\x65\x72")) {
goto LT;
}
$DA = Utilities::xsDateTimeToTimestamp($Rh->getAttribute("\116\157\164\x4f\156\117\x72\101\146\x74\x65\162"));
if (!($this->notOnOrAfter === NULL || $this->notOnOrAfter > $DA)) {
goto rK;
}
$this->notOnOrAfter = $DA;
rK:
LT:
$HF = $Rh->firstChild;
Ph:
if (!($HF !== NULL)) {
goto tV;
}
if (!$HF instanceof DOMText) {
goto R9;
}
goto zX;
R9:
if (!($HF->namespaceURI !== "\165\162\156\72\x6f\x61\x73\151\x73\72\x6e\x61\155\145\x73\72\164\143\x3a\x53\x41\x4d\114\72\x32\x2e\x30\72\x61\163\163\145\x72\164\x69\x6f\x6e")) {
goto ko;
}
throw new Exception("\125\156\153\156\x6f\x77\x6e\x20\156\x61\x6d\145\x73\x70\x61\x63\x65\x20\157\x66\40\143\157\x6e\144\151\x74\x69\157\x6e\x3a\x20" . var_export($HF->namespaceURI, TRUE));
ko:
switch ($HF->localName) {
case "\x41\x75\x64\x69\145\156\143\x65\122\145\163\x74\x72\x69\x63\x74\x69\157\x6e":
$gg = Utilities::extractStrings($HF, "\x75\x72\156\72\157\x61\163\x69\x73\x3a\x6e\141\155\x65\163\x3a\164\x63\x3a\123\101\x4d\x4c\72\62\x2e\x30\x3a\x61\x73\x73\x65\162\x74\151\x6f\x6e", "\101\165\144\x69\x65\x6e\x63\145");
if ($this->validAudiences === NULL) {
goto OW;
}
$this->validAudiences = array_intersect($this->validAudiences, $gg);
goto w4;
OW:
$this->validAudiences = $gg;
w4:
goto N2;
case "\117\156\145\124\151\155\145\x55\x73\x65":
goto N2;
case "\x50\162\x6f\170\171\122\x65\x73\164\x72\x69\x63\x74\151\157\x6e":
goto N2;
default:
throw new Exception("\125\156\153\156\157\x77\x6e\40\143\x6f\x6e\x64\151\x74\x69\x6f\x6e\72\x20" . var_export($HF->localName, TRUE));
}
d1:
N2:
zX:
$HF = $HF->nextSibling;
goto Ph;
tV:
}
private function parseAuthnStatement(DOMElement $gp)
{
$gj = Utilities::xpQuery($gp, "\56\57\x73\x61\x6d\x6c\x5f\141\x73\x73\145\x72\x74\151\x6f\x6e\x3a\101\165\x74\150\x6e\x53\x74\141\x74\145\155\145\x6e\x74");
if (empty($gj)) {
goto LA;
}
if (count($gj) > 1) {
goto Rk;
}
goto Kh;
LA:
$this->authnInstant = NULL;
return;
goto Kh;
Rk:
throw new Exception("\x4d\157\x72\145\x20\x74\150\x61\x74\x20\x6f\156\145\40\74\163\x61\155\x6c\x3a\101\x75\164\150\x6e\x53\x74\141\x74\145\155\145\156\164\76\x20\x69\x6e\x20\74\x73\x61\155\x6c\72\x41\163\163\145\162\x74\x69\157\156\x3e\40\x6e\157\164\x20\163\x75\x70\x70\157\162\164\x65\144\x2e");
Kh:
$pB = $gj[0];
if ($pB->hasAttribute("\101\165\x74\x68\x6e\111\x6e\x73\164\x61\x6e\x74")) {
goto by;
}
throw new Exception("\x4d\x69\x73\x73\x69\156\147\40\x72\145\161\x75\x69\x72\x65\144\x20\101\x75\x74\x68\156\x49\156\x73\x74\x61\x6e\164\x20\x61\164\x74\x72\151\x62\165\164\x65\40\x6f\x6e\x20\x3c\163\x61\x6d\x6c\72\101\x75\x74\x68\156\x53\164\141\x74\145\x6d\x65\x6e\164\x3e\x2e");
by:
$this->authnInstant = Utilities::xsDateTimeToTimestamp($pB->getAttribute("\x41\165\164\x68\x6e\x49\x6e\x73\164\x61\156\x74"));
if (!$pB->hasAttribute("\x53\x65\163\x73\x69\x6f\x6e\x4e\157\x74\117\x6e\117\162\x41\x66\164\145\162")) {
goto Hl;
}
$this->sessionNotOnOrAfter = Utilities::xsDateTimeToTimestamp($pB->getAttribute("\x53\x65\163\163\151\157\x6e\x4e\157\164\117\x6e\117\162\x41\146\x74\145\162"));
Hl:
if (!$pB->hasAttribute("\x53\x65\163\x73\x69\x6f\156\111\156\144\145\170")) {
goto fM;
}
$this->sessionIndex = $pB->getAttribute("\x53\x65\163\x73\x69\157\156\x49\x6e\x64\x65\x78");
fM:
$this->parseAuthnContext($pB);
}
private function parseAuthnContext(DOMElement $Yp)
{
$w5 = Utilities::xpQuery($Yp, "\x2e\x2f\163\141\155\x6c\137\x61\163\x73\x65\162\x74\x69\x6f\x6e\72\x41\165\x74\x68\x6e\x43\x6f\x6e\164\145\x78\x74");
if (count($w5) > 1) {
goto vG;
}
if (empty($w5)) {
goto HE;
}
goto NV;
vG:
throw new Exception("\x4d\157\162\145\x20\164\x68\x61\156\40\157\156\145\40\x3c\163\141\155\154\x3a\101\165\164\150\156\x43\157\x6e\164\145\x78\164\x3e\40\151\x6e\x20\74\163\x61\155\x6c\72\x41\x75\164\150\x6e\123\x74\x61\x74\145\155\x65\156\x74\76\56");
goto NV;
HE:
throw new Exception("\115\151\x73\163\x69\x6e\147\40\x72\145\x71\165\151\162\145\x64\x20\x3c\163\x61\155\154\x3a\101\165\164\150\x6e\103\x6f\x6e\x74\145\170\164\x3e\40\151\156\40\x3c\163\x61\155\x6c\72\x41\x75\164\x68\156\x53\164\x61\164\x65\x6d\x65\x6e\x74\x3e\x2e");
NV:
$Ht = $w5[0];
$iG = Utilities::xpQuery($Ht, "\x2e\x2f\x73\141\x6d\x6c\137\141\x73\x73\x65\x72\164\151\157\156\72\101\165\164\150\156\x43\x6f\x6e\164\145\x78\164\104\145\143\x6c\122\145\146");
if (count($iG) > 1) {
goto it;
}
if (count($iG) === 1) {
goto LQ;
}
goto at;
it:
throw new Exception("\x4d\x6f\162\145\40\x74\x68\141\x6e\40\x6f\x6e\145\x20\x3c\x73\141\x6d\154\72\101\165\x74\x68\156\103\157\x6e\164\x65\x78\x74\x44\145\x63\154\122\145\146\x3e\40\x66\157\165\x6e\144\x3f");
goto at;
LQ:
$this->setAuthnContextDeclRef(trim($iG[0]->textContent));
at:
$Xx = Utilities::xpQuery($Ht, "\x2e\x2f\163\141\155\154\137\x61\163\x73\145\x72\x74\x69\x6f\x6e\72\101\165\x74\x68\x6e\103\x6f\x6e\x74\x65\170\164\x44\145\x63\154");
if (count($Xx) > 1) {
goto pV;
}
if (count($Xx) === 1) {
goto ic;
}
goto k0;
pV:
throw new Exception("\115\157\162\145\40\x74\150\141\x6e\40\x6f\156\145\x20\x3c\x73\141\155\154\x3a\x41\x75\x74\x68\156\x43\x6f\156\164\145\x78\x74\104\145\143\x6c\76\40\146\157\x75\156\x64\x3f");
goto k0;
ic:
$this->setAuthnContextDecl(new SAML2_XML_Chunk($Xx[0]));
k0:
$SO = Utilities::xpQuery($Ht, "\x2e\57\163\141\x6d\x6c\x5f\141\163\163\x65\162\x74\151\x6f\x6e\x3a\101\165\164\x68\x6e\x43\x6f\x6e\x74\x65\x78\x74\x43\x6c\141\x73\x73\122\145\146");
if (count($SO) > 1) {
goto rb;
}
if (count($SO) === 1) {
goto hN;
}
goto jT;
rb:
throw new Exception("\x4d\157\162\x65\40\164\150\141\x6e\40\157\156\x65\x20\74\x73\x61\155\x6c\72\101\x75\164\x68\x6e\x43\157\156\x74\x65\x78\x74\103\154\x61\163\163\122\x65\146\76\x20\x69\156\x20\x3c\163\141\x6d\154\72\x41\x75\164\150\x6e\103\157\x6e\164\145\170\164\x3e\x2e");
goto jT;
hN:
$this->setAuthnContextClassRef(trim($SO[0]->textContent));
jT:
if (!(empty($this->authnContextClassRef) && empty($this->authnContextDecl) && empty($this->authnContextDeclRef))) {
goto ZB;
}
throw new Exception("\x4d\x69\163\x73\x69\156\x67\40\145\151\164\x68\x65\162\x20\x3c\163\x61\x6d\154\72\101\165\x74\x68\x6e\103\157\x6e\x74\x65\170\x74\103\x6c\x61\x73\163\x52\145\146\76\40\157\162\40\x3c\163\141\x6d\154\72\101\x75\x74\150\x6e\103\x6f\x6e\164\x65\170\x74\x44\145\143\154\x52\145\146\x3e\40\157\162\40\x3c\x73\x61\155\x6c\x3a\x41\x75\x74\150\x6e\x43\x6f\156\164\145\170\164\x44\x65\143\x6c\x3e");
ZB:
$this->AuthenticatingAuthority = Utilities::extractStrings($Ht, "\165\162\156\x3a\x6f\x61\x73\x69\163\72\x6e\141\x6d\145\163\72\164\x63\x3a\123\x41\115\114\x3a\x32\56\x30\72\141\x73\163\145\162\164\151\157\156", "\101\165\164\150\145\x6e\x74\151\x63\141\164\x69\156\x67\x41\x75\164\x68\x6f\162\x69\x74\x79");
}
private function parseAttributes(DOMElement $gp)
{
$BC = TRUE;
$AZ = Utilities::xpQuery($gp, "\56\57\x73\141\x6d\x6c\137\141\x73\163\x65\x72\164\x69\x6f\156\72\x41\x74\164\162\151\142\165\164\145\123\x74\x61\x74\145\155\x65\x6e\164\x2f\163\x61\x6d\x6c\x5f\x61\163\163\145\162\x74\151\x6f\x6e\72\101\x74\164\162\x69\x62\165\164\x65");
foreach ($AZ as $IB) {
if ($IB->hasAttribute("\x4e\141\155\145")) {
goto N8;
}
throw new Exception("\115\x69\163\163\x69\x6e\147\40\x6e\141\155\145\40\x6f\x6e\x20\x3c\163\x61\x6d\154\x3a\x41\x74\164\162\x69\142\165\x74\145\x3e\x20\145\154\145\155\145\x6e\x74\x2e");
N8:
$SS = $IB->getAttribute("\116\x61\x6d\145");
if ($IB->hasAttribute("\x4e\141\x6d\145\106\x6f\162\x6d\141\x74")) {
goto zd;
}
$AB = "\x75\x72\x6e\x3a\157\141\x73\151\163\72\156\141\155\x65\163\72\x74\143\72\123\101\x4d\x4c\x3a\x31\56\x31\72\156\141\x6d\145\151\x64\55\x66\x6f\x72\155\x61\x74\72\165\x6e\163\x70\x65\143\x69\146\151\x65\x64";
goto vo;
zd:
$AB = $IB->getAttribute("\x4e\141\x6d\145\106\157\x72\x6d\x61\164");
vo:
if ($BC) {
goto nD;
}
if (!($this->nameFormat !== $AB)) {
goto Nr;
}
$this->nameFormat = "\165\162\x6e\72\x6f\141\163\151\163\x3a\x6e\141\155\145\x73\72\164\x63\72\123\x41\x4d\114\x3a\x31\56\x31\x3a\156\x61\x6d\145\151\144\55\146\157\x72\x6d\x61\164\72\165\x6e\x73\x70\145\143\x69\146\151\x65\144";
Nr:
goto EC;
nD:
$this->nameFormat = $AB;
$BC = FALSE;
EC:
if (array_key_exists($SS, $this->attributes)) {
goto GP;
}
$this->attributes[$SS] = array();
GP:
$Wj = Utilities::xpQuery($IB, "\x2e\57\x73\141\155\x6c\137\x61\x73\x73\145\162\164\151\x6f\x6e\x3a\101\x74\164\x72\x69\142\x75\164\145\126\141\x6c\165\145");
foreach ($Wj as $rE) {
$this->attributes[$SS][] = trim($rE->textContent);
BB:
}
Tc:
TK:
}
R8:
}
private function parseEncryptedAttributes(DOMElement $gp)
{
$this->encryptedAttribute = Utilities::xpQuery($gp, "\56\x2f\x73\141\x6d\x6c\x5f\141\163\x73\145\162\164\x69\157\156\72\x41\x74\x74\162\151\142\x75\164\145\x53\x74\141\x74\145\155\145\156\x74\x2f\163\x61\x6d\154\x5f\141\x73\163\145\x72\x74\151\157\x6e\x3a\105\x6e\x63\162\171\160\x74\145\144\x41\x74\x74\162\x69\x62\x75\164\145");
}
private function parseSignature(DOMElement $gp)
{
$tw = Utilities::validateElement($gp);
if (!($tw !== FALSE)) {
goto S7;
}
$this->wasSignedAtConstruction = TRUE;
$this->certificates = $tw["\103\x65\162\x74\151\x66\x69\143\x61\164\x65\163"];
$this->signatureData = $tw;
S7:
}
public function validate(XMLSecurityKey $mz)
{
if (!($this->signatureData === NULL)) {
goto kp;
}
return FALSE;
kp:
Utilities::validateSignature($this->signatureData, $mz);
return TRUE;
}
public function getId()
{
return $this->id;
}
public function setId($BA)
{
$this->id = $BA;
}
public function getIssueInstant()
{
return $this->issueInstant;
}
public function setIssueInstant($xw)
{
$this->issueInstant = $xw;
}
public function getIssuer()
{
return $this->issuer;
}
public function setIssuer($u1)
{
$this->issuer = $u1;
}
public function getNameId()
{
if (!($this->encryptedNameId !== NULL)) {
goto nU;
}
throw new Exception("\x41\x74\164\145\x6d\160\x74\x65\x64\40\164\157\40\x72\x65\x74\x72\x69\145\166\145\x20\145\x6e\x63\x72\x79\x70\164\145\144\x20\116\141\155\145\111\x44\40\167\151\164\150\157\x75\x74\x20\144\x65\143\162\x79\x70\164\x69\156\x67\40\151\x74\40\146\x69\x72\x73\x74\56");
nU:
return $this->nameId;
}
public function setNameId($b3)
{
$this->nameId = $b3;
}
public function isNameIdEncrypted()
{
if (!($this->encryptedNameId !== NULL)) {
goto yb;
}
return TRUE;
yb:
return FALSE;
}
public function encryptNameId(XMLSecurityKey $mz)
{
$OZ = new DOMDocument();
$rZ = $OZ->createElement("\x72\157\157\164");
$OZ->appendChild($rZ);
Utilities::addNameId($rZ, $this->nameId);
$b3 = $rZ->firstChild;
Utilities::getContainer()->debugMessage($b3, "\145\x6e\x63\162\x79\160\x74");
$kF = new XMLSecEnc();
$kF->setNode($b3);
$kF->type = XMLSecEnc::Element;
$Gg = new XMLSecurityKey(XMLSecurityKey::AES128_CBC);
$Gg->generateSessionKey();
$kF->encryptKey($mz, $Gg);
$this->encryptedNameId = $kF->encryptNode($Gg);
$this->nameId = NULL;
}
public function decryptNameId(XMLSecurityKey $mz, array $uB = array())
{
if (!($this->encryptedNameId === NULL)) {
goto o5;
}
return;
o5:
$b3 = Utilities::decryptElement($this->encryptedNameId, $mz, $uB);
Utilities::getContainer()->debugMessage($b3, "\x64\145\x63\x72\171\160\164");
$this->nameId = Utilities::parseNameId($b3);
$this->encryptedNameId = NULL;
}
public function decryptAttributes(XMLSecurityKey $mz, array $uB = array())
{
if (!($this->encryptedAttribute === NULL)) {
goto NQ;
}
return;
NQ:
$BC = TRUE;
$AZ = $this->encryptedAttribute;
foreach ($AZ as $bx) {
$IB = Utilities::decryptElement($bx->getElementsByTagName("\x45\156\x63\162\171\x70\x74\x65\x64\104\141\x74\141")->item(0), $mz, $uB);
if ($IB->hasAttribute("\x4e\x61\155\145")) {
goto KD;
}
throw new Exception("\x4d\151\163\x73\x69\156\x67\40\156\x61\155\145\x20\157\x6e\x20\x3c\163\x61\155\x6c\72\x41\x74\164\162\151\142\x75\x74\145\76\x20\145\x6c\x65\x6d\x65\x6e\x74\56");
KD:
$SS = $IB->getAttribute("\116\141\155\145");
if ($IB->hasAttribute("\x4e\141\x6d\145\106\x6f\x72\155\141\x74")) {
goto qj;
}
$AB = "\x75\x72\156\x3a\x6f\141\x73\151\163\72\156\x61\x6d\x65\163\72\164\143\x3a\123\x41\x4d\x4c\x3a\x32\x2e\60\x3a\x61\x74\x74\x72\156\141\x6d\145\x2d\146\157\162\x6d\141\x74\x3a\x75\x6e\x73\160\145\x63\151\x66\151\145\x64";
goto ox;
qj:
$AB = $IB->getAttribute("\116\x61\x6d\x65\x46\x6f\x72\155\x61\x74");
ox:
if ($BC) {
goto Us;
}
if (!($this->nameFormat !== $AB)) {
goto QR;
}
$this->nameFormat = "\165\x72\x6e\x3a\x6f\141\x73\151\x73\72\x6e\141\x6d\145\x73\72\164\143\72\x53\101\x4d\x4c\x3a\x32\56\x30\72\141\x74\164\162\156\141\155\x65\55\x66\x6f\x72\155\x61\164\x3a\x75\156\163\x70\x65\143\151\x66\x69\x65\x64";
QR:
goto sS;
Us:
$this->nameFormat = $AB;
$BC = FALSE;
sS:
if (array_key_exists($SS, $this->attributes)) {
goto OX;
}
$this->attributes[$SS] = array();
OX:
$Wj = Utilities::xpQuery($IB, "\x2e\x2f\x73\141\x6d\x6c\x5f\x61\x73\x73\145\162\x74\x69\x6f\156\72\101\164\164\x72\151\x62\165\164\145\x56\x61\154\x75\x65");
foreach ($Wj as $rE) {
$this->attributes[$SS][] = trim($rE->textContent);
W4:
}
UT:
BP:
}
Kt:
}
public function getNotBefore()
{
return $this->notBefore;
}
public function setNotBefore($pa)
{
$this->notBefore = $pa;
}
public function getNotOnOrAfter()
{
return $this->notOnOrAfter;
}
public function setNotOnOrAfter($DA)
{
$this->notOnOrAfter = $DA;
}
public function setEncryptedAttributes($Ga)
{
$this->requiredEncAttributes = $Ga;
}
public function getValidAudiences()
{
return $this->validAudiences;
}
public function setValidAudiences(array $ws = NULL)
{
$this->validAudiences = $ws;
}
public function getAuthnInstant()
{
return $this->authnInstant;
}
public function setAuthnInstant($yv)
{
$this->authnInstant = $yv;
}
public function getSessionNotOnOrAfter()
{
return $this->sessionNotOnOrAfter;
}
public function setSessionNotOnOrAfter($Cp)
{
$this->sessionNotOnOrAfter = $Cp;
}
public function getSessionIndex()
{
return $this->sessionIndex;
}
public function setSessionIndex($gF)
{
$this->sessionIndex = $gF;
}
public function getAuthnContext()
{
if (empty($this->authnContextClassRef)) {
goto h3;
}
return $this->authnContextClassRef;
h3:
if (empty($this->authnContextDeclRef)) {
goto m1;
}
return $this->authnContextDeclRef;
m1:
return NULL;
}
public function setAuthnContext($CJ)
{
$this->setAuthnContextClassRef($CJ);
}
public function getAuthnContextClassRef()
{
return $this->authnContextClassRef;
}
public function setAuthnContextClassRef($sg)
{
$this->authnContextClassRef = $sg;
}
public function setAuthnContextDecl(SAML2_XML_Chunk $yc)
{
if (empty($this->authnContextDeclRef)) {
goto xR;
}
throw new Exception("\x41\x75\x74\150\x6e\x43\157\156\164\x65\x78\164\x44\x65\x63\x6c\x52\x65\x66\x20\x69\163\x20\x61\154\162\145\141\x64\171\40\x72\145\x67\151\x73\x74\x65\162\x65\x64\x21\x20\115\x61\171\40\157\156\154\171\x20\x68\141\x76\145\40\x65\x69\164\x68\145\162\40\141\x20\x44\145\143\x6c\40\x6f\162\x20\x61\x20\x44\x65\143\154\x52\145\146\54\40\156\x6f\164\40\x62\157\164\x68\x21");
xR:
$this->authnContextDecl = $yc;
}
public function getAuthnContextDecl()
{
return $this->authnContextDecl;
}
public function setAuthnContextDeclRef($zh)
{
if (empty($this->authnContextDecl)) {
goto mK;
}
throw new Exception("\101\x75\x74\x68\x6e\x43\x6f\x6e\164\145\x78\164\x44\145\143\x6c\x20\x69\x73\40\141\x6c\x72\145\x61\x64\171\40\162\145\x67\151\163\164\x65\162\145\144\x21\40\115\x61\x79\40\x6f\x6e\x6c\x79\x20\150\x61\x76\145\x20\x65\x69\164\150\x65\162\40\141\x20\x44\145\143\x6c\40\x6f\162\x20\141\x20\x44\x65\143\154\122\x65\x66\x2c\x20\x6e\x6f\164\40\142\157\x74\x68\x21");
mK:
$this->authnContextDeclRef = $zh;
}
public function getAuthnContextDeclRef()
{
return $this->authnContextDeclRef;
}
public function getAuthenticatingAuthority()
{
return $this->AuthenticatingAuthority;
}
public function setAuthenticatingAuthority($zG)
{
$this->AuthenticatingAuthority = $zG;
}
public function getAttributes()
{
return $this->attributes;
}
public function setAttributes(array $AZ)
{
$this->attributes = $AZ;
}
public function getAttributeNameFormat()
{
return $this->nameFormat;
}
public function setAttributeNameFormat($AB)
{
$this->nameFormat = $AB;
}
public function getSubjectConfirmation()
{
return $this->SubjectConfirmation;
}
public function setSubjectConfirmation(array $wB)
{
$this->SubjectConfirmation = $wB;
}
public function getSignatureKey()
{
return $this->signatureKey;
}
public function getSignatureData()
{
return $this->signatureData;
}
public function setSignatureKey(XMLsecurityKey $ew = NULL)
{
$this->signatureKey = $ew;
}
public function getEncryptionKey()
{
return $this->encryptionKey;
}
public function setEncryptionKey(XMLSecurityKey $Aq = NULL)
{
$this->encryptionKey = $Aq;
}
public function setCertificates(array $MI)
{
$this->certificates = $MI;
}
public function getCertificates()
{
return $this->certificates;
}
public function getWasSignedAtConstruction()
{
return $this->wasSignedAtConstruction;
}
public function toXML(DOMNode $Z1 = NULL)
{
if ($Z1 === NULL) {
goto JF;
}
$Ej = $Z1->ownerDocument;
goto lh;
JF:
$Ej = new DOMDocument();
$Z1 = $Ej;
lh:
$rZ = $Ej->createElementNS("\165\162\x6e\x3a\157\141\163\x69\163\x3a\x6e\141\x6d\x65\x73\72\x74\x63\x3a\123\x41\115\114\72\x32\56\x30\x3a\141\163\163\x65\162\x74\x69\x6f\x6e", "\x73\x61\x6d\154\x3a" . "\x41\x73\x73\145\x72\164\151\157\156");
$Z1->appendChild($rZ);
$rZ->setAttributeNS("\165\162\x6e\x3a\x6f\141\163\151\x73\72\x6e\141\x6d\x65\x73\72\164\x63\72\x53\101\115\x4c\72\x32\x2e\60\72\160\x72\157\164\157\x63\157\154", "\163\141\155\x6c\x70\x3a\x74\155\160", "\x74\155\160");
$rZ->removeAttributeNS("\165\162\156\x3a\x6f\x61\163\x69\x73\72\156\x61\x6d\145\163\x3a\x74\143\72\123\x41\x4d\114\72\62\x2e\60\x3a\x70\162\157\x74\x6f\x63\x6f\x6c", "\x74\155\160");
$rZ->setAttributeNS("\150\x74\164\x70\72\x2f\57\x77\x77\167\56\167\63\56\157\162\x67\57\62\x30\x30\x31\57\130\115\114\x53\143\x68\x65\155\141\55\151\156\x73\x74\141\156\143\x65", "\x78\x73\x69\72\x74\x6d\x70", "\164\155\x70");
$rZ->removeAttributeNS("\x68\164\x74\x70\72\x2f\x2f\167\167\x77\56\167\63\x2e\157\x72\147\57\62\x30\60\x31\x2f\x58\x4d\x4c\123\x63\x68\145\x6d\141\55\151\156\x73\164\x61\x6e\x63\145", "\x74\155\x70");
$rZ->setAttributeNS("\x68\x74\164\160\72\57\57\167\167\167\56\x77\x33\x2e\157\162\147\x2f\62\60\x30\x31\x2f\130\115\x4c\123\143\x68\x65\155\141", "\x78\x73\72\x74\x6d\160", "\164\x6d\x70");
$rZ->removeAttributeNS("\x68\x74\164\160\x3a\57\x2f\167\x77\x77\56\x77\63\56\x6f\x72\147\x2f\62\60\60\61\57\130\115\x4c\x53\143\150\x65\155\141", "\164\155\160");
$rZ->setAttribute("\111\104", $this->id);
$rZ->setAttribute("\x56\145\x72\x73\151\x6f\x6e", "\x32\56\x30");
$rZ->setAttribute("\x49\x73\x73\165\145\x49\156\163\x74\x61\x6e\x74", gmdate("\x59\55\x6d\55\x64\x5c\124\x48\72\x69\72\163\134\x5a", $this->issueInstant));
$u1 = Utilities::addString($rZ, "\165\162\x6e\72\157\x61\163\151\x73\x3a\x6e\x61\155\x65\163\72\164\x63\72\x53\101\115\x4c\72\62\x2e\x30\x3a\141\163\x73\x65\162\164\x69\157\x6e", "\x73\141\x6d\x6c\x3a\x49\x73\163\165\x65\x72", $this->issuer);
$this->addSubject($rZ);
$this->addConditions($rZ);
$this->addAuthnStatement($rZ);
if ($this->requiredEncAttributes == FALSE) {
goto Gm;
}
$this->addEncryptedAttributeStatement($rZ);
goto O0;
Gm:
$this->addAttributeStatement($rZ);
O0:
if (!($this->signatureKey !== NULL)) {
goto bv;
}
Utilities::insertSignature($this->signatureKey, $this->certificates, $rZ, $u1->nextSibling);
bv:
return $rZ;
}
private function addSubject(DOMElement $rZ)
{
if (!($this->nameId === NULL && $this->encryptedNameId === NULL)) {
goto II;
}
return;
II:
$sU = $rZ->ownerDocument->createElementNS("\165\162\x6e\72\x6f\141\163\x69\163\72\x6e\x61\x6d\145\x73\72\164\x63\x3a\x53\x41\115\x4c\72\x32\56\60\x3a\141\x73\163\145\x72\164\x69\157\156", "\x73\x61\155\154\72\x53\165\x62\x6a\x65\x63\164");
$rZ->appendChild($sU);
if ($this->encryptedNameId === NULL) {
goto Ew;
}
$fm = $sU->ownerDocument->createElementNS("\x75\162\x6e\72\x6f\x61\163\x69\163\x3a\x6e\141\x6d\145\163\x3a\x74\x63\72\x53\x41\x4d\114\x3a\x32\x2e\60\72\x61\163\x73\x65\162\164\151\157\156", "\x73\141\155\x6c\x3a" . "\105\x6e\143\x72\171\x70\x74\145\x64\x49\104");
$sU->appendChild($fm);
$fm->appendChild($sU->ownerDocument->importNode($this->encryptedNameId, TRUE));
goto zY;
Ew:
Utilities::addNameId($sU, $this->nameId);
zY:
foreach ($this->SubjectConfirmation as $z5) {
$z5->toXML($sU);
ov:
}
sG:
}
private function addConditions(DOMElement $rZ)
{
$Ej = $rZ->ownerDocument;
$Rh = $Ej->createElementNS("\165\x72\x6e\x3a\x6f\141\x73\151\x73\72\x6e\x61\155\145\163\72\x74\x63\x3a\x53\x41\115\114\72\x32\56\x30\x3a\x61\163\x73\x65\x72\164\x69\157\x6e", "\163\141\x6d\154\72\x43\x6f\x6e\x64\151\164\151\157\156\x73");
$rZ->appendChild($Rh);
if (!($this->notBefore !== NULL)) {
goto xj;
}
$Rh->setAttribute("\x4e\x6f\164\102\145\x66\157\x72\145", gmdate("\x59\55\x6d\55\144\134\124\x48\x3a\x69\72\x73\134\x5a", $this->notBefore));
xj:
if (!($this->notOnOrAfter !== NULL)) {
goto Uv;
}
$Rh->setAttribute("\x4e\157\164\x4f\156\117\x72\101\146\x74\x65\162", gmdate("\131\x2d\x6d\55\144\134\124\x48\72\151\72\x73\134\132", $this->notOnOrAfter));
Uv:
if (!($this->validAudiences !== NULL)) {
goto sF;
}
$JQ = $Ej->createElementNS("\x75\x72\x6e\72\x6f\141\x73\151\163\72\156\x61\155\x65\163\x3a\x74\143\x3a\123\x41\x4d\x4c\x3a\62\x2e\x30\x3a\141\163\x73\x65\x72\164\151\157\x6e", "\163\141\155\154\72\101\x75\x64\x69\x65\156\143\x65\x52\145\163\x74\x72\x69\143\x74\x69\157\156");
$Rh->appendChild($JQ);
Utilities::addStrings($JQ, "\x75\162\x6e\72\x6f\141\163\151\163\x3a\156\141\155\145\163\x3a\x74\143\x3a\x53\101\115\x4c\x3a\62\x2e\60\72\141\x73\x73\145\162\x74\x69\x6f\x6e", "\163\141\155\154\x3a\101\165\144\151\145\x6e\x63\145", FALSE, $this->validAudiences);
sF:
}
private function addAuthnStatement(DOMElement $rZ)
{
if (!($this->authnInstant === NULL || $this->authnContextClassRef === NULL && $this->authnContextDecl === NULL && $this->authnContextDeclRef === NULL)) {
goto lK;
}
return;
lK:
$Ej = $rZ->ownerDocument;
$Yp = $Ej->createElementNS("\165\x72\156\72\157\x61\163\x69\x73\x3a\156\x61\x6d\x65\163\x3a\x74\x63\72\x53\101\115\x4c\x3a\62\x2e\x30\x3a\141\x73\163\x65\162\x74\151\x6f\x6e", "\x73\141\x6d\x6c\x3a\x41\165\x74\150\x6e\123\164\x61\x74\x65\x6d\x65\156\x74");
$rZ->appendChild($Yp);
$Yp->setAttribute("\x41\165\x74\150\156\111\156\163\x74\x61\x6e\x74", gmdate("\x59\55\x6d\x2d\144\x5c\124\110\x3a\x69\72\163\x5c\x5a", $this->authnInstant));
if (!($this->sessionNotOnOrAfter !== NULL)) {
goto hX;
}
$Yp->setAttribute("\123\145\163\163\151\x6f\156\x4e\x6f\164\117\x6e\117\162\x41\146\x74\145\x72", gmdate("\131\55\155\55\144\x5c\124\110\x3a\151\x3a\163\x5c\x5a", $this->sessionNotOnOrAfter));
hX:
if (!($this->sessionIndex !== NULL)) {
goto KW;
}
$Yp->setAttribute("\123\x65\163\163\x69\157\156\111\156\144\x65\x78", $this->sessionIndex);
KW:
$Ht = $Ej->createElementNS("\165\x72\x6e\x3a\157\141\163\151\x73\x3a\156\x61\x6d\145\163\72\x74\143\x3a\x53\x41\115\x4c\72\62\x2e\x30\72\x61\x73\x73\145\162\x74\x69\x6f\x6e", "\x73\x61\x6d\x6c\72\x41\x75\164\x68\x6e\103\x6f\x6e\164\x65\x78\x74");
$Yp->appendChild($Ht);
if (empty($this->authnContextClassRef)) {
goto FA;
}
Utilities::addString($Ht, "\165\162\156\72\157\141\x73\151\x73\x3a\156\x61\x6d\145\x73\x3a\x74\143\x3a\123\101\x4d\114\x3a\62\x2e\x30\72\x61\163\163\145\162\x74\x69\157\x6e", "\x73\x61\155\154\72\x41\x75\x74\150\156\x43\157\x6e\164\145\170\164\x43\x6c\141\163\163\x52\145\x66", $this->authnContextClassRef);
FA:
if (empty($this->authnContextDecl)) {
goto ED;
}
$this->authnContextDecl->toXML($Ht);
ED:
if (empty($this->authnContextDeclRef)) {
goto bj;
}
Utilities::addString($Ht, "\x75\x72\x6e\x3a\157\x61\163\151\x73\72\x6e\141\155\145\x73\x3a\164\143\x3a\123\101\x4d\x4c\72\x32\x2e\60\72\x61\163\163\145\x72\x74\x69\157\x6e", "\x73\141\x6d\154\72\x41\165\164\150\x6e\x43\157\156\x74\145\170\x74\104\x65\143\154\x52\145\146", $this->authnContextDeclRef);
bj:
Utilities::addStrings($Ht, "\165\x72\x6e\x3a\x6f\x61\x73\151\163\72\x6e\x61\x6d\x65\163\72\164\x63\x3a\123\101\x4d\x4c\72\62\56\60\72\141\x73\x73\x65\x72\x74\x69\x6f\x6e", "\x73\141\155\x6c\x3a\101\165\x74\150\x65\x6e\x74\151\x63\x61\x74\x69\156\147\x41\x75\x74\x68\x6f\x72\x69\x74\171", FALSE, $this->AuthenticatingAuthority);
}
private function addAttributeStatement(DOMElement $rZ)
{
if (!empty($this->attributes)) {
goto UI;
}
return;
UI:
$Ej = $rZ->ownerDocument;
$if = $Ej->createElementNS("\165\x72\x6e\x3a\x6f\x61\x73\151\163\x3a\x6e\x61\155\145\163\72\164\143\x3a\123\101\x4d\114\x3a\x32\56\x30\72\141\x73\163\145\162\164\x69\157\156", "\x73\x61\155\154\x3a\101\164\x74\162\151\x62\x75\164\145\x53\x74\141\x74\x65\x6d\x65\x6e\164");
$rZ->appendChild($if);
foreach ($this->attributes as $SS => $Wj) {
$IB = $Ej->createElementNS("\x75\162\x6e\72\x6f\141\x73\x69\163\x3a\x6e\x61\155\x65\x73\x3a\x74\143\x3a\123\x41\x4d\114\x3a\62\56\x30\x3a\x61\x73\x73\x65\x72\164\x69\157\x6e", "\163\x61\x6d\x6c\72\101\x74\164\x72\151\x62\165\164\x65");
$if->appendChild($IB);
$IB->setAttribute("\x4e\141\155\145", $SS);
if (!($this->nameFormat !== "\165\x72\x6e\x3a\157\x61\163\x69\x73\72\156\141\155\145\x73\x3a\164\143\x3a\123\x41\115\114\72\x32\x2e\x30\72\141\x74\164\162\156\141\155\145\55\x66\157\162\x6d\141\x74\x3a\x75\156\x73\160\145\143\151\146\151\x65\x64")) {
goto ec;
}
$IB->setAttribute("\x4e\141\x6d\145\x46\157\162\x6d\x61\164", $this->nameFormat);
ec:
foreach ($Wj as $rE) {
if (is_string($rE)) {
goto y4;
}
if (is_int($rE)) {
goto gc;
}
$Ak = NULL;
goto H9;
y4:
$Ak = "\170\163\x3a\163\164\x72\151\x6e\147";
goto H9;
gc:
$Ak = "\170\x73\x3a\151\156\164\x65\147\145\x72";
H9:
$TQ = $Ej->createElementNS("\x75\x72\156\72\x6f\141\163\151\163\x3a\x6e\x61\x6d\x65\163\x3a\164\143\72\123\x41\x4d\114\x3a\x32\x2e\60\x3a\x61\163\163\145\162\x74\x69\157\156", "\x73\141\155\154\x3a\x41\x74\164\x72\151\x62\165\164\145\x56\x61\154\x75\x65");
$IB->appendChild($TQ);
if (!($Ak !== NULL)) {
goto MD;
}
$TQ->setAttributeNS("\150\164\164\160\72\x2f\57\x77\x77\x77\x2e\x77\x33\x2e\157\162\x67\x2f\x32\60\60\x31\x2f\x58\115\114\123\x63\150\145\x6d\141\55\x69\x6e\x73\x74\141\x6e\143\145", "\x78\x73\151\x3a\x74\171\160\x65", $Ak);
MD:
if (!is_null($rE)) {
goto k3;
}
$TQ->setAttributeNS("\150\164\164\x70\72\57\x2f\x77\x77\x77\56\167\63\56\157\x72\147\x2f\x32\x30\x30\61\57\130\x4d\x4c\123\143\150\145\x6d\x61\x2d\x69\x6e\163\x74\x61\156\x63\x65", "\170\163\x69\72\156\x69\x6c", "\164\x72\165\x65");
k3:
if ($rE instanceof DOMNodeList) {
goto Vj;
}
$TQ->appendChild($Ej->createTextNode($rE));
goto li;
Vj:
$Eo = 0;
ib:
if (!($Eo < $rE->length)) {
goto pp;
}
$HF = $Ej->importNode($rE->item($Eo), TRUE);
$TQ->appendChild($HF);
ZS:
$Eo++;
goto ib;
pp:
li:
rE:
}
DI:
ss:
}
p2:
}
private function addEncryptedAttributeStatement(DOMElement $rZ)
{
if (!($this->requiredEncAttributes == FALSE)) {
goto rW;
}
return;
rW:
$Ej = $rZ->ownerDocument;
$if = $Ej->createElementNS("\x75\x72\156\x3a\x6f\141\x73\151\163\x3a\156\x61\x6d\x65\163\x3a\164\143\x3a\x53\x41\x4d\114\x3a\x32\x2e\x30\72\141\163\163\145\162\164\151\157\x6e", "\163\x61\155\154\x3a\101\164\x74\162\151\x62\x75\x74\x65\123\x74\x61\164\x65\x6d\x65\x6e\164");
$rZ->appendChild($if);
foreach ($this->attributes as $SS => $Wj) {
$e1 = new DOMDocument();
$IB = $e1->createElementNS("\165\162\x6e\72\157\x61\x73\x69\163\x3a\156\141\x6d\x65\163\x3a\164\143\72\x53\x41\x4d\x4c\x3a\x32\56\60\72\x61\163\163\145\162\x74\x69\x6f\x6e", "\163\x61\155\x6c\x3a\x41\x74\x74\162\151\x62\165\164\145");
$IB->setAttribute("\116\141\x6d\x65", $SS);
$e1->appendChild($IB);
if (!($this->nameFormat !== "\x75\x72\156\x3a\157\x61\x73\x69\163\72\156\x61\155\x65\x73\x3a\x74\143\72\123\x41\115\x4c\72\x32\x2e\x30\72\x61\x74\164\162\x6e\x61\x6d\x65\55\x66\x6f\x72\x6d\x61\x74\x3a\165\x6e\163\160\145\x63\x69\x66\x69\x65\144")) {
goto Xz;
}
$IB->setAttribute("\116\141\x6d\x65\106\x6f\x72\x6d\141\x74", $this->nameFormat);
Xz:
foreach ($Wj as $rE) {
if (is_string($rE)) {
goto bK;
}
if (is_int($rE)) {
goto jm;
}
$Ak = NULL;
goto Je;
bK:
$Ak = "\x78\163\72\x73\x74\x72\151\x6e\x67";
goto Je;
jm:
$Ak = "\x78\x73\72\151\156\164\x65\x67\x65\x72";
Je:
$TQ = $e1->createElementNS("\165\x72\156\x3a\x6f\x61\x73\151\163\72\x6e\x61\x6d\145\163\72\x74\143\72\x53\x41\115\x4c\72\x32\x2e\60\72\141\163\163\145\x72\164\x69\157\x6e", "\163\x61\x6d\x6c\x3a\x41\164\164\x72\151\142\165\164\x65\126\141\x6c\x75\145");
$IB->appendChild($TQ);
if (!($Ak !== NULL)) {
goto av;
}
$TQ->setAttributeNS("\150\164\164\x70\x3a\x2f\57\x77\x77\167\x2e\167\x33\x2e\157\x72\147\x2f\x32\x30\x30\x31\57\x58\x4d\114\123\x63\150\145\155\141\x2d\151\x6e\163\x74\141\x6e\143\x65", "\170\163\x69\72\x74\171\160\x65", $Ak);
av:
if ($rE instanceof DOMNodeList) {
goto RL;
}
$TQ->appendChild($e1->createTextNode($rE));
goto Aw;
RL:
$Eo = 0;
qy:
if (!($Eo < $rE->length)) {
goto r1;
}
$HF = $e1->importNode($rE->item($Eo), TRUE);
$TQ->appendChild($HF);
fF:
$Eo++;
goto qy;
r1:
Aw:
BU:
}
x1:
$ha = new XMLSecEnc();
$ha->setNode($e1->documentElement);
$ha->type = "\150\164\x74\x70\x3a\x2f\57\167\167\167\56\x77\63\x2e\x6f\162\x67\57\x32\60\x30\61\57\60\64\x2f\x78\x6d\x6c\x65\156\x63\43\105\154\x65\x6d\x65\156\164";
$Gg = new XMLSecurityKey(XMLSecurityKey::AES256_CBC);
$Gg->generateSessionKey();
$ha->encryptKey($this->encryptionKey, $Gg);
$qM = $ha->encryptNode($Gg);
$kw = $Ej->createElementNS("\165\162\x6e\72\157\141\163\x69\x73\72\x6e\141\155\145\x73\72\x74\143\72\123\x41\x4d\114\72\62\x2e\x30\72\x61\x73\163\145\x72\x74\x69\x6f\x6e", "\x73\141\x6d\154\x3a\105\156\x63\162\171\x70\164\145\x64\x41\x74\164\x72\x69\142\x75\x74\x65");
$if->appendChild($kw);
$dN = $Ej->importNode($qM, TRUE);
$kw->appendChild($dN);
JJ:
}
yi:
}
}
Function Calls
None |
Stats
MD5 | 42a5bcc3864f0f30c60b4405aef318d5 |
Eval Count | 0 |
Decode Time | 163 ms |