function verifyAssertion($responseXmlString,$rootcert) 
   {
      date_default_timezone_set("UTC");
      if (file_exists("/tmp/xml")) {
         $tempFileDir="/tmp/xml/";          
      
      } else {
             mkdir("/tmp/xml",0777);   
         $tempFileDir="/tmp/xml/";
      }
      
      $tempName = 'saml-response-' . $this->samlCreateId() . '.xml';
      $tempFileName=$tempFileDir.$tempName;
      while (file_exists($tempFileName)) 
         $tempFileName = 'saml-response-' . $this->samlCreateId() . '.xml';

      if (!$handle = fopen($tempFileName, 'w')) {
         return false;
      }

      if (fwrite($handle, $responseXmlString) === false) {
         return false;
      }

      $p=xml_parser_create();
      $result=xml_parse_into_struct($p,$responseXmlString,$vals,$index);
      xml_parser_free($p);
      $cert_info=$index["X509CERTIFICATE"];
      $conditions=$index["CONDITIONS"];
      foreach($cert_info as $key=>$value){
         file_put_contents($tempFileName.'.cert',$vals[$value]['value']);
      }
      $cert=$tempFileName.'.cert';
      $before=0;
      $after=0;
      foreach($conditions as $key=>$value){
         $before=$vals[$value]['attributes']['NOTBEFORE'];
         $after=$vals[$value]['attributes']['NOTONORAFTER'];
      }
      $before=$this->validSamlDateFormat($before);
      $after=$this->validSamlDateFormat($after);
      if(strtotime("now") < $before || strtotime("now") >= $after){
         unlink($tempFileName);
         unlink($cert);
         return false;
      }
      fclose($handle);
      $cmd = 'xmlsec1 --verify --pubkey-cert ' . $cert .'--trusted '.$rootcert. ' '.$tempFileName.'* 2>&1 1>/dev/null';
      exec($cmd,$resp);
      if(strcmp($resp[0],"FAIL") == 0){
         $value = false;
      }elseif(strcmp($resp[0],"ERROR") == 0){
         $value = false;
      }elseif(strcmp($resp[0],"OK") == 0){
         $value = TRUE;
      }
      unlink($tempFileName);
      unlink($cert);
      return $value;
   }
function verifyAssertion($responseXmlString,$rootcert) 
   {
      date_default_timezone_set("UTC");
      if (file_exists("/tmp/xml")) {
         $tempFileDir="/tmp/xml/";          
      
      } else {
             mkdir("/tmp/xml",0777);   
         $tempFileDir="/tmp/xml/";
      }
      
      $tempName = 'saml-response-' . $this->samlCreateId() . '.xml';
      $tempFileName=$tempFileDir.$tempName;
      while (file_exists($tempFileName)) 
         $tempFileName = 'saml-response-' . $this->samlCreateId() . '.xml';

      if (!$handle = fopen($tempFileName, 'w')) {
         return false;
      }

      if (fwrite($handle, $responseXmlString) === false) {
         return false;
      }

      $p=xml_parser_create();
      $result=xml_parse_into_struct($p,$responseXmlString,$vals,$index);
      xml_parser_free($p);
      $cert_info=$index["X509CERTIFICATE"];
      $conditions=$index["CONDITIONS"];
      foreach($cert_info as $key=>$value){
         file_put_contents($tempFileName.'.cert',$vals[$value]['value']);
      }
      $cert=$tempFileName.'.cert';
      $before=0;
      $after=0;
      foreach($conditions as $key=>$value){
         $before=$vals[$value]['attributes']['NOTBEFORE'];
         $after=$vals[$value]['attributes']['NOTONORAFTER'];
      }
      $before=$this->validSamlDateFormat($before);
      $after=$this->validSamlDateFormat($after);
      if(strtotime("now") < $before || strtotime("now") >= $after){
         unlink($tempFileName);
         unlink($cert);
         return false;
      }
      fclose($handle);
      $cmd = 'xmlsec1 --verify --pubkey-cert ' . $cert .'--trusted '.$rootcert. ' '.$tempFileName.'* 2>&1 1>/dev/null';
      exec($cmd,$resp);
      if(strcmp($resp[0],"FAIL") == 0){
         $value = false;
      }elseif(strcmp($resp[0],"ERROR") == 0){
         $value = false;
      }elseif(strcmp($resp[0],"OK") == 0){
         $value = TRUE;
      }
      unlink($tempFileName);
      unlink($cert);
      return $value;
   }
function verifyAssertion ( $ responseXmlString , $ rootcert ) { date_default_timezone_set ( "UTC" ) ; if ( file_exists ( "/tmp/xml" ) ) { $ tempFileDir = "/tmp/xml/" ; } else { mkdir ( "/tmp/xml" , 0777 ) ; $ tempFileDir = "/tmp/xml/" ; } $ tempName = 'saml-response-' . $ this -> samlCreateId ( ) . '.xml' ; $ tempFileName = $ tempFileDir . $ tempName ; while ( file_exists ( $ tempFileName ) ) $ tempFileName = 'saml-response-' . $ this -> samlCreateId ( ) . '.xml' ; if ( ! $ handle = fopen ( $ tempFileName , 'w' ) ) { return false ; } if ( fwrite ( $ handle , $ responseXmlString ) === false ) { return false ; } $ p = xml_parser_create ( ) ; $ result = xml_parse_into_struct ( $ p , $ responseXmlString , $ vals , $ index ) ; xml_parser_free ( $ p ) ; $ cert_info = $ index [ "X509CERTIFICATE" ] ; $ conditions = $ index [ "CONDITIONS" ] ; foreach ( $ cert_info as $ key => $ value ) { file_put_contents ( $ tempFileName . '.cert' , $ vals [ $ value ] [ 'value' ] ) ; } $ cert = $ tempFileName . '.cert' ; $ before = 0 ; $ after = 0 ; foreach ( $ conditions as $ key => $ value ) { $ before = $ vals [ $ value ] [ 'attributes' ] [ 'NOTBEFORE' ] ; $ after = $ vals [ $ value ] [ 'attributes' ] [ 'NOTONORAFTER' ] ; } $ before = $ this -> validSamlDateFormat ( $ before ) ; $ after = $ this -> validSamlDateFormat ( $ after ) ; if ( strtotime ( "now" ) < $ before || strtotime ( "now" ) >= $ after ) { unlink ( $ tempFileName ) ; unlink ( $ cert ) ; return false ; } fclose ( $ handle ) ; $ cmd = 'xmlsec1 --verify --pubkey-cert ' . $ cert . '--trusted ' . $ rootcert . ' ' . $ tempFileName . '* 2>&1 1>/dev/null' ; exec ( $ cmd , $ resp ) ; if ( strcmp ( $ resp [ 0 ] , "FAIL" ) == 0 ) { $ value = false ; } elseif ( strcmp ( $ resp [ 0 ] , "ERROR" ) == 0 ) { $ value = false ; } elseif ( strcmp ( $ resp [ 0 ] , "OK" ) == 0 ) { $ value = TRUE ; } unlink ( $ tempFileName ) ; unlink ( $ cert ) ; return $ value ; }
Verify a saml response with the given public key.
@param string $responseXmlString Response to sign
@param string $rootcert trusted public key certificate
@return string Signed SAML response
Verify a saml response with the given public key .