/** * 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); }