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

Signing you up...

Thank you for signing up!

PHP Decode

<?php include_once "\125\x74\x69\x6c\151\164\x69\x65\163\x2e\160\x68\160"; class SAM..

Decoded Output download

<?php 
 
 
include_once "Utilities.php"; 
class SAML2_Assertion 
{ 
    private $id; 
    private $issueInstant; 
    private $issuer; 
    private $nameId; 
    private $encryptedNameId; 
    private $encryptedAttribute; 
    private $encryptionKey; 
    private $notBefore; 
    private $notOnOrAfter; 
    private $validAudiences; 
    private $sessionNotOnOrAfter; 
    private $sessionIndex; 
    private $authnInstant; 
    private $authnContextClassRef; 
    private $authnContextDecl; 
    private $authnContextDeclRef; 
    private $AuthenticatingAuthority; 
    private $attributes; 
    private $nameFormat; 
    private $signatureKey; 
    private $certificates; 
    private $signatureData; 
    private $requiredEncAttributes; 
    private $SubjectConfirmation; 
    protected $wasSignedAtConstruction = FALSE; 
    public function __construct(DOMElement $gp = NULL) 
    { 
        $this->id = Utilities::generateId(); 
        $this->issueInstant = Utilities::generateTimestamp(); 
        $this->issuer = ''; 
        $this->authnInstant = Utilities::generateTimestamp(); 
        $this->attributes = array(); 
        $this->nameFormat = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"; 
        $this->certificates = array(); 
        $this->AuthenticatingAuthority = array(); 
        $this->SubjectConfirmation = array(); 
        if (!($gp === NULL)) { 
            goto tw; 
        } 
        return; 
        tw: 
        if (!($gp->localName === "EncryptedAssertion")) { 
            goto F3; 
        } 
        $IX = Utilities::xpQuery($gp, "./xenc:EncryptedData"); 
        $Qe = Utilities::xpQuery($gp, "./xenc:EncryptedData/ds:KeyInfo/xenc:EncryptedKey"); 
        $GA = ''; 
        if (empty($Qe)) { 
            goto ow; 
        } 
        $GA = $Qe[0]->firstChild->getAttribute("Algorithm"); 
        goto Zp; 
        ow: 
        $Qe = Utilities::xpQuery($gp, "./xenc:EncryptedKey/xenc:EncryptionMethod"); 
        $GA = $Qe[0]->getAttribute("Algorithm"); 
        Zp: 
        $pq = Utilities::getEncryptionAlgorithm($GA); 
        if (count($IX) === 0) { 
            goto T8; 
        } 
        if (count($IX) > 1) { 
            goto ei; 
        } 
        goto sK; 
        T8: 
        throw new Exception("Missing encrypted data in <saml:EncryptedAssertion>."); 
        goto sK; 
        ei: 
        throw new Exception("More than one encrypted data element in <saml:EncryptedAssertion>."); 
        sK: 
        $gS = Utilities::getPrivateKey(); 
        $mz = new XMLSecurityKey($pq, array("type" => "private")); 
        $mz->loadKey($gS, FALSE); 
        $uB = array(); 
        $gp = Utilities::decryptElement($IX[0], $mz, $uB); 
        F3: 
        if ($gp->hasAttribute("ID")) { 
            goto l4; 
        } 
        throw new Exception("Missing ID attribute on SAML assertion."); 
        l4: 
        $this->id = $gp->getAttribute("ID"); 
        if (!($gp->getAttribute("Version") !== "2.0")) { 
            goto LX; 
        } 
        throw new Exception("Unsupported version: " . $gp->getAttribute("Version")); 
        LX: 
        $this->issueInstant = Utilities::xsDateTimeToTimestamp($gp->getAttribute("IssueInstant")); 
        $u1 = Utilities::xpQuery($gp, "./saml_assertion:Issuer"); 
        if (!empty($u1)) { 
            goto D7; 
        } 
        throw new Exception("Missing <saml:Issuer> in assertion."); 
        D7: 
        $this->issuer = trim($u1[0]->textContent); 
        $this->parseConditions($gp); 
        $this->parseAuthnStatement($gp); 
        $this->parseAttributes($gp); 
        $this->parseEncryptedAttributes($gp); 
        $this->parseSignature($gp); 
        $this->parseSubject($gp); 
    } 
    private function parseSubject(DOMElement $gp) 
    { 
        $sU = Utilities::xpQuery($gp, "./saml_assertion:Subject"); 
        if (empty($sU)) { 
            goto Ge; 
        } 
        if (count($sU) > 1) { 
            goto xh; 
        } 
        goto mo; 
        Ge: 
        return; 
        goto mo; 
        xh: 
        throw new Exception("More than one <saml:Subject> in <saml:Assertion>."); 
        mo: 
        $sU = $sU[0]; 
        $b3 = Utilities::xpQuery($sU, "./saml_assertion:NameID | ./saml_assertion:EncryptedID/xenc:EncryptedData"); 
        if (empty($b3)) { 
            goto aR; 
        } 
        if (count($b3) > 1) { 
            goto KN; 
        } 
        goto MW; 
        aR: 
        throw new Exception("Missing <saml:NameID> or <saml:EncryptedID> in <saml:Subject>."); 
        goto MW; 
        KN: 
        throw new Exception("More than one <saml:NameID> or <saml:EncryptedD> in <saml:Subject>."); 
        MW: 
        $b3 = $b3[0]; 
        if ($b3->localName === "EncryptedData") { 
            goto aC; 
        } 
        $this->nameId = Utilities::parseNameId($b3); 
        goto CQ; 
        aC: 
        $this->encryptedNameId = $b3; 
        CQ: 
    } 
    private function parseConditions(DOMElement $gp) 
    { 
        $Rh = Utilities::xpQuery($gp, "./saml_assertion:Conditions"); 
        if (empty($Rh)) { 
            goto yM; 
        } 
        if (count($Rh) > 1) { 
            goto p_; 
        } 
        goto rn; 
        yM: 
        return; 
        goto rn; 
        p_: 
        throw new Exception("More than one <saml:Conditions> in <saml:Assertion>."); 
        rn: 
        $Rh = $Rh[0]; 
        if (!$Rh->hasAttribute("NotBefore")) { 
            goto Iu; 
        } 
        $pa = Utilities::xsDateTimeToTimestamp($Rh->getAttribute("NotBefore")); 
        if (!($this->notBefore === NULL || $this->notBefore < $pa)) { 
            goto o7; 
        } 
        $this->notBefore = $pa; 
        o7: 
        Iu: 
        if (!$Rh->hasAttribute("NotOnOrAfter")) { 
            goto LT; 
        } 
        $DA = Utilities::xsDateTimeToTimestamp($Rh->getAttribute("NotOnOrAfter")); 
        if (!($this->notOnOrAfter === NULL || $this->notOnOrAfter > $DA)) { 
            goto rK; 
        } 
        $this->notOnOrAfter = $DA; 
        rK: 
        LT: 
        $HF = $Rh->firstChild; 
        Ph: 
        if (!($HF !== NULL)) { 
            goto tV; 
        } 
        if (!$HF instanceof DOMText) { 
            goto R9; 
        } 
        goto zX; 
        R9: 
        if (!($HF->namespaceURI !== "urn:oasis:names:tc:SAML:2.0:assertion")) { 
            goto ko; 
        } 
        throw new Exception("Unknown namespace of condition: " . var_export($HF->namespaceURI, TRUE)); 
        ko: 
        switch ($HF->localName) { 
            case "AudienceRestriction": 
                $gg = Utilities::extractStrings($HF, "urn:oasis:names:tc:SAML:2.0:assertion", "Audience"); 
                if ($this->validAudiences === NULL) { 
                    goto OW; 
                } 
                $this->validAudiences = array_intersect($this->validAudiences, $gg); 
                goto w4; 
                OW: 
                $this->validAudiences = $gg; 
                w4: 
                goto N2; 
            case "OneTimeUse": 
                goto N2; 
            case "ProxyRestriction": 
                goto N2; 
            default: 
                throw new Exception("Unknown condition: " . var_export($HF->localName, TRUE)); 
        } 
        d1: 
        N2: 
        zX: 
        $HF = $HF->nextSibling; 
        goto Ph; 
        tV: 
    } 
    private function parseAuthnStatement(DOMElement $gp) 
    { 
        $gj = Utilities::xpQuery($gp, "./saml_assertion:AuthnStatement"); 
        if (empty($gj)) { 
            goto LA; 
        } 
        if (count($gj) > 1) { 
            goto Rk; 
        } 
        goto Kh; 
        LA: 
        $this->authnInstant = NULL; 
        return; 
        goto Kh; 
        Rk: 
        throw new Exception("More that one <saml:AuthnStatement> in <saml:Assertion> not supported."); 
        Kh: 
        $pB = $gj[0]; 
        if ($pB->hasAttribute("AuthnInstant")) { 
            goto by; 
        } 
        throw new Exception("Missing required AuthnInstant attribute on <saml:AuthnStatement>."); 
        by: 
        $this->authnInstant = Utilities::xsDateTimeToTimestamp($pB->getAttribute("AuthnInstant")); 
        if (!$pB->hasAttribute("SessionNotOnOrAfter")) { 
            goto Hl; 
        } 
        $this->sessionNotOnOrAfter = Utilities::xsDateTimeToTimestamp($pB->getAttribute("SessionNotOnOrAfter")); 
        Hl: 
        if (!$pB->hasAttribute("SessionIndex")) { 
            goto fM; 
        } 
        $this->sessionIndex = $pB->getAttribute("SessionIndex"); 
        fM: 
        $this->parseAuthnContext($pB); 
    } 
    private function parseAuthnContext(DOMElement $Yp) 
    { 
        $w5 = Utilities::xpQuery($Yp, "./saml_assertion:AuthnContext"); 
        if (count($w5) > 1) { 
            goto vG; 
        } 
        if (empty($w5)) { 
            goto HE; 
        } 
        goto NV; 
        vG: 
        throw new Exception("More than one <saml:AuthnContext> in <saml:AuthnStatement>."); 
        goto NV; 
        HE: 
        throw new Exception("Missing required <saml:AuthnContext> in <saml:AuthnStatement>."); 
        NV: 
        $Ht = $w5[0]; 
        $iG = Utilities::xpQuery($Ht, "./saml_assertion:AuthnContextDeclRef"); 
        if (count($iG) > 1) { 
            goto it; 
        } 
        if (count($iG) === 1) { 
            goto LQ; 
        } 
        goto at; 
        it: 
        throw new Exception("More than one <saml:AuthnContextDeclRef> found?"); 
        goto at; 
        LQ: 
        $this->setAuthnContextDeclRef(trim($iG[0]->textContent)); 
        at: 
        $Xx = Utilities::xpQuery($Ht, "./saml_assertion:AuthnContextDecl"); 
        if (count($Xx) > 1) { 
            goto pV; 
        } 
        if (count($Xx) === 1) { 
            goto ic; 
        } 
        goto k0; 
        pV: 
        throw new Exception("More than one <saml:AuthnContextDecl> found?"); 
        goto k0; 
        ic: 
        $this->setAuthnContextDecl(new SAML2_XML_Chunk($Xx[0])); 
        k0: 
        $SO = Utilities::xpQuery($Ht, "./saml_assertion:AuthnContextClassRef"); 
        if (count($SO) > 1) { 
            goto rb; 
        } 
        if (count($SO) === 1) { 
            goto hN; 
        } 
        goto jT; 
        rb: 
        throw new Exception("More than one <saml:AuthnContextClassRef> in <saml:AuthnContext>."); 
        goto jT; 
        hN: 
        $this->setAuthnContextClassRef(trim($SO[0]->textContent)); 
        jT: 
        if (!(empty($this->authnContextClassRef) && empty($this->authnContextDecl) && empty($this->authnContextDeclRef))) { 
            goto ZB; 
        } 
        throw new Exception("Missing either <saml:AuthnContextClassRef> or <saml:AuthnContextDeclRef> or <saml:AuthnContextDecl>"); 
        ZB: 
        $this->AuthenticatingAuthority = Utilities::extractStrings($Ht, "urn:oasis:names:tc:SAML:2.0:assertion", "AuthenticatingAuthority"); 
    } 
    private function parseAttributes(DOMElement $gp) 
    { 
        $BC = TRUE; 
        $AZ = Utilities::xpQuery($gp, "./saml_assertion:AttributeStatement/saml_assertion:Attribute"); 
        foreach ($AZ as $IB) { 
            if ($IB->hasAttribute("Name")) { 
                goto N8; 
            } 
            throw new Exception("Missing name on <saml:Attribute> element."); 
            N8: 
            $SS = $IB->getAttribute("Name"); 
            if ($IB->hasAttribute("NameFormat")) { 
                goto zd; 
            } 
            $AB = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"; 
            goto vo; 
            zd: 
            $AB = $IB->getAttribute("NameFormat"); 
            vo: 
            if ($BC) { 
                goto nD; 
            } 
            if (!($this->nameFormat !== $AB)) { 
                goto Nr; 
            } 
            $this->nameFormat = "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"; 
            Nr: 
            goto EC; 
            nD: 
            $this->nameFormat = $AB; 
            $BC = FALSE; 
            EC: 
            if (array_key_exists($SS, $this->attributes)) { 
                goto GP; 
            } 
            $this->attributes[$SS] = array(); 
            GP: 
            $Wj = Utilities::xpQuery($IB, "./saml_assertion:AttributeValue"); 
            foreach ($Wj as $rE) { 
                $this->attributes[$SS][] = trim($rE->textContent); 
                BB: 
            } 
            Tc: 
            TK: 
        } 
        R8: 
    } 
    private function parseEncryptedAttributes(DOMElement $gp) 
    { 
        $this->encryptedAttribute = Utilities::xpQuery($gp, "./saml_assertion:AttributeStatement/saml_assertion:EncryptedAttribute"); 
    } 
    private function parseSignature(DOMElement $gp) 
    { 
        $tw = Utilities::validateElement($gp); 
        if (!($tw !== FALSE)) { 
            goto S7; 
        } 
        $this->wasSignedAtConstruction = TRUE; 
        $this->certificates = $tw["Certificates"]; 
        $this->signatureData = $tw; 
        S7: 
    } 
    public function validate(XMLSecurityKey $mz) 
    { 
        if (!($this->signatureData === NULL)) { 
            goto kp; 
        } 
        return FALSE; 
        kp: 
        Utilities::validateSignature($this->signatureData, $mz); 
        return TRUE; 
    } 
    public function getId() 
    { 
        return $this->id; 
    } 
    public function setId($BA) 
    { 
        $this->id = $BA; 
    } 
    public function getIssueInstant() 
    { 
        return $this->issueInstant; 
    } 
    public function setIssueInstant($xw) 
    { 
        $this->issueInstant = $xw; 
    } 
    public function getIssuer() 
    { 
        return $this->issuer; 
    } 
    public function setIssuer($u1) 
    { 
        $this->issuer = $u1; 
    } 
    public function getNameId() 
    { 
        if (!($this->encryptedNameId !== NULL)) { 
            goto nU; 
        } 
        throw new Exception("Attempted to retrieve encrypted NameID without decrypting it first."); 
        nU: 
        return $this->nameId; 
    } 
    public function setNameId($b3) 
    { 
        $this->nameId = $b3; 
    } 
    public function isNameIdEncrypted() 
    { 
        if (!($this->encryptedNameId !== NULL)) { 
            goto yb; 
        } 
        return TRUE; 
        yb: 
        return FALSE; 
    } 
    public function encryptNameId(XMLSecurityKey $mz) 
    { 
        $OZ = new DOMDocument(); 
        $rZ = $OZ->createElement("root"); 
        $OZ->appendChild($rZ); 
        Utilities::addNameId($rZ, $this->nameId); 
        $b3 = $rZ->firstChild; 
        Utilities::getContainer()->debugMessage($b3, "encrypt"); 
        $kF = new XMLSecEnc(); 
        $kF->setNode($b3); 
        $kF->type = XMLSecEnc::Element; 
        $Gg = new XMLSecurityKey(XMLSecurityKey::AES128_CBC); 
        $Gg->generateSessionKey(); 
        $kF->encryptKey($mz, $Gg); 
        $this->encryptedNameId = $kF->encryptNode($Gg); 
        $this->nameId = NULL; 
    } 
    public function decryptNameId(XMLSecurityKey $mz, array $uB = array()) 
    { 
        if (!($this->encryptedNameId === NULL)) { 
            goto o5; 
        } 
        return; 
        o5: 
        $b3 = Utilities::decryptElement($this->encryptedNameId, $mz, $uB); 
        Utilities::getContainer()->debugMessage($b3, "decrypt"); 
        $this->nameId = Utilities::parseNameId($b3); 
        $this->encryptedNameId = NULL; 
    } 
    public function decryptAttributes(XMLSecurityKey $mz, array $uB = array()) 
    { 
        if (!($this->encryptedAttribute === NULL)) { 
            goto NQ; 
        } 
        return; 
        NQ: 
        $BC = TRUE; 
        $AZ = $this->encryptedAttribute; 
        foreach ($AZ as $bx) { 
            $IB = Utilities::decryptElement($bx->getElementsByTagName("EncryptedData")->item(0), $mz, $uB); 
            if ($IB->hasAttribute("Name")) { 
                goto KD; 
            } 
            throw new Exception("Missing name on <saml:Attribute> element."); 
            KD: 
            $SS = $IB->getAttribute("Name"); 
            if ($IB->hasAttribute("NameFormat")) { 
                goto qj; 
            } 
            $AB = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"; 
            goto ox; 
            qj: 
            $AB = $IB->getAttribute("NameFormat"); 
            ox: 
            if ($BC) { 
                goto Us; 
            } 
            if (!($this->nameFormat !== $AB)) { 
                goto QR; 
            } 
            $this->nameFormat = "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"; 
            QR: 
            goto sS; 
            Us: 
            $this->nameFormat = $AB; 
            $BC = FALSE; 
            sS: 
            if (array_key_exists($SS, $this->attributes)) { 
                goto OX; 
            } 
            $this->attributes[$SS] = array(); 
            OX: 
            $Wj = Utilities::xpQuery($IB, "./saml_assertion:AttributeValue"); 
            foreach ($Wj as $rE) { 
                $this->attributes[$SS][] = trim($rE->textContent); 
                W4: 
            } 
            UT: 
            BP: 
        } 
        Kt: 
    } 
    public function getNotBefore() 
    { 
        return $this->notBefore; 
    } 
    public function setNotBefore($pa) 
    { 
        $this->notBefore = $pa; 
    } 
    public function getNotOnOrAfter() 
    { 
        return $this->notOnOrAfter; 
    } 
    public function setNotOnOrAfter($DA) 
    { 
        $this->notOnOrAfter = $DA; 
    } 
    public function setEncryptedAttributes($Ga) 
    { 
        $this->requiredEncAttributes = $Ga; 
    } 
    public function getValidAudiences() 
    { 
        return $this->validAudiences; 
    } 
    public function setValidAudiences(array $ws = NULL) 
    { 
        $this->validAudiences = $ws; 
    } 
    public function getAuthnInstant() 
    { 
        return $this->authnInstant; 
    } 
    public function setAuthnInstant($yv) 
    { 
        $this->authnInstant = $yv; 
    } 
    public function getSessionNotOnOrAfter() 
    { 
        return $this->sessionNotOnOrAfter; 
    } 
    public function setSessionNotOnOrAfter($Cp) 
    { 
        $this->sessionNotOnOrAfter = $Cp; 
    } 
    public function getSessionIndex() 
    { 
        return $this->sessionIndex; 
    } 
    public function setSessionIndex($gF) 
    { 
        $this->sessionIndex = $gF; 
    } 
    public function getAuthnContext() 
    { 
        if (empty($this->authnContextClassRef)) { 
            goto h3; 
        } 
        return $this->authnContextClassRef; 
        h3: 
        if (empty($this->authnContextDeclRef)) { 
            goto m1; 
        } 
        return $this->authnContextDeclRef; 
        m1: 
        return NULL; 
    } 
    public function setAuthnContext($CJ) 
    { 
        $this->setAuthnContextClassRef($CJ); 
    } 
    public function getAuthnContextClassRef() 
    { 
        return $this->authnContextClassRef; 
    } 
    public function setAuthnContextClassRef($sg) 
    { 
        $this->authnContextClassRef = $sg; 
    } 
    public function setAuthnContextDecl(SAML2_XML_Chunk $yc) 
    { 
        if (empty($this->authnContextDeclRef)) { 
            goto xR; 
        } 
        throw new Exception("AuthnContextDeclRef is already registered! May only have either a Decl or a DeclRef, not both!"); 
        xR: 
        $this->authnContextDecl = $yc; 
    } 
    public function getAuthnContextDecl() 
    { 
        return $this->authnContextDecl; 
    } 
    public function setAuthnContextDeclRef($zh) 
    { 
        if (empty($this->authnContextDecl)) { 
            goto mK; 
        } 
        throw new Exception("AuthnContextDecl is already registered! May only have either a Decl or a DeclRef, not both!"); 
        mK: 
        $this->authnContextDeclRef = $zh; 
    } 
    public function getAuthnContextDeclRef() 
    { 
        return $this->authnContextDeclRef; 
    } 
    public function getAuthenticatingAuthority() 
    { 
        return $this->AuthenticatingAuthority; 
    } 
    public function setAuthenticatingAuthority($zG) 
    { 
        $this->AuthenticatingAuthority = $zG; 
    } 
    public function getAttributes() 
    { 
        return $this->attributes; 
    } 
    public function setAttributes(array $AZ) 
    { 
        $this->attributes = $AZ; 
    } 
    public function getAttributeNameFormat() 
    { 
        return $this->nameFormat; 
    } 
    public function setAttributeNameFormat($AB) 
    { 
        $this->nameFormat = $AB; 
    } 
    public function getSubjectConfirmation() 
    { 
        return $this->SubjectConfirmation; 
    } 
    public function setSubjectConfirmation(array $wB) 
    { 
        $this->SubjectConfirmation = $wB; 
    } 
    public function getSignatureKey() 
    { 
        return $this->signatureKey; 
    } 
    public function getSignatureData() 
    { 
        return $this->signatureData; 
    } 
    public function setSignatureKey(XMLsecurityKey $ew = NULL) 
    { 
        $this->signatureKey = $ew; 
    } 
    public function getEncryptionKey() 
    { 
        return $this->encryptionKey; 
    } 
    public function setEncryptionKey(XMLSecurityKey $Aq = NULL) 
    { 
        $this->encryptionKey = $Aq; 
    } 
    public function setCertificates(array $MI) 
    { 
        $this->certificates = $MI; 
    } 
    public function getCertificates() 
    { 
        return $this->certificates; 
    } 
    public function getWasSignedAtConstruction() 
    { 
        return $this->wasSignedAtConstruction; 
    } 
    public function toXML(DOMNode $Z1 = NULL) 
    { 
        if ($Z1 === NULL) { 
            goto JF; 
        } 
        $Ej = $Z1->ownerDocument; 
        goto lh; 
        JF: 
        $Ej = new DOMDocument(); 
        $Z1 = $Ej; 
        lh: 
        $rZ = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:" . "Assertion"); 
        $Z1->appendChild($rZ); 
        $rZ->setAttributeNS("urn:oasis:names:tc:SAML:2.0:protocol", "samlp:tmp", "tmp"); 
        $rZ->removeAttributeNS("urn:oasis:names:tc:SAML:2.0:protocol", "tmp"); 
        $rZ->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:tmp", "tmp"); 
        $rZ->removeAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "tmp"); 
        $rZ->setAttributeNS("http://www.w3.org/2001/XMLSchema", "xs:tmp", "tmp"); 
        $rZ->removeAttributeNS("http://www.w3.org/2001/XMLSchema", "tmp"); 
        $rZ->setAttribute("ID", $this->id); 
        $rZ->setAttribute("Version", "2.0"); 
        $rZ->setAttribute("IssueInstant", gmdate("Y-m-d\TH:i:s\Z", $this->issueInstant)); 
        $u1 = Utilities::addString($rZ, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:Issuer", $this->issuer); 
        $this->addSubject($rZ); 
        $this->addConditions($rZ); 
        $this->addAuthnStatement($rZ); 
        if ($this->requiredEncAttributes == FALSE) { 
            goto Gm; 
        } 
        $this->addEncryptedAttributeStatement($rZ); 
        goto O0; 
        Gm: 
        $this->addAttributeStatement($rZ); 
        O0: 
        if (!($this->signatureKey !== NULL)) { 
            goto bv; 
        } 
        Utilities::insertSignature($this->signatureKey, $this->certificates, $rZ, $u1->nextSibling); 
        bv: 
        return $rZ; 
    } 
    private function addSubject(DOMElement $rZ) 
    { 
        if (!($this->nameId === NULL && $this->encryptedNameId === NULL)) { 
            goto II; 
        } 
        return; 
        II: 
        $sU = $rZ->ownerDocument->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Subject"); 
        $rZ->appendChild($sU); 
        if ($this->encryptedNameId === NULL) { 
            goto Ew; 
        } 
        $fm = $sU->ownerDocument->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:" . "EncryptedID"); 
        $sU->appendChild($fm); 
        $fm->appendChild($sU->ownerDocument->importNode($this->encryptedNameId, TRUE)); 
        goto zY; 
        Ew: 
        Utilities::addNameId($sU, $this->nameId); 
        zY: 
        foreach ($this->SubjectConfirmation as $z5) { 
            $z5->toXML($sU); 
            ov: 
        } 
        sG: 
    } 
    private function addConditions(DOMElement $rZ) 
    { 
        $Ej = $rZ->ownerDocument; 
        $Rh = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Conditions"); 
        $rZ->appendChild($Rh); 
        if (!($this->notBefore !== NULL)) { 
            goto xj; 
        } 
        $Rh->setAttribute("NotBefore", gmdate("Y-m-d\TH:i:s\Z", $this->notBefore)); 
        xj: 
        if (!($this->notOnOrAfter !== NULL)) { 
            goto Uv; 
        } 
        $Rh->setAttribute("NotOnOrAfter", gmdate("Y-m-d\TH:i:s\Z", $this->notOnOrAfter)); 
        Uv: 
        if (!($this->validAudiences !== NULL)) { 
            goto sF; 
        } 
        $JQ = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AudienceRestriction"); 
        $Rh->appendChild($JQ); 
        Utilities::addStrings($JQ, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:Audience", FALSE, $this->validAudiences); 
        sF: 
    } 
    private function addAuthnStatement(DOMElement $rZ) 
    { 
        if (!($this->authnInstant === NULL || $this->authnContextClassRef === NULL && $this->authnContextDecl === NULL && $this->authnContextDeclRef === NULL)) { 
            goto lK; 
        } 
        return; 
        lK: 
        $Ej = $rZ->ownerDocument; 
        $Yp = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnStatement"); 
        $rZ->appendChild($Yp); 
        $Yp->setAttribute("AuthnInstant", gmdate("Y-m-d\TH:i:s\Z", $this->authnInstant)); 
        if (!($this->sessionNotOnOrAfter !== NULL)) { 
            goto hX; 
        } 
        $Yp->setAttribute("SessionNotOnOrAfter", gmdate("Y-m-d\TH:i:s\Z", $this->sessionNotOnOrAfter)); 
        hX: 
        if (!($this->sessionIndex !== NULL)) { 
            goto KW; 
        } 
        $Yp->setAttribute("SessionIndex", $this->sessionIndex); 
        KW: 
        $Ht = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContext"); 
        $Yp->appendChild($Ht); 
        if (empty($this->authnContextClassRef)) { 
            goto FA; 
        } 
        Utilities::addString($Ht, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContextClassRef", $this->authnContextClassRef); 
        FA: 
        if (empty($this->authnContextDecl)) { 
            goto ED; 
        } 
        $this->authnContextDecl->toXML($Ht); 
        ED: 
        if (empty($this->authnContextDeclRef)) { 
            goto bj; 
        } 
        Utilities::addString($Ht, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthnContextDeclRef", $this->authnContextDeclRef); 
        bj: 
        Utilities::addStrings($Ht, "urn:oasis:names:tc:SAML:2.0:assertion", "saml:AuthenticatingAuthority", FALSE, $this->AuthenticatingAuthority); 
    } 
    private function addAttributeStatement(DOMElement $rZ) 
    { 
        if (!empty($this->attributes)) { 
            goto UI; 
        } 
        return; 
        UI: 
        $Ej = $rZ->ownerDocument; 
        $if = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeStatement"); 
        $rZ->appendChild($if); 
        foreach ($this->attributes as $SS => $Wj) { 
            $IB = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Attribute"); 
            $if->appendChild($IB); 
            $IB->setAttribute("Name", $SS); 
            if (!($this->nameFormat !== "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified")) { 
                goto ec; 
            } 
            $IB->setAttribute("NameFormat", $this->nameFormat); 
            ec: 
            foreach ($Wj as $rE) { 
                if (is_string($rE)) { 
                    goto y4; 
                } 
                if (is_int($rE)) { 
                    goto gc; 
                } 
                $Ak = NULL; 
                goto H9; 
                y4: 
                $Ak = "xs:string"; 
                goto H9; 
                gc: 
                $Ak = "xs:integer"; 
                H9: 
                $TQ = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeValue"); 
                $IB->appendChild($TQ); 
                if (!($Ak !== NULL)) { 
                    goto MD; 
                } 
                $TQ->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:type", $Ak); 
                MD: 
                if (!is_null($rE)) { 
                    goto k3; 
                } 
                $TQ->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:nil", "true"); 
                k3: 
                if ($rE instanceof DOMNodeList) { 
                    goto Vj; 
                } 
                $TQ->appendChild($Ej->createTextNode($rE)); 
                goto li; 
                Vj: 
                $Eo = 0; 
                ib: 
                if (!($Eo < $rE->length)) { 
                    goto pp; 
                } 
                $HF = $Ej->importNode($rE->item($Eo), TRUE); 
                $TQ->appendChild($HF); 
                ZS: 
                $Eo++; 
                goto ib; 
                pp: 
                li: 
                rE: 
            } 
            DI: 
            ss: 
        } 
        p2: 
    } 
    private function addEncryptedAttributeStatement(DOMElement $rZ) 
    { 
        if (!($this->requiredEncAttributes == FALSE)) { 
            goto rW; 
        } 
        return; 
        rW: 
        $Ej = $rZ->ownerDocument; 
        $if = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeStatement"); 
        $rZ->appendChild($if); 
        foreach ($this->attributes as $SS => $Wj) { 
            $e1 = new DOMDocument(); 
            $IB = $e1->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:Attribute"); 
            $IB->setAttribute("Name", $SS); 
            $e1->appendChild($IB); 
            if (!($this->nameFormat !== "urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified")) { 
                goto Xz; 
            } 
            $IB->setAttribute("NameFormat", $this->nameFormat); 
            Xz: 
            foreach ($Wj as $rE) { 
                if (is_string($rE)) { 
                    goto bK; 
                } 
                if (is_int($rE)) { 
                    goto jm; 
                } 
                $Ak = NULL; 
                goto Je; 
                bK: 
                $Ak = "xs:string"; 
                goto Je; 
                jm: 
                $Ak = "xs:integer"; 
                Je: 
                $TQ = $e1->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:AttributeValue"); 
                $IB->appendChild($TQ); 
                if (!($Ak !== NULL)) { 
                    goto av; 
                } 
                $TQ->setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:type", $Ak); 
                av: 
                if ($rE instanceof DOMNodeList) { 
                    goto RL; 
                } 
                $TQ->appendChild($e1->createTextNode($rE)); 
                goto Aw; 
                RL: 
                $Eo = 0; 
                qy: 
                if (!($Eo < $rE->length)) { 
                    goto r1; 
                } 
                $HF = $e1->importNode($rE->item($Eo), TRUE); 
                $TQ->appendChild($HF); 
                fF: 
                $Eo++; 
                goto qy; 
                r1: 
                Aw: 
                BU: 
            } 
            x1: 
            $ha = new XMLSecEnc(); 
            $ha->setNode($e1->documentElement); 
            $ha->type = "http://www.w3.org/2001/04/xmlenc#Element"; 
            $Gg = new XMLSecurityKey(XMLSecurityKey::AES256_CBC); 
            $Gg->generateSessionKey(); 
            $ha->encryptKey($this->encryptionKey, $Gg); 
            $qM = $ha->encryptNode($Gg); 
            $kw = $Ej->createElementNS("urn:oasis:names:tc:SAML:2.0:assertion", "saml:EncryptedAttribute"); 
            $if->appendChild($kw); 
            $dN = $Ej->importNode($qM, TRUE); 
            $kw->appendChild($dN); 
            JJ: 
        } 
        yi: 
    } 
} 
 ?>

Did this file decode correctly?

Original Code

<?php


include_once "\125\x74\x69\x6c\151\164\x69\x65\163\x2e\160\x68\160";
class SAML2_Assertion
{
    private $id;
    private $issueInstant;
    private $issuer;
    private $nameId;
    private $encryptedNameId;
    private $encryptedAttribute;
    private $encryptionKey;
    private $notBefore;
    private $notOnOrAfter;
    private $validAudiences;
    private $sessionNotOnOrAfter;
    private $sessionIndex;
    private $authnInstant;
    private $authnContextClassRef;
    private $authnContextDecl;
    private $authnContextDeclRef;
    private $AuthenticatingAuthority;
    private $attributes;
    private $nameFormat;
    private $signatureKey;
    private $certificates;
    private $signatureData;
    private $requiredEncAttributes;
    private $SubjectConfirmation;
    protected $wasSignedAtConstruction = FALSE;
    public function __construct(DOMElement $gp = NULL)
    {
        $this->id = Utilities::generateId();
        $this->issueInstant = Utilities::generateTimestamp();
        $this->issuer = '';
        $this->authnInstant = Utilities::generateTimestamp();
        $this->attributes = array();
        $this->nameFormat = "\x75\x72\x6e\x3a\157\x61\163\x69\163\x3a\156\x61\155\x65\163\x3a\x74\143\x3a\123\x41\x4d\x4c\x3a\x31\x2e\x31\x3a\x6e\x61\155\x65\151\x64\x2d\x66\157\x72\155\141\x74\72\x75\156\163\x70\145\x63\151\x66\x69\x65\144";
        $this->certificates = array();
        $this->AuthenticatingAuthority = array();
        $this->SubjectConfirmation = array();
        if (!($gp === NULL)) {
            goto tw;
        }
        return;
        tw:
        if (!($gp->localName === "\x45\156\143\162\x79\160\x74\145\144\101\163\163\145\162\164\x69\x6f\x6e")) {
            goto F3;
        }
        $IX = Utilities::xpQuery($gp, "\x2e\57\x78\145\156\x63\x3a\x45\156\143\x72\171\160\x74\145\x64\x44\x61\164\x61");
        $Qe = Utilities::xpQuery($gp, "\56\57\170\x65\x6e\143\x3a\x45\x6e\x63\162\x79\x70\164\x65\144\104\x61\164\x61\57\144\163\72\x4b\145\171\x49\x6e\x66\157\x2f\x78\x65\156\x63\72\105\156\x63\x72\x79\x70\x74\145\x64\113\x65\171");
        $GA = '';
        if (empty($Qe)) {
            goto ow;
        }
        $GA = $Qe[0]->firstChild->getAttribute("\x41\x6c\x67\157\x72\x69\164\150\155");
        goto Zp;
        ow:
        $Qe = Utilities::xpQuery($gp, "\x2e\x2f\x78\x65\x6e\143\72\x45\x6e\143\162\x79\160\164\x65\x64\x4b\145\x79\x2f\x78\x65\156\143\72\105\x6e\143\x72\171\160\164\x69\x6f\156\x4d\x65\164\x68\x6f\144");
        $GA = $Qe[0]->getAttribute("\101\154\x67\157\x72\151\x74\x68\x6d");
        Zp:
        $pq = Utilities::getEncryptionAlgorithm($GA);
        if (count($IX) === 0) {
            goto T8;
        }
        if (count($IX) > 1) {
            goto ei;
        }
        goto sK;
        T8:
        throw new Exception("\x4d\x69\163\x73\x69\x6e\x67\x20\145\x6e\x63\x72\171\x70\x74\145\x64\x20\144\141\x74\x61\40\151\156\40\x3c\x73\141\x6d\154\72\105\156\143\162\x79\x70\164\145\x64\101\163\x73\145\162\x74\151\157\156\76\56");
        goto sK;
        ei:
        throw new Exception("\115\157\x72\145\40\164\150\x61\156\40\157\156\x65\x20\145\x6e\x63\x72\x79\160\164\x65\144\x20\144\141\164\x61\x20\x65\x6c\145\x6d\x65\156\164\40\151\x6e\x20\x3c\x73\x61\155\x6c\x3a\105\x6e\x63\162\x79\x70\164\145\x64\x41\163\x73\x65\x72\164\x69\157\156\76\x2e");
        sK:
        $gS = Utilities::getPrivateKey();
        $mz = new XMLSecurityKey($pq, array("\x74\171\160\x65" => "\x70\x72\x69\x76\141\x74\x65"));
        $mz->loadKey($gS, FALSE);
        $uB = array();
        $gp = Utilities::decryptElement($IX[0], $mz, $uB);
        F3:
        if ($gp->hasAttribute("\111\x44")) {
            goto l4;
        }
        throw new Exception("\115\x69\x73\x73\x69\156\147\40\x49\104\40\141\x74\164\x72\151\142\x75\164\x65\x20\x6f\x6e\x20\123\x41\x4d\114\x20\x61\163\163\145\x72\x74\x69\x6f\156\56");
        l4:
        $this->id = $gp->getAttribute("\x49\x44");
        if (!($gp->getAttribute("\126\145\162\x73\151\157\x6e") !== "\x32\56\x30")) {
            goto LX;
        }
        throw new Exception("\x55\156\x73\165\x70\160\x6f\x72\164\x65\144\40\166\x65\162\x73\151\157\156\x3a\40" . $gp->getAttribute("\x56\145\x72\163\151\x6f\x6e"));
        LX:
        $this->issueInstant = Utilities::xsDateTimeToTimestamp($gp->getAttribute("\111\x73\x73\165\145\x49\156\x73\164\x61\156\x74"));
        $u1 = Utilities::xpQuery($gp, "\56\57\x73\141\155\154\x5f\x61\163\x73\x65\x72\164\151\x6f\x6e\72\111\x73\163\x75\x65\x72");
        if (!empty($u1)) {
            goto D7;
        }
        throw new Exception("\x4d\x69\163\163\151\x6e\x67\x20\x3c\x73\x61\155\154\72\x49\163\163\165\145\x72\76\x20\151\156\x20\x61\x73\163\145\162\x74\x69\x6f\156\56");
        D7:
        $this->issuer = trim($u1[0]->textContent);
        $this->parseConditions($gp);
        $this->parseAuthnStatement($gp);
        $this->parseAttributes($gp);
        $this->parseEncryptedAttributes($gp);
        $this->parseSignature($gp);
        $this->parseSubject($gp);
    }
    private function parseSubject(DOMElement $gp)
    {
        $sU = Utilities::xpQuery($gp, "\56\57\x73\141\x6d\154\137\141\163\163\x65\x72\164\151\157\x6e\x3a\123\165\142\x6a\145\143\x74");
        if (empty($sU)) {
            goto Ge;
        }
        if (count($sU) > 1) {
            goto xh;
        }
        goto mo;
        Ge:
        return;
        goto mo;
        xh:
        throw new Exception("\x4d\x6f\x72\x65\40\164\x68\x61\156\x20\x6f\156\145\40\74\163\141\155\x6c\x3a\123\x75\x62\152\145\x63\164\x3e\40\151\x6e\x20\x3c\163\141\155\x6c\72\101\163\163\x65\x72\164\151\x6f\156\76\56");
        mo:
        $sU = $sU[0];
        $b3 = Utilities::xpQuery($sU, "\56\x2f\x73\x61\x6d\x6c\x5f\141\x73\x73\145\162\164\x69\x6f\156\x3a\x4e\x61\x6d\145\111\104\x20\174\x20\56\x2f\163\x61\x6d\154\137\x61\163\x73\x65\162\x74\x69\x6f\156\72\105\156\x63\162\x79\x70\x74\145\x64\x49\x44\57\170\145\156\x63\72\x45\156\143\x72\171\x70\164\x65\144\x44\x61\164\141");
        if (empty($b3)) {
            goto aR;
        }
        if (count($b3) > 1) {
            goto KN;
        }
        goto MW;
        aR:
        throw new Exception("\x4d\x69\163\163\x69\156\x67\40\x3c\x73\141\x6d\154\x3a\x4e\141\x6d\x65\x49\x44\x3e\40\x6f\162\40\74\163\x61\155\154\x3a\105\156\x63\162\x79\x70\x74\x65\x64\x49\104\76\x20\151\x6e\40\x3c\x73\x61\155\x6c\x3a\123\x75\x62\x6a\x65\x63\x74\x3e\x2e");
        goto MW;
        KN:
        throw new Exception("\x4d\x6f\x72\x65\40\x74\150\141\x6e\40\x6f\156\145\x20\74\x73\141\x6d\x6c\x3a\116\141\155\x65\111\104\x3e\40\157\162\x20\x3c\163\141\155\x6c\72\105\156\143\162\x79\x70\x74\x65\x64\x44\x3e\x20\x69\x6e\40\74\x73\141\x6d\x6c\x3a\x53\165\142\152\145\x63\164\76\56");
        MW:
        $b3 = $b3[0];
        if ($b3->localName === "\105\156\x63\x72\x79\160\164\x65\144\x44\x61\x74\x61") {
            goto aC;
        }
        $this->nameId = Utilities::parseNameId($b3);
        goto CQ;
        aC:
        $this->encryptedNameId = $b3;
        CQ:
    }
    private function parseConditions(DOMElement $gp)
    {
        $Rh = Utilities::xpQuery($gp, "\x2e\57\x73\141\x6d\x6c\x5f\x61\163\x73\145\x72\164\151\x6f\156\x3a\103\157\x6e\144\x69\x74\151\157\156\x73");
        if (empty($Rh)) {
            goto yM;
        }
        if (count($Rh) > 1) {
            goto p_;
        }
        goto rn;
        yM:
        return;
        goto rn;
        p_:
        throw new Exception("\115\x6f\x72\145\x20\x74\x68\x61\x6e\40\x6f\x6e\x65\x20\x3c\163\x61\x6d\154\72\x43\157\x6e\x64\x69\164\151\x6f\156\163\76\x20\151\156\x20\x3c\163\141\155\154\x3a\101\163\x73\145\x72\x74\x69\x6f\156\x3e\x2e");
        rn:
        $Rh = $Rh[0];
        if (!$Rh->hasAttribute("\116\157\164\102\145\x66\x6f\162\145")) {
            goto Iu;
        }
        $pa = Utilities::xsDateTimeToTimestamp($Rh->getAttribute("\x4e\x6f\164\x42\145\x66\x6f\x72\x65"));
        if (!($this->notBefore === NULL || $this->notBefore < $pa)) {
            goto o7;
        }
        $this->notBefore = $pa;
        o7:
        Iu:
        if (!$Rh->hasAttribute("\116\x6f\x74\117\156\117\x72\101\x66\164\x65\x72")) {
            goto LT;
        }
        $DA = Utilities::xsDateTimeToTimestamp($Rh->getAttribute("\116\157\164\x4f\156\117\x72\101\146\x74\x65\162"));
        if (!($this->notOnOrAfter === NULL || $this->notOnOrAfter > $DA)) {
            goto rK;
        }
        $this->notOnOrAfter = $DA;
        rK:
        LT:
        $HF = $Rh->firstChild;
        Ph:
        if (!($HF !== NULL)) {
            goto tV;
        }
        if (!$HF instanceof DOMText) {
            goto R9;
        }
        goto zX;
        R9:
        if (!($HF->namespaceURI !== "\165\162\156\72\x6f\x61\x73\151\x73\72\x6e\x61\155\145\x73\72\164\143\x3a\x53\x41\x4d\114\72\x32\x2e\x30\72\x61\163\163\145\x72\164\x69\x6f\x6e")) {
            goto ko;
        }
        throw new Exception("\125\156\153\156\x6f\x77\x6e\x20\156\x61\x6d\145\x73\x70\x61\x63\x65\x20\157\x66\40\143\157\x6e\144\151\x74\x69\157\x6e\x3a\x20" . var_export($HF->namespaceURI, TRUE));
        ko:
        switch ($HF->localName) {
            case "\x41\x75\x64\x69\145\156\143\x65\122\145\163\x74\x72\x69\x63\x74\x69\157\x6e":
                $gg = Utilities::extractStrings($HF, "\x75\x72\156\72\157\x61\163\x69\x73\x3a\x6e\141\155\x65\163\x3a\164\x63\x3a\123\101\x4d\x4c\72\62\x2e\x30\x3a\x61\x73\x73\x65\162\x74\151\x6f\x6e", "\101\165\144\x69\x65\x6e\x63\145");
                if ($this->validAudiences === NULL) {
                    goto OW;
                }
                $this->validAudiences = array_intersect($this->validAudiences, $gg);
                goto w4;
                OW:
                $this->validAudiences = $gg;
                w4:
                goto N2;
            case "\117\156\145\124\151\155\145\x55\x73\x65":
                goto N2;
            case "\x50\162\x6f\170\171\122\x65\x73\164\x72\x69\x63\x74\151\157\x6e":
                goto N2;
            default:
                throw new Exception("\125\156\153\156\157\x77\x6e\40\143\x6f\x6e\x64\151\x74\x69\x6f\x6e\72\x20" . var_export($HF->localName, TRUE));
        }
        d1:
        N2:
        zX:
        $HF = $HF->nextSibling;
        goto Ph;
        tV:
    }
    private function parseAuthnStatement(DOMElement $gp)
    {
        $gj = Utilities::xpQuery($gp, "\56\57\x73\x61\x6d\x6c\x5f\141\x73\x73\145\x72\x74\151\x6f\x6e\x3a\101\165\x74\150\x6e\x53\x74\141\x74\145\155\145\x6e\x74");
        if (empty($gj)) {
            goto LA;
        }
        if (count($gj) > 1) {
            goto Rk;
        }
        goto Kh;
        LA:
        $this->authnInstant = NULL;
        return;
        goto Kh;
        Rk:
        throw new Exception("\x4d\157\x72\145\x20\x74\150\x61\x74\x20\x6f\156\145\40\74\163\x61\155\x6c\x3a\101\x75\164\150\x6e\x53\x74\141\x74\145\155\145\156\164\76\x20\x69\x6e\x20\74\x73\x61\155\x6c\72\x41\163\163\145\162\x74\x69\157\156\x3e\40\x6e\157\164\x20\163\x75\x70\x70\157\162\164\x65\144\x2e");
        Kh:
        $pB = $gj[0];
        if ($pB->hasAttribute("\101\165\x74\x68\x6e\111\x6e\x73\164\x61\x6e\x74")) {
            goto by;
        }
        throw new Exception("\x4d\x69\x73\x73\x69\156\147\40\x72\145\161\x75\x69\x72\x65\144\x20\101\x75\x74\x68\156\x49\156\x73\x74\x61\x6e\164\x20\x61\164\x74\x72\151\x62\165\164\x65\40\x6f\x6e\x20\x3c\163\x61\x6d\x6c\72\101\x75\x74\x68\156\x53\164\141\x74\145\x6d\x65\x6e\164\x3e\x2e");
        by:
        $this->authnInstant = Utilities::xsDateTimeToTimestamp($pB->getAttribute("\x41\165\164\x68\x6e\x49\x6e\x73\164\x61\156\x74"));
        if (!$pB->hasAttribute("\x53\x65\163\x73\x69\x6f\x6e\x4e\157\x74\117\x6e\117\162\x41\x66\164\145\162")) {
            goto Hl;
        }
        $this->sessionNotOnOrAfter = Utilities::xsDateTimeToTimestamp($pB->getAttribute("\x53\x65\163\163\151\157\x6e\x4e\157\164\117\x6e\117\162\x41\146\x74\145\162"));
        Hl:
        if (!$pB->hasAttribute("\x53\x65\163\x73\x69\x6f\156\111\156\144\145\170")) {
            goto fM;
        }
        $this->sessionIndex = $pB->getAttribute("\x53\x65\163\x73\x69\157\156\x49\x6e\x64\x65\x78");
        fM:
        $this->parseAuthnContext($pB);
    }
    private function parseAuthnContext(DOMElement $Yp)
    {
        $w5 = Utilities::xpQuery($Yp, "\x2e\x2f\163\141\155\x6c\137\x61\163\x73\x65\162\x74\x69\x6f\x6e\72\x41\165\x74\x68\x6e\x43\x6f\x6e\164\145\x78\x74");
        if (count($w5) > 1) {
            goto vG;
        }
        if (empty($w5)) {
            goto HE;
        }
        goto NV;
        vG:
        throw new Exception("\x4d\157\162\145\x20\164\x68\x61\156\40\157\156\145\40\x3c\163\141\155\154\x3a\101\165\164\150\156\x43\157\x6e\164\145\x78\164\x3e\40\151\x6e\x20\74\163\x61\155\x6c\72\x41\x75\164\150\x6e\123\x74\x61\x74\145\155\x65\156\x74\76\56");
        goto NV;
        HE:
        throw new Exception("\115\151\x73\163\x69\x6e\147\40\x72\145\x71\165\151\162\145\x64\x20\x3c\163\x61\155\154\x3a\101\165\164\150\x6e\103\x6f\x6e\x74\145\170\164\x3e\40\151\156\40\x3c\163\x61\155\x6c\72\x41\x75\164\x68\156\x53\164\x61\164\x65\x6d\x65\x6e\x74\x3e\x2e");
        NV:
        $Ht = $w5[0];
        $iG = Utilities::xpQuery($Ht, "\x2e\x2f\x73\141\x6d\x6c\137\141\x73\x73\x65\x72\164\151\157\156\72\101\165\164\150\156\x43\x6f\x6e\164\145\x78\164\104\145\143\x6c\122\145\146");
        if (count($iG) > 1) {
            goto it;
        }
        if (count($iG) === 1) {
            goto LQ;
        }
        goto at;
        it:
        throw new Exception("\x4d\x6f\162\145\40\x74\x68\141\x6e\40\x6f\x6e\145\x20\x3c\x73\141\x6d\154\72\101\165\x74\x68\156\103\157\x6e\164\x65\x78\x74\x44\145\x63\154\122\145\146\x3e\40\x66\157\165\x6e\144\x3f");
        goto at;
        LQ:
        $this->setAuthnContextDeclRef(trim($iG[0]->textContent));
        at:
        $Xx = Utilities::xpQuery($Ht, "\x2e\x2f\163\141\155\154\137\x61\163\x73\145\x72\x74\x69\x6f\x6e\72\101\165\x74\x68\x6e\103\x6f\x6e\x74\x65\170\164\x44\145\x63\154");
        if (count($Xx) > 1) {
            goto pV;
        }
        if (count($Xx) === 1) {
            goto ic;
        }
        goto k0;
        pV:
        throw new Exception("\115\157\162\145\40\x74\150\141\x6e\40\x6f\156\145\x20\x3c\x73\141\155\154\x3a\x41\x75\x74\x68\156\x43\x6f\156\164\145\x78\x74\104\145\143\x6c\76\40\146\157\x75\156\x64\x3f");
        goto k0;
        ic:
        $this->setAuthnContextDecl(new SAML2_XML_Chunk($Xx[0]));
        k0:
        $SO = Utilities::xpQuery($Ht, "\x2e\57\163\141\x6d\x6c\x5f\141\163\163\x65\162\x74\151\x6f\x6e\x3a\101\165\164\x68\x6e\x43\x6f\x6e\x74\x65\x78\x74\x43\x6c\141\x73\x73\122\145\146");
        if (count($SO) > 1) {
            goto rb;
        }
        if (count($SO) === 1) {
            goto hN;
        }
        goto jT;
        rb:
        throw new Exception("\x4d\157\162\x65\40\164\150\141\x6e\40\157\156\x65\x20\74\x73\x61\155\x6c\72\101\x75\164\x68\x6e\x43\157\156\x74\x65\x78\x74\103\154\x61\163\163\122\x65\146\76\x20\x69\156\x20\x3c\163\141\x6d\154\72\x41\x75\164\150\x6e\103\157\x6e\164\145\170\164\x3e\x2e");
        goto jT;
        hN:
        $this->setAuthnContextClassRef(trim($SO[0]->textContent));
        jT:
        if (!(empty($this->authnContextClassRef) && empty($this->authnContextDecl) && empty($this->authnContextDeclRef))) {
            goto ZB;
        }
        throw new Exception("\x4d\x69\163\x73\x69\156\x67\40\145\151\164\x68\x65\162\x20\x3c\163\x61\x6d\154\72\101\165\x74\x68\x6e\103\157\x6e\x74\x65\170\x74\103\x6c\x61\x73\163\x52\145\146\76\40\157\162\40\x3c\163\141\x6d\154\72\101\x75\x74\150\x6e\103\x6f\x6e\164\x65\170\x74\x44\145\143\154\x52\145\146\x3e\40\157\162\40\x3c\x73\x61\155\x6c\x3a\x41\x75\x74\150\x6e\x43\x6f\156\164\145\170\164\x44\x65\143\x6c\x3e");
        ZB:
        $this->AuthenticatingAuthority = Utilities::extractStrings($Ht, "\165\162\156\x3a\x6f\x61\x73\x69\163\72\x6e\141\x6d\145\163\72\164\x63\x3a\123\x41\115\114\x3a\x32\56\x30\72\141\x73\163\145\162\164\151\157\156", "\101\165\164\150\145\x6e\x74\151\x63\141\164\x69\156\x67\x41\x75\164\x68\x6f\162\x69\x74\x79");
    }
    private function parseAttributes(DOMElement $gp)
    {
        $BC = TRUE;
        $AZ = Utilities::xpQuery($gp, "\56\57\x73\141\x6d\x6c\137\141\x73\163\x65\x72\164\x69\x6f\156\72\x41\x74\164\162\151\142\165\164\145\123\x74\x61\x74\145\155\x65\x6e\164\x2f\163\x61\x6d\x6c\x5f\x61\163\163\145\162\x74\151\x6f\x6e\72\101\x74\164\162\x69\x62\165\164\x65");
        foreach ($AZ as $IB) {
            if ($IB->hasAttribute("\x4e\141\155\145")) {
                goto N8;
            }
            throw new Exception("\115\x69\163\163\x69\x6e\147\40\x6e\141\155\145\40\x6f\x6e\x20\x3c\163\x61\x6d\154\x3a\x41\x74\164\162\x69\142\165\x74\145\x3e\x20\145\154\145\155\145\x6e\x74\x2e");
            N8:
            $SS = $IB->getAttribute("\116\x61\x6d\145");
            if ($IB->hasAttribute("\x4e\141\x6d\145\106\x6f\162\x6d\141\x74")) {
                goto zd;
            }
            $AB = "\x75\x72\x6e\x3a\157\141\x73\151\163\72\156\141\155\x65\163\72\x74\143\72\123\101\x4d\x4c\x3a\x31\56\x31\72\156\141\x6d\145\151\x64\55\x66\x6f\x72\155\x61\x74\72\165\x6e\163\x70\x65\143\x69\146\151\x65\x64";
            goto vo;
            zd:
            $AB = $IB->getAttribute("\x4e\141\x6d\145\106\157\x72\x6d\x61\164");
            vo:
            if ($BC) {
                goto nD;
            }
            if (!($this->nameFormat !== $AB)) {
                goto Nr;
            }
            $this->nameFormat = "\165\162\x6e\72\x6f\141\163\151\163\x3a\x6e\141\155\145\x73\72\164\x63\72\123\x41\x4d\114\x3a\x31\56\x31\x3a\156\x61\x6d\145\151\144\55\146\157\x72\x6d\x61\164\72\165\x6e\x73\x70\145\143\x69\146\151\x65\144";
            Nr:
            goto EC;
            nD:
            $this->nameFormat = $AB;
            $BC = FALSE;
            EC:
            if (array_key_exists($SS, $this->attributes)) {
                goto GP;
            }
            $this->attributes[$SS] = array();
            GP:
            $Wj = Utilities::xpQuery($IB, "\x2e\57\x73\141\155\x6c\137\x61\x73\x73\145\162\164\151\x6f\x6e\x3a\101\x74\164\x72\x69\142\x75\164\145\126\141\x6c\165\145");
            foreach ($Wj as $rE) {
                $this->attributes[$SS][] = trim($rE->textContent);
                BB:
            }
            Tc:
            TK:
        }
        R8:
    }
    private function parseEncryptedAttributes(DOMElement $gp)
    {
        $this->encryptedAttribute = Utilities::xpQuery($gp, "\56\x2f\x73\141\x6d\x6c\x5f\141\163\x73\145\162\164\x69\157\156\72\x41\x74\x74\162\151\142\x75\164\145\x53\x74\141\x74\145\155\145\156\x74\x2f\163\x61\x6d\154\x5f\141\x73\163\145\x72\x74\151\157\x6e\x3a\105\x6e\x63\162\171\160\x74\145\144\x41\x74\x74\162\x69\x62\x75\164\145");
    }
    private function parseSignature(DOMElement $gp)
    {
        $tw = Utilities::validateElement($gp);
        if (!($tw !== FALSE)) {
            goto S7;
        }
        $this->wasSignedAtConstruction = TRUE;
        $this->certificates = $tw["\103\x65\162\x74\151\x66\x69\143\x61\164\x65\163"];
        $this->signatureData = $tw;
        S7:
    }
    public function validate(XMLSecurityKey $mz)
    {
        if (!($this->signatureData === NULL)) {
            goto kp;
        }
        return FALSE;
        kp:
        Utilities::validateSignature($this->signatureData, $mz);
        return TRUE;
    }
    public function getId()
    {
        return $this->id;
    }
    public function setId($BA)
    {
        $this->id = $BA;
    }
    public function getIssueInstant()
    {
        return $this->issueInstant;
    }
    public function setIssueInstant($xw)
    {
        $this->issueInstant = $xw;
    }
    public function getIssuer()
    {
        return $this->issuer;
    }
    public function setIssuer($u1)
    {
        $this->issuer = $u1;
    }
    public function getNameId()
    {
        if (!($this->encryptedNameId !== NULL)) {
            goto nU;
        }
        throw new Exception("\x41\x74\164\145\x6d\160\x74\x65\x64\40\164\157\40\x72\x65\x74\x72\x69\145\166\145\x20\145\x6e\x63\x72\x79\x70\164\145\144\x20\116\141\155\145\111\x44\40\167\151\164\150\157\x75\x74\x20\144\x65\143\162\x79\x70\164\x69\156\x67\40\151\x74\40\146\x69\x72\x73\x74\56");
        nU:
        return $this->nameId;
    }
    public function setNameId($b3)
    {
        $this->nameId = $b3;
    }
    public function isNameIdEncrypted()
    {
        if (!($this->encryptedNameId !== NULL)) {
            goto yb;
        }
        return TRUE;
        yb:
        return FALSE;
    }
    public function encryptNameId(XMLSecurityKey $mz)
    {
        $OZ = new DOMDocument();
        $rZ = $OZ->createElement("\x72\157\157\164");
        $OZ->appendChild($rZ);
        Utilities::addNameId($rZ, $this->nameId);
        $b3 = $rZ->firstChild;
        Utilities::getContainer()->debugMessage($b3, "\145\x6e\x63\162\x79\160\x74");
        $kF = new XMLSecEnc();
        $kF->setNode($b3);
        $kF->type = XMLSecEnc::Element;
        $Gg = new XMLSecurityKey(XMLSecurityKey::AES128_CBC);
        $Gg->generateSessionKey();
        $kF->encryptKey($mz, $Gg);
        $this->encryptedNameId = $kF->encryptNode($Gg);
        $this->nameId = NULL;
    }
    public function decryptNameId(XMLSecurityKey $mz, array $uB = array())
    {
        if (!($this->encryptedNameId === NULL)) {
            goto o5;
        }
        return;
        o5:
        $b3 = Utilities::decryptElement($this->encryptedNameId, $mz, $uB);
        Utilities::getContainer()->debugMessage($b3, "\x64\145\x63\x72\171\160\164");
        $this->nameId = Utilities::parseNameId($b3);
        $this->encryptedNameId = NULL;
    }
    public function decryptAttributes(XMLSecurityKey $mz, array $uB = array())
    {
        if (!($this->encryptedAttribute === NULL)) {
            goto NQ;
        }
        return;
        NQ:
        $BC = TRUE;
        $AZ = $this->encryptedAttribute;
        foreach ($AZ as $bx) {
            $IB = Utilities::decryptElement($bx->getElementsByTagName("\x45\156\x63\162\171\x70\x74\x65\x64\104\141\x74\141")->item(0), $mz, $uB);
            if ($IB->hasAttribute("\x4e\x61\155\145")) {
                goto KD;
            }
            throw new Exception("\x4d\151\163\x73\x69\156\x67\40\156\x61\155\145\x20\157\x6e\x20\x3c\163\x61\155\x6c\72\x41\x74\164\162\151\142\x75\x74\145\76\x20\145\x6c\x65\x6d\x65\x6e\x74\56");
            KD:
            $SS = $IB->getAttribute("\116\141\155\145");
            if ($IB->hasAttribute("\x4e\141\x6d\145\106\x6f\x72\155\141\x74")) {
                goto qj;
            }
            $AB = "\x75\x72\156\x3a\x6f\141\x73\151\163\72\156\x61\x6d\x65\163\72\164\143\x3a\123\x41\x4d\x4c\x3a\x32\x2e\60\x3a\x61\x74\x74\x72\156\141\x6d\145\x2d\146\157\162\x6d\141\x74\x3a\x75\x6e\x73\160\145\x63\151\x66\151\145\x64";
            goto ox;
            qj:
            $AB = $IB->getAttribute("\116\x61\x6d\x65\x46\x6f\x72\155\x61\x74");
            ox:
            if ($BC) {
                goto Us;
            }
            if (!($this->nameFormat !== $AB)) {
                goto QR;
            }
            $this->nameFormat = "\165\x72\x6e\x3a\x6f\141\x73\151\x73\72\x6e\141\x6d\145\x73\72\164\143\72\x53\101\x4d\x4c\x3a\x32\56\x30\72\141\x74\164\162\156\141\155\x65\55\x66\x6f\x72\155\x61\164\x3a\x75\156\163\x70\x65\143\151\x66\x69\x65\x64";
            QR:
            goto sS;
            Us:
            $this->nameFormat = $AB;
            $BC = FALSE;
            sS:
            if (array_key_exists($SS, $this->attributes)) {
                goto OX;
            }
            $this->attributes[$SS] = array();
            OX:
            $Wj = Utilities::xpQuery($IB, "\x2e\x2f\x73\141\x6d\x6c\x5f\x61\x73\x73\145\162\x74\x69\x6f\156\72\101\164\164\x72\151\x62\165\164\145\x56\x61\154\x75\x65");
            foreach ($Wj as $rE) {
                $this->attributes[$SS][] = trim($rE->textContent);
                W4:
            }
            UT:
            BP:
        }
        Kt:
    }
    public function getNotBefore()
    {
        return $this->notBefore;
    }
    public function setNotBefore($pa)
    {
        $this->notBefore = $pa;
    }
    public function getNotOnOrAfter()
    {
        return $this->notOnOrAfter;
    }
    public function setNotOnOrAfter($DA)
    {
        $this->notOnOrAfter = $DA;
    }
    public function setEncryptedAttributes($Ga)
    {
        $this->requiredEncAttributes = $Ga;
    }
    public function getValidAudiences()
    {
        return $this->validAudiences;
    }
    public function setValidAudiences(array $ws = NULL)
    {
        $this->validAudiences = $ws;
    }
    public function getAuthnInstant()
    {
        return $this->authnInstant;
    }
    public function setAuthnInstant($yv)
    {
        $this->authnInstant = $yv;
    }
    public function getSessionNotOnOrAfter()
    {
        return $this->sessionNotOnOrAfter;
    }
    public function setSessionNotOnOrAfter($Cp)
    {
        $this->sessionNotOnOrAfter = $Cp;
    }
    public function getSessionIndex()
    {
        return $this->sessionIndex;
    }
    public function setSessionIndex($gF)
    {
        $this->sessionIndex = $gF;
    }
    public function getAuthnContext()
    {
        if (empty($this->authnContextClassRef)) {
            goto h3;
        }
        return $this->authnContextClassRef;
        h3:
        if (empty($this->authnContextDeclRef)) {
            goto m1;
        }
        return $this->authnContextDeclRef;
        m1:
        return NULL;
    }
    public function setAuthnContext($CJ)
    {
        $this->setAuthnContextClassRef($CJ);
    }
    public function getAuthnContextClassRef()
    {
        return $this->authnContextClassRef;
    }
    public function setAuthnContextClassRef($sg)
    {
        $this->authnContextClassRef = $sg;
    }
    public function setAuthnContextDecl(SAML2_XML_Chunk $yc)
    {
        if (empty($this->authnContextDeclRef)) {
            goto xR;
        }
        throw new Exception("\x41\x75\x74\150\x6e\x43\157\156\164\x65\x78\164\x44\x65\x63\x6c\x52\x65\x66\x20\x69\163\x20\x61\154\162\145\141\x64\171\40\x72\145\x67\151\x73\x74\x65\162\x65\x64\x21\x20\115\x61\171\40\157\156\154\171\x20\x68\141\x76\145\40\x65\x69\164\x68\145\162\40\141\x20\x44\145\143\x6c\40\x6f\162\x20\x61\x20\x44\x65\143\154\x52\145\146\54\40\156\x6f\164\40\x62\157\164\x68\x21");
        xR:
        $this->authnContextDecl = $yc;
    }
    public function getAuthnContextDecl()
    {
        return $this->authnContextDecl;
    }
    public function setAuthnContextDeclRef($zh)
    {
        if (empty($this->authnContextDecl)) {
            goto mK;
        }
        throw new Exception("\101\x75\x74\x68\x6e\x43\x6f\x6e\164\145\x78\164\x44\145\143\x6c\x20\x69\x73\40\141\x6c\x72\145\x61\x64\171\40\162\145\x67\151\163\164\x65\162\145\144\x21\40\115\x61\x79\40\x6f\x6e\x6c\x79\x20\150\x61\x76\145\x20\x65\x69\164\150\x65\162\40\141\x20\x44\145\143\x6c\40\x6f\162\x20\141\x20\x44\x65\143\154\122\x65\x66\x2c\x20\x6e\x6f\164\40\142\157\x74\x68\x21");
        mK:
        $this->authnContextDeclRef = $zh;
    }
    public function getAuthnContextDeclRef()
    {
        return $this->authnContextDeclRef;
    }
    public function getAuthenticatingAuthority()
    {
        return $this->AuthenticatingAuthority;
    }
    public function setAuthenticatingAuthority($zG)
    {
        $this->AuthenticatingAuthority = $zG;
    }
    public function getAttributes()
    {
        return $this->attributes;
    }
    public function setAttributes(array $AZ)
    {
        $this->attributes = $AZ;
    }
    public function getAttributeNameFormat()
    {
        return $this->nameFormat;
    }
    public function setAttributeNameFormat($AB)
    {
        $this->nameFormat = $AB;
    }
    public function getSubjectConfirmation()
    {
        return $this->SubjectConfirmation;
    }
    public function setSubjectConfirmation(array $wB)
    {
        $this->SubjectConfirmation = $wB;
    }
    public function getSignatureKey()
    {
        return $this->signatureKey;
    }
    public function getSignatureData()
    {
        return $this->signatureData;
    }
    public function setSignatureKey(XMLsecurityKey $ew = NULL)
    {
        $this->signatureKey = $ew;
    }
    public function getEncryptionKey()
    {
        return $this->encryptionKey;
    }
    public function setEncryptionKey(XMLSecurityKey $Aq = NULL)
    {
        $this->encryptionKey = $Aq;
    }
    public function setCertificates(array $MI)
    {
        $this->certificates = $MI;
    }
    public function getCertificates()
    {
        return $this->certificates;
    }
    public function getWasSignedAtConstruction()
    {
        return $this->wasSignedAtConstruction;
    }
    public function toXML(DOMNode $Z1 = NULL)
    {
        if ($Z1 === NULL) {
            goto JF;
        }
        $Ej = $Z1->ownerDocument;
        goto lh;
        JF:
        $Ej = new DOMDocument();
        $Z1 = $Ej;
        lh:
        $rZ = $Ej->createElementNS("\165\162\x6e\x3a\157\141\163\x69\163\x3a\x6e\141\x6d\x65\x73\72\x74\x63\x3a\123\x41\115\114\72\x32\56\x30\x3a\141\163\163\x65\162\x74\x69\x6f\x6e", "\x73\x61\x6d\154\x3a" . "\x41\x73\x73\145\x72\164\151\157\156");
        $Z1->appendChild($rZ);
        $rZ->setAttributeNS("\165\162\x6e\x3a\x6f\141\163\151\x73\72\x6e\141\x6d\x65\x73\72\164\x63\72\x53\101\115\x4c\72\x32\x2e\60\72\160\x72\157\164\157\x63\157\154", "\163\141\155\x6c\x70\x3a\x74\155\160", "\x74\155\160");
        $rZ->removeAttributeNS("\165\162\156\x3a\x6f\x61\163\x69\x73\72\156\x61\x6d\145\163\x3a\x74\143\72\123\x41\x4d\114\72\62\x2e\60\x3a\x70\162\157\x74\x6f\x63\x6f\x6c", "\x74\155\160");
        $rZ->setAttributeNS("\150\x74\164\x70\72\x2f\57\x77\x77\167\56\167\63\56\157\162\x67\57\62\x30\x30\x31\57\130\115\114\x53\143\x68\x65\155\141\55\151\156\x73\x74\141\156\143\x65", "\x78\x73\x69\72\x74\x6d\x70", "\164\155\x70");
        $rZ->removeAttributeNS("\x68\164\x74\x70\72\x2f\x2f\167\167\x77\56\167\63\x2e\157\x72\147\57\62\x30\60\x31\x2f\x58\x4d\x4c\123\x63\x68\145\x6d\141\55\151\156\x73\164\x61\x6e\x63\145", "\x74\155\x70");
        $rZ->setAttributeNS("\x68\x74\164\160\72\57\57\167\167\167\56\x77\x33\x2e\157\162\147\x2f\62\60\x30\x31\x2f\130\115\x4c\123\143\x68\x65\155\141", "\x78\x73\72\x74\x6d\160", "\164\x6d\x70");
        $rZ->removeAttributeNS("\x68\x74\164\160\x3a\57\x2f\167\x77\x77\56\x77\63\56\x6f\x72\147\x2f\62\60\60\61\57\130\115\x4c\x53\143\150\x65\155\141", "\164\155\160");
        $rZ->setAttribute("\111\104", $this->id);
        $rZ->setAttribute("\x56\145\x72\x73\151\x6f\x6e", "\x32\56\x30");
        $rZ->setAttribute("\x49\x73\x73\165\145\x49\156\163\x74\x61\x6e\x74", gmdate("\x59\55\x6d\55\x64\x5c\124\x48\72\x69\72\163\134\x5a", $this->issueInstant));
        $u1 = Utilities::addString($rZ, "\165\162\x6e\72\157\x61\163\151\x73\x3a\x6e\x61\155\x65\163\72\164\x63\72\x53\101\115\x4c\72\62\x2e\x30\x3a\141\163\x73\x65\162\164\x69\157\x6e", "\x73\141\x6d\x6c\x3a\x49\x73\163\165\x65\x72", $this->issuer);
        $this->addSubject($rZ);
        $this->addConditions($rZ);
        $this->addAuthnStatement($rZ);
        if ($this->requiredEncAttributes == FALSE) {
            goto Gm;
        }
        $this->addEncryptedAttributeStatement($rZ);
        goto O0;
        Gm:
        $this->addAttributeStatement($rZ);
        O0:
        if (!($this->signatureKey !== NULL)) {
            goto bv;
        }
        Utilities::insertSignature($this->signatureKey, $this->certificates, $rZ, $u1->nextSibling);
        bv:
        return $rZ;
    }
    private function addSubject(DOMElement $rZ)
    {
        if (!($this->nameId === NULL && $this->encryptedNameId === NULL)) {
            goto II;
        }
        return;
        II:
        $sU = $rZ->ownerDocument->createElementNS("\165\162\x6e\72\x6f\141\163\x69\163\72\x6e\x61\x6d\145\x73\72\164\x63\x3a\x53\x41\115\x4c\72\x32\56\60\x3a\141\x73\163\145\x72\164\x69\157\156", "\x73\x61\155\154\72\x53\165\x62\x6a\x65\x63\164");
        $rZ->appendChild($sU);
        if ($this->encryptedNameId === NULL) {
            goto Ew;
        }
        $fm = $sU->ownerDocument->createElementNS("\x75\162\x6e\72\x6f\x61\163\x69\163\x3a\x6e\141\x6d\145\163\x3a\x74\x63\72\x53\x41\x4d\114\x3a\x32\x2e\60\72\x61\163\x73\x65\162\164\151\157\156", "\x73\141\155\x6c\x3a" . "\105\x6e\143\x72\171\x70\x74\145\x64\x49\104");
        $sU->appendChild($fm);
        $fm->appendChild($sU->ownerDocument->importNode($this->encryptedNameId, TRUE));
        goto zY;
        Ew:
        Utilities::addNameId($sU, $this->nameId);
        zY:
        foreach ($this->SubjectConfirmation as $z5) {
            $z5->toXML($sU);
            ov:
        }
        sG:
    }
    private function addConditions(DOMElement $rZ)
    {
        $Ej = $rZ->ownerDocument;
        $Rh = $Ej->createElementNS("\165\x72\x6e\x3a\x6f\141\x73\151\x73\72\x6e\x61\155\145\163\72\x74\x63\x3a\x53\x41\115\114\72\x32\56\x30\x3a\x61\163\x73\x65\x72\164\x69\157\x6e", "\163\141\x6d\154\72\x43\x6f\x6e\x64\151\164\151\157\156\x73");
        $rZ->appendChild($Rh);
        if (!($this->notBefore !== NULL)) {
            goto xj;
        }
        $Rh->setAttribute("\x4e\x6f\164\102\145\x66\157\x72\145", gmdate("\x59\55\x6d\55\144\134\124\x48\x3a\x69\72\x73\134\x5a", $this->notBefore));
        xj:
        if (!($this->notOnOrAfter !== NULL)) {
            goto Uv;
        }
        $Rh->setAttribute("\x4e\157\164\x4f\156\117\x72\101\146\x74\x65\162", gmdate("\131\x2d\x6d\55\144\134\124\x48\72\151\72\x73\134\132", $this->notOnOrAfter));
        Uv:
        if (!($this->validAudiences !== NULL)) {
            goto sF;
        }
        $JQ = $Ej->createElementNS("\x75\x72\x6e\72\x6f\141\x73\151\163\72\156\x61\155\x65\163\x3a\x74\143\x3a\123\x41\x4d\x4c\x3a\62\x2e\x30\x3a\141\163\x73\x65\x72\164\151\157\x6e", "\163\141\155\154\72\101\x75\x64\x69\x65\156\143\x65\x52\145\163\x74\x72\x69\143\x74\x69\157\156");
        $Rh->appendChild($JQ);
        Utilities::addStrings($JQ, "\x75\162\x6e\72\x6f\141\163\151\163\x3a\156\141\155\145\163\x3a\x74\143\x3a\x53\101\115\x4c\x3a\62\x2e\60\72\141\x73\x73\145\162\x74\x69\x6f\x6e", "\163\141\155\154\x3a\101\165\144\151\145\x6e\x63\145", FALSE, $this->validAudiences);
        sF:
    }
    private function addAuthnStatement(DOMElement $rZ)
    {
        if (!($this->authnInstant === NULL || $this->authnContextClassRef === NULL && $this->authnContextDecl === NULL && $this->authnContextDeclRef === NULL)) {
            goto lK;
        }
        return;
        lK:
        $Ej = $rZ->ownerDocument;
        $Yp = $Ej->createElementNS("\165\x72\156\72\157\x61\163\x69\x73\x3a\156\x61\x6d\x65\163\x3a\x74\x63\72\x53\101\115\x4c\x3a\62\x2e\x30\x3a\141\x73\163\x65\162\x74\151\x6f\x6e", "\x73\141\x6d\x6c\x3a\x41\165\x74\150\x6e\123\164\x61\x74\x65\x6d\x65\156\x74");
        $rZ->appendChild($Yp);
        $Yp->setAttribute("\x41\165\x74\150\156\111\156\163\x74\x61\x6e\x74", gmdate("\x59\55\x6d\x2d\144\x5c\124\110\x3a\x69\72\163\x5c\x5a", $this->authnInstant));
        if (!($this->sessionNotOnOrAfter !== NULL)) {
            goto hX;
        }
        $Yp->setAttribute("\123\145\163\163\151\x6f\156\x4e\x6f\164\117\x6e\117\162\x41\146\x74\145\x72", gmdate("\131\55\155\55\144\x5c\124\110\x3a\151\x3a\163\x5c\x5a", $this->sessionNotOnOrAfter));
        hX:
        if (!($this->sessionIndex !== NULL)) {
            goto KW;
        }
        $Yp->setAttribute("\123\x65\163\163\x69\157\156\111\156\144\x65\x78", $this->sessionIndex);
        KW:
        $Ht = $Ej->createElementNS("\165\x72\x6e\x3a\157\141\163\151\x73\x3a\156\x61\x6d\145\163\72\x74\143\x3a\x53\x41\115\x4c\72\62\x2e\x30\72\x61\x73\x73\145\162\x74\x69\x6f\x6e", "\x73\x61\x6d\x6c\72\x41\x75\164\x68\x6e\103\x6f\x6e\164\x65\x78\x74");
        $Yp->appendChild($Ht);
        if (empty($this->authnContextClassRef)) {
            goto FA;
        }
        Utilities::addString($Ht, "\165\162\156\72\157\141\x73\151\x73\x3a\156\x61\x6d\145\x73\x3a\x74\143\x3a\123\101\x4d\114\x3a\62\x2e\x30\72\x61\163\163\145\162\x74\x69\157\x6e", "\x73\x61\155\154\72\x41\x75\x74\150\156\x43\157\x6e\164\145\170\164\x43\x6c\141\163\163\x52\145\x66", $this->authnContextClassRef);
        FA:
        if (empty($this->authnContextDecl)) {
            goto ED;
        }
        $this->authnContextDecl->toXML($Ht);
        ED:
        if (empty($this->authnContextDeclRef)) {
            goto bj;
        }
        Utilities::addString($Ht, "\x75\x72\x6e\x3a\157\x61\163\151\x73\72\x6e\141\155\145\x73\x3a\164\143\x3a\123\101\x4d\x4c\72\x32\x2e\60\72\x61\163\163\145\x72\x74\x69\157\x6e", "\x73\141\x6d\154\72\x41\165\164\150\x6e\x43\157\156\x74\145\170\x74\104\x65\143\154\x52\145\146", $this->authnContextDeclRef);
        bj:
        Utilities::addStrings($Ht, "\165\x72\x6e\x3a\x6f\x61\x73\151\163\72\x6e\x61\x6d\x65\163\72\164\x63\x3a\123\101\x4d\x4c\72\62\56\60\72\141\x73\x73\x65\x72\x74\x69\x6f\x6e", "\x73\141\155\x6c\x3a\101\165\x74\150\x65\x6e\x74\151\x63\x61\x74\x69\156\147\x41\x75\x74\x68\x6f\x72\x69\x74\171", FALSE, $this->AuthenticatingAuthority);
    }
    private function addAttributeStatement(DOMElement $rZ)
    {
        if (!empty($this->attributes)) {
            goto UI;
        }
        return;
        UI:
        $Ej = $rZ->ownerDocument;
        $if = $Ej->createElementNS("\165\x72\x6e\x3a\x6f\x61\x73\151\163\x3a\x6e\x61\155\145\163\72\164\143\x3a\123\101\x4d\114\x3a\x32\56\x30\72\141\x73\163\145\162\164\x69\157\156", "\x73\x61\155\154\x3a\101\164\x74\162\151\x62\x75\164\145\x53\x74\141\x74\x65\x6d\x65\x6e\164");
        $rZ->appendChild($if);
        foreach ($this->attributes as $SS => $Wj) {
            $IB = $Ej->createElementNS("\x75\162\x6e\72\x6f\141\x73\x69\163\x3a\x6e\x61\155\x65\x73\x3a\x74\143\x3a\123\x41\x4d\114\x3a\62\56\x30\x3a\x61\x73\x73\x65\x72\164\x69\157\x6e", "\163\x61\x6d\x6c\72\101\x74\164\x72\151\x62\165\164\x65");
            $if->appendChild($IB);
            $IB->setAttribute("\x4e\141\155\145", $SS);
            if (!($this->nameFormat !== "\165\x72\x6e\x3a\157\x61\163\x69\x73\72\156\141\155\145\x73\x3a\164\143\x3a\123\x41\115\114\72\x32\x2e\x30\72\141\x74\164\162\156\141\155\145\55\x66\157\162\x6d\141\x74\x3a\x75\156\x73\160\145\143\151\146\151\x65\x64")) {
                goto ec;
            }
            $IB->setAttribute("\x4e\141\x6d\145\x46\157\162\x6d\x61\164", $this->nameFormat);
            ec:
            foreach ($Wj as $rE) {
                if (is_string($rE)) {
                    goto y4;
                }
                if (is_int($rE)) {
                    goto gc;
                }
                $Ak = NULL;
                goto H9;
                y4:
                $Ak = "\170\163\x3a\163\164\x72\151\x6e\147";
                goto H9;
                gc:
                $Ak = "\170\x73\x3a\151\156\164\x65\147\145\x72";
                H9:
                $TQ = $Ej->createElementNS("\x75\x72\156\72\x6f\141\163\151\163\x3a\x6e\x61\x6d\x65\163\x3a\164\143\72\123\x41\x4d\114\x3a\x32\x2e\60\x3a\x61\163\163\145\162\x74\x69\157\156", "\x73\141\155\154\x3a\x41\x74\164\x72\151\x62\165\164\145\x56\x61\154\x75\x65");
                $IB->appendChild($TQ);
                if (!($Ak !== NULL)) {
                    goto MD;
                }
                $TQ->setAttributeNS("\150\164\164\160\72\x2f\57\x77\x77\x77\x2e\x77\x33\x2e\157\162\x67\x2f\x32\60\60\x31\x2f\x58\115\114\123\x63\150\145\x6d\141\55\x69\x6e\x73\x74\141\x6e\143\145", "\x78\x73\151\x3a\x74\171\160\x65", $Ak);
                MD:
                if (!is_null($rE)) {
                    goto k3;
                }
                $TQ->setAttributeNS("\150\164\164\x70\72\57\x2f\x77\x77\x77\56\167\63\56\157\x72\147\x2f\x32\x30\x30\61\57\130\x4d\x4c\123\143\150\145\x6d\x61\x2d\x69\x6e\163\x74\x61\156\x63\x65", "\170\163\x69\72\156\x69\x6c", "\164\x72\165\x65");
                k3:
                if ($rE instanceof DOMNodeList) {
                    goto Vj;
                }
                $TQ->appendChild($Ej->createTextNode($rE));
                goto li;
                Vj:
                $Eo = 0;
                ib:
                if (!($Eo < $rE->length)) {
                    goto pp;
                }
                $HF = $Ej->importNode($rE->item($Eo), TRUE);
                $TQ->appendChild($HF);
                ZS:
                $Eo++;
                goto ib;
                pp:
                li:
                rE:
            }
            DI:
            ss:
        }
        p2:
    }
    private function addEncryptedAttributeStatement(DOMElement $rZ)
    {
        if (!($this->requiredEncAttributes == FALSE)) {
            goto rW;
        }
        return;
        rW:
        $Ej = $rZ->ownerDocument;
        $if = $Ej->createElementNS("\x75\x72\156\x3a\x6f\141\x73\151\163\x3a\156\x61\x6d\x65\163\x3a\164\143\x3a\x53\x41\x4d\114\x3a\x32\x2e\x30\72\141\163\163\145\162\164\151\157\x6e", "\163\x61\155\154\x3a\101\164\x74\162\151\x62\x75\x74\x65\123\x74\x61\164\x65\x6d\x65\x6e\164");
        $rZ->appendChild($if);
        foreach ($this->attributes as $SS => $Wj) {
            $e1 = new DOMDocument();
            $IB = $e1->createElementNS("\165\162\x6e\72\157\x61\x73\x69\163\x3a\156\141\x6d\x65\163\x3a\164\143\72\x53\x41\x4d\x4c\x3a\x32\56\60\72\x61\163\163\145\162\x74\x69\x6f\x6e", "\163\x61\155\x6c\x3a\x41\x74\x74\162\151\x62\165\164\145");
            $IB->setAttribute("\116\141\x6d\x65", $SS);
            $e1->appendChild($IB);
            if (!($this->nameFormat !== "\x75\x72\156\x3a\157\x61\x73\x69\163\72\156\x61\155\x65\x73\x3a\x74\143\72\123\x41\115\x4c\72\x32\x2e\x30\72\x61\x74\164\162\x6e\x61\x6d\x65\55\x66\x6f\x72\x6d\x61\x74\x3a\165\x6e\163\160\145\x63\x69\x66\x69\x65\144")) {
                goto Xz;
            }
            $IB->setAttribute("\116\141\x6d\x65\106\x6f\x72\x6d\141\x74", $this->nameFormat);
            Xz:
            foreach ($Wj as $rE) {
                if (is_string($rE)) {
                    goto bK;
                }
                if (is_int($rE)) {
                    goto jm;
                }
                $Ak = NULL;
                goto Je;
                bK:
                $Ak = "\x78\163\72\x73\x74\x72\151\x6e\x67";
                goto Je;
                jm:
                $Ak = "\x78\x73\72\151\156\164\x65\x67\x65\x72";
                Je:
                $TQ = $e1->createElementNS("\165\x72\156\x3a\x6f\x61\x73\151\163\72\x6e\x61\x6d\145\163\72\x74\143\72\x53\x41\115\x4c\72\x32\x2e\60\72\141\163\163\145\x72\164\x69\157\x6e", "\163\x61\x6d\x6c\x3a\x41\164\164\x72\151\142\165\164\x65\126\141\x6c\x75\145");
                $IB->appendChild($TQ);
                if (!($Ak !== NULL)) {
                    goto av;
                }
                $TQ->setAttributeNS("\150\164\164\x70\x3a\x2f\57\x77\x77\167\x2e\167\x33\x2e\157\x72\147\x2f\x32\x30\x30\x31\57\x58\x4d\114\123\x63\150\145\155\141\x2d\151\x6e\163\x74\141\x6e\143\x65", "\170\163\x69\72\x74\171\160\x65", $Ak);
                av:
                if ($rE instanceof DOMNodeList) {
                    goto RL;
                }
                $TQ->appendChild($e1->createTextNode($rE));
                goto Aw;
                RL:
                $Eo = 0;
                qy:
                if (!($Eo < $rE->length)) {
                    goto r1;
                }
                $HF = $e1->importNode($rE->item($Eo), TRUE);
                $TQ->appendChild($HF);
                fF:
                $Eo++;
                goto qy;
                r1:
                Aw:
                BU:
            }
            x1:
            $ha = new XMLSecEnc();
            $ha->setNode($e1->documentElement);
            $ha->type = "\150\164\x74\x70\x3a\x2f\57\167\167\167\56\x77\63\x2e\x6f\162\x67\57\x32\60\x30\61\57\60\64\x2f\x78\x6d\x6c\x65\156\x63\43\105\154\x65\x6d\x65\156\164";
            $Gg = new XMLSecurityKey(XMLSecurityKey::AES256_CBC);
            $Gg->generateSessionKey();
            $ha->encryptKey($this->encryptionKey, $Gg);
            $qM = $ha->encryptNode($Gg);
            $kw = $Ej->createElementNS("\165\162\x6e\72\157\141\163\x69\x73\72\x6e\141\155\145\x73\72\x74\143\72\123\x41\x4d\114\72\62\x2e\x30\72\x61\x73\163\145\x72\x74\x69\x6f\x6e", "\x73\141\x6d\154\x3a\105\156\x63\162\171\x70\164\145\x64\x41\x74\164\x72\x69\142\x75\x74\x65");
            $if->appendChild($kw);
            $dN = $Ej->importNode($qM, TRUE);
            $kw->appendChild($dN);
            JJ:
        }
        yi:
    }
}

Function Calls

None

Variables

None

Stats

MD5 42a5bcc3864f0f30c60b4405aef318d5
Eval Count 0
Decode Time 163 ms