Usuário com melhor resposta
Assinatura Digital

Pergunta
-
Estou desenvolvendo um programa para gerar o arquivo xml e enviar para Santos.
Estou no ambiente de teste e ao enviar o arquivo gera o erro :
o E303 - documento XML difere da assinatura. O documento XML não pode conter alterações após a assinatura.
Ao testar a assinatura no site da receita ( https://www.receita.fazenda.gov.br/Aplicacoes/SSL/ATBHE/Assinadoc/ValidadorAssinaturas.app/valida.asp)
o site diz : A assinatura digital do documento fornecido não é válida.
Motivo: A assinatura digital do documento não é válida.Analisei o xml para verificar se existem caracteres especiais mas não tem nenhum...
Alguem pode me ajudar?
Segue o xml c/ a assinatura:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<EnviarLoteRpsEnvio xmlns="http://www.ginfes.com.br/servico_enviar_lote_rps_envio_v03.xsd"
xmlns:tipos="http://www.ginfes.com.br/tipos_v03.xsd">
<LoteRps Id="91915-91916">
<tipos:NumeroLote>3188</tipos:NumeroLote>
<tipos:Cnpj>60526977002201</tipos:Cnpj>
<tipos:InscricaoMunicipal>0477028</tipos:InscricaoMunicipal>
<tipos:QuantidadeRps>2</tipos:QuantidadeRps>
<tipos:ListaRps>
<tipos:Rps>
<tipos:InfRps Id="91915">
<tipos:IdentificacaoRps>
<tipos:Numero>91915</tipos:Numero>
<tipos:Serie>F</tipos:Serie>
<tipos:Tipo>1</tipos:Tipo>
</tipos:IdentificacaoRps>
<tipos:DataEmissao>2012-08-01T17:20:03</tipos:DataEmissao>
<tipos:NaturezaOperacao>1</tipos:NaturezaOperacao>
<tipos:OptanteSimplesNacional>2</tipos:OptanteSimplesNacional>
<tipos:IncentivadorCultural>1</tipos:IncentivadorCultural>
<tipos:Status>1</tipos:Status>
<tipos:Servico>
<tipos:Valores>
<tipos:ValorServicos>3023.38</tipos:ValorServicos>
<tipos:ValorDeducoes>0.00</tipos:ValorDeducoes>
<tipos:IssRetido>2</tipos:IssRetido>
<tipos:ValorIss>90.70</tipos:ValorIss>
<tipos:OutrasRetencoes>0</tipos:OutrasRetencoes>
<tipos:BaseCalculo>3023.38</tipos:BaseCalculo>
<tipos:Aliquota>0.03</tipos:Aliquota>
<tipos:ValorLiquidoNfse>3023.38</tipos:ValorLiquidoNfse>
</tipos:Valores>
<tipos:ItemListaServico>11.04</tipos:ItemListaServico>
<tipos:Discriminacao>
ARMAZENAGEM (1,00) : R$ 2400,00
HANDLING 20 (1,00) : R$ 200,00
ISS/PIS/COFINS - CLIA (1,00) : R$ 370,36
GER. RISCO (1,00) : R$ 53,02
</tipos:Discriminacao>
<tipos:CodigoMunicipio>3548500</tipos:CodigoMunicipio>
</tipos:Servico>
<tipos:Prestador>
<tipos:Cnpj>60526977002201</tipos:Cnpj>
<tipos:InscricaoMunicipal>0477028</tipos:InscricaoMunicipal>
</tipos:Prestador>
<tipos:Tomador>
<tipos:IdentificacaoTomador>
<tipos:CpfCnpj>
<tipos:Cnpj>56505464000104</tipos:Cnpj>
</tipos:CpfCnpj>
</tipos:IdentificacaoTomador>
<tipos:RazaoSocial>INDUSTRIA BRASILEIRA DE BEBEDOUROS LTDA.</tipos:RazaoSocial>
<tipos:Endereco>
<tipos:Endereco>AVENIDA AVENIDA TIRADENTES</tipos:Endereco>
<tipos:Numero>1364</tipos:Numero>
<tipos:Bairro>PARQUE DAS INDUSTRIA</tipos:Bairro>
<tipos:CodigoMunicipio>352390</tipos:CodigoMunicipio>
<tipos:Uf>SP</tipos:Uf>
<tipos:Cep>13309640</tipos:Cep>
</tipos:Endereco>
<tipos:Contato>
<tipos:Email>teste@gmail.com</tipos:Email>
</tipos:Contato>
</tipos:Tomador>
</tipos:InfRps>
</tipos:Rps>
<tipos:Rps>
<tipos:InfRps Id="91916">
<tipos:IdentificacaoRps>
<tipos:Numero>91916</tipos:Numero>
<tipos:Serie>F</tipos:Serie>
<tipos:Tipo>1</tipos:Tipo>
</tipos:IdentificacaoRps>
<tipos:DataEmissao>2012-08-01T17:20:03</tipos:DataEmissao>
<tipos:NaturezaOperacao>1</tipos:NaturezaOperacao>
<tipos:OptanteSimplesNacional>2</tipos:OptanteSimplesNacional>
<tipos:IncentivadorCultural>1</tipos:IncentivadorCultural>
<tipos:Status>1</tipos:Status>
<tipos:Servico>
<tipos:Valores>
<tipos:ValorServicos>1239.00</tipos:ValorServicos>
<tipos:ValorDeducoes>0.00</tipos:ValorDeducoes>
<tipos:IssRetido>2</tipos:IssRetido>
<tipos:ValorIss>37.17</tipos:ValorIss>
<tipos:OutrasRetencoes>0</tipos:OutrasRetencoes>
<tipos:BaseCalculo>1239.00</tipos:BaseCalculo>
<tipos:Aliquota>0.03</tipos:Aliquota>
<tipos:ValorLiquidoNfse>1239.00</tipos:ValorLiquidoNfse>
</tipos:Valores>
<tipos:ItemListaServico>11.04</tipos:ItemListaServico>
<tipos:Discriminacao>
ARMAZENAGEM (1,00) : R$ 1239,00
</tipos:Discriminacao>
<tipos:CodigoMunicipio>3548500</tipos:CodigoMunicipio>
</tipos:Servico>
<tipos:Prestador>
<tipos:Cnpj>60526977002201</tipos:Cnpj>
<tipos:InscricaoMunicipal>0477028</tipos:InscricaoMunicipal>
</tipos:Prestador>
<tipos:Tomador>
<tipos:IdentificacaoTomador>
<tipos:CpfCnpj>
<tipos:Cnpj>56505464000104</tipos:Cnpj>
</tipos:CpfCnpj>
</tipos:IdentificacaoTomador>
<tipos:RazaoSocial>INDUSTRIA BRASILEIRA DE BEBEDOUROS LTDA.</tipos:RazaoSocial>
<tipos:Endereco>
<tipos:Endereco>AVENIDA AVENIDA TIRADENTES</tipos:Endereco>
<tipos:Numero>1364</tipos:Numero>
<tipos:Bairro>PARQUE DAS INDUSTRIA</tipos:Bairro>
<tipos:CodigoMunicipio>352390</tipos:CodigoMunicipio>
<tipos:Uf>SP</tipos:Uf>
<tipos:Cep>13309640</tipos:Cep>
</tipos:Endereco>
<tipos:Contato>
<tipos:Email>teste@gmail.com</tipos:Email>
</tipos:Contato>
</tipos:Tomador>
</tipos:InfRps>
</tipos:Rps>
</tipos:ListaRps></LoteRps><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>trbu4rzdZtBm40Pn57WrTFQciqE=</DigestValue></Reference></SignedInfo><SignatureValue>LFJ9CtV/gq3F/qERUlzUWeMyty+4dAQqJ2JjExTfpmQ/tlS8JZhdA17D/Ewg6HHWHytw9HeuEw9KIIKoL1772YEZ1YIxKaylEFR+VtbyCizCv639WFB93MaRxc/SxKNlVf7D4MTuNEL4qGfWPUY2DS6ZcilXKxW6w4N5YHCeYn6LqV+E5bQoMXA2KFYxkGV6FDxnb9dAOu6eymv2fxSPXRu9thLxZMWg/4KrA4UFxrVKGcGXyZ8XglJBktvyPiXGg4lM5EoEELOWwiYgtvjXNyBmE4g3n8zuI1MkNyxVx89WJkbmvkOBJhcL0xj+OUss8p607sTahcugWvhIx3Z+aQ==</SignatureValue><KeyInfo><X509Data><X509Certificate>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</X509Certificate></X509Data></KeyInfo></Signature></EnviarLoteRpsEnvio>
Obrigada.
Respostas
-
Exemplo Microsoft: http://msdn.microsoft.com/pt-br/library/ms229745(v=vs.90).aspx
Outro exemplo: http://leonelfraga.com/neomatrixtech/index.php/assinatura-digital-com-c-net/
Take a look at WPF FlashMessage
About.me- Marcado como Resposta Gustavo M. GuimarãesModerator quinta-feira, 13 de dezembro de 2012 17:03
Todas as Respostas
-
Olá.
Desculpe mas fica difícil definir um erro deste tipo, porque depende do certificado e etc.
Vou te enviar a classe que utilizo para assinar minhas NF Serviço.
public class meuformulario { ... // Assina o loterps _stringXml = this.AssinaXml(_stringXml, _tcLoteRps.Id, "LoteRps", certX509); private string AssinaXml(string _stringXML, string _uri, string _Node, X509Certificate2 cert) { AssinaturaDigital AD = new AssinaturaDigital(); XmlDocument xmlDoc = AD.Assinar(_stringXML, _uri, _Node, cert); _stringXML = xmlDoc.OuterXml; return _stringXML; } } public class AssinaturaDigital { public XmlDocument Assinar(string mensagemXML, string _uri, string _Node, System.Security.Cryptography.X509Certificates.X509Certificate2 certificado) { msgResultado = "Assinatura realizada com sucesso"; System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); System.Security.Cryptography.RSACryptoServiceProvider Key = new System.Security.Cryptography.RSACryptoServiceProvider(); System.Security.Cryptography.Xml.SignedXml SignedDocument = default(System.Security.Cryptography.Xml.SignedXml); System.Security.Cryptography.Xml.KeyInfo keyInfo = new System.Security.Cryptography.Xml.KeyInfo(); xmlDoc.LoadXml(mensagemXML); //Retira chave privada ligada ao certificado Key = (System.Security.Cryptography.RSACryptoServiceProvider)certificado.PrivateKey; //Adiciona Certificado ao Key Info keyInfo.AddClause(new System.Security.Cryptography.Xml.KeyInfoX509Data(certificado)); SignedDocument = new System.Security.Cryptography.Xml.SignedXml(xmlDoc); //Seta chaves SignedDocument.SigningKey = Key; SignedDocument.KeyInfo = keyInfo; // Cria referencia System.Security.Cryptography.Xml.Reference reference = new System.Security.Cryptography.Xml.Reference(); reference.Uri = "#" + _uri;//string.Empty; // Adiciona transformacao a referencia reference.AddTransform(new System.Security.Cryptography.Xml.XmlDsigEnvelopedSignatureTransform()); reference.AddTransform(new System.Security.Cryptography.Xml.XmlDsigC14NTransform(false)); // Adiciona referencia ao xml SignedDocument.AddReference(reference); // Calcula Assinatura SignedDocument.ComputeSignature(); // Pega representação da assinatura System.Xml.XmlElement xmlDigitalSignature = SignedDocument.GetXml(); // Adiciona ao doc XML XmlElement xmlElement = xmlDoc.GetElementsByTagName(_Node)[0] as XmlElement; xmlElement.ParentNode.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true)); //xmlDoc.DocumentElement.AppendChild(xmlDoc.ImportNode(xmlDigitalSignature, true)); return xmlDoc; } }
Espero que isso te ajude.
-
Exemplo Microsoft: http://msdn.microsoft.com/pt-br/library/ms229745(v=vs.90).aspx
Outro exemplo: http://leonelfraga.com/neomatrixtech/index.php/assinatura-digital-com-c-net/
Take a look at WPF FlashMessage
About.me- Marcado como Resposta Gustavo M. GuimarãesModerator quinta-feira, 13 de dezembro de 2012 17:03