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

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

Aceitar