Bom dia pessoal, estou com dúvidas sobre assinatura em XML em um nó específico do arquivo.
Estou implementando um sistema PHP para emissão automática de nota fiscal de serviço. Atualmente consigo assinar o arquvio XML e enviar via SOAP para o servidor da prefeitura de Salvador/BA.
Entretanto, ao enviar, recebo o erro “Assinatura digital da NFTS incorreta”. Ao estudar a estrutura do XML modelo, vi que existe um campo no XML onde precisa ter uma assinatura da nota fiscal, e não o Signature que assina o documento.
Segue abaixo o modelo da nota fiscal que peguei no site da prefeitura:
<PedidoEnvioNFTS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://nfse.salvador.ba.gov.br/nfts">
<Cabecalho Versao="1" xmlns="">
<Remetente>
<CPFCNPJ>
<CNPJ>57529050000188</CNPJ>
</CPFCNPJ>
</Remetente>
</Cabecalho>
<NFTS xmlns="">
<TipoDocumento>01</TipoDocumento>
<ChaveDocumento>
<InscricaoMunicipal>13580200127</InscricaoMunicipal>
<SerieNFTS>A</SerieNFTS>
<NumeroDocumento>202</NumeroDocumento>
</ChaveDocumento>
<DataPrestacao>2014-10-02</DataPrestacao>
<StatusNFTS>N</StatusNFTS>
<TributacaoNFTS>T</TributacaoNFTS>
<ValorServicos>100</ValorServicos>
<ValorDeducoes>0</ValorDeducoes>
<CodigoServico>103</CodigoServico>
<AliquotaServicos>0.03</AliquotaServicos>
<ISSRetidoTomador>false</ISSRetidoTomador>
<Prestador>
<CPFCNPJ>
<CNPJ>32250824000106</CNPJ>
</CPFCNPJ>
<RazaoSocialPrestador>Prestador Teste</RazaoSocialPrestador>
<Endereco>
<CEP>44020200</CEP>
</Endereco>
<Email>[email protected]</Email>
</Prestador>
<RegimeTributacao>0</RegimeTributacao>
<Discriminacao>Emissao de NFTS</Discriminacao>
<TipoNFTS>1</TipoNFTS>
<Assinatura>ODY+3VzyGzi3hTi+FtXcWYputJtZat4txp8fQBdMPkei1DsWsd02vpubTUyLLYpE/1cXzlbJFEbKdV3uf3n4LP3rWlUgmWDat+NjCakSysqxq42UCqIQ9Se4QWYKV4pyEIX8iAaB5RmBzzRme2bdLDkcVP+G9FYNqlzdrBhhAwqRR+kkio6Htor17a9WspFIHPVMwKAIobqCvSXEuhvCWMLS3oX47VIkHG/iAD/mZgaJiyIvYwl+jylGZOYw3tZ27Jmk/r2n9IQgHegNo6IMch7m7vgTOVEtilOi0Gx/otfwhj5pRIPVB8txHeu4KFGjzs6sHlcxwhpcppO3pTngEA==</Assinatura>
</NFTS>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>X6CiD8MsW3rwvIgL1EflzMttwK8=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>vI50jrPlWfWUq0ld1X9STxFGDfI327knRq3zg/CNtH+X0aoYzYoOPdSKJ2LDdPrrsQFGTaVPqne1XioPmnJpwguVJ5BSlHZy0ebtm2isMkB1N1yjYSv9eUoFzKGksCwNIeI/KB6d780fOAloQ31Gy1sLSDbIcn7B8ylJT5u3nsPBgPRgjHX6fQVNTBJTF0DrbLAkAhzUYw4oBigZvHSfPZ5kxgH91LBTYJfJxHHMAiFqfj+QoUR3f7W5logC/Qu7lz5m0CoCmCMrYa4YK3qyFAFXXDAsqhNbXM6OomQyBR98RdbsiyRncGiz7AktG/bbu9Yf+Xfd0EzpfDKTNXWtgA==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>_CERTIFICADO_</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
Logo abaixo do 1 tem um nó chamado com uma assinatura digital da nota fiscal, não do documento.
Já busquei no google e até agora não identifiquei como fazer a assinatura nesse campo específico, só lembrando que segundo a documentação da Prefeitura, não pode ser cópia do nó que tem quando assina o documento xml, ou seja, no caso, é uma assinatura nova apenas para o documento.
Atualmente estou utilizando a biblioteca Greenter (github) para assinar o arquivo xml, e já chequei a validade da assinatura e está tudo normal, e pelo que tudo indica o que está dando erro é a falta de assinatura da nota fiscal no nó .
Alguém saberia como me ajudar nesse ponto?