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\154\x69\x74\x69\145\x73\x2e\x70\150\x70"; 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 $A3 = 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 (!($A3 === NULL)) {
goto j3;
}
return;
j3:
if (!($A3->localName === "EncryptedAssertion")) {
goto fc;
}
$E2 = Utilities::xpQuery($A3, ".//*[local-name()="EncryptedData"]");
$hd = Utilities::xpQuery($A3, ".//*[local-name()="EncryptedData"]/*[local-name()="KeyInfo"]");
$hd = Utilities::xpQuery($A3, ".//*[local-name()="EncryptedData"]/*[local-name()="KeyInfo"]/*[local-name()="EncryptedKey"]");
$Vw = '';
if (empty($hd)) {
goto qh;
}
$Vw = "http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p";
goto kJ;
qh:
$hd = Utilities::xpQuery($A3, ".//*[local-name()="EncryptedData"]/*[local-name()="KeyInfo"]/*[local-name()="EncryptedKey"]");
$Vw = $hd[0]->getAttribute("Algorithm");
kJ:
$eY = Utilities::getEncryptionAlgorithm($Vw);
if (count($E2) === 0) {
goto A2;
}
if (count($E2) > 1) {
goto vy;
}
goto CO;
A2:
throw new Exception("Missing encrypted data in <saml:EncryptedAssertion>.");
goto CO;
vy:
throw new Exception("More than one encrypted data element in <saml:EncryptedAssertion>.");
CO:
$t9 = Utilities::getPrivateKey();
$tg = new XMLSecurityKey($eY, array("type" => "private"));
$tg->loadKey($t9, FALSE);
$iP = array();
try {
$A3 = Utilities::decryptElement($E2[0], $tg, $iP);
} catch (Exception $vc) {
echo "Caught exception: ", $vc->getMessage(), "\xa";
}
fc:
if ($A3->hasAttribute("ID")) {
goto HK;
}
throw new Exception("Missing ID attribute on SAML assertion.");
HK:
$this->id = $A3->getAttribute("ID");
if (!($A3->getAttribute("Version") !== "2.0")) {
goto N8;
}
throw new Exception("Unsupported version: " . $A3->getAttribute("Version"));
N8:
$this->issueInstant = Utilities::xsDateTimeToTimestamp($A3->getAttribute("IssueInstant"));
$wf = Utilities::xpQuery($A3, "./saml_assertion:Issuer");
if (!empty($wf)) {
goto md;
}
throw new Exception("Missing <saml:Issuer> in assertion.");
md:
$this->issuer = trim($wf[0]->textContent);
$this->parseConditions($A3);
$this->parseAuthnStatement($A3);
$this->parseAttributes($A3);
$this->parseEncryptedAttributes($A3);
$this->parseSignature($A3);
$this->parseSubject($A3);
}
private function parseSubject(DOMElement $A3)
{
$I9 = Utilities::xpQuery($A3, "./saml_assertion:Subject");
if (empty($I9)) {
goto yS;
}
if (count($I9) > 1) {
goto DM;
}
goto Wt;
yS:
return;
goto Wt;
DM:
throw new Exception("More than one <saml:Subject> in <saml:Assertion>.");
Wt:
$I9 = $I9[0];
$nD = Utilities::xpQuery($I9, "./saml_assertion:NameID | ./saml_assertion:EncryptedID/xenc:EncryptedData");
if (empty($nD)) {
goto VB;
}
if (count($nD) > 1) {
goto id;
}
goto TE;
VB:
throw new Exception("Missing <saml:NameID> or <saml:EncryptedID> in <saml:Subject>.");
goto TE;
id:
throw new Exception("More than one <saml:NameID> or <saml:EncryptedD> in <saml:Subject>.");
TE:
$nD = $nD[0];
if ($nD->localName === "EncryptedData") {
goto FQ;
}
$this->nameId = Utilities::parseNameId($nD);
goto Pq;
FQ:
$this->encryptedNameId = $nD;
Pq:
}
private function parseConditions(DOMElement $A3)
{
$q7 = Utilities::xpQuery($A3, "./saml_assertion:Conditions");
if (empty($q7)) {
goto We;
}
if (count($q7) > 1) {
goto Gu;
}
goto ZN;
We:
return;
goto ZN;
Gu:
throw new Exception("More than one <saml:Conditions> in <saml:Assertion>.");
ZN:
$q7 = $q7[0];
if (!$q7->hasAttribute("NotBefore")) {
goto Iu;
}
$tO = Utilities::xsDateTimeToTimestamp($q7->getAttribute("NotBefore"));
if (!($this->notBefore === NULL || $this->notBefore < $tO)) {
goto wu;
}
$this->notBefore = $tO;
wu:
Iu:
if (!$q7->hasAttribute("NotOnOrAfter")) {
goto Rd;
}
$fh = Utilities::xsDateTimeToTimestamp($q7->getAttribute("NotOnOrAfter"));
if (!($this->notOnOrAfter === NULL || $this->notOnOrAfter > $fh)) {
goto go;
}
$this->notOnOrAfter = $fh;
go:
Rd:
$pU = $q7->firstChild;
kX:
if (!($pU !== NULL)) {
goto pK;
}
if (!$pU instanceof DOMText) {
goto T0;
}
goto OL;
T0:
if (!($pU->namespaceURI !== "urn:oasis:names:tc:SAML:2.0:assertion")) {
goto qD;
}
throw new Exception("Unknown namespace of condition: " . var_export($pU->namespaceURI, TRUE));
qD:
switch ($pU->localName) {
case "AudienceRestriction":
$lb = Utilities::extractStrings($pU, "urn:oasis:names:tc:SAML:2.0:assertion", "Audience");
if ($this->validAudiences === NULL) {
goto PA;
}
$this->validAudiences = array_intersect($this->validAudiences, $lb);
goto SI;
PA:
$this->validAudiences = $lb;
SI:
goto D_;
case "OneTimeUse":
goto D_;
case "ProxyRestriction":
goto D_;
default:
throw new Exception("Unknown condition: " . var_export($pU->localName, TRUE));
}
dp:
D_:
OL:
$pU = $pU->nextSibling;
goto kX;
pK:
}
private function parseAuthnStatement(DOMElement $A3)
{
$Lt = Utilities::xpQuery($A3, "./saml_assertion:AuthnStatement");
if (empty($Lt)) {
goto Yb;
}
if (count($Lt) > 1) {
goto f_;
}
goto qg;
Yb:
$this->authnInstant = NULL;
return;
goto qg;
f_:
throw new Exception("More that one <saml:AuthnStatement> in <saml:Assertion> not supported.");
qg:
$nG = $Lt[0];
if ($nG->hasAttribute("AuthnInstant")) {
goto UO;
}
throw new Exception("Missing required AuthnInstant attribute on <saml:AuthnStatement>.");
UO:
$this->authnInstant = Utilities::xsDateTimeToTimestamp($nG->getAttribute("AuthnInstant"));
if (!$nG->hasAttribute("SessionNotOnOrAfter")) {
goto DH;
}
$this->sessionNotOnOrAfter = Utilities::xsDateTimeToTimestamp($nG->getAttribute("SessionNotOnOrAfter"));
DH:
if (!$nG->hasAttribute("SessionIndex")) {
goto xq;
}
$this->sessionIndex = $nG->getAttribute("SessionIndex");
xq:
$this->parseAuthnContext($nG);
}
private function parseAuthnContext(DOMElement $P0)
{
$O_ = Utilities::xpQuery($P0, "./saml_assertion:AuthnContext");
if (count($O_) > 1) {
goto UA;
}
if (empty($O_)) {
goto FD;
}
goto hG;
UA:
throw new Exception("More than one <saml:AuthnContext> in <saml:AuthnStatement>.");
goto hG;
FD:
throw new Exception("Missing required <saml:AuthnContext> in <saml:AuthnStatement>.");
hG:
$Iu = $O_[0];
$i1 = Utilities::xpQuery($Iu, "./saml_assertion:AuthnContextDeclRef");
if (count($i1) > 1) {
goto y5;
}
if (count($i1) === 1) {
goto Pg;
}
goto Z8;
y5:
throw new Exception("More than one <saml:AuthnContextDeclRef> found?");
goto Z8;
Pg:
$this->setAuthnContextDeclRef(trim($i1[0]->textContent));
Z8:
$lf = Utilities::xpQuery($Iu, "./saml_assertion:AuthnContextDecl");
if (count($lf) > 1) {
goto nR;
}
if (count($lf) === 1) {
goto AM;
}
goto rh;
nR:
throw new Exception("More than one <saml:AuthnContextDecl> found?");
goto rh;
AM:
$this->setAuthnContextDecl(new SAML2_XML_Chunk($lf[0]));
rh:
$SI = Utilities::xpQuery($Iu, "./saml_assertion:AuthnContextClassRef");
if (count($SI) > 1) {
goto q9;
}
if (count($SI) === 1) {
goto gs;
}
goto s3;
q9:
throw new Exception("More than one <saml:AuthnContextClassRef> in <saml:AuthnContext>.");
goto s3;
gs:
$this->setAuthnContextClassRef(trim($SI[0]->textContent));
s3:
if (!(empty($this->authnContextClassRef) && empty($this->authnContextDecl) && empty($this->authnContextDeclRef))) {
goto bv;
}
throw new Exception("Missing either <saml:AuthnContextClassRef> or <saml:AuthnContextDeclRef> or <saml:AuthnContextDecl>");
bv:
$this->AuthenticatingAuthority = Utilities::extractStrings($Iu, "urn:oasis:names:tc:SAML:2.0:assertion", "AuthenticatingAuthority");
}
private function parseAttributes(DOMElement $A3)
{
$gu = TRUE;
$pP = Utilities::xpQuery($A3, "./saml_assertion:AttributeStatement/saml_assertion:Attribute");
foreach ($pP as $rv) {
if ($rv->hasAttribute("Name")) {
goto MD;
}
throw new Exception("Missing name on <saml:Attribute> element.");
MD:
$xy = $rv->getAttribute("Name");
if ($rv->hasAttribute("NameFormat")) {
goto iT;
}
$ax = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified";
goto Ko;
iT:
$ax = $rv->getAttribute("NameFormat");
Ko:
if ($gu) {
goto p0;
}
if (!($this->nameFormat !== $ax)) {
goto aP;
}
$this->nameFormat = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified";
aP:
goto ck;
p0:
$this->nameFormat = $ax;
$gu = FALSE;
ck:
if (array_key_exists($xy, $this->attributes)) {
goto g9;
}
$this->attributes[$xy] = array();
g9:
$WT = Utilities::xpQuery($rv, "./saml_assertion:AttributeValue");
foreach ($WT as $fg) {
$this->attributes[$xy][] = trim($fg->textContent);
J1:
}
FG:
tv:
}
rq:
}
private function parseEncryptedAttributes(DOMElement $A3)
{
$this->encryptedAttribute = Utilities::xpQuery($A3, "./saml_assertion:AttributeStatement/saml_assertion:EncryptedAttribute");
}
private function parseSignature(DOMElement $A3)
{
$kT = Utilities::validateElement($A3);
if (!($kT !== FALSE)) {
goto LB;
}
$this->wasSignedAtConstruction = TRUE;
$this->certificates = $kT["Certificates"];
$this->signatureData = $kT;
LB:
}
public function validate(XMLSecurityKey $tg)
{
if (!($this->signatureData === NULL)) {
goto M1;
}
return FALSE;
M1:
Utilities::validateSignature($this->signatureData, $tg);
return TRUE;
}
public function getId()
{
return $this->id;
}
public function setId($lS)
{
$this->id = $lS;
}
public function getIssueInstant()
{
return $this->issueInstant;
}
public function setIssueInstant($I8)
{
$this->issueInstant = $I8;
}
public function getIssuer()
{
return $this->issuer;
}
public function setIssuer($wf)
{
$this->issuer = $wf;
}
public function getNameId()
{
if (!($this->encryptedNameId !== NULL)) {
goto ID;
}
throw new Exception("Attempted to retrieve encrypted NameID without decrypting it first.");
ID:
return $this->nameId;
}
public function setNameId($nD)
{
$this->nameId = $nD;
}
public function isNameIdEncrypted()
{
if (!($this->encryptedNameId !== NULL)) {
goto iN;
}
return TRUE;
iN:
return FALSE;
}
public function encryptNameId(XMLSecurityKey $tg)
{
$K1 = new DOMDocument();
$n2 = $K1->createElement("root");
$K1->appendChild($n2);
Utilities::addNameId($n2, $this->nameId);
$nD = $n2->firstChild;
Utilities::getContainer()->debugMessage($nD, "encrypt");
$De = new XMLSecEnc();
$De->setNode($nD);
$De->type = XMLSecEnc::Element;
$QX = new XMLSecurityKey(XMLSecurityKey::AES128_CBC);
$QX->generateSessionKey();
$De->encryptKey($tg, $QX);
$this->encryptedNameId = $De->encryptNode($QX);
$this->nameId = NULL;
}
public function decryptNameId(XMLSecurityKey $tg, array $iP = array())
{
if (!($this->encryptedNameId === NULL)) {
goto kl;
}
return;
kl:
$nD = Utilities::decryptElement($this->encryptedNameId, $tg, $iP);
Utilities::getContainer()->debugMessage($nD, "decrypt");
$this->nameId = Utilities::parseNameId($nD);
$this->encryptedNameId = NULL;
}
public function decryptAttributes(XMLSecurityKey $tg, array $iP = array())
{
if (!($this->encryptedAttribute === NULL)) {
goto vN;
}
return;
vN:
$gu = TRUE;
$pP = $this->encryptedAttribute;
foreach ($pP as $WH) {
$rv = Utilities::decryptElement($WH->getElementsByTagName("EncryptedData")->item(0), $tg, $iP);
if ($rv->hasAttribute("Name")) {
goto HZ;
}
throw new Exception("Missing name on <saml:Attribute> element.");
HZ:
$xy = $rv->getAttribute("Name");
if ($rv->hasAttribute("NameFormat")) {
goto RX;
}
$ax = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified";
goto CV;
RX:
$ax = $rv->getAttribute("NameFormat");
CV:
if ($gu) {
goto Ac;
}
if (!($this->nameFormat !== $ax)) {
goto v2;
}
$this->nameFormat = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified";
v2:
goto vz;
Ac:
$this->nameFormat = $ax;
$gu = FALSE;
vz:
if (array_key_exists($xy, $this->attributes)) {
goto rO;
}
$this->attributes[$xy] = array();
rO:
$WT = Utilities::xpQuery($rv, "./saml_assertion:AttributeValue");
foreach ($WT as $fg) {
$this->attributes[$xy][] = trim($fg->textContent);
us:
}
XP:
Y_:
}
t5:
}
public function getNotBefore()
{
return $this->notBefore;
}
public function setNotBefore($tO)
{
$this->notBefore = $tO;
}
public function getNotOnOrAfter()
{
return $this->notOnOrAfter;
}
public function setNotOnOrAfter($fh)
{
$this->notOnOrAfter = $fh;
}
public function setEncryptedAttributes($I0)
{
$this->requiredEncAttributes = $I0;
}
public function getValidAudiences()
{
return $this->validAudiences;
}
public function setValidAudiences(array $Zn = NULL)
{
$this->validAudiences = $Zn;
}
public function getAuthnInstant()
{
return $this->authnInstant;
}
public function setAuthnInstant($wJ)
{
$this->authnInstant = $wJ;
}
public function getSessionNotOnOrAfter()
{
return $this->sessionNotOnOrAfter;
}
public function setSessionNotOnOrAfter($FU)
{
$this->sessionNotOnOrAfter = $FU;
}
public function getSessionIndex()
{
return $this->sessionIndex;
}
public function setSessionIndex($nU)
{
$this->sessionIndex = $nU;
}
public function getAuthnContext()
{
if (empty($this->authnContextClassRef)) {
goto Ro;
}
return $this->authnContextClassRef;
Ro:
if (empty($this->authnContextDeclRef)) {
goto dT;
}
return $this->authnContextDeclRef;
dT:
return NULL;
}
public function setAuthnContext($xQ)
{
$this->setAuthnContextClassRef($xQ);
}
public function getAuthnContextClassRef()
{
return $this->authnContextClassRef;
}
public function setAuthnContextClassRef($Up)
{
$this->authnContextClassRef = $Up;
}
public function setAuthnContextDecl(SAML2_XML_Chunk $i2)
{
if (empty($this->authnContextDeclRef)) {
goto tD;
}
throw new Exception("AuthnContextDeclRef is already registered! May only have either a Decl or a DeclRef, not both!");
tD:
$this->authnContextDecl = $i2;
}
public function getAuthnContextDecl()
{
return $this->authnContextDecl;
}
public function setAuthnContextDeclRef($ks)
{
if (empty($this->authnContextDecl)) {
goto Dv;
}
throw new Exception("AuthnContextDecl is already registered! May only have either a Decl or a DeclRef, not both!");
Dv:
$this->authnContextDeclRef = $ks;
}
public function getAuthnContextDeclRef()
{
return $this->authnContextDeclRef;
}
public function getAuthenticatingAuthority()
{
return $this->AuthenticatingAuthority;
}
public function setAuthenticatingAuthority($sK)
{
$this->AuthenticatingAuthority = $sK;
}
public function getAttributes()
{
return $this->attributes;
}
public function setAttributes(array $pP)
{
$this->attributes = $pP;
}
public function getAttributeNameFormat()
{
return $this->nameFormat;
}
public function setAttributeNameFormat($ax)
{
$this->nameFormat = $ax;
}
public function getSubjectConfirmation()
{
return $this->SubjectConfirmation;
}
public function setSubjectConfirmation(array $pg)
{
$this->SubjectConfirmation = $pg;
}
public function getSignatureKey()
{
return $this->signatureKey;
}
public function getSignatureData()
{
return $this->signatureData;
}
public function setSignatureKey(XMLsecurityKey $uK = NULL)
{
$this->signatureKey = $uK;
}
public function getEncryptionKey()
{
return $this->encryptionKey;
}
public function setEncryptionKey(XMLSecurityKey $YU = NULL)
{
$this->encryptionKey = $YU;
}
public function setCertificates(array $au)
{
$this->certificates = $au;
}
public function getCertificates()
{
return $this->certificates;
}
public function getWasSignedAtConstruction()
{
return $this->wasSignedAtConstruction;
}
public function toXML(DOMNode $SR = NULL)
{
if ($SR === NULL) {
goto oE;
}
$D1 = $SR->ownerDocument;
goto UM;
oE:
$D1 = new DOMDocument();
$SR = $D1;
UM:
$n2 = $D1->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:" . "Assertion");
$SR->appendChild($n2);
$n2->setAttributeNS("urn:oasis:names:tc:SAML:2.0:protocol", "samlp:tmp", "tmp");
$n2->removeAttributeNS("urn:oasis:names:tc:SAML:2.0:protocol", "tmp");
$n2->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:tmp", "tmp");
$n2->removeAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "tmp");
$n2->setAttributeNS("http://www.w3.org/2001/XMLSchema", "xs:tmp", "tmp");
$n2->removeAttributeNS("http://www.w3.org/2001/XMLSchema", "tmp");
$n2->setAttribute("ID", $this->id);
$n2->setAttribute("Version", "2.0");
$n2->setAttribute("IssueInstant", gmdate("Y-m-d\TH:i:s\Z", $this->issueInstant));
$wf = Utilities::addString($n2, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:Issuer", $this->issuer);
$this->addSubject($n2);
$this->addConditions($n2);
$this->addAuthnStatement($n2);
if ($this->requiredEncAttributes == FALSE) {
goto Tv;
}
$this->addEncryptedAttributeStatement($n2);
goto kY;
Tv:
$this->addAttributeStatement($n2);
kY:
if (!($this->signatureKey !== NULL)) {
goto gM;
}
Utilities::insertSignature($this->signatureKey, $this->certificates, $n2, $wf->nextSibling);
gM:
return $n2;
}
private function addSubject(DOMElement $n2)
{
if (!($this->nameId === NULL && $this->encryptedNameId === NULL)) {
goto mF;
}
return;
mF:
$I9 = $n2->ownerDocument->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Subject");
$n2->appendChild($I9);
if ($this->encryptedNameId === NULL) {
goto m8;
}
$qJ = $I9->ownerDocument->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:" . "EncryptedID");
$I9->appendChild($qJ);
$qJ->appendChild($I9->ownerDocument->importNode($this->encryptedNameId, TRUE));
goto xK;
m8:
Utilities::addNameId($I9, $this->nameId);
xK:
foreach ($this->SubjectConfirmation as $Qq) {
$Qq->toXML($I9);
Ak:
}
Oj:
}
private function addConditions(DOMElement $n2)
{
$D1 = $n2->ownerDocument;
$q7 = $D1->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Conditions");
$n2->appendChild($q7);
if (!($this->notBefore !== NULL)) {
goto Vo;
}
$q7->setAttribute("NotBefore", gmdate("Y-m-d\TH:i:s\Z", $this->notBefore));
Vo:
if (!($this->notOnOrAfter !== NULL)) {
goto uG;
}
$q7->setAttribute("NotOnOrAfter", gmdate("Y-m-d\TH:i:s\Z", $this->notOnOrAfter));
uG:
if (!($this->validAudiences !== NULL)) {
goto ip;
}
$yr = $D1->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AudienceRestriction");
$q7->appendChild($yr);
Utilities::addStrings($yr, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:Audience", FALSE, $this->validAudiences);
ip:
}
private function addAuthnStatement(DOMElement $n2)
{
if (!($this->authnInstant === NULL || $this->authnContextClassRef === NULL && $this->authnContextDecl === NULL && $this->authnContextDeclRef === NULL)) {
goto kq;
}
return;
kq:
$D1 = $n2->ownerDocument;
$P0 = $D1->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnStatement");
$n2->appendChild($P0);
$P0->setAttribute("AuthnInstant", gmdate("Y-m-d\TH:i:s\Z", $this->authnInstant));
if (!($this->sessionNotOnOrAfter !== NULL)) {
goto nA;
}
$P0->setAttribute("SessionNotOnOrAfter", gmdate("Y-m-d\TH:i:s\Z", $this->sessionNotOnOrAfter));
nA:
if (!($this->sessionIndex !== NULL)) {
goto j1;
}
$P0->setAttribute("SessionIndex", $this->sessionIndex);
j1:
$Iu = $D1->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContext");
$P0->appendChild($Iu);
if (empty($this->authnContextClassRef)) {
goto xB;
}
Utilities::addString($Iu, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContextClassRef", $this->authnContextClassRef);
xB:
if (empty($this->authnContextDecl)) {
goto v3;
}
$this->authnContextDecl->toXML($Iu);
v3:
if (empty($this->authnContextDeclRef)) {
goto Z7;
}
Utilities::addString($Iu, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContextDeclRef", $this->authnContextDeclRef);
Z7:
Utilities::addStrings($Iu, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthenticatingAuthority", FALSE, $this->AuthenticatingAuthority);
}
private function addAttributeStatement(DOMElement $n2)
{
if (!empty($this->attributes)) {
goto tz;
}
return;
tz:
$D1 = $n2->ownerDocument;
$HQ = $D1->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeStatement");
$n2->appendChild($HQ);
foreach ($this->attributes as $xy => $WT) {
$rv = $D1->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Attribute");
$HQ->appendChild($rv);
$rv->setAttribute("Name", $xy);
if (!($this->nameFormat !== "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified")) {
goto b2;
}
$rv->setAttribute("NameFormat", $this->nameFormat);
b2:
foreach ($WT as $fg) {
if (is_string($fg)) {
goto Sy;
}
if (is_int($fg)) {
goto KF;
}
$Ws = NULL;
goto Zz;
Sy:
$Ws = "xs:string";
goto Zz;
KF:
$Ws = "xs:integer";
Zz:
$R7 = $D1->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeValue");
$rv->appendChild($R7);
if (!($Ws !== NULL)) {
goto ny;
}
$R7->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:type", $Ws);
ny:
if (!is_null($fg)) {
goto tU;
}
$R7->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:nil", "true");
tU:
if ($fg instanceof DOMNodeList) {
goto GY;
}
$R7->appendChild($D1->createTextNode($fg));
goto Ty;
GY:
$lt = 0;
Gt:
if (!($lt < $fg->length)) {
goto ZO;
}
$pU = $D1->importNode($fg->item($lt), TRUE);
$R7->appendChild($pU);
GW:
$lt++;
goto Gt;
ZO:
Ty:
pt:
}
aW:
U5:
}
lG:
}
private function addEncryptedAttributeStatement(DOMElement $n2)
{
if (!($this->requiredEncAttributes == FALSE)) {
goto Al;
}
return;
Al:
$D1 = $n2->ownerDocument;
$HQ = $D1->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeStatement");
$n2->appendChild($HQ);
foreach ($this->attributes as $xy => $WT) {
$b_ = new DOMDocument();
$rv = $b_->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Attribute");
$rv->setAttribute("Name", $xy);
$b_->appendChild($rv);
if (!($this->nameFormat !== "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified")) {
goto hd;
}
$rv->setAttribute("NameFormat", $this->nameFormat);
hd:
foreach ($WT as $fg) {
if (is_string($fg)) {
goto uI;
}
if (is_int($fg)) {
goto OH;
}
$Ws = NULL;
goto Zq;
uI:
$Ws = "xs:string";
goto Zq;
OH:
$Ws = "xs:integer";
Zq:
$R7 = $b_->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeValue");
$rv->appendChild($R7);
if (!($Ws !== NULL)) {
goto v4;
}
$R7->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:type", $Ws);
v4:
if ($fg instanceof DOMNodeList) {
goto Y0;
}
$R7->appendChild($b_->createTextNode($fg));
goto d1;
Y0:
$lt = 0;
EV:
if (!($lt < $fg->length)) {
goto oD;
}
$pU = $b_->importNode($fg->item($lt), TRUE);
$R7->appendChild($pU);
mi:
$lt++;
goto EV;
oD:
d1:
jl:
}
jw:
$Sw = new XMLSecEnc();
$Sw->setNode($b_->documentElement);
$Sw->type = "http://www.w3.org/2001/04/xmlenc#Element";
$QX = new XMLSecurityKey(XMLSecurityKey::AES256_CBC);
$QX->generateSessionKey();
$Sw->encryptKey($this->encryptionKey, $QX);
$tL = $Sw->encryptNode($QX);
$Bd = $D1->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:EncryptedAttribute");
$HQ->appendChild($Bd);
$YW = $D1->importNode($tL, TRUE);
$Bd->appendChild($YW);
x6:
}
dc:
}
}
?>
Did this file decode correctly?
Original Code
<?php
include_once "\125\x74\x69\154\x69\x74\x69\145\x73\x2e\x70\150\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 $A3 = NULL)
{
$this->id = Utilities::generateId();
$this->issueInstant = Utilities::generateTimestamp();
$this->issuer = '';
$this->authnInstant = Utilities::generateTimestamp();
$this->attributes = array();
$this->nameFormat = "\165\162\x6e\72\157\141\x73\151\x73\x3a\x6e\141\155\x65\163\72\164\143\72\123\x41\x4d\x4c\x3a\61\56\61\72\x6e\141\155\145\x69\144\x2d\x66\x6f\162\155\x61\164\x3a\x75\x6e\163\x70\x65\143\x69\x66\151\x65\144";
$this->certificates = array();
$this->AuthenticatingAuthority = array();
$this->SubjectConfirmation = array();
if (!($A3 === NULL)) {
goto j3;
}
return;
j3:
if (!($A3->localName === "\x45\x6e\143\x72\171\160\x74\x65\x64\x41\163\163\145\x72\x74\x69\157\156")) {
goto fc;
}
$E2 = Utilities::xpQuery($A3, "\56\x2f\x2f\52\133\x6c\x6f\x63\141\154\55\x6e\141\155\145\50\51\75\42\x45\x6e\143\162\171\x70\164\x65\x64\x44\141\164\x61\x22\x5d");
$hd = Utilities::xpQuery($A3, "\56\57\x2f\x2a\x5b\154\x6f\x63\141\154\55\156\141\155\x65\x28\51\x3d\42\x45\x6e\x63\x72\171\x70\x74\x65\144\x44\x61\x74\141\42\x5d\57\x2a\x5b\x6c\x6f\143\x61\154\55\x6e\141\155\145\50\51\x3d\x22\x4b\x65\171\x49\156\146\157\x22\135");
$hd = Utilities::xpQuery($A3, "\56\x2f\57\52\133\154\157\143\141\x6c\55\x6e\x61\155\x65\50\51\75\42\x45\x6e\x63\162\x79\160\x74\145\144\x44\141\164\141\42\135\x2f\52\x5b\x6c\157\x63\141\x6c\55\156\141\x6d\x65\x28\51\75\x22\113\x65\x79\111\x6e\x66\x6f\42\135\x2f\52\x5b\x6c\x6f\143\141\x6c\55\156\x61\x6d\145\x28\x29\75\x22\105\156\x63\162\171\x70\x74\145\x64\113\145\x79\x22\135");
$Vw = '';
if (empty($hd)) {
goto qh;
}
$Vw = "\x68\164\x74\160\x3a\57\57\x77\x77\x77\x2e\167\63\56\x6f\x72\147\57\x32\x30\x30\x31\x2f\60\x34\57\170\155\x6c\x65\156\143\x23\162\163\x61\x2d\x6f\x61\x65\160\x2d\155\x67\146\61\x70";
goto kJ;
qh:
$hd = Utilities::xpQuery($A3, "\x2e\x2f\x2f\x2a\133\154\x6f\143\141\x6c\55\156\x61\x6d\145\50\x29\75\42\105\156\x63\162\171\x70\164\x65\144\x44\x61\164\x61\x22\135\57\x2a\133\x6c\157\x63\x61\154\55\156\x61\x6d\145\50\x29\x3d\42\x4b\x65\x79\111\156\146\x6f\x22\x5d\57\x2a\133\154\x6f\143\x61\x6c\x2d\x6e\x61\155\145\x28\x29\75\x22\105\x6e\x63\162\x79\160\164\x65\x64\113\x65\171\x22\x5d");
$Vw = $hd[0]->getAttribute("\101\x6c\147\157\162\151\x74\150\155");
kJ:
$eY = Utilities::getEncryptionAlgorithm($Vw);
if (count($E2) === 0) {
goto A2;
}
if (count($E2) > 1) {
goto vy;
}
goto CO;
A2:
throw new Exception("\115\x69\x73\x73\151\156\x67\40\x65\156\143\162\x79\160\164\x65\x64\40\x64\141\164\x61\40\x69\x6e\x20\x3c\x73\141\x6d\x6c\72\105\x6e\x63\162\x79\160\x74\x65\x64\x41\x73\x73\x65\x72\164\x69\157\x6e\76\x2e");
goto CO;
vy:
throw new Exception("\115\x6f\162\x65\40\x74\150\141\156\x20\x6f\156\x65\40\x65\156\143\162\171\160\164\145\144\40\144\141\x74\x61\x20\145\x6c\x65\155\145\156\x74\x20\x69\156\x20\x3c\x73\x61\155\154\72\x45\x6e\x63\x72\x79\x70\164\145\x64\x41\x73\163\x65\162\x74\151\x6f\x6e\x3e\56");
CO:
$t9 = Utilities::getPrivateKey();
$tg = new XMLSecurityKey($eY, array("\164\171\160\145" => "\x70\162\151\166\x61\x74\x65"));
$tg->loadKey($t9, FALSE);
$iP = array();
try {
$A3 = Utilities::decryptElement($E2[0], $tg, $iP);
} catch (Exception $vc) {
echo "\103\x61\165\147\x68\164\x20\145\x78\x63\x65\x70\164\151\x6f\x6e\72\x20", $vc->getMessage(), "\xa";
}
fc:
if ($A3->hasAttribute("\x49\104")) {
goto HK;
}
throw new Exception("\115\x69\163\163\x69\x6e\x67\x20\111\104\40\x61\x74\x74\x72\151\142\165\x74\x65\40\157\x6e\x20\123\101\115\x4c\x20\x61\163\163\x65\x72\x74\151\157\x6e\x2e");
HK:
$this->id = $A3->getAttribute("\x49\104");
if (!($A3->getAttribute("\x56\x65\162\163\151\x6f\x6e") !== "\x32\x2e\x30")) {
goto N8;
}
throw new Exception("\x55\156\163\165\x70\x70\157\x72\164\145\144\x20\x76\145\162\x73\x69\x6f\156\72\40" . $A3->getAttribute("\x56\x65\x72\x73\x69\157\156"));
N8:
$this->issueInstant = Utilities::xsDateTimeToTimestamp($A3->getAttribute("\111\163\163\165\145\x49\156\x73\x74\x61\156\164"));
$wf = Utilities::xpQuery($A3, "\x2e\x2f\x73\x61\x6d\154\137\x61\x73\x73\x65\162\x74\x69\x6f\156\72\x49\x73\163\165\145\x72");
if (!empty($wf)) {
goto md;
}
throw new Exception("\x4d\151\x73\163\x69\x6e\147\x20\x3c\x73\x61\x6d\154\72\111\163\163\x75\x65\x72\x3e\40\x69\156\x20\x61\163\x73\145\162\x74\151\157\156\56");
md:
$this->issuer = trim($wf[0]->textContent);
$this->parseConditions($A3);
$this->parseAuthnStatement($A3);
$this->parseAttributes($A3);
$this->parseEncryptedAttributes($A3);
$this->parseSignature($A3);
$this->parseSubject($A3);
}
private function parseSubject(DOMElement $A3)
{
$I9 = Utilities::xpQuery($A3, "\56\x2f\x73\141\x6d\154\137\141\x73\163\x65\162\x74\x69\x6f\156\72\x53\165\142\152\145\143\x74");
if (empty($I9)) {
goto yS;
}
if (count($I9) > 1) {
goto DM;
}
goto Wt;
yS:
return;
goto Wt;
DM:
throw new Exception("\x4d\157\162\145\40\164\x68\x61\156\x20\x6f\156\x65\40\x3c\163\141\x6d\154\72\x53\165\142\152\145\x63\164\76\x20\x69\x6e\40\x3c\x73\141\x6d\x6c\x3a\101\x73\163\x65\162\x74\151\157\x6e\x3e\x2e");
Wt:
$I9 = $I9[0];
$nD = Utilities::xpQuery($I9, "\56\57\x73\x61\x6d\x6c\x5f\x61\x73\163\145\x72\x74\151\x6f\x6e\72\116\x61\155\x65\111\104\40\174\x20\x2e\x2f\x73\x61\x6d\154\x5f\141\163\x73\x65\x72\x74\x69\x6f\156\x3a\105\156\x63\x72\x79\160\x74\x65\x64\111\x44\x2f\x78\x65\156\x63\72\x45\156\x63\162\x79\x70\x74\x65\144\104\x61\x74\x61");
if (empty($nD)) {
goto VB;
}
if (count($nD) > 1) {
goto id;
}
goto TE;
VB:
throw new Exception("\115\x69\163\x73\x69\x6e\147\40\74\163\141\155\154\x3a\x4e\x61\155\145\111\104\x3e\x20\157\x72\x20\x3c\163\x61\155\154\x3a\x45\156\x63\162\x79\x70\164\145\x64\x49\x44\76\x20\151\x6e\x20\x3c\163\141\155\x6c\x3a\x53\165\142\x6a\x65\x63\164\x3e\56");
goto TE;
id:
throw new Exception("\x4d\x6f\162\145\40\164\150\x61\156\x20\157\x6e\x65\40\74\163\141\155\x6c\x3a\x4e\x61\155\x65\111\104\76\40\x6f\162\x20\x3c\x73\x61\x6d\154\72\x45\x6e\x63\162\x79\160\x74\x65\x64\104\x3e\x20\151\156\x20\x3c\163\141\x6d\x6c\x3a\x53\165\142\152\x65\x63\x74\76\x2e");
TE:
$nD = $nD[0];
if ($nD->localName === "\105\156\143\x72\x79\x70\164\x65\x64\104\141\x74\141") {
goto FQ;
}
$this->nameId = Utilities::parseNameId($nD);
goto Pq;
FQ:
$this->encryptedNameId = $nD;
Pq:
}
private function parseConditions(DOMElement $A3)
{
$q7 = Utilities::xpQuery($A3, "\x2e\x2f\x73\141\155\154\137\141\163\x73\145\x72\x74\151\x6f\156\72\x43\157\156\144\151\x74\151\157\156\x73");
if (empty($q7)) {
goto We;
}
if (count($q7) > 1) {
goto Gu;
}
goto ZN;
We:
return;
goto ZN;
Gu:
throw new Exception("\115\x6f\x72\145\40\164\x68\141\156\40\157\x6e\145\40\x3c\163\141\x6d\x6c\x3a\103\x6f\x6e\x64\x69\164\151\x6f\156\x73\x3e\x20\151\x6e\x20\x3c\163\x61\155\154\x3a\101\163\163\x65\162\164\151\x6f\x6e\76\x2e");
ZN:
$q7 = $q7[0];
if (!$q7->hasAttribute("\x4e\x6f\x74\102\145\146\x6f\162\145")) {
goto Iu;
}
$tO = Utilities::xsDateTimeToTimestamp($q7->getAttribute("\x4e\x6f\164\102\x65\x66\157\x72\x65"));
if (!($this->notBefore === NULL || $this->notBefore < $tO)) {
goto wu;
}
$this->notBefore = $tO;
wu:
Iu:
if (!$q7->hasAttribute("\116\x6f\164\117\x6e\117\162\x41\x66\x74\x65\x72")) {
goto Rd;
}
$fh = Utilities::xsDateTimeToTimestamp($q7->getAttribute("\116\157\x74\x4f\156\117\162\101\146\164\x65\x72"));
if (!($this->notOnOrAfter === NULL || $this->notOnOrAfter > $fh)) {
goto go;
}
$this->notOnOrAfter = $fh;
go:
Rd:
$pU = $q7->firstChild;
kX:
if (!($pU !== NULL)) {
goto pK;
}
if (!$pU instanceof DOMText) {
goto T0;
}
goto OL;
T0:
if (!($pU->namespaceURI !== "\x75\162\x6e\72\157\x61\163\151\163\x3a\x6e\141\155\145\x73\x3a\x74\143\x3a\x53\x41\x4d\114\x3a\62\x2e\x30\x3a\x61\163\163\145\162\164\151\x6f\x6e")) {
goto qD;
}
throw new Exception("\125\156\153\156\x6f\x77\156\40\x6e\141\x6d\x65\x73\160\x61\143\x65\x20\x6f\146\x20\x63\x6f\x6e\x64\151\164\x69\x6f\x6e\x3a\40" . var_export($pU->namespaceURI, TRUE));
qD:
switch ($pU->localName) {
case "\x41\165\144\151\145\x6e\x63\145\122\145\163\x74\162\151\143\164\151\x6f\156":
$lb = Utilities::extractStrings($pU, "\165\162\x6e\x3a\157\141\163\x69\x73\72\156\141\x6d\145\x73\72\164\x63\x3a\123\x41\x4d\x4c\x3a\x32\56\60\x3a\141\163\x73\145\162\164\151\157\156", "\x41\165\144\x69\145\x6e\143\x65");
if ($this->validAudiences === NULL) {
goto PA;
}
$this->validAudiences = array_intersect($this->validAudiences, $lb);
goto SI;
PA:
$this->validAudiences = $lb;
SI:
goto D_;
case "\x4f\156\x65\124\151\x6d\x65\125\163\145":
goto D_;
case "\120\162\x6f\x78\x79\x52\x65\x73\x74\x72\x69\143\164\151\157\156":
goto D_;
default:
throw new Exception("\125\156\153\x6e\x6f\x77\156\x20\x63\x6f\156\x64\x69\164\151\157\156\72\40" . var_export($pU->localName, TRUE));
}
dp:
D_:
OL:
$pU = $pU->nextSibling;
goto kX;
pK:
}
private function parseAuthnStatement(DOMElement $A3)
{
$Lt = Utilities::xpQuery($A3, "\x2e\x2f\163\141\x6d\154\x5f\x61\163\x73\x65\x72\x74\151\x6f\156\72\x41\x75\x74\x68\156\123\164\141\164\145\x6d\x65\156\164");
if (empty($Lt)) {
goto Yb;
}
if (count($Lt) > 1) {
goto f_;
}
goto qg;
Yb:
$this->authnInstant = NULL;
return;
goto qg;
f_:
throw new Exception("\115\x6f\x72\x65\x20\164\150\x61\x74\x20\x6f\x6e\x65\x20\74\x73\141\x6d\154\x3a\x41\x75\x74\x68\x6e\123\164\x61\x74\x65\155\x65\156\x74\76\40\151\x6e\40\x3c\x73\x61\155\x6c\72\x41\x73\163\145\162\164\x69\157\156\76\40\156\157\x74\40\x73\x75\160\x70\x6f\x72\164\145\x64\56");
qg:
$nG = $Lt[0];
if ($nG->hasAttribute("\x41\x75\164\150\x6e\x49\156\163\x74\x61\x6e\x74")) {
goto UO;
}
throw new Exception("\115\x69\163\163\x69\x6e\x67\x20\162\x65\x71\165\x69\x72\145\144\x20\101\x75\x74\x68\x6e\x49\156\x73\x74\141\x6e\x74\x20\141\x74\x74\x72\x69\x62\x75\x74\145\x20\157\x6e\x20\74\163\141\x6d\154\x3a\101\x75\164\x68\156\123\164\141\164\x65\155\145\156\x74\x3e\x2e");
UO:
$this->authnInstant = Utilities::xsDateTimeToTimestamp($nG->getAttribute("\x41\165\164\x68\x6e\x49\156\163\x74\x61\x6e\164"));
if (!$nG->hasAttribute("\x53\x65\x73\163\151\x6f\x6e\x4e\x6f\x74\x4f\156\x4f\162\101\146\x74\x65\x72")) {
goto DH;
}
$this->sessionNotOnOrAfter = Utilities::xsDateTimeToTimestamp($nG->getAttribute("\x53\x65\163\x73\151\x6f\x6e\x4e\x6f\x74\117\156\117\162\x41\x66\164\145\162"));
DH:
if (!$nG->hasAttribute("\123\145\x73\163\x69\x6f\x6e\111\156\144\x65\170")) {
goto xq;
}
$this->sessionIndex = $nG->getAttribute("\x53\145\163\x73\x69\157\x6e\111\156\x64\x65\x78");
xq:
$this->parseAuthnContext($nG);
}
private function parseAuthnContext(DOMElement $P0)
{
$O_ = Utilities::xpQuery($P0, "\x2e\x2f\163\141\x6d\154\137\x61\x73\x73\145\162\164\151\x6f\156\x3a\x41\x75\164\x68\x6e\103\157\x6e\164\x65\170\164");
if (count($O_) > 1) {
goto UA;
}
if (empty($O_)) {
goto FD;
}
goto hG;
UA:
throw new Exception("\115\157\162\x65\x20\x74\150\x61\x6e\40\157\x6e\x65\40\x3c\163\x61\155\x6c\72\x41\x75\164\150\156\x43\157\x6e\x74\145\170\164\76\40\151\156\x20\74\x73\x61\x6d\154\72\x41\165\164\150\x6e\123\164\x61\164\145\155\x65\156\x74\x3e\56");
goto hG;
FD:
throw new Exception("\x4d\151\x73\163\151\x6e\x67\x20\x72\145\x71\165\x69\x72\145\144\x20\74\163\141\x6d\x6c\72\x41\x75\164\x68\x6e\103\157\x6e\164\145\170\164\76\x20\x69\156\x20\x3c\x73\x61\x6d\154\x3a\x41\x75\164\150\156\123\164\141\x74\x65\155\145\x6e\x74\76\x2e");
hG:
$Iu = $O_[0];
$i1 = Utilities::xpQuery($Iu, "\56\x2f\x73\141\155\x6c\137\x61\163\x73\x65\162\164\x69\x6f\x6e\72\x41\x75\164\150\x6e\103\157\156\x74\x65\x78\164\104\145\143\x6c\x52\145\146");
if (count($i1) > 1) {
goto y5;
}
if (count($i1) === 1) {
goto Pg;
}
goto Z8;
y5:
throw new Exception("\115\157\162\145\40\164\150\141\x6e\40\157\x6e\145\x20\74\163\x61\155\x6c\x3a\101\165\x74\150\x6e\103\157\156\x74\145\x78\164\104\x65\143\154\122\x65\146\76\40\x66\157\x75\x6e\144\77");
goto Z8;
Pg:
$this->setAuthnContextDeclRef(trim($i1[0]->textContent));
Z8:
$lf = Utilities::xpQuery($Iu, "\56\57\x73\141\x6d\x6c\137\141\163\163\x65\162\x74\x69\x6f\156\72\101\165\164\150\x6e\103\x6f\x6e\164\145\x78\x74\104\145\x63\154");
if (count($lf) > 1) {
goto nR;
}
if (count($lf) === 1) {
goto AM;
}
goto rh;
nR:
throw new Exception("\115\157\162\x65\40\164\150\x61\156\40\x6f\x6e\x65\x20\74\x73\141\x6d\154\72\x41\x75\164\150\x6e\x43\157\x6e\x74\x65\170\164\x44\x65\143\x6c\x3e\x20\x66\x6f\165\156\144\77");
goto rh;
AM:
$this->setAuthnContextDecl(new SAML2_XML_Chunk($lf[0]));
rh:
$SI = Utilities::xpQuery($Iu, "\x2e\57\x73\141\155\154\137\141\x73\163\145\162\164\151\x6f\x6e\x3a\x41\165\164\x68\x6e\103\x6f\x6e\164\x65\170\x74\x43\x6c\x61\163\x73\x52\145\146");
if (count($SI) > 1) {
goto q9;
}
if (count($SI) === 1) {
goto gs;
}
goto s3;
q9:
throw new Exception("\x4d\157\x72\145\40\x74\150\x61\x6e\x20\157\156\145\40\74\x73\141\155\154\72\x41\x75\x74\150\156\x43\x6f\156\164\x65\170\x74\x43\x6c\141\163\163\122\x65\x66\x3e\40\x69\x6e\x20\74\x73\x61\155\154\x3a\x41\165\164\x68\156\103\157\156\164\x65\x78\x74\76\56");
goto s3;
gs:
$this->setAuthnContextClassRef(trim($SI[0]->textContent));
s3:
if (!(empty($this->authnContextClassRef) && empty($this->authnContextDecl) && empty($this->authnContextDeclRef))) {
goto bv;
}
throw new Exception("\115\x69\163\163\151\156\147\x20\x65\151\164\x68\145\162\x20\x3c\163\141\x6d\x6c\x3a\x41\165\x74\x68\x6e\x43\x6f\x6e\x74\145\170\164\103\x6c\141\163\163\x52\x65\146\76\x20\x6f\162\40\x3c\x73\x61\155\154\72\101\x75\x74\150\156\x43\x6f\156\x74\x65\x78\x74\104\x65\143\154\x52\145\x66\x3e\40\x6f\162\x20\x3c\163\x61\155\154\72\101\165\x74\x68\x6e\x43\x6f\x6e\x74\x65\170\x74\104\145\x63\x6c\76");
bv:
$this->AuthenticatingAuthority = Utilities::extractStrings($Iu, "\165\x72\x6e\x3a\x6f\x61\x73\x69\163\x3a\156\x61\155\145\163\x3a\x74\x63\x3a\123\x41\115\114\72\62\x2e\60\x3a\x61\163\163\145\162\x74\151\157\156", "\x41\165\164\x68\145\x6e\164\x69\143\x61\164\x69\156\147\101\165\x74\x68\x6f\x72\151\164\x79");
}
private function parseAttributes(DOMElement $A3)
{
$gu = TRUE;
$pP = Utilities::xpQuery($A3, "\x2e\57\x73\141\x6d\154\x5f\141\163\163\145\162\x74\x69\x6f\156\72\x41\164\x74\x72\151\142\x75\164\x65\x53\164\141\x74\x65\155\x65\x6e\164\x2f\x73\x61\x6d\154\137\141\163\x73\x65\x72\164\x69\x6f\156\72\101\x74\164\162\x69\x62\x75\164\x65");
foreach ($pP as $rv) {
if ($rv->hasAttribute("\116\x61\x6d\x65")) {
goto MD;
}
throw new Exception("\x4d\151\x73\x73\x69\156\x67\x20\x6e\141\155\x65\40\x6f\156\40\x3c\x73\141\155\154\72\x41\164\x74\162\x69\x62\165\x74\x65\x3e\x20\145\x6c\145\155\145\156\x74\56");
MD:
$xy = $rv->getAttribute("\x4e\141\155\x65");
if ($rv->hasAttribute("\x4e\141\x6d\x65\106\x6f\x72\x6d\141\164")) {
goto iT;
}
$ax = "\x75\x72\156\x3a\157\x61\163\151\x73\x3a\x6e\141\155\x65\163\72\164\x63\x3a\123\x41\x4d\x4c\72\61\56\61\72\156\141\x6d\x65\x69\144\x2d\146\157\162\155\141\x74\x3a\165\156\163\160\x65\x63\151\146\x69\145\x64";
goto Ko;
iT:
$ax = $rv->getAttribute("\x4e\141\155\x65\106\x6f\162\155\x61\x74");
Ko:
if ($gu) {
goto p0;
}
if (!($this->nameFormat !== $ax)) {
goto aP;
}
$this->nameFormat = "\x75\162\x6e\72\x6f\x61\x73\151\163\x3a\x6e\x61\x6d\145\163\72\164\143\72\123\x41\115\114\x3a\x31\56\x31\72\x6e\x61\155\145\x69\x64\55\146\157\x72\155\141\164\x3a\x75\156\163\x70\145\x63\x69\146\x69\145\144";
aP:
goto ck;
p0:
$this->nameFormat = $ax;
$gu = FALSE;
ck:
if (array_key_exists($xy, $this->attributes)) {
goto g9;
}
$this->attributes[$xy] = array();
g9:
$WT = Utilities::xpQuery($rv, "\56\57\x73\x61\155\x6c\x5f\141\x73\163\145\x72\164\151\x6f\156\72\x41\164\x74\x72\x69\x62\165\164\x65\126\x61\154\x75\x65");
foreach ($WT as $fg) {
$this->attributes[$xy][] = trim($fg->textContent);
J1:
}
FG:
tv:
}
rq:
}
private function parseEncryptedAttributes(DOMElement $A3)
{
$this->encryptedAttribute = Utilities::xpQuery($A3, "\56\57\x73\141\x6d\x6c\x5f\x61\x73\163\x65\x72\164\151\157\156\72\x41\x74\x74\x72\151\x62\x75\x74\145\x53\164\x61\164\x65\x6d\x65\x6e\x74\x2f\x73\x61\x6d\x6c\137\x61\163\163\x65\162\164\151\x6f\156\72\x45\x6e\143\162\171\x70\x74\145\x64\x41\x74\x74\x72\x69\x62\x75\x74\145");
}
private function parseSignature(DOMElement $A3)
{
$kT = Utilities::validateElement($A3);
if (!($kT !== FALSE)) {
goto LB;
}
$this->wasSignedAtConstruction = TRUE;
$this->certificates = $kT["\103\145\162\x74\151\x66\151\143\x61\164\145\x73"];
$this->signatureData = $kT;
LB:
}
public function validate(XMLSecurityKey $tg)
{
if (!($this->signatureData === NULL)) {
goto M1;
}
return FALSE;
M1:
Utilities::validateSignature($this->signatureData, $tg);
return TRUE;
}
public function getId()
{
return $this->id;
}
public function setId($lS)
{
$this->id = $lS;
}
public function getIssueInstant()
{
return $this->issueInstant;
}
public function setIssueInstant($I8)
{
$this->issueInstant = $I8;
}
public function getIssuer()
{
return $this->issuer;
}
public function setIssuer($wf)
{
$this->issuer = $wf;
}
public function getNameId()
{
if (!($this->encryptedNameId !== NULL)) {
goto ID;
}
throw new Exception("\101\x74\164\145\x6d\160\164\x65\x64\40\164\x6f\40\162\x65\164\x72\x69\x65\166\145\x20\x65\x6e\143\162\x79\160\x74\x65\144\x20\116\141\x6d\145\111\x44\x20\x77\x69\164\150\157\x75\164\x20\x64\145\143\x72\171\160\x74\x69\156\147\x20\x69\x74\40\146\x69\x72\x73\x74\x2e");
ID:
return $this->nameId;
}
public function setNameId($nD)
{
$this->nameId = $nD;
}
public function isNameIdEncrypted()
{
if (!($this->encryptedNameId !== NULL)) {
goto iN;
}
return TRUE;
iN:
return FALSE;
}
public function encryptNameId(XMLSecurityKey $tg)
{
$K1 = new DOMDocument();
$n2 = $K1->createElement("\162\x6f\157\x74");
$K1->appendChild($n2);
Utilities::addNameId($n2, $this->nameId);
$nD = $n2->firstChild;
Utilities::getContainer()->debugMessage($nD, "\x65\156\143\162\171\160\164");
$De = new XMLSecEnc();
$De->setNode($nD);
$De->type = XMLSecEnc::Element;
$QX = new XMLSecurityKey(XMLSecurityKey::AES128_CBC);
$QX->generateSessionKey();
$De->encryptKey($tg, $QX);
$this->encryptedNameId = $De->encryptNode($QX);
$this->nameId = NULL;
}
public function decryptNameId(XMLSecurityKey $tg, array $iP = array())
{
if (!($this->encryptedNameId === NULL)) {
goto kl;
}
return;
kl:
$nD = Utilities::decryptElement($this->encryptedNameId, $tg, $iP);
Utilities::getContainer()->debugMessage($nD, "\x64\x65\x63\162\171\x70\x74");
$this->nameId = Utilities::parseNameId($nD);
$this->encryptedNameId = NULL;
}
public function decryptAttributes(XMLSecurityKey $tg, array $iP = array())
{
if (!($this->encryptedAttribute === NULL)) {
goto vN;
}
return;
vN:
$gu = TRUE;
$pP = $this->encryptedAttribute;
foreach ($pP as $WH) {
$rv = Utilities::decryptElement($WH->getElementsByTagName("\105\156\x63\x72\x79\x70\164\x65\144\x44\141\164\141")->item(0), $tg, $iP);
if ($rv->hasAttribute("\116\x61\x6d\145")) {
goto HZ;
}
throw new Exception("\115\151\163\163\x69\x6e\x67\x20\x6e\x61\155\145\40\x6f\156\x20\x3c\163\141\x6d\154\72\101\x74\x74\162\151\x62\165\164\x65\x3e\40\x65\154\145\155\145\156\164\x2e");
HZ:
$xy = $rv->getAttribute("\116\x61\155\145");
if ($rv->hasAttribute("\116\141\155\x65\x46\x6f\162\x6d\x61\164")) {
goto RX;
}
$ax = "\165\x72\156\x3a\x6f\x61\x73\151\x73\x3a\x6e\x61\x6d\x65\x73\x3a\164\143\x3a\123\101\x4d\114\72\x32\56\x30\x3a\141\x74\164\x72\x6e\141\x6d\145\x2d\x66\x6f\x72\x6d\x61\x74\72\x75\x6e\x73\160\145\x63\151\146\151\145\144";
goto CV;
RX:
$ax = $rv->getAttribute("\x4e\x61\x6d\145\106\x6f\162\x6d\x61\164");
CV:
if ($gu) {
goto Ac;
}
if (!($this->nameFormat !== $ax)) {
goto v2;
}
$this->nameFormat = "\x75\162\156\x3a\x6f\x61\163\151\x73\x3a\156\141\x6d\x65\x73\x3a\164\x63\x3a\123\101\115\x4c\x3a\x32\56\60\72\141\164\x74\x72\x6e\x61\155\x65\55\x66\x6f\x72\155\x61\164\72\165\156\163\160\145\143\151\x66\x69\x65\x64";
v2:
goto vz;
Ac:
$this->nameFormat = $ax;
$gu = FALSE;
vz:
if (array_key_exists($xy, $this->attributes)) {
goto rO;
}
$this->attributes[$xy] = array();
rO:
$WT = Utilities::xpQuery($rv, "\x2e\57\x73\141\x6d\154\137\141\x73\x73\145\162\164\x69\157\156\72\101\164\x74\x72\151\x62\165\x74\145\x56\x61\x6c\165\145");
foreach ($WT as $fg) {
$this->attributes[$xy][] = trim($fg->textContent);
us:
}
XP:
Y_:
}
t5:
}
public function getNotBefore()
{
return $this->notBefore;
}
public function setNotBefore($tO)
{
$this->notBefore = $tO;
}
public function getNotOnOrAfter()
{
return $this->notOnOrAfter;
}
public function setNotOnOrAfter($fh)
{
$this->notOnOrAfter = $fh;
}
public function setEncryptedAttributes($I0)
{
$this->requiredEncAttributes = $I0;
}
public function getValidAudiences()
{
return $this->validAudiences;
}
public function setValidAudiences(array $Zn = NULL)
{
$this->validAudiences = $Zn;
}
public function getAuthnInstant()
{
return $this->authnInstant;
}
public function setAuthnInstant($wJ)
{
$this->authnInstant = $wJ;
}
public function getSessionNotOnOrAfter()
{
return $this->sessionNotOnOrAfter;
}
public function setSessionNotOnOrAfter($FU)
{
$this->sessionNotOnOrAfter = $FU;
}
public function getSessionIndex()
{
return $this->sessionIndex;
}
public function setSessionIndex($nU)
{
$this->sessionIndex = $nU;
}
public function getAuthnContext()
{
if (empty($this->authnContextClassRef)) {
goto Ro;
}
return $this->authnContextClassRef;
Ro:
if (empty($this->authnContextDeclRef)) {
goto dT;
}
return $this->authnContextDeclRef;
dT:
return NULL;
}
public function setAuthnContext($xQ)
{
$this->setAuthnContextClassRef($xQ);
}
public function getAuthnContextClassRef()
{
return $this->authnContextClassRef;
}
public function setAuthnContextClassRef($Up)
{
$this->authnContextClassRef = $Up;
}
public function setAuthnContextDecl(SAML2_XML_Chunk $i2)
{
if (empty($this->authnContextDeclRef)) {
goto tD;
}
throw new Exception("\x41\x75\x74\150\x6e\x43\157\x6e\x74\x65\170\x74\x44\145\x63\154\122\x65\146\x20\151\x73\40\x61\154\x72\x65\x61\144\171\x20\162\145\147\x69\x73\x74\x65\162\x65\x64\41\x20\115\x61\171\x20\x6f\x6e\154\171\x20\150\x61\166\x65\x20\145\151\x74\150\145\162\40\141\x20\x44\145\x63\x6c\x20\157\162\40\141\x20\x44\145\x63\x6c\122\145\x66\x2c\x20\156\x6f\164\x20\x62\x6f\164\x68\41");
tD:
$this->authnContextDecl = $i2;
}
public function getAuthnContextDecl()
{
return $this->authnContextDecl;
}
public function setAuthnContextDeclRef($ks)
{
if (empty($this->authnContextDecl)) {
goto Dv;
}
throw new Exception("\x41\x75\164\150\x6e\x43\157\156\164\x65\170\x74\x44\145\143\x6c\40\x69\163\40\141\154\x72\x65\x61\144\171\40\x72\145\147\x69\163\164\x65\x72\x65\144\41\x20\x4d\141\x79\40\157\x6e\x6c\x79\40\150\x61\166\145\40\x65\151\164\x68\x65\x72\x20\141\x20\x44\145\x63\154\40\x6f\x72\x20\x61\40\x44\x65\x63\x6c\122\x65\x66\54\x20\x6e\157\164\40\142\157\x74\150\41");
Dv:
$this->authnContextDeclRef = $ks;
}
public function getAuthnContextDeclRef()
{
return $this->authnContextDeclRef;
}
public function getAuthenticatingAuthority()
{
return $this->AuthenticatingAuthority;
}
public function setAuthenticatingAuthority($sK)
{
$this->AuthenticatingAuthority = $sK;
}
public function getAttributes()
{
return $this->attributes;
}
public function setAttributes(array $pP)
{
$this->attributes = $pP;
}
public function getAttributeNameFormat()
{
return $this->nameFormat;
}
public function setAttributeNameFormat($ax)
{
$this->nameFormat = $ax;
}
public function getSubjectConfirmation()
{
return $this->SubjectConfirmation;
}
public function setSubjectConfirmation(array $pg)
{
$this->SubjectConfirmation = $pg;
}
public function getSignatureKey()
{
return $this->signatureKey;
}
public function getSignatureData()
{
return $this->signatureData;
}
public function setSignatureKey(XMLsecurityKey $uK = NULL)
{
$this->signatureKey = $uK;
}
public function getEncryptionKey()
{
return $this->encryptionKey;
}
public function setEncryptionKey(XMLSecurityKey $YU = NULL)
{
$this->encryptionKey = $YU;
}
public function setCertificates(array $au)
{
$this->certificates = $au;
}
public function getCertificates()
{
return $this->certificates;
}
public function getWasSignedAtConstruction()
{
return $this->wasSignedAtConstruction;
}
public function toXML(DOMNode $SR = NULL)
{
if ($SR === NULL) {
goto oE;
}
$D1 = $SR->ownerDocument;
goto UM;
oE:
$D1 = new DOMDocument();
$SR = $D1;
UM:
$n2 = $D1->createElementNS("\x75\162\156\72\157\x61\x73\x69\x73\x3a\156\141\x6d\x65\163\x3a\x74\143\x3a\x53\x41\x4d\x4c\x3a\x32\x2e\x30\72\x61\x73\x73\x65\162\164\x69\157\156", "\x73\x61\155\154\72" . "\101\x73\x73\145\x72\164\x69\157\156");
$SR->appendChild($n2);
$n2->setAttributeNS("\x75\162\156\x3a\157\x61\x73\151\x73\x3a\156\x61\x6d\145\x73\72\x74\x63\72\123\x41\x4d\114\x3a\62\x2e\60\x3a\160\x72\157\x74\x6f\x63\157\x6c", "\163\x61\155\x6c\x70\72\164\x6d\160", "\x74\x6d\160");
$n2->removeAttributeNS("\165\x72\x6e\72\x6f\141\x73\151\163\72\x6e\x61\155\145\163\x3a\x74\143\x3a\x53\101\x4d\x4c\72\62\x2e\x30\x3a\x70\162\x6f\164\x6f\143\x6f\154", "\x74\x6d\160");
$n2->setAttributeNS("\150\164\164\x70\72\57\x2f\x77\x77\167\x2e\167\63\x2e\x6f\162\x67\57\62\x30\x30\x31\x2f\x58\115\114\123\x63\x68\x65\155\x61\55\151\156\x73\x74\141\x6e\143\x65", "\x78\x73\x69\x3a\164\155\x70", "\x74\155\x70");
$n2->removeAttributeNS("\x68\x74\164\160\x3a\x2f\57\x77\x77\167\56\167\63\x2e\157\162\147\57\62\60\x30\x31\x2f\130\x4d\x4c\x53\143\x68\x65\155\141\x2d\x69\156\163\164\x61\x6e\x63\145", "\164\x6d\160");
$n2->setAttributeNS("\150\164\164\x70\72\x2f\57\x77\167\167\x2e\x77\x33\x2e\157\x72\147\x2f\x32\60\60\x31\57\130\x4d\114\123\143\x68\x65\155\141", "\x78\163\72\x74\x6d\x70", "\x74\x6d\160");
$n2->removeAttributeNS("\150\x74\164\160\x3a\57\x2f\167\167\167\x2e\167\x33\56\157\x72\x67\57\x32\x30\x30\61\57\x58\115\114\x53\x63\x68\x65\155\141", "\164\155\160");
$n2->setAttribute("\111\x44", $this->id);
$n2->setAttribute("\126\x65\162\163\x69\157\x6e", "\x32\x2e\60");
$n2->setAttribute("\x49\163\163\165\x65\x49\x6e\163\x74\141\x6e\x74", gmdate("\131\55\155\55\x64\134\124\x48\x3a\x69\x3a\x73\134\x5a", $this->issueInstant));
$wf = Utilities::addString($n2, "\x75\162\156\x3a\x6f\x61\x73\151\x73\x3a\156\x61\155\145\x73\72\x74\143\x3a\123\x41\115\114\x3a\62\56\x30\72\x61\163\x73\x65\162\164\x69\x6f\x6e", "\x73\141\x6d\154\72\x49\163\x73\x75\145\162", $this->issuer);
$this->addSubject($n2);
$this->addConditions($n2);
$this->addAuthnStatement($n2);
if ($this->requiredEncAttributes == FALSE) {
goto Tv;
}
$this->addEncryptedAttributeStatement($n2);
goto kY;
Tv:
$this->addAttributeStatement($n2);
kY:
if (!($this->signatureKey !== NULL)) {
goto gM;
}
Utilities::insertSignature($this->signatureKey, $this->certificates, $n2, $wf->nextSibling);
gM:
return $n2;
}
private function addSubject(DOMElement $n2)
{
if (!($this->nameId === NULL && $this->encryptedNameId === NULL)) {
goto mF;
}
return;
mF:
$I9 = $n2->ownerDocument->createElementNS("\x75\162\156\x3a\157\141\163\151\163\x3a\x6e\141\x6d\x65\x73\72\164\143\72\x53\101\115\x4c\72\62\x2e\x30\72\141\163\x73\145\162\164\151\x6f\x6e", "\x73\141\155\154\x3a\x53\165\x62\152\145\143\x74");
$n2->appendChild($I9);
if ($this->encryptedNameId === NULL) {
goto m8;
}
$qJ = $I9->ownerDocument->createElementNS("\x75\x72\x6e\72\x6f\141\163\x69\x73\x3a\x6e\x61\x6d\x65\x73\x3a\x74\x63\x3a\x53\x41\115\114\72\62\56\60\72\141\163\x73\x65\x72\164\x69\157\x6e", "\163\141\155\154\72" . "\x45\x6e\143\x72\x79\160\x74\145\144\111\x44");
$I9->appendChild($qJ);
$qJ->appendChild($I9->ownerDocument->importNode($this->encryptedNameId, TRUE));
goto xK;
m8:
Utilities::addNameId($I9, $this->nameId);
xK:
foreach ($this->SubjectConfirmation as $Qq) {
$Qq->toXML($I9);
Ak:
}
Oj:
}
private function addConditions(DOMElement $n2)
{
$D1 = $n2->ownerDocument;
$q7 = $D1->createElementNS("\165\162\x6e\x3a\157\x61\163\151\x73\72\x6e\141\155\x65\163\72\164\x63\72\x53\101\115\x4c\x3a\62\56\60\72\x61\163\163\145\x72\164\151\x6f\156", "\x73\x61\x6d\x6c\x3a\103\x6f\156\144\x69\x74\151\157\x6e\163");
$n2->appendChild($q7);
if (!($this->notBefore !== NULL)) {
goto Vo;
}
$q7->setAttribute("\x4e\x6f\164\102\145\x66\x6f\x72\x65", gmdate("\131\x2d\x6d\55\x64\x5c\x54\110\72\x69\x3a\x73\134\x5a", $this->notBefore));
Vo:
if (!($this->notOnOrAfter !== NULL)) {
goto uG;
}
$q7->setAttribute("\x4e\x6f\164\x4f\156\117\x72\x41\146\164\x65\x72", gmdate("\131\55\155\55\144\134\x54\x48\72\x69\x3a\x73\x5c\132", $this->notOnOrAfter));
uG:
if (!($this->validAudiences !== NULL)) {
goto ip;
}
$yr = $D1->createElementNS("\x75\x72\156\x3a\x6f\141\163\x69\163\72\156\x61\155\x65\163\72\164\143\72\123\x41\115\x4c\72\x32\x2e\x30\72\141\163\x73\x65\162\x74\151\157\x6e", "\163\x61\155\154\x3a\x41\x75\144\x69\x65\156\x63\145\122\145\163\164\162\x69\x63\x74\151\x6f\156");
$q7->appendChild($yr);
Utilities::addStrings($yr, "\x75\x72\156\x3a\x6f\141\163\151\x73\72\x6e\x61\x6d\x65\163\72\x74\143\72\123\101\115\x4c\x3a\62\x2e\x30\72\141\163\x73\x65\162\164\x69\x6f\156", "\163\141\155\x6c\x3a\101\165\x64\151\x65\156\143\145", FALSE, $this->validAudiences);
ip:
}
private function addAuthnStatement(DOMElement $n2)
{
if (!($this->authnInstant === NULL || $this->authnContextClassRef === NULL && $this->authnContextDecl === NULL && $this->authnContextDeclRef === NULL)) {
goto kq;
}
return;
kq:
$D1 = $n2->ownerDocument;
$P0 = $D1->createElementNS("\165\162\156\x3a\157\141\x73\x69\x73\72\x6e\141\x6d\145\163\x3a\x74\143\72\123\x41\115\114\72\x32\x2e\60\72\x61\163\163\x65\162\x74\x69\x6f\156", "\x73\x61\155\x6c\x3a\x41\165\x74\x68\156\x53\164\x61\x74\x65\x6d\x65\156\164");
$n2->appendChild($P0);
$P0->setAttribute("\101\165\x74\x68\156\x49\x6e\x73\x74\x61\x6e\164", gmdate("\131\x2d\x6d\x2d\x64\134\124\x48\x3a\151\x3a\x73\x5c\x5a", $this->authnInstant));
if (!($this->sessionNotOnOrAfter !== NULL)) {
goto nA;
}
$P0->setAttribute("\x53\x65\x73\163\151\x6f\156\116\x6f\164\x4f\156\117\x72\x41\x66\x74\x65\x72", gmdate("\131\x2d\x6d\55\x64\x5c\124\110\72\x69\72\163\134\132", $this->sessionNotOnOrAfter));
nA:
if (!($this->sessionIndex !== NULL)) {
goto j1;
}
$P0->setAttribute("\x53\x65\163\x73\151\x6f\156\111\x6e\x64\x65\170", $this->sessionIndex);
j1:
$Iu = $D1->createElementNS("\165\162\x6e\x3a\x6f\x61\x73\x69\163\72\x6e\x61\x6d\145\163\72\x74\143\72\x53\x41\115\114\72\x32\56\60\x3a\141\163\163\145\162\x74\x69\x6f\x6e", "\x73\141\x6d\154\x3a\101\x75\164\150\156\x43\157\x6e\x74\x65\x78\164");
$P0->appendChild($Iu);
if (empty($this->authnContextClassRef)) {
goto xB;
}
Utilities::addString($Iu, "\x75\162\156\72\x6f\141\163\151\163\x3a\x6e\141\155\x65\x73\x3a\164\143\72\x53\x41\x4d\114\72\x32\x2e\x30\72\x61\x73\163\145\x72\x74\x69\157\156", "\x73\141\155\154\72\101\x75\x74\x68\156\103\x6f\x6e\x74\145\170\164\103\x6c\141\x73\x73\122\x65\x66", $this->authnContextClassRef);
xB:
if (empty($this->authnContextDecl)) {
goto v3;
}
$this->authnContextDecl->toXML($Iu);
v3:
if (empty($this->authnContextDeclRef)) {
goto Z7;
}
Utilities::addString($Iu, "\165\x72\x6e\x3a\157\141\x73\x69\x73\x3a\156\x61\155\145\163\x3a\x74\x63\x3a\123\101\x4d\114\72\62\56\60\x3a\141\x73\163\145\162\x74\151\x6f\156", "\163\141\x6d\154\72\101\x75\164\150\156\103\x6f\x6e\164\145\170\x74\104\145\x63\x6c\x52\x65\146", $this->authnContextDeclRef);
Z7:
Utilities::addStrings($Iu, "\165\162\156\x3a\x6f\141\x73\151\163\x3a\156\141\155\145\x73\x3a\x74\143\x3a\x53\101\x4d\114\72\x32\56\60\x3a\x61\163\163\x65\162\164\x69\x6f\156", "\163\x61\155\154\x3a\101\x75\x74\150\145\x6e\164\151\x63\x61\164\151\156\x67\x41\165\x74\150\157\x72\x69\164\x79", FALSE, $this->AuthenticatingAuthority);
}
private function addAttributeStatement(DOMElement $n2)
{
if (!empty($this->attributes)) {
goto tz;
}
return;
tz:
$D1 = $n2->ownerDocument;
$HQ = $D1->createElementNS("\165\x72\156\72\157\141\x73\x69\163\72\x6e\x61\155\145\x73\x3a\x74\143\72\x53\101\x4d\x4c\x3a\x32\x2e\60\x3a\x61\x73\x73\x65\x72\x74\151\157\156", "\x73\x61\x6d\x6c\72\x41\164\x74\162\x69\142\165\164\145\x53\x74\x61\x74\x65\155\145\x6e\x74");
$n2->appendChild($HQ);
foreach ($this->attributes as $xy => $WT) {
$rv = $D1->createElementNS("\165\x72\x6e\x3a\157\x61\x73\x69\x73\72\156\141\x6d\x65\163\x3a\x74\x63\72\x53\x41\x4d\x4c\72\x32\56\60\72\x61\x73\x73\145\162\164\151\157\x6e", "\x73\141\x6d\x6c\x3a\x41\x74\x74\x72\x69\x62\x75\x74\145");
$HQ->appendChild($rv);
$rv->setAttribute("\116\141\x6d\x65", $xy);
if (!($this->nameFormat !== "\165\x72\x6e\72\157\141\163\151\x73\x3a\x6e\x61\155\145\163\x3a\164\x63\x3a\123\101\x4d\114\x3a\x32\56\60\72\141\x74\164\162\156\x61\155\x65\x2d\146\157\x72\155\141\164\x3a\x75\156\163\x70\145\x63\151\146\x69\145\x64")) {
goto b2;
}
$rv->setAttribute("\116\141\x6d\x65\x46\x6f\162\x6d\141\164", $this->nameFormat);
b2:
foreach ($WT as $fg) {
if (is_string($fg)) {
goto Sy;
}
if (is_int($fg)) {
goto KF;
}
$Ws = NULL;
goto Zz;
Sy:
$Ws = "\x78\x73\72\163\x74\162\x69\x6e\147";
goto Zz;
KF:
$Ws = "\x78\x73\x3a\x69\x6e\x74\x65\x67\x65\162";
Zz:
$R7 = $D1->createElementNS("\165\162\156\x3a\x6f\x61\163\x69\163\72\156\141\x6d\145\x73\72\x74\x63\x3a\x53\x41\115\x4c\x3a\x32\x2e\60\x3a\x61\163\163\x65\162\164\151\157\156", "\163\141\155\x6c\x3a\x41\164\164\162\x69\x62\x75\164\145\x56\141\154\x75\x65");
$rv->appendChild($R7);
if (!($Ws !== NULL)) {
goto ny;
}
$R7->setAttributeNS("\x68\x74\x74\160\72\57\x2f\x77\167\167\56\x77\x33\56\x6f\162\147\57\x32\x30\x30\x31\57\x58\115\x4c\123\143\150\x65\x6d\141\x2d\151\x6e\163\x74\141\156\x63\x65", "\x78\x73\x69\x3a\x74\x79\x70\145", $Ws);
ny:
if (!is_null($fg)) {
goto tU;
}
$R7->setAttributeNS("\x68\x74\x74\x70\x3a\x2f\x2f\167\x77\167\x2e\x77\63\x2e\157\162\x67\x2f\62\60\x30\61\x2f\130\x4d\114\123\x63\x68\145\x6d\x61\55\x69\156\163\x74\141\156\x63\x65", "\170\x73\x69\x3a\x6e\x69\154", "\x74\162\165\x65");
tU:
if ($fg instanceof DOMNodeList) {
goto GY;
}
$R7->appendChild($D1->createTextNode($fg));
goto Ty;
GY:
$lt = 0;
Gt:
if (!($lt < $fg->length)) {
goto ZO;
}
$pU = $D1->importNode($fg->item($lt), TRUE);
$R7->appendChild($pU);
GW:
$lt++;
goto Gt;
ZO:
Ty:
pt:
}
aW:
U5:
}
lG:
}
private function addEncryptedAttributeStatement(DOMElement $n2)
{
if (!($this->requiredEncAttributes == FALSE)) {
goto Al;
}
return;
Al:
$D1 = $n2->ownerDocument;
$HQ = $D1->createElementNS("\165\162\x6e\x3a\157\x61\163\x69\x73\x3a\x6e\141\155\145\163\72\164\143\72\x53\x41\115\x4c\72\62\56\60\x3a\x61\x73\163\x65\162\164\151\157\156", "\163\141\x6d\x6c\x3a\x41\x74\164\x72\151\x62\x75\x74\145\x53\x74\141\164\x65\155\145\156\164");
$n2->appendChild($HQ);
foreach ($this->attributes as $xy => $WT) {
$b_ = new DOMDocument();
$rv = $b_->createElementNS("\x75\162\x6e\x3a\x6f\x61\x73\151\x73\x3a\x6e\x61\155\x65\163\72\x74\x63\72\x53\x41\115\x4c\x3a\x32\x2e\60\72\x61\163\x73\145\162\x74\151\157\x6e", "\163\x61\155\x6c\72\x41\164\164\x72\151\x62\165\164\x65");
$rv->setAttribute("\116\x61\155\145", $xy);
$b_->appendChild($rv);
if (!($this->nameFormat !== "\x75\162\x6e\72\157\x61\x73\151\x73\x3a\x6e\141\155\x65\163\72\164\143\72\123\x41\x4d\114\x3a\62\56\60\x3a\141\x74\x74\x72\156\x61\155\x65\x2d\146\x6f\162\155\x61\x74\72\x75\156\163\x70\x65\143\151\146\x69\x65\144")) {
goto hd;
}
$rv->setAttribute("\x4e\141\x6d\145\x46\157\162\155\141\164", $this->nameFormat);
hd:
foreach ($WT as $fg) {
if (is_string($fg)) {
goto uI;
}
if (is_int($fg)) {
goto OH;
}
$Ws = NULL;
goto Zq;
uI:
$Ws = "\x78\163\72\163\x74\162\151\156\x67";
goto Zq;
OH:
$Ws = "\x78\x73\x3a\x69\156\164\145\147\145\x72";
Zq:
$R7 = $b_->createElementNS("\165\162\156\x3a\157\x61\x73\151\x73\72\156\141\x6d\145\163\72\164\143\x3a\123\x41\115\x4c\72\x32\56\60\72\141\x73\x73\x65\x72\164\151\157\156", "\x73\141\x6d\154\72\101\x74\x74\x72\x69\x62\165\164\145\x56\x61\x6c\x75\x65");
$rv->appendChild($R7);
if (!($Ws !== NULL)) {
goto v4;
}
$R7->setAttributeNS("\x68\164\164\x70\x3a\57\x2f\x77\x77\167\x2e\x77\63\56\157\162\x67\x2f\62\60\x30\x31\x2f\x58\115\114\x53\x63\x68\x65\x6d\141\x2d\151\156\x73\x74\x61\156\x63\x65", "\170\163\151\x3a\x74\171\160\x65", $Ws);
v4:
if ($fg instanceof DOMNodeList) {
goto Y0;
}
$R7->appendChild($b_->createTextNode($fg));
goto d1;
Y0:
$lt = 0;
EV:
if (!($lt < $fg->length)) {
goto oD;
}
$pU = $b_->importNode($fg->item($lt), TRUE);
$R7->appendChild($pU);
mi:
$lt++;
goto EV;
oD:
d1:
jl:
}
jw:
$Sw = new XMLSecEnc();
$Sw->setNode($b_->documentElement);
$Sw->type = "\x68\x74\164\160\72\57\57\x77\167\167\x2e\167\x33\x2e\x6f\x72\x67\x2f\x32\60\x30\61\x2f\x30\64\57\170\155\154\145\156\x63\43\x45\154\x65\155\145\x6e\x74";
$QX = new XMLSecurityKey(XMLSecurityKey::AES256_CBC);
$QX->generateSessionKey();
$Sw->encryptKey($this->encryptionKey, $QX);
$tL = $Sw->encryptNode($QX);
$Bd = $D1->createElementNS("\165\x72\156\72\x6f\141\163\x69\x73\x3a\x6e\x61\x6d\x65\x73\x3a\x74\143\72\x53\x41\115\x4c\72\62\x2e\x30\72\x61\163\x73\145\x72\164\151\157\x6e", "\x73\x61\x6d\154\72\105\x6e\x63\162\x79\x70\x74\145\144\101\164\164\x72\x69\142\165\x74\x65");
$HQ->appendChild($Bd);
$YW = $D1->importNode($tL, TRUE);
$Bd->appendChild($YW);
x6:
}
dc:
}
}
Function Calls
None |
Stats
MD5 | 9e5326b563b64763fcb201f0b3161083 |
Eval Count | 0 |
Decode Time | 125 ms |