Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php include_once "\125\x74\151\154\x69\164\151\145\163\56\x70\x68\x70"; class SAML..

Decoded Output download

<?php 
 
 
include_once "Utilities.php"; 
class SAML2_Assertion 
{ 
    private $id; 
    private $issueInstant; 
    private $issuer; 
    private $nameId; 
    private $encryptedNameId; 
    private $encryptedAttribute; 
    private $encryptionKey; 
    private $notBefore; 
    private $notOnOrAfter; 
    private $validAudiences; 
    private $sessionNotOnOrAfter; 
    private $sessionIndex; 
    private $authnInstant; 
    private $authnContextClassRef; 
    private $authnContextDecl; 
    private $authnContextDeclRef; 
    private $AuthenticatingAuthority; 
    private $attributes; 
    private $nameFormat; 
    private $signatureKey; 
    private $certificates; 
    private $signatureData; 
    private $requiredEncAttributes; 
    private $SubjectConfirmation; 
    protected $wasSignedAtConstruction = FALSE; 
    public function __construct(DOMElement $Zu = NULL) 
    { 
        $this->id = Utilities::generateId(); 
        $this->issueInstant = Utilities::generateTimestamp(); 
        $this->issuer = ''; 
        $this->authnInstant = Utilities::generateTimestamp(); 
        $this->attributes = array(); 
        $this->nameFormat = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"; 
        $this->certificates = array(); 
        $this->AuthenticatingAuthority = array(); 
        $this->SubjectConfirmation = array(); 
        if (!($Zu === NULL)) { 
            goto Tv; 
        } 
        return; 
        Tv: 
        if (!($Zu->localName === "EncryptedAssertion")) { 
            goto w3; 
        } 
        $oK = Utilities::xpQuery($Zu, "./xenc:EncryptedData"); 
        $YG = Utilities::xpQuery($Zu, "./xenc:EncryptedData/ds:KeyInfo"); 
        $X5 = $YG[0]->firstChild->firstChild->getAttribute("Algorithm"); 
        $YS = Utilities::getEncryptionAlgorithm($X5); 
        if (count($oK) === 0) { 
            goto t9; 
        } 
        if (count($oK) > 1) { 
            goto kk; 
        } 
        goto UI; 
        t9: 
        throw new Exception("Missing encrypted data in <saml:EncryptedAssertion>."); 
        goto UI; 
        kk: 
        throw new Exception("More than one encrypted data element in <saml:EncryptedAssertion>."); 
        UI: 
        $OE = new XMLSecurityKey($YS, array("type" => "private")); 
        $Pp = plugin_dir_path(__FILE__) . "resources" . DIRECTORY_SEPARATOR . "sp-key.key"; 
        $OE->loadKey($Pp, TRUE); 
        $JM = new XMLSecurityKey($YS, array("type" => "private")); 
        $sP = plugin_dir_path(__FILE__) . "resources" . DIRECTORY_SEPARATOR . "miniorange_sp_priv_key.key"; 
        $uu = array(); 
        $Zu = Utilities::decryptElement($oK[0], $OE, $uu, $JM); 
        w3: 
        if ($Zu->hasAttribute("ID")) { 
            goto tO; 
        } 
        throw new Exception("Missing ID attribute on SAML assertion."); 
        tO: 
        $this->id = $Zu->getAttribute("ID"); 
        if (!($Zu->getAttribute("Version") !== "2.0")) { 
            goto kf; 
        } 
        throw new Exception("Unsupported version: " . $Zu->getAttribute("Version")); 
        kf: 
        $this->issueInstant = Utilities::xsDateTimeToTimestamp($Zu->getAttribute("IssueInstant")); 
        $xJ = Utilities::xpQuery($Zu, "./saml_assertion:Issuer"); 
        if (!empty($xJ)) { 
            goto f4; 
        } 
        throw new Exception("Missing <saml:Issuer> in assertion."); 
        f4: 
        $this->issuer = trim($xJ[0]->textContent); 
        $this->parseConditions($Zu); 
        $this->parseAuthnStatement($Zu); 
        $this->parseAttributes($Zu); 
        $this->parseEncryptedAttributes($Zu); 
        $this->parseSignature($Zu); 
        $this->parseSubject($Zu); 
    } 
    private function parseSubject(DOMElement $Zu) 
    { 
        $mR = Utilities::xpQuery($Zu, "./saml_assertion:Subject"); 
        if (empty($mR)) { 
            goto OV; 
        } 
        if (count($mR) > 1) { 
            goto aV; 
        } 
        goto pY; 
        OV: 
        return; 
        goto pY; 
        aV: 
        throw new Exception("More than one <saml:Subject> in <saml:Assertion>."); 
        pY: 
        $mR = $mR[0]; 
        $jj = Utilities::xpQuery($mR, "./saml_assertion:NameID | ./saml_assertion:EncryptedID/xenc:EncryptedData"); 
        if (empty($jj)) { 
            goto M4; 
        } 
        if (count($jj) > 1) { 
            goto Qw; 
        } 
        goto Gb; 
        M4: 
        throw new Exception("Missing <saml:NameID> or <saml:EncryptedID> in <saml:Subject>."); 
        goto Gb; 
        Qw: 
        throw new Exception("More than one <saml:NameID> or <saml:EncryptedD> in <saml:Subject>."); 
        Gb: 
        $jj = $jj[0]; 
        if ($jj->localName === "EncryptedData") { 
            goto uy; 
        } 
        $this->nameId = Utilities::parseNameId($jj); 
        goto bl; 
        uy: 
        $this->encryptedNameId = $jj; 
        bl: 
    } 
    private function parseConditions(DOMElement $Zu) 
    { 
        $Cs = Utilities::xpQuery($Zu, "./saml_assertion:Conditions"); 
        if (empty($Cs)) { 
            goto YO; 
        } 
        if (count($Cs) > 1) { 
            goto w_; 
        } 
        goto TX; 
        YO: 
        return; 
        goto TX; 
        w_: 
        throw new Exception("More than one <saml:Conditions> in <saml:Assertion>."); 
        TX: 
        $Cs = $Cs[0]; 
        if (!$Cs->hasAttribute("NotBefore")) { 
            goto ze; 
        } 
        $HP = Utilities::xsDateTimeToTimestamp($Cs->getAttribute("NotBefore")); 
        if (!($this->notBefore === NULL || $this->notBefore < $HP)) { 
            goto TT; 
        } 
        $this->notBefore = $HP; 
        TT: 
        ze: 
        if (!$Cs->hasAttribute("NotOnOrAfter")) { 
            goto Mi; 
        } 
        $k7 = Utilities::xsDateTimeToTimestamp($Cs->getAttribute("NotOnOrAfter")); 
        if (!($this->notOnOrAfter === NULL || $this->notOnOrAfter > $k7)) { 
            goto Ww; 
        } 
        $this->notOnOrAfter = $k7; 
        Ww: 
        Mi: 
        $Js = $Cs->firstChild; 
        SZ: 
        if (!($Js !== NULL)) { 
            goto fO; 
        } 
        if (!$Js instanceof DOMText) { 
            goto P6; 
        } 
        goto l1; 
        P6: 
        if (!($Js->namespaceURI !== "urn:oasis:names:tc:SAML:2.0:assertion")) { 
            goto B0; 
        } 
        throw new Exception("Unknown namespace of condition: " . var_export($Js->namespaceURI, TRUE)); 
        B0: 
        switch ($Js->localName) { 
            case "AudienceRestriction": 
                $g0 = Utilities::extractStrings($Js, "urn:oasis:names:tc:SAML:2.0:assertion", "Audience"); 
                if ($this->validAudiences === NULL) { 
                    goto iz; 
                } 
                $this->validAudiences = array_intersect($this->validAudiences, $g0); 
                goto UB; 
                iz: 
                $this->validAudiences = $g0; 
                UB: 
                goto UD; 
            case "OneTimeUse": 
                goto UD; 
            case "ProxyRestriction": 
                goto UD; 
            default: 
                throw new Exception("Unknown condition: " . var_export($Js->localName, TRUE)); 
        } 
        PG: 
        UD: 
        l1: 
        $Js = $Js->nextSibling; 
        goto SZ; 
        fO: 
    } 
    private function parseAuthnStatement(DOMElement $Zu) 
    { 
        $yG = Utilities::xpQuery($Zu, "./saml_assertion:AuthnStatement"); 
        if (empty($yG)) { 
            goto I9; 
        } 
        if (count($yG) > 1) { 
            goto GY; 
        } 
        goto I2; 
        I9: 
        $this->authnInstant = NULL; 
        return; 
        goto I2; 
        GY: 
        throw new Exception("More that one <saml:AuthnStatement> in <saml:Assertion> not supported."); 
        I2: 
        $cB = $yG[0]; 
        if ($cB->hasAttribute("AuthnInstant")) { 
            goto Ue; 
        } 
        throw new Exception("Missing required AuthnInstant attribute on <saml:AuthnStatement>."); 
        Ue: 
        $this->authnInstant = Utilities::xsDateTimeToTimestamp($cB->getAttribute("AuthnInstant")); 
        if (!$cB->hasAttribute("SessionNotOnOrAfter")) { 
            goto mE; 
        } 
        $this->sessionNotOnOrAfter = Utilities::xsDateTimeToTimestamp($cB->getAttribute("SessionNotOnOrAfter")); 
        mE: 
        if (!$cB->hasAttribute("SessionIndex")) { 
            goto iA; 
        } 
        $this->sessionIndex = $cB->getAttribute("SessionIndex"); 
        iA: 
        $this->parseAuthnContext($cB); 
    } 
    private function parseAuthnContext(DOMElement $bE) 
    { 
        $vE = Utilities::xpQuery($bE, "./saml_assertion:AuthnContext"); 
        if (count($vE) > 1) { 
            goto lK; 
        } 
        if (empty($vE)) { 
            goto Cw; 
        } 
        goto bI; 
        lK: 
        throw new Exception("More than one <saml:AuthnContext> in <saml:AuthnStatement>."); 
        goto bI; 
        Cw: 
        throw new Exception("Missing required <saml:AuthnContext> in <saml:AuthnStatement>."); 
        bI: 
        $iC = $vE[0]; 
        $dj = Utilities::xpQuery($iC, "./saml_assertion:AuthnContextDeclRef"); 
        if (count($dj) > 1) { 
            goto rz; 
        } 
        if (count($dj) === 1) { 
            goto PH; 
        } 
        goto BX; 
        rz: 
        throw new Exception("More than one <saml:AuthnContextDeclRef> found?"); 
        goto BX; 
        PH: 
        $this->setAuthnContextDeclRef(trim($dj[0]->textContent)); 
        BX: 
        $z7 = Utilities::xpQuery($iC, "./saml_assertion:AuthnContextDecl"); 
        if (count($z7) > 1) { 
            goto qd; 
        } 
        if (count($z7) === 1) { 
            goto QQ; 
        } 
        goto wz; 
        qd: 
        throw new Exception("More than one <saml:AuthnContextDecl> found?"); 
        goto wz; 
        QQ: 
        $this->setAuthnContextDecl(new SAML2_XML_Chunk($z7[0])); 
        wz: 
        $AV = Utilities::xpQuery($iC, "./saml_assertion:AuthnContextClassRef"); 
        if (count($AV) > 1) { 
            goto Fz; 
        } 
        if (count($AV) === 1) { 
            goto hU; 
        } 
        goto Tw; 
        Fz: 
        throw new Exception("More than one <saml:AuthnContextClassRef> in <saml:AuthnContext>."); 
        goto Tw; 
        hU: 
        $this->setAuthnContextClassRef(trim($AV[0]->textContent)); 
        Tw: 
        if (!(empty($this->authnContextClassRef) && empty($this->authnContextDecl) && empty($this->authnContextDeclRef))) { 
            goto Kx; 
        } 
        throw new Exception("Missing either <saml:AuthnContextClassRef> or <saml:AuthnContextDeclRef> or <saml:AuthnContextDecl>"); 
        Kx: 
        $this->AuthenticatingAuthority = Utilities::extractStrings($iC, "urn:oasis:names:tc:SAML:2.0:assertion", "AuthenticatingAuthority"); 
    } 
    private function parseAttributes(DOMElement $Zu) 
    { 
        $nL = TRUE; 
        $ws = Utilities::xpQuery($Zu, "./saml_assertion:AttributeStatement/saml_assertion:Attribute"); 
        foreach ($ws as $kj) { 
            if ($kj->hasAttribute("Name")) { 
                goto jk; 
            } 
            throw new Exception("Missing name on <saml:Attribute> element."); 
            jk: 
            $Pj = $kj->getAttribute("Name"); 
            if ($kj->hasAttribute("NameFormat")) { 
                goto YV; 
            } 
            $KI = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"; 
            goto L0; 
            YV: 
            $KI = $kj->getAttribute("NameFormat"); 
            L0: 
            if ($nL) { 
                goto SN; 
            } 
            if (!($this->nameFormat !== $KI)) { 
                goto Jl; 
            } 
            $this->nameFormat = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"; 
            Jl: 
            goto LB; 
            SN: 
            $this->nameFormat = $KI; 
            $nL = FALSE; 
            LB: 
            if (array_key_exists($Pj, $this->attributes)) { 
                goto qc; 
            } 
            $this->attributes[$Pj] = array(); 
            qc: 
            $Of = Utilities::xpQuery($kj, "./saml_assertion:AttributeValue"); 
            foreach ($Of as $D7) { 
                $this->attributes[$Pj][] = trim($D7->textContent); 
                o0: 
            } 
            rN: 
            vb: 
        } 
        uw: 
    } 
    private function parseEncryptedAttributes(DOMElement $Zu) 
    { 
        $this->encryptedAttribute = Utilities::xpQuery($Zu, "./saml_assertion:AttributeStatement/saml_assertion:EncryptedAttribute"); 
    } 
    private function parseSignature(DOMElement $Zu) 
    { 
        $Cm = Utilities::validateElement($Zu); 
        if (!($Cm !== FALSE)) { 
            goto eM; 
        } 
        $this->wasSignedAtConstruction = TRUE; 
        $this->certificates = $Cm["Certificates"]; 
        $this->signatureData = $Cm; 
        eM: 
    } 
    public function validate(XMLSecurityKey $OE) 
    { 
        if (!($this->signatureData === NULL)) { 
            goto Mv; 
        } 
        return FALSE; 
        Mv: 
        Utilities::validateSignature($this->signatureData, $OE); 
        return TRUE; 
    } 
    public function getId() 
    { 
        return $this->id; 
    } 
    public function setId($L8) 
    { 
        $this->id = $L8; 
    } 
    public function getIssueInstant() 
    { 
        return $this->issueInstant; 
    } 
    public function setIssueInstant($rz) 
    { 
        $this->issueInstant = $rz; 
    } 
    public function getIssuer() 
    { 
        return $this->issuer; 
    } 
    public function setIssuer($xJ) 
    { 
        $this->issuer = $xJ; 
    } 
    public function getNameId() 
    { 
        if (!($this->encryptedNameId !== NULL)) { 
            goto DY; 
        } 
        throw new Exception("Attempted to retrieve encrypted NameID without decrypting it first."); 
        DY: 
        return $this->nameId; 
    } 
    public function setNameId($jj) 
    { 
        $this->nameId = $jj; 
    } 
    public function isNameIdEncrypted() 
    { 
        if (!($this->encryptedNameId !== NULL)) { 
            goto oo; 
        } 
        return TRUE; 
        oo: 
        return FALSE; 
    } 
    public function encryptNameId(XMLSecurityKey $OE) 
    { 
        $CI = new DOMDocument(); 
        $ai = $CI->createElement("root"); 
        $CI->appendChild($ai); 
        Utilities::addNameId($ai, $this->nameId); 
        $jj = $ai->firstChild; 
        Utilities::getContainer()->debugMessage($jj, "encrypt"); 
        $GN = new XMLSecEnc(); 
        $GN->setNode($jj); 
        $GN->type = XMLSecEnc::Element; 
        $o4 = new XMLSecurityKey(XMLSecurityKey::AES128_CBC); 
        $o4->generateSessionKey(); 
        $GN->encryptKey($OE, $o4); 
        $this->encryptedNameId = $GN->encryptNode($o4); 
        $this->nameId = NULL; 
    } 
    public function decryptNameId(XMLSecurityKey $OE, array $uu = array()) 
    { 
        if (!($this->encryptedNameId === NULL)) { 
            goto vn; 
        } 
        return; 
        vn: 
        $jj = Utilities::decryptElement($this->encryptedNameId, $OE, $uu); 
        Utilities::getContainer()->debugMessage($jj, "decrypt"); 
        $this->nameId = Utilities::parseNameId($jj); 
        $this->encryptedNameId = NULL; 
    } 
    public function decryptAttributes(XMLSecurityKey $OE, array $uu = array()) 
    { 
        if (!($this->encryptedAttribute === NULL)) { 
            goto I4; 
        } 
        return; 
        I4: 
        $nL = TRUE; 
        $ws = $this->encryptedAttribute; 
        foreach ($ws as $QY) { 
            $kj = Utilities::decryptElement($QY->getElementsByTagName("EncryptedData")->item(0), $OE, $uu); 
            if ($kj->hasAttribute("Name")) { 
                goto X3; 
            } 
            throw new Exception("Missing name on <saml:Attribute> element."); 
            X3: 
            $Pj = $kj->getAttribute("Name"); 
            if ($kj->hasAttribute("NameFormat")) { 
                goto oZ; 
            } 
            $KI = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"; 
            goto fb; 
            oZ: 
            $KI = $kj->getAttribute("NameFormat"); 
            fb: 
            if ($nL) { 
                goto mc; 
            } 
            if (!($this->nameFormat !== $KI)) { 
                goto Nr; 
            } 
            $this->nameFormat = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"; 
            Nr: 
            goto WP; 
            mc: 
            $this->nameFormat = $KI; 
            $nL = FALSE; 
            WP: 
            if (array_key_exists($Pj, $this->attributes)) { 
                goto Z0; 
            } 
            $this->attributes[$Pj] = array(); 
            Z0: 
            $Of = Utilities::xpQuery($kj, "./saml_assertion:AttributeValue"); 
            foreach ($Of as $D7) { 
                $this->attributes[$Pj][] = trim($D7->textContent); 
                gl: 
            } 
            qN: 
            kr: 
        } 
        hi: 
    } 
    public function getNotBefore() 
    { 
        return $this->notBefore; 
    } 
    public function setNotBefore($HP) 
    { 
        $this->notBefore = $HP; 
    } 
    public function getNotOnOrAfter() 
    { 
        return $this->notOnOrAfter; 
    } 
    public function setNotOnOrAfter($k7) 
    { 
        $this->notOnOrAfter = $k7; 
    } 
    public function setEncryptedAttributes($eh) 
    { 
        $this->requiredEncAttributes = $eh; 
    } 
    public function getValidAudiences() 
    { 
        return $this->validAudiences; 
    } 
    public function setValidAudiences(array $eD = NULL) 
    { 
        $this->validAudiences = $eD; 
    } 
    public function getAuthnInstant() 
    { 
        return $this->authnInstant; 
    } 
    public function setAuthnInstant($HD) 
    { 
        $this->authnInstant = $HD; 
    } 
    public function getSessionNotOnOrAfter() 
    { 
        return $this->sessionNotOnOrAfter; 
    } 
    public function setSessionNotOnOrAfter($MI) 
    { 
        $this->sessionNotOnOrAfter = $MI; 
    } 
    public function getSessionIndex() 
    { 
        return $this->sessionIndex; 
    } 
    public function setSessionIndex($FZ) 
    { 
        $this->sessionIndex = $FZ; 
    } 
    public function getAuthnContext() 
    { 
        if (empty($this->authnContextClassRef)) { 
            goto G6; 
        } 
        return $this->authnContextClassRef; 
        G6: 
        if (empty($this->authnContextDeclRef)) { 
            goto rd; 
        } 
        return $this->authnContextDeclRef; 
        rd: 
        return NULL; 
    } 
    public function setAuthnContext($Sw) 
    { 
        $this->setAuthnContextClassRef($Sw); 
    } 
    public function getAuthnContextClassRef() 
    { 
        return $this->authnContextClassRef; 
    } 
    public function setAuthnContextClassRef($uG) 
    { 
        $this->authnContextClassRef = $uG; 
    } 
    public function setAuthnContextDecl(SAML2_XML_Chunk $i1) 
    { 
        if (empty($this->authnContextDeclRef)) { 
            goto de; 
        } 
        throw new Exception("AuthnContextDeclRef is already registered! May only have either a Decl or a DeclRef, not both!"); 
        de: 
        $this->authnContextDecl = $i1; 
    } 
    public function getAuthnContextDecl() 
    { 
        return $this->authnContextDecl; 
    } 
    public function setAuthnContextDeclRef($LK) 
    { 
        if (empty($this->authnContextDecl)) { 
            goto n1; 
        } 
        throw new Exception("AuthnContextDecl is already registered! May only have either a Decl or a DeclRef, not both!"); 
        n1: 
        $this->authnContextDeclRef = $LK; 
    } 
    public function getAuthnContextDeclRef() 
    { 
        return $this->authnContextDeclRef; 
    } 
    public function getAuthenticatingAuthority() 
    { 
        return $this->AuthenticatingAuthority; 
    } 
    public function setAuthenticatingAuthority($L0) 
    { 
        $this->AuthenticatingAuthority = $L0; 
    } 
    public function getAttributes() 
    { 
        return $this->attributes; 
    } 
    public function setAttributes(array $ws) 
    { 
        $this->attributes = $ws; 
    } 
    public function getAttributeNameFormat() 
    { 
        return $this->nameFormat; 
    } 
    public function setAttributeNameFormat($KI) 
    { 
        $this->nameFormat = $KI; 
    } 
    public function getSubjectConfirmation() 
    { 
        return $this->SubjectConfirmation; 
    } 
    public function setSubjectConfirmation(array $Lq) 
    { 
        $this->SubjectConfirmation = $Lq; 
    } 
    public function getSignatureKey() 
    { 
        return $this->signatureKey; 
    } 
    public function setSignatureKey(XMLsecurityKey $mo = NULL) 
    { 
        $this->signatureKey = $mo; 
    } 
    public function getEncryptionKey() 
    { 
        return $this->encryptionKey; 
    } 
    public function setEncryptionKey(XMLSecurityKey $ez = NULL) 
    { 
        $this->encryptionKey = $ez; 
    } 
    public function setCertificates(array $Mg) 
    { 
        $this->certificates = $Mg; 
    } 
    public function getCertificates() 
    { 
        return $this->certificates; 
    } 
    public function getSignatureData() 
    { 
        return $this->signatureData; 
    } 
    public function getWasSignedAtConstruction() 
    { 
        return $this->wasSignedAtConstruction; 
    } 
    public function toXML(DOMNode $wg = NULL) 
    { 
        if ($wg === NULL) { 
            goto ub; 
        } 
        $vs = $wg->ownerDocument; 
        goto CE; 
        ub: 
        $vs = new DOMDocument(); 
        $wg = $vs; 
        CE: 
        $ai = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:" . "Assertion"); 
        $wg->appendChild($ai); 
        $ai->setAttributeNS("urn:oasis:names:tc:SAML:2.0:protocol", "samlp:tmp", "tmp"); 
        $ai->removeAttributeNS("urn:oasis:names:tc:SAML:2.0:protocol", "tmp"); 
        $ai->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:tmp", "tmp"); 
        $ai->removeAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "tmp"); 
        $ai->setAttributeNS("http://www.w3.org/2001/XMLSchema", "xs:tmp", "tmp"); 
        $ai->removeAttributeNS("http://www.w3.org/2001/XMLSchema", "tmp"); 
        $ai->setAttribute("ID", $this->id); 
        $ai->setAttribute("Version", "2.0"); 
        $ai->setAttribute("IssueInstant", gmdate("Y-m-d\TH:i:s\Z", $this->issueInstant)); 
        $xJ = Utilities::addString($ai, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:Issuer", $this->issuer); 
        $this->addSubject($ai); 
        $this->addConditions($ai); 
        $this->addAuthnStatement($ai); 
        if ($this->requiredEncAttributes == FALSE) { 
            goto cl; 
        } 
        $this->addEncryptedAttributeStatement($ai); 
        goto N6; 
        cl: 
        $this->addAttributeStatement($ai); 
        N6: 
        if (!($this->signatureKey !== NULL)) { 
            goto yU; 
        } 
        Utilities::insertSignature($this->signatureKey, $this->certificates, $ai, $xJ->nextSibling); 
        yU: 
        return $ai; 
    } 
    private function addSubject(DOMElement $ai) 
    { 
        if (!($this->nameId === NULL && $this->encryptedNameId === NULL)) { 
            goto s8; 
        } 
        return; 
        s8: 
        $mR = $ai->ownerDocument->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Subject"); 
        $ai->appendChild($mR); 
        if ($this->encryptedNameId === NULL) { 
            goto vS; 
        } 
        $ra = $mR->ownerDocument->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:" . "EncryptedID"); 
        $mR->appendChild($ra); 
        $ra->appendChild($mR->ownerDocument->importNode($this->encryptedNameId, TRUE)); 
        goto f8; 
        vS: 
        Utilities::addNameId($mR, $this->nameId); 
        f8: 
        foreach ($this->SubjectConfirmation as $ct) { 
            $ct->toXML($mR); 
            LD: 
        } 
        rX: 
    } 
    private function addConditions(DOMElement $ai) 
    { 
        $vs = $ai->ownerDocument; 
        $Cs = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Conditions"); 
        $ai->appendChild($Cs); 
        if (!($this->notBefore !== NULL)) { 
            goto EE; 
        } 
        $Cs->setAttribute("NotBefore", gmdate("Y-m-d\TH:i:s\Z", $this->notBefore)); 
        EE: 
        if (!($this->notOnOrAfter !== NULL)) { 
            goto R6; 
        } 
        $Cs->setAttribute("NotOnOrAfter", gmdate("Y-m-d\TH:i:s\Z", $this->notOnOrAfter)); 
        R6: 
        if (!($this->validAudiences !== NULL)) { 
            goto eS; 
        } 
        $bm = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AudienceRestriction"); 
        $Cs->appendChild($bm); 
        Utilities::addStrings($bm, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:Audience", FALSE, $this->validAudiences); 
        eS: 
    } 
    private function addAuthnStatement(DOMElement $ai) 
    { 
        if (!($this->authnInstant === NULL || $this->authnContextClassRef === NULL && $this->authnContextDecl === NULL && $this->authnContextDeclRef === NULL)) { 
            goto Ob; 
        } 
        return; 
        Ob: 
        $vs = $ai->ownerDocument; 
        $bE = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnStatement"); 
        $ai->appendChild($bE); 
        $bE->setAttribute("AuthnInstant", gmdate("Y-m-d\TH:i:s\Z", $this->authnInstant)); 
        if (!($this->sessionNotOnOrAfter !== NULL)) { 
            goto lW; 
        } 
        $bE->setAttribute("SessionNotOnOrAfter", gmdate("Y-m-d\TH:i:s\Z", $this->sessionNotOnOrAfter)); 
        lW: 
        if (!($this->sessionIndex !== NULL)) { 
            goto wY; 
        } 
        $bE->setAttribute("SessionIndex", $this->sessionIndex); 
        wY: 
        $iC = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContext"); 
        $bE->appendChild($iC); 
        if (empty($this->authnContextClassRef)) { 
            goto hd; 
        } 
        Utilities::addString($iC, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContextClassRef", $this->authnContextClassRef); 
        hd: 
        if (empty($this->authnContextDecl)) { 
            goto zF; 
        } 
        $this->authnContextDecl->toXML($iC); 
        zF: 
        if (empty($this->authnContextDeclRef)) { 
            goto Sc; 
        } 
        Utilities::addString($iC, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContextDeclRef", $this->authnContextDeclRef); 
        Sc: 
        Utilities::addStrings($iC, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthenticatingAuthority", FALSE, $this->AuthenticatingAuthority); 
    } 
    private function addAttributeStatement(DOMElement $ai) 
    { 
        if (!empty($this->attributes)) { 
            goto ym; 
        } 
        return; 
        ym: 
        $vs = $ai->ownerDocument; 
        $Ni = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeStatement"); 
        $ai->appendChild($Ni); 
        foreach ($this->attributes as $Pj => $Of) { 
            $kj = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Attribute"); 
            $Ni->appendChild($kj); 
            $kj->setAttribute("Name", $Pj); 
            if (!($this->nameFormat !== "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified")) { 
                goto x2; 
            } 
            $kj->setAttribute("NameFormat", $this->nameFormat); 
            x2: 
            foreach ($Of as $D7) { 
                if (is_string($D7)) { 
                    goto Fp; 
                } 
                if (is_int($D7)) { 
                    goto FQ; 
                } 
                $DF = NULL; 
                goto tb; 
                Fp: 
                $DF = "xs:string"; 
                goto tb; 
                FQ: 
                $DF = "xs:integer"; 
                tb: 
                $PU = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeValue"); 
                $kj->appendChild($PU); 
                if (!($DF !== NULL)) { 
                    goto QB; 
                } 
                $PU->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:type", $DF); 
                QB: 
                if (!is_null($D7)) { 
                    goto jz; 
                } 
                $PU->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:nil", "true"); 
                jz: 
                if ($D7 instanceof DOMNodeList) { 
                    goto c2; 
                } 
                $PU->appendChild($vs->createTextNode($D7)); 
                goto O2; 
                c2: 
                $n2 = 0; 
                A_: 
                if (!($n2 < $D7->length)) { 
                    goto IV; 
                } 
                $Js = $vs->importNode($D7->item($n2), TRUE); 
                $PU->appendChild($Js); 
                x3: 
                $n2++; 
                goto A_; 
                IV: 
                O2: 
                bM: 
            } 
            bF: 
            yZ: 
        } 
        cZ: 
    } 
    private function addEncryptedAttributeStatement(DOMElement $ai) 
    { 
        if (!($this->requiredEncAttributes == FALSE)) { 
            goto gz; 
        } 
        return; 
        gz: 
        $vs = $ai->ownerDocument; 
        $Ni = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeStatement"); 
        $ai->appendChild($Ni); 
        foreach ($this->attributes as $Pj => $Of) { 
            $Hg = new DOMDocument(); 
            $kj = $Hg->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Attribute"); 
            $kj->setAttribute("Name", $Pj); 
            $Hg->appendChild($kj); 
            if (!($this->nameFormat !== "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified")) { 
                goto ui; 
            } 
            $kj->setAttribute("NameFormat", $this->nameFormat); 
            ui: 
            foreach ($Of as $D7) { 
                if (is_string($D7)) { 
                    goto Ch; 
                } 
                if (is_int($D7)) { 
                    goto CX; 
                } 
                $DF = NULL; 
                goto Qy; 
                Ch: 
                $DF = "xs:string"; 
                goto Qy; 
                CX: 
                $DF = "xs:integer"; 
                Qy: 
                $PU = $Hg->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeValue"); 
                $kj->appendChild($PU); 
                if (!($DF !== NULL)) { 
                    goto Oc; 
                } 
                $PU->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:type", $DF); 
                Oc: 
                if ($D7 instanceof DOMNodeList) { 
                    goto v5; 
                } 
                $PU->appendChild($Hg->createTextNode($D7)); 
                goto ZT; 
                v5: 
                $n2 = 0; 
                aN: 
                if (!($n2 < $D7->length)) { 
                    goto TM; 
                } 
                $Js = $Hg->importNode($D7->item($n2), TRUE); 
                $PU->appendChild($Js); 
                gD: 
                $n2++; 
                goto aN; 
                TM: 
                ZT: 
                FE: 
            } 
            k5: 
            $xO = new XMLSecEnc(); 
            $xO->setNode($Hg->documentElement); 
            $xO->type = "http://www.w3.org/2001/04/xmlenc#Element"; 
            $o4 = new XMLSecurityKey(XMLSecurityKey::AES256_CBC); 
            $o4->generateSessionKey(); 
            $xO->encryptKey($this->encryptionKey, $o4); 
            $JH = $xO->encryptNode($o4); 
            $wR = $vs->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:EncryptedAttribute"); 
            $Ni->appendChild($wR); 
            $Nn = $vs->importNode($JH, TRUE); 
            $wR->appendChild($Nn); 
            AC: 
        } 
        cy: 
    } 
} 
 ?>

Did this file decode correctly?

Original Code

<?php


include_once "\125\x74\151\154\x69\164\151\145\163\56\x70\x68\x70";
class SAML2_Assertion
{
    private $id;
    private $issueInstant;
    private $issuer;
    private $nameId;
    private $encryptedNameId;
    private $encryptedAttribute;
    private $encryptionKey;
    private $notBefore;
    private $notOnOrAfter;
    private $validAudiences;
    private $sessionNotOnOrAfter;
    private $sessionIndex;
    private $authnInstant;
    private $authnContextClassRef;
    private $authnContextDecl;
    private $authnContextDeclRef;
    private $AuthenticatingAuthority;
    private $attributes;
    private $nameFormat;
    private $signatureKey;
    private $certificates;
    private $signatureData;
    private $requiredEncAttributes;
    private $SubjectConfirmation;
    protected $wasSignedAtConstruction = FALSE;
    public function __construct(DOMElement $Zu = NULL)
    {
        $this->id = Utilities::generateId();
        $this->issueInstant = Utilities::generateTimestamp();
        $this->issuer = '';
        $this->authnInstant = Utilities::generateTimestamp();
        $this->attributes = array();
        $this->nameFormat = "\x75\162\156\x3a\157\141\x73\151\163\72\156\x61\155\145\x73\72\x74\143\72\x53\x41\x4d\x4c\72\x31\56\x31\72\x6e\141\x6d\145\151\144\55\x66\x6f\162\x6d\141\x74\x3a\x75\156\163\160\145\143\x69\x66\151\x65\144";
        $this->certificates = array();
        $this->AuthenticatingAuthority = array();
        $this->SubjectConfirmation = array();
        if (!($Zu === NULL)) {
            goto Tv;
        }
        return;
        Tv:
        if (!($Zu->localName === "\105\156\x63\162\171\160\x74\x65\144\x41\x73\163\x65\162\x74\x69\157\156")) {
            goto w3;
        }
        $oK = Utilities::xpQuery($Zu, "\x2e\57\x78\x65\x6e\x63\x3a\105\x6e\x63\162\171\x70\x74\145\144\104\x61\x74\141");
        $YG = Utilities::xpQuery($Zu, "\56\x2f\x78\145\156\x63\72\105\x6e\143\162\x79\x70\x74\145\144\x44\141\x74\141\57\x64\x73\72\113\x65\171\111\156\146\x6f");
        $X5 = $YG[0]->firstChild->firstChild->getAttribute("\x41\154\147\x6f\x72\151\164\150\155");
        $YS = Utilities::getEncryptionAlgorithm($X5);
        if (count($oK) === 0) {
            goto t9;
        }
        if (count($oK) > 1) {
            goto kk;
        }
        goto UI;
        t9:
        throw new Exception("\x4d\x69\x73\x73\151\156\147\40\x65\156\x63\x72\x79\x70\x74\145\144\x20\144\x61\164\x61\x20\151\x6e\40\74\x73\x61\155\154\x3a\x45\156\x63\162\171\160\164\x65\x64\101\x73\163\145\162\x74\x69\x6f\x6e\x3e\56");
        goto UI;
        kk:
        throw new Exception("\x4d\157\x72\x65\40\164\x68\x61\x6e\40\157\x6e\x65\40\x65\x6e\143\x72\x79\x70\x74\x65\x64\x20\x64\141\164\141\x20\x65\x6c\145\x6d\x65\156\x74\x20\x69\x6e\40\x3c\x73\x61\155\x6c\x3a\x45\x6e\x63\162\x79\160\164\145\144\101\x73\163\145\162\164\151\157\156\76\56");
        UI:
        $OE = new XMLSecurityKey($YS, array("\x74\171\160\145" => "\160\162\151\x76\141\x74\145"));
        $Pp = plugin_dir_path(__FILE__) . "\x72\x65\x73\157\x75\x72\143\x65\x73" . DIRECTORY_SEPARATOR . "\x73\160\55\153\x65\x79\56\x6b\x65\x79";
        $OE->loadKey($Pp, TRUE);
        $JM = new XMLSecurityKey($YS, array("\x74\x79\x70\x65" => "\160\x72\x69\x76\141\x74\x65"));
        $sP = plugin_dir_path(__FILE__) . "\x72\x65\163\x6f\165\x72\x63\145\163" . DIRECTORY_SEPARATOR . "\155\151\x6e\x69\x6f\162\x61\x6e\x67\145\137\x73\x70\137\160\162\151\x76\x5f\153\145\171\x2e\153\145\x79";
        $uu = array();
        $Zu = Utilities::decryptElement($oK[0], $OE, $uu, $JM);
        w3:
        if ($Zu->hasAttribute("\x49\x44")) {
            goto tO;
        }
        throw new Exception("\x4d\x69\163\x73\151\156\x67\40\111\x44\x20\x61\164\164\x72\x69\x62\165\x74\x65\40\x6f\156\x20\123\101\115\x4c\x20\141\163\163\x65\x72\x74\151\x6f\156\x2e");
        tO:
        $this->id = $Zu->getAttribute("\x49\104");
        if (!($Zu->getAttribute("\x56\145\162\163\151\157\x6e") !== "\62\56\x30")) {
            goto kf;
        }
        throw new Exception("\125\156\x73\165\160\160\157\162\x74\145\144\40\166\145\162\163\x69\157\x6e\72\40" . $Zu->getAttribute("\x56\145\x72\x73\151\x6f\x6e"));
        kf:
        $this->issueInstant = Utilities::xsDateTimeToTimestamp($Zu->getAttribute("\x49\163\163\x75\145\111\x6e\163\x74\x61\x6e\x74"));
        $xJ = Utilities::xpQuery($Zu, "\56\57\x73\x61\x6d\154\137\x61\x73\x73\x65\x72\x74\151\157\x6e\x3a\111\163\163\x75\x65\162");
        if (!empty($xJ)) {
            goto f4;
        }
        throw new Exception("\115\x69\x73\x73\151\156\147\x20\74\163\x61\x6d\154\72\x49\163\x73\x75\x65\162\76\40\151\x6e\x20\141\x73\163\145\x72\x74\x69\157\156\56");
        f4:
        $this->issuer = trim($xJ[0]->textContent);
        $this->parseConditions($Zu);
        $this->parseAuthnStatement($Zu);
        $this->parseAttributes($Zu);
        $this->parseEncryptedAttributes($Zu);
        $this->parseSignature($Zu);
        $this->parseSubject($Zu);
    }
    private function parseSubject(DOMElement $Zu)
    {
        $mR = Utilities::xpQuery($Zu, "\56\x2f\x73\x61\x6d\x6c\x5f\x61\x73\x73\x65\162\x74\x69\157\x6e\x3a\123\x75\142\x6a\x65\x63\x74");
        if (empty($mR)) {
            goto OV;
        }
        if (count($mR) > 1) {
            goto aV;
        }
        goto pY;
        OV:
        return;
        goto pY;
        aV:
        throw new Exception("\115\x6f\x72\145\40\164\150\141\x6e\x20\x6f\x6e\x65\x20\74\x73\x61\x6d\x6c\x3a\123\x75\142\x6a\145\x63\x74\76\40\151\x6e\40\x3c\x73\141\155\x6c\72\101\x73\x73\x65\x72\164\151\x6f\x6e\76\56");
        pY:
        $mR = $mR[0];
        $jj = Utilities::xpQuery($mR, "\x2e\57\163\141\x6d\x6c\137\x61\163\163\x65\162\x74\x69\157\156\x3a\116\x61\155\145\111\104\x20\x7c\x20\56\x2f\163\x61\x6d\154\137\141\x73\163\145\162\x74\151\157\156\72\105\x6e\x63\x72\x79\160\164\145\x64\x49\104\57\x78\x65\x6e\x63\72\105\156\x63\162\x79\x70\164\145\x64\x44\141\x74\x61");
        if (empty($jj)) {
            goto M4;
        }
        if (count($jj) > 1) {
            goto Qw;
        }
        goto Gb;
        M4:
        throw new Exception("\x4d\x69\x73\163\151\156\147\x20\x3c\163\x61\x6d\x6c\72\x4e\x61\155\145\x49\x44\x3e\x20\157\162\40\74\163\x61\155\154\72\105\x6e\x63\162\171\160\164\145\144\111\104\76\40\151\x6e\40\x3c\x73\141\155\x6c\x3a\x53\x75\x62\x6a\x65\x63\164\76\x2e");
        goto Gb;
        Qw:
        throw new Exception("\x4d\x6f\x72\145\40\x74\x68\x61\x6e\x20\x6f\156\x65\x20\x3c\x73\141\155\x6c\x3a\x4e\141\155\x65\x49\104\76\40\157\x72\x20\74\163\x61\x6d\x6c\72\105\156\x63\162\x79\x70\164\145\144\x44\76\x20\151\156\x20\74\163\141\x6d\x6c\x3a\x53\x75\142\152\x65\x63\x74\x3e\x2e");
        Gb:
        $jj = $jj[0];
        if ($jj->localName === "\105\x6e\143\162\171\x70\x74\x65\144\104\x61\x74\141") {
            goto uy;
        }
        $this->nameId = Utilities::parseNameId($jj);
        goto bl;
        uy:
        $this->encryptedNameId = $jj;
        bl:
    }
    private function parseConditions(DOMElement $Zu)
    {
        $Cs = Utilities::xpQuery($Zu, "\56\57\163\x61\155\x6c\x5f\x61\x73\x73\x65\x72\x74\151\157\156\72\x43\157\156\144\151\164\151\x6f\x6e\163");
        if (empty($Cs)) {
            goto YO;
        }
        if (count($Cs) > 1) {
            goto w_;
        }
        goto TX;
        YO:
        return;
        goto TX;
        w_:
        throw new Exception("\x4d\157\162\x65\40\164\150\x61\x6e\x20\x6f\156\x65\x20\74\x73\x61\x6d\154\72\103\x6f\x6e\x64\151\164\x69\x6f\x6e\163\76\x20\x69\156\40\74\163\141\x6d\x6c\72\101\163\x73\x65\x72\164\151\157\x6e\76\56");
        TX:
        $Cs = $Cs[0];
        if (!$Cs->hasAttribute("\x4e\157\x74\102\x65\x66\157\x72\x65")) {
            goto ze;
        }
        $HP = Utilities::xsDateTimeToTimestamp($Cs->getAttribute("\116\157\164\102\x65\x66\157\x72\x65"));
        if (!($this->notBefore === NULL || $this->notBefore < $HP)) {
            goto TT;
        }
        $this->notBefore = $HP;
        TT:
        ze:
        if (!$Cs->hasAttribute("\x4e\x6f\x74\x4f\156\x4f\162\101\x66\164\x65\x72")) {
            goto Mi;
        }
        $k7 = Utilities::xsDateTimeToTimestamp($Cs->getAttribute("\x4e\x6f\x74\117\x6e\117\x72\101\x66\164\x65\x72"));
        if (!($this->notOnOrAfter === NULL || $this->notOnOrAfter > $k7)) {
            goto Ww;
        }
        $this->notOnOrAfter = $k7;
        Ww:
        Mi:
        $Js = $Cs->firstChild;
        SZ:
        if (!($Js !== NULL)) {
            goto fO;
        }
        if (!$Js instanceof DOMText) {
            goto P6;
        }
        goto l1;
        P6:
        if (!($Js->namespaceURI !== "\x75\x72\x6e\72\157\x61\x73\151\x73\72\x6e\x61\x6d\x65\163\x3a\164\x63\72\123\x41\115\114\x3a\x32\56\x30\x3a\141\163\x73\x65\x72\164\151\157\156")) {
            goto B0;
        }
        throw new Exception("\x55\x6e\153\156\x6f\167\156\40\x6e\141\x6d\145\x73\160\141\143\x65\40\157\x66\x20\143\x6f\x6e\144\151\x74\151\157\156\x3a\x20" . var_export($Js->namespaceURI, TRUE));
        B0:
        switch ($Js->localName) {
            case "\101\x75\144\151\x65\156\143\145\122\x65\x73\x74\x72\151\143\x74\151\x6f\x6e":
                $g0 = Utilities::extractStrings($Js, "\x75\x72\x6e\x3a\x6f\141\163\x69\x73\x3a\156\x61\155\145\163\x3a\164\x63\72\123\x41\115\114\x3a\x32\x2e\x30\x3a\141\163\x73\145\162\x74\x69\157\156", "\101\x75\x64\x69\145\x6e\x63\145");
                if ($this->validAudiences === NULL) {
                    goto iz;
                }
                $this->validAudiences = array_intersect($this->validAudiences, $g0);
                goto UB;
                iz:
                $this->validAudiences = $g0;
                UB:
                goto UD;
            case "\x4f\x6e\145\x54\x69\x6d\x65\125\163\x65":
                goto UD;
            case "\120\x72\x6f\170\x79\x52\145\163\x74\x72\x69\x63\164\x69\157\156":
                goto UD;
            default:
                throw new Exception("\x55\x6e\x6b\156\157\x77\x6e\x20\143\157\x6e\144\x69\x74\151\x6f\156\72\40" . var_export($Js->localName, TRUE));
        }
        PG:
        UD:
        l1:
        $Js = $Js->nextSibling;
        goto SZ;
        fO:
    }
    private function parseAuthnStatement(DOMElement $Zu)
    {
        $yG = Utilities::xpQuery($Zu, "\56\x2f\x73\x61\155\154\x5f\141\x73\x73\x65\162\164\151\x6f\x6e\x3a\x41\x75\x74\x68\156\x53\164\141\164\x65\x6d\145\156\164");
        if (empty($yG)) {
            goto I9;
        }
        if (count($yG) > 1) {
            goto GY;
        }
        goto I2;
        I9:
        $this->authnInstant = NULL;
        return;
        goto I2;
        GY:
        throw new Exception("\x4d\x6f\x72\x65\40\164\150\x61\164\x20\157\x6e\145\40\x3c\163\x61\x6d\154\72\101\x75\164\150\156\x53\x74\x61\x74\145\155\x65\x6e\164\x3e\40\151\156\40\x3c\163\141\x6d\154\72\x41\x73\x73\x65\162\164\151\157\156\76\x20\x6e\x6f\x74\40\163\165\160\x70\x6f\162\164\x65\144\56");
        I2:
        $cB = $yG[0];
        if ($cB->hasAttribute("\x41\x75\164\150\156\x49\x6e\x73\x74\x61\x6e\164")) {
            goto Ue;
        }
        throw new Exception("\115\x69\x73\x73\x69\156\x67\x20\162\x65\161\x75\x69\162\145\144\40\101\165\164\150\x6e\111\x6e\x73\x74\141\x6e\x74\x20\141\164\x74\162\x69\142\165\x74\145\40\x6f\x6e\x20\74\163\141\155\x6c\x3a\x41\165\x74\150\x6e\123\164\x61\x74\x65\155\145\x6e\164\76\56");
        Ue:
        $this->authnInstant = Utilities::xsDateTimeToTimestamp($cB->getAttribute("\101\165\x74\x68\x6e\x49\x6e\163\164\141\156\164"));
        if (!$cB->hasAttribute("\x53\x65\x73\163\151\x6f\x6e\x4e\x6f\164\x4f\x6e\117\162\x41\x66\x74\145\162")) {
            goto mE;
        }
        $this->sessionNotOnOrAfter = Utilities::xsDateTimeToTimestamp($cB->getAttribute("\123\x65\163\x73\x69\157\x6e\116\157\164\117\x6e\x4f\162\101\146\164\145\x72"));
        mE:
        if (!$cB->hasAttribute("\x53\x65\163\x73\x69\157\x6e\x49\156\x64\145\170")) {
            goto iA;
        }
        $this->sessionIndex = $cB->getAttribute("\x53\145\x73\163\151\x6f\156\111\156\144\145\x78");
        iA:
        $this->parseAuthnContext($cB);
    }
    private function parseAuthnContext(DOMElement $bE)
    {
        $vE = Utilities::xpQuery($bE, "\56\x2f\163\x61\155\154\x5f\x61\x73\x73\x65\x72\x74\x69\157\x6e\72\x41\165\164\x68\x6e\x43\x6f\x6e\164\145\170\164");
        if (count($vE) > 1) {
            goto lK;
        }
        if (empty($vE)) {
            goto Cw;
        }
        goto bI;
        lK:
        throw new Exception("\115\157\x72\145\x20\x74\x68\x61\x6e\40\x6f\156\x65\40\74\163\141\x6d\154\x3a\101\165\x74\150\x6e\x43\x6f\156\x74\145\x78\x74\76\x20\151\x6e\x20\74\163\141\155\154\x3a\101\165\164\x68\x6e\x53\164\141\x74\x65\x6d\145\156\x74\x3e\x2e");
        goto bI;
        Cw:
        throw new Exception("\115\x69\x73\x73\x69\156\147\x20\162\x65\x71\165\151\162\x65\x64\x20\x3c\163\x61\x6d\154\x3a\x41\165\x74\x68\156\x43\x6f\156\x74\x65\170\164\x3e\x20\x69\156\x20\74\163\x61\x6d\x6c\x3a\101\165\x74\x68\x6e\x53\164\141\164\145\155\x65\x6e\x74\76\x2e");
        bI:
        $iC = $vE[0];
        $dj = Utilities::xpQuery($iC, "\56\x2f\x73\x61\155\x6c\x5f\141\163\163\x65\162\x74\x69\157\x6e\x3a\x41\x75\x74\150\156\103\157\156\x74\145\170\x74\x44\145\143\154\122\145\146");
        if (count($dj) > 1) {
            goto rz;
        }
        if (count($dj) === 1) {
            goto PH;
        }
        goto BX;
        rz:
        throw new Exception("\115\x6f\162\x65\x20\x74\x68\x61\x6e\x20\157\x6e\145\x20\74\x73\x61\155\154\72\101\x75\164\x68\x6e\x43\157\x6e\x74\145\x78\x74\104\145\x63\x6c\x52\145\146\x3e\x20\x66\157\165\156\x64\77");
        goto BX;
        PH:
        $this->setAuthnContextDeclRef(trim($dj[0]->textContent));
        BX:
        $z7 = Utilities::xpQuery($iC, "\x2e\x2f\x73\x61\155\x6c\137\141\163\163\x65\162\x74\151\157\156\72\x41\x75\164\150\156\103\x6f\156\164\x65\x78\x74\104\145\x63\154");
        if (count($z7) > 1) {
            goto qd;
        }
        if (count($z7) === 1) {
            goto QQ;
        }
        goto wz;
        qd:
        throw new Exception("\x4d\157\x72\x65\40\164\x68\141\x6e\40\x6f\156\145\x20\74\163\x61\x6d\154\72\101\x75\x74\150\156\103\157\156\x74\x65\x78\x74\x44\145\143\154\x3e\40\146\x6f\x75\x6e\144\x3f");
        goto wz;
        QQ:
        $this->setAuthnContextDecl(new SAML2_XML_Chunk($z7[0]));
        wz:
        $AV = Utilities::xpQuery($iC, "\56\x2f\163\x61\x6d\x6c\137\141\163\x73\145\x72\x74\151\157\x6e\x3a\101\165\x74\150\x6e\x43\x6f\156\164\145\170\164\x43\x6c\141\163\x73\x52\x65\x66");
        if (count($AV) > 1) {
            goto Fz;
        }
        if (count($AV) === 1) {
            goto hU;
        }
        goto Tw;
        Fz:
        throw new Exception("\115\157\x72\145\x20\164\x68\141\156\x20\x6f\156\145\40\74\x73\141\155\x6c\72\101\165\x74\x68\156\x43\x6f\156\164\x65\x78\x74\x43\x6c\x61\x73\x73\x52\145\146\x3e\40\x69\x6e\x20\74\163\x61\x6d\154\72\101\165\x74\x68\156\x43\x6f\x6e\x74\145\170\x74\76\x2e");
        goto Tw;
        hU:
        $this->setAuthnContextClassRef(trim($AV[0]->textContent));
        Tw:
        if (!(empty($this->authnContextClassRef) && empty($this->authnContextDecl) && empty($this->authnContextDeclRef))) {
            goto Kx;
        }
        throw new Exception("\x4d\151\163\163\x69\156\x67\40\145\151\x74\150\x65\162\40\x3c\x73\141\155\x6c\72\x41\165\164\x68\x6e\103\157\x6e\164\x65\x78\x74\103\154\141\163\163\122\x65\x66\x3e\40\157\x72\x20\74\163\x61\x6d\x6c\x3a\x41\x75\164\x68\156\x43\157\x6e\164\x65\x78\x74\104\x65\x63\x6c\x52\x65\146\x3e\x20\157\x72\x20\74\163\x61\155\154\72\101\x75\x74\150\x6e\x43\x6f\x6e\164\x65\x78\x74\x44\x65\x63\154\x3e");
        Kx:
        $this->AuthenticatingAuthority = Utilities::extractStrings($iC, "\x75\162\x6e\72\157\141\163\x69\163\72\x6e\x61\x6d\x65\163\x3a\164\143\72\x53\101\115\x4c\x3a\x32\56\x30\x3a\x61\163\163\145\x72\x74\x69\x6f\x6e", "\x41\x75\164\x68\145\156\164\151\x63\141\x74\151\x6e\x67\101\x75\164\x68\x6f\x72\x69\164\x79");
    }
    private function parseAttributes(DOMElement $Zu)
    {
        $nL = TRUE;
        $ws = Utilities::xpQuery($Zu, "\56\57\x73\x61\x6d\x6c\x5f\141\x73\163\145\162\x74\151\157\156\72\x41\x74\x74\162\x69\142\165\x74\x65\123\164\x61\164\145\x6d\145\x6e\x74\57\163\141\x6d\154\x5f\141\x73\x73\145\x72\x74\151\x6f\156\72\101\164\164\162\x69\142\x75\164\x65");
        foreach ($ws as $kj) {
            if ($kj->hasAttribute("\116\141\155\x65")) {
                goto jk;
            }
            throw new Exception("\115\x69\163\x73\151\156\147\40\x6e\141\155\x65\x20\157\156\40\x3c\163\141\155\x6c\72\101\x74\164\162\151\x62\165\x74\145\76\x20\x65\x6c\145\x6d\145\x6e\x74\x2e");
            jk:
            $Pj = $kj->getAttribute("\x4e\141\155\145");
            if ($kj->hasAttribute("\116\x61\155\x65\106\x6f\x72\155\x61\x74")) {
                goto YV;
            }
            $KI = "\165\x72\156\72\157\x61\x73\151\163\x3a\156\x61\155\x65\163\72\x74\143\x3a\x53\101\x4d\x4c\72\61\x2e\61\x3a\x6e\x61\155\x65\151\x64\x2d\x66\157\x72\x6d\141\164\72\165\156\x73\x70\145\143\x69\x66\x69\145\x64";
            goto L0;
            YV:
            $KI = $kj->getAttribute("\x4e\x61\155\x65\x46\157\162\155\x61\164");
            L0:
            if ($nL) {
                goto SN;
            }
            if (!($this->nameFormat !== $KI)) {
                goto Jl;
            }
            $this->nameFormat = "\165\x72\156\x3a\157\141\x73\x69\x73\72\156\x61\x6d\x65\163\x3a\x74\x63\72\x53\101\x4d\x4c\72\x31\56\x31\x3a\156\x61\155\x65\x69\x64\55\146\157\162\x6d\141\164\72\165\156\163\x70\145\x63\151\x66\x69\145\x64";
            Jl:
            goto LB;
            SN:
            $this->nameFormat = $KI;
            $nL = FALSE;
            LB:
            if (array_key_exists($Pj, $this->attributes)) {
                goto qc;
            }
            $this->attributes[$Pj] = array();
            qc:
            $Of = Utilities::xpQuery($kj, "\x2e\57\163\x61\155\154\x5f\x61\x73\163\145\x72\164\151\x6f\x6e\x3a\x41\x74\164\162\x69\142\x75\164\x65\x56\141\x6c\x75\x65");
            foreach ($Of as $D7) {
                $this->attributes[$Pj][] = trim($D7->textContent);
                o0:
            }
            rN:
            vb:
        }
        uw:
    }
    private function parseEncryptedAttributes(DOMElement $Zu)
    {
        $this->encryptedAttribute = Utilities::xpQuery($Zu, "\x2e\x2f\163\x61\155\154\x5f\141\x73\163\145\162\164\x69\x6f\156\x3a\x41\x74\164\162\x69\x62\165\164\x65\x53\x74\141\164\145\x6d\x65\156\164\57\163\141\155\154\137\x61\x73\x73\x65\x72\164\x69\x6f\x6e\72\105\x6e\x63\162\x79\160\164\x65\144\101\x74\x74\162\151\142\165\164\x65");
    }
    private function parseSignature(DOMElement $Zu)
    {
        $Cm = Utilities::validateElement($Zu);
        if (!($Cm !== FALSE)) {
            goto eM;
        }
        $this->wasSignedAtConstruction = TRUE;
        $this->certificates = $Cm["\103\145\x72\x74\151\146\151\143\x61\x74\x65\163"];
        $this->signatureData = $Cm;
        eM:
    }
    public function validate(XMLSecurityKey $OE)
    {
        if (!($this->signatureData === NULL)) {
            goto Mv;
        }
        return FALSE;
        Mv:
        Utilities::validateSignature($this->signatureData, $OE);
        return TRUE;
    }
    public function getId()
    {
        return $this->id;
    }
    public function setId($L8)
    {
        $this->id = $L8;
    }
    public function getIssueInstant()
    {
        return $this->issueInstant;
    }
    public function setIssueInstant($rz)
    {
        $this->issueInstant = $rz;
    }
    public function getIssuer()
    {
        return $this->issuer;
    }
    public function setIssuer($xJ)
    {
        $this->issuer = $xJ;
    }
    public function getNameId()
    {
        if (!($this->encryptedNameId !== NULL)) {
            goto DY;
        }
        throw new Exception("\101\164\164\x65\155\x70\164\x65\144\40\x74\157\40\162\x65\164\162\x69\145\x76\x65\40\145\x6e\x63\162\x79\x70\x74\x65\144\x20\x4e\141\155\145\x49\x44\40\167\x69\164\x68\157\165\164\x20\144\145\143\162\171\x70\x74\151\156\x67\x20\151\164\40\146\x69\162\x73\164\x2e");
        DY:
        return $this->nameId;
    }
    public function setNameId($jj)
    {
        $this->nameId = $jj;
    }
    public function isNameIdEncrypted()
    {
        if (!($this->encryptedNameId !== NULL)) {
            goto oo;
        }
        return TRUE;
        oo:
        return FALSE;
    }
    public function encryptNameId(XMLSecurityKey $OE)
    {
        $CI = new DOMDocument();
        $ai = $CI->createElement("\162\157\x6f\164");
        $CI->appendChild($ai);
        Utilities::addNameId($ai, $this->nameId);
        $jj = $ai->firstChild;
        Utilities::getContainer()->debugMessage($jj, "\145\156\143\162\171\x70\164");
        $GN = new XMLSecEnc();
        $GN->setNode($jj);
        $GN->type = XMLSecEnc::Element;
        $o4 = new XMLSecurityKey(XMLSecurityKey::AES128_CBC);
        $o4->generateSessionKey();
        $GN->encryptKey($OE, $o4);
        $this->encryptedNameId = $GN->encryptNode($o4);
        $this->nameId = NULL;
    }
    public function decryptNameId(XMLSecurityKey $OE, array $uu = array())
    {
        if (!($this->encryptedNameId === NULL)) {
            goto vn;
        }
        return;
        vn:
        $jj = Utilities::decryptElement($this->encryptedNameId, $OE, $uu);
        Utilities::getContainer()->debugMessage($jj, "\144\145\143\162\x79\x70\x74");
        $this->nameId = Utilities::parseNameId($jj);
        $this->encryptedNameId = NULL;
    }
    public function decryptAttributes(XMLSecurityKey $OE, array $uu = array())
    {
        if (!($this->encryptedAttribute === NULL)) {
            goto I4;
        }
        return;
        I4:
        $nL = TRUE;
        $ws = $this->encryptedAttribute;
        foreach ($ws as $QY) {
            $kj = Utilities::decryptElement($QY->getElementsByTagName("\x45\x6e\143\x72\171\x70\164\x65\144\x44\141\164\141")->item(0), $OE, $uu);
            if ($kj->hasAttribute("\x4e\x61\x6d\145")) {
                goto X3;
            }
            throw new Exception("\x4d\x69\163\163\x69\156\x67\40\156\141\x6d\145\x20\x6f\x6e\x20\74\x73\141\155\x6c\x3a\x41\x74\x74\162\151\142\x75\164\x65\76\40\145\154\145\155\145\x6e\x74\x2e");
            X3:
            $Pj = $kj->getAttribute("\116\141\x6d\x65");
            if ($kj->hasAttribute("\116\x61\155\145\x46\157\162\x6d\x61\x74")) {
                goto oZ;
            }
            $KI = "\x75\162\x6e\72\x6f\x61\163\x69\x73\72\156\141\155\x65\163\x3a\x74\143\x3a\123\x41\x4d\114\72\x32\56\x30\72\x61\x74\x74\162\156\x61\x6d\x65\55\x66\x6f\162\x6d\141\164\72\x75\x6e\163\x70\x65\x63\151\x66\151\145\144";
            goto fb;
            oZ:
            $KI = $kj->getAttribute("\x4e\x61\155\145\106\157\162\155\x61\x74");
            fb:
            if ($nL) {
                goto mc;
            }
            if (!($this->nameFormat !== $KI)) {
                goto Nr;
            }
            $this->nameFormat = "\x75\x72\x6e\72\157\x61\x73\x69\x73\x3a\156\x61\155\x65\x73\72\164\x63\72\x53\x41\115\114\72\x32\x2e\x30\72\x61\x74\x74\x72\x6e\141\x6d\145\55\x66\157\162\155\x61\x74\72\165\156\163\x70\145\x63\151\146\x69\145\x64";
            Nr:
            goto WP;
            mc:
            $this->nameFormat = $KI;
            $nL = FALSE;
            WP:
            if (array_key_exists($Pj, $this->attributes)) {
                goto Z0;
            }
            $this->attributes[$Pj] = array();
            Z0:
            $Of = Utilities::xpQuery($kj, "\56\57\163\141\x6d\x6c\x5f\x61\x73\163\x65\162\x74\151\157\x6e\x3a\101\x74\164\x72\151\142\x75\164\145\126\141\154\165\x65");
            foreach ($Of as $D7) {
                $this->attributes[$Pj][] = trim($D7->textContent);
                gl:
            }
            qN:
            kr:
        }
        hi:
    }
    public function getNotBefore()
    {
        return $this->notBefore;
    }
    public function setNotBefore($HP)
    {
        $this->notBefore = $HP;
    }
    public function getNotOnOrAfter()
    {
        return $this->notOnOrAfter;
    }
    public function setNotOnOrAfter($k7)
    {
        $this->notOnOrAfter = $k7;
    }
    public function setEncryptedAttributes($eh)
    {
        $this->requiredEncAttributes = $eh;
    }
    public function getValidAudiences()
    {
        return $this->validAudiences;
    }
    public function setValidAudiences(array $eD = NULL)
    {
        $this->validAudiences = $eD;
    }
    public function getAuthnInstant()
    {
        return $this->authnInstant;
    }
    public function setAuthnInstant($HD)
    {
        $this->authnInstant = $HD;
    }
    public function getSessionNotOnOrAfter()
    {
        return $this->sessionNotOnOrAfter;
    }
    public function setSessionNotOnOrAfter($MI)
    {
        $this->sessionNotOnOrAfter = $MI;
    }
    public function getSessionIndex()
    {
        return $this->sessionIndex;
    }
    public function setSessionIndex($FZ)
    {
        $this->sessionIndex = $FZ;
    }
    public function getAuthnContext()
    {
        if (empty($this->authnContextClassRef)) {
            goto G6;
        }
        return $this->authnContextClassRef;
        G6:
        if (empty($this->authnContextDeclRef)) {
            goto rd;
        }
        return $this->authnContextDeclRef;
        rd:
        return NULL;
    }
    public function setAuthnContext($Sw)
    {
        $this->setAuthnContextClassRef($Sw);
    }
    public function getAuthnContextClassRef()
    {
        return $this->authnContextClassRef;
    }
    public function setAuthnContextClassRef($uG)
    {
        $this->authnContextClassRef = $uG;
    }
    public function setAuthnContextDecl(SAML2_XML_Chunk $i1)
    {
        if (empty($this->authnContextDeclRef)) {
            goto de;
        }
        throw new Exception("\x41\x75\x74\150\156\103\x6f\156\x74\145\x78\x74\x44\x65\x63\154\x52\x65\x66\x20\151\163\x20\141\x6c\x72\145\141\x64\171\40\x72\145\147\x69\163\x74\x65\162\x65\144\41\40\x4d\141\171\x20\x6f\x6e\154\171\40\150\141\x76\x65\x20\145\x69\164\x68\145\162\x20\x61\x20\104\x65\x63\x6c\x20\157\162\x20\x61\x20\x44\x65\x63\x6c\122\145\x66\x2c\40\x6e\157\x74\40\x62\x6f\164\x68\41");
        de:
        $this->authnContextDecl = $i1;
    }
    public function getAuthnContextDecl()
    {
        return $this->authnContextDecl;
    }
    public function setAuthnContextDeclRef($LK)
    {
        if (empty($this->authnContextDecl)) {
            goto n1;
        }
        throw new Exception("\x41\165\x74\x68\156\x43\x6f\x6e\164\145\x78\x74\x44\145\x63\x6c\40\x69\x73\x20\141\x6c\x72\145\x61\x64\171\x20\x72\145\x67\151\x73\x74\145\x72\x65\x64\x21\40\x4d\141\x79\40\x6f\x6e\154\171\x20\x68\x61\x76\145\x20\145\151\x74\150\x65\162\x20\141\40\104\145\x63\x6c\x20\x6f\x72\x20\x61\40\104\145\143\x6c\x52\x65\x66\x2c\40\x6e\x6f\164\x20\x62\157\x74\x68\41");
        n1:
        $this->authnContextDeclRef = $LK;
    }
    public function getAuthnContextDeclRef()
    {
        return $this->authnContextDeclRef;
    }
    public function getAuthenticatingAuthority()
    {
        return $this->AuthenticatingAuthority;
    }
    public function setAuthenticatingAuthority($L0)
    {
        $this->AuthenticatingAuthority = $L0;
    }
    public function getAttributes()
    {
        return $this->attributes;
    }
    public function setAttributes(array $ws)
    {
        $this->attributes = $ws;
    }
    public function getAttributeNameFormat()
    {
        return $this->nameFormat;
    }
    public function setAttributeNameFormat($KI)
    {
        $this->nameFormat = $KI;
    }
    public function getSubjectConfirmation()
    {
        return $this->SubjectConfirmation;
    }
    public function setSubjectConfirmation(array $Lq)
    {
        $this->SubjectConfirmation = $Lq;
    }
    public function getSignatureKey()
    {
        return $this->signatureKey;
    }
    public function setSignatureKey(XMLsecurityKey $mo = NULL)
    {
        $this->signatureKey = $mo;
    }
    public function getEncryptionKey()
    {
        return $this->encryptionKey;
    }
    public function setEncryptionKey(XMLSecurityKey $ez = NULL)
    {
        $this->encryptionKey = $ez;
    }
    public function setCertificates(array $Mg)
    {
        $this->certificates = $Mg;
    }
    public function getCertificates()
    {
        return $this->certificates;
    }
    public function getSignatureData()
    {
        return $this->signatureData;
    }
    public function getWasSignedAtConstruction()
    {
        return $this->wasSignedAtConstruction;
    }
    public function toXML(DOMNode $wg = NULL)
    {
        if ($wg === NULL) {
            goto ub;
        }
        $vs = $wg->ownerDocument;
        goto CE;
        ub:
        $vs = new DOMDocument();
        $wg = $vs;
        CE:
        $ai = $vs->createElementNS("\x75\162\156\72\157\x61\163\151\163\x3a\x6e\x61\x6d\145\x73\72\164\143\72\x53\x41\x4d\114\x3a\x32\56\60\72\x61\x73\163\145\162\x74\x69\x6f\x6e", "\x73\141\155\x6c\x3a" . "\x41\x73\x73\145\x72\x74\151\x6f\x6e");
        $wg->appendChild($ai);
        $ai->setAttributeNS("\165\x72\x6e\x3a\x6f\x61\x73\x69\163\72\156\x61\155\145\163\72\x74\x63\72\x53\x41\x4d\114\72\x32\x2e\60\x3a\x70\162\157\x74\x6f\143\157\154", "\x73\x61\155\x6c\x70\72\x74\x6d\160", "\x74\155\x70");
        $ai->removeAttributeNS("\165\x72\156\72\157\x61\x73\x69\x73\72\x6e\141\x6d\145\x73\x3a\x74\x63\72\x53\101\115\114\72\62\x2e\x30\x3a\160\162\157\x74\157\143\x6f\x6c", "\164\x6d\x70");
        $ai->setAttributeNS("\x68\x74\x74\x70\72\57\57\x77\x77\167\x2e\x77\x33\56\x6f\162\147\x2f\x32\x30\60\61\57\130\x4d\114\123\x63\x68\145\155\x61\x2d\x69\156\x73\x74\x61\x6e\143\x65", "\170\163\151\72\x74\155\160", "\x74\155\160");
        $ai->removeAttributeNS("\x68\164\164\x70\72\57\x2f\167\x77\167\x2e\167\x33\x2e\x6f\162\147\x2f\62\60\x30\x31\57\x58\115\114\123\143\150\x65\155\141\55\151\156\163\164\141\x6e\143\145", "\x74\155\x70");
        $ai->setAttributeNS("\x68\164\164\x70\72\57\57\167\x77\167\56\167\x33\56\157\162\147\57\x32\x30\60\61\x2f\130\115\114\x53\x63\150\x65\x6d\x61", "\x78\x73\x3a\x74\x6d\x70", "\164\155\x70");
        $ai->removeAttributeNS("\x68\164\164\160\x3a\x2f\57\167\167\167\56\x77\x33\56\157\162\147\x2f\62\x30\x30\61\57\130\115\114\123\143\150\145\x6d\x61", "\x74\x6d\160");
        $ai->setAttribute("\x49\104", $this->id);
        $ai->setAttribute("\x56\x65\162\163\151\157\156", "\62\x2e\x30");
        $ai->setAttribute("\111\x73\163\165\x65\111\156\x73\164\x61\156\x74", gmdate("\x59\x2d\155\55\x64\x5c\x54\110\x3a\x69\72\163\x5c\132", $this->issueInstant));
        $xJ = Utilities::addString($ai, "\x75\162\156\72\x6f\141\x73\x69\x73\x3a\156\x61\155\145\163\72\x74\x63\x3a\x53\101\x4d\x4c\x3a\x32\x2e\60\72\141\x73\163\145\162\x74\151\157\x6e", "\163\141\155\154\x3a\111\x73\163\x75\x65\162", $this->issuer);
        $this->addSubject($ai);
        $this->addConditions($ai);
        $this->addAuthnStatement($ai);
        if ($this->requiredEncAttributes == FALSE) {
            goto cl;
        }
        $this->addEncryptedAttributeStatement($ai);
        goto N6;
        cl:
        $this->addAttributeStatement($ai);
        N6:
        if (!($this->signatureKey !== NULL)) {
            goto yU;
        }
        Utilities::insertSignature($this->signatureKey, $this->certificates, $ai, $xJ->nextSibling);
        yU:
        return $ai;
    }
    private function addSubject(DOMElement $ai)
    {
        if (!($this->nameId === NULL && $this->encryptedNameId === NULL)) {
            goto s8;
        }
        return;
        s8:
        $mR = $ai->ownerDocument->createElementNS("\165\162\x6e\72\157\141\163\x69\163\72\156\x61\155\x65\x73\x3a\x74\x63\72\123\101\x4d\114\x3a\62\x2e\60\x3a\x61\x73\163\145\162\x74\x69\157\156", "\x73\x61\x6d\x6c\72\x53\x75\x62\152\145\143\164");
        $ai->appendChild($mR);
        if ($this->encryptedNameId === NULL) {
            goto vS;
        }
        $ra = $mR->ownerDocument->createElementNS("\x75\162\156\x3a\157\x61\x73\151\163\72\156\x61\x6d\145\163\72\x74\x63\72\123\x41\115\114\72\62\x2e\60\x3a\141\163\x73\145\162\164\x69\x6f\156", "\x73\x61\155\x6c\x3a" . "\x45\x6e\143\162\x79\x70\x74\145\144\111\x44");
        $mR->appendChild($ra);
        $ra->appendChild($mR->ownerDocument->importNode($this->encryptedNameId, TRUE));
        goto f8;
        vS:
        Utilities::addNameId($mR, $this->nameId);
        f8:
        foreach ($this->SubjectConfirmation as $ct) {
            $ct->toXML($mR);
            LD:
        }
        rX:
    }
    private function addConditions(DOMElement $ai)
    {
        $vs = $ai->ownerDocument;
        $Cs = $vs->createElementNS("\x75\162\156\x3a\157\141\163\151\163\x3a\x6e\141\x6d\x65\163\72\x74\x63\x3a\x53\101\115\x4c\72\x32\56\x30\72\141\x73\x73\145\x72\x74\151\x6f\x6e", "\163\x61\x6d\154\x3a\103\157\156\x64\151\164\x69\x6f\x6e\x73");
        $ai->appendChild($Cs);
        if (!($this->notBefore !== NULL)) {
            goto EE;
        }
        $Cs->setAttribute("\116\157\164\102\x65\x66\157\x72\x65", gmdate("\131\x2d\155\55\144\134\124\x48\72\x69\x3a\x73\x5c\132", $this->notBefore));
        EE:
        if (!($this->notOnOrAfter !== NULL)) {
            goto R6;
        }
        $Cs->setAttribute("\116\x6f\164\117\156\x4f\162\101\x66\x74\x65\x72", gmdate("\131\55\x6d\x2d\x64\134\x54\x48\72\x69\72\x73\x5c\x5a", $this->notOnOrAfter));
        R6:
        if (!($this->validAudiences !== NULL)) {
            goto eS;
        }
        $bm = $vs->createElementNS("\165\162\x6e\x3a\157\x61\163\x69\x73\72\156\141\x6d\x65\x73\x3a\164\143\72\123\101\115\114\72\x32\56\x30\72\141\163\163\x65\162\x74\151\157\x6e", "\163\x61\x6d\154\72\x41\165\144\151\x65\156\x63\x65\122\145\x73\x74\162\151\x63\x74\x69\157\156");
        $Cs->appendChild($bm);
        Utilities::addStrings($bm, "\165\162\x6e\x3a\157\x61\163\x69\163\72\156\141\155\x65\x73\x3a\x74\143\x3a\123\101\115\x4c\x3a\x32\x2e\x30\72\141\163\x73\145\162\164\151\157\156", "\163\141\x6d\154\72\x41\x75\x64\x69\x65\156\143\x65", FALSE, $this->validAudiences);
        eS:
    }
    private function addAuthnStatement(DOMElement $ai)
    {
        if (!($this->authnInstant === NULL || $this->authnContextClassRef === NULL && $this->authnContextDecl === NULL && $this->authnContextDeclRef === NULL)) {
            goto Ob;
        }
        return;
        Ob:
        $vs = $ai->ownerDocument;
        $bE = $vs->createElementNS("\165\x72\x6e\x3a\x6f\x61\163\151\163\x3a\x6e\141\155\x65\x73\72\x74\x63\72\x53\x41\x4d\x4c\72\62\x2e\60\72\141\163\x73\x65\162\164\151\157\x6e", "\x73\141\x6d\154\x3a\x41\x75\x74\x68\x6e\123\x74\141\x74\x65\x6d\145\156\164");
        $ai->appendChild($bE);
        $bE->setAttribute("\x41\165\164\x68\156\111\156\163\164\141\156\164", gmdate("\131\55\x6d\x2d\x64\x5c\x54\x48\72\151\72\x73\x5c\x5a", $this->authnInstant));
        if (!($this->sessionNotOnOrAfter !== NULL)) {
            goto lW;
        }
        $bE->setAttribute("\x53\x65\163\x73\x69\x6f\156\116\x6f\x74\117\156\117\162\x41\146\x74\145\162", gmdate("\131\x2d\155\x2d\144\x5c\x54\x48\x3a\x69\72\x73\x5c\x5a", $this->sessionNotOnOrAfter));
        lW:
        if (!($this->sessionIndex !== NULL)) {
            goto wY;
        }
        $bE->setAttribute("\123\x65\x73\163\151\157\x6e\111\x6e\144\145\x78", $this->sessionIndex);
        wY:
        $iC = $vs->createElementNS("\x75\x72\156\72\x6f\x61\163\151\x73\x3a\x6e\141\155\x65\x73\x3a\164\x63\72\x53\x41\x4d\x4c\72\62\x2e\60\72\141\163\163\145\162\164\151\157\x6e", "\163\x61\155\154\x3a\101\x75\x74\x68\156\x43\157\x6e\x74\x65\170\164");
        $bE->appendChild($iC);
        if (empty($this->authnContextClassRef)) {
            goto hd;
        }
        Utilities::addString($iC, "\165\x72\156\x3a\x6f\141\x73\x69\163\72\156\x61\x6d\x65\x73\72\164\143\72\123\101\x4d\114\72\x32\56\x30\72\141\x73\163\145\x72\164\151\x6f\x6e", "\163\141\155\x6c\x3a\101\165\164\x68\156\x43\x6f\156\164\145\x78\164\103\x6c\141\163\163\122\145\x66", $this->authnContextClassRef);
        hd:
        if (empty($this->authnContextDecl)) {
            goto zF;
        }
        $this->authnContextDecl->toXML($iC);
        zF:
        if (empty($this->authnContextDeclRef)) {
            goto Sc;
        }
        Utilities::addString($iC, "\x75\162\x6e\72\157\141\x73\151\x73\72\x6e\x61\x6d\145\x73\72\164\x63\x3a\x53\x41\115\x4c\72\62\x2e\x30\x3a\x61\163\x73\x65\x72\164\x69\x6f\x6e", "\163\141\155\154\72\x41\x75\x74\x68\156\x43\157\x6e\x74\145\x78\x74\x44\x65\143\x6c\x52\145\x66", $this->authnContextDeclRef);
        Sc:
        Utilities::addStrings($iC, "\165\162\x6e\72\x6f\141\163\x69\163\72\x6e\x61\x6d\145\x73\x3a\164\x63\72\x53\101\115\x4c\72\62\x2e\x30\x3a\x61\163\163\x65\162\x74\151\x6f\156", "\163\141\155\x6c\72\x41\x75\164\150\x65\x6e\164\x69\143\141\164\x69\156\147\101\165\x74\150\157\x72\x69\x74\x79", FALSE, $this->AuthenticatingAuthority);
    }
    private function addAttributeStatement(DOMElement $ai)
    {
        if (!empty($this->attributes)) {
            goto ym;
        }
        return;
        ym:
        $vs = $ai->ownerDocument;
        $Ni = $vs->createElementNS("\165\162\x6e\72\157\141\x73\x69\163\72\x6e\141\x6d\145\x73\72\164\143\72\x53\x41\115\x4c\72\62\x2e\x30\72\x61\x73\163\x65\x72\x74\151\x6f\x6e", "\163\141\155\x6c\x3a\x41\164\x74\x72\x69\x62\x75\x74\x65\123\164\x61\x74\x65\x6d\145\156\x74");
        $ai->appendChild($Ni);
        foreach ($this->attributes as $Pj => $Of) {
            $kj = $vs->createElementNS("\x75\162\x6e\72\x6f\x61\x73\151\x73\x3a\156\141\x6d\145\163\x3a\164\x63\x3a\x53\x41\115\x4c\x3a\x32\x2e\x30\x3a\141\x73\163\x65\162\x74\151\x6f\x6e", "\163\x61\155\154\x3a\101\164\x74\162\x69\x62\165\164\x65");
            $Ni->appendChild($kj);
            $kj->setAttribute("\x4e\x61\x6d\145", $Pj);
            if (!($this->nameFormat !== "\x75\x72\156\72\157\x61\x73\151\163\x3a\x6e\141\x6d\145\163\72\x74\x63\x3a\x53\x41\115\x4c\72\62\56\60\x3a\x61\x74\164\162\156\x61\155\x65\x2d\146\x6f\x72\155\141\164\x3a\x75\156\x73\160\x65\x63\x69\146\151\x65\144")) {
                goto x2;
            }
            $kj->setAttribute("\x4e\141\x6d\145\x46\x6f\x72\x6d\141\164", $this->nameFormat);
            x2:
            foreach ($Of as $D7) {
                if (is_string($D7)) {
                    goto Fp;
                }
                if (is_int($D7)) {
                    goto FQ;
                }
                $DF = NULL;
                goto tb;
                Fp:
                $DF = "\170\x73\x3a\163\164\162\x69\156\147";
                goto tb;
                FQ:
                $DF = "\170\163\x3a\151\x6e\164\145\147\145\x72";
                tb:
                $PU = $vs->createElementNS("\165\x72\156\72\x6f\x61\163\x69\163\72\156\x61\155\145\163\x3a\164\x63\x3a\123\x41\115\114\72\x32\56\60\72\141\163\x73\x65\162\164\x69\157\x6e", "\x73\141\x6d\154\72\101\x74\x74\x72\151\x62\165\164\x65\x56\x61\x6c\x75\145");
                $kj->appendChild($PU);
                if (!($DF !== NULL)) {
                    goto QB;
                }
                $PU->setAttributeNS("\x68\x74\164\x70\x3a\57\57\167\167\x77\56\x77\x33\56\157\x72\147\x2f\62\60\x30\x31\x2f\130\115\114\x53\x63\x68\145\155\x61\55\x69\156\x73\x74\141\x6e\143\x65", "\x78\x73\x69\72\164\x79\160\x65", $DF);
                QB:
                if (!is_null($D7)) {
                    goto jz;
                }
                $PU->setAttributeNS("\150\x74\x74\x70\72\57\x2f\x77\x77\x77\x2e\x77\63\x2e\x6f\x72\x67\x2f\x32\60\x30\61\x2f\130\x4d\114\123\x63\150\x65\155\141\55\151\156\x73\164\x61\156\143\x65", "\x78\x73\151\72\156\x69\154", "\x74\x72\x75\x65");
                jz:
                if ($D7 instanceof DOMNodeList) {
                    goto c2;
                }
                $PU->appendChild($vs->createTextNode($D7));
                goto O2;
                c2:
                $n2 = 0;
                A_:
                if (!($n2 < $D7->length)) {
                    goto IV;
                }
                $Js = $vs->importNode($D7->item($n2), TRUE);
                $PU->appendChild($Js);
                x3:
                $n2++;
                goto A_;
                IV:
                O2:
                bM:
            }
            bF:
            yZ:
        }
        cZ:
    }
    private function addEncryptedAttributeStatement(DOMElement $ai)
    {
        if (!($this->requiredEncAttributes == FALSE)) {
            goto gz;
        }
        return;
        gz:
        $vs = $ai->ownerDocument;
        $Ni = $vs->createElementNS("\x75\x72\156\x3a\157\x61\163\151\x73\72\x6e\141\x6d\145\x73\72\x74\143\72\x53\101\115\x4c\72\62\x2e\60\x3a\141\163\x73\x65\162\164\x69\157\x6e", "\163\141\x6d\154\x3a\x41\164\164\162\x69\142\x75\164\145\123\164\x61\x74\x65\155\x65\156\164");
        $ai->appendChild($Ni);
        foreach ($this->attributes as $Pj => $Of) {
            $Hg = new DOMDocument();
            $kj = $Hg->createElementNS("\x75\x72\156\x3a\157\x61\x73\x69\163\x3a\156\141\155\x65\x73\x3a\x74\x63\72\x53\101\x4d\x4c\72\62\x2e\x30\72\x61\163\x73\145\162\164\151\157\156", "\x73\x61\155\154\72\x41\x74\164\x72\x69\x62\x75\164\145");
            $kj->setAttribute("\116\x61\x6d\145", $Pj);
            $Hg->appendChild($kj);
            if (!($this->nameFormat !== "\x75\162\156\72\x6f\x61\x73\151\x73\x3a\x6e\141\x6d\145\x73\72\164\x63\x3a\123\x41\x4d\x4c\72\x32\x2e\x30\x3a\141\x74\164\162\x6e\x61\x6d\x65\x2d\x66\x6f\162\x6d\141\x74\72\x75\x6e\163\x70\145\143\x69\x66\x69\145\x64")) {
                goto ui;
            }
            $kj->setAttribute("\116\141\x6d\x65\x46\157\162\155\141\x74", $this->nameFormat);
            ui:
            foreach ($Of as $D7) {
                if (is_string($D7)) {
                    goto Ch;
                }
                if (is_int($D7)) {
                    goto CX;
                }
                $DF = NULL;
                goto Qy;
                Ch:
                $DF = "\170\163\x3a\163\x74\162\151\x6e\147";
                goto Qy;
                CX:
                $DF = "\x78\x73\72\151\156\164\145\x67\x65\x72";
                Qy:
                $PU = $Hg->createElementNS("\165\x72\x6e\x3a\157\141\163\x69\163\72\x6e\x61\x6d\x65\163\x3a\x74\143\x3a\123\x41\x4d\x4c\x3a\x32\x2e\x30\x3a\141\x73\x73\x65\x72\x74\x69\x6f\x6e", "\163\x61\155\x6c\72\x41\x74\x74\162\151\x62\165\164\145\126\141\154\x75\x65");
                $kj->appendChild($PU);
                if (!($DF !== NULL)) {
                    goto Oc;
                }
                $PU->setAttributeNS("\x68\x74\164\x70\72\x2f\57\x77\x77\x77\56\167\63\56\157\162\x67\57\62\x30\x30\61\57\x58\115\114\123\x63\150\x65\155\x61\x2d\x69\x6e\x73\x74\x61\156\x63\145", "\170\163\x69\x3a\x74\x79\160\145", $DF);
                Oc:
                if ($D7 instanceof DOMNodeList) {
                    goto v5;
                }
                $PU->appendChild($Hg->createTextNode($D7));
                goto ZT;
                v5:
                $n2 = 0;
                aN:
                if (!($n2 < $D7->length)) {
                    goto TM;
                }
                $Js = $Hg->importNode($D7->item($n2), TRUE);
                $PU->appendChild($Js);
                gD:
                $n2++;
                goto aN;
                TM:
                ZT:
                FE:
            }
            k5:
            $xO = new XMLSecEnc();
            $xO->setNode($Hg->documentElement);
            $xO->type = "\x68\x74\x74\160\72\57\57\x77\x77\x77\56\167\63\56\x6f\x72\x67\57\62\x30\x30\x31\57\x30\x34\57\x78\x6d\154\145\x6e\143\x23\x45\154\145\155\x65\156\x74";
            $o4 = new XMLSecurityKey(XMLSecurityKey::AES256_CBC);
            $o4->generateSessionKey();
            $xO->encryptKey($this->encryptionKey, $o4);
            $JH = $xO->encryptNode($o4);
            $wR = $vs->createElementNS("\x75\x72\x6e\72\157\141\163\x69\x73\72\156\141\155\145\x73\x3a\x74\143\72\x53\x41\115\x4c\x3a\x32\x2e\60\x3a\141\163\x73\145\162\x74\151\157\156", "\x73\141\155\154\72\105\156\x63\162\x79\160\164\x65\144\x41\164\x74\x72\151\142\165\x74\145");
            $Ni->appendChild($wR);
            $Nn = $vs->importNode($JH, TRUE);
            $wR->appendChild($Nn);
            AC:
        }
        cy:
    }
}

Function Calls

None

Variables

None

Stats

MD5 dd0f53ad12b3a9c5f04c5086cc350f07
Eval Count 0
Decode Time 125 ms