--TEST-- 
Basic Decryption 
--FILE-- 
<?php 
require(dirname(__FILE__) . '/../xmlseclibs.php'); 
 
/* When we need to locate our own key based on something like a key name */ 
function locateLocalKey($objKey) { 
    /* In this example the key is identified by filename */ 
    $filename = $objKey->name; 
    if (! empty($filename)) { 
        $objKey->loadKey(dirname(__FILE__) . "/$filename", TRUE); 
    } else { 
        $objKey->loadKey(dirname(__FILE__) . "/privkey.pem", TRUE); 
    } 
} 
 
$arTests = array('AOESP_SHA1'=>'oaep_sha1-res.xml'); 
 
$doc = new DOMDocument(); 
 
foreach ($arTests AS $testName=>$testFile) { 
    $output = NULL; 
    print "$testName: "; 
 
    $doc->load(dirname(__FILE__) . "/$testFile"); 
     
    try { 
        $objenc = new XMLSecEnc(); 
        $encData = $objenc->locateEncryptedData($doc); 
        if (! $encData) { 
            throw new Exception("Cannot locate Encrypted Data"); 
        } 
        $objenc->setNode($encData); 
        $objenc->type = $encData->getAttribute("Type"); 
        if (! $objKey = $objenc->locateKey()) { 
            throw new Exception("We know the secret key, but not the algorithm"); 
        } 
        $key = NULL; 
         
        if ($objKeyInfo = $objenc->locateKeyInfo($objKey)) { 
            if ($objKeyInfo->isEncrypted) { 
                $objencKey = $objKeyInfo->encryptedCtx; 
                locateLocalKey($objKeyInfo); 
                $key = $objencKey->decryptKey($objKeyInfo); 
            } 
        } 
         
        if (! $objKey->key && empty($key)) { 
            locateLocalKey($objKey); 
        } 
        if (empty($objKey->key)) { 
            $objKey->loadKey($key); 
        } 
         
        $token = NULL; 
 
        if ($decrypt = $objenc->decryptNode($objKey, TRUE)) { 
            $output = NULL; 
            if ($decrypt instanceof DOMNode) { 
                if ($decrypt instanceof DOMDocument) {     
                    $output = $decrypt->saveXML(); 
                } else { 
                    $output = $decrypt->ownerDocument->saveXML(); 
                } 
            } else { 
                $output = $decrypt; 
            } 
        } 
    } catch (Exception $e) { 
 
    } 
 
    $outfile = dirname(__FILE__) . "/basic-doc.xml"; 
    $res = NULL; 
    if (file_exists($outfile)) { 
        $resDoc = new DOMDocument(); 
        $resDoc->load($outfile); 
        $res = $resDoc->saveXML(); 
        if ($output == $res) { 
            print "Passed\n"; 
            continue; 
        } 
    } 
    print "Failed\n"; 
     
} 
?> 
--EXPECTF-- 
AOESP_SHA1: Passed 
 
 |