nfephp-org / sped-common

Classes comuns usadas nas atividades e classes das API's de NFe, CTe e MDFe
Other
97 stars 121 forks source link

Erro para validar XML com multiplas assinaturas #308

Closed elvispdosreis closed 2 months ago

elvispdosreis commented 2 months ago

no xml abaixo eu estou tentando validar a assinatura do nó "LoteRps" o DigestValue está sendo calculado correto porém

$signature = $dom->getElementsByTagName('Signature')->item(0);

a validação está sendo obtido a partir da "#ref2". O ID é opcional no arquivo; no entanto, se ele for incluído, é necessário buscar uma assinatura com a mesma referencia, caso o ID não exista, deve-se procurar a assinatura abaixo do nó correspondente no XML.

image

<?xml version="1.0"?>
<EnviarLoteRpsSincronoEnvio xmlns="http://www.abrasf.org.br/nfse.xsd">
    <LoteRps Id="ref1" versao="2.03">
        <ListaRps>
            <Rps>
                <InfDeclaracaoPrestacaoServico Id="ref2">
                    ...
                </InfDeclaracaoPrestacaoServico>
                <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
                    <SignedInfo>
                        <Reference URI="#ref2">
                            <DigestValue>rhmt6UEb4O0fWEIc3P9gl0ga05Q=</DigestValue>
                        </Reference>
                    </SignedInfo>
                </Signature>
            </Rps>
        </ListaRps>
    </LoteRps>
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        <SignedInfo>
            <Reference URI="#ref1">
                <DigestValue>uVtnmb19NVXNQoHf0FZaAiwYHWE=</DigestValue>
            </Reference>
        </SignedInfo>
    </Signature>
</EnviarLoteRpsSincronoEnvio>
robmachado commented 2 months ago

Esta classe somente realiza UMA assinatura e NUNCA fará mais de uma. Pois isso não faz parte do projeto SPED. As NFSe requerem uma outra classe