Desenvolvimento NFS-e
Desenvolvimento NFS-e

Site destinado a desenvolvedores de softwares na integração com a NFS-e.
 
InícioInício  CalendárioCalendário  FAQFAQ  BuscarBuscar  GruposGrupos  Registrar-seRegistrar-se  Conectar-se  

Compartilhe | 
 

 Assinatura do xml ConsultarLoteRpsEnvio Fortaleza

Ver o tópico anterior Ver o tópico seguinte Ir em baixo 
AutorMensagem
abotelho



Mensagens : 9
Data de inscrição : 15/06/2015

MensagemAssunto: Assinatura do xml ConsultarLoteRpsEnvio Fortaleza   Ter Jun 23, 2015 11:52 am

Estou implementando o envio de notas de serviço para a cidade de Fortaleza e estou esbarrando em um problema com o XML de consulta de envio de lote.

A prefeitura de Fortaleza exige que o xml de consulta seja assinado (a do Rio que foi a primeira que eu implementei não exige), mas na hora de assinar qual dado eu devo usar como referência para a assinatura? No envio de lote por exemplo uso Id do LoteRps.

Alguém tem algum exemplo de xml de consulta de envio de lote para Fortaleza e pode me dizer como fez para fazer a assinatura? Estou usando C#, abaixo tem o metodo de assinatura que eu uso.

public static void AssinaXML(XmlDocument xml, X509Certificate2 certificate, string signedNodeName, string parentNode, string idnode)
{
XmlNodeList SignedNode = xml.GetElementsByTagName(signedNodeName);

SignedXml signedXml;

foreach (XmlElement node in SignedNode)
{
string id = node.Attributes.GetNamedItem(idnode) != null ? node.Attributes.GetNamedItem(idnode).InnerText : string.Empty;
signedXml = new SignedXml(node);
signedXml.SigningKey = certificate.PrivateKey;

Reference reference = new Reference("#" + id);
reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
reference.AddTransform(new XmlDsigC14NTransform());
signedXml.AddReference(reference);

KeyInfo keyInfo = new KeyInfo();
keyInfo.AddClause(new KeyInfoX509Data(certificate));

signedXml.KeyInfo = keyInfo;

signedXml.ComputeSignature();

XmlElement xmlSignature = xml.CreateElement("Signature", "http://www.w3.org/2000/09/xmldsig#");
XmlElement xmlSignedInfo = signedXml.SignedInfo.GetXml();
XmlElement xmlKeyInfo = signedXml.KeyInfo.GetXml();

XmlElement xmlSignatureValue = xml.CreateElement("SignatureValue", xmlSignature.NamespaceURI);
string signBase64 = Convert.ToBase64String(signedXml.Signature.SignatureValue);
XmlText text = xml.CreateTextNode(signBase64);
xmlSignatureValue.AppendChild(text);

xmlSignature.AppendChild(xml.ImportNode(xmlSignedInfo, true));
xmlSignature.AppendChild(xmlSignatureValue);
xmlSignature.AppendChild(xml.ImportNode(xmlKeyInfo, true));

var evento = xml.GetElementsByTagName(parentNode);
evento[0].AppendChild(xmlSignature);
}
}
Voltar ao Topo Ir em baixo
abotelho



Mensagens : 9
Data de inscrição : 15/06/2015

MensagemAssunto: Re: Assinatura do xml ConsultarLoteRpsEnvio Fortaleza   Qui Jun 25, 2015 9:48 am

Acabei descobrindo... é só passar o reference vazio e ele assina assim mesmo e funciona.
Voltar ao Topo Ir em baixo
 
Assinatura do xml ConsultarLoteRpsEnvio Fortaleza
Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 
Página 1 de 1
 Tópicos similares
-
» [Assinatura]Uchiha Madara
» Espaço entre assinatura e texto
» Como anexar assinatura para todos?
» Assinatura/cursor personalizado
» Assinatura

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
Desenvolvimento NFS-e  :: Arquivo XML-
Ir para: