Assinatura digital xml e manipulação de xml

18/05/2023

0

Olá a todos, estou precisando tirar umas dúvidas sobre assinatura digital de xml, estou desenvolvendo um software de consulta e manifestação de documentos fiscais, mas estou com problema de validar a assinatura.
Então minhas duvidas: e se posso manipular o xml como txt, esse exemplo de como estou fazendo:

tenho um campo tipo txt com a informação da tag <infEvento>...</infEvento> desse ponto eu gero o valor tag <digestValu>
Com essa informação eu monto em outro campo txt a tag <signedInfo>
<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="#ID2102104322109340800300014055002000009788107558454901"><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>ObUW55qYVxSNcIKqTTMKzfO/bZY=</DigestValue></Reference></SignedInfo>

com essa informação faço a assinatura e gero a tag <SignatureValue> , então monto tudo em um ultimo campo txt para poder transmitir
ficando dessa forma:

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:nfer="http://www.portalfiscal.inf.br/nfe/wsdl/NFeRecepcaoEvento4"><soapenv:Header/><soapenv:Body><nfer:nfeDadosMsg><envEvento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"><idLote>1</idLote><evento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"><infEvento Id="ID2102104322109340800300014055002000009788107558454901"><cOrgao>91</cOrgao><tpAmb>2</tpAmb><CNPJ>05444482000192</CNPJ><chNFe>43221093408003000140550020000097881075584549</chNFe><dhEvento>2023-05-16T10:34:08-03:00</dhEvento><tpEvento>210210</tpEvento><nSeqEvento>1</nSeqEvento><verEvento>1.00</verEvento><detEvento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"><descEvento>Ciencia da Operacao</descEvento></detEvento></infEvento><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="#ID2102104322109340800300014055002000009788107558454901"><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>ObUW55qYVxSNcIKqTTMKzfO/bZY=</DigestValue></Reference></SignedInfo><SignatureValue>lsF8Buo0GS...Y4+BjSx3</X509Certificate>MIIIEjCCBfq...Y4+BjSx3</X509Data></KeyInfo></Signature></evento></envEvento></nfer:nfeDadosMsg></soapenv:Body></soapenv:Envelope>


mas quando fação a transmissão para API da sefaz recebo esse erro :
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><nfeRecepcaoEventoNFResult xmlns="http://www.portalfiscal.inf.br/nfe/wsdl/NFeRecepcaoEvento4"><retEnvEvento versao="1.00" xmlns="http://www.portalfiscal.inf.br/nfe"><idLote>1</idLote><tpAmb>1</tpAmb><verAplic>AN_1.5.0</verAplic><cOrgao>91</cOrgao><cStat>128</cStat><xMotivo>Lote de evento processado</xMotivo><retEvento versao="1.00"><infEvento><tpAmb>1</tpAmb><verAplic>AN_1.5.0</verAplic><cOrgao>91</cOrgao><cStat>297</cStat><xMotivo>Rejeicao: Assinatura difere do calculado</xMotivo><chNFe>43221093408003000140550020000097881075584549</chNFe><tpEvento>210210</tpEvento><xEvento>Ciencia da Operacao</xEvento><nSeqEvento>1</nSeqEvento><dhRegEvento>2023-05-16T10:35:11-03:00</dhRegEvento></infEvento></retEvento></retEnvEvento></nfeRecepcaoEventoNFResult></soap:Body></soap:Envelope>


Esse é meu primeiro projeto com assinatura de xml e sefaz, então estou precisando de uma ajuda ou um direcionamento
Obrigado
Rodrigo Trautvein

Rodrigo Trautvein

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar