/**
  * Realiza a validação do documento.
  * @param bool $lVerificarIntegridadeDocumento true para validar a integridade do documento
  * @return bool
  */
 public function validar($lVerificarIntegridadeDocumento = true)
 {
     if ($this->getDataFinal() < new DateTime()) {
         $this->lastError = self::ERRO_CERTIFICADO_VENCIDO;
         return false;
     }
     $oXMLSecDSig = new DBSeller_Helper_Xml_Security_XMLSecurityDSig();
     $oAssinatura = $oXMLSecDSig->locateSignature($this->oDomDocument);
     if (empty($oAssinatura)) {
         $this->lastError = self::ERRO_ASSINATURA_NAO_ENCONTRADA;
         return false;
     }
     $oXMLSecDSig->canonicalizeSignedInfo();
     if ($lVerificarIntegridadeDocumento && !$oXMLSecDSig->validateReference()) {
         $this->lastError = self::ERRO_INTEGRIDADE_DOCUMENTO;
         return false;
     }
     $oKeyData = $oXMLSecDSig->locateKey();
     if (!$oKeyData) {
         $this->lastError = self::ERRO_ASSINATURA_INVALIDA;
         return false;
     }
     $objKeyInfo = DBSeller_Helper_Xml_Security_XMLSecEnc::staticLocateKeyInfo($oKeyData, $oAssinatura);
     return $oXMLSecDSig->verify($objKeyInfo);
 }